@symerian/symi 2.0.6 → 2.0.7

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 (105) hide show
  1. package/dist/{agents-CypLQ-TX.js → agents-CNsMe4Dr.js} +4 -4
  2. package/dist/{agents.config-S5g63_Ww.js → agents.config-CdDf19dm.js} +1 -1
  3. package/dist/{agents.config-DWqwPV32.js → agents.config-yx78oSLx.js} +1 -1
  4. package/dist/{auth-choice-1csNxn5J.js → auth-choice-CXMFi9LR.js} +1 -1
  5. package/dist/{auth-choice-DxhF9BuU.js → auth-choice-mw9ndZQO.js} +1 -1
  6. package/dist/{banner-CV_YEEQe.js → banner-B-joBGLz.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +1 -1
  9. package/dist/bundled/session-memory/handler.js +1 -1
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-NbbM348A.js → channel-options-D74Jofp4.js} +1 -1
  12. package/dist/{channel-options-DN7ZZEMr.js → channel-options-XPRRVrmU.js} +1 -1
  13. package/dist/{channel-web-BUODlmfF.js → channel-web-vRvvtf0S.js} +1 -1
  14. package/dist/{channels-cli-6MNbtk6T.js → channels-cli-D3lj5dXo.js} +4 -4
  15. package/dist/{channels-cli-DOoGJd4k.js → channels-cli-DgxPfJF7.js} +4 -4
  16. package/dist/{cli-DxHEDvD7.js → cli-Bg_5WQFe.js} +1 -1
  17. package/dist/{cli-TVchR8N9.js → cli-DQQAfUbo.js} +1 -1
  18. package/dist/{command-registry-S2yEeoft.js → command-registry-Cde2LqTh.js} +9 -9
  19. package/dist/{completion-cli-BrgaQVPk.js → completion-cli-Cx9htCOm.js} +1 -1
  20. package/dist/{completion-cli-u1z9O4lQ.js → completion-cli-KJUTWJP3.js} +2 -2
  21. package/dist/{config-cli-CUdFNGGC.js → config-cli-C5-P9Nzz.js} +1 -1
  22. package/dist/{config-cli-CipxRDcw.js → config-cli-ozfA6MGF.js} +1 -1
  23. package/dist/{configure-B2DVh1MI.js → configure-DiuQ_aTS.js} +3 -3
  24. package/dist/{configure-D9n_M6Ra.js → configure-ktsZw1bT.js} +3 -3
  25. package/dist/{doctor-completion-94bdxcgy.js → doctor-completion-CrN6Ly8x.js} +1 -1
  26. package/dist/{doctor-completion-Beg_3VG2.js → doctor-completion-Vwi_je1c.js} +1 -1
  27. package/dist/entry.js +1 -1
  28. package/dist/extensionAPI.js +1 -1
  29. package/dist/{gateway-cli-BkfAKxxR.js → gateway-cli-CwO3878F.js} +9 -9
  30. package/dist/{gateway-cli-CKIJn013.js → gateway-cli-DyqK4XZ1.js} +9 -9
  31. package/dist/{glass-ui-ws-BQ6j-PII.js → glass-ui-ws-BmqwQaCf.js} +7 -7
  32. package/dist/{glass-ui-ws-BrvN2A06.js → glass-ui-ws-zVNodseh.js} +7 -7
  33. package/dist/{health-9kUMJPU4.js → health-Q1RP1M2f.js} +1 -1
  34. package/dist/{health-BUaaGug2.js → health-UjXEBnzA.js} +1 -1
  35. package/dist/{hooks-cli-CBkjAKu_.js → hooks-cli-D4qJl6do.js} +2 -2
  36. package/dist/{hooks-cli-CxqrpSnT.js → hooks-cli-DOT9uGZw.js} +2 -2
  37. package/dist/index.js +6 -6
  38. package/dist/llm-slug-generator.js +1 -1
  39. package/dist/{models-CZSMuo5B.js → models-DKsiIvSx.js} +2 -2
  40. package/dist/{models-cli-Ds23awjm.js → models-cli-BS6UJ98e.js} +3 -3
  41. package/dist/{models-cli-MqWvGB7f.js → models-cli-ULbdeSgc.js} +2 -2
  42. package/dist/{onboard-D3oW4O-4.js → onboard-B387frTY.js} +2 -2
  43. package/dist/{onboard-G9IN6QQx.js → onboard-Bt-BwfkR.js} +2 -2
  44. package/dist/{onboard-channels-dfTDyb59.js → onboard-channels-COcxT5Q0.js} +1 -1
  45. package/dist/{onboard-channels-oFTqVfhO.js → onboard-channels-ybPEmcP8.js} +1 -1
  46. package/dist/{onboarding-g2bI9l8x.js → onboarding-BibGEGIS.js} +3 -3
  47. package/dist/{onboarding-Ckpz4QDg.js → onboarding-CdN_NU2d.js} +3 -3
  48. package/dist/{onboarding.finalize-C1lR3Y__.js → onboarding.finalize-CY1NjrGb.js} +6 -6
  49. package/dist/{onboarding.finalize-MWEKi_hL.js → onboarding.finalize-CvahVrDM.js} +5 -5
  50. package/dist/{pi-embedded-Cll2enMR.js → pi-embedded-BvCoZBNg.js} +159 -2
  51. package/dist/{pi-embedded-BJC3CNWN.js → pi-embedded-ZzUH4ioO.js} +159 -2
  52. package/dist/{plugin-registry-KUffgxdX.js → plugin-registry-BAbkdLQ7.js} +1 -1
  53. package/dist/{plugin-registry-C5KPfoPc.js → plugin-registry-CEoSVvL1.js} +1 -1
  54. package/dist/plugin-sdk/agents/plan-mode.d.ts +32 -0
  55. package/dist/plugin-sdk/{channel-web-DTV6QoJV.js → channel-web-xXTpy0N_.js} +1 -1
  56. package/dist/plugin-sdk/index.js +2 -2
  57. package/dist/plugin-sdk/{reply-CzCsghFB.js → reply-EEvLfWgt.js} +159 -2
  58. package/dist/plugin-sdk/{web-BLcsH45O.js → web-COWtpMAH.js} +2 -2
  59. package/dist/{plugins-cli-BIHhue19.js → plugins-cli-BpuQ7Y9l.js} +2 -2
  60. package/dist/{plugins-cli-DRDUAaBR.js → plugins-cli-C_S07pgO.js} +2 -2
  61. package/dist/{program-BCEnYzi8.js → program-cO9YX6wL.js} +7 -7
  62. package/dist/{program-context-CS1wSnZE.js → program-context-QBBvnWFX.js} +17 -17
  63. package/dist/{prompt-select-styled-AZW_g_xe.js → prompt-select-styled-CepuQSKg.js} +4 -4
  64. package/dist/{prompt-select-styled-99u32PPK.js → prompt-select-styled-D3dYbx2P.js} +4 -4
  65. package/dist/{provider-auth-helpers-CeJqzcdK.js → provider-auth-helpers-BMACaaEd.js} +1 -1
  66. package/dist/{provider-auth-helpers-DqJ69hdw.js → provider-auth-helpers-DXqvuBCi.js} +1 -1
  67. package/dist/{push-apns-Dwt-_Kns.js → push-apns-8YIzbTM7.js} +1 -1
  68. package/dist/{push-apns-C5xLtVxl.js → push-apns-DhZgao_r.js} +1 -1
  69. package/dist/{register.agent-Cyq17z22.js → register.agent-CSUoUVKd.js} +6 -6
  70. package/dist/{register.agent-nnrj8tc5.js → register.agent-CiTS9lyx.js} +5 -5
  71. package/dist/{register.configure-DSknC_88.js → register.configure-BbE9MAer.js} +6 -6
  72. package/dist/{register.configure-D1zZ3jgM.js → register.configure-CuCVLOW0.js} +6 -6
  73. package/dist/{register.maintenance-Dt1AUhn3.js → register.maintenance-CJG75LTu.js} +8 -8
  74. package/dist/{register.maintenance-ClQi_hVH.js → register.maintenance-D8bthvou.js} +7 -7
  75. package/dist/{register.message-x7nPJjwN.js → register.message-CyqE4E2O.js} +2 -2
  76. package/dist/{register.message-C0R7nCJf.js → register.message-nUpHGrEE.js} +2 -2
  77. package/dist/{register.onboard-Bry0wxl_.js → register.onboard-BDlne5KX.js} +4 -4
  78. package/dist/{register.onboard-BOXdnoFU.js → register.onboard-Dlw-TCPH.js} +4 -4
  79. package/dist/{register.setup-fPrs1eMy.js → register.setup-B8kiMuah.js} +4 -4
  80. package/dist/{register.setup-C5d8909b.js → register.setup-ByMyofSq.js} +4 -4
  81. package/dist/{register.status-health-sessions-Bg3bAzzg.js → register.status-health-sessions-0odRpA-p.js} +3 -3
  82. package/dist/{register.status-health-sessions-C6FKgGFx.js → register.status-health-sessions-Diirshgb.js} +3 -3
  83. package/dist/{register.subclis-BrOWQICr.js → register.subclis-CqEj9vfW.js} +9 -9
  84. package/dist/{reply-D_FZec1Q.js → reply-B9o45s3E.js} +159 -2
  85. package/dist/{run-main-BNSY40iN.js → run-main-C__lZ7VF.js} +14 -14
  86. package/dist/{server-methods-BBkI0oCw.js → server-methods-B_NSJmhc.js} +7 -7
  87. package/dist/{server-methods-CQo9n7_8.js → server-methods-Df9KsV_-.js} +7 -7
  88. package/dist/{server-node-events-DBIaf_Oj.js → server-node-events-C2mugatX.js} +2 -2
  89. package/dist/{server-node-events-DXVd5rRh.js → server-node-events-ZG0SBDkU.js} +2 -2
  90. package/dist/{status-B77mKduK.js → status-BTF6_aBO.js} +1 -1
  91. package/dist/{status-Be3sgGJN.js → status-BytVj4kU.js} +1 -1
  92. package/dist/{status-CqnXLNV0.js → status-PADx9rG7.js} +2 -2
  93. package/dist/{status-CsoUJxpm.js → status-hgm5EhwS.js} +2 -2
  94. package/dist/{subagent-registry-BH79W7i1.js → subagent-registry-BR2Qhqjf.js} +159 -2
  95. package/dist/{update-cli-Ce9xf_CT.js → update-cli-CHr8rjf-.js} +8 -8
  96. package/dist/{update-cli-BhPzUXNP.js → update-cli-qacplfF4.js} +7 -7
  97. package/dist/{update-runner-DYnn5y5L.js → update-runner-DM8zQvQB.js} +1 -1
  98. package/dist/{update-runner-BpQxWph5.js → update-runner-DNA7FJa2.js} +1 -1
  99. package/dist/{web-D3J3pm9B.js → web-0bP0TLM2.js} +1 -1
  100. package/dist/{web-sN6ARhg2.js → web-DkQc82PT.js} +1 -1
  101. package/dist/{web-07aQbQrq.js → web-G0LUda_q.js} +1 -1
  102. package/dist/{web-uh4O13Iu.js → web-UroM-w6c.js} +2 -2
  103. package/docs/reference/templates/AGENTS.md +18 -0
  104. package/docs/reference/templates/SYMICORE.md +2 -0
  105. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-D_FZec1Q.js";
