@symerian/symi 2.0.25 → 2.1.0

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 (181) 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/{audio-preflight-jaMIMdV3.js → audio-preflight-CdZ7aXUT.js} +4 -4
  5. package/dist/{auth-choice-CkEtpUvW.js → auth-choice-DZTkXFl-.js} +1 -1
  6. package/dist/{auth-choice-BzuGX2ET.js → auth-choice-iZB4sGvl.js} +1 -1
  7. package/dist/{banner-Cetc-uA0.js → banner-BsCs2JGc.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +2 -2
  10. package/dist/bundled/session-memory/handler.js +2 -2
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-ayY8htYG.js → channel-options-BYCPesaD.js} +1 -1
  13. package/dist/{channel-options-BvRRt5lE.js → channel-options-CHF9c6FY.js} +1 -1
  14. package/dist/{channel-web-CA7NCnAU.js → channel-web-Kt_j1QOj.js} +1 -1
  15. package/dist/{channels-cli-B8_Hn_JG.js → channels-cli-ClwM5weH.js} +6 -6
  16. package/dist/{channels-cli-Cr2ND5Ck.js → channels-cli-DT1qfmcb.js} +6 -6
  17. package/dist/{chrome-CTcnKcDU.js → chrome-Ccn3teyk.js} +7 -7
  18. package/dist/{cli-C9H2cgZa.js → cli-CUPKVz7g.js} +3 -3
  19. package/dist/{cli-BONgNtI6.js → cli-D_td9hk-.js} +3 -3
  20. package/dist/{command-registry-CYkmIRSj.js → command-registry-S9Fhf4c1.js} +10 -10
  21. package/dist/{completion-cli-Bqdcg5hp.js → completion-cli-CDN_tdvo.js} +1 -1
  22. package/dist/{completion-cli-Qv8_Vnw3.js → completion-cli-CnLexFdC.js} +2 -2
  23. package/dist/{config-cli-dO3O4PE6.js → config-cli-B9MuT7ra.js} +1 -1
  24. package/dist/{config-cli--iVUJOKB.js → config-cli-C-Hf7pJY.js} +1 -1
  25. package/dist/{configure-CJXXqp0t.js → configure-BVJX5jHt.js} +3 -3
  26. package/dist/{configure-7GGtnxAx.js → configure-mQsIxCGj.js} +3 -3
  27. package/dist/{deliver-BklTO2jq.js → deliver-CTLClsFg.js} +1 -1
  28. package/dist/{doctor-completion-2pOgfi5X.js → doctor-completion-AOqgLS4U.js} +1 -1
  29. package/dist/{doctor-completion-BXZ8aBWN.js → doctor-completion-BG8Cg9mp.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +7 -7
  32. package/dist/{gateway-cli-DdfE-Qud.js → gateway-cli-3xIbQUvB.js} +11 -11
  33. package/dist/{gateway-cli-BzScglLB.js → gateway-cli-Bpze8UCK.js} +11 -11
  34. package/dist/{glass-ui-ws-CMkw5YM1.js → glass-ui-ws-BlIbIFja.js} +9 -9
  35. package/dist/{glass-ui-ws-r9Xzs77h.js → glass-ui-ws-kaPdOFQ1.js} +9 -9
  36. package/dist/{health-DQ3XEpzi.js → health-DBwSpMeO.js} +1 -1
  37. package/dist/{health-5ZtemgeO.js → health-Dp4Q9nXE.js} +1 -1
  38. package/dist/{hooks-cli-DZwzWt2B.js → hooks-cli-BaGV9nsK.js} +4 -4
  39. package/dist/{hooks-cli-D-FNhrKU.js → hooks-cli-CRn_j55j.js} +4 -4
  40. package/dist/{image-CUYqZhvS.js → image-DbrwHH9b.js} +1 -1
  41. package/dist/index.js +8 -8
  42. package/dist/llm-slug-generator.js +2 -2
  43. package/dist/{manager-DVVFabIj.js → manager-CL7MzOkQ.js} +76 -11
  44. package/dist/{manager-Dv2cMdMo.js → manager-DrSOlqpk.js} +76 -11
  45. package/dist/{manager-Ctbgi2K4.js → manager-M83fJMDC.js} +76 -11
  46. package/dist/{manager-DeLmBZ39.js → manager-RThEiATX.js} +76 -11
  47. package/dist/{memory-cli-lgXFdWSf.js → memory-cli-Bt9d248V.js} +3 -3
  48. package/dist/{memory-cli-CskGK36B.js → memory-cli-Cfckrobf.js} +3 -3
  49. package/dist/{models-Duhwal5Q.js → models-DOEuOTkj.js} +2 -2
  50. package/dist/{models-cli-DSYSRqhX.js → models-cli-DJzcRyPn.js} +4 -4
  51. package/dist/{models-cli-Fruesavk.js → models-cli-Da_ycT4E.js} +5 -5
  52. package/dist/{onboard-Deo_T2AR.js → onboard-Cj-BNQ8q.js} +2 -2
  53. package/dist/{onboard-kwm7Bshh.js → onboard-D62AfYak.js} +2 -2
  54. package/dist/{onboard-channels-BbhoZWuh.js → onboard-channels-BJY5FrhC.js} +1 -1
  55. package/dist/{onboard-channels-CCiFhk1N.js → onboard-channels-DqvkgA44.js} +1 -1
  56. package/dist/{onboarding-CIEiNfre.js → onboarding-BVBk-a0N.js} +3 -3
  57. package/dist/{onboarding-_YqH1Wmc.js → onboarding-DZr7frCp.js} +3 -3
  58. package/dist/{onboarding.finalize-DHa8QCea.js → onboarding.finalize-ClGudWHI.js} +7 -7
  59. package/dist/{onboarding.finalize-CQ-uVQ6r.js → onboarding.finalize-DjWsLgGj.js} +8 -8
  60. package/dist/{pi-embedded-DyCO1o5V.js → pi-embedded-6aosCkCE.js} +5 -5
  61. package/dist/{pi-embedded-BFWNnHTw.js → pi-embedded-BmhXyBan.js} +19 -19
  62. package/dist/{pi-embedded-helpers-DZ3Lcixd.js → pi-embedded-helpers-Co6u9rYt.js} +4 -4
  63. package/dist/{plugin-registry-DmxC3a3G.js → plugin-registry-B9o0EnWk.js} +1 -1
  64. package/dist/{plugin-registry-7OViua2f.js → plugin-registry-DqfOHgSY.js} +1 -1
  65. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  66. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  67. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  68. package/dist/plugin-sdk/{active-listener-bEk__wbB.js → active-listener-BXYeALs0.js} +1 -1
  69. package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
  70. package/dist/plugin-sdk/{api-key-rotation-B7wX2cS9.js → api-key-rotation-BNN7DLRF.js} +1 -1
  71. package/dist/plugin-sdk/{audio-preflight-DmO-qZO9.js → audio-preflight-BzbpDAkS.js} +24 -24
  72. package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
  73. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  74. package/dist/plugin-sdk/{channel-web-D3JZoBCW.js → channel-web-DiO1WsXm.js} +22 -22
  75. package/dist/plugin-sdk/{chrome-D3HqV4lE.js → chrome-BIOpja0y.js} +3 -3
  76. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  77. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  78. package/dist/plugin-sdk/{commands-registry-DFVoW5Za.js → commands-registry-B6QKgH1z.js} +4 -4
  79. package/dist/plugin-sdk/{config-DGdT3hiT.js → config-lc09wRnM.js} +9 -9
  80. package/dist/plugin-sdk/{deliver-CRVsC0d1.js → deliver-Bk381_qd.js} +10 -10
  81. package/dist/plugin-sdk/{diagnostic-mFf4i4G9.js → diagnostic-05pm5Rxi.js} +1 -1
  82. package/dist/plugin-sdk/{image-Cou87v78.js → image-DB8curb-.js} +4 -4
  83. package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
  84. package/dist/plugin-sdk/index.js +53 -53
  85. package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
  86. package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
  87. package/dist/plugin-sdk/{login-J97Xs3mQ.js → login-hNMO63Eg.js} +7 -7
  88. package/dist/plugin-sdk/{login-qr-CYoaQJNf.js → login-qr-CJsU7ocT.js} +9 -9
  89. package/dist/plugin-sdk/{manager-Co0ZGhG7.js → manager-Cn2S7u-y.js} +84 -19
  90. package/dist/plugin-sdk/{manifest-registry-B3ugY9-f.js → manifest-registry-CPnHl_K3.js} +1 -1
  91. package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
  92. package/dist/plugin-sdk/memory/hybrid.d.ts +2 -0
  93. package/dist/plugin-sdk/memory/manager-embedding-ops.d.ts +1 -0
  94. package/dist/plugin-sdk/memory/manager-search.d.ts +1 -0
  95. package/dist/plugin-sdk/memory/manager-sync-ops.d.ts +1 -0
  96. package/dist/plugin-sdk/memory/manager.d.ts +1 -0
  97. package/dist/plugin-sdk/memory/types.d.ts +8 -0
  98. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  99. package/dist/plugin-sdk/{model-selection-UQwTqGSw.js → model-selection-CPEL3Uc_.js} +4 -4
  100. package/dist/plugin-sdk/{outbound-CyzXQ9GA.js → outbound-NgBi-sk8.js} +7 -7
  101. package/dist/plugin-sdk/{outbound-attachment-DnVQfTG2.js → outbound-attachment-CnslKL38.js} +2 -2
  102. package/dist/plugin-sdk/{pi-auth-json-DAttpBPg.js → pi-auth-json-D4gyc_V3.js} +5 -5
  103. package/dist/plugin-sdk/{pi-embedded-helpers-DcxJ_dCv.js → pi-embedded-helpers-DcxGeorG.js} +17 -17
  104. package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
  105. package/dist/plugin-sdk/{pw-ai-DqBUVw9D.js → pw-ai-B0VzayDJ.js} +8 -8
  106. package/dist/plugin-sdk/{qmd-manager-mjKcdwVr.js → qmd-manager-CH0XbIHf.js} +4 -4
  107. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  108. package/dist/plugin-sdk/{replies-Bt_4rkga.js → replies-BCsVYl4o.js} +3 -3
  109. package/dist/plugin-sdk/{reply-BHdxuPym.js → reply-4kNYrpaI.js} +78 -78
  110. package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
  111. package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
  112. package/dist/plugin-sdk/{resolve-route-D3JH_D2N.js → resolve-route-B3CCBumQ.js} +3 -3
  113. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  114. package/dist/plugin-sdk/{runner-DOK4nOOu.js → runner-wiQcSC_Z.js} +9 -9
  115. package/dist/plugin-sdk/{send-DoeU6JH3.js → send-BBo0F5E0.js} +10 -10
  116. package/dist/plugin-sdk/{send-BUTL8LgP.js → send-BopyAy0U.js} +6 -6
  117. package/dist/plugin-sdk/{send-BWZEL5Hm.js → send-CNfeWYOl.js} +10 -10
  118. package/dist/plugin-sdk/{send-U4QnHFuL.js → send-LFxvkq5t.js} +6 -6
  119. package/dist/plugin-sdk/{send-_XHCj2iv.js → send-XSeiJkB-.js} +7 -7
  120. package/dist/plugin-sdk/{session-dNI_CU-U.js → session-Dkqq0dEe.js} +4 -4
  121. package/dist/plugin-sdk/{skill-commands-27tIhSRP.js → skill-commands-BUVE0jBL.js} +5 -5
  122. package/dist/plugin-sdk/{skills-B1GeRYlu.js → skills-_yTP47Cd.js} +7 -7
  123. package/dist/plugin-sdk/{sqlite-Cq_7Cg4E.js → sqlite-CxAR5ttJ.js} +1 -1
  124. package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
  125. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  126. package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
  127. package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
  128. package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
  129. package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
  130. package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
  131. package/dist/plugin-sdk/{tool-loop-detection-edmW8ZiF.js → tool-loop-detection-BVA6fax-.js} +2 -2
  132. package/dist/plugin-sdk/web-BxGmATPU.js +65 -0
  133. package/dist/plugin-sdk/{whatsapp-actions-U4dJ5DZZ.js → whatsapp-actions-DZyGHiN8.js} +21 -21
  134. package/dist/{plugins-cli-CDY9bX9F.js → plugins-cli-B8xVmAuR.js} +4 -4
  135. package/dist/{plugins-cli-Ca-2s0mB.js → plugins-cli-DREF5Y06.js} +4 -4
  136. package/dist/{program-context-DkHjT7p8.js → program-context-Qr4P_3lt.js} +18 -18
  137. package/dist/{program-BnymHVbq.js → program-q-ZGnun7.js} +9 -9
  138. package/dist/{prompt-select-styled-gd8Q7kTk.js → prompt-select-styled-BGN9e74V.js} +6 -6
  139. package/dist/{prompt-select-styled-C40kayHq.js → prompt-select-styled-BO2fAMkR.js} +6 -6
  140. package/dist/{provider-auth-helpers-BQZmtboq.js → provider-auth-helpers-B3J64Jh2.js} +1 -1
  141. package/dist/{provider-auth-helpers-2ZFybTSC.js → provider-auth-helpers-DsbN2XiG.js} +1 -1
  142. package/dist/{push-apns-BTOgWzu3.js → push-apns-Ba9C9T6a.js} +1 -1
  143. package/dist/{push-apns-DcwJLjj4.js → push-apns-CeICANgd.js} +1 -1
  144. package/dist/{pw-ai-DY2vHEE2.js → pw-ai-BSTzJb4x.js} +1 -1
  145. package/dist/{register.agent-DRlHunj4.js → register.agent-BZBDrxwe.js} +8 -8
  146. package/dist/{register.agent-CUzSAFLR.js → register.agent-DDqJWohA.js} +7 -7
  147. package/dist/{register.configure-C8AOCj2z.js → register.configure-B27lkird.js} +8 -8
  148. package/dist/{register.configure-DxmZflTV.js → register.configure-xDJRQslK.js} +8 -8
  149. package/dist/{register.maintenance-C2yYpGsB.js → register.maintenance-C7KqQS56.js} +10 -10
  150. package/dist/{register.maintenance-BOHzvNEv.js → register.maintenance-CCo66MmS.js} +9 -9
  151. package/dist/{register.message-BwHXPTdE.js → register.message-CTb856sp.js} +4 -4
  152. package/dist/{register.message-BjVTvD18.js → register.message-mqY_8nFj.js} +4 -4
  153. package/dist/{register.onboard-1J-md52-.js → register.onboard-B_62CoFF.js} +6 -6
  154. package/dist/{register.onboard-pa2gAtlr.js → register.onboard-DCadPRqN.js} +6 -6
  155. package/dist/{register.setup-08AvEje_.js → register.setup-CetgUu6b.js} +6 -6
  156. package/dist/{register.setup-Cw8AS2ct.js → register.setup-D4vceMjW.js} +6 -6
  157. package/dist/{register.status-health-sessions-D11MHrrN.js → register.status-health-sessions-DFVOAFGc.js} +5 -5
  158. package/dist/{register.status-health-sessions-Blye9Exm.js → register.status-health-sessions-oREONKrQ.js} +5 -5
  159. package/dist/{register.subclis-b7zkQpHC.js → register.subclis-Ch7CsZP4.js} +9 -9
  160. package/dist/{reply-IIs7TFkU.js → reply-BZn2Smlt.js} +4 -4
  161. package/dist/{run-main-B_IHY4_P.js → run-main-L9-PmGcv.js} +17 -17
  162. package/dist/{runner-mzKdroBs.js → runner-RWwoIsld.js} +1 -1
  163. package/dist/{server-methods-ly9rxYy9.js → server-methods-Cr4xi0KV.js} +7 -7
  164. package/dist/{server-methods-f8mvUGBY.js → server-methods-UzcnQvxB.js} +7 -7
  165. package/dist/{server-node-events-Dn29YyKb.js → server-node-events-B8gQNWfX.js} +4 -4
  166. package/dist/{server-node-events-Ci6Vl3GE.js → server-node-events-Cj5CSKH2.js} +4 -4
  167. package/dist/{status-DAosaOZ9.js → status-3kOYUAe6.js} +3 -3
  168. package/dist/{status-CL_BV-5C.js → status-Bpz3T9tk.js} +1 -1
  169. package/dist/{status-DBfu3QLG.js → status-C3zEYCNx.js} +3 -3
  170. package/dist/{status-DJuKDk_J.js → status-JZ1tEKrI.js} +1 -1
  171. package/dist/{subagent-registry-C-4sylAS.js → subagent-registry-BmqDNBQA.js} +4 -4
  172. package/dist/{update-cli-Ds-rcfCm.js → update-cli-CcMqLG-F.js} +10 -10
  173. package/dist/{update-cli-eFRvF4NY.js → update-cli-YIILU6BZ.js} +9 -9
  174. package/dist/{update-runner-Z_RJvKCC.js → update-runner-BZ8CU4YI.js} +1 -1
  175. package/dist/{update-runner-DP-qIkLO.js → update-runner-DeRhiJkE.js} +1 -1
  176. package/dist/{web-AqZCRhcz.js → web-BD8iPNff.js} +4 -4
  177. package/dist/{web-CYKQL396.js → web-BXaT5obz.js} +7 -7
  178. package/dist/{web-Dd-yg3ar.js → web-DbjazvT5.js} +2 -2
  179. package/dist/{web-DoQWiQnO.js → web-Dx7mFsKF.js} +3 -3
  180. package/package.json +1 -1
  181. package/dist/plugin-sdk/web-DB8ZqlXs.js +0 -65
@@ -996,12 +996,14 @@ async function mergeHybridResults(params) {
996
996
  source: r.source,
997
997
  snippet: r.snippet,
998
998
  vectorScore: r.vectorScore,
999
- textScore: 0
999
+ textScore: 0,
1000
+ weight: r.weight ?? 1
1000
1001
  });
