@symerian/symi 2.0.25 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/{agents-2Slv_WIp.js → agents-BNF3OUDd.js} +4 -4
  2. package/dist/{agents.config-aKHTUjVK.js → agents.config-B_qhQi0f.js} +1 -1
  3. package/dist/{agents.config-3GYBGFRy.js → agents.config-t7FdJujr.js} +1 -1
  4. package/dist/{auth-choice-CkEtpUvW.js → auth-choice-DZTkXFl-.js} +1 -1
  5. package/dist/{auth-choice-BzuGX2ET.js → auth-choice-iZB4sGvl.js} +1 -1
  6. package/dist/{banner-Cetc-uA0.js → banner-BsCs2JGc.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +2 -2
  9. package/dist/bundled/session-memory/handler.js +2 -2
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-ayY8htYG.js → channel-options-BYCPesaD.js} +1 -1
  12. package/dist/{channel-options-BvRRt5lE.js → channel-options-CHF9c6FY.js} +1 -1
  13. package/dist/{channel-web-CA7NCnAU.js → channel-web-Kt_j1QOj.js} +1 -1
  14. package/dist/{channels-cli-B8_Hn_JG.js → channels-cli-ClwM5weH.js} +6 -6
  15. package/dist/{channels-cli-Cr2ND5Ck.js → channels-cli-DT1qfmcb.js} +6 -6
  16. package/dist/{cli-C9H2cgZa.js → cli-CUPKVz7g.js} +3 -3
  17. package/dist/{cli-BONgNtI6.js → cli-D_td9hk-.js} +3 -3
  18. package/dist/{command-registry-CYkmIRSj.js → command-registry-S9Fhf4c1.js} +10 -10
  19. package/dist/{completion-cli-Bqdcg5hp.js → completion-cli-CDN_tdvo.js} +1 -1
  20. package/dist/{completion-cli-Qv8_Vnw3.js → completion-cli-CnLexFdC.js} +2 -2
  21. package/dist/{config-cli-dO3O4PE6.js → config-cli-B9MuT7ra.js} +1 -1
  22. package/dist/{config-cli--iVUJOKB.js → config-cli-C-Hf7pJY.js} +1 -1
  23. package/dist/{configure-CJXXqp0t.js → configure-BVJX5jHt.js} +3 -3
  24. package/dist/{configure-7GGtnxAx.js → configure-mQsIxCGj.js} +3 -3
  25. package/dist/control-ui/js/app.js +2 -2
  26. package/dist/control-ui/js/render.js +1 -1
  27. package/dist/{doctor-completion-2pOgfi5X.js → doctor-completion-AOqgLS4U.js} +1 -1
  28. package/dist/{doctor-completion-BXZ8aBWN.js → doctor-completion-BG8Cg9mp.js} +1 -1
  29. package/dist/entry.js +1 -1
  30. package/dist/extensionAPI.js +2 -2
  31. package/dist/{gateway-cli-DdfE-Qud.js → gateway-cli-3xIbQUvB.js} +11 -11
  32. package/dist/{gateway-cli-BzScglLB.js → gateway-cli-Bpze8UCK.js} +11 -11
  33. package/dist/{glass-ui-ws-CMkw5YM1.js → glass-ui-ws-BlIbIFja.js} +9 -9
  34. package/dist/{glass-ui-ws-r9Xzs77h.js → glass-ui-ws-kaPdOFQ1.js} +9 -9
  35. package/dist/{health-DQ3XEpzi.js → health-DBwSpMeO.js} +1 -1
  36. package/dist/{health-5ZtemgeO.js → health-Dp4Q9nXE.js} +1 -1
  37. package/dist/{hooks-cli-DZwzWt2B.js → hooks-cli-BaGV9nsK.js} +4 -4
  38. package/dist/{hooks-cli-D-FNhrKU.js → hooks-cli-CRn_j55j.js} +4 -4
  39. package/dist/index.js +8 -8
  40. package/dist/llm-slug-generator.js +2 -2
  41. package/dist/{manager-DVVFabIj.js → manager-CL7MzOkQ.js} +76 -11
  42. package/dist/{manager-Dv2cMdMo.js → manager-DrSOlqpk.js} +76 -11
  43. package/dist/{manager-Ctbgi2K4.js → manager-M83fJMDC.js} +76 -11
  44. package/dist/{manager-DeLmBZ39.js → manager-RThEiATX.js} +76 -11
  45. package/dist/{memory-cli-lgXFdWSf.js → memory-cli-Bt9d248V.js} +3 -3
  46. package/dist/{memory-cli-CskGK36B.js → memory-cli-Cfckrobf.js} +3 -3
  47. package/dist/{models-Duhwal5Q.js → models-DOEuOTkj.js} +2 -2
  48. package/dist/{models-cli-DSYSRqhX.js → models-cli-DJzcRyPn.js} +4 -4
  49. package/dist/{models-cli-Fruesavk.js → models-cli-Da_ycT4E.js} +5 -5
  50. package/dist/{onboard-Deo_T2AR.js → onboard-Cj-BNQ8q.js} +2 -2
  51. package/dist/{onboard-kwm7Bshh.js → onboard-D62AfYak.js} +2 -2
  52. package/dist/{onboard-channels-BbhoZWuh.js → onboard-channels-BJY5FrhC.js} +1 -1
  53. package/dist/{onboard-channels-CCiFhk1N.js → onboard-channels-DqvkgA44.js} +1 -1
  54. package/dist/{onboarding-CIEiNfre.js → onboarding-BVBk-a0N.js} +3 -3
  55. package/dist/{onboarding-_YqH1Wmc.js → onboarding-DZr7frCp.js} +3 -3
  56. package/dist/{onboarding.finalize-DHa8QCea.js → onboarding.finalize-ClGudWHI.js} +7 -7
  57. package/dist/{onboarding.finalize-CQ-uVQ6r.js → onboarding.finalize-DjWsLgGj.js} +8 -8
  58. package/dist/{pi-embedded-DyCO1o5V.js → pi-embedded-6aosCkCE.js} +5 -5
  59. package/dist/{pi-embedded-BFWNnHTw.js → pi-embedded-CoAgAxKK.js} +5 -5
  60. package/dist/{plugin-registry-DmxC3a3G.js → plugin-registry-B9o0EnWk.js} +1 -1
  61. package/dist/{plugin-registry-7OViua2f.js → plugin-registry-DqfOHgSY.js} +1 -1
  62. package/dist/plugin-sdk/{channel-web-D3JZoBCW.js → channel-web-CN-Fomvm.js} +1 -1
  63. package/dist/plugin-sdk/index.js +3 -3
  64. package/dist/plugin-sdk/{manager-Co0ZGhG7.js → manager-PXN_BUWT.js} +76 -11
  65. package/dist/plugin-sdk/memory/hybrid.d.ts +2 -0
  66. package/dist/plugin-sdk/memory/manager-embedding-ops.d.ts +1 -0
  67. package/dist/plugin-sdk/memory/manager-search.d.ts +1 -0
  68. package/dist/plugin-sdk/memory/manager-sync-ops.d.ts +1 -0
  69. package/dist/plugin-sdk/memory/manager.d.ts +1 -0
  70. package/dist/plugin-sdk/memory/types.d.ts +8 -0
  71. package/dist/plugin-sdk/{reply-BHdxuPym.js → reply-BSUqmOjQ.js} +5 -5
  72. package/dist/plugin-sdk/{web-DB8ZqlXs.js → web-Bnuebc-N.js} +3 -3
  73. package/dist/{plugins-cli-CDY9bX9F.js → plugins-cli-B8xVmAuR.js} +4 -4
  74. package/dist/{plugins-cli-Ca-2s0mB.js → plugins-cli-DREF5Y06.js} +4 -4
  75. package/dist/{program-context-DkHjT7p8.js → program-context-Qr4P_3lt.js} +18 -18
  76. package/dist/{program-BnymHVbq.js → program-q-ZGnun7.js} +9 -9
  77. package/dist/{prompt-select-styled-gd8Q7kTk.js → prompt-select-styled-BGN9e74V.js} +6 -6
  78. package/dist/{prompt-select-styled-C40kayHq.js → prompt-select-styled-BO2fAMkR.js} +6 -6
  79. package/dist/{provider-auth-helpers-BQZmtboq.js → provider-auth-helpers-B3J64Jh2.js} +1 -1
  80. package/dist/{provider-auth-helpers-2ZFybTSC.js → provider-auth-helpers-DsbN2XiG.js} +1 -1
  81. package/dist/{push-apns-BTOgWzu3.js → push-apns-Ba9C9T6a.js} +1 -1
  82. package/dist/{push-apns-DcwJLjj4.js → push-apns-CeICANgd.js} +1 -1
  83. package/dist/{register.agent-DRlHunj4.js → register.agent-BZBDrxwe.js} +8 -8
  84. package/dist/{register.agent-CUzSAFLR.js → register.agent-DDqJWohA.js} +7 -7
  85. package/dist/{register.configure-C8AOCj2z.js → register.configure-B27lkird.js} +8 -8
  86. package/dist/{register.configure-DxmZflTV.js → register.configure-xDJRQslK.js} +8 -8
  87. package/dist/{register.maintenance-C2yYpGsB.js → register.maintenance-C7KqQS56.js} +10 -10
  88. package/dist/{register.maintenance-BOHzvNEv.js → register.maintenance-CCo66MmS.js} +9 -9
  89. package/dist/{register.message-BwHXPTdE.js → register.message-CTb856sp.js} +4 -4
  90. package/dist/{register.message-BjVTvD18.js → register.message-mqY_8nFj.js} +4 -4
  91. package/dist/{register.onboard-1J-md52-.js → register.onboard-B_62CoFF.js} +6 -6
  92. package/dist/{register.onboard-pa2gAtlr.js → register.onboard-DCadPRqN.js} +6 -6
  93. package/dist/{register.setup-08AvEje_.js → register.setup-CetgUu6b.js} +6 -6
  94. package/dist/{register.setup-Cw8AS2ct.js → register.setup-D4vceMjW.js} +6 -6
  95. package/dist/{register.status-health-sessions-D11MHrrN.js → register.status-health-sessions-DFVOAFGc.js} +5 -5
  96. package/dist/{register.status-health-sessions-Blye9Exm.js → register.status-health-sessions-oREONKrQ.js} +5 -5
  97. package/dist/{register.subclis-b7zkQpHC.js → register.subclis-Ch7CsZP4.js} +9 -9
  98. package/dist/{reply-IIs7TFkU.js → reply-BZn2Smlt.js} +4 -4
  99. package/dist/{run-main-B_IHY4_P.js → run-main-L9-PmGcv.js} +17 -17
  100. package/dist/{server-methods-ly9rxYy9.js → server-methods-Cr4xi0KV.js} +7 -7
  101. package/dist/{server-methods-f8mvUGBY.js → server-methods-UzcnQvxB.js} +7 -7
  102. package/dist/{server-node-events-Dn29YyKb.js → server-node-events-B8gQNWfX.js} +4 -4
  103. package/dist/{server-node-events-Ci6Vl3GE.js → server-node-events-Cj5CSKH2.js} +4 -4
  104. package/dist/{status-DAosaOZ9.js → status-3kOYUAe6.js} +3 -3
  105. package/dist/{status-CL_BV-5C.js → status-Bpz3T9tk.js} +1 -1
  106. package/dist/{status-DBfu3QLG.js → status-C3zEYCNx.js} +3 -3
  107. package/dist/{status-DJuKDk_J.js → status-JZ1tEKrI.js} +1 -1
  108. package/dist/{subagent-registry-C-4sylAS.js → subagent-registry-BmqDNBQA.js} +4 -4
  109. package/dist/{update-cli-Ds-rcfCm.js → update-cli-CcMqLG-F.js} +10 -10
  110. package/dist/{update-cli-eFRvF4NY.js → update-cli-YIILU6BZ.js} +9 -9
  111. package/dist/{update-runner-Z_RJvKCC.js → update-runner-BZ8CU4YI.js} +1 -1
  112. package/dist/{update-runner-DP-qIkLO.js → update-runner-DeRhiJkE.js} +1 -1
  113. package/dist/{web-CYKQL396.js → web-B11B-dFh.js} +2 -2
  114. package/dist/{web-AqZCRhcz.js → web-BD8iPNff.js} +4 -4
  115. package/dist/{web-Dd-yg3ar.js → web-DbjazvT5.js} +2 -2
  116. package/dist/{web-DoQWiQnO.js → web-Dx7mFsKF.js} +3 -3
  117. package/package.json +1 -1