4
+ import "./reply-B9o45s3E.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -113,18 +113,18 @@ import "./service-Cl74hx8J.js";
113
113
  import "./diagnostics-BAMlsVVX.js";
114
114
  import "./table-BTgkRafz.js";
115
115
  import "./audit-CiugrQda.js";
116
- import "./status-CsoUJxpm.js";
117
- import "./health-9kUMJPU4.js";
116
+ import "./status-hgm5EhwS.js";
117
+ import "./health-Q1RP1M2f.js";
118
118
  import "./control-ui-assets-Z947tKLt.js";
119
119
  import "./update-check-CtckACbb.js";
120
- import { n as handleGatewayRequest } from "./server-methods-BBkI0oCw.js";
121
- import "./push-apns-C5xLtVxl.js";
122
- import "./agents.config-S5g63_Ww.js";
120
+ import { n as handleGatewayRequest } from "./server-methods-B_NSJmhc.js";
121
+ import "./push-apns-DhZgao_r.js";
122
+ import "./agents.config-CdDf19dm.js";
123
123
  import "./dm-policy-shared-DckBYBwg.js";
124
124
  import "./node-service-Cxz4e-Qd.js";
125
125
  import "./status.update-DlaskfTr.js";
126
126
  import "./skills-install-D67isO1L.js";
