@symerian/symi 2.7.8 → 2.7.10

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 (197) hide show
  1. package/dist/{acp-cli-DV6gYjcL.js → acp-cli-DwKj-AqM.js} +1 -1
  2. package/dist/{acp-cli-6peVIuMz.js → acp-cli-lkOF8AeX.js} +1 -1
  3. package/dist/{agents-DhWccW-I.js → agents-Qr0BDw_h.js} +5 -5
  4. package/dist/{agents.config-DwibJO90.js → agents.config-D0ih9tP3.js} +1 -1
  5. package/dist/{agents.config-ByNtHnqX.js → agents.config-DIjsIDbS.js} +1 -1
  6. package/dist/{audio-preflight-DIXDvyz5.js → audio-preflight-D0nJ1LEt.js} +4 -4
  7. package/dist/{audit-BZU2PNKl.js → audit-DVUHZrf4.js} +1 -1
  8. package/dist/{audit-CaFXenfE.js → audit-DgAM_dWL.js} +1 -1
  9. package/dist/{auth-choice-Divyczym.js → auth-choice-DhI8MW-5.js} +2 -2
  10. package/dist/{auth-choice-DOQ4Xf6i.js → auth-choice-PdYn-qiM.js} +2 -2
  11. package/dist/{banner-Cyi2LLe-.js → banner-BQhYK_Ag.js} +1 -1
  12. package/dist/{browser-cli-DUcEYbmP.js → browser-cli-CQKRSqbb.js} +2 -2
  13. package/dist/{browser-cli-DM3GvpUm.js → browser-cli-ClxJjz9C.js} +2 -2
  14. package/dist/build-info.json +3 -3
  15. package/dist/bundled/boot-md/handler.js +6 -6
  16. package/dist/bundled/session-memory/handler.js +6 -6
  17. package/dist/{call-CJl0moIs.js → call-BrRWr7Lj.js} +1 -0
  18. package/dist/{call-BHn18ubR.js → call-CVqBgwrx.js} +1 -0
  19. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  20. package/dist/{channel-options-C1sGPky6.js → channel-options-CFwo8sFR.js} +1 -1
  21. package/dist/{channel-options-Bk4m4-d5.js → channel-options-ZHpChVVk.js} +1 -1
  22. package/dist/{channel-web-BKbzqQ7x.js → channel-web-UmRhDGhI.js} +1 -1
  23. package/dist/{channels-cli-CAz8gCcs.js → channels-cli-CRDgQtex.js} +6 -6
  24. package/dist/{channels-cli-CGOOVbGf.js → channels-cli-rzQvsXSw.js} +6 -6
  25. package/dist/{chrome-ROtrXlNs.js → chrome-C08Z0XAa.js} +7 -7
  26. package/dist/cli/daemon-cli.js +1 -1
  27. package/dist/{cli-7JBNvH2_.js → cli-CC9jaj6w.js} +3 -3
  28. package/dist/{cli-C0zcu-AX.js → cli-DN6fX0Xu.js} +3 -3
  29. package/dist/{command-registry-BGMCr778.js → command-registry-CH1cn-Lz.js} +10 -10
  30. package/dist/{completion-cli-EO1xz8q6.js → completion-cli-BgneZQ7D.js} +1 -1
  31. package/dist/{completion-cli-B1wj8Q43.js → completion-cli-CG24rSh8.js} +2 -2
  32. package/dist/{config-cli-B9RnWD0Y.js → config-cli-CXa7oMTX.js} +1 -1
  33. package/dist/{config-cli-QugXKbsV.js → config-cli-DVEOa8P5.js} +1 -1
  34. package/dist/{configure-DOfxxuzV.js → configure-BDxyPzBl.js} +6 -6
  35. package/dist/{configure-C_BD9gNf.js → configure-U2yrALDt.js} +6 -6
  36. package/dist/control-ui/css/style.css +213 -6
  37. package/dist/control-ui/index.html +24 -2
  38. package/dist/control-ui/js/connections.js +113 -5
  39. package/dist/{cron-cli-CH0XOOxj.js → cron-cli--z6DSGhk.js} +2 -2
  40. package/dist/{cron-cli-DBt3Lxhm.js → cron-cli-DZJZ_EvY.js} +2 -2
  41. package/dist/{daemon-cli-BRMcpQb7.js → daemon-cli-B9yneKpO.js} +2 -2
  42. package/dist/{daemon-cli-DZeTm_F2.js → daemon-cli-bwFAShzf.js} +2 -2
  43. package/dist/daemon-cli.js +1 -0
  44. package/dist/{deliver-BC3liFsT.js → deliver-CLZGlRZt.js} +1 -1
  45. package/dist/{devices-cli-DwCYjYyV.js → devices-cli-fVRpoa9z.js} +1 -1
  46. package/dist/{devices-cli-C7aaQeFG.js → devices-cli-oqibXYae.js} +1 -1
  47. package/dist/{doctor-completion-DL-ojJGb.js → doctor-completion-8zSqfzuU.js} +1 -1
  48. package/dist/{doctor-completion-Dm4QxJdc.js → doctor-completion-ny9DIsuL.js} +1 -1
  49. package/dist/entry.js +1 -1
  50. package/dist/{exec-approvals-cli-BcwVEh83.js → exec-approvals-cli-BpOqYXNL.js} +3 -3
  51. package/dist/{exec-approvals-cli-CWpi7F1X.js → exec-approvals-cli-DjGZKQbZ.js} +3 -3
  52. package/dist/extensionAPI.js +1 -1
  53. package/dist/{gateway-cli-DcrPLnL3.js → gateway-cli-CmfMdGhz.js} +14 -13
  54. package/dist/{gateway-cli-DyFOMcg2.js → gateway-cli-Dg0UoYav.js} +14 -13
  55. package/dist/{gateway-rpc-BzkjTxlD.js → gateway-rpc-Bp0KNJtL.js} +1 -1
  56. package/dist/{gateway-rpc-CJPoGX_W.js → gateway-rpc-XT8cFwtz.js} +1 -1
  57. package/dist/{glass-ui-ws-Czh-1YjO.js → glass-ui-ws-Bgpyl16w.js} +10 -10
  58. package/dist/{glass-ui-ws-nxFknxgE.js → glass-ui-ws-aKGCf5hN.js} +10 -10
  59. package/dist/{health-CFd-Q1SH.js → health-Bj8mUXDd.js} +48 -14
  60. package/dist/{health-1ZDwurPU.js → health-D9pKXesa.js} +48 -14
  61. package/dist/{hooks-cli-C4tUO222.js → hooks-cli-5G9JN39f.js} +4 -4
  62. package/dist/{hooks-cli-nKBiWE2v.js → hooks-cli-DtVT3wM_.js} +4 -4
  63. package/dist/{image-C6v6m8Id.js → image-BnO8X_hj.js} +1 -1
  64. package/dist/index.js +8 -8
  65. package/dist/llm-slug-generator.js +6 -6
  66. package/dist/{logs-cli-DWqkAMwy.js → logs-cli-gU7p7zX0.js} +2 -2
  67. package/dist/{logs-cli-q93Kur4b.js → logs-cli-tJPD_Dps.js} +2 -2
  68. package/dist/{models-Cd9pFy1G.js → models-DQthIpnz.js} +3 -3
  69. package/dist/{models-cli-Cxo55E0S.js → models-cli-D8zc0jSg.js} +5 -5
  70. package/dist/{models-cli-CSqy5xI0.js → models-cli-UaHeUaJq.js} +4 -4
  71. package/dist/{nodes-cli-BHVOxukb.js → nodes-cli-6vHqlpLI.js} +2 -2
  72. package/dist/{nodes-cli-seBKfjdd.js → nodes-cli-DxHMNlWq.js} +2 -2
  73. package/dist/{onboard-SceHniST.js → onboard-B7CIWmHb.js} +3 -3
  74. package/dist/{onboard-CVKCZHVL.js → onboard-CYYcbEPR.js} +3 -3
  75. package/dist/{onboard-channels-BI-59zLH.js → onboard-channels-CUUTFx1F.js} +1 -1
  76. package/dist/{onboard-channels-KGMbYFcP.js → onboard-channels-HyGv2y5c.js} +1 -1
  77. package/dist/{onboard-helpers-BV3zKTt_.js → onboard-helpers-7H_XiJt-.js} +1 -1
  78. package/dist/{onboard-helpers-BFyI1sla.js → onboard-helpers-CPSKXD5k.js} +1 -1
  79. package/dist/{onboard-remote-C-EvSvV9.js → onboard-remote-BlCdyTsP.js} +1 -1
  80. package/dist/{onboard-remote-CvtBwhma.js → onboard-remote-DFavRxQ6.js} +1 -1
  81. package/dist/{onboard-skills-C1jrqA-P.js → onboard-skills-CssuFDjw.js} +1 -1
  82. package/dist/{onboard-skills-CWaMGMQi.js → onboard-skills-DVtfVPsB.js} +1 -1
  83. package/dist/{onboarding-Bs3JhONv.js → onboarding-BHnEBXBG.js} +7 -7
  84. package/dist/{onboarding-BPjquWC3.js → onboarding-CchD1d-n.js} +7 -7
  85. package/dist/{onboarding.finalize-lAwIuZFE.js → onboarding.finalize-BZ6tQzoC.js} +8 -8
  86. package/dist/{onboarding.finalize-Dbx89qG2.js → onboarding.finalize-CnzLAjla.js} +9 -9
  87. package/dist/{onboarding.gateway-config-Btb5PaGv.js → onboarding.gateway-config-TM8ERKyn.js} +2 -2
  88. package/dist/{onboarding.gateway-config-gMhAsXgO.js → onboarding.gateway-config-vGTQDqA6.js} +2 -2
  89. package/dist/{pi-embedded-CG4P3hy3.js → pi-embedded-BIATvD3R.js} +3 -2
  90. package/dist/{pi-embedded-helpers-BUNbSNWw.js → pi-embedded-helpers-DcN8GHTt.js} +4 -4
  91. package/dist/{plugin-registry-DSrgdZKM.js → plugin-registry-7MeuYUTG.js} +1 -1
  92. package/dist/{plugin-registry-C4aoDdOB.js → plugin-registry-Dx8MaVaX.js} +1 -1
  93. package/dist/plugin-sdk/{channel-web-CsZ6epLT.js → channel-web-C6_r-2VI.js} +1 -1
  94. package/dist/plugin-sdk/index.js +2 -2
  95. package/dist/plugin-sdk/{reply-Rv3jE0Rs.js → reply-CIDYJYie.js} +3 -2
  96. package/dist/plugin-sdk/{web-D6R4__wu.js → web-CHKraWl6.js} +2 -2
  97. package/dist/{plugins-cli-DJM_xxIg.js → plugins-cli-bblxpPhT.js} +4 -4
  98. package/dist/{plugins-cli-CSwcV2M6.js → plugins-cli-oatWFlGr.js} +4 -4
  99. package/dist/{program-CtX7o1VN.js → program-cj70FFee.js} +9 -9
  100. package/dist/{program-context-B2HPYMcn.js → program-context-DSkr5IEn.js} +28 -28
  101. package/dist/{prompt-select-styled-5a7_K1sn.js → prompt-select-styled-C9MQv67C.js} +6 -6
  102. package/dist/{prompt-select-styled-Cs79EjHm.js → prompt-select-styled-DxtxwQmE.js} +6 -6
  103. package/dist/{provider-auth-helpers-DOa1Rc3D.js → provider-auth-helpers-CezJXPrZ.js} +1 -1
  104. package/dist/{provider-auth-helpers-fWAoFIwZ.js → provider-auth-helpers-D9BOiQMP.js} +1 -1
  105. package/dist/{push-apns-HnaGVJwW.js → push-apns-CL2MBhWP.js} +1 -1
  106. package/dist/{push-apns-Dnd_jTU-.js → push-apns-DUWtWoB-.js} +1 -1
  107. package/dist/{pw-ai-BLrC_W1X.js → pw-ai-B476LzSK.js} +1 -1
  108. package/dist/{register.agent-CaputGWT.js → register.agent-B-v1ixge.js} +8 -8
  109. package/dist/{register.agent-lqb5eXZs.js → register.agent-Dms0oymW.js} +7 -7
  110. package/dist/{register.configure-C3AQZaAa.js → register.configure-BP_a-E21.js} +10 -10
  111. package/dist/{register.configure-C0KBR4e6.js → register.configure-DcwAboPG.js} +10 -10
  112. package/dist/{register.maintenance-DLY3bZTm.js → register.maintenance-C4tn55a5.js} +9 -9
  113. package/dist/{register.maintenance-c8Ig4nYO.js → register.maintenance-D_1D-fbi.js} +10 -10
  114. package/dist/{register.message-CUclEFp5.js → register.message-Csn-WBH0.js} +4 -4
  115. package/dist/{register.message-Bexo7F0u.js → register.message-FsBEsQeD.js} +4 -4
  116. package/dist/{register.onboard-CVmFRJ__.js → register.onboard-CHpUtNWT.js} +6 -6
  117. package/dist/{register.onboard-DpeqS3GT.js → register.onboard-OXqQs97I.js} +6 -6
  118. package/dist/{register.setup-DogqYYN7.js → register.setup-C8FuEUO_.js} +6 -6
  119. package/dist/{register.setup-NiDBVZE2.js → register.setup-DbPNjezQ.js} +6 -6
  120. package/dist/{register.status-health-sessions-C5noW7M3.js → register.status-health-sessions-BzB_lPbR.js} +6 -6
  121. package/dist/{register.status-health-sessions-CTErhiR9.js → register.status-health-sessions-c8vq6An_.js} +6 -6
  122. package/dist/{register.subclis-E_1XOkdf.js → register.subclis-Dt0Az0gT.js} +19 -19
  123. package/dist/{reply-DAMo5JhO.js → reply-B0azB7WR.js} +4 -4
  124. package/dist/{rpc-IXmOgc1l.js → rpc-CHb_JvbM.js} +1 -1
  125. package/dist/{rpc-k8pnK8TE.js → rpc-Cog-Z1rx.js} +1 -1
  126. package/dist/{run-main-Cv91hLSK.js → run-main-D-OIb2fr.js} +16 -16
  127. package/dist/{runner-QX0Z6K1w.js → runner-D5nFF9E6.js} +1 -1
  128. package/dist/{security-cli-Cxmb5Rpv.js → security-cli-B5s73Le2.js} +2 -2
  129. package/dist/{security-cli-BsStEfWU.js → security-cli-CzWHkrqD.js} +2 -2
  130. package/dist/{server-methods-CXL1Nrbp.js → server-methods-Dph_r18S.js} +68 -10
  131. package/dist/{server-methods-C_rhjm5p.js → server-methods-b55BoGQD.js} +68 -10
  132. package/dist/{server-node-events-B_UZBZn_.js → server-node-events-AVxH5dXs.js} +4 -4
  133. package/dist/{server-node-events-CdUVoXvg.js → server-node-events-Ba9K9DB9.js} +4 -4
  134. package/dist/{status-CzI_lZth.js → status-Bbss-JjB.js} +5 -5
  135. package/dist/{status-DQQ-w3eF.js → status-Cg3Vn5FV.js} +5 -5
  136. package/dist/{status-Ds4oB9tJ.js → status-CpWkGj5h.js} +1 -1
  137. package/dist/{status-Drn5xFtL.js → status-DNxAYvxM.js} +1 -1
  138. package/dist/{subagent-registry-CfoRc8ng.js → subagent-registry-CsYeP8wc.js} +4 -4
  139. package/dist/{system-cli-DnlgTnqh.js → system-cli-D3CVv1ab.js} +2 -2
  140. package/dist/{system-cli-CQNazJoF.js → system-cli-rpyy5jcw.js} +2 -2
  141. package/dist/{tui-CXTwJqpz.js → tui-DfPeXwah.js} +1 -1
  142. package/dist/{tui-DTW81r9y.js → tui-LZPdrFmK.js} +1 -1
  143. package/dist/{tui-cli-KiaTeKr0.js → tui-cli-Bm3TJgXf.js} +2 -2
  144. package/dist/{tui-cli-DGmt1Xs0.js → tui-cli-DFXZ7r1F.js} +2 -2
  145. package/dist/{unified-runner-DweFv8Vx.js → unified-runner-BojeuKIk.js} +17 -16
  146. package/dist/{update-cli-Ba4La00X.js → update-cli-DO0A0UCN.js} +10 -10
  147. package/dist/{update-cli-BkJZPKh8.js → update-cli-Dh_GPhI4.js} +11 -11
  148. package/dist/{update-runner-w3GO-spo.js → update-runner-BE6kDMsw.js} +1 -1
  149. package/dist/{update-runner-CqWSrJXt.js → update-runner-Cv6hDgKV.js} +1 -1
  150. package/dist/{web-0cG6_ynp.js → web-BOv3xM7W.js} +4 -4
  151. package/dist/{web-DHAEIalz.js → web-CYf5I3aU.js} +3 -3
  152. package/dist/{web-9rrJ5lZr.js → web-Dxkxcp7P.js} +6 -6
  153. package/dist/{web-Cx3SfQiX.js → web-Ifwqx6Dt.js} +1 -1
  154. package/docs/connections/email.md +143 -0
  155. package/docs/connections/msteams.md +80 -0
  156. package/docs/connections/slack.md +91 -0
  157. package/extensions/bluebubbles/package.json +1 -1
  158. package/extensions/copilot-proxy/package.json +1 -1
  159. package/extensions/diagnostics-otel/package.json +1 -1
  160. package/extensions/discord/package.json +1 -1
  161. package/extensions/feishu/package.json +1 -1
  162. package/extensions/google-antigravity-auth/package.json +1 -1
  163. package/extensions/google-gemini-cli-auth/package.json +1 -1
  164. package/extensions/googlechat/package.json +1 -1
  165. package/extensions/imessage/package.json +1 -1
  166. package/extensions/irc/package.json +1 -1
  167. package/extensions/learning-loop/package.json +1 -1
  168. package/extensions/line/package.json +1 -1
  169. package/extensions/llm-task/package.json +1 -1
  170. package/extensions/matrix/CHANGELOG.md +12 -0
  171. package/extensions/matrix/package.json +1 -1
  172. package/extensions/mattermost/package.json +1 -1
  173. package/extensions/memory-core/package.json +1 -1
  174. package/extensions/memory-lancedb/package.json +1 -1
  175. package/extensions/minimax-portal-auth/package.json +1 -1
  176. package/extensions/msteams/CHANGELOG.md +12 -0
  177. package/extensions/msteams/package.json +1 -1
  178. package/extensions/nextcloud-talk/package.json +1 -1
  179. package/extensions/nostr/CHANGELOG.md +12 -0
  180. package/extensions/nostr/package.json +1 -1
  181. package/extensions/open-prose/package.json +1 -1
  182. package/extensions/outlook/package.json +1 -1
  183. package/extensions/pipeline/package.json +1 -1
  184. package/extensions/signal/package.json +1 -1
  185. package/extensions/slack/package.json +1 -1
  186. package/extensions/telegram/package.json +1 -1
  187. package/extensions/tlon/package.json +1 -1
  188. package/extensions/twitch/CHANGELOG.md +12 -0
  189. package/extensions/twitch/package.json +1 -1
  190. package/extensions/voice-call/CHANGELOG.md +12 -0
  191. package/extensions/voice-call/package.json +1 -1
  192. package/extensions/whatsapp/package.json +1 -1
  193. package/extensions/zalo/CHANGELOG.md +12 -0
  194. package/extensions/zalo/package.json +1 -1
  195. package/extensions/zalouser/CHANGELOG.md +12 -0
  196. package/extensions/zalouser/package.json +1 -1
  197. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { B as theme, k as info, l as escapeRegExp, z as isRich } from "./utils-B-0b9bGM.js";