@@ -999,12 +999,14 @@ async function mergeHybridResults(params) {
999
999
  source: r.source,
1000
1000
  snippet: r.snippet,
1001
1001
  vectorScore: r.vectorScore,
1002
- textScore: 0
1002
+ textScore: 0,
1003
+ weight: r.weight ?? 1
1003
1004
  });
1004
1005
  for (const r of params.keyword) {
1005
1006
  const existing = byId.get(r.id);
1006
1007
  if (existing) {
1007
1008
  existing.textScore = r.textScore;
1009
+ if (r.weight != null && r.weight > existing.weight) existing.weight = r.weight;
1008
1010
  if (r.snippet && r.snippet.length > 0) existing.snippet = r.snippet;
1009
1011
  } else byId.set(r.id, {
1010
1012
  id: r.id,
@@ -1014,12 +1016,13 @@ async function mergeHybridResults(params) {
1014
1016
  source: r.source,
1015
1017
  snippet: r.snippet,
1016
1018
  vectorScore: 0,
1017
- textScore: r.textScore
1019
+ textScore: r.textScore,
1020
+ weight: r.weight ?? 1
1018
1021
  });
1019
1022
  }
1020
1023
  const sorted = (await applyTemporalDecayToHybridResults({
1021
1024
  results: Array.from(byId.values()).map((entry) => {
1022
- const score = params.vectorWeight * entry.vectorScore + params.textWeight * entry.textScore;
1025
+ const score = (params.vectorWeight * entry.vectorScore + params.textWeight * entry.textScore) * entry.weight;
1023
1026
  return {
1024
1027
  path: entry.path,
1025
1028
  startLine: entry.startLine,
@@ -1799,10 +1802,23 @@ function ensureMemoryIndexSchema(params) {
1799
1802
  model TEXT NOT NULL,
1800
1803
  text TEXT NOT NULL,
1801
1804
  embedding TEXT NOT NULL,
1802
- updated_at INTEGER NOT NULL
1805
+ updated_at INTEGER NOT NULL,
1806
+ weight REAL NOT NULL DEFAULT 1.0
1803
1807
  );
1804
1808
  `);
1805
1809
  params.db.exec(`
1810
+ CREATE TABLE IF NOT EXISTS edges (
1811
+ source_chunk_id TEXT NOT NULL,
1812
+ target_chunk_id TEXT NOT NULL,
1813
+ relation TEXT NOT NULL DEFAULT 'co_occurrence',
1814
+ weight REAL NOT NULL DEFAULT 1.0,
1815
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
1816
+ PRIMARY KEY (source_chunk_id, target_chunk_id, relation)
1817
+ );
1818
+ `);
1819
+ params.db.exec(`CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(source_chunk_id);`);
1820
+ params.db.exec(`CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(target_chunk_id);`);
1821
+ params.db.exec(`
1806
1822
  CREATE TABLE IF NOT EXISTS ${params.embeddingCacheTable} (
1807
1823
  provider TEXT NOT NULL,
1808
1824
  model TEXT NOT NULL,
@@ -1827,6 +1843,7 @@ function ensureMemoryIndexSchema(params) {
1827
1843
  }
1828
1844
  ensureColumn(params.db, "files", "source", "TEXT NOT NULL DEFAULT 'memory'");
1829
1845
  ensureColumn(params.db, "chunks", "source", "TEXT NOT NULL DEFAULT 'memory'");
1846
+ ensureColumn(params.db, "chunks", "weight", "REAL NOT NULL DEFAULT 1.0");
1830
1847
  params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_path ON chunks(path);`);
1831
1848
  params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_source ON chunks(source);`);
1832
1849
  return {
@@ -2430,6 +2447,7 @@ var MemoryManagerSyncOps = class {
2430
2447
  this.sessionsDirtyFiles.clear();
2431
2448
  } else if (this.sessionsDirtyFiles.size > 0) this.sessionsDirty = true;
2432
2449
  else this.sessionsDirty = false;
2450
+ this.normalizeChunkWeights();
2433
2451
  } catch (err) {
2434
2452
  const reason = err instanceof Error ? err.message : String(err);
2435
2453
  if (this.shouldFallbackOnError(reason) && await this.activateFallbackProvider(reason)) {
@@ -2443,6 +2461,21 @@ var MemoryManagerSyncOps = class {
2443
2461
  throw err;
2444
2462
  }
2445
2463
  }
2464
+ normalizeChunkWeights() {
2465
+ try {
2466
+ const rows = this.db.prepare(`SELECT id, weight FROM chunks`).all();
2467
+ if (rows.length < 2) return;
2468
+ const weights = rows.map((r) => r.weight);
2469
+ const maxW = Math.max(...weights);
2470
+ const exps = weights.map((w) => Math.exp(w - maxW));
2471
+ const sumExp = exps.reduce((a, b) => a + b, 0);
2472
+ const normalized = exps.map((e) => e / sumExp * rows.length);
2473
+ const stmt = this.db.prepare(`UPDATE chunks SET weight = ? WHERE id = ?`);
2474
+ this.db.exec("BEGIN");
2475
+ for (let i = 0; i < rows.length; i++) stmt.run(normalized[i], rows[i].id);
2476
+ this.db.exec("COMMIT");
2477
+ } catch {}
2478
+ }
2446
2479
  shouldFallbackOnError(message) {
2447
2480
  return /embedding|embeddings|batch/i.test(message);
2448
2481
  }
@@ -3098,6 +3131,10 @@ var MemoryManagerEmbeddingOps = class extends MemoryManagerSyncOps {
3098
3131
  if (this.fts.enabled && this.fts.available) try {
3099
3132
  this.db.prepare(`DELETE FROM ${FTS_TABLE$1} WHERE path = ? AND source = ? AND model = ?`).run(entry.path, options.source, this.provider.model);
3100
3133
  } catch {}
3134
+ try {
3135
+ this.db.prepare(`DELETE FROM edges WHERE source_chunk_id IN (SELECT id FROM chunks WHERE path = ? AND source = ?)
3136
+ OR target_chunk_id IN (SELECT id FROM chunks WHERE path = ? AND source = ?)`).run(entry.path, options.source, entry.path, options.source);
3137
+ } catch {}
3101
3138
  this.db.prepare(`DELETE FROM chunks WHERE path = ? AND source = ?`).run(entry.path, options.source);
3102
3139
  for (let i = 0; i < chunks.length; i++) {
3103
3140
  const chunk = chunks[i];
@@ -3119,6 +3156,7 @@ var MemoryManagerEmbeddingOps = class extends MemoryManagerSyncOps {
3119
3156
  }
3120
3157
  if (this.fts.enabled && this.fts.available) this.db.prepare(`INSERT INTO ${FTS_TABLE$1} (text, id, path, source, model, start_line, end_line)\n VALUES (?, ?, ?, ?, ?, ?, ?)`).run(chunk.text, id, entry.path, options.source, this.provider.model, chunk.startLine, chunk.endLine);
3121
3158
  }
3159
+ this.buildCoOccurrenceEdges(chunks, entry, options.source);
3122
3160
  this.db.prepare(`INSERT INTO files (path, source, hash, mtime, size) VALUES (?, ?, ?, ?, ?)
3123
3161
  ON CONFLICT(path) DO UPDATE SET
3124
3162
  source=excluded.source,
@@ -3126,6 +3164,18 @@ var MemoryManagerEmbeddingOps = class extends MemoryManagerSyncOps {
3126
3164
  mtime=excluded.mtime,
3127
3165
  size=excluded.size`).run(entry.path, options.source, entry.hash, entry.mtimeMs, entry.size);
3128
3166
  }
3167
+ buildCoOccurrenceEdges(chunks, entry, source) {
3168
+ if (chunks.length < 2 || !this.provider) return;
3169
+ try {
3170
+ const ids = chunks.map((chunk) => hashText(`${source}:${entry.path}:${chunk.startLine}:${chunk.endLine}:${chunk.hash}:${this.provider.model}`));
3171
+ const stmt = this.db.prepare(`INSERT OR REPLACE INTO edges (source_chunk_id, target_chunk_id, relation, weight, created_at)
3172
+ VALUES (?, ?, 'co_occurrence', 1.0, datetime('now'))`);
3173
+ for (let i = 0; i < ids.length; i++) {
3174
+ if (i + 1 < ids.length) stmt.run(ids[i], ids[i + 1]);
3175
+ if (i + 2 < ids.length) stmt.run(ids[i], ids[i + 2]);
3176
+ }
3177
+ } catch {}
3178
+ }
3129
3179
  };
3130
3180
 
3131
3181
  //#endregion
@@ -3134,7 +3184,7 @@ const vectorToBlob = (embedding) => Buffer.from(new Float32Array(embedding).buff
3134
3184
  async function searchVector(params) {
3135
3185
  if (params.queryVec.length === 0 || params.limit <= 0) return [];
3136
3186
  if (await params.ensureVectorReady(params.queryVec.length)) return params.db.prepare(`SELECT c.id, c.path, c.start_line, c.end_line, c.text,
3137
- c.source,
3187
+ c.source, c.weight,
3138
3188
  vec_distance_cosine(v.embedding, ?) AS dist
3139
3189
  FROM ${params.vectorTable} v\n JOIN chunks c ON c.id = v.id\n WHERE c.model = ?${params.sourceFilterVec.sql}\n ORDER BY dist ASC\n LIMIT ?`).all(vectorToBlob(params.queryVec), params.providerModel, ...params.sourceFilterVec.params, params.limit).map((row) => ({
3140
3190
  id: row.id,
@@ -3143,7 +3193,8 @@ async function searchVector(params) {
3143
3193
  endLine: row.end_line,
3144
3194
  score: 1 - row.dist,
3145
3195
  snippet: truncateUtf16Safe(row.text, params.snippetMaxChars),
3146
- source: row.source
3196
+ source: row.source,
3197
+ weight: row.weight
3147
3198
  }));
3148
3199
  return listChunks({
3149
3200
  db: params.db,
@@ -3163,7 +3214,7 @@ async function searchVector(params) {
3163
3214
  }));
3164
3215
  }
3165
3216
  function listChunks(params) {
3166
- return params.db.prepare(`SELECT id, path, start_line, end_line, text, embedding, source
3217
+ return params.db.prepare(`SELECT id, path, start_line, end_line, text, embedding, source, weight
3167
3218
  FROM chunks
3168
3219
  WHERE model = ?${params.sourceFilter.sql}`).all(params.providerModel, ...params.sourceFilter.params).map((row) => ({
3169
3220
  id: row.id,
@@ -3172,7 +3223,8 @@ function listChunks(params) {
3172
3223
  endLine: row.end_line,
3173
3224
  text: row.text,
3174
3225
  embedding: parseEmbedding(row.embedding),
3175
- source: row.source
3226
+ source: row.source,
3227
+ weight: row.weight
3176
3228
  }));
3177
3229
  }
3178
3230
  async function searchKeyword(params) {
@@ -3181,7 +3233,7 @@ async function searchKeyword(params) {
3181
3233
  if (!ftsQuery) return [];
3182
3234
  const modelClause = params.providerModel ? " AND model = ?" : "";
3183
3235
  const modelParams = params.providerModel ? [params.providerModel] : [];
3184
- return params.db.prepare(`SELECT id, path, source, start_line, end_line, text,\n bm25(${params.ftsTable}) AS rank\n FROM ${params.ftsTable}\n WHERE ${params.ftsTable} MATCH ?${modelClause}${params.sourceFilter.sql}\n ORDER BY rank ASC\n LIMIT ?`).all(ftsQuery, ...modelParams, ...params.sourceFilter.params, params.limit).map((row) => {
3236
+ return params.db.prepare(`SELECT f.id, f.path, f.source, f.start_line, f.end_line, f.text,\n bm25(${params.ftsTable}) AS rank,\n c.weight\n FROM ${params.ftsTable} f\n JOIN chunks c ON c.id = f.id\n WHERE ${params.ftsTable} MATCH ?${modelClause}${params.sourceFilter.sql}\n ORDER BY rank ASC\n LIMIT ?`).all(ftsQuery, ...modelParams, ...params.sourceFilter.params, params.limit).map((row) => {
3185
3237
  const textScore = params.bm25RankToScore(row.rank);
3186
3238
  return {
3187
3239
  id: row.id,
@@ -3191,7 +3243,8 @@ async function searchKeyword(params) {
3191
3243
  score: textScore,
3192
3244
  textScore,
3193
3245
  snippet: truncateUtf16Safe(row.text, params.snippetMaxChars),
3194
- source: row.source
3246
+ source: row.source,
3247
+ weight: row.weight
3195
3248
  };
3196
3249
  });
3197
3250
  }
@@ -3580,7 +3633,7 @@ var MemoryIndexManager = class MemoryIndexManager extends MemoryManagerEmbedding
3580
3633
  const queryVec = await this.embedQueryWithTimeout(cleaned);
3581
3634
  const vectorResults = queryVec.some((v) => v !== 0) ? await this.searchVector(queryVec, candidates).catch(() => []) : [];
3582
3635
  if (!hybrid.enabled) return vectorResults.filter((entry) => entry.score >= minScore).slice(0, maxResults);
3583
- return (await this.mergeHybridResults({
3636
+ const results = (await this.mergeHybridResults({
3584
3637
  vector: vectorResults,
3585
3638
  keyword: keywordResults,
3586
3639
  vectorWeight: hybrid.vectorWeight,
@@ -3588,6 +3641,18 @@ var MemoryIndexManager = class MemoryIndexManager extends MemoryManagerEmbedding
3588
3641
  mmr: hybrid.mmr,
3589
3642
  temporalDecay: hybrid.temporalDecay
3590
3643
  })).filter((entry) => entry.score >= minScore).slice(0, maxResults);
3644
+ this.incrementChunkWeights(results);
3645
+ return results;
3646
+ }
3647
+ incrementChunkWeights(results) {
3648
+ if (results.length === 0) return;
3649
+ try {
3650
+ const stmt = this.db.prepare(`UPDATE chunks SET weight = weight + ? WHERE path = ? AND start_line = ? AND end_line = ?`);
3651
+ for (const r of results) {
3652
+ const boost = Math.min(r.score * .1, .2);
3653
+ stmt.run(boost, r.path, r.startLine, r.endLine);
3654
+ }
3655
+ } catch {}
3591
3656
  }
3592
3657
  async searchVector(queryVec, limit) {
3593
3658
  if (!this.provider) return [];
@@ -11,6 +11,7 @@ export type HybridVectorResult = {
11
11
  source: HybridSource;
12
12
  snippet: string;
13
13
  vectorScore: number;
14
+ weight?: number;
14
15
  };
15
16
  export type HybridKeywordResult = {
16
17
  id: string;
@@ -20,6 +21,7 @@ export type HybridKeywordResult = {
20
21
  source: HybridSource;
21
22
  snippet: string;
22
23
  textScore: number;
24
+ weight?: number;
23
25
  };
24
26
  export declare function buildFtsQuery(raw: string): string | null;
25
27
  export declare function bm25RankToScore(rank: number): number;
@@ -39,4 +39,5 @@ export declare abstract class MemoryManagerEmbeddingOps extends MemoryManagerSyn
39
39
  source: MemorySource;
40
40
  content?: string;
41
41
  }): Promise<void>;
42
+ private buildCoOccurrenceEdges;
42
43
  }
@@ -8,6 +8,7 @@ export type SearchRowResult = {
8
8
  score: number;
9
9
  snippet: string;
10
10
  source: SearchSource;
11
+ weight?: number;
11
12
  };
12
13
  export declare function searchVector(params: {
13
14
  db: DatabaseSync;
@@ -114,6 +114,7 @@ export declare abstract class MemoryManagerSyncOps {
114
114
  force?: boolean;
115
115
  progress?: (update: MemorySyncProgressUpdate) => void;
116
116
  }): Promise<void>;
117
+ protected normalizeChunkWeights(): void;
117
118
  private shouldFallbackOnError;
118
119
  protected resolveBatchConfig(): {
119
120
  enabled: boolean;
@@ -79,6 +79,7 @@ export declare class MemoryIndexManager extends MemoryManagerEmbeddingOps implem
79
79
  minScore?: number;
80
80
  sessionKey?: string;
81
81
  }): Promise<MemorySearchResult[]>;
82
+ private incrementChunkWeights;
82
83
  private searchVector;
83
84
  private buildFtsQuery;
84
85
  private searchKeyword;
@@ -4,10 +4,18 @@ export type MemorySearchResult = {
4
4
  startLine: number;
5
5
  endLine: number;
6
6
  score: number;
7
+ weight?: number;
7
8
  snippet: string;
8
9
  source: MemorySource;
9
10
  citation?: string;
10
11
  };
12
+ export type MemoryEdge = {
13
+ sourceChunkId: string;
14
+ targetChunkId: string;
15
+ relation: string;
16
+ weight: number;
17
+ createdAt: string;
18
+ };
11
19
  export type MemoryEmbeddingProbeResult = {
12
20
  ok: boolean;
13
21
  error?: string;
@@ -53,7 +53,7 @@ import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decod
53
53
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
54
54
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, v as runTasksWithConcurrency } from "./sqlite-Cq_7Cg4E.js";
55
55
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Wd5tNeQG.js";
56
- import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-Co0ZGhG7.js";
56
+ import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-PXN_BUWT.js";
57
57
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-DFVoW5Za.js";
58
58
  import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-U4QnHFuL.js";
59
59
  import { t as makeProxyFetch } from "./proxy-MquBDehr.js";
@@ -11556,7 +11556,7 @@ async function getMemorySearchManager(params) {
11556
11556
  const wrapper = new FallbackMemoryManager({
11557
11557
  primary,
11558
11558
  fallbackFactory: async () => {
11559
- const { MemoryIndexManager } = await import("./manager-Co0ZGhG7.js").then((n) => n.t);
11559
+ const { MemoryIndexManager } = await import("./manager-PXN_BUWT.js").then((n) => n.t);
11560
11560
  return await MemoryIndexManager.get(params);
11561
11561
  }
11562
11562
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -11569,7 +11569,7 @@ async function getMemorySearchManager(params) {
11569
11569
  }
11570
11570
  }
11571
11571
  try {
11572
- const { MemoryIndexManager } = await import("./manager-Co0ZGhG7.js").then((n) => n.t);
11572
+ const { MemoryIndexManager } = await import("./manager-PXN_BUWT.js").then((n) => n.t);
11573
11573
  return { manager: await MemoryIndexManager.get(params) };
11574
11574
  } catch (err) {
11575
11575
  return {
@@ -27119,7 +27119,7 @@ async function runWithImageModelFallback(params) {
27119
27119
  function createDefaultDeps() {
27120
27120
  return {
27121
27121
  sendMessageWhatsApp: async (...args) => {
27122
- const { sendMessageWhatsApp } = await import("./web-DB8ZqlXs.js");
27122
+ const { sendMessageWhatsApp } = await import("./web-Bnuebc-N.js");
27123
27123
  return await sendMessageWhatsApp(...args);
27124
27124
  },
27125
27125
  sendMessageTelegram: async (...args) => {
@@ -44745,7 +44745,7 @@ function loadWebLoginQr() {
44745
44745
  return webLoginQrPromise;
44746
44746
  }
44747
44747
  function loadWebChannel() {
44748
- webChannelPromise ??= import("./web-DB8ZqlXs.js");
44748
+ webChannelPromise ??= import("./web-Bnuebc-N.js");
44749
44749
  return webChannelPromise;
44750
44750
  }
44751
44751
  function loadWhatsAppActions() {
@@ -1,5 +1,5 @@
1
1
  import { a as WA_WEB_AUTH_DIR, g as webAuthExists, s as logWebSelfId, u as pickWebChannel } from "./accounts-D9zGZU5t.js";
2
- import "./reply-BHdxuPym.js";
2
+ import "./reply-BSUqmOjQ.js";
3
3
  import "./paths-DR2yt_mP.js";
4
4
  import "./github-copilot-token-D9X2phUj.js";
5
5
  import "./plugins-BbAvhC25.js";
@@ -45,13 +45,13 @@ import "./pi-embedded-helpers-DcxJ_dCv.js";
45
45
  import "./paths-A0xdf3yk.js";
46
46
  import "./diagnostic-mFf4i4G9.js";
47
47
  import "./store-Do3t33-c.js";
48
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-D3JZoBCW.js";
48
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-CN-Fomvm.js";
49
49
  import "./image-Cou87v78.js";
50
50
  import "./pi-model-discovery-LbcEa65a.js";
51
51
  import "./api-key-rotation-B7wX2cS9.js";
52
52
  import "./sqlite-Cq_7Cg4E.js";
53
53
  import "./diagnostic-session-state-Wd5tNeQG.js";
54
- import "./manager-Co0ZGhG7.js";
54
+ import "./manager-PXN_BUWT.js";
55
55
  import "./commands-registry-DFVoW5Za.js";
56
56
  import "./send-U4QnHFuL.js";
57
57
  import "./proxy-MquBDehr.js";
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
13
13
  import "./call-CG3pk7H3.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-C-4sylAS.js";
16
+ import "./subagent-registry-BmqDNBQA.js";
17
17
  import "./sessions-CgUqqsE6.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -51,8 +51,8 @@ import "./tool-images-CVLISeRT.js";
51
51
  import "./thinking-8sKPnzpp.js";
52
52
  import "./models-config-CBWUmrZr.js";
53
53
  import "./reply-prefix-BUN71nd5.js";
54
- import "./memory-cli-lgXFdWSf.js";
55
- import "./manager-DeLmBZ39.js";
54
+ import "./memory-cli-Bt9d248V.js";
55
+ import "./manager-RThEiATX.js";
56
56
  import "./gemini-auth-CuXaRAsc.js";
57
57
  import "./sqlite-CQGamAhm.js";
58
58
  import "./retry-C4Q_VPOo.js";
@@ -102,7 +102,7 @@ import "./npm-registry-spec-DkaZNHAW.js";
102
102
  import "./skill-scanner-BGWOBqLY.js";
103
103
  import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-CgQpVncj.js";
104
104
  import { t as renderTable } from "./table-D01d2GuY.js";
105
- import { t as buildPluginStatusReport } from "./status-DJuKDk_J.js";
105
+ import { t as buildPluginStatusReport } from "./status-JZ1tEKrI.js";
106
106
  import { n as updateNpmInstalledPlugins } from "./update-DEMKx4eC.js";
107
107
  import os from "node:os";
108
108
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, S as shortenHomePath, g as resolveConfigDir, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-IIs7TFkU.js";
4
+ import "./reply-BZn2Smlt.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -61,8 +61,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
61
61
  import "./send-CLbuByS_.js";
62
62
  import "./model-DLrVgGDx.js";
63
63
  import "./reply-prefix-CE2YmmsD.js";
64
- import "./memory-cli-CskGK36B.js";
65
- import "./manager-Dv2cMdMo.js";
64
+ import "./memory-cli-Cfckrobf.js";
65
+ import "./manager-DrSOlqpk.js";
66
66
  import "./retry-BoS4e4X_.js";
67
67
  import "./target-errors-7AvoVa10.js";
68
68
  import "./chunk-1dhPX1NK.js";
@@ -106,7 +106,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
106
106
  import "./skill-scanner-CLs8u6vQ.js";
107
107
  import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-C1Cebk97.js";
108
108
  import { t as renderTable } from "./table-BTgkRafz.js";
109
- import { t as buildPluginStatusReport } from "./status-CL_BV-5C.js";
109
+ import { t as buildPluginStatusReport } from "./status-Bpz3T9tk.js";
110
110
  import { n as updateNpmInstalledPlugins } from "./update-rw7wJwHd.js";
111
111
  import fs from "node:fs";
112
112
  import os from "node:os";
@@ -43,7 +43,7 @@ const entries = [
43
43
  description: "Run, inspect, and query the WebSocket Gateway",
44
44
  hasSubcommands: true,
45
45
  register: async (program) => {
46
- (await import("./gateway-cli-DdfE-Qud.js")).registerGatewayCli(program);
46
+ (await import("./gateway-cli-3xIbQUvB.js")).registerGatewayCli(program);
47
47
  }
48
48
  },
49
49
  {
@@ -75,7 +75,7 @@ const entries = [
75
75
  description: "Discover, scan, and configure models",
76
76
  hasSubcommands: true,
77
77
  register: async (program) => {
78
- (await import("./models-cli-DSYSRqhX.js")).registerModelsCli(program);
78
+ (await import("./models-cli-DJzcRyPn.js")).registerModelsCli(program);
79
79
  }
80
80
  },
81
81
  {
@@ -155,7 +155,7 @@ const entries = [
155
155
  description: "Manage internal agent hooks",
156
156
  hasSubcommands: true,
157
157
  register: async (program) => {
158
- (await import("./hooks-cli-D-FNhrKU.js")).registerHooksCli(program);
158
+ (await import("./hooks-cli-CRn_j55j.js")).registerHooksCli(program);
159
159
  }
160
160
  },
161
161
  {
@@ -179,7 +179,7 @@ const entries = [
179
179
  description: "Secure DM pairing (approve inbound requests)",
180
180
  hasSubcommands: true,
181
181
  register: async (program) => {
182
- const { registerPluginCliCommands } = await import("./cli-BONgNtI6.js");
182
+ const { registerPluginCliCommands } = await import("./cli-D_td9hk-.js");
183
183
  registerPluginCliCommands(program, await loadConfig());
184
184
  (await import("./pairing-cli-CNilzd0l.js")).registerPairingCli(program);
185
185
  }
@@ -189,8 +189,8 @@ const entries = [
189
189
  description: "Manage Symi plugins and extensions",
190
190
  hasSubcommands: true,
191
191
  register: async (program) => {
192
- (await import("./plugins-cli-Ca-2s0mB.js")).registerPluginsCli(program);
193
- const { registerPluginCliCommands } = await import("./cli-BONgNtI6.js");
192
+ (await import("./plugins-cli-DREF5Y06.js")).registerPluginsCli(program);
193
+ const { registerPluginCliCommands } = await import("./cli-D_td9hk-.js");
194
194
  registerPluginCliCommands(program, await loadConfig());
195
195
  }
196
196
  },
@@ -199,7 +199,7 @@ const entries = [
199
199
  description: "Manage connected chat channels (Telegram, Discord, etc.)",
200
200
  hasSubcommands: true,
201
201
  register: async (program) => {
202
- (await import("./channels-cli-B8_Hn_JG.js")).registerChannelsCli(program);
202
+ (await import("./channels-cli-ClwM5weH.js")).registerChannelsCli(program);
203
203
  }
204
204
  },
205
205
  {
@@ -231,7 +231,7 @@ const entries = [
231
231
  description: "Update Symi and inspect update channel status",
232
232
  hasSubcommands: true,
233
233
  register: async (program) => {
234
- (await import("./update-cli-eFRvF4NY.js")).registerUpdateCli(program);
234
+ (await import("./update-cli-YIILU6BZ.js")).registerUpdateCli(program);
235
235
  }
236
236
  },
237
237
  {
@@ -239,7 +239,7 @@ const entries = [
239
239
  description: "Generate shell completion script",
240
240
  hasSubcommands: false,
241
241
  register: async (program) => {
242
- (await import("./completion-cli-Bqdcg5hp.js").then((n) => n.n)).registerCompletionCli(program);
242
+ (await import("./completion-cli-CDN_tdvo.js").then((n) => n.n)).registerCompletionCli(program);
243
243
  }
244
244
  }
245
245
  ];
@@ -302,7 +302,7 @@ const coreEntries = [
302
302
  hasSubcommands: false
303
303
  }],
304
304
  register: async ({ program }) => {
305
- (await import("./register.setup-08AvEje_.js")).registerSetupCommand(program);
305
+ (await import("./register.setup-CetgUu6b.js")).registerSetupCommand(program);
306
306
  }
307
307
  },
308
308
  {
@@ -312,7 +312,7 @@ const coreEntries = [
312
312
  hasSubcommands: false
313
313
  }],
314
314
  register: async ({ program }) => {
315
- (await import("./register.onboard-1J-md52-.js")).registerOnboardCommand(program);
315
+ (await import("./register.onboard-B_62CoFF.js")).registerOnboardCommand(program);
316
316
  }
317
317
  },
318
318
  {
@@ -322,7 +322,7 @@ const coreEntries = [
322
322
  hasSubcommands: false
323
323
  }],
324
324
  register: async ({ program }) => {
325
- (await import("./register.configure-C8AOCj2z.js")).registerConfigureCommand(program);
325
+ (await import("./register.configure-B27lkird.js")).registerConfigureCommand(program);
326
326
  }
327
327
  },
328
328
  {
@@ -332,7 +332,7 @@ const coreEntries = [
332
332
  hasSubcommands: true
333
333
  }],
334
334
  register: async ({ program }) => {
335
- (await import("./config-cli--iVUJOKB.js")).registerConfigCli(program);
335
+ (await import("./config-cli-C-Hf7pJY.js")).registerConfigCli(program);
336
336
  }
337
337
  },
338
338
  {
@@ -359,7 +359,7 @@ const coreEntries = [
359
359
  }
360
360
  ],
361
361
  register: async ({ program }) => {
362
- (await import("./register.maintenance-BOHzvNEv.js")).registerMaintenanceCommands(program);
362
+ (await import("./register.maintenance-CCo66MmS.js")).registerMaintenanceCommands(program);
363
363
  }
364
364
  },
365
365
  {
@@ -369,7 +369,7 @@ const coreEntries = [
369
369
  hasSubcommands: true
370
370
  }],
371
371
  register: async ({ program, ctx }) => {
372
- (await import("./register.message-BwHXPTdE.js")).registerMessageCommands(program, ctx);
372
+ (await import("./register.message-CTb856sp.js")).registerMessageCommands(program, ctx);
373
373
  }
374
374
  },
375
375
  {
@@ -379,7 +379,7 @@ const coreEntries = [
379
379
  hasSubcommands: true
380
380
  }],
381
381
  register: async ({ program }) => {
382
- (await import("./memory-cli-CskGK36B.js").then((n) => n.t)).registerMemoryCli(program);
382
+ (await import("./memory-cli-Cfckrobf.js").then((n) => n.t)).registerMemoryCli(program);
383
383
  }
384
384
  },
385
385
  {
@@ -393,7 +393,7 @@ const coreEntries = [
393
393
  hasSubcommands: true
394
394
  }],
395
395
  register: async ({ program, ctx }) => {
396
- (await import("./register.agent-CUzSAFLR.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
396
+ (await import("./register.agent-DDqJWohA.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
397
397
  }
398
398
  },
399
399
  {
@@ -415,7 +415,7 @@ const coreEntries = [
415
415
  }
416
416
  ],
417
417
  register: async ({ program }) => {
418
- (await import("./register.status-health-sessions-D11MHrrN.js")).registerStatusHealthSessionsCommands(program);
418
+ (await import("./register.status-health-sessions-DFVOAFGc.js")).registerStatusHealthSessionsCommands(program);
419
419
  }
420
420
  },
421
421
  {
@@ -14,7 +14,7 @@ import "./client-DMBZpU6X.js";
14
14
  import "./call-CG3pk7H3.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-C-4sylAS.js";
17
+ import "./subagent-registry-BmqDNBQA.js";
18
18
  import "./sessions-CgUqqsE6.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
52
52
  import "./thinking-8sKPnzpp.js";
53
53
  import "./models-config-CBWUmrZr.js";
54
54
  import "./reply-prefix-BUN71nd5.js";
55
- import "./memory-cli-lgXFdWSf.js";
56
- import "./manager-DeLmBZ39.js";
55
+ import "./memory-cli-Bt9d248V.js";
56
+ import "./manager-RThEiATX.js";
57
57
  import "./gemini-auth-CuXaRAsc.js";
58
58
  import "./sqlite-CQGamAhm.js";
59
59
  import "./retry-C4Q_VPOo.js";
@@ -99,13 +99,13 @@ import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-Be24onf1.js";
100
100
  import "./pi-tools.policy-CLyARrZ2.js";
101
101
  import "./catalog-DLQFKucJ.js";
102
- import "./plugin-registry-7OViua2f.js";
103
- import { n as resolveCliChannelOptions } from "./channel-options-BvRRt5lE.js";
104
- import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-b7zkQpHC.js";
105
- import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-CYkmIRSj.js";
102
+ import "./plugin-registry-DqfOHgSY.js";
103
+ import { n as resolveCliChannelOptions } from "./channel-options-CHF9c6FY.js";
104
+ import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-Ch7CsZP4.js";
105
+ import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-S9Fhf4c1.js";
106
106
  import { r as setProgramContext } from "./program-context-CqzR_m-7.js";
107
107
  import { t as forceFreePort } from "./ports-Dn122MUd.js";
108
- import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-Cetc-uA0.js";
108
+ import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-BsCs2JGc.js";
109
109
  import { Command } from "commander";
110
110
 
111
111
  //#region src/cli/program/context.ts
@@ -213,7 +213,7 @@ function registerPreActionHooks(program, programVersion) {
213
213
  commandPath
214
214
  });
215
215
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
216
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-7OViua2f.js").then((n) => n.n);
216
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-DqfOHgSY.js").then((n) => n.n);
217
217
  ensurePluginRegistryLoaded();
218
218
  }
219
219
  });
@@ -1,6 +1,6 @@
1
1
  import { d as resolveIsNixMode, g as resolveStateDir, m as resolveOAuthDir, t as CONFIG_PATH, u as resolveGatewayPort, y as resolveRequiredHomeDir } from "./paths-Cqn-zk3M.js";
2
2
  import { C as sleep, S as shortenHomePath, U as getResolvedLoggerSettings, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
- import { gt as loadSymiPlugins, hr as formatRemainingShort, mr as buildAuthHealthSummary, pr as DEFAULT_OAUTH_WARN_MS } from "./reply-IIs7TFkU.js";
3
+ import { gt as loadSymiPlugins, hr as formatRemainingShort, mr as buildAuthHealthSummary, pr as DEFAULT_OAUTH_WARN_MS } from "./reply-BZn2Smlt.js";
4
4
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
5
5
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
6
6
  import { n as runExec, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
@@ -17,8 +17,8 @@ import { H as resolveMainSessionKey, Y as cleanStaleLockFiles, o as loadSessionS
17
17
  import { n as listChannelPlugins } from "./plugins-DKDeQZF0.js";
18
18
  import { c as resolveStorePath, n as resolveSessionFilePath, s as resolveSessionTranscriptsDirForAgent } from "./paths-CyhzMxFA.js";
19
19
  import { n as loadModelCatalog } from "./model-catalog-CyVjx3Oi.js";
20
- import { i as resolveMemoryBackendConfig } from "./memory-cli-CskGK36B.js";
21
- import { i as resolveMemorySearchConfig } from "./manager-Dv2cMdMo.js";
20
+ import { i as resolveMemoryBackendConfig } from "./memory-cli-Cfckrobf.js";
21
+ import { i as resolveMemorySearchConfig } from "./manager-DrSOlqpk.js";
22
22
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BP0xXMaY.js";
23
23
  import { h as randomToken, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel } from "./onboard-helpers-CkS1VT2R.js";
24
24
  import { n as isWSLEnv, t as isWSL } from "./wsl-C4424szg.js";
@@ -34,16 +34,16 @@ import { a as launchAgentPlistExists, i as isLaunchAgentLoaded, o as repairLaunc
34
34
  import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, o as needsNodeRuntimeMigration, r as SERVICE_AUDIT_CODES, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-C72TP49y.js";
35
35
  import { t as readLastGatewayErrorLine } from "./diagnostics-BAMlsVVX.js";
36
36
  import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-CllGjsWo.js";
37
- import { r as healthCommand } from "./health-DQ3XEpzi.js";
37
+ import { r as healthCommand } from "./health-DBwSpMeO.js";
38
38
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Z947tKLt.js";
39
39
  import { t as resolveDmAllowState } from "./dm-policy-shared-Ddfj0fRf.js";
40
- import { t as runGatewayUpdate } from "./update-runner-Z_RJvKCC.js";
40
+ import { t as runGatewayUpdate } from "./update-runner-BZ8CU4YI.js";
41
41
  import { t as resolveAgentSessionDirs } from "./session-dirs-DWgIYmAt.js";
42
42
  import { n as logConfigUpdated } from "./logging-BzzwiKjv.js";
43
43
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-Csyvwghf.js";
44
44
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-aQ75ZlXY.js";
45
45
  import { t as formatHealthCheckFailure } from "./health-format-DSwnXZPU.js";
46
- import { n as doctorShellCompletion } from "./doctor-completion-BXZ8aBWN.js";
46
+ import { n as doctorShellCompletion } from "./doctor-completion-BG8Cg9mp.js";
47
47
  import fs from "node:fs";
48
48
  import os from "node:os";
49
49
  import path from "node:path";