127
- import "./update-runner-DYnn5y5L.js";
127
+ import "./update-runner-DM8zQvQB.js";
128
128
 
129
129
  //#region src/gateway/glass-ui-ws.ts
130
130
  const SESSION_KEY = "agent:main:main";
@@ -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 { Ft as resolveHeartbeatSenderContext, Pt as resolveHeartbeatDeliveryTarget, ar as CommandLane, cr as isHeartbeatContentEffectivelyEmpty, dt as requestHeartbeatNow, er as getQueueSize, ft as setHeartbeatWakeHandler, lr as resolveHeartbeatPrompt$1, or as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, pt as resolveHeartbeatReasonKind, r as appendCronStyleCurrentTimeLine, sr as DEFAULT_HEARTBEAT_EVERY, t as getReplyFromConfig, ur as stripHeartbeatToken, xr as peekSystemEventEntries, zn as resolveUserTimezone } from "./reply-D_FZec1Q.js";
2
+ import { Ft as resolveHeartbeatSenderContext, Pt as resolveHeartbeatDeliveryTarget, ar as CommandLane, cr as isHeartbeatContentEffectivelyEmpty, dt as requestHeartbeatNow, er as getQueueSize, ft as setHeartbeatWakeHandler, lr as resolveHeartbeatPrompt$1, or as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, pt as resolveHeartbeatReasonKind, r as appendCronStyleCurrentTimeLine, sr as DEFAULT_HEARTBEAT_EVERY, t as getReplyFromConfig, ur as stripHeartbeatToken, xr as peekSystemEventEntries, zn as resolveUserTimezone } from "./reply-B9o45s3E.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";
@@ -4,7 +4,7 @@ import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as no
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-amjzHiWZ.js";
6
6
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BQiCOxB6.js";
7
- import { Cn as peekSystemEventEntries, Kn as resolveUserTimezone, Y as appendCronStyleCurrentTimeLine, _r as stripHeartbeatToken, ct as resolveHeartbeatSenderContext, dn as resolveHeartbeatReasonKind, fr as CommandLane, gr as resolveHeartbeatPrompt$1, hr as isHeartbeatContentEffectivelyEmpty, ln as requestHeartbeatNow, mr as DEFAULT_HEARTBEAT_EVERY, pr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, q as getReplyFromConfig, sr as getQueueSize, st as resolveHeartbeatDeliveryTarget, un as setHeartbeatWakeHandler } from "./subagent-registry-BH79W7i1.js";
7
+ import { Cn as peekSystemEventEntries, Kn as resolveUserTimezone, Y as appendCronStyleCurrentTimeLine, _r as stripHeartbeatToken, ct as resolveHeartbeatSenderContext, dn as resolveHeartbeatReasonKind, fr as CommandLane, gr as resolveHeartbeatPrompt$1, hr as isHeartbeatContentEffectivelyEmpty, ln as requestHeartbeatNow, mr as DEFAULT_HEARTBEAT_EVERY, pr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, q as getReplyFromConfig, sr as getQueueSize, st as resolveHeartbeatDeliveryTarget, un as setHeartbeatWakeHandler } from "./subagent-registry-BR2Qhqjf.js";
8
8
  import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, d as updateSessionStore, l as saveSessionStore, o as loadSessionStore } from "./sessions-DJAxaVI7.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";