2
- import { At as resolveHeartbeatDeliveryTarget, Cr as peekSystemEventEntries, Vn as resolveUserTimezone, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ct as setHeartbeatWakeHandler, dr as resolveHeartbeatPrompt$1, fr as stripHeartbeatToken, jt as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatReasonKind, nr as getQueueSize, r as appendCronStyleCurrentTimeLine, sr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as isHeartbeatContentEffectivelyEmpty } from "./reply-DAMo5JhO.js";
2
+ import { At as resolveHeartbeatDeliveryTarget, Cr as peekSystemEventEntries, Vn as resolveUserTimezone, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ct as setHeartbeatWakeHandler, dr as resolveHeartbeatPrompt$1, fr as stripHeartbeatToken, jt as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatReasonKind, nr as getQueueSize, r as appendCronStyleCurrentTimeLine, sr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as isHeartbeatContentEffectivelyEmpty } from "./reply-B0azB7WR.js";
3
3
  import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as normalizeAgentId } from "./session-key-DCt45XZa.js";
4
4
  import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
5
5
  import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-CgUHAtCo.js";
@@ -13,7 +13,7 @@ import { c as resolveStorePath, n as resolveSessionFilePath } from "./paths-Cyhz
13
13
  import { r as SYMIPULSE_TOKEN } from "./tokens-BuceUQDl.js";
