@symerian/symi 2.0.5 → 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 (113) hide show
  1. package/dist/{agents-CY07X24i.js → agents-CNsMe4Dr.js} +4 -4
  2. package/dist/{agents.config-B9gQawzG.js → agents.config-CdDf19dm.js} +1 -1
  3. package/dist/{agents.config-DXm0itk8.js → agents.config-yx78oSLx.js} +1 -1
  4. package/dist/{audio-preflight-B8ffbICW.js → audio-preflight-Cq4C-m27.js} +4 -4
  5. package/dist/{auth-choice-CmzYHI9W.js → auth-choice-CXMFi9LR.js} +1 -1
  6. package/dist/{auth-choice-BL5iKbOi.js → auth-choice-mw9ndZQO.js} +1 -1
  7. package/dist/{banner-ZI2qDzNS.js → banner-B-joBGLz.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +1 -1
  10. package/dist/bundled/session-memory/handler.js +1 -1
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-BoQfMXlN.js → channel-options-D74Jofp4.js} +1 -1
  13. package/dist/{channel-options-CBjB0Gat.js → channel-options-XPRRVrmU.js} +1 -1
  14. package/dist/{channel-web-BAXp3QOw.js → channel-web-vRvvtf0S.js} +1 -1
  15. package/dist/{channels-cli-CdNqd2p-.js → channels-cli-D3lj5dXo.js} +4 -4
  16. package/dist/{channels-cli-DDX2Mnw5.js → channels-cli-DgxPfJF7.js} +4 -4
  17. package/dist/{chrome-B_zrSLce.js → chrome-h6BnL8Lp.js} +7 -7
  18. package/dist/{cli-U17c6jdJ.js → cli-Bg_5WQFe.js} +1 -1
  19. package/dist/{cli-Dt0gEtAK.js → cli-DQQAfUbo.js} +1 -1
  20. package/dist/{command-registry-CPE-hn3o.js → command-registry-Cde2LqTh.js} +9 -9
  21. package/dist/{completion-cli-CcOS-aPd.js → completion-cli-Cx9htCOm.js} +1 -1
  22. package/dist/{completion-cli-DwcosLcg.js → completion-cli-KJUTWJP3.js} +2 -2
  23. package/dist/{config-cli-B7C8rH_M.js → config-cli-C5-P9Nzz.js} +1 -1
  24. package/dist/{config-cli-kyOQ8cyG.js → config-cli-ozfA6MGF.js} +1 -1
  25. package/dist/{configure-t1L_p7YR.js → configure-DiuQ_aTS.js} +3 -3
  26. package/dist/{configure-DMiMX73I.js → configure-ktsZw1bT.js} +3 -3
  27. package/dist/{deliver-CkjSfucB.js → deliver-CZF9f8aC.js} +1 -1
  28. package/dist/{doctor-completion-Clr-M__Q.js → doctor-completion-CrN6Ly8x.js} +1 -1
  29. package/dist/{doctor-completion-D4wXWeDY.js → doctor-completion-Vwi_je1c.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +6 -6
  32. package/dist/{gateway-cli-DhjW9OPH.js → gateway-cli-CwO3878F.js} +9 -9
  33. package/dist/{gateway-cli-CRyelGVH.js → gateway-cli-DyqK4XZ1.js} +9 -9
  34. package/dist/{glass-ui-ws-CEx9ErgA.js → glass-ui-ws-BmqwQaCf.js} +7 -7
  35. package/dist/{glass-ui-ws-BBoT-xnq.js → glass-ui-ws-zVNodseh.js} +7 -7
  36. package/dist/{health-BqurBycG.js → health-Q1RP1M2f.js} +1 -1
  37. package/dist/{health-DeTRr2Yi.js → health-UjXEBnzA.js} +1 -1
  38. package/dist/{hooks-cli-CxNUfUAl.js → hooks-cli-D4qJl6do.js} +2 -2
  39. package/dist/{hooks-cli-CyX25xDg.js → hooks-cli-DOT9uGZw.js} +2 -2
  40. package/dist/{image-CSeAnozE.js → image-DOnOTocl.js} +1 -1
  41. package/dist/index.js +6 -6
  42. package/dist/llm-slug-generator.js +1 -1
  43. package/dist/{models-DNAE1N7V.js → models-DKsiIvSx.js} +2 -2
  44. package/dist/{models-cli-D4r8mM-2.js → models-cli-BS6UJ98e.js} +3 -3
  45. package/dist/{models-cli-8eJPrb5l.js → models-cli-ULbdeSgc.js} +2 -2
  46. package/dist/{onboard-D0g_JIWM.js → onboard-B387frTY.js} +2 -2
  47. package/dist/{onboard-BpaRZUFQ.js → onboard-Bt-BwfkR.js} +2 -2
  48. package/dist/{onboard-channels-CB-ZyCGr.js → onboard-channels-COcxT5Q0.js} +1 -1
  49. package/dist/{onboard-channels-ZvSuUl2b.js → onboard-channels-ybPEmcP8.js} +1 -1
  50. package/dist/{onboarding-IkxPm5gV.js → onboarding-BibGEGIS.js} +3 -3
  51. package/dist/{onboarding-CyOPHuUh.js → onboarding-CdN_NU2d.js} +3 -3
  52. package/dist/{onboarding.finalize-5dMqw7-V.js → onboarding.finalize-CY1NjrGb.js} +6 -6
  53. package/dist/{onboarding.finalize-lCFDn1Vv.js → onboarding.finalize-CvahVrDM.js} +5 -5
  54. package/dist/{pi-embedded-CG1sbHWR.js → pi-embedded-BvCoZBNg.js} +195 -16
  55. package/dist/{pi-embedded-B17xy2tl.js → pi-embedded-ZzUH4ioO.js} +181 -2
  56. package/dist/{pi-embedded-helpers-BmYZe8o8.js → pi-embedded-helpers--yFTAWwW.js} +4 -4
  57. package/dist/{plugin-registry-JZqN81Bo.js → plugin-registry-BAbkdLQ7.js} +1 -1
  58. package/dist/{plugin-registry-utopggWM.js → plugin-registry-CEoSVvL1.js} +1 -1
  59. package/dist/plugin-sdk/agents/plan-mode.d.ts +32 -0
  60. package/dist/plugin-sdk/{channel-web-8rBzJFux.js → channel-web-xXTpy0N_.js} +1 -1
  61. package/dist/plugin-sdk/index.js +2 -2
  62. package/dist/plugin-sdk/{reply-1OERlD_o.js → reply-EEvLfWgt.js} +181 -2
  63. package/dist/plugin-sdk/{web-BwotpS8M.js → web-COWtpMAH.js} +2 -2
  64. package/dist/{plugins-cli-3juF8qAN.js → plugins-cli-BpuQ7Y9l.js} +2 -2
  65. package/dist/{plugins-cli-VgPcQbvD.js → plugins-cli-C_S07pgO.js} +2 -2
  66. package/dist/{program-D--d7gXJ.js → program-cO9YX6wL.js} +7 -7
  67. package/dist/{program-context-6lrCsf93.js → program-context-QBBvnWFX.js} +17 -17
  68. package/dist/{prompt-select-styled-B7Ou3g-A.js → prompt-select-styled-CepuQSKg.js} +4 -4
  69. package/dist/{prompt-select-styled-BDPi1gAG.js → prompt-select-styled-D3dYbx2P.js} +4 -4
  70. package/dist/{provider-auth-helpers-D8shQq80.js → provider-auth-helpers-BMACaaEd.js} +1 -1
  71. package/dist/{provider-auth-helpers-DVt5O7L_.js → provider-auth-helpers-DXqvuBCi.js} +1 -1
  72. package/dist/{push-apns-CZnm2rUK.js → push-apns-8YIzbTM7.js} +1 -1
  73. package/dist/{push-apns-CBcDG6uB.js → push-apns-DhZgao_r.js} +1 -1
  74. package/dist/{pw-ai-s-d46DCX.js → pw-ai-C_C5as1t.js} +1 -1
  75. package/dist/{register.agent-D7-4LkI4.js → register.agent-CSUoUVKd.js} +6 -6
  76. package/dist/{register.agent-BWc0MoWn.js → register.agent-CiTS9lyx.js} +5 -5
  77. package/dist/{register.configure-BV-ZFMB7.js → register.configure-BbE9MAer.js} +6 -6
  78. package/dist/{register.configure-DCjQSKxq.js → register.configure-CuCVLOW0.js} +6 -6
  79. package/dist/{register.maintenance-C5sEBWXo.js → register.maintenance-CJG75LTu.js} +8 -8
  80. package/dist/{register.maintenance-CVi1e2Ji.js → register.maintenance-D8bthvou.js} +7 -7
  81. package/dist/{register.message-DFRfxv1G.js → register.message-CyqE4E2O.js} +2 -2
  82. package/dist/{register.message-0N9DueQZ.js → register.message-nUpHGrEE.js} +2 -2
  83. package/dist/{register.onboard-CW1Uz6hU.js → register.onboard-BDlne5KX.js} +4 -4
  84. package/dist/{register.onboard-DrrdbypK.js → register.onboard-Dlw-TCPH.js} +4 -4
  85. package/dist/{register.setup-rFeo1KBD.js → register.setup-B8kiMuah.js} +4 -4
  86. package/dist/{register.setup-DfWYqqXp.js → register.setup-ByMyofSq.js} +4 -4
  87. package/dist/{register.status-health-sessions-D775ye0Z.js → register.status-health-sessions-0odRpA-p.js} +3 -3
  88. package/dist/{register.status-health-sessions-B1AYiTUy.js → register.status-health-sessions-Diirshgb.js} +3 -3
  89. package/dist/{register.subclis-J68HyfeW.js → register.subclis-CqEj9vfW.js} +9 -9
  90. package/dist/{reply-D3vL1h90.js → reply-B9o45s3E.js} +181 -2
  91. package/dist/{run-main-sIDR93j4.js → run-main-C__lZ7VF.js} +14 -14
  92. package/dist/{runner-CJJY2r19.js → runner-uDZlTCm2.js} +1 -1
  93. package/dist/{server-methods-BFzqiN9K.js → server-methods-B_NSJmhc.js} +7 -7
  94. package/dist/{server-methods-BLiOVI3R.js → server-methods-Df9KsV_-.js} +7 -7
  95. package/dist/{server-node-events-Culy5cRa.js → server-node-events-C2mugatX.js} +2 -2
  96. package/dist/{server-node-events-DPZocSBy.js → server-node-events-ZG0SBDkU.js} +2 -2
  97. package/dist/{status-Bwu1EbC5.js → status-BTF6_aBO.js} +1 -1
  98. package/dist/{status-BG-HNnfA.js → status-BytVj4kU.js} +1 -1
  99. package/dist/{status-D7_avdQF.js → status-PADx9rG7.js} +2 -2
  100. package/dist/{status-CFu6iTAd.js → status-hgm5EhwS.js} +2 -2
  101. package/dist/{subagent-registry-CQ_bEF7T.js → subagent-registry-BR2Qhqjf.js} +181 -2
  102. package/dist/{update-cli-BYU_o1qK.js → update-cli-CHr8rjf-.js} +8 -8
  103. package/dist/{update-cli-CxaBQq_C.js → update-cli-qacplfF4.js} +7 -7
  104. package/dist/{update-runner-DMFIbvG9.js → update-runner-DM8zQvQB.js} +1 -1
  105. package/dist/{update-runner-IitPp27-.js → update-runner-DNA7FJa2.js} +1 -1
  106. package/dist/{web-C_4x-6nn.js → web-0bP0TLM2.js} +1 -1
  107. package/dist/{web-CfxeKotB.js → web-DkQc82PT.js} +1 -1
  108. package/dist/{web-JrjUXFo9.js → web-G0LUda_q.js} +6 -6
  109. package/dist/{web-Bv6joRhQ.js → web-UroM-w6c.js} +2 -2
  110. package/docs/reference/templates/AGENTS.md +18 -0
  111. package/docs/reference/templates/SYMICORE.md +2 -0
  112. package/docs/reference/templates/SYMIPULSE.md +57 -39
  113. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
2
2
  import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
3
- import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-1OERlD_o.js";
3
+ import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-EEvLfWgt.js";
4
4
  import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry--_pGht6S.js";
5
5
  import { n as loadConfig } from "./config-Do1-fcaS.js";
6
6
  import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
@@ -1,6 +1,6 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
2
  import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-D9zGZU5t.js";
3
- import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-1OERlD_o.js";
3
+ import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-EEvLfWgt.js";
4
4
  import "./paths-DR2yt_mP.js";
5
5
  import "./github-copilot-token-D9X2phUj.js";
6
6
  import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-BbAvhC25.js";
@@ -47,7 +47,7 @@ import "./paths-A0xdf3yk.js";
47
47
  import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-mFf4i4G9.js";
48
48
  import { n as extractOriginalFilename } from "./store-Do3t33-c.js";
49
49
  import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BkCUbYGV.js";
50
- import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-8rBzJFux.js";
50
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-xXTpy0N_.js";
51
51
  import "./image-k_W1USVr.js";
52
52
  import "./pi-model-discovery-LbcEa65a.js";
53
53
  import "./api-key-rotation-Qy7QGV8_.js";
@@ -26834,7 +26834,7 @@ async function runWithImageModelFallback(params) {
26834
26834
  function createDefaultDeps() {
26835
26835
  return {
26836
26836
  sendMessageWhatsApp: async (...args) => {
26837
- const { sendMessageWhatsApp } = await import("./web-BwotpS8M.js");
26837
+ const { sendMessageWhatsApp } = await import("./web-COWtpMAH.js");
26838
26838
  return await sendMessageWhatsApp(...args);
26839
26839
  },
26840
26840
  sendMessageTelegram: async (...args) => {
@@ -44457,7 +44457,7 @@ function loadWebLoginQr() {
44457
44457
  return webLoginQrPromise;
44458
44458
  }
44459
44459
  function loadWebChannel() {
44460
- webChannelPromise ??= import("./web-BwotpS8M.js");
44460
+ webChannelPromise ??= import("./web-COWtpMAH.js");
44461
44461
  return webChannelPromise;
44462
44462
  }
44463
44463
  function loadWhatsAppActions() {
@@ -66219,6 +66219,152 @@ function subscribeEmbeddedPiSession(params) {
66219
66219
  };
66220
66220
  }
66221
66221
 
66222
+ //#endregion
66223
+ //#region src/agents/plan-mode.ts
66224
+ /**
66225
+ * Plan Mode — automatic complexity detection and structured planning.
66226
+ *
66227
+ * When a user message is complex (multi-step, multi-file, refactoring, etc.),
66228
+ * Symi auto-enters plan mode: read-only investigation → structured plan →
66229
+ * user approval → context-cleared execution.
66230
+ */
66231
+ const PLAN_KEYWORDS = new Set([
66232
+ "investigate",
66233
+ "refactor",
66234
+ "migrate",
66235
+ "redesign",
66236
+ "set up",
66237
+ "setup",
66238
+ "build",
66239
+ "implement",
66240
+ "architect",
66241
+ "overhaul",
66242
+ "restructure",
66243
+ "rewrite"
66244
+ ]);
66245
+ const ANALYSIS_KEYWORDS = new Set([
66246
+ "analyze",
66247
+ "analyse",
66248
+ "compare",
66249
+ "audit",
66250
+ "review",
66251
+ "evaluate",
66252
+ "assess"
66253
+ ]);
66254
+ const SEQUENTIAL_MARKERS = [
66255
+ /\bthen\b/i,
66256
+ /\bafter that\b/i,
66257
+ /\bonce .+ is done\b/i,
66258
+ /\bnext,?\s/i,
66259
+ /\bfollowed by\b/i,
66260
+ /\bfinally\b/i
66261
+ ];
66262
+ const NUMBERED_LIST_RE = /^\s*\d+[.)]\s/gm;
66263
+ const FILE_PATH_RE = /(?:\/[\w.-]+){2,}|[\w.-]+\.[a-z]{1,4}/g;
66264
+ /**
66265
+ * Score a user message for complexity.
66266
+ * Returns a numeric score; >= PLAN_MODE_THRESHOLD triggers plan mode.
66267
+ */
66268
+ function scorePlanComplexity(prompt) {
66269
+ let score = 0;
66270
+ const lower = prompt.toLowerCase();
66271
+ if (prompt.length > 500) {
66272
+ if ([...PLAN_KEYWORDS, ...ANALYSIS_KEYWORDS].some((kw) => lower.includes(kw)) || FILE_PATH_RE.test(prompt)) score += 3;
66273
+ }
66274
+ const numberedItems = prompt.match(NUMBERED_LIST_RE);
66275
+ if (numberedItems && numberedItems.length >= 3) score += 2;
66276
+ for (const kw of PLAN_KEYWORDS) if (lower.includes(kw)) {
66277
+ score += 2;
66278
+ break;
66279
+ }
66280
+ for (const re of SEQUENTIAL_MARKERS) if (re.test(prompt)) {
66281
+ score += 2;
66282
+ break;
66283
+ }
66284
+ const filePaths = prompt.match(FILE_PATH_RE);
66285
+ if (filePaths && new Set(filePaths).size >= 2) score += 1;
66286
+ for (const kw of ANALYSIS_KEYWORDS) if (lower.includes(kw)) {
66287
+ score += 1;
66288
+ break;
66289
+ }
66290
+ return score;
66291
+ }
66292
+ const PLAN_MODE_THRESHOLD = 5;
66293
+ /**
66294
+ * Determine whether a prompt should trigger plan mode.
66295
+ *
66296
+ * Priority:
66297
+ * 1. /plan prefix → always
66298
+ * 2. /noplan prefix → never
66299
+ * 3. Subagent/cron sessions → never
66300
+ * 4. Heuristic scoring
66301
+ */
66302
+ function shouldEnterPlanMode(prompt, opts = {}) {
66303
+ const trimmed = prompt.trim();
66304
+ if (/^\/plan\b/i.test(trimmed)) return {
66305
+ enter: true,
66306
+ reason: "explicit /plan directive",
66307
+ score: 99,
66308
+ stripped: trimmed.replace(/^\/plan\s*/i, "").trim()
66309
+ };
66310
+ if (/^\/noplan\b/i.test(trimmed)) return {
66311
+ enter: false,
66312
+ reason: "explicit /noplan directive",
66313
+ score: 0,
66314
+ stripped: trimmed.replace(/^\/noplan\s*/i, "").trim()
66315
+ };
66316
+ if (opts.isSubagent) return {
66317
+ enter: false,
66318
+ reason: "subagent session",
66319
+ score: 0
66320
+ };
66321
+ if (opts.isCron) return {
66322
+ enter: false,
66323
+ reason: "cron session",
66324
+ score: 0
66325
+ };
66326
+ const score = scorePlanComplexity(trimmed);
66327
+ if (score >= PLAN_MODE_THRESHOLD) return {
66328
+ enter: true,
66329
+ reason: `complexity score ${score} >= ${PLAN_MODE_THRESHOLD}`,
66330
+ score
66331
+ };
66332
+ return {
66333
+ enter: false,
66334
+ reason: `complexity score ${score} < ${PLAN_MODE_THRESHOLD}`,
66335
+ score
66336
+ };
66337
+ }
66338
+ const PLAN_MODE_SYSTEM_PROMPT = `<plan_mode>
66339
+ You have entered PLAN MODE because this task is complex.
66340
+
66341
+ RULES:
66342
+ - DO NOT write, edit, or create any files yet
66343
+ - DO NOT execute destructive commands (rm, mv, git reset, etc.)
66344
+ - DO read files, search code, check runtime state
66345
+ - DO use memory_search, web_search, exec (read-only commands like ls, cat, git status, git log)
66346
+ - Produce a detailed step-by-step implementation plan
66347
+
66348
+ OUTPUT FORMAT:
66349
+ 1. **Summary** — what needs to be done and why
66350
+ 2. **Investigation** — files read, code searched, state checked
66351
+ 3. **Files to modify** — list every file that will be created, edited, or deleted
66352
+ 4. **Implementation phases** — numbered steps with:
66353
+ - What changes in each phase
66354
+ - Which files are touched
66355
+ - Dependencies on prior phases
66356
+ 5. **Risks & considerations** — things that could go wrong, edge cases, rollback strategy
66357
+
66358
+ After presenting the plan, ask the user to choose one of these options.
66359
+ Present these as inline buttons if the channel supports them:
66360
+ - **Proceed** — clear context and execute the plan
66361
+ - **Modify** — adjust the plan based on feedback
66362
+ - **Cancel** — abandon the plan
66363
+
66364
+ Use the message tool with buttons:
66365
+ [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
66366
+ </plan_mode>`;
66367
+
66222
66368
  //#endregion
66223
66369
  //#region src/agents/pi-embedded-runner/abort.ts
66224
66370
  /**
@@ -67450,6 +67596,39 @@ async function runEmbeddedAttempt(params) {
67450
67596
  effectivePrompt = `${hookResult.prependContext}\n\n${params.prompt}`;
67451
67597
  log$2.debug(`hooks: prepended context to prompt (${hookResult.prependContext.length} chars)`);
67452
67598
  }
67599
+ {
67600
+ const autoRecallAgentId = normalizeAgentId(params.sessionKey);
67601
+ if ((params.config ? resolveMemorySearchConfig(params.config, autoRecallAgentId) : null) && params.config) try {
67602
+ const { manager } = await getMemorySearchManager({
67603
+ cfg: params.config,
67604
+ agentId: autoRecallAgentId
67605
+ });
67606
+ if (manager) {
67607
+ const recallResults = await manager.search(params.prompt, {
67608
+ maxResults: 4,
67609
+ sessionKey: params.sessionKey
67610
+ });
67611
+ if (recallResults.length > 0) {
67612
+ const recallBlock = `<memory_context>\nThe following memory snippets were automatically retrieved as relevant context:\n\n${recallResults.map((r) => `[${r.path}#L${r.startLine}-L${r.endLine}]\n${r.snippet}`).join("\n---\n")}\n</memory_context>`;
67613
+ effectivePrompt = `${recallBlock}\n\n${effectivePrompt}`;
67614
+ log$2.debug(`auto-recall: injected ${recallResults.length} snippets (${recallBlock.length} chars)`);
67615
+ }
67616
+ }
67617
+ } catch (recallErr) {
67618
+ log$2.debug(`auto-recall: skipped (${String(recallErr)})`);
67619
+ }
67620
+ }
67621
+ {
67622
+ const planResult = shouldEnterPlanMode(effectivePrompt, {
67623
+ isSubagent: isSubagentSessionKey(params.sessionKey),
67624
+ isCron: isCronSessionKey(params.sessionKey)
67625
+ });
67626
+ if (planResult.enter) {
67627
+ if (planResult.stripped != null) effectivePrompt = planResult.stripped;
67628
+ effectivePrompt = `${PLAN_MODE_SYSTEM_PROMPT}\n\n${effectivePrompt}`;
67629
+ log$2.info(`plan-mode: activated (${planResult.reason}) for runId=${params.runId}`);
67630
+ } else if (planResult.stripped != null) effectivePrompt = planResult.stripped;
67631
+ }
67453
67632
  log$2.debug(`embedded run prompt start: runId=${params.runId} sessionId=${params.sessionId}`);
67454
67633
  cacheTrace?.recordStage("prompt:before", {
67455
67634
  prompt: effectivePrompt,
@@ -1,5 +1,5 @@
1
1
  import { a as WA_WEB_AUTH_DIR, g as webAuthExists, s as logWebSelfId, u as pickWebChannel } from "./accounts-D9zGZU5t.js";
2
- import "./reply-1OERlD_o.js";
2
+ import "./reply-EEvLfWgt.js";
3
3
  import "./paths-DR2yt_mP.js";
4
4
  import "./github-copilot-token-D9X2phUj.js";
5
5
  import "./plugins-BbAvhC25.js";
@@ -45,7 +45,7 @@ import "./pi-embedded-helpers-Cs2-_EpL.js";
45
45
  import "./paths-A0xdf3yk.js";
46
46
  import "./diagnostic-mFf4i4G9.js";
47
47
  import "./store-Do3t33-c.js";
48
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-8rBzJFux.js";
48
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-xXTpy0N_.js";
49
49
  import "./image-k_W1USVr.js";
50
50
  import "./pi-model-discovery-LbcEa65a.js";
51
51
  import "./api-key-rotation-Qy7QGV8_.js";
@@ -13,7 +13,7 @@ import "./client-LeVQns9-.js";
13
13
  import "./call-BQiCOxB6.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-CQ_bEF7T.js";
16
+ import "./subagent-registry-BR2Qhqjf.js";
17
17
  import "./sessions-DJAxaVI7.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -102,7 +102,7 @@ import "./npm-registry-spec-DkaZNHAW.js";
102
102
  import "./skill-scanner-BGWOBqLY.js";
103
103
  import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-CgQpVncj.js";
104
104
  import { t as renderTable } from "./table-D01d2GuY.js";
105
- import { t as buildPluginStatusReport } from "./status-Bwu1EbC5.js";
105
+ import { t as buildPluginStatusReport } from "./status-BTF6_aBO.js";
106
106
  import { n as updateNpmInstalledPlugins } from "./update-DEMKx4eC.js";
107
107
  import os from "node:os";
108
108
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, S as shortenHomePath, g as resolveConfigDir, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-D3vL1h90.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";
@@ -106,7 +106,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
106
106
  import "./skill-scanner-CLs8u6vQ.js";
107
107
  import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-C1Cebk97.js";
108
108
  import { t as renderTable } from "./table-BTgkRafz.js";
109
- import { t as buildPluginStatusReport } from "./status-BG-HNnfA.js";
109
+ import { t as buildPluginStatusReport } from "./status-BytVj4kU.js";
110
110
  import { n as updateNpmInstalledPlugins } from "./update-rw7wJwHd.js";
111
111
  import fs from "node:fs";
112
112
  import os from "node:os";
@@ -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-CQ_bEF7T.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,13 +99,13 @@ import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-sIj1ZLt-.js";
100
100
  import "./pi-tools.policy-T6Z5F-_n.js";
101
101
  import "./catalog-DLQFKucJ.js";
102
- import "./plugin-registry-JZqN81Bo.js";
103
- import { n as resolveCliChannelOptions } from "./channel-options-BoQfMXlN.js";
104
- import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-J68HyfeW.js";
105
- import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-CPE-hn3o.js";
102
+ import "./plugin-registry-BAbkdLQ7.js";
103
+ import { n as resolveCliChannelOptions } from "./channel-options-D74Jofp4.js";
104
+ import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-CqEj9vfW.js";
105
+ import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-Cde2LqTh.js";
106
106
  import { r as setProgramContext } from "./program-context-CqzR_m-7.js";
107
107
  import { t as forceFreePort } from "./ports-Dn122MUd.js";
108
- import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-ZI2qDzNS.js";
108
+ import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-B-joBGLz.js";
109
109
  import { Command } from "commander";
110
110
 
111
111
  //#region src/cli/program/context.ts
@@ -213,7 +213,7 @@ function registerPreActionHooks(program, programVersion) {
213
213
  commandPath
214
214
  });
215
215
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
216
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-JZqN81Bo.js").then((n) => n.n);
216
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-BAbkdLQ7.js").then((n) => n.n);
217
217
  ensurePluginRegistryLoaded();
218
218
  }
219
219
  });
@@ -43,7 +43,7 @@ const entries = [
43
43
  description: "Run, inspect, and query the WebSocket Gateway",
44
44
  hasSubcommands: true,
45
45
  register: async (program) => {
46
- (await import("./gateway-cli-CRyelGVH.js")).registerGatewayCli(program);
46
+ (await import("./gateway-cli-DyqK4XZ1.js")).registerGatewayCli(program);
47
47
  }
48
48
  },
49
49
  {
@@ -75,7 +75,7 @@ const entries = [
75
75
  description: "Discover, scan, and configure models",
76
76
  hasSubcommands: true,
77
77
  register: async (program) => {
78
- (await import("./models-cli-8eJPrb5l.js")).registerModelsCli(program);
78
+ (await import("./models-cli-ULbdeSgc.js")).registerModelsCli(program);
79
79
  }
80
80
  },
81
81
  {
@@ -155,7 +155,7 @@ const entries = [
155
155
  description: "Manage internal agent hooks",
156
156
  hasSubcommands: true,
157
157
  register: async (program) => {
158
- (await import("./hooks-cli-CyX25xDg.js")).registerHooksCli(program);
158
+ (await import("./hooks-cli-DOT9uGZw.js")).registerHooksCli(program);
159
159
  }
160
160
  },
161
161
  {
@@ -179,7 +179,7 @@ const entries = [
179
179
  description: "Secure DM pairing (approve inbound requests)",
180
180
  hasSubcommands: true,
181
181
  register: async (program) => {
182
- const { registerPluginCliCommands } = await import("./cli-Dt0gEtAK.js");
182
+ const { registerPluginCliCommands } = await import("./cli-DQQAfUbo.js");
183
183
  registerPluginCliCommands(program, await loadConfig());
184
184
  (await import("./pairing-cli-7_4ayuXX.js")).registerPairingCli(program);
185
185
  }
@@ -189,8 +189,8 @@ const entries = [
189
189
  description: "Manage Symi plugins and extensions",
190
190
  hasSubcommands: true,
191
191
  register: async (program) => {
192
- (await import("./plugins-cli-VgPcQbvD.js")).registerPluginsCli(program);
193
- const { registerPluginCliCommands } = await import("./cli-Dt0gEtAK.js");
192
+ (await import("./plugins-cli-C_S07pgO.js")).registerPluginsCli(program);
193
+ const { registerPluginCliCommands } = await import("./cli-DQQAfUbo.js");
194
194
  registerPluginCliCommands(program, await loadConfig());
195
195
  }
196
196
  },
@@ -199,7 +199,7 @@ const entries = [
199
199
  description: "Manage connected chat channels (Telegram, Discord, etc.)",
200
200
  hasSubcommands: true,
201
201
  register: async (program) => {
202
- (await import("./channels-cli-CdNqd2p-.js")).registerChannelsCli(program);
202
+ (await import("./channels-cli-D3lj5dXo.js")).registerChannelsCli(program);
203
203
  }
204
204
  },
205
205
  {
@@ -231,7 +231,7 @@ const entries = [
231
231
  description: "Update Symi and inspect update channel status",
232
232
  hasSubcommands: true,
233
233
  register: async (program) => {
234
- (await import("./update-cli-CxaBQq_C.js")).registerUpdateCli(program);
234
+ (await import("./update-cli-qacplfF4.js")).registerUpdateCli(program);
235
235
  }
236
236
  },
237
237
  {
@@ -239,7 +239,7 @@ const entries = [
239
239
  description: "Generate shell completion script",
240
240
  hasSubcommands: false,
241
241
  register: async (program) => {
242
- (await import("./completion-cli-CcOS-aPd.js").then((n) => n.n)).registerCompletionCli(program);
242
+ (await import("./completion-cli-Cx9htCOm.js").then((n) => n.n)).registerCompletionCli(program);
243
243
  }
244
244
  }
245
245
  ];
@@ -302,7 +302,7 @@ const coreEntries = [
302
302
  hasSubcommands: false
303
303
  }],
304
304
  register: async ({ program }) => {
305
- (await import("./register.setup-rFeo1KBD.js")).registerSetupCommand(program);
305
+ (await import("./register.setup-B8kiMuah.js")).registerSetupCommand(program);
306
306
  }
307
307
  },
308
308
  {
@@ -312,7 +312,7 @@ const coreEntries = [
312
312
  hasSubcommands: false
313
313
  }],
314
314
  register: async ({ program }) => {
315
- (await import("./register.onboard-DrrdbypK.js")).registerOnboardCommand(program);
315
+ (await import("./register.onboard-Dlw-TCPH.js")).registerOnboardCommand(program);
316
316
  }
317
317
  },
318
318
  {
@@ -322,7 +322,7 @@ const coreEntries = [
322
322
  hasSubcommands: false
323
323
  }],
324
324
  register: async ({ program }) => {
325
- (await import("./register.configure-BV-ZFMB7.js")).registerConfigureCommand(program);
325
+ (await import("./register.configure-BbE9MAer.js")).registerConfigureCommand(program);
326
326
  }
327
327
  },
328
328
  {
@@ -332,7 +332,7 @@ const coreEntries = [
332
332
  hasSubcommands: true
333
333
  }],
334
334
  register: async ({ program }) => {
335
- (await import("./config-cli-B7C8rH_M.js")).registerConfigCli(program);
335
+ (await import("./config-cli-C5-P9Nzz.js")).registerConfigCli(program);
336
336
  }
337
337
  },
338
338
  {
@@ -359,7 +359,7 @@ const coreEntries = [
359
359
  }
360
360
  ],
361
361
  register: async ({ program }) => {
362
- (await import("./register.maintenance-CVi1e2Ji.js")).registerMaintenanceCommands(program);
362
+ (await import("./register.maintenance-D8bthvou.js")).registerMaintenanceCommands(program);
363
363
  }
364
364
  },
365
365
  {
@@ -369,7 +369,7 @@ const coreEntries = [
369
369
  hasSubcommands: true
370
370
  }],
371
371
  register: async ({ program, ctx }) => {
372
- (await import("./register.message-0N9DueQZ.js")).registerMessageCommands(program, ctx);
372
+ (await import("./register.message-nUpHGrEE.js")).registerMessageCommands(program, ctx);
373
373
  }
374
374
  },
375
375
  {
@@ -393,7 +393,7 @@ const coreEntries = [
393
393
  hasSubcommands: true
394
394
  }],
395
395
  register: async ({ program, ctx }) => {
396
- (await import("./register.agent-BWc0MoWn.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
396
+ (await import("./register.agent-CiTS9lyx.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
397
397
  }
398
398
  },
399
399
  {
@@ -415,7 +415,7 @@ const coreEntries = [
415
415
  }
416
416
  ],
417
417
  register: async ({ program }) => {
418
- (await import("./register.status-health-sessions-B1AYiTUy.js")).registerStatusHealthSessionsCommands(program);
418
+ (await import("./register.status-health-sessions-Diirshgb.js")).registerStatusHealthSessionsCommands(program);
419
419
  }
420
420
  },
421
421
  {
@@ -1,6 +1,6 @@
1
1
  import { d as resolveIsNixMode, g as resolveStateDir, m as resolveOAuthDir, t as CONFIG_PATH, u as resolveGatewayPort, y as resolveRequiredHomeDir } from "./paths-Cqn-zk3M.js";
2
2
  import { C as sleep, S as shortenHomePath, U as getResolvedLoggerSettings, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
- import { gt as loadSymiPlugins, hr as formatRemainingShort, mr as buildAuthHealthSummary, pr as DEFAULT_OAUTH_WARN_MS } from "./reply-D3vL1h90.js";
3
+ import { gt as loadSymiPlugins, hr as formatRemainingShort, mr as buildAuthHealthSummary, pr as DEFAULT_OAUTH_WARN_MS } from "./reply-B9o45s3E.js";
4
4
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
5
5
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
6
6
  import { n as runExec, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
@@ -34,16 +34,16 @@ import { a as launchAgentPlistExists, i as isLaunchAgentLoaded, o as repairLaunc
34
34
  import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, o as needsNodeRuntimeMigration, r as SERVICE_AUDIT_CODES, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-BBPT8Use.js";
35
35
  import { t as readLastGatewayErrorLine } from "./diagnostics-BAMlsVVX.js";
36
36
  import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-CllGjsWo.js";
37
- import { r as healthCommand } from "./health-BqurBycG.js";
37
+ import { r as healthCommand } from "./health-Q1RP1M2f.js";
38
38
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Z947tKLt.js";
39
39
  import { t as resolveDmAllowState } from "./dm-policy-shared-DckBYBwg.js";
40
- import { t as runGatewayUpdate } from "./update-runner-DMFIbvG9.js";
40
+ import { t as runGatewayUpdate } from "./update-runner-DM8zQvQB.js";
41
41
  import { t as resolveAgentSessionDirs } from "./session-dirs-DWgIYmAt.js";
42
42
  import { n as logConfigUpdated } from "./logging-BzzwiKjv.js";
43
43
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-B150h841.js";
44
44
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-aQ75ZlXY.js";
45
45
  import { t as formatHealthCheckFailure } from "./health-format-DSwnXZPU.js";
46
- import { n as doctorShellCompletion } from "./doctor-completion-Clr-M__Q.js";
46
+ import { n as doctorShellCompletion } from "./doctor-completion-CrN6Ly8x.js";
47
47
  import fs from "node:fs";
48
48
  import os from "node:os";
49
49
  import path from "node:path";
@@ -8,7 +8,7 @@ import { t as buildWorkspaceSkillStatus } from "./skills-status-DKXJ-tbi.js";
8
8
  import { l as writeConfigFile, o as readConfigFileSnapshot } from "./config-amjzHiWZ.js";
9
9
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BQiCOxB6.js";
10
10
  import { l as resolveGatewayBindHost, n as isLoopbackHost } from "./net-DZ5Ayk-W.js";
11
- import { _ as loadSymiPlugins, _n as formatRemainingShort, gn as buildAuthHealthSummary, hn as DEFAULT_OAUTH_WARN_MS } from "./subagent-registry-CQ_bEF7T.js";
11
+ import { _ as loadSymiPlugins, _n as formatRemainingShort, gn as buildAuthHealthSummary, hn as DEFAULT_OAUTH_WARN_MS } from "./subagent-registry-BR2Qhqjf.js";
12
12
  import { F as resolveMainSessionKey, H as cleanStaleLockFiles, o as loadSessionStore } from "./sessions-DJAxaVI7.js";
13
13
  import { n as listChannelPlugins } from "./plugins-CwSlLxM8.js";
14
14
  import { D as DEFAULT_SANDBOX_COMMON_IMAGE, E as DEFAULT_SANDBOX_BROWSER_IMAGE, O as DEFAULT_SANDBOX_IMAGE, p as resolveSandboxScope } from "./sandbox-CbuJolk2.js";
@@ -31,16 +31,16 @@ import { a as launchAgentPlistExists, i as isLaunchAgentLoaded, o as repairLaunc
31
31
  import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, o as needsNodeRuntimeMigration, r as SERVICE_AUDIT_CODES, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-Bm2H1erP.js";
32
32
  import { t as readLastGatewayErrorLine } from "./diagnostics-CS1ov_hH.js";
33
33
  import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-t04OgGMk.js";
34
- import { r as healthCommand } from "./health-DeTRr2Yi.js";
34
+ import { r as healthCommand } from "./health-UjXEBnzA.js";
35
35
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-BseSWee1.js";
36
36
  import { t as resolveDmAllowState } from "./dm-policy-shared-BovJdm5T.js";
37
- import { t as runGatewayUpdate } from "./update-runner-IitPp27-.js";
37
+ import { t as runGatewayUpdate } from "./update-runner-DNA7FJa2.js";
38
38
  import { t as resolveAgentSessionDirs } from "./session-dirs-DWgIYmAt.js";
39
39
  import { n as logConfigUpdated } from "./logging-BGewRZy0.js";
40
40
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-C_56SUPO.js";
41
41
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-DA_LW52P.js";
42
42
  import { t as formatHealthCheckFailure } from "./health-format-CzgUHmmX.js";
43
- import { n as doctorShellCompletion } from "./doctor-completion-D4wXWeDY.js";
43
+ import { n as doctorShellCompletion } from "./doctor-completion-Vwi_je1c.js";
44
44
  import { execFile } from "node:child_process";
45
45
  import os from "node:os";
46
46
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import { gt as loadSymiPlugins, ht as createPluginLoaderLogger } from "./reply-D3vL1h90.js";
1
+ import { gt as loadSymiPlugins, ht as createPluginLoaderLogger } from "./reply-B9o45s3E.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
3
3
  import { At as ensureAuthProfileStore, Ot as upsertAuthProfile, l as normalizeProviderId } from "./model-selection-Csawd2_i.js";
4
4
  import { n as isWSLEnv } from "./wsl-C4424szg.js";
@@ -1,6 +1,6 @@
1
1
  import { o as createSubsystemLogger } from "./entry.js";
2
2
  import { L as normalizeProviderId, b as ensureAuthProfileStore, v as upsertAuthProfile } from "./auth-profiles-BD22fK4p.js";
3
- import { _ as loadSymiPlugins, g as createPluginLoaderLogger } from "./subagent-registry-CQ_bEF7T.js";
3
+ import { _ as loadSymiPlugins, g as createPluginLoaderLogger } from "./subagent-registry-BR2Qhqjf.js";
4
4
  import { n as isWSLEnv } from "./wsl-jdLWdiKy.js";
5
5
  import { r as stylePromptTitle } from "./prompt-style-DwCXob2h.js";
6
6
  import { f as updateConfig } from "./shared-CLXhDldI.js";
@@ -1,7 +1,7 @@
1
1
  import { Yt as resolveStateDir, _t as isVerbose, f as shouldLogSubsystemToConsole, o as createSubsystemLogger } from "./entry.js";
2
2
  import { S as parseAgentSessionKey } from "./session-key-DjZ7Z1hW.js";
3
3
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Byh6drgn.js";
4
- import { Nn as estimateBase64DecodedBytes, m as sniffMimeFromBase64 } from "./subagent-registry-CQ_bEF7T.js";
4
+ import { Nn as estimateBase64DecodedBytes, m as sniffMimeFromBase64 } from "./subagent-registry-BR2Qhqjf.js";
5
5
  import { n as redactSensitiveText, t as getDefaultRedactPatterns } from "./redact-B40lik2B.js";
6
6
  import path from "node:path";
7
7
  import chalk from "chalk";
@@ -1,6 +1,6 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { A as isVerbose } from "./utils-B-0b9bGM.js";
3
- import { jr as estimateBase64DecodedBytes, ut as sniffMimeFromBase64 } from "./reply-D3vL1h90.js";
3
+ import { jr as estimateBase64DecodedBytes, ut as sniffMimeFromBase64 } from "./reply-B9o45s3E.js";
4
4
  import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
5
5
  import { s as shouldLogSubsystemToConsole, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
6
6
  import { n as redactSensitiveText, t as getDefaultRedactPatterns } from "./redact-f-Q-hFt_.js";
@@ -7,7 +7,7 @@ import "./github-copilot-token-BbsJ0Qbo.js";
7
7
  import { r as formatCliCommand } from "./env-CQ_DQOwT.js";
8
8
  import "./config-BjGo9GnL.js";
9
9
  import "./manifest-registry-D-mTF1cj.js";
10
- import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-B_zrSLce.js";
10
+ import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-h6BnL8Lp.js";
11
11
  import "./redact-1NGYV_8p.js";
12
12
  import { n as formatErrorMessage } from "./errors-CPfngF0S.js";
13
13
  import "./ssrf-CxfFyMRZ.js";
@@ -15,7 +15,7 @@ import "./client-LeVQns9-.js";
15
15
  import { a as randomIdempotencyKey, n as callGateway } from "./call-BQiCOxB6.js";
16
16
  import { h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES } from "./message-channel-C9dERklz.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import { T as resolveSessionKeyForRequest, k as createDefaultDeps, w as agentCommand } from "./subagent-registry-CQ_bEF7T.js";
18
+ import { T as resolveSessionKeyForRequest, k as createDefaultDeps, w as agentCommand } from "./subagent-registry-BR2Qhqjf.js";
19
19
  import "./sessions-DJAxaVI7.js";
20
20
  import "./tokens-Csntmwwn.js";
21
21
  import "./plugins-CwSlLxM8.js";
@@ -108,16 +108,16 @@ import "./install-safe-path-BK8js28D.js";
108
108
  import "./npm-registry-spec-DkaZNHAW.js";
109
109
  import "./skill-scanner-BGWOBqLY.js";
110
110
  import "./installs-CgQpVncj.js";
111
- import "./onboard-channels-ZvSuUl2b.js";
111
+ import "./onboard-channels-ybPEmcP8.js";
112
112
  import "./config-validation-BHjDr-an.js";
113
113
  import { t as collectOption } from "./helpers-ITexi1_a.js";
114
- import "./agents.config-DXm0itk8.js";
114
+ import "./agents.config-yx78oSLx.js";
115
115
  import "./shared-CLXhDldI.js";
116
116
  import "./auth-token-CNnt7guc.js";
117
117
  import "./logging-BGewRZy0.js";
118
- import "./provider-auth-helpers-DVt5O7L_.js";
119
- import { a as agentsAddCommand, i as agentsDeleteCommand, n as agentsListCommand, r as agentsSetIdentityCommand } from "./agents-CY07X24i.js";
120
- import "./auth-choice-CmzYHI9W.js";
118
+ import "./provider-auth-helpers-DXqvuBCi.js";
119
+ import { a as agentsAddCommand, i as agentsDeleteCommand, n as agentsListCommand, r as agentsSetIdentityCommand } from "./agents-CNsMe4Dr.js";
120
+ import "./auth-choice-CXMFi9LR.js";
121
121
  import "./openai-model-default-DJwRgrAC.js";
122
122
  import "./model-picker-ay4NPk8S.js";
123
123