@@ -15,7 +15,7 @@ import "./client-LeVQns9-.js";
15
15
  import "./call-BQiCOxB6.js";
16
16
  import "./message-channel-C9dERklz.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import "./subagent-registry-BH79W7i1.js";
18
+ import "./subagent-registry-BR2Qhqjf.js";
19
19
  import "./sessions-DJAxaVI7.js";
20
20
  import "./tokens-Csntmwwn.js";
21
21
  import "./plugins-CwSlLxM8.js";
@@ -104,7 +104,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
104
104
  import { t as renderTable } from "./table-D01d2GuY.js";
105
105
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-B51TF6q3.js";
106
106
  import { t as buildWorkspaceHookStatus } from "./hooks-status-CEoLdlyb.js";
107
- import { t as buildPluginStatusReport } from "./status-B77mKduK.js";
107
+ import { t as buildPluginStatusReport } from "./status-BTF6_aBO.js";
108
108
  import path from "node:path";
109
109
  import fs from "node:fs";
110
110
  import fs$1 from "node:fs/promises";
@@ -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-D_FZec1Q.js";
4
+ import "./reply-B9o45s3E.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -108,7 +108,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
108
108
  import { t as renderTable } from "./table-BTgkRafz.js";
109
109
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-CYxdoAlY.js";
110
110
  import { t as buildWorkspaceHookStatus } from "./hooks-status-BqLZtMLa.js";
111
- import { t as buildPluginStatusReport } from "./status-Be3sgGJN.js";
111
+ import { t as buildPluginStatusReport } from "./status-BytVj4kU.js";
112
112
  import fs from "node:fs";
113
113
  import path from "node:path";