1001
1002
  for (const r of params.keyword) {
1002
1003
  const existing = byId.get(r.id);
1003
1004
  if (existing) {
1004
1005
  existing.textScore = r.textScore;
1006
+ if (r.weight != null && r.weight > existing.weight) existing.weight = r.weight;
1005
1007
  if (r.snippet && r.snippet.length > 0) existing.snippet = r.snippet;
1006
1008
  } else byId.set(r.id, {
1007
1009
  id: r.id,
@@ -1011,12 +1013,13 @@ async function mergeHybridResults(params) {
1011
1013
  source: r.source,
1012
1014
  snippet: r.snippet,
1013
1015
  vectorScore: 0,
1014
- textScore: r.textScore
1016
+ textScore: r.textScore,
1017
+ weight: r.weight ?? 1
1015
1018
  });
1016
1019
  }
1017
1020
  const sorted = (await applyTemporalDecayToHybridResults({
1018
1021
  results: Array.from(byId.values()).map((entry) => {
1019
- const score = params.vectorWeight * entry.vectorScore + params.textWeight * entry.textScore;
1022
+ const score = (params.vectorWeight * entry.vectorScore + params.textWeight * entry.textScore) * entry.weight;
1020
1023
  return {
1021
1024
  path: entry.path,
1022
1025
  startLine: entry.startLine,
@@ -1796,10 +1799,23 @@ function ensureMemoryIndexSchema(params) {
1796
1799
  model TEXT NOT NULL,
1797
1800
  text TEXT NOT NULL,
1798
1801
  embedding TEXT NOT NULL,
1799
- updated_at INTEGER NOT NULL
1802
+ updated_at INTEGER NOT NULL,
1803
+ weight REAL NOT NULL DEFAULT 1.0
1800
1804
  );
1801
1805
  `);
1802
1806
  params.db.exec(`
1807
+ CREATE TABLE IF NOT EXISTS edges (
1808
+ source_chunk_id TEXT NOT NULL,
1809
+ target_chunk_id TEXT NOT NULL,
1810
+ relation TEXT NOT NULL DEFAULT 'co_occurrence',
1811
+ weight REAL NOT NULL DEFAULT 1.0,
1812
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
1813
+ PRIMARY KEY (source_chunk_id, target_chunk_id, relation)
1814
+ );
1815
+ `);
1816
+ params.db.exec(`CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(source_chunk_id);`);
1817
+ params.db.exec(`CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(target_chunk_id);`);
1818
+ params.db.exec(`
1803
1819
  CREATE TABLE IF NOT EXISTS ${params.embeddingCacheTable} (
1804
1820
  provider TEXT NOT NULL,
1805
1821
  model TEXT NOT NULL,
@@ -1824,6 +1840,7 @@ function ensureMemoryIndexSchema(params) {
1824
1840
  }
1825
1841
  ensureColumn(params.db, "files", "source", "TEXT NOT NULL DEFAULT 'memory'");
1826
1842
  ensureColumn(params.db, "chunks", "source", "TEXT NOT NULL DEFAULT 'memory'");
1843
+ ensureColumn(params.db, "chunks", "weight", "REAL NOT NULL DEFAULT 1.0");
1827
1844
  params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_path ON chunks(path);`);
1828
1845
  params.db.exec(`CREATE INDEX IF NOT EXISTS idx_chunks_source ON chunks(source);`);
1829
1846
  return {
@@ -2427,6 +2444,7 @@ var MemoryManagerSyncOps = class {
2427
2444
  this.sessionsDirtyFiles.clear();
2428
2445
  } else if (this.sessionsDirtyFiles.size > 0) this.sessionsDirty = true;
2429
2446
  else this.sessionsDirty = false;
2447
+ this.normalizeChunkWeights();
2430
2448
  } catch (err) {
2431
2449
  const reason = err instanceof Error ? err.message : String(err);
2432
2450
  if (this.shouldFallbackOnError(reason) && await this.activateFallbackProvider(reason)) {
@@ -2440,6 +2458,21 @@ var MemoryManagerSyncOps = class {
2440
2458
  throw err;
2441
2459
  }
2442
2460
  }
2461
+ normalizeChunkWeights() {
2462
+ try {
2463
+ const rows = this.db.prepare(`SELECT id, weight FROM chunks`).all();
2464
+ if (rows.length < 2) return;
2465
+ const weights = rows.map((r) => r.weight);
2466
+ const maxW = Math.max(...weights);
2467
+ const exps = weights.map((w) => Math.exp(w - maxW));
2468
+ const sumExp = exps.reduce((a, b) => a + b, 0);
2469
+ const normalized = exps.map((e) => e / sumExp * rows.length);
2470
+ const stmt = this.db.prepare(`UPDATE chunks SET weight = ? WHERE id = ?`);
2471
+ this.db.exec("BEGIN");
2472
+ for (let i = 0; i < rows.length; i++) stmt.run(normalized[i], rows[i].id);
2473
+ this.db.exec("COMMIT");
2474
+ } catch {}
2475
+ }
2443
2476
  shouldFallbackOnError(message) {
2444
2477
  return /embedding|embeddings|batch/i.test(message);
2445
2478
  }
@@ -3095,6 +3128,10 @@ var MemoryManagerEmbeddingOps = class extends MemoryManagerSyncOps {
3095
3128
  if (this.fts.enabled && this.fts.available) try {
3096
3129
  this.db.prepare(`DELETE FROM ${FTS_TABLE$1} WHERE path = ? AND source = ? AND model = ?`).run(entry.path, options.source, this.provider.model);
3097
3130
  } catch {}
3131
+ try {
3132
+ this.db.prepare(`DELETE FROM edges WHERE source_chunk_id IN (SELECT id FROM chunks WHERE path = ? AND source = ?)
3133
+ OR target_chunk_id IN (SELECT id FROM chunks WHERE path = ? AND source = ?)`).run(entry.path, options.source, entry.path, options.source);
3134
+ } catch {}
3098
3135
  this.db.prepare(`DELETE FROM chunks WHERE path = ? AND source = ?`).run(entry.path, options.source);
3099
3136
  for (let i = 0; i < chunks.length; i++) {
3100
3137
  const chunk = chunks[i];
@@ -3116,6 +3153,7 @@ var MemoryManagerEmbeddingOps = class extends MemoryManagerSyncOps {
3116
3153
  }
3117
3154
  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);
3118
3155
  }
3156
+ this.buildCoOccurrenceEdges(chunks, entry, options.source);
3119
3157
  this.db.prepare(`INSERT INTO files (path, source, hash, mtime, size) VALUES (?, ?, ?, ?, ?)
3120
3158
  ON CONFLICT(path) DO UPDATE SET
3121
3159
  source=excluded.source,
@@ -3123,6 +3161,18 @@ var MemoryManagerEmbeddingOps = class extends MemoryManagerSyncOps {
3123
3161
  mtime=excluded.mtime,
3124
3162
  size=excluded.size`).run(entry.path, options.source, entry.hash, entry.mtimeMs, entry.size);
3125
3163
  }
3164
+ buildCoOccurrenceEdges(chunks, entry, source) {
3165
+ if (chunks.length < 2 || !this.provider) return;
3166
+ try {
3167
+ const ids = chunks.map((chunk) => hashText(`${source}:${entry.path}:${chunk.startLine}:${chunk.endLine}:${chunk.hash}:${this.provider.model}`));
3168
+ const stmt = this.db.prepare(`INSERT OR REPLACE INTO edges (source_chunk_id, target_chunk_id, relation, weight, created_at)
3169
+ VALUES (?, ?, 'co_occurrence', 1.0, datetime('now'))`);
3170
+ for (let i = 0; i < ids.length; i++) {
3171
+ if (i + 1 < ids.length) stmt.run(ids[i], ids[i + 1]);
3172
+ if (i + 2 < ids.length) stmt.run(ids[i], ids[i + 2]);
3173
+ }
3174
+ } catch {}
3175
+ }
3126
3176
  };
3127
3177
 
3128
3178
  //#endregion
@@ -3131,7 +3181,7 @@ const vectorToBlob = (embedding) => Buffer.from(new Float32Array(embedding).buff
3131
3181
  async function searchVector(params) {
3132
3182
  if (params.queryVec.length === 0 || params.limit <= 0) return [];
3133
3183
  if (await params.ensureVectorReady(params.queryVec.length)) return params.db.prepare(`SELECT c.id, c.path, c.start_line, c.end_line, c.text,
3134
- c.source,
3184
+ c.source, c.weight,
3135
3185
  vec_distance_cosine(v.embedding, ?) AS dist
3136
3186
  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) => ({
3137
3187
  id: row.id,
@@ -3140,7 +3190,8 @@ async function searchVector(params) {
3140
3190
  endLine: row.end_line,
3141
3191
  score: 1 - row.dist,
3142
3192
  snippet: truncateUtf16Safe(row.text, params.snippetMaxChars),
3143
- source: row.source
3193
+ source: row.source,
3194
+ weight: row.weight
3144
3195
  }));
3145
3196
  return listChunks({
3146
3197
  db: params.db,
@@ -3160,7 +3211,7 @@ async function searchVector(params) {
3160
3211
  }));
3161
3212
  }
3162
3213
  function listChunks(params) {
3163
- return params.db.prepare(`SELECT id, path, start_line, end_line, text, embedding, source
3214
+ return params.db.prepare(`SELECT id, path, start_line, end_line, text, embedding, source, weight
3164
3215
  FROM chunks
3165
3216
  WHERE model = ?${params.sourceFilter.sql}`).all(params.providerModel, ...params.sourceFilter.params).map((row) => ({
3166
3217
  id: row.id,
@@ -3169,7 +3220,8 @@ function listChunks(params) {
3169
3220
  endLine: row.end_line,
3170
3221
  text: row.text,
3171
3222
  embedding: parseEmbedding(row.embedding),
3172
- source: row.source
3223
+ source: row.source,
3224
+ weight: row.weight
3173
3225
  }));
3174
3226
  }
3175
3227
  async function searchKeyword(params) {
@@ -3178,7 +3230,7 @@ async function searchKeyword(params) {
3178
3230
  if (!ftsQuery) return [];
3179
3231
  const modelClause = params.providerModel ? " AND model = ?" : "";
3180
3232
  const modelParams = params.providerModel ? [params.providerModel] : [];
3181
- 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) => {
3233
+ 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) => {
3182
3234
  const textScore = params.bm25RankToScore(row.rank);
3183
3235
  return {
3184
3236
  id: row.id,
@@ -3188,7 +3240,8 @@ async function searchKeyword(params) {
3188
3240
  score: textScore,
3189
3241
  textScore,
3190
3242
  snippet: truncateUtf16Safe(row.text, params.snippetMaxChars),
3191
- source: row.source
3243
+ source: row.source,
3244
+ weight: row.weight
3192
3245
  };
3193
3246
  });
3194
3247
  }
@@ -3577,7 +3630,7 @@ var MemoryIndexManager = class MemoryIndexManager extends MemoryManagerEmbedding
3577
3630
  const queryVec = await this.embedQueryWithTimeout(cleaned);
3578
3631
  const vectorResults = queryVec.some((v) => v !== 0) ? await this.searchVector(queryVec, candidates).catch(() => []) : [];
3579
3632
  if (!hybrid.enabled) return vectorResults.filter((entry) => entry.score >= minScore).slice(0, maxResults);
3580
- return (await this.mergeHybridResults({
3633
+ const results = (await this.mergeHybridResults({
3581
3634
  vector: vectorResults,
3582
3635
  keyword: keywordResults,
3583
3636
  vectorWeight: hybrid.vectorWeight,
@@ -3585,6 +3638,18 @@ var MemoryIndexManager = class MemoryIndexManager extends MemoryManagerEmbedding
3585
3638
  mmr: hybrid.mmr,
3586
3639
  temporalDecay: hybrid.temporalDecay
3587
3640
  })).filter((entry) => entry.score >= minScore).slice(0, maxResults);
3641
+ this.incrementChunkWeights(results);
3642
+ return results;
3643
+ }
3644
+ incrementChunkWeights(results) {
3645
+ if (results.length === 0) return;
3646
+ try {
3647
+ const stmt = this.db.prepare(`UPDATE chunks SET weight = weight + ? WHERE path = ? AND start_line = ? AND end_line = ?`);
3648
+ for (const r of results) {
3649
+ const boost = Math.min(r.score * .1, .2);
3650
+ stmt.run(boost, r.path, r.startLine, r.endLine);
3651
+ }
3652
+ } catch {}
3588
3653
  }
3589
3654
  async searchVector(queryVec, limit) {
3590
3655
  if (!this.provider) return [];
@@ -6,7 +6,7 @@ import { C as parseDurationMs, i as loadConfig, l as writeConfigFile, o as readC
6
6
  import { n as formatErrorMessage } from "./errors-Ba_ROWsq.js";
7
7
  import { s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
8
8
  import { t as splitShellArgs } from "./shell-argv-DjSugwgF.js";
9
- import { n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-DeLmBZ39.js";
9
+ import { n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-RThEiATX.js";
10
10
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths } from "./sqlite-CQGamAhm.js";
11
11
  import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
12
12
  import { r as withManager } from "./cli-utils-CCaEbxAz.js";
@@ -224,7 +224,7 @@ async function getMemorySearchManager(params) {
224
224
  const wrapper = new FallbackMemoryManager({
225
225
  primary,
226
226
  fallbackFactory: async () => {
227
- const { MemoryIndexManager } = await import("./manager-DeLmBZ39.js").then((n) => n.t);
227
+ const { MemoryIndexManager } = await import("./manager-RThEiATX.js").then((n) => n.t);
228
228
  return await MemoryIndexManager.get(params);
229
229
  }
230
230
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -237,7 +237,7 @@ async function getMemorySearchManager(params) {
237
237
  }
238
238
  }
239
239
  try {
240
- const { MemoryIndexManager } = await import("./manager-DeLmBZ39.js").then((n) => n.t);
240
+ const { MemoryIndexManager } = await import("./manager-RThEiATX.js").then((n) => n.t);
241
241
  return { manager: await MemoryIndexManager.get(params) };
242
242
  } catch (err) {
243
243
  return {
@@ -9,7 +9,7 @@ import { n as formatErrorMessage } from "./errors-BF3TeRH2.js";
9
9
  import { s as resolveSessionTranscriptsDirForAgent } from "./paths-CyhzMxFA.js";
10
10
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths } from "./sqlite-Dx3J_aSE.js";
11
11
  import { t as splitShellArgs } from "./shell-argv-BbiXH_xm.js";
12
- import { n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-Dv2cMdMo.js";
12
+ import { n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-DrSOlqpk.js";
13
13
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
14
14
  import { r as withManager } from "./cli-utils-DN_hM6ov.js";
15
15
  import { t as formatHelpExamples } from "./help-format-B_-M23wP.js";
@@ -226,7 +226,7 @@ async function getMemorySearchManager(params) {
226
226
  const wrapper = new FallbackMemoryManager({
227
227
  primary,
228
228
  fallbackFactory: async () => {
229
- const { MemoryIndexManager } = await import("./manager-Dv2cMdMo.js").then((n) => n.t);
229
+ const { MemoryIndexManager } = await import("./manager-DrSOlqpk.js").then((n) => n.t);
230
230
  return await MemoryIndexManager.get(params);
231
231
  }
232
232
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -239,7 +239,7 @@ async function getMemorySearchManager(params) {
239
239
  }
240
240
  }
241
241
  try {
242
- const { MemoryIndexManager } = await import("./manager-Dv2cMdMo.js").then((n) => n.t);
242
+ const { MemoryIndexManager } = await import("./manager-DrSOlqpk.js").then((n) => n.t);
243
243
  return { manager: await MemoryIndexManager.get(params) };
244
244
  } catch (err) {
245
245
  return {
@@ -7,7 +7,7 @@ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-C-j9-9wY.j
7
7
  import { i as resolveForwardCompatModel, r as ANTIGRAVITY_OPUS_46_FORWARD_COMPAT_CANDIDATES } from "./model-JL7dHeV5.js";
8
8
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Do3xMEtM.js";
9
9
  import { C as parseDurationMs, i as loadConfig } from "./config-FEczy74G.js";
10
- import { _n as formatRemainingShort, c as runEmbeddedPiAgent, gn as buildAuthHealthSummary, hn as DEFAULT_OAUTH_WARN_MS, ht as describeFailoverError, in as resolveUsageProviderId, mn as maskApiKey, rn as formatUsageWindowSummary, tn as loadProviderUsageSummary } from "./subagent-registry-C-4sylAS.js";
10
+ import { _n as formatRemainingShort, c as runEmbeddedPiAgent, gn as buildAuthHealthSummary, hn as DEFAULT_OAUTH_WARN_MS, ht as describeFailoverError, in as resolveUsageProviderId, mn as maskApiKey, rn as formatUsageWindowSummary, tn as loadProviderUsageSummary } from "./subagent-registry-BmqDNBQA.js";
11
11
  import { i as resolveSessionTranscriptPath, s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
12
12
  import { t as ensureSymiModelsJson } from "./models-config-CBWUmrZr.js";
13
13
  import { n as loadModelCatalog } from "./model-catalog-Bcr-TPWH.js";
@@ -21,7 +21,7 @@ import { n as redactSecrets } from "./format-DVLB9DNB.js";
21
21
  import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-Dv_yFxpM.js";
22
22
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-b0cR3d-c.js";
23
23
  import { n as logConfigUpdated } from "./logging-BGewRZy0.js";
24
- import { a as createVpsAwareOAuthHandlers, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-BQZmtboq.js";
24
+ import { a as createVpsAwareOAuthHandlers, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-B3J64Jh2.js";
25
25
  import path from "node:path";
26
26
  import fs from "node:fs/promises";
27
27
  import { complete, getEnvApiKey, getModel } from "@mariozechner/pi-ai";
@@ -1,7 +1,7 @@
1
1
  import { t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, R as colorize, S as shortenHomePath, z as isRich$1 } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Ct as resolveUsageProviderId, Jt as describeFailoverError, St as formatUsageWindowSummary, bt as loadProviderUsageSummary, fr as maskApiKey, hr as formatRemainingShort, l as runEmbeddedPiAgent, mr as buildAuthHealthSummary, pr as DEFAULT_OAUTH_WARN_MS } from "./reply-IIs7TFkU.js";
4
+ import { Ct as resolveUsageProviderId, Jt as describeFailoverError, St as formatUsageWindowSummary, bt as loadProviderUsageSummary, fr as maskApiKey, hr as formatRemainingShort, l as runEmbeddedPiAgent, mr as buildAuthHealthSummary, pr as DEFAULT_OAUTH_WARN_MS } from "./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";
@@ -62,8 +62,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
62
62
  import "./send-CLbuByS_.js";
63
63
  import { i as resolveForwardCompatModel, r as ANTIGRAVITY_OPUS_46_FORWARD_COMPAT_CANDIDATES } from "./model-DLrVgGDx.js";
64
64
  import "./reply-prefix-CE2YmmsD.js";
65
- import "./memory-cli-CskGK36B.js";
66
- import "./manager-Dv2cMdMo.js";
65
+ import "./memory-cli-Cfckrobf.js";
66
+ import "./manager-DrSOlqpk.js";
67
67
  import "./retry-BoS4e4X_.js";
68
68
  import "./target-errors-7AvoVa10.js";
69
69
  import "./chunk-1dhPX1NK.js";
@@ -110,7 +110,7 @@ import { n as redactSecrets } from "./format-yQZNwAF2.js";
110
110
  import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-Q3CysvId.js";
111
111
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-jkttV9t2.js";
112
112
  import { n as logConfigUpdated } from "./logging-BzzwiKjv.js";
113
- import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-2ZFybTSC.js";
113
+ import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-DsbN2XiG.js";
114
114
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./system-cli-D27oqrYF.js";
115
115
  import path from "node:path";
116
116
  import fs from "node:fs/promises";
@@ -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";
@@ -104,8 +104,8 @@ import "./table-D01d2GuY.js";
104
104
  import "./shared-Dv_yFxpM.js";
105
105
  import "./auth-token-b0cR3d-c.js";
106
106
  import "./logging-BGewRZy0.js";
107
- import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-BQZmtboq.js";
108
- import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-Duhwal5Q.js";
107
+ import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-B3J64Jh2.js";
108
+ import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-DOEuOTkj.js";
109
109
 
110
110
  //#region src/cli/models-cli.ts
111
111
  function runModelsCommand(action) {
@@ -11,8 +11,8 @@ import { t as createClackPrompter } from "./clack-prompter-B7pN13HV.js";
11
11
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DCjpqSGm.js";
12
12
  import { r as isSystemdUserServiceAvailable } from "./systemd-riq8uNJQ.js";
13
13
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
14
- import { r as healthCommand } from "./health-DQ3XEpzi.js";
15
- import { t as runOnboardingWizard } from "./onboarding-_YqH1Wmc.js";
14
+ import { r as healthCommand } from "./health-DBwSpMeO.js";
15
+ import { t as runOnboardingWizard } from "./onboarding-DZr7frCp.js";
16
16
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-jkttV9t2.js";
17
17
  import { n as logConfigUpdated } from "./logging-BzzwiKjv.js";
18
18
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-Ch38-Kbr.js";
@@ -9,8 +9,8 @@ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGate
9
9
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
10
10
  import { r as isSystemdUserServiceAvailable } from "./systemd-DlMdyFDY.js";
11
11
  import { t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
12
- import { r as healthCommand } from "./health-5ZtemgeO.js";
13
- import { t as runOnboardingWizard } from "./onboarding-CIEiNfre.js";
12
+ import { r as healthCommand } from "./health-Dp4Q9nXE.js";
13
+ import { t as runOnboardingWizard } from "./onboarding-BVBk-a0N.js";
14
14
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-b0cR3d-c.js";
15
15
  import { n as logConfigUpdated } from "./logging-BGewRZy0.js";
16
16
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-BKXTgyr4.js";
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { gt as loadSymiPlugins, ht as createPluginLoaderLogger } from "./reply-IIs7TFkU.js";
2
+ import { gt as loadSymiPlugins, ht as createPluginLoaderLogger } from "./reply-BZn2Smlt.js";
3
3
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DCt45XZa.js";
4
4
  import { a as formatChannelSelectionLine, i as formatChannelPrimerLine, s as listChatChannels } from "./registry-Cja8eT7G.js";
5
5
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
@@ -3,7 +3,7 @@ import { E as formatChannelSelectionLine, O as listChatChannels, T as formatChan
3
3
  import { t as formatCliCommand } from "./command-format-BtYOfWxC.js";
4
4
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DjZ7Z1hW.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
6
- import { _ as loadSymiPlugins, g as createPluginLoaderLogger } from "./subagent-registry-C-4sylAS.js";
6
+ import { _ as loadSymiPlugins, g as createPluginLoaderLogger } from "./subagent-registry-BmqDNBQA.js";
7
7
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
8
8
  import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
9
9
  import { r as listChannelPluginCatalogEntries } from "./catalog-DLQFKucJ.js";
@@ -223,7 +223,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
223
223
  const { ensureAuthProfileStore } = await import("./auth-profiles-DKCsH9le.js").then((n) => n.t);
224
224
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-DVcYPG2v.js").then((n) => n.t);
225
225
  const { promptCustomApiConfig } = await import("./onboard-custom-CQL963Ui.js").then((n) => n.r);
226
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-BzuGX2ET.js").then((n) => n.t);
226
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-iZB4sGvl.js").then((n) => n.t);
227
227
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-Dw5jX4S0.js").then((n) => n.i);
228
228
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
229
229
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -276,7 +276,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
276
276
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
277
277
  else {
278
278
  const { listChannelPlugins } = await import("./plugins-CwSlLxM8.js").then((n) => n.i);
279
- const { setupChannels } = await import("./onboard-channels-CCiFhk1N.js").then((n) => n.n);
279
+ const { setupChannels } = await import("./onboard-channels-DqvkgA44.js").then((n) => n.n);
280
280
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
281
281
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
282
282
  allowSignalInstall: true,
@@ -302,7 +302,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
302
302
  mode
303
303
  });
304
304
  await writeConfigFile(nextConfig);
305
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CQ-uVQ6r.js");
305
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-DjWsLgGj.js");
306
306
  const { launchedTui } = await finalizeOnboardingWizard({
307
307
  flow,
308
308
  opts,
@@ -225,7 +225,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
225
225
  const { ensureAuthProfileStore } = await import("./model-selection-BD3oqNY9.js").then((n) => n.dt);
226
226
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-BLzEBA1v.js").then((n) => n.t);
227
227
  const { promptCustomApiConfig } = await import("./onboard-custom-BsOnqwkR.js").then((n) => n.r);
228
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-CkEtpUvW.js").then((n) => n.t);
228
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-DZTkXFl-.js").then((n) => n.t);
229
229
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-DwfhsYsg.js").then((n) => n.i);
230
230
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
231
231
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -278,7 +278,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
278
278
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
279
279
  else {
280
280
  const { listChannelPlugins } = await import("./plugins-DKDeQZF0.js").then((n) => n.i);
281
- const { setupChannels } = await import("./onboard-channels-BbhoZWuh.js").then((n) => n.n);
281
+ const { setupChannels } = await import("./onboard-channels-BJY5FrhC.js").then((n) => n.n);
282
282
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
283
283
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
284
284
  allowSignalInstall: true,
@@ -304,7 +304,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
304
304
  mode
305
305
  });
306
306
  await writeConfigFile(nextConfig);
307
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-DHa8QCea.js");
307
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-ClGudWHI.js");
308
308
  const { launchedTui } = await finalizeOnboardingWizard({
309
309
  flow,
310
310
  opts,
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { h as pathExists, 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 { p as restoreTerminalState } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -62,8 +62,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
62
62
  import "./send-CLbuByS_.js";
63
63
  import "./model-DLrVgGDx.js";
64
64
  import "./reply-prefix-CE2YmmsD.js";
65
- import "./memory-cli-CskGK36B.js";
66
- import "./manager-Dv2cMdMo.js";
65
+ import "./memory-cli-Cfckrobf.js";
66
+ import "./manager-DrSOlqpk.js";
67
67
  import "./retry-BoS4e4X_.js";
68
68
  import "./target-errors-7AvoVa10.js";
69
69
  import "./chunk-1dhPX1NK.js";
@@ -103,16 +103,16 @@ import "./control-service-BpzL2RWM.js";
103
103
  import "./stagger-BUClb97_.js";
104
104
  import "./channel-selection-DuWs0Aak.js";
105
105
  import "./runtime-guard-B37eizu-.js";
106
- import "./program-context-DkHjT7p8.js";
106
+ import "./program-context-Qr4P_3lt.js";
107
107
  import "./note-DeHoW7xO.js";
108
- import { r as installCompletion } from "./completion-cli-Bqdcg5hp.js";
108
+ import { r as installCompletion } from "./completion-cli-CDN_tdvo.js";
109
109
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DCjpqSGm.js";
110
110
  import { r as isSystemdUserServiceAvailable } from "./systemd-riq8uNJQ.js";
111
111
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
112
- import { r as healthCommand } from "./health-DQ3XEpzi.js";
112
+ import { r as healthCommand } from "./health-DBwSpMeO.js";
113
113
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Z947tKLt.js";
114
114
  import { t as formatHealthCheckFailure } from "./health-format-DSwnXZPU.js";
115
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BXZ8aBWN.js";
115
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BG8Cg9mp.js";
116
116
  import { t as runTui } from "./tui-B0PQ2GIR.js";
117
117
  import os from "node:os";
118
118
  import path from "node:path";
@@ -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,18 +99,18 @@ import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-Be24onf1.js";
100
100
  import "./pi-tools.policy-CLyARrZ2.js";
101
101
  import "./note-DDecZomM.js";
102
- import "./register.subclis-b7zkQpHC.js";
103
- import "./command-registry-CYkmIRSj.js";
102
+ import "./register.subclis-Ch7CsZP4.js";
103
+ import "./command-registry-S9Fhf4c1.js";
104
104
  import "./program-context-CqzR_m-7.js";
105
- import { r as installCompletion } from "./completion-cli-Qv8_Vnw3.js";
105
+ import { r as installCompletion } from "./completion-cli-CnLexFdC.js";
106
106
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-B623BwGf.js";
107
107
  import "./runtime-guard-D7waq_Ho.js";
108
108
  import { r as isSystemdUserServiceAvailable } from "./systemd-DlMdyFDY.js";
109
109
  import { t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
110
- import { r as healthCommand } from "./health-5ZtemgeO.js";
110
+ import { r as healthCommand } from "./health-Dp4Q9nXE.js";
111
111
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BseSWee1.js";
112
112
  import { t as formatHealthCheckFailure } from "./health-format-CzgUHmmX.js";
113
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-2pOgfi5X.js";
113
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-AOqgLS4U.js";
114
114
  import { t as runTui } from "./tui-BKfhTxmQ.js";
115
115
  import os from "node:os";
116
116
  import path from "node:path";
@@ -39,7 +39,7 @@ import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.j
39
39
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-DXB7tqWi.js";
40
40
  import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-DzKo5TvV.js";
41
41
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-XlyuyChD.js";
42
- import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-Ctbgi2K4.js";
42
+ import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-M83fJMDC.js";
43
43
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-DRbx2dhW.js";
44
44
  import { n as retryAsync } from "./retry-Cly39XZB.js";
45
45
  import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-Be1SwYlW.js";
@@ -3474,7 +3474,7 @@ async function getMemorySearchManager(params) {
3474
3474
  const wrapper = new FallbackMemoryManager({
3475
3475
  primary,
3476
3476
  fallbackFactory: async () => {
3477
- const { MemoryIndexManager } = await import("./manager-Ctbgi2K4.js").then((n) => n.t);
3477
+ const { MemoryIndexManager } = await import("./manager-M83fJMDC.js").then((n) => n.t);
3478
3478
  return await MemoryIndexManager.get(params);
3479
3479
  }
3480
3480
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -3487,7 +3487,7 @@ async function getMemorySearchManager(params) {
3487
3487
  }
3488
3488
  }
3489
3489
  try {
3490
- const { MemoryIndexManager } = await import("./manager-Ctbgi2K4.js").then((n) => n.t);
3490
+ const { MemoryIndexManager } = await import("./manager-M83fJMDC.js").then((n) => n.t);
3491
3491
  return { manager: await MemoryIndexManager.get(params) };
3492
3492
  } catch (err) {
3493
3493
  return {
@@ -51771,7 +51771,7 @@ function isVoiceChannelType(type) {
51771
51771
  function createDefaultDeps() {
51772
51772
  return {
51773
51773
  sendMessageWhatsApp: async (...args) => {
51774
- const { sendMessageWhatsApp } = await import("./web-Dd-yg3ar.js");
51774
+ const { sendMessageWhatsApp } = await import("./web-DbjazvT5.js");
51775
51775
  return await sendMessageWhatsApp(...args);
51776
51776
  },
51777
51777
  sendMessageTelegram: async (...args) => {
@@ -67053,7 +67053,7 @@ function loadWebLoginQr() {
67053
67053
  return webLoginQrPromise;
67054
67054
  }
67055
67055
  function loadWebChannel() {
67056
- webChannelPromise ??= import("./web-Dd-yg3ar.js");
67056
+ webChannelPromise ??= import("./web-DbjazvT5.js");
67057
67057
  return webChannelPromise;
67058
67058
  }
67059
67059
  function loadWhatsAppActions() {