@symerian/symi 2.9.2 → 2.9.4

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 (173) hide show
  1. package/dist/{agents-DTl30WoB.js → agents-CMoRbMNW.js} +4 -4
  2. package/dist/{agents.config-CO8F9mkD.js → agents.config-BLuBIvek.js} +1 -1
  3. package/dist/{agents.config-CZ3GFxPg.js → agents.config-Ebtya9aN.js} +1 -1
  4. package/dist/{audio-preflight-DQR2Ivi-.js → audio-preflight-CbyJ_yDs.js} +4 -4
  5. package/dist/{auth-choice-BYDGn7lJ.js → auth-choice-C_lflrPV.js} +1 -1
  6. package/dist/{auth-choice-BoOyy-ZT.js → auth-choice-DAMY302C.js} +1 -1
  7. package/dist/{banner-D4MiyUnv.js → banner-4mmBVDxd.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +7 -7
  10. package/dist/bundled/session-memory/handler.js +7 -7
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-B6qP-vR-.js → channel-options-CqEImsEx.js} +1 -1
  13. package/dist/{channel-options-BiSSYYQC.js → channel-options-lJBshQMV.js} +1 -1
  14. package/dist/{channel-web-DP97EUhx.js → channel-web-CBC2RSBF.js} +1 -1
  15. package/dist/{channels-cli-CE_A3Hai.js → channels-cli-BqW1HbHG.js} +6 -6
  16. package/dist/{channels-cli-6LNvJQPb.js → channels-cli-CqtSKE5p.js} +6 -6
  17. package/dist/{chrome-BaMQiegP.js → chrome-CJHOBnUB.js} +7 -7
  18. package/dist/{cli-D4j_JTug.js → cli-B1Dxc2DT.js} +3 -3
  19. package/dist/{cli-DwQ3mqhI.js → cli-CjgvXavV.js} +3 -3
  20. package/dist/{command-registry-b62Qpsi2.js → command-registry-iESIIBvf.js} +10 -10
  21. package/dist/{completion-cli-DUT2XYgK.js → completion-cli-BEddBU3C.js} +2 -2
  22. package/dist/{completion-cli-RQyC3L-t.js → completion-cli-euUBlC-J.js} +1 -1
  23. package/dist/{config-cli-Di8VOhbp.js → config-cli-CAl0wtaC.js} +1 -1
  24. package/dist/{config-cli-H52N8rp1.js → config-cli-DG8UgJ6z.js} +1 -1
  25. package/dist/{configure-BF9crM5K.js → configure-B3AtbkbP.js} +3 -3
  26. package/dist/{configure-DQxuawe-.js → configure-CtYsABUS.js} +3 -3
  27. package/dist/{deliver-Dx39g9ey.js → deliver-D5655IkX.js} +1 -1
  28. package/dist/{doctor-completion-BKXQ50ee.js → doctor-completion-B-Oak4dP.js} +1 -1
  29. package/dist/{doctor-completion-BS2JEeZy.js → doctor-completion-BGriRzaq.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +2 -2
  32. package/dist/{gateway-cli-Do9KUPqe.js → gateway-cli-CPligm4B.js} +11 -11
  33. package/dist/{gateway-cli-moPf-zP5.js → gateway-cli-CrgMw50H.js} +11 -11
  34. package/dist/{glass-ui-ws-Dfro-3R8.js → glass-ui-ws-BmrBGwq0.js} +9 -9
  35. package/dist/{glass-ui-ws-D53pvIov.js → glass-ui-ws-JoAL8aXB.js} +9 -9
  36. package/dist/{health-BQGRC0xh.js → health-BFlZuHVH.js} +1 -1
  37. package/dist/{health-CV741PBg.js → health-C5cdo2e_.js} +1 -1
  38. package/dist/{hooks-cli-CG-PDY2U.js → hooks-cli-BHOi35KU.js} +4 -4
  39. package/dist/{hooks-cli-CWXGIL9L.js → hooks-cli-DFDzJIQJ.js} +4 -4
  40. package/dist/{image-C-JvPPpM.js → image-BqpivNGG.js} +1 -1
  41. package/dist/index.js +8 -8
  42. package/dist/llm-slug-generator.js +7 -7
  43. package/dist/{manager-B_2KzUSI.js → manager-Ca7NOWdK.js} +1 -1
  44. package/dist/{manager-yrUe0KOT.js → manager-DNxvT0P-.js} +1 -1
  45. package/dist/{manager-Bc-MeMho.js → manager-DlNP6Nui.js} +1 -1
  46. package/dist/{manager-CLPHK-qG.js → manager-SbxZtjEc.js} +1 -1
  47. package/dist/{memory-cli-3RSIw4no.js → memory-cli-D2LaloPq.js} +3 -3
  48. package/dist/{memory-cli-BKNnDIdx.js → memory-cli-xSpyRUEV.js} +3 -3
  49. package/dist/{models-D_C2JFPw.js → models-C6MaesB8.js} +2 -2
  50. package/dist/{models-cli-DQE60EtL.js → models-cli-4IVFNhw8.js} +5 -5
  51. package/dist/{models-cli-j2O4e1Lu.js → models-cli-CjcsH00X.js} +4 -4
  52. package/dist/{onboard-DUIZfWqa.js → onboard-BoXWv3OF.js} +2 -2
  53. package/dist/{onboard-Ckw89oRF.js → onboard-Dk5UFbaj.js} +2 -2
  54. package/dist/{onboard-channels-B8Ouc5sR.js → onboard-channels-BQ-TPkl5.js} +1 -1
  55. package/dist/{onboard-channels-Oa9IlsGt.js → onboard-channels-DSIBGif0.js} +1 -1
  56. package/dist/{onboarding-Cjh-Y8ha.js → onboarding-CvCh0fyS.js} +3 -3
  57. package/dist/{onboarding-JFWHlqAb.js → onboarding-p3SCUopW.js} +3 -3
  58. package/dist/{onboarding.finalize-CkGLgiEA.js → onboarding.finalize-CrmmBrzK.js} +7 -7
  59. package/dist/{onboarding.finalize-spzEoVkm.js → onboarding.finalize-l2qeYvn5.js} +8 -8
  60. package/dist/{pi-embedded-D6Zi01El.js → pi-embedded-DaTqseIp.js} +105 -54
  61. package/dist/{pi-embedded-helpers-B1P8lkqj.js → pi-embedded-helpers-CU-kYRrF.js} +4 -4
  62. package/dist/{plugin-registry-CYglC746.js → plugin-registry-B_IeViDg.js} +1 -1
  63. package/dist/{plugin-registry-zGF6HUkQ.js → plugin-registry-BmdLxUZd.js} +1 -1
  64. package/dist/plugin-sdk/agents/pi-embedded-runner/system-prompt.d.ts +9 -0
  65. package/dist/plugin-sdk/agents/system-prompt.d.ts +17 -0
  66. package/dist/plugin-sdk/{channel-web-eeGSjU9N.js → channel-web-DYJYy4et.js} +1 -1
  67. package/dist/plugin-sdk/config/types.symi.d.ts +7 -0
  68. package/dist/plugin-sdk/index.js +3 -3
  69. package/dist/plugin-sdk/{manager-DZ5-lr4s.js → manager-Ca0_Buoj.js} +1 -1
  70. package/dist/plugin-sdk/{reply-BRGoceel.js → reply-Bfy77FPA.js} +105 -54
  71. package/dist/plugin-sdk/{synthesis-DVsG2Tbp.js → synthesis-D9SmRgqU.js} +2 -2
  72. package/dist/plugin-sdk/{web-7u3fdT2S.js → web-qvuO3y6z.js} +3 -3
  73. package/dist/{plugins-cli-ndIGvW38.js → plugins-cli-CAp8Hyam.js} +4 -4
  74. package/dist/{plugins-cli-CLb_0vH6.js → plugins-cli-Dhcj3Mah.js} +4 -4
  75. package/dist/{program-BovNsUAh.js → program-UlEVhGTo.js} +9 -9
  76. package/dist/{program-context-mFSRQPMm.js → program-context-BFvY5D79.js} +18 -18
  77. package/dist/{prompt-select-styled-vhI0kQYd.js → prompt-select-styled-BehvQU7S.js} +6 -6
  78. package/dist/{prompt-select-styled-DlKhnnDV.js → prompt-select-styled-Bf47U3gY.js} +6 -6
  79. package/dist/{provider-auth-helpers-DXlKD0hY.js → provider-auth-helpers-CEstUTnU.js} +1 -1
  80. package/dist/{provider-auth-helpers-U0t5YhCn.js → provider-auth-helpers-l2_9mB3E.js} +1 -1
  81. package/dist/{push-apns-hN0N3Wcu.js → push-apns-Be_K61Y3.js} +1 -1
  82. package/dist/{push-apns-rDsc17-c.js → push-apns-Cr9FKn9_.js} +1 -1
  83. package/dist/{pw-ai-BlWK9Tr3.js → pw-ai-BjfsUmjw.js} +1 -1
  84. package/dist/{register.agent-B1liWWB3.js → register.agent-DXzkaRw1.js} +8 -8
  85. package/dist/{register.agent-Cyij2g-g.js → register.agent-tfizhRlb.js} +7 -7
  86. package/dist/{register.configure-CoYKlH75.js → register.configure-CtXnzNAk.js} +8 -8
  87. package/dist/{register.configure-keWh1w1p.js → register.configure-DsBKnmY3.js} +8 -8
  88. package/dist/{register.maintenance-CsA9QQRE.js → register.maintenance-BZJLuSs7.js} +10 -10
  89. package/dist/{register.maintenance-CvY-Yar9.js → register.maintenance-mVD8OA1V.js} +9 -9
  90. package/dist/{register.message-D7815_7Y.js → register.message-C7Mfqk6i.js} +4 -4
  91. package/dist/{register.message-DltuBwIg.js → register.message-ZHGwfsV9.js} +4 -4
  92. package/dist/{register.onboard-CY50To_-.js → register.onboard-B0zHMGtr.js} +6 -6
  93. package/dist/{register.onboard-FcZymlrx.js → register.onboard-bPMjH-cM.js} +6 -6
  94. package/dist/{register.setup-8dkIizGs.js → register.setup-aVvT34-g.js} +6 -6
  95. package/dist/{register.setup-X011Evir.js → register.setup-jLBfOyYo.js} +6 -6
  96. package/dist/{register.status-health-sessions-DRkIaw1q.js → register.status-health-sessions-Bbp4B0t_.js} +5 -5
  97. package/dist/{register.status-health-sessions-u9ZbWWea.js → register.status-health-sessions-Ym9Z__5q.js} +5 -5
  98. package/dist/{register.subclis-vTS3UwIU.js → register.subclis-DHLF7LUE.js} +9 -9
  99. package/dist/{reply-Dx9DWIO2.js → reply-DaLBaxTg.js} +104 -53
  100. package/dist/{run-main-BQKf71Kt.js → run-main-i-0RAGWP.js} +17 -17
  101. package/dist/{runner-C4opGXAA.js → runner-DzNo-GCz.js} +1 -1
  102. package/dist/{server-methods-DeIwhdBv.js → server-methods-9ygcQLBv.js} +8 -8
  103. package/dist/{server-methods-1TzYth88.js → server-methods-BTBqGPE0.js} +8 -8
  104. package/dist/{server-node-events-CFMtnBFU.js → server-node-events-Dwq8UMWp.js} +4 -4
  105. package/dist/{server-node-events-DF_ks0oa.js → server-node-events-v-YRyTWm.js} +4 -4
  106. package/dist/{status-CwZgLSfx.js → status-87Am-dN6.js} +3 -3
  107. package/dist/{status-CvElSWg2.js → status-BwKYtKTR.js} +1 -1
  108. package/dist/{status-DEQAH4oA.js → status-Cet2zu6k.js} +1 -1
  109. package/dist/{status-vO4-v0vI.js → status-vF06cYz7.js} +3 -3
  110. package/dist/{subagent-registry-K1lQH7iR.js → subagent-registry--ttOPMLH.js} +104 -53
  111. package/dist/{synthesis-DhxkkJq7.js → synthesis-9GndKT3K.js} +2 -2
  112. package/dist/{synthesis-CZhOC8n4.js → synthesis-DH0gSv7o.js} +7 -7
  113. package/dist/{synthesis-DazoL-DI.js → synthesis-JzS-852N.js} +3 -3
  114. package/dist/{synthesis-AYqn8_O8.js → synthesis-aBsVjLIL.js} +3 -3
  115. package/dist/{unified-runner-CavADnkK.js → unified-runner-C0OC_Ay0.js} +119 -68
  116. package/dist/{update-cli-DPf2vrJK.js → update-cli-BWulAC_Y.js} +10 -10
  117. package/dist/{update-cli-DmxFKAmJ.js → update-cli-DAP38iFd.js} +9 -9
  118. package/dist/{update-runner-D4UIv_1p.js → update-runner-Bl0Y3ndR.js} +1 -1
  119. package/dist/{update-runner-XU-jPEg_.js → update-runner-DV6ov2uA.js} +1 -1
  120. package/dist/{web-BJIv_6uQ.js → web-Cl-3dkwx.js} +7 -7
  121. package/dist/{web-CIj8erCe.js → web-DcZB_7Fo.js} +2 -2
  122. package/dist/{web-C-E-O8iP.js → web-DhjVLurg.js} +4 -4
  123. package/dist/{web-BBbVbRTg.js → web-K_bPrtFT.js} +3 -3
  124. package/docs/capabilities.md +153 -0
  125. package/extensions/bluebubbles/package.json +1 -1
  126. package/extensions/copilot-proxy/package.json +1 -1
  127. package/extensions/diagnostics-otel/package.json +1 -1
  128. package/extensions/discord/package.json +1 -1
  129. package/extensions/feishu/package.json +1 -1
  130. package/extensions/google-antigravity-auth/package.json +1 -1
  131. package/extensions/google-gemini-cli-auth/package.json +1 -1
  132. package/extensions/googlechat/package.json +1 -1
  133. package/extensions/imessage/package.json +1 -1
  134. package/extensions/irc/package.json +1 -1
  135. package/extensions/learning-loop/package.json +1 -1
  136. package/extensions/line/package.json +1 -1
  137. package/extensions/llm-task/package.json +1 -1
  138. package/extensions/matrix/CHANGELOG.md +12 -0
  139. package/extensions/matrix/package.json +1 -1
  140. package/extensions/mattermost/package.json +1 -1
  141. package/extensions/memory-core/package.json +1 -1
  142. package/extensions/memory-lancedb/package.json +1 -1
  143. package/extensions/minimax-portal-auth/package.json +1 -1
  144. package/extensions/msteams/CHANGELOG.md +12 -0
  145. package/extensions/msteams/package.json +1 -1
  146. package/extensions/nextcloud-talk/package.json +1 -1
  147. package/extensions/nostr/CHANGELOG.md +12 -0
  148. package/extensions/nostr/package.json +1 -1
  149. package/extensions/open-prose/package.json +1 -1
  150. package/extensions/outlook/node_modules/.bin/symi +21 -0
  151. package/extensions/outlook/package.json +1 -1
  152. package/extensions/pipeline/package.json +1 -1
  153. package/extensions/signal/package.json +1 -1
  154. package/extensions/slack/package.json +1 -1
  155. package/extensions/telegram/package.json +1 -1
  156. package/extensions/tlon/package.json +1 -1
  157. package/extensions/twitch/CHANGELOG.md +12 -0
  158. package/extensions/twitch/package.json +1 -1
  159. package/extensions/voice-call/CHANGELOG.md +12 -0
  160. package/extensions/voice-call/package.json +1 -1
  161. package/extensions/whatsapp/package.json +1 -1
  162. package/extensions/zalo/CHANGELOG.md +12 -0
  163. package/extensions/zalo/package.json +1 -1
  164. package/extensions/zalouser/CHANGELOG.md +12 -0
  165. package/extensions/zalouser/package.json +1 -1
  166. package/package.json +5 -1
  167. package/skills/channel-routing/SKILL.md +42 -0
  168. package/skills/document-generation/SKILL.md +83 -0
  169. package/skills/reactions-extensive/SKILL.md +30 -0
  170. package/skills/reactions-minimal/SKILL.md +31 -0
  171. package/skills/safe-edit/SKILL.md +51 -0
  172. package/skills/tool-narration/SKILL.md +40 -0
  173. package/skills/verify-output/SKILL.md +47 -0
@@ -10,10 +10,10 @@ import { $ as resolveAuthProfileDisplayLabel, B as resolveApiKeyForProvider, C a
10
10
  import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
11
11
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-cCYzSU9h.js";
12
12
  import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
13
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-B1P8lkqj.js";
13
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-CU-kYRrF.js";
14
14
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-Do4JxgLI.js";
15
15
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-CBCGTsIb.js";
16
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BaMQiegP.js";
16
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CJHOBnUB.js";
17
17
  import { l as parseFrontmatterBlock } from "./frontmatter-CTR5f_Ez.js";
18
18
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-CXxrn_e2.js";
19
19
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
@@ -32,16 +32,16 @@ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i
32
32
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-9ktd0CBZ.js";
33
33
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
34
34
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-SqqWIT22.js";
35
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-Dx39g9ey.js";
35
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-D5655IkX.js";
36
36
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-BUcR3Meg.js";
37
37
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Zw87xFym.js";
38
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-C-JvPPpM.js";
38
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-BqpivNGG.js";
39
39
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-RXOlh8ar.js";
40
40
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-W0JzCJJM.js";
41
41
  import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-90t8KM2a.js";
42
42
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
43
43
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CvEIl6_d.js";
44
- import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-Bc-MeMho.js";
44
+ import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-DlNP6Nui.js";
45
45
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-DjnxpF_K.js";
46
46
  import { n as retryAsync } from "./retry-B-y5suGA.js";
47
47
  import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-DeJTztcq.js";
@@ -51,7 +51,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-CVCB
51
51
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-ClipCZ9s.js";
52
52
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-7tMVY7D_.js";
53
53
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-DxbSTLNQ.js";
54
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-C4opGXAA.js";
54
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-DzNo-GCz.js";
55
55
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DG2lcozb.js";
56
56
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DZQU0r3y.js";
57
57
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-ClslA6GS.js";
@@ -82,7 +82,7 @@ import AjvPkg from "ajv";
82
82
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
83
83
  import { createServer } from "node:http";
84
84
  import { ProxyAgent, fetch as fetch$1 } from "undici";
85
- import WebSocket, { WebSocket as WebSocket$1 } from "ws";
85
+ import WebSocket$1, { WebSocket } from "ws";
86
86
  import { Buffer as Buffer$1 } from "node:buffer";
87
87
  import { EdgeTTS } from "node-edge-tts";
88
88
  import { createJiti } from "jiti";
@@ -4336,7 +4336,7 @@ async function getMemorySearchManager(params) {
4336
4336
  const wrapper = new FallbackMemoryManager({
4337
4337
  primary,
4338
4338
  fallbackFactory: async () => {
4339
- const { MemoryIndexManager } = await import("./manager-Bc-MeMho.js").then((n) => n.n);
4339
+ const { MemoryIndexManager } = await import("./manager-DlNP6Nui.js").then((n) => n.n);
4340
4340
  return await MemoryIndexManager.get(params);
4341
4341
  }
4342
4342
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4349,7 +4349,7 @@ async function getMemorySearchManager(params) {
4349
4349
  }
4350
4350
  }
4351
4351
  try {
4352
- const { MemoryIndexManager } = await import("./manager-Bc-MeMho.js").then((n) => n.n);
4352
+ const { MemoryIndexManager } = await import("./manager-DlNP6Nui.js").then((n) => n.n);
4353
4353
  return { manager: await MemoryIndexManager.get(params) };
4354
4354
  } catch (err) {
4355
4355
  return {
@@ -6817,6 +6817,7 @@ function buildSkillsJitBlocks(opts) {
6817
6817
  //#region src/agents/system-prompt.ts
6818
6818
  function buildSkillsSection(params) {
6819
6819
  if (params.isMinimal) return [];
6820
+ if (params.dropCatalog) return [];
6820
6821
  const trimmed = params.skillsPrompt?.trim();
6821
6822
  if (!trimmed) return [];
6822
6823
  return [
@@ -6921,7 +6922,7 @@ function buildVoiceSection(params) {
6921
6922
  ];
6922
6923
  }
6923
6924
  function buildVerifyYourWorkSection(params) {
6924
- if (params.isMinimal) return [];
6925
+ if (params.isMinimal || params.compactMode) return [];
6925
6926
  const exec = params.execToolName;
6926
6927
  const read = params.readToolName;
6927
6928
  return [
@@ -7110,6 +7111,7 @@ function buildAgentSystemPrompt(params) {
7110
7111
  const promptMode = params.promptMode ?? "full";
7111
7112
  const isMinimal = promptMode === "minimal" || promptMode === "none";
7112
7113
  const isCoding = promptMode === "coding";
7114
+ const compactMode = params.compactMode === true;
7113
7115
  const sandboxContainerWorkspace = params.sandboxInfo?.containerWorkspaceDir?.trim();
7114
7116
  const sanitizedWorkspaceDir = sanitizeForPromptLiteral(params.workspaceDir);
7115
7117
  const sanitizedSandboxContainerWorkspace = sandboxContainerWorkspace ? sanitizeForPromptLiteral(sandboxContainerWorkspace) : "";
@@ -7125,7 +7127,8 @@ function buildAgentSystemPrompt(params) {
7125
7127
  const skillsSection = buildSkillsSection({
7126
7128
  skillsPrompt,
7127
7129
  isMinimal,
7128
- readToolName
7130
+ readToolName,
7131
+ dropCatalog: compactMode && (params.skillsDiscoveryMode === "jit" || params.skillsDiscoveryMode === "hybrid")
7129
7132
  });
7130
7133
  const memorySection = buildMemorySection({
7131
7134
  isMinimal,
@@ -7168,39 +7171,43 @@ function buildAgentSystemPrompt(params) {
7168
7171
  "If a task is more complex or takes longer, spawn a sub-agent. Completion is push-based: it will auto-announce when done.",
7169
7172
  "Do not poll `subagents list` / `sessions_list` in a loop; only check status on-demand (for intervention, debugging, or when explicitly asked).",
7170
7173
  "",
7171
- "## Tool Call Style",
7172
- "Default: do not narrate routine, low-risk tool calls (just call the tool).",
7173
- "Narrate only when it helps: multi-step work, complex/challenging problems, sensitive actions (e.g., deletions), or when the user explicitly asks.",
7174
- "Keep narration brief and value-dense; avoid repeating obvious steps.",
7175
- "Use plain human language for narration unless in a technical context.",
7176
- "",
7177
- "## Edit Tool Best Practices",
7178
- "When using the edit tool, the oldText must match the file EXACTLY (whitespace, indentation, and all).",
7179
- "To avoid match failures:",
7180
- "- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
7181
- "- ALWAYS read the file first, then copy the exact text from the read output for oldText.",
7182
- "- If an edit fails with 'Could not find the exact text', re-read the file and retry with the exact text from the fresh read. Do NOT move on or fix a different issue.",
7183
- "- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines).",
7184
- "",
7174
+ ...compactMode ? [] : [
7175
+ "## Tool Call Style",
7176
+ "Default: do not narrate routine, low-risk tool calls (just call the tool).",
7177
+ "Narrate only when it helps: multi-step work, complex/challenging problems, sensitive actions (e.g., deletions), or when the user explicitly asks.",
7178
+ "Keep narration brief and value-dense; avoid repeating obvious steps.",
7179
+ "Use plain human language for narration unless in a technical context.",
7180
+ "",
7181
+ "## Edit Tool Best Practices",
7182
+ "When using the edit tool, the oldText must match the file EXACTLY (whitespace, indentation, and all).",
7183
+ "To avoid match failures:",
7184
+ "- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
7185
+ "- ALWAYS read the file first, then copy the exact text from the read output for oldText.",
7186
+ "- If an edit fails with 'Could not find the exact text', re-read the file and retry with the exact text from the fresh read. Do NOT move on or fix a different issue.",
7187
+ "- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines).",
7188
+ ""
7189
+ ],
7185
7190
  ...safetySection,
7186
- "## Symi CLI Quick Reference",
7187
- "Symi is controlled via subcommands. Do not invent commands.",
7188
- "To manage the Gateway daemon service (start/stop/restart):",
7189
- "- symi gateway status",
7190
- "- symi gateway start",
7191
- "- symi gateway stop",
7192
- "- symi gateway restart",
7193
- "If unsure, ask the user to run `symi help` (or `symi gateway --help`) and paste the output.",
7194
- "",
7191
+ ...compactMode ? ["For Symi CLI commands, ask the user to run `symi help` and paste the output.", ""] : [
7192
+ "## Symi CLI Quick Reference",
7193
+ "Symi is controlled via subcommands. Do not invent commands.",
7194
+ "To manage the Gateway daemon service (start/stop/restart):",
7195
+ "- symi gateway status",
7196
+ "- symi gateway start",
7197
+ "- symi gateway stop",
7198
+ "- symi gateway restart",
7199
+ "If unsure, ask the user to run `symi help` (or `symi gateway --help`) and paste the output.",
7200
+ ""
7201
+ ],
7195
7202
  ...skillsSection,
7196
7203
  ...memorySection,
7197
- hasGateway && !isMinimal && !isCoding ? "## Symi Self-Update" : "",
7198
- hasGateway && !isMinimal && !isCoding ? [
7204
+ hasGateway && !isMinimal && !isCoding && !compactMode ? "## Symi Self-Update" : "",
7205
+ hasGateway && !isMinimal && !isCoding && !compactMode ? [
7199
7206
  "Get Updates (self-update) is ONLY allowed when the user explicitly asks for it.",
7200
7207
  "Do not run config.apply or update.run unless the user explicitly requests an update or config change; if it's not explicit, ask first.",
7201
7208
  "Actions: config.get, config.schema, config.apply (validate + write full config, then restart), update.run (update deps or git, then restart).",
7202
7209
  "After restart, Symi pings the last active session automatically."
7203
- ].join("\n") : "",
7210
+ ].join("\n") : hasGateway && !isMinimal && !isCoding && compactMode ? "Gateway destructive actions (config.apply, config.patch, update.run) require explicit user authorization via userRequestAcknowledgment — never invoke speculatively." : "",
7204
7211
  hasGateway && !isMinimal && !isCoding ? "" : "",
7205
7212
  "",
7206
7213
  params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "## Model Aliases" : "",
@@ -7217,7 +7224,8 @@ function buildAgentSystemPrompt(params) {
7217
7224
  ...buildVerifyYourWorkSection({
7218
7225
  isMinimal,
7219
7226
  execToolName,
7220
- readToolName
7227
+ readToolName,
7228
+ compactMode
7221
7229
  }),
7222
7230
  params.sandboxInfo?.enabled ? "## Sandbox" : "",
7223
7231
  params.sandboxInfo?.enabled ? [
@@ -7263,23 +7271,26 @@ function buildAgentSystemPrompt(params) {
7263
7271
  }
7264
7272
  if (params.reactionGuidance) {
7265
7273
  const { level, channel } = params.reactionGuidance;
7266
- const guidanceText = level === "minimal" ? [
7267
- `Reactions are enabled for ${channel} in MINIMAL mode.`,
7268
- "React ONLY when truly relevant:",
7269
- "- Acknowledge important user requests or confirmations",
7270
- "- Express genuine sentiment (humor, appreciation) sparingly",
7271
- "- Avoid reacting to routine messages or your own replies",
7272
- "Guideline: at most 1 reaction per 5-10 exchanges."
7273
- ].join("\n") : [
7274
- `Reactions are enabled for ${channel} in EXTENSIVE mode.`,
7275
- "Feel free to react liberally:",
7276
- "- Acknowledge messages with appropriate emojis",
7277
- "- Express sentiment and personality through reactions",
7278
- "- React to interesting content, humor, or notable events",
7279
- "- Use reactions to confirm understanding or agreement",
7280
- "Guideline: react whenever it feels natural."
7281
- ].join("\n");
7282
- lines.push("## Reactions", guidanceText, "");
7274
+ if (compactMode) lines.push("## Reactions", `Reactions for ${channel} are in ${level.toUpperCase()} mode — see the reactions-${level} skill (auto-loaded).`, "");
7275
+ else {
7276
+ const guidanceText = level === "minimal" ? [
7277
+ `Reactions are enabled for ${channel} in MINIMAL mode.`,
7278
+ "React ONLY when truly relevant:",
7279
+ "- Acknowledge important user requests or confirmations",
7280
+ "- Express genuine sentiment (humor, appreciation) sparingly",
7281
+ "- Avoid reacting to routine messages or your own replies",
7282
+ "Guideline: at most 1 reaction per 5-10 exchanges."
7283
+ ].join("\n") : [
7284
+ `Reactions are enabled for ${channel} in EXTENSIVE mode.`,
7285
+ "Feel free to react liberally:",
7286
+ "- Acknowledge messages with appropriate emojis",
7287
+ "- Express sentiment and personality through reactions",
7288
+ "- React to interesting content, humor, or notable events",
7289
+ "- Use reactions to confirm understanding or agreement",
7290
+ "Guideline: react whenever it feels natural."
7291
+ ].join("\n");
7292
+ lines.push("## Reactions", guidanceText, "");
7293
+ }
7283
7294
  }
7284
7295
  if (reasoningHint) lines.push("## Reasoning Format", reasoningHint, "");
7285
7296
  const validContextFiles = (params.contextFiles ?? []).filter((file) => typeof file.path === "string" && file.path.trim().length > 0);
@@ -7355,7 +7366,9 @@ function buildEmbeddedSystemPrompt(params) {
7355
7366
  userTime: params.userTime,
7356
7367
  userTimeFormat: params.userTimeFormat,
7357
7368
  contextFiles: params.contextFiles,
7358
- memoryCitationsMode: params.memoryCitationsMode
7369
+ memoryCitationsMode: params.memoryCitationsMode,
7370
+ compactMode: params.compactMode,
7371
+ skillsDiscoveryMode: params.skillsDiscoveryMode
7359
7372
  });
7360
7373
  const promptMode = params.promptMode ?? "full";
7361
7374
  const isMinimal = promptMode === "minimal" || promptMode === "none";
@@ -9334,7 +9347,7 @@ var GatewayClient = class {
9334
9347
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
9335
9348
  });
9336
9349
  }
9337
- this.ws = new WebSocket$1(url, wsOptions);
9350
+ this.ws = new WebSocket(url, wsOptions);
9338
9351
  this.ws.on("open", () => {
9339
9352
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
9340
9353
  const tlsError = this.validateTlsFingerprint();
@@ -9553,7 +9566,7 @@ var GatewayClient = class {
9553
9566
  return null;
9554
9567
  }
9555
9568
  async request(method, params, opts) {
9556
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
9569
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
9557
9570
  const id = randomUUID();
9558
9571
  const frame = {
9559
9572
  type: "req",
@@ -10822,7 +10835,7 @@ async function routeReply(params) {
10822
10835
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10823
10836
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10824
10837
  try {
10825
- const { deliverOutboundPayloads } = await import("./deliver-Dx39g9ey.js").then((n) => n.n);
10838
+ const { deliverOutboundPayloads } = await import("./deliver-D5655IkX.js").then((n) => n.n);
10826
10839
  return {
10827
10840
  ok: true,
10828
10841
  messageId: (await deliverOutboundPayloads({
@@ -22146,6 +22159,41 @@ async function executeNodeHostCommand(params) {
22146
22159
 
22147
22160
  //#endregion
22148
22161
  //#region src/agents/bash-tools.exec.ts
22162
+ let cachedSymiNodeModules;
22163
+ /**
22164
+ * Returns the absolute path to Symi's bundled `node_modules` directory, so
22165
+ * gateway-host node scripts can `require()` packages that ship with Symi
22166
+ * (docx / exceljs / pptxgenjs / pdfkit for the document-generation skill,
22167
+ * plus any future bundled npm dep). Cached for the process lifetime.
22168
+ *
22169
+ * Returns null when Symi's package root can't be resolved (development
22170
+ * setups outside a package, broken installs).
22171
+ */
22172
+ function resolveSymiNodeModulesPath() {
22173
+ if (cachedSymiNodeModules !== void 0) return cachedSymiNodeModules;
22174
+ const root = resolveSymiPackageRootSync({});
22175
+ cachedSymiNodeModules = root ? path.join(root, "node_modules") : null;
22176
+ return cachedSymiNodeModules;
22177
+ }
22178
+ /**
22179
+ * Append Symi's bundled node_modules path to NODE_PATH so gateway-host
22180
+ * scripts (run via the `exec` tool with `host: "gateway"`) can resolve
22181
+ * Symi-bundled npm packages from any cwd. Existing NODE_PATH (user
22182
+ * override or test fixture) is preserved by appending, not replacing.
22183
+ */
22184
+ function applySymiNodePath(env) {
22185
+ const symiModules = resolveSymiNodeModulesPath();
22186
+ if (!symiModules) return;
22187
+ const existing = env.NODE_PATH?.trim();
22188
+ if (!existing) {
22189
+ env.NODE_PATH = symiModules;
22190
+ return;
22191
+ }
22192
+ const sep = path.delimiter;
22193
+ const segments = existing.split(sep).filter(Boolean);
22194
+ if (!segments.includes(symiModules)) segments.push(symiModules);
22195
+ env.NODE_PATH = segments.join(sep);
22196
+ }
22149
22197
  function extractScriptTargetFromCommand(command) {
22150
22198
  const raw = command.trim();
22151
22199
  if (!raw) return null;
@@ -22295,6 +22343,7 @@ function createExecTool(defaults) {
22295
22343
  env: process.env,
22296
22344
  timeoutMs: resolveShellEnvFallbackTimeoutMs(process.env)
22297
22345
  }));
22346
+ if (!sandbox && host === "gateway") applySymiNodePath(env);
22298
22347
  if (host === "node" && defaultPathPrepend.length > 0) warnings.push("Warning: tools.exec.pathPrepend is ignored for host=node. Configure PATH on the node host/service instead.");
22299
22348
  else applyPathPrepend(env, defaultPathPrepend);
22300
22349
  if (host === "node") return executeNodeHostCommand({
@@ -44616,7 +44665,7 @@ async function deliverSessionMaintenanceWarning(params) {
44616
44665
  return;
44617
44666
  }
44618
44667
  try {
44619
- const { deliverOutboundPayloads } = await import("./deliver-Dx39g9ey.js").then((n) => n.n);
44668
+ const { deliverOutboundPayloads } = await import("./deliver-D5655IkX.js").then((n) => n.n);
44620
44669
  await deliverOutboundPayloads({
44621
44670
  cfg: params.cfg,
44622
44671
  channel,
@@ -48062,7 +48111,7 @@ async function describeStickerImage(params) {
48062
48111
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
48063
48112
  try {
48064
48113
  const buffer = await fs$1.readFile(imagePath);
48065
- const { describeImageWithModel } = await import("./image-C-JvPPpM.js").then((n) => n.n);
48114
+ const { describeImageWithModel } = await import("./image-BqpivNGG.js").then((n) => n.n);
48066
48115
  return (await describeImageWithModel({
48067
48116
  buffer,
48068
48117
  fileName: "sticker.webp",
@@ -50811,7 +50860,7 @@ async function preflightDiscordMessage(params) {
50811
50860
  let preflightTranscript;
50812
50861
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
50813
50862
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
50814
- const { transcribeFirstAudio } = await import("./audio-preflight-DQR2Ivi-.js");
50863
+ const { transcribeFirstAudio } = await import("./audio-preflight-CbyJ_yDs.js");
50815
50864
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
50816
50865
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
50817
50866
  ctx: {
@@ -54817,7 +54866,7 @@ function isVoiceChannelType(type) {
54817
54866
  function createDefaultDeps() {
54818
54867
  return {
54819
54868
  sendMessageWhatsApp: async (...args) => {
54820
- const { sendMessageWhatsApp } = await import("./web-BJIv_6uQ.js");
54869
+ const { sendMessageWhatsApp } = await import("./web-Cl-3dkwx.js");
54821
54870
  return await sendMessageWhatsApp(...args);
54822
54871
  },
54823
54872
  sendMessageTelegram: async (...args) => {
@@ -57722,7 +57771,7 @@ function createDiscordGatewayPlugin(params) {
57722
57771
  super(options);
57723
57772
  }
57724
57773
  createWebSocket(url) {
57725
- return new WebSocket(url, { agent });
57774
+ return new WebSocket$1(url, { agent });
57726
57775
  }
57727
57776
  }
57728
57777
  return new ProxyGatewayPlugin();
@@ -67940,7 +67989,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
67940
67989
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
67941
67990
  let preflightTranscript;
67942
67991
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
67943
- const { transcribeFirstAudio } = await import("./audio-preflight-DQR2Ivi-.js");
67992
+ const { transcribeFirstAudio } = await import("./audio-preflight-CbyJ_yDs.js");
67944
67993
  preflightTranscript = await transcribeFirstAudio({
67945
67994
  ctx: {
67946
67995
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -70097,7 +70146,7 @@ function loadWebLoginQr() {
70097
70146
  return webLoginQrPromise;
70098
70147
  }
70099
70148
  function loadWebChannel() {
70100
- webChannelPromise ??= import("./web-BJIv_6uQ.js");
70149
+ webChannelPromise ??= import("./web-Cl-3dkwx.js");
70101
70150
  return webChannelPromise;
70102
70151
  }
70103
70152
  function loadWhatsAppActions() {
@@ -74107,7 +74156,8 @@ async function compactEmbeddedPiSessionDirect(params) {
74107
74156
  autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
74108
74157
  skillsDiscoveryMode: params.config?.skills?.discoveryMode,
74109
74158
  skillsAnchorList: params.config?.skills?.anchorList,
74110
- currentUserMessage: void 0
74159
+ currentUserMessage: void 0,
74160
+ compactMode: params.config?.prompt?.compactMode
74111
74161
  }));
74112
74162
  const sessionLock = await acquireSessionWriteLock({
74113
74163
  sessionFile: params.sessionFile,
@@ -78301,7 +78351,8 @@ async function runEmbeddedAttempt(params) {
78301
78351
  autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
78302
78352
  skillsDiscoveryMode: params.config?.skills?.discoveryMode,
78303
78353
  skillsAnchorList: params.config?.skills?.anchorList,
78304
- currentUserMessage: params.prompt
78354
+ currentUserMessage: params.prompt,
78355
+ compactMode: params.config?.prompt?.compactMode
78305
78356
  });
78306
78357
  const systemPromptReport = buildSystemPromptReport({
78307
78358
  source: "run",
@@ -17,7 +17,7 @@ import "./client-CJIMV1WD.js";
17
17
  import "./call-BCTAmPye.js";
18
18
  import "./message-channel-C9dERklz.js";
19
19
  import "./pairing-token-Byh6drgn.js";
20
- import { wt as trimLogTail } from "./subagent-registry-K1lQH7iR.js";
20
+ import { wt as trimLogTail } from "./subagent-registry--ttOPMLH.js";
21
21
  import "./sessions-CpDbQNFu.js";
22
22
  import "./tokens-Csntmwwn.js";
23
23
  import "./plugins-CwSlLxM8.js";
@@ -55,8 +55,8 @@ import "./tool-images-CVLISeRT.js";
55
55
  import "./thinking-8sKPnzpp.js";
56
56
  import "./models-config-frWb8fDT.js";
57
57
  import "./reply-prefix-BUN71nd5.js";
58
- import "./memory-cli-3RSIw4no.js";
59
- import "./manager-yrUe0KOT.js";
58
+ import "./memory-cli-D2LaloPq.js";
59
+ import "./manager-DNxvT0P-.js";
60
60
  import "./gemini-auth-DEakvf-D.js";
61
61
  import "./retry-C4Q_VPOo.js";
62
62
  import "./sqlite-BP8tiuca.js";
@@ -112,10 +112,10 @@ import "./npm-registry-spec-PuS2I1Em.js";
112
112
  import "./skill-scanner-BV3QHmsf.js";
113
113
  import "./installs-B4sNNRaW.js";
114
114
  import "./channels-status-issues-B-ssmZ8E.js";
115
- import "./register.subclis-vTS3UwIU.js";
116
- import "./command-registry-b62Qpsi2.js";
115
+ import "./register.subclis-DHLF7LUE.js";
116
+ import "./command-registry-iESIIBvf.js";
117
117
  import "./program-context-DeZ44oQ9.js";
118
- import { r as installCompletion } from "./completion-cli-DUT2XYgK.js";
118
+ import { r as installCompletion } from "./completion-cli-BEddBU3C.js";
119
119
  import "./daemon-runtime-C86WnKU5.js";
120
120
  import { r as parseSemver } from "./runtime-guard-BofkqBu7.js";
121
121
  import "./systemd-CJ5L2ee4.js";
@@ -125,19 +125,19 @@ import "./systemd-hints-BbqPFaZ2.js";
125
125
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-BiBjGGfw.js";
126
126
  import "./diagnostics-C6xPE2ln.js";
127
127
  import { t as renderTable } from "./table-Bka4fasy.js";
128
- import "./health-CV741PBg.js";
128
+ import "./health-C5cdo2e_.js";
129
129
  import "./control-ui-assets-Clf7H-Sm.js";
130
130
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-BNjupSIM.js";
131
131
  import "./dm-policy-shared-JiSNSaKz.js";
132
132
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DoXJrRh6.js";
133
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-D4UIv_1p.js";
133
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-Bl0Y3ndR.js";
134
134
  import "./logging-PVQxLC6I.js";
135
135
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-DticqU4-.js";
136
136
  import "./doctor-config-flow-l2aPNzHP.js";
137
137
  import "./systemd-linger-ipoPa7o0.js";
138
138
  import "./health-format-DkjSgkDx.js";
139
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-vhI0kQYd.js";
140
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BS2JEeZy.js";
139
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BehvQU7S.js";
140
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BGriRzaq.js";
141
141
  import { spawn, spawnSync } from "node:child_process";
142
142
  import os from "node:os";
143
143
  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, h as pathExists } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { H as trimLogTail } from "./reply-Dx9DWIO2.js";
4
+ import { H as trimLogTail } from "./reply-DaLBaxTg.js";
5
5
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -62,8 +62,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
62
62
  import "./send-aXMPprv9.js";
63
63
  import "./model-ECsJuJew.js";
64
64
  import "./reply-prefix-CE2YmmsD.js";
65
- import "./memory-cli-BKNnDIdx.js";
66
- import "./manager-B_2KzUSI.js";
65
+ import "./memory-cli-xSpyRUEV.js";
66
+ import "./manager-Ca7NOWdK.js";
67
67
  import "./retry-BoS4e4X_.js";
68
68
  import "./sqlite-D55gRQbH.js";
69
69
  import "./target-errors-C9e6dMU_.js";
@@ -107,7 +107,7 @@ import "./stagger-CZ1Rrj7O.js";
107
107
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName } from "./constants-DF8wPn-_.js";
108
108
  import "./channel-selection-9fIQGtZy.js";
109
109
  import { r as parseSemver } from "./runtime-guard-BKFbNplo.js";
110
- import "./program-context-mFSRQPMm.js";
110
+ import "./program-context-BFvY5D79.js";
111
111
  import "./catalog-KW3oyt3k.js";
112
112
  import "./skills-status-D1IW8MhS.js";
113
113
  import { n as inheritOptionFromParent } from "./command-options-DOOvAdsg.js";
@@ -118,7 +118,7 @@ import "./npm-registry-spec-B98RgVZF.js";
118
118
  import "./skill-scanner-BTgjeQBf.js";
119
119
  import "./installs-BPZKRjsO.js";
120
120
  import "./channels-status-issues-BVpj6wWd.js";
121
- import { r as installCompletion } from "./completion-cli-RQyC3L-t.js";
121
+ import { r as installCompletion } from "./completion-cli-euUBlC-J.js";
122
122
  import "./daemon-runtime-C-Mwepv_.js";
123
123
  import "./systemd-Xs16roN5.js";
124
124
  import { t as resolveGatewayService } from "./service-DzLem5vL.js";
@@ -127,19 +127,19 @@ import "./systemd-hints-CfnF9j3s.js";
127
127
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-BNZu5unw.js";
128
128
  import "./diagnostics-1uBuB9IE.js";
129
129
  import { t as renderTable } from "./table-BWuvjnmY.js";
130
- import "./health-BQGRC0xh.js";
130
+ import "./health-BFlZuHVH.js";
131
131
  import "./control-ui-assets-BrP31IQR.js";
132
132
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-Bbvpax6u.js";
133
133
  import "./dm-policy-shared-KlzpDeT_.js";
134
134
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-BSaVYFQv.js";
135
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-XU-jPEg_.js";
135
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-DV6ov2uA.js";
136
136
  import "./logging-CZuxhCZR.js";
137
137
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-D4uLu0dv.js";
138
138
  import "./doctor-config-flow-BFHsvL2k.js";
139
139
  import "./systemd-linger-0C265XKH.js";
140
140
  import "./health-format-Ct4VWeSk.js";
141
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-DlKhnnDV.js";
142
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BKXQ50ee.js";
141
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-Bf47U3gY.js";
142
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-B-Oak4dP.js";
143
143
  import os from "node:os";
144
144
  import path from "node:path";
145
145
  import fs from "node:fs/promises";
@@ -1,6 +1,6 @@
1
1
  import { nt as pathExists } from "./entry.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CBKBIMpA.js";
3
- import { wt as trimLogTail } from "./subagent-registry-K1lQH7iR.js";
3
+ import { wt as trimLogTail } from "./subagent-registry--ttOPMLH.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Clf7H-Sm.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-BNjupSIM.js";
6
6
  import os from "node:os";
@@ -1,5 +1,5 @@
1
1
  import { h as pathExists } from "./utils-B-0b9bGM.js";
2
- import { H as trimLogTail } from "./reply-Dx9DWIO2.js";
2
+ import { H as trimLogTail } from "./reply-DaLBaxTg.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-BrP31IQR.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-Bbvpax6u.js";
@@ -4,16 +4,16 @@ import { A as isSelfChatMode, B as sleep, C as clamp, F as resolveJidToE164, H a
4
4
  import "./agent-scope-CpEJ0B88.js";
5
5
  import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
6
6
  import "./workspace-DscDraUb.js";
7
- import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./unified-runner-CavADnkK.js";
7
+ import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./unified-runner-C0OC_Ay0.js";
8
8
  import { s as resolveStorePath } from "./paths-CbQV9WEg.js";
9
9
  import "./auth-profiles-C2vj6htZ.js";
10
10
  import { n as formatCliCommand } from "./env-BDXYbTKj.js";
11
11
  import "./github-copilot-token-cCYzSU9h.js";
12
12
  import "./boolean-CE7i9tBR.js";
13
- import { Ct as resolveGroupSessionKey, G as updateLastRoute, H as loadSessionStore, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-B1P8lkqj.js";
13
+ import { Ct as resolveGroupSessionKey, G as updateLastRoute, H as loadSessionStore, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-CU-kYRrF.js";
14
14
  import { n as loadConfig } from "./config-Do4JxgLI.js";
15
15
  import "./manifest-registry-CBCGTsIb.js";
16
- import "./chrome-BaMQiegP.js";
16
+ import "./chrome-CJHOBnUB.js";
17
17
  import "./frontmatter-CTR5f_Ez.js";
18
18
  import "./skills-CXxrn_e2.js";
19
19
  import "./redact-BDMXB06K.js";
@@ -31,16 +31,16 @@ import "./bindings-BsHoBLIE.js";
31
31
  import "./send-B7kMNQ-T.js";
32
32
  import "./send-9ktd0CBZ.js";
33
33
  import "./tool-images-SqqWIT22.js";
34
- import "./deliver-Dx39g9ey.js";
34
+ import "./deliver-D5655IkX.js";
35
35
  import "./diagnostic-BUcR3Meg.js";
36
36
  import "./diagnostic-session-state-Zw87xFym.js";
37
- import "./image-C-JvPPpM.js";
37
+ import "./image-BqpivNGG.js";
38
38
  import "./pi-auth-json-RXOlh8ar.js";
39
39
  import "./tokens-W0JzCJJM.js";
40
40
  import { G as formatLocationText, J as readChannelAllowFromStore, K as toLocationContext, X as upsertChannelPairingRequest } from "./send-90t8KM2a.js";
41
41
  import "./pi-model-discovery-CuZX_Q4t.js";
42
42
  import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createReplyPrefixOptions } from "./reply-prefix-CvEIl6_d.js";
43
- import "./manager-Bc-MeMho.js";
43
+ import "./manager-DlNP6Nui.js";
44
44
  import "./gemini-auth-BefM10YB.js";
45
45
  import "./retry-B-y5suGA.js";
46
46
  import "./sqlite-BN_hIcmu.js";
@@ -51,7 +51,7 @@ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-ClipCZ9s.js";
51
51
  import { a as loadWebMedia } from "./ir-7tMVY7D_.js";
52
52
  import "./render-D1xvLuGo.js";
53
53
  import "./commands-registry-DxbSTLNQ.js";
54
- import { y as registerUnhandledRejectionHandler } from "./runner-C4opGXAA.js";
54
+ import { y as registerUnhandledRejectionHandler } from "./runner-DzNo-GCz.js";
55
55
  import "./skill-commands-DG2lcozb.js";
56
56
  import { t as finalizeInboundContext } from "./inbound-context-DZQU0r3y.js";
57
57
  import "./fetch-ClslA6GS.js";