114
114
  import fs$1 from "node:fs/promises";
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 { Vt as createDefaultDeps, t as getReplyFromConfig, wt as resolveCommitHash } from "./reply-D_FZec1Q.js";
5
+ import { Vt as createDefaultDeps, t as getReplyFromConfig, wt as resolveCommitHash } from "./reply-B9o45s3E.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";
@@ -103,7 +103,7 @@ import "./pi-tools.policy-DPmdlOwE.js";
103
103
  import "./control-service-DMz_CcLi.js";
104
104
  import "./stagger-BUClb97_.js";
105
105
  import "./channel-selection-DuWs0Aak.js";
106
- import { r as waitForever, t as monitorWebChannel } from "./channel-web-BUODlmfF.js";
106
+ import { r as waitForever, t as monitorWebChannel } from "./channel-web-vRvvtf0S.js";
107
107
  import "./outbound-DfOF58G2.js";
108
108
  import "./session-BeJq-MLE.js";
109
109
  import "./login-CXSct1EH.js";
@@ -112,10 +112,10 @@ import { t as ensureSymiCliOnPath } from "./path-env-MnzRq6nD.js";
112
112
  import { t as assertSupportedRuntime } from "./runtime-guard-B37eizu-.js";
113
113
  import "./ports-BX0kKI0g.js";
114
114
  import { a as hasFlag, i as getVerboseFlag, n as getCommandPath, o as hasHelpOrVersion, s as hasRootVersionAlias } from "./argv-C6ovOie2.js";
115
- import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-CS1wSnZE.js";
115
+ import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-QBBvnWFX.js";
116
116
  import "./catalog-RiADx7MA.js";
117
- import "./plugin-registry-C5KPfoPc.js";
118
- import { n as resolveCliChannelOptions } from "./channel-options-DN7ZZEMr.js";
117
+ import "./plugin-registry-CEoSVvL1.js";
118
+ import { n as resolveCliChannelOptions } from "./channel-options-XPRRVrmU.js";
119
119
  import process$1 from "node:process";
120
120
  import { fileURLToPath } from "node:url";
121
121
  import { Command } from "commander";
@@ -515,7 +515,7 @@ function registerPreActionHooks(program, programVersion) {
515
515
  commandPath
516
516
  });
517
517
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
518
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-C5KPfoPc.js").then((n) => n.n);
518
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-CEoSVvL1.js").then((n) => n.n);
519
519
  ensurePluginRegistryLoaded();
520
520
  }
521
521
  });