14
14
  import { t as deliverOutboundPayloads } from "./deliver-lG9ITE8w.js";
15
15
  import { o as resolveEffectiveMessagesConfig } from "./reply-prefix-CE2YmmsD.js";
16
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BHn18ubR.js";
16
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-CVqBgwrx.js";
17
17
  import { n as withProgress } from "./progress-jIePzvGA.js";
18
18
  import { a as resolveIndicatorType, n as emitHeartbeatEvent, o as resolveHeartbeatReplyPayload, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-ChEo5Zvk.js";
19
19
  import { t as resolveChannelDefaultAccountId } from "./helpers-DnjQ73f_.js";
@@ -272,6 +272,33 @@ function resolveHeartbeatSession(cfg, agentId, heartbeat, forcedSessionKey) {
272
272
  entry: mainEntry
273
273
  };
274
274
  }
275
+ /**
276
+ * Resolve the session key the agent loop runs against during a Symipulse tick.
277
+ *
278
+ * This is deliberately split from the "anchor" session key returned by
279
+ * resolveHeartbeatSession(). The anchor is the user's main session — it carries
280
+ * delivery-target tracking (target: "last"), dedupe state (lastHeartbeatText),
281
+ * and channel context. The **runtime** session is where the agent's own
282
+ * transcript lives during the pulse.
283
+ *
284
+ * Running the pulse against an ephemeral `agent:<id>:symipulse` session prevents
285
+ * the symighost-style runaway-loop failure mode: every tick re-prefilling a
286
+ * growing user-conversation transcript against a heavyweight backend. With this
287
+ * split, the pulse transcript stays pulse-sized; the user's main session is
288
+ * never touched by the pulse loop.
289
+ *
290
+ * Two opt-outs keep legacy semantics intact:
291
+ * - `opts.sessionKey` forced by the caller (wake events)
292
+ * - `heartbeat.session` in config
293
+ * Both cause the pulse to run against the anchor key, preserving any deployment
294
+ * that deliberately wires the pulse into a specific session.
295
+ */
296
+ function resolveSymipulseRuntimeSessionKey(params) {
297
+ if (params.forcedSessionKey?.trim()) return params.anchorSessionKey;
298
+ if (params.heartbeat?.session?.trim()) return params.anchorSessionKey;
299
+ if ((params.cfg.session?.scope ?? "per-sender") === "global") return "symipulse";
300
+ return `agent:${normalizeAgentId(params.agentId)}:symipulse`;
301
+ }
275
302
  function resolveHeartbeatReasoningPayloads(replyResult) {
276
303
  return (Array.isArray(replyResult) ? replyResult : replyResult ? [replyResult] : []).filter((payload) => {
277
304
  return (typeof payload.text === "string" ? payload.text : "").trimStart().startsWith("Reasoning:");
@@ -431,9 +458,16 @@ async function runHeartbeatOnce(opts) {
431
458
  reason: preflight.skipReason
432
459
  };
433
460
  }
434
- const { entry, sessionKey, storePath } = preflight.session;
461
+ const { entry, sessionKey, storePath, store } = preflight.session;
435
462
  const { isCronEventReason, pendingEventEntries } = preflight;
436
- const previousUpdatedAt = entry?.updatedAt;
463
+ const runtimeSessionKey = resolveSymipulseRuntimeSessionKey({
464
+ cfg,
465
+ agentId,
466
+ anchorSessionKey: sessionKey,
467
+ heartbeat,
468
+ forcedSessionKey: opts.sessionKey
469
+ });
470
+ const previousRuntimeUpdatedAt = store[runtimeSessionKey]?.updatedAt;
437
471
  const delivery = resolveHeartbeatDeliveryTarget({
438
472
  cfg,
439
473
  entry,
@@ -476,7 +510,7 @@ async function runHeartbeatOnce(opts) {
476
510
  From: sender,
477
511
  To: sender,
478
512
  Provider: hasExecCompletion ? "exec-event" : hasCronEvents ? "cron-event" : "heartbeat",
479
- SessionKey: sessionKey
513
+ SessionKey: runtimeSessionKey
480
514
  };
481
515
  if (!visibility.showAlerts && !visibility.showOk && !visibility.useIndicator) {
482
516
  emitHeartbeatEvent({
@@ -518,7 +552,7 @@ async function runHeartbeatOnce(opts) {
518
552
  try {
519
553
  const transcriptState = await captureTranscriptState({
520
554
  storePath,
521
- sessionKey,
555
+ sessionKey: runtimeSessionKey,
522
556
  agentId
523
557
  });
524
558
  const heartbeatModelOverride = heartbeat?.model?.trim() || void 0;
@@ -536,8 +570,8 @@ async function runHeartbeatOnce(opts) {
536
570
  if (!replyPayload || !replyPayload.text && !replyPayload.mediaUrl && !replyPayload.mediaUrls?.length) {
537
571
  await restoreHeartbeatUpdatedAt({
538
572
  storePath,
539
- sessionKey,
540
- updatedAt: previousUpdatedAt
573
+ sessionKey: runtimeSessionKey,
574
+ updatedAt: previousRuntimeUpdatedAt
541
575
  });
542
576
  await pruneHeartbeatTranscript(transcriptState);
543
577
  const okSent = await maybeSendHeartbeatOk();
@@ -565,8 +599,8 @@ async function runHeartbeatOnce(opts) {
565
599
  if (shouldSkipMain && reasoningPayloads.length === 0) {
566
600
  await restoreHeartbeatUpdatedAt({
567
601
  storePath,
568
- sessionKey,
569
- updatedAt: previousUpdatedAt
602
+ sessionKey: runtimeSessionKey,
603
+ updatedAt: previousRuntimeUpdatedAt
570
604
  });
571
605
  await pruneHeartbeatTranscript(transcriptState);
572
606
  const okSent = await maybeSendHeartbeatOk();
@@ -590,8 +624,8 @@ async function runHeartbeatOnce(opts) {
590
624
  if (!shouldSkipMain && !mediaUrls.length && Boolean(prevHeartbeatText.trim()) && normalized.text.trim() === prevHeartbeatText.trim() && typeof prevHeartbeatAt === "number" && startedAt - prevHeartbeatAt < 1440 * 60 * 1e3) {
591
625
  await restoreHeartbeatUpdatedAt({
592
626
  storePath,
593
- sessionKey,
594
- updatedAt: previousUpdatedAt
627
+ sessionKey: runtimeSessionKey,
628
+ updatedAt: previousRuntimeUpdatedAt
595
629
  });
596
630
  await pruneHeartbeatTranscript(transcriptState);
597
631
  emitHeartbeatEvent({
@@ -626,8 +660,8 @@ async function runHeartbeatOnce(opts) {
626
660
  if (!visibility.showAlerts) {
627
661
  await restoreHeartbeatUpdatedAt({
628
662
  storePath,
629
- sessionKey,
630
- updatedAt: previousUpdatedAt
663
+ sessionKey: runtimeSessionKey,
664
+ updatedAt: previousRuntimeUpdatedAt
631
665
  });
632
666
  emitHeartbeatEvent({
633
667
  status: "skipped",
@@ -3,8 +3,8 @@ import { Dt as theme, Et as isRich, X as escapeRegExp, _ as defaultRuntime, gt a
3
3
  import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as normalizeAgentId } from "./session-key-DjZ7Z1hW.js";
4
4
  import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-D-jRCY0d.js";
5
5
  import { C as parseDurationMs, i as loadConfig } from "./config-DXt3pc08.js";
6
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-CJl0moIs.js";
7
- import { Jn as resolveUserTimezone, K as appendCronStyleCurrentTimeLine, Tn as peekSystemEventEntries, W as getReplyFromConfig, _r as isHeartbeatContentEffectivelyEmpty, dn as requestHeartbeatNow, fn as setHeartbeatWakeHandler, gr as DEFAULT_HEARTBEAT_EVERY, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lr as getQueueSize, lt as resolveHeartbeatDeliveryTarget, mr as CommandLane, pn as resolveHeartbeatReasonKind, ut as resolveHeartbeatSenderContext, vr as resolveHeartbeatPrompt$1, yr as stripHeartbeatToken } from "./subagent-registry-CfoRc8ng.js";
6
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BrRWr7Lj.js";
7
+ import { Jn as resolveUserTimezone, K as appendCronStyleCurrentTimeLine, Tn as peekSystemEventEntries, W as getReplyFromConfig, _r as isHeartbeatContentEffectivelyEmpty, dn as requestHeartbeatNow, fn as setHeartbeatWakeHandler, gr as DEFAULT_HEARTBEAT_EVERY, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lr as getQueueSize, lt as resolveHeartbeatDeliveryTarget, mr as CommandLane, pn as resolveHeartbeatReasonKind, ut as resolveHeartbeatSenderContext, vr as resolveHeartbeatPrompt$1, yr as stripHeartbeatToken } from "./subagent-registry-CsYeP8wc.js";
8
8
  import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, d as updateSessionStore, l as saveSessionStore, o as loadSessionStore } from "./sessions-BPD85pWA.js";
9
9
  import { r as SYMIPULSE_TOKEN } from "./tokens-Csntmwwn.js";
10
10
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
@@ -271,6 +271,33 @@ function resolveHeartbeatSession(cfg, agentId, heartbeat, forcedSessionKey) {
271
271
  entry: mainEntry
272
272
  };
273
273
  }
274
+ /**
275
+ * Resolve the session key the agent loop runs against during a Symipulse tick.
276
+ *
277
+ * This is deliberately split from the "anchor" session key returned by
278
+ * resolveHeartbeatSession(). The anchor is the user's main session — it carries
279
+ * delivery-target tracking (target: "last"), dedupe state (lastHeartbeatText),
280
+ * and channel context. The **runtime** session is where the agent's own
281
+ * transcript lives during the pulse.
282
+ *
283
+ * Running the pulse against an ephemeral `agent:<id>:symipulse` session prevents
284
+ * the symighost-style runaway-loop failure mode: every tick re-prefilling a
285
+ * growing user-conversation transcript against a heavyweight backend. With this
286
+ * split, the pulse transcript stays pulse-sized; the user's main session is
287
+ * never touched by the pulse loop.
288
+ *
289
+ * Two opt-outs keep legacy semantics intact:
290
+ * - `opts.sessionKey` forced by the caller (wake events)
291
+ * - `heartbeat.session` in config
292
+ * Both cause the pulse to run against the anchor key, preserving any deployment
293
+ * that deliberately wires the pulse into a specific session.
294
+ */
295
+ function resolveSymipulseRuntimeSessionKey(params) {
296
+ if (params.forcedSessionKey?.trim()) return params.anchorSessionKey;
297
+ if (params.heartbeat?.session?.trim()) return params.anchorSessionKey;
298
+ if ((params.cfg.session?.scope ?? "per-sender") === "global") return "symipulse";
299
+ return `agent:${normalizeAgentId(params.agentId)}:symipulse`;
300
+ }
274
301
  function resolveHeartbeatReasoningPayloads(replyResult) {
275
302
  return (Array.isArray(replyResult) ? replyResult : replyResult ? [replyResult] : []).filter((payload) => {
276
303
  return (typeof payload.text === "string" ? payload.text : "").trimStart().startsWith("Reasoning:");
@@ -430,9 +457,16 @@ async function runHeartbeatOnce(opts) {
430
457
  reason: preflight.skipReason
431
458
  };
432
459
  }
433
- const { entry, sessionKey, storePath } = preflight.session;
460
+ const { entry, sessionKey, storePath, store } = preflight.session;
434
461
  const { isCronEventReason, pendingEventEntries } = preflight;
435
- const previousUpdatedAt = entry?.updatedAt;
462
+ const runtimeSessionKey = resolveSymipulseRuntimeSessionKey({
463
+ cfg,
464
+ agentId,
465
+ anchorSessionKey: sessionKey,
466
+ heartbeat,
467
+ forcedSessionKey: opts.sessionKey
468
+ });
469
+ const previousRuntimeUpdatedAt = store[runtimeSessionKey]?.updatedAt;
436
470
  const delivery = resolveHeartbeatDeliveryTarget({
437
471
  cfg,
438
472
  entry,
@@ -475,7 +509,7 @@ async function runHeartbeatOnce(opts) {
475
509
  From: sender,
476
510
  To: sender,
477
511
  Provider: hasExecCompletion ? "exec-event" : hasCronEvents ? "cron-event" : "heartbeat",
478
- SessionKey: sessionKey
512
+ SessionKey: runtimeSessionKey
479
513
  };
480
514
  if (!visibility.showAlerts && !visibility.showOk && !visibility.useIndicator) {
481
515
  emitHeartbeatEvent({
@@ -517,7 +551,7 @@ async function runHeartbeatOnce(opts) {
517
551
  try {
518
552
  const transcriptState = await captureTranscriptState({
519
553
  storePath,
520
- sessionKey,
554
+ sessionKey: runtimeSessionKey,
521
555
  agentId
522
556
  });
523
557
  const heartbeatModelOverride = heartbeat?.model?.trim() || void 0;
@@ -535,8 +569,8 @@ async function runHeartbeatOnce(opts) {
535
569
  if (!replyPayload || !replyPayload.text && !replyPayload.mediaUrl && !replyPayload.mediaUrls?.length) {
536
570
  await restoreHeartbeatUpdatedAt({
537
571
  storePath,
538
- sessionKey,
539
- updatedAt: previousUpdatedAt
572
+ sessionKey: runtimeSessionKey,
573
+ updatedAt: previousRuntimeUpdatedAt
540
574
  });
541
575
  await pruneHeartbeatTranscript(transcriptState);
542
576
  const okSent = await maybeSendHeartbeatOk();
@@ -564,8 +598,8 @@ async function runHeartbeatOnce(opts) {
564
598
  if (shouldSkipMain && reasoningPayloads.length === 0) {
565
599
  await restoreHeartbeatUpdatedAt({
566
600
  storePath,
567
- sessionKey,
568
- updatedAt: previousUpdatedAt
601
+ sessionKey: runtimeSessionKey,
602
+ updatedAt: previousRuntimeUpdatedAt
569
603
  });
570
604
  await pruneHeartbeatTranscript(transcriptState);
571
605
  const okSent = await maybeSendHeartbeatOk();
@@ -589,8 +623,8 @@ async function runHeartbeatOnce(opts) {
589
623
  if (!shouldSkipMain && !mediaUrls.length && Boolean(prevHeartbeatText.trim()) && normalized.text.trim() === prevHeartbeatText.trim() && typeof prevHeartbeatAt === "number" && startedAt - prevHeartbeatAt < 1440 * 60 * 1e3) {
590
624
  await restoreHeartbeatUpdatedAt({
591
625
  storePath,
592
- sessionKey,
593
- updatedAt: previousUpdatedAt
626
+ sessionKey: runtimeSessionKey,
627
+ updatedAt: previousRuntimeUpdatedAt
594
628
  });
595
629
  await pruneHeartbeatTranscript(transcriptState);
596
630
  emitHeartbeatEvent({
@@ -625,8 +659,8 @@ async function runHeartbeatOnce(opts) {
625
659
  if (!visibility.showAlerts) {
626
660
  await restoreHeartbeatUpdatedAt({
627
661
  storePath,
628
- sessionKey,
629
- updatedAt: previousUpdatedAt
662
+ sessionKey: runtimeSessionKey,
663
+ updatedAt: previousRuntimeUpdatedAt
630
664
  });
631
665
  emitHeartbeatEvent({
632
666
  status: "skipped",
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, S as shortenHomePath, t as CONFIG_DIR, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-DAMo5JhO.js";
4
+ import "./reply-B0azB7WR.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -74,7 +74,7 @@ import "./render-CXDO_kgw.js";
74
74
  import "./commands-BNLCWX6e.js";
75
75
  import "./commands-registry-B6cf3Cmq.js";
76
76
  import "./client-B8xmq-Pw.js";
77
- import "./call-BHn18ubR.js";
77
+ import "./call-CVqBgwrx.js";
78
78
  import "./pairing-token-CX3NN_qj.js";
79
79
  import "./channel-activity-BOiuJS3t.js";
80
80
  import "./fetch-DTNGXEzX.js";
@@ -95,7 +95,7 @@ import "./session-cost-usage-BXAI7CNH.js";
95
95
  import "./outbound-attachment-Bw-c5Cdp.js";
96
96
  import "./delivery-queue-CAxX6nGq.js";
97
97
  import "./send-CBcCKe5w.js";
98
- import "./onboard-helpers-BFyI1sla.js";
98
+ import "./onboard-helpers-CPSKXD5k.js";
99
99
  import "./prompt-style-CnkMpSXt.js";
100
100
  import "./pairing-labels-BScqzHEx.js";
101
101
  import "./exec-approvals-DXM2pQYL.js";
@@ -109,7 +109,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
109
109
  import { t as renderTable } from "./table-BKlH0YlA.js";
110
110
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-B4H-2N8y.js";
111
111
  import { t as buildWorkspaceHookStatus } from "./hooks-status-oUebZVnL.js";
112
- import { t as buildPluginStatusReport } from "./status-Ds4oB9tJ.js";
112
+ import { t as buildPluginStatusReport } from "./status-CpWkGj5h.js";
113
113
  import fs from "node:fs";
114
114
  import path from "node:path";
115
115
  import fs$1 from "node:fs/promises";
@@ -13,10 +13,10 @@ import "./skills-D_oCiaQn.js";
13
13
  import "./manifest-registry-D5bnO5uA.js";
14
14
  import { i as loadConfig, l as writeConfigFile } from "./config-DXt3pc08.js";
15
15
  import "./client-qUlxXXVJ.js";
16
- import "./call-CJl0moIs.js";
16
+ import "./call-BrRWr7Lj.js";
17
17
  import "./message-channel-C9dERklz.js";
18
18
  import "./pairing-token-Byh6drgn.js";
19
- import "./subagent-registry-CfoRc8ng.js";
19
+ import "./subagent-registry-CsYeP8wc.js";
20
20
  import "./sessions-BPD85pWA.js";
21
21
  import "./tokens-Csntmwwn.js";
22
22
  import "./plugins-CwSlLxM8.js";
@@ -96,7 +96,7 @@ import "./cli-utils-CCaEbxAz.js";
96
96
  import "./help-format-B0pWGnZs.js";
97
97
  import "./progress-BAHiAaDW.js";
98
98
  import "./replies-CsUBFXf6.js";
99
- import "./onboard-helpers-BV3zKTt_.js";
99
+ import "./onboard-helpers-7H_XiJt-.js";
100
100
  import "./prompt-style-DwCXob2h.js";
101
101
  import "./pairing-labels-DwceB1dG.js";
102
102
  import "./pi-tools.policy-DOVQ8dDx.js";
@@ -105,7 +105,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
105
105
  import { t as renderTable } from "./table-D01d2GuY.js";
106
106
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-B51TF6q3.js";
107
107
  import { t as buildWorkspaceHookStatus } from "./hooks-status-CEoLdlyb.js";
108
- import { t as buildPluginStatusReport } from "./status-Drn5xFtL.js";
108
+ import { t as buildPluginStatusReport } from "./status-DNxAYvxM.js";
109
109
  import path from "node:path";
110
110
  import fs from "node:fs";
111
111
  import fs$1 from "node:fs/promises";
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { R as shortenHomeInString, k as isRecord } from "./registry-DYq1AYOv.js";
3
3
  import { L as getApiKeyForModel, M as resolveImplicitBedrockProvider, N as resolveImplicitCopilotProvider, P as resolveImplicitProviders, W as normalizeSecretInput, et as resolveSymiAgentDir, j as normalizeProviders, z as requireApiKey } from "./auth-profiles-C2vj6htZ.js";
4
- import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-BUNbSNWw.js";
4
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-DcN8GHTt.js";
5
5
  import { n as loadConfig } from "./config-BkZ9HOKT.js";
6
6
  import { n as redactToolDetail } from "./redact-BDMXB06K.js";
7
7
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import "./paths-Cqn-zk3M.js";
3
3
  import { B as theme, P as setVerbose, T as toWhatsappJid, l as escapeRegExp, m as normalizeE164, n as assertWebChannel, z as isRich } from "./utils-B-0b9bGM.js";
4
4
  import "./thinking-EAliFiVK.js";
5
- import { Lt as createDefaultDeps, bt as resolveCommitHash, t as getReplyFromConfig } from "./reply-DAMo5JhO.js";
5
+ import { Lt as createDefaultDeps, bt as resolveCommitHash, t as getReplyFromConfig } from "./reply-B0azB7WR.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime, r as enableConsoleCapture, u as visibleWidth } from "./subsystem-D9vIQve0.js";
8
8
  import { n as runExec, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
@@ -74,7 +74,7 @@ import "./render-CXDO_kgw.js";
74
74
  import "./commands-BNLCWX6e.js";
75
75
  import "./commands-registry-B6cf3Cmq.js";
76
76
  import "./client-B8xmq-Pw.js";
77
- import "./call-BHn18ubR.js";
77
+ import "./call-CVqBgwrx.js";
78
78
  import "./pairing-token-CX3NN_qj.js";
79
79
  import "./channel-activity-BOiuJS3t.js";
80
80
  import "./fetch-DTNGXEzX.js";
@@ -95,7 +95,7 @@ import "./session-cost-usage-BXAI7CNH.js";
95
95
  import "./outbound-attachment-Bw-c5Cdp.js";
96
96
  import "./delivery-queue-CAxX6nGq.js";
97
97
  import "./send-CBcCKe5w.js";
98
- import "./onboard-helpers-BFyI1sla.js";
98
+ import "./onboard-helpers-CPSKXD5k.js";
99
99
  import "./prompt-style-CnkMpSXt.js";
100
100
  import "./pairing-labels-BScqzHEx.js";
101
101
  import "./exec-approvals-DXM2pQYL.js";
@@ -104,7 +104,7 @@ import "./pi-tools.policy-BpN-v9bT.js";
104
104
  import "./control-service-D0IdaeI8.js";
105
105
  import "./stagger-CvFURHzt.js";
106
106
  import "./channel-selection-V2xDgw16.js";
107
- import { r as waitForever, t as monitorWebChannel } from "./channel-web-BKbzqQ7x.js";
107
+ import { r as waitForever, t as monitorWebChannel } from "./channel-web-UmRhDGhI.js";
108
108
  import "./outbound-XakUc977.js";
109
109
  import "./session-BuAvI2u-.js";
110
110
  import "./login-DiorUpLk.js";
@@ -113,10 +113,10 @@ import { t as ensureSymiCliOnPath } from "./path-env-BaQ2E7uD.js";
113
113
  import { t as assertSupportedRuntime } from "./runtime-guard-Dik20CVM.js";
114
114
  import "./ports-DtW62rqS.js";
115
115
  import { a as hasFlag, i as getVerboseFlag, n as getCommandPath, o as hasHelpOrVersion, s as hasRootVersionAlias } from "./argv-B20UI_hB.js";
116
- import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-B2HPYMcn.js";
116
+ import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-DSkr5IEn.js";
117
117
  import "./catalog-DX1l43Ru.js";
118
- import "./plugin-registry-C4aoDdOB.js";
119
- import { n as resolveCliChannelOptions } from "./channel-options-C1sGPky6.js";
118
+ import "./plugin-registry-Dx8MaVaX.js";
119
+ import { n as resolveCliChannelOptions } from "./channel-options-CFwo8sFR.js";
120
120
  import process$1 from "node:process";
121
121
  import { fileURLToPath } from "node:url";
122
122
  import { Command } from "commander";
@@ -516,7 +516,7 @@ function registerPreActionHooks(program, programVersion) {
516
516
  commandPath
517
517
  });
518
518
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
519
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-C4aoDdOB.js").then((n) => n.n);
519
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-Dx8MaVaX.js").then((n) => n.n);
520
520
  ensurePluginRegistryLoaded();
521
521
  }
522
522
  });
@@ -3,16 +3,16 @@ import "./registry-DYq1AYOv.js";
3
3
  import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-CpEJ0B88.js";
4
4
  import "./subsystem-BjyjJF-d.js";
5
5
  import "./workspace-DscDraUb.js";
6
- import { t as runAgentTurn } from "./unified-runner-DweFv8Vx.js";
6
+ import { t as runAgentTurn } from "./unified-runner-BojeuKIk.js";
7
7
  import "./paths-CbQV9WEg.js";
8
8
  import "./auth-profiles-C2vj6htZ.js";
9
9
  import "./env-BDXYbTKj.js";
10
10
  import "./github-copilot-token-cCYzSU9h.js";
11
11
  import "./boolean-CE7i9tBR.js";
12
- import "./pi-embedded-helpers-BUNbSNWw.js";
12
+ import "./pi-embedded-helpers-DcN8GHTt.js";
13
13
  import "./config-BkZ9HOKT.js";
14
14
  import "./manifest-registry-CBCGTsIb.js";
15
- import "./chrome-ROtrXlNs.js";
15
+ import "./chrome-C08Z0XAa.js";
16
16
  import "./frontmatter-CTR5f_Ez.js";
17
17
  import "./skills-CXxrn_e2.js";
18
18
  import "./redact-BDMXB06K.js";
@@ -30,10 +30,10 @@ import "./bindings-BsHoBLIE.js";
30
30
  import "./send-B7aHpAco.js";
31
31
  import "./send-Yzy50T1h.js";
32
32
  import "./tool-images-SqqWIT22.js";
33
- import "./deliver-BC3liFsT.js";
33
+ import "./deliver-CLZGlRZt.js";
34
34
  import "./diagnostic-CQiU0O8b.js";
35
35
  import "./diagnostic-session-state-Zw87xFym.js";
36
- import "./image-C6v6m8Id.js";
36
+ import "./image-BnO8X_hj.js";
37
37
  import "./pi-auth-json-RXOlh8ar.js";
38
38
  import "./tokens-W0JzCJJM.js";
39
39
  import "./send-xTfsDEE2.js";
@@ -50,7 +50,7 @@ import "./local-roots-Se92wAN5.js";
50
50
  import "./ir-JAy_3A3B.js";
51
51
  import "./render-DwEu-aCr.js";
52
52
  import "./commands-registry-CfoYlMQB.js";
53
- import "./runner-QX0Z6K1w.js";
53
+ import "./runner-D5nFF9E6.js";
54
54
  import "./skill-commands-D1hG6Ikz.js";
55
55
  import "./fetch-Dnti0cFs.js";
56
56
  import "./channel-activity-D-kw83R0.js";
@@ -7,12 +7,12 @@ import "./github-copilot-token-DuFIqfeC.js";
7
7
  import "./manifest-registry-D5bnO5uA.js";
8
8
  import "./config-DXt3pc08.js";
9
9
  import "./client-qUlxXXVJ.js";
10
- import { t as buildGatewayConnectionDetails } from "./call-CJl0moIs.js";
10
+ import { t as buildGatewayConnectionDetails } from "./call-BrRWr7Lj.js";
11
11
  import "./message-channel-C9dERklz.js";
12
12
  import "./pairing-token-Byh6drgn.js";
13
13
  import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
14
14
  import "./progress-BAHiAaDW.js";
15
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CJPoGX_W.js";
15
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-XT8cFwtz.js";
16
16
  import { t as parseLogLine } from "./parse-log-line-C6yJx969.js";
17
17
  import { setTimeout } from "node:timers/promises";
18
18
 
@@ -13,11 +13,11 @@ import "./message-channel-aT-I_DTX.js";
13
13
  import "./config-PXAJCHa5.js";
14
14
  import "./manifest-registry-BDSRH8nU.js";
15
15
  import "./client-B8xmq-Pw.js";
16
- import { t as buildGatewayConnectionDetails } from "./call-BHn18ubR.js";
16
+ import { t as buildGatewayConnectionDetails } from "./call-CVqBgwrx.js";
17
17
  import "./pairing-token-CX3NN_qj.js";
18
18
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
19
19
  import "./progress-jIePzvGA.js";
20
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BzkjTxlD.js";
20
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-Bp0KNJtL.js";
21
21
  import { t as parseLogLine } from "./parse-log-line-DvYyTYq4.js";
22
22
  import { setTimeout } from "node:timers/promises";
23
23
 
@@ -7,12 +7,12 @@ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CnvkCEt-.j
7
7
  import { i as resolveForwardCompatModel, r as ANTIGRAVITY_OPUS_46_FORWARD_COMPAT_CANDIDATES } from "./model-yI45t1OQ.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-DXt3pc08.js";
10
- import { J as runAgentTurn, _n as DEFAULT_OAUTH_WARN_MS, _t as describeFailoverError, an as formatUsageWindowSummary, gn as maskApiKey, on as resolveUsageProviderId, rn as loadProviderUsageSummary, vn as buildAuthHealthSummary, yn as formatRemainingShort } from "./subagent-registry-CfoRc8ng.js";
10
+ import { J as runAgentTurn, _n as DEFAULT_OAUTH_WARN_MS, _t as describeFailoverError, an as formatUsageWindowSummary, gn as maskApiKey, on as resolveUsageProviderId, rn as loadProviderUsageSummary, vn as buildAuthHealthSummary, yn as formatRemainingShort } from "./subagent-registry-CsYeP8wc.js";
11
11
  import { s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
12
12
  import { t as ensureSymiModelsJson } from "./models-config-J1x_DaPn.js";
13
13
  import { n as loadModelCatalog } from "./model-catalog-DKGSg6jF.js";
14
14
  import { r as withProgressTotals } from "./progress-BAHiAaDW.js";
15
- import { f as openUrl } from "./onboard-helpers-BV3zKTt_.js";
15
+ import { f as openUrl } from "./onboard-helpers-7H_XiJt-.js";
16
16
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-DwCXob2h.js";
17
17
  import { t as createClackPrompter } from "./clack-prompter-B1aVoXd5.js";
18
18
  import { t as renderTable } from "./table-D01d2GuY.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-DdGOSL9s.js";
22
22
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-DWgYs9Ek.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-DOa1Rc3D.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-CezJXPrZ.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";
@@ -11,10 +11,10 @@ import "./skills-D_oCiaQn.js";
11
11
  import "./manifest-registry-D5bnO5uA.js";
12
12
  import "./config-DXt3pc08.js";
13
13
  import "./client-qUlxXXVJ.js";
14
- import "./call-CJl0moIs.js";
14
+ import "./call-BrRWr7Lj.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-CfoRc8ng.js";
17
+ import "./subagent-registry-CsYeP8wc.js";
18
18
  import "./sessions-BPD85pWA.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -94,7 +94,7 @@ import { n as runCommandWithRuntime, t as resolveOptionFromCommand } from "./cli
94
94
  import "./help-format-B0pWGnZs.js";
95
95
  import "./progress-BAHiAaDW.js";
96
96
  import "./replies-CsUBFXf6.js";
97
- import "./onboard-helpers-BV3zKTt_.js";
97
+ import "./onboard-helpers-7H_XiJt-.js";
98
98
  import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-DwceB1dG.js";
100
100
  import "./pi-tools.policy-DOVQ8dDx.js";
@@ -104,8 +104,8 @@ import "./table-D01d2GuY.js";
104
104
  import "./shared-DdGOSL9s.js";
105
105
  import "./auth-token-DWgYs9Ek.js";
106
106
  import "./logging-BGewRZy0.js";
107
- import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-DOa1Rc3D.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-Cd9pFy1G.js";
107
+ import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-CezJXPrZ.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-DQthIpnz.js";
109
109
 
110
110
  //#region src/cli/models-cli.ts
111
111
  function runModelsCommand(action) {
@@ -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 { Yt as describeFailoverError, _r as formatRemainingShort, gr as buildAuthHealthSummary, gt as loadProviderUsageSummary, hr as DEFAULT_OAUTH_WARN_MS, mr as maskApiKey, vt as formatUsageWindowSummary, yt as resolveUsageProviderId, zt as runAgentTurn } from "./reply-DAMo5JhO.js";
4
+ import { Yt as describeFailoverError, _r as formatRemainingShort, gr as buildAuthHealthSummary, gt as loadProviderUsageSummary, hr as DEFAULT_OAUTH_WARN_MS, mr as maskApiKey, vt as formatUsageWindowSummary, yt as resolveUsageProviderId, zt as runAgentTurn } from "./reply-B0azB7WR.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -73,7 +73,7 @@ import "./render-CXDO_kgw.js";
73
73
  import "./commands-BNLCWX6e.js";
74
74
  import "./commands-registry-B6cf3Cmq.js";
75
75
  import "./client-B8xmq-Pw.js";
76
- import "./call-BHn18ubR.js";
76
+ import "./call-CVqBgwrx.js";
77
77
  import "./pairing-token-CX3NN_qj.js";
78
78
  import "./channel-activity-BOiuJS3t.js";
79
79
  import "./fetch-DTNGXEzX.js";
@@ -94,7 +94,7 @@ import "./session-cost-usage-BXAI7CNH.js";
94
94
  import "./outbound-attachment-Bw-c5Cdp.js";
95
95
  import "./delivery-queue-CAxX6nGq.js";
96
96
  import "./send-CBcCKe5w.js";
97
- import { f as openUrl } from "./onboard-helpers-BFyI1sla.js";
97
+ import { f as openUrl } from "./onboard-helpers-CPSKXD5k.js";
98
98
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-CnkMpSXt.js";
99
99
  import "./pairing-labels-BScqzHEx.js";
100
100
  import "./exec-approvals-DXM2pQYL.js";
@@ -111,7 +111,7 @@ import { n as redactSecrets } from "./format-B0yJsjEo.js";
111
111
  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-D8j919CK.js";
112
112
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-iC00Mmg8.js";
113
113
  import { n as logConfigUpdated } from "./logging-KpicI3yD.js";
114
- 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-fWAoFIwZ.js";
114
+ 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-D9BOiQMP.js";
115
115
  import path from "node:path";
116
116
  import fs from "node:fs/promises";
117
117
  import crypto from "node:crypto";
@@ -14,7 +14,7 @@ import "./manifest-registry-BDSRH8nU.js";
14
14
  import "./redact-f-Q-hFt_.js";
15
15
  import "./errors-BF3TeRH2.js";
16
16
  import "./client-B8xmq-Pw.js";
17
- import { a as randomIdempotencyKey } from "./call-BHn18ubR.js";
17
+ import { a as randomIdempotencyKey } from "./call-CVqBgwrx.js";
18
18
  import "./pairing-token-CX3NN_qj.js";
19
19
  import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
20
20
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
@@ -26,7 +26,7 @@ import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCam
26
26
  import { n as parseNodeList, r as parsePairingList } from "./node-match-CdUiymRU.js";
27
27
  import { t as parseTimeoutMs } from "./parse-timeout-2S5vp0-9.js";
28
28
  import { t as renderTable } from "./table-BKlH0YlA.js";
29
- import { a as unauthorizedHintForMessage, i as resolveNodeId, n as callGatewayCli, o as formatPermissions, r as nodesCallOpts, t as buildNodeInvokeParams } from "./rpc-k8pnK8TE.js";
29
+ import { a as unauthorizedHintForMessage, i as resolveNodeId, n as callGatewayCli, o as formatPermissions, r as nodesCallOpts, t as buildNodeInvokeParams } from "./rpc-Cog-Z1rx.js";
30
30
  import fs from "node:fs/promises";
31
31
 
32
32
  //#region src/cli/nodes-cli/cli-utils.ts
@@ -6,7 +6,7 @@ import "./github-copilot-token-DuFIqfeC.js";
6
6
  import "./manifest-registry-D5bnO5uA.js";
7
7
  import { C as parseDurationMs, i as loadConfig } from "./config-DXt3pc08.js";
8
8
  import "./client-qUlxXXVJ.js";
9
- import { a as randomIdempotencyKey } from "./call-CJl0moIs.js";
9
+ import { a as randomIdempotencyKey } from "./call-BrRWr7Lj.js";
10
10
  import "./message-channel-C9dERklz.js";
11
11
  import "./pairing-token-Byh6drgn.js";
12
12
  import "./redact-B40lik2B.js";
@@ -21,7 +21,7 @@ import { n as runCommandWithRuntime } from "./cli-utils-CCaEbxAz.js";
21
21
  import { t as formatHelpExamples } from "./help-format-B0pWGnZs.js";
22
22
  import "./progress-BAHiAaDW.js";
23
23
  import { t as renderTable } from "./table-D01d2GuY.js";
24
- import { a as unauthorizedHintForMessage, i as resolveNodeId, n as callGatewayCli, o as formatPermissions, r as nodesCallOpts, t as buildNodeInvokeParams } from "./rpc-IXmOgc1l.js";
24
+ import { a as unauthorizedHintForMessage, i as resolveNodeId, n as callGatewayCli, o as formatPermissions, r as nodesCallOpts, t as buildNodeInvokeParams } from "./rpc-CHb_JvbM.js";
25
25
  import fs from "node:fs/promises";
26
26
 
27
27
  //#region src/cli/nodes-cli/cli-utils.ts
@@ -2,15 +2,15 @@ import { Ut as resolveGatewayPort, _ as defaultRuntime, lt as shortenHomePath, o
2
2
  import { Ct as resolveEnvApiKey, Et as normalizeSecretInput, L as normalizeProviderId, Tt as normalizeOptionalSecretInput, b as ensureAuthProfileStore, c as resolveApiKeyForProfile, n as resolveAuthProfileOrder, v as upsertAuthProfile } from "./auth-profiles-BBniPGeS.js";
3
3
  import { t as formatCliCommand } from "./command-format-BtYOfWxC.js";
4
4
  import { C as parseDurationMs, l as writeConfigFile, o as readConfigFileSnapshot } from "./config-DXt3pc08.js";
5
- import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, c as handleReset, g as resolveControlUiLinks, h as randomToken, n as applyWizardMetadata, t as DEFAULT_WORKSPACE } from "./onboard-helpers-BV3zKTt_.js";
5
+ import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, c as handleReset, g as resolveControlUiLinks, h as randomToken, n as applyWizardMetadata, t as DEFAULT_WORKSPACE } from "./onboard-helpers-7H_XiJt-.js";
6
6
  import { t as WizardCancelledError } from "./prompts-m1IJwIAx.js";
7
7
  import { t as createClackPrompter } from "./clack-prompter-B1aVoXd5.js";
8
8
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BV78EN62.js";
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-1ZDwurPU.js";
13
- import { t as runOnboardingWizard } from "./onboarding-Bs3JhONv.js";
12
+ import { r as healthCommand } from "./health-D9pKXesa.js";
13
+ import { t as runOnboardingWizard } from "./onboarding-BHnEBXBG.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-DWgYs9Ek.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";