import json, sqlite3
from pathlib import Path
WS = Path(r"C:\Users\adamm\AppData\Roaming\Code\User\workspaceStorage")
WORKING = "82cdabb21413f2ff42168423e82c8bdf"
BROKEN = "5ec71800c69c79b96b06a37e38537907"
def get_all_values(h):
db = WS / h / "state.vscdb"
conn = sqlite3.connect(str(db))
cur = conn.cursor()
cur.execute("SELECT key, value FROM ItemTable")
data = {}
for k, v in cur.fetchall():
data[k] = v
conn.close()
return data
working = get_all_values(WORKING)
broken = get_all_values(BROKEN)
print("=" * 70)
print("WORKING (chasm) - Chat/Agent related keys")
print("=" * 70)
for k in sorted(working.keys()):
if any(x in k.lower() for x in ['chat', 'agent', 'copilot', 'interactive', 'panel.chat']):
v = working[k]
try:
parsed = json.loads(v)
v_str = json.dumps(parsed, indent=2)
except:
v_str = v
if len(v_str) > 2000:
v_str = v_str[:2000] + f"\n... ({len(v_str)} chars total)"
print(f"\n{k}:")
print(f" {v_str}")
print("\n" + "=" * 70)
print("BROKEN (Agentic) - Chat/Agent related keys")
print("=" * 70)
for k in sorted(broken.keys()):
if any(x in k.lower() for x in ['chat', 'agent', 'copilot', 'interactive', 'panel.chat']):
v = broken[k]
try:
parsed = json.loads(v)
v_str = json.dumps(parsed, indent=2)
except:
v_str = v
if len(v_str) > 2000:
v_str = v_str[:2000] + f"\n... ({len(v_str)} chars total)"
print(f"\n{k}:")
print(f" {v_str}")
print("\n" + "=" * 70)
print("KEY DIFF")
print("=" * 70)
w_keys = {k for k in working if any(x in k.lower() for x in ['chat', 'agent', 'copilot', 'interactive', 'panel.chat'])}
b_keys = {k for k in broken if any(x in k.lower() for x in ['chat', 'agent', 'copilot', 'interactive', 'panel.chat'])}
w_only = w_keys - b_keys
b_only = b_keys - w_keys
common = w_keys & b_keys
print(f"\nKeys only in WORKING: {sorted(w_only)}")
print(f"Keys only in BROKEN: {sorted(b_only)}")
print(f"Common keys: {sorted(common)}")
print("\nValue differences for common keys:")
for k in sorted(common):
wv = working[k]
bv = broken[k]
if wv != bv:
wl = len(wv)
bl = len(bv)
print(f"\n {k}: working={wl}b broken={bl}b")
try:
wp = json.loads(wv)
bp = json.loads(bv)
if isinstance(wp, dict) and isinstance(bp, dict):
wks = set(wp.keys())
bks = set(bp.keys())
if wks != bks:
print(f" Key diff: working_only={wks-bks} broken_only={bks-wks}")
for sk in sorted(wks & bks):
if wp[sk] != bp[sk]:
ws = json.dumps(wp[sk])[:100]
bs = json.dumps(bp[sk])[:100]
print(f" {sk}: W={ws} B={bs}")
except:
pass
print("\n=== DONE ===")