@@ -4,7 +4,7 @@ import { c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWork
4
4
  import "./subsystem-Bs9YvKLa.js";
5
5
  import "./workspace-wAaHI8-5.js";
6
6
  import "./tokens-H1H1LiSQ.js";
7
- import { t as runEmbeddedPiAgent } from "./pi-embedded-BJC3CNWN.js";
7
+ import { t as runEmbeddedPiAgent } from "./pi-embedded-ZzUH4ioO.js";
8
8
  import "./plugins-DQYI3Fr-.js";
9
9
  import "./accounts-tNElYrCH.js";
10
10
  import "./boolean-B8-BqKGQ.js";
@@ -7,7 +7,7 @@ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CNgAAznq.j
7
7
  import { i as resolveForwardCompatModel, r as ANTIGRAVITY_OPUS_46_FORWARD_COMPAT_CANDIDATES } from "./model-DaukLY-k.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-amjzHiWZ.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-BH79W7i1.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-BR2Qhqjf.js";
11
11
  import { i as resolveSessionTranscriptPath, s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
12
12
  import { t as ensureSymiModelsJson } from "./models-config-Cb41NmVa.js";
13
13
  import { n as loadModelCatalog } from "./model-catalog-Dj5pIc1G.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-CLXhDldI.js";
22
22
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-CNnt7guc.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-DqJ69hdw.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-DXqvuBCi.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";
@@ -14,7 +14,7 @@ import "./client-LeVQns9-.js";
14
14
  import "./call-BQiCOxB6.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-BH79W7i1.js";
17
+ import "./subagent-registry-BR2Qhqjf.js";
18
18
  import "./sessions-DJAxaVI7.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -104,8 +104,8 @@ import "./table-D01d2GuY.js";
104
104
  import "./shared-CLXhDldI.js";
105
105
  import "./auth-token-CNnt7guc.js";
106
106
  import "./logging-BGewRZy0.js";
107
- import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-DqJ69hdw.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-CZSMuo5B.js";
107
+ import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-DXqvuBCi.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-DKsiIvSx.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 { 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-D_FZec1Q.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-B9o45s3E.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.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-CMw4odDH.js";
111
111
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-BrlnZiCq.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-CeJqzcdK.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-BMACaaEd.js";
114
114
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./system-cli-BMrwtPdR.js";
115
115
  import path from "node:path";
116
116
  import fs from "node:fs/promises";
@@ -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-CjgoCPLb.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-9kUMJPU4.js";
15
- import { t as runOnboardingWizard } from "./onboarding-Ckpz4QDg.js";
14
+ import { r as healthCommand } from "./health-Q1RP1M2f.js";
15
+ import { t as runOnboardingWizard } from "./onboarding-CdN_NU2d.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-BrlnZiCq.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-BUaaGug2.js";
13
- import { t as runOnboardingWizard } from "./onboarding-g2bI9l8x.js";
12
+ import { r as healthCommand } from "./health-UjXEBnzA.js";
13
+ import { t as runOnboardingWizard } from "./onboarding-BibGEGIS.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-CNnt7guc.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-D_FZec1Q.js";
2
+ import { gt as loadSymiPlugins, ht as createPluginLoaderLogger } from "./reply-B9o45s3E.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-BH79W7i1.js";
6
+ import { _ as loadSymiPlugins, g as createPluginLoaderLogger } from "./subagent-registry-BR2Qhqjf.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-BD22fK4p.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-BKR6vm2R.js").then((n) => n.r);
226
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-1csNxn5J.js").then((n) => n.t);
226
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-CXMFi9LR.js").then((n) => n.t);
227
227
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-ay4NPk8S.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-oFTqVfhO.js").then((n) => n.n);
279
+ const { setupChannels } = await import("./onboard-channels-ybPEmcP8.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-C1lR3Y__.js");
305
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CY1NjrGb.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-Csawd2_i.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-DoIhWPnb.js").then((n) => n.r);
228
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-DxhF9BuU.js").then((n) => n.t);
228
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-mw9ndZQO.js").then((n) => n.t);
229
229
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-DXwUsLAy.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-dfTDyb59.js").then((n) => n.n);
281
+ const { setupChannels } = await import("./onboard-channels-COcxT5Q0.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-MWEKi_hL.js");
307
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CvahVrDM.js");
308
308
  const { launchedTui } = await finalizeOnboardingWizard({
309
309
  flow,
310
310
  opts,
@@ -14,7 +14,7 @@ import "./client-LeVQns9-.js";
14
14
  import "./call-BQiCOxB6.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-BH79W7i1.js";
17
+ import "./subagent-registry-BR2Qhqjf.js";
18
18
  import "./sessions-DJAxaVI7.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -99,18 +99,18 @@ import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-sIj1ZLt-.js";
100
100
  import "./pi-tools.policy-T6Z5F-_n.js";
101
101
  import "./note-DDecZomM.js";
102
- import "./register.subclis-BrOWQICr.js";
103
- import "./command-registry-S2yEeoft.js";
102
+ import "./register.subclis-CqEj9vfW.js";
103
+ import "./command-registry-Cde2LqTh.js";
104
104
  import "./program-context-CqzR_m-7.js";
105
- import { r as installCompletion } from "./completion-cli-u1z9O4lQ.js";
105
+ import { r as installCompletion } from "./completion-cli-KJUTWJP3.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-B38pOixq.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-BUaaGug2.js";
110
+ import { r as healthCommand } from "./health-UjXEBnzA.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-Beg_3VG2.js";
113
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Vwi_je1c.js";
114
114
  import { t as runTui } from "./tui-0rURH3b3.js";
115
115
  import os from "node:os";
116
116
  import path from "node:path";
@@ -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-D_FZec1Q.js";
4
+ import "./reply-B9o45s3E.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { p as restoreTerminalState } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -103,16 +103,16 @@ import "./control-service-DMz_CcLi.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-CS1wSnZE.js";
106
+ import "./program-context-QBBvnWFX.js";
107
107
  import "./note-DeHoW7xO.js";
108
- import { r as installCompletion } from "./completion-cli-BrgaQVPk.js";
108
+ import { r as installCompletion } from "./completion-cli-Cx9htCOm.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-CjgoCPLb.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-9kUMJPU4.js";
112
+ import { r as healthCommand } from "./health-Q1RP1M2f.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-94bdxcgy.js";
115
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CrN6Ly8x.js";
116
116
  import { t as runTui } from "./tui-CcirlGg5.js";
117
117
  import os from "node:os";
118
118
  import path from "node:path";
@@ -51481,7 +51481,7 @@ function isVoiceChannelType(type) {
51481
51481
  function createDefaultDeps() {
51482
51482
  return {
51483
51483
  sendMessageWhatsApp: async (...args) => {
51484
- const { sendMessageWhatsApp } = await import("./web-07aQbQrq.js");
51484
+ const { sendMessageWhatsApp } = await import("./web-G0LUda_q.js");
51485
51485
  return await sendMessageWhatsApp(...args);
51486
51486
  },
51487
51487
  sendMessageTelegram: async (...args) => {
@@ -66760,7 +66760,7 @@ function loadWebLoginQr() {
66760
66760
  return webLoginQrPromise;
66761
66761
  }
66762
66762
  function loadWebChannel() {
66763
- webChannelPromise ??= import("./web-07aQbQrq.js");
66763
+ webChannelPromise ??= import("./web-G0LUda_q.js");
66764
66764
  return webChannelPromise;
66765
66765
  }
66766
66766
  function loadWhatsAppActions() {
@@ -74587,6 +74587,152 @@ function subscribeEmbeddedPiSession(params) {
74587
74587
  };
74588
74588
  }
74589
74589
 
74590
+ //#endregion
74591
+ //#region src/agents/plan-mode.ts
74592
+ /**
74593
+ * Plan Mode — automatic complexity detection and structured planning.
74594
+ *
74595
+ * When a user message is complex (multi-step, multi-file, refactoring, etc.),
74596
+ * Symi auto-enters plan mode: read-only investigation → structured plan →
74597
+ * user approval → context-cleared execution.
74598
+ */
74599
+ const PLAN_KEYWORDS = new Set([
74600
+ "investigate",
74601
+ "refactor",
74602
+ "migrate",
74603
+ "redesign",
74604
+ "set up",
74605
+ "setup",
74606
+ "build",
74607
+ "implement",
74608
+ "architect",
74609
+ "overhaul",
74610
+ "restructure",
74611
+ "rewrite"
74612
+ ]);
74613
+ const ANALYSIS_KEYWORDS = new Set([
74614
+ "analyze",
74615
+ "analyse",
74616
+ "compare",
74617
+ "audit",
74618
+ "review",
74619
+ "evaluate",
74620
+ "assess"
74621
+ ]);
74622
+ const SEQUENTIAL_MARKERS = [
74623
+ /\bthen\b/i,
74624
+ /\bafter that\b/i,
74625
+ /\bonce .+ is done\b/i,
74626
+ /\bnext,?\s/i,
74627
+ /\bfollowed by\b/i,
74628
+ /\bfinally\b/i
74629
+ ];
74630
+ const NUMBERED_LIST_RE = /^\s*\d+[.)]\s/gm;
74631
+ const FILE_PATH_RE = /(?:\/[\w.-]+){2,}|[\w.-]+\.[a-z]{1,4}/g;
74632
+ /**
74633
+ * Score a user message for complexity.
74634
+ * Returns a numeric score; >= PLAN_MODE_THRESHOLD triggers plan mode.
74635
+ */
74636
+ function scorePlanComplexity(prompt) {
74637
+ let score = 0;
74638
+ const lower = prompt.toLowerCase();
74639
+ if (prompt.length > 500) {
74640
+ if ([...PLAN_KEYWORDS, ...ANALYSIS_KEYWORDS].some((kw) => lower.includes(kw)) || FILE_PATH_RE.test(prompt)) score += 3;
74641
+ }
74642
+ const numberedItems = prompt.match(NUMBERED_LIST_RE);
74643
+ if (numberedItems && numberedItems.length >= 3) score += 2;
74644
+ for (const kw of PLAN_KEYWORDS) if (lower.includes(kw)) {
74645
+ score += 2;
74646
+ break;
74647
+ }
74648
+ for (const re of SEQUENTIAL_MARKERS) if (re.test(prompt)) {
74649
+ score += 2;
74650
+ break;
74651
+ }
74652
+ const filePaths = prompt.match(FILE_PATH_RE);
74653
+ if (filePaths && new Set(filePaths).size >= 2) score += 1;
74654
+ for (const kw of ANALYSIS_KEYWORDS) if (lower.includes(kw)) {
74655
+ score += 1;
74656
+ break;
74657
+ }
74658
+ return score;
74659
+ }
74660
+ const PLAN_MODE_THRESHOLD = 5;
74661
+ /**
74662
+ * Determine whether a prompt should trigger plan mode.
74663
+ *
74664
+ * Priority:
74665
+ * 1. /plan prefix → always
74666
+ * 2. /noplan prefix → never
74667
+ * 3. Subagent/cron sessions → never
74668
+ * 4. Heuristic scoring
74669
+ */
74670
+ function shouldEnterPlanMode(prompt, opts = {}) {
74671
+ const trimmed = prompt.trim();
74672
+ if (/^\/plan\b/i.test(trimmed)) return {
74673
+ enter: true,
74674
+ reason: "explicit /plan directive",
74675
+ score: 99,
74676
+ stripped: trimmed.replace(/^\/plan\s*/i, "").trim()
74677
+ };
74678
+ if (/^\/noplan\b/i.test(trimmed)) return {
74679
+ enter: false,
74680
+ reason: "explicit /noplan directive",
74681
+ score: 0,
74682
+ stripped: trimmed.replace(/^\/noplan\s*/i, "").trim()
74683
+ };
74684
+ if (opts.isSubagent) return {
74685
+ enter: false,
74686
+ reason: "subagent session",
74687
+ score: 0
74688
+ };
74689
+ if (opts.isCron) return {
74690
+ enter: false,
74691
+ reason: "cron session",
74692
+ score: 0
74693
+ };
74694
+ const score = scorePlanComplexity(trimmed);
74695
+ if (score >= PLAN_MODE_THRESHOLD) return {
74696
+ enter: true,
74697
+ reason: `complexity score ${score} >= ${PLAN_MODE_THRESHOLD}`,
74698
+ score
74699
+ };
74700
+ return {
74701
+ enter: false,
74702
+ reason: `complexity score ${score} < ${PLAN_MODE_THRESHOLD}`,
74703
+ score
74704
+ };
74705
+ }
74706
+ const PLAN_MODE_SYSTEM_PROMPT = `<plan_mode>
74707
+ You have entered PLAN MODE because this task is complex.
74708
+
74709
+ RULES:
74710
+ - DO NOT write, edit, or create any files yet
74711
+ - DO NOT execute destructive commands (rm, mv, git reset, etc.)
74712
+ - DO read files, search code, check runtime state
74713
+ - DO use memory_search, web_search, exec (read-only commands like ls, cat, git status, git log)
74714
+ - Produce a detailed step-by-step implementation plan
74715
+
74716
+ OUTPUT FORMAT:
74717
+ 1. **Summary** — what needs to be done and why
74718
+ 2. **Investigation** — files read, code searched, state checked
74719
+ 3. **Files to modify** — list every file that will be created, edited, or deleted
74720
+ 4. **Implementation phases** — numbered steps with:
74721
+ - What changes in each phase
74722
+ - Which files are touched
74723
+ - Dependencies on prior phases
74724
+ 5. **Risks & considerations** — things that could go wrong, edge cases, rollback strategy
74725
+
74726
+ After presenting the plan, ask the user to choose one of these options.
74727
+ Present these as inline buttons if the channel supports them:
74728
+ - **Proceed** — clear context and execute the plan
74729
+ - **Modify** — adjust the plan based on feedback
74730
+ - **Cancel** — abandon the plan
74731
+
74732
+ Use the message tool with buttons:
74733
+ [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
74734
+ </plan_mode>`;
74735
+
74590
74736
  //#endregion
74591
74737
  //#region src/agents/pi-embedded-runner/abort.ts
74592
74738
  /**
@@ -75840,6 +75986,17 @@ async function runEmbeddedAttempt(params) {
75840
75986
  log$2.debug(`auto-recall: skipped (${String(recallErr)})`);
75841
75987
  }
75842
75988
  }
75989
+ {
75990
+ const planResult = shouldEnterPlanMode(effectivePrompt, {
75991
+ isSubagent: isSubagentSessionKey(params.sessionKey),
75992
+ isCron: isCronSessionKey(params.sessionKey)
75993
+ });
75994
+ if (planResult.enter) {
75995
+ if (planResult.stripped != null) effectivePrompt = planResult.stripped;
75996
+ effectivePrompt = `${PLAN_MODE_SYSTEM_PROMPT}\n\n${effectivePrompt}`;
75997
+ log$2.info(`plan-mode: activated (${planResult.reason}) for runId=${params.runId}`);
75998
+ } else if (planResult.stripped != null) effectivePrompt = planResult.stripped;
75999
+ }
75843
76000
  log$2.debug(`embedded run prompt start: runId=${params.runId} sessionId=${params.sessionId}`);
75844
76001
  cacheTrace?.recordStage("prompt:before", {
75845
76002
  prompt: effectivePrompt,