@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
@@ -51,8 +51,8 @@ import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as san
51
51
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-8sKPnzpp.js";
52
52
  import { t as ensureSymiModelsJson } from "./models-config-frWb8fDT.js";
53
53
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BUN71nd5.js";
54
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-3RSIw4no.js";
55
- import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-yrUe0KOT.js";
54
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-D2LaloPq.js";
55
+ import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-DNxvT0P-.js";
56
56
  import { f as runTasksWithConcurrency } from "./internal-C2jxeHS9.js";
57
57
  import { n as retryAsync } from "./retry-C4Q_VPOo.js";
58
58
  import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-Co0LcWKH.js";
@@ -11983,6 +11983,41 @@ async function executeNodeHostCommand(params) {
11983
11983
 
11984
11984
  //#endregion
11985
11985
  //#region src/agents/bash-tools.exec.ts
11986
+ let cachedSymiNodeModules;
11987
+ /**
11988
+ * Returns the absolute path to Symi's bundled `node_modules` directory, so
11989
+ * gateway-host node scripts can `require()` packages that ship with Symi
11990
+ * (docx / exceljs / pptxgenjs / pdfkit for the document-generation skill,
11991
+ * plus any future bundled npm dep). Cached for the process lifetime.
11992
+ *
11993
+ * Returns null when Symi's package root can't be resolved (development
11994
+ * setups outside a package, broken installs).
11995
+ */
11996
+ function resolveSymiNodeModulesPath() {
11997
+ if (cachedSymiNodeModules !== void 0) return cachedSymiNodeModules;
11998
+ const root = resolveSymiPackageRootSync({});
11999
+ cachedSymiNodeModules = root ? path.join(root, "node_modules") : null;
12000
+ return cachedSymiNodeModules;
12001
+ }
12002
+ /**
12003
+ * Append Symi's bundled node_modules path to NODE_PATH so gateway-host
12004
+ * scripts (run via the `exec` tool with `host: "gateway"`) can resolve
12005
+ * Symi-bundled npm packages from any cwd. Existing NODE_PATH (user
12006
+ * override or test fixture) is preserved by appending, not replacing.
12007
+ */
12008
+ function applySymiNodePath(env) {
12009
+ const symiModules = resolveSymiNodeModulesPath();
12010
+ if (!symiModules) return;
12011
+ const existing = env.NODE_PATH?.trim();
12012
+ if (!existing) {
12013
+ env.NODE_PATH = symiModules;
12014
+ return;
12015
+ }
12016
+ const sep = path.delimiter;
12017
+ const segments = existing.split(sep).filter(Boolean);
12018
+ if (!segments.includes(symiModules)) segments.push(symiModules);
12019
+ env.NODE_PATH = segments.join(sep);
12020
+ }
11986
12021
  function extractScriptTargetFromCommand(command) {
11987
12022
  const raw = command.trim();
11988
12023
  if (!raw) return null;
@@ -12132,6 +12167,7 @@ function createExecTool(defaults) {
12132
12167
  env: process.env,
12133
12168
  timeoutMs: resolveShellEnvFallbackTimeoutMs(process.env)
12134
12169
  }));
12170
+ if (!sandbox && host === "gateway") applySymiNodePath(env);
12135
12171
  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.");
12136
12172
  else applyPathPrepend(env, defaultPathPrepend);
12137
12173
  if (host === "node") return executeNodeHostCommand({
@@ -14763,6 +14799,7 @@ function sanitizeForPromptLiteral(value) {
14763
14799
  //#region src/agents/system-prompt.ts
14764
14800
  function buildSkillsSection(params) {
14765
14801
  if (params.isMinimal) return [];
14802
+ if (params.dropCatalog) return [];
14766
14803
  const trimmed = params.skillsPrompt?.trim();
14767
14804
  if (!trimmed) return [];
14768
14805
  return [
@@ -14867,7 +14904,7 @@ function buildVoiceSection(params) {
14867
14904
  ];
14868
14905
  }
14869
14906
  function buildVerifyYourWorkSection(params) {
14870
- if (params.isMinimal) return [];
14907
+ if (params.isMinimal || params.compactMode) return [];
14871
14908
  const exec = params.execToolName;
14872
14909
  const read = params.readToolName;
14873
14910
  return [
@@ -15056,6 +15093,7 @@ function buildAgentSystemPrompt(params) {
15056
15093
  const promptMode = params.promptMode ?? "full";
15057
15094
  const isMinimal = promptMode === "minimal" || promptMode === "none";
15058
15095
  const isCoding = promptMode === "coding";
15096
+ const compactMode = params.compactMode === true;
15059
15097
  const sandboxContainerWorkspace = params.sandboxInfo?.containerWorkspaceDir?.trim();
15060
15098
  const sanitizedWorkspaceDir = sanitizeForPromptLiteral(params.workspaceDir);
15061
15099
  const sanitizedSandboxContainerWorkspace = sandboxContainerWorkspace ? sanitizeForPromptLiteral(sandboxContainerWorkspace) : "";
@@ -15071,7 +15109,8 @@ function buildAgentSystemPrompt(params) {
15071
15109
  const skillsSection = buildSkillsSection({
15072
15110
  skillsPrompt,
15073
15111
  isMinimal,
15074
- readToolName
15112
+ readToolName,
15113
+ dropCatalog: compactMode && (params.skillsDiscoveryMode === "jit" || params.skillsDiscoveryMode === "hybrid")
15075
15114
  });
15076
15115
  const memorySection = buildMemorySection({
15077
15116
  isMinimal,
@@ -15114,39 +15153,43 @@ function buildAgentSystemPrompt(params) {
15114
15153
  "If a task is more complex or takes longer, spawn a sub-agent. Completion is push-based: it will auto-announce when done.",
15115
15154
  "Do not poll `subagents list` / `sessions_list` in a loop; only check status on-demand (for intervention, debugging, or when explicitly asked).",
15116
15155
  "",
15117
- "## Tool Call Style",
15118
- "Default: do not narrate routine, low-risk tool calls (just call the tool).",
15119
- "Narrate only when it helps: multi-step work, complex/challenging problems, sensitive actions (e.g., deletions), or when the user explicitly asks.",
15120
- "Keep narration brief and value-dense; avoid repeating obvious steps.",
15121
- "Use plain human language for narration unless in a technical context.",
15122
- "",
15123
- "## Edit Tool Best Practices",
15124
- "When using the edit tool, the oldText must match the file EXACTLY (whitespace, indentation, and all).",
15125
- "To avoid match failures:",
15126
- "- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
15127
- "- ALWAYS read the file first, then copy the exact text from the read output for oldText.",
15128
- "- 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.",
15129
- "- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines).",
15130
- "",
15156
+ ...compactMode ? [] : [
15157
+ "## Tool Call Style",
15158
+ "Default: do not narrate routine, low-risk tool calls (just call the tool).",
15159
+ "Narrate only when it helps: multi-step work, complex/challenging problems, sensitive actions (e.g., deletions), or when the user explicitly asks.",
15160
+ "Keep narration brief and value-dense; avoid repeating obvious steps.",
15161
+ "Use plain human language for narration unless in a technical context.",
15162
+ "",
15163
+ "## Edit Tool Best Practices",
15164
+ "When using the edit tool, the oldText must match the file EXACTLY (whitespace, indentation, and all).",
15165
+ "To avoid match failures:",
15166
+ "- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
15167
+ "- ALWAYS read the file first, then copy the exact text from the read output for oldText.",
15168
+ "- 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.",
15169
+ "- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines).",
15170
+ ""
15171
+ ],
15131
15172
  ...safetySection,
15132
- "## Symi CLI Quick Reference",
15133
- "Symi is controlled via subcommands. Do not invent commands.",
15134
- "To manage the Gateway daemon service (start/stop/restart):",
15135
- "- symi gateway status",
15136
- "- symi gateway start",
15137
- "- symi gateway stop",
15138
- "- symi gateway restart",
15139
- "If unsure, ask the user to run `symi help` (or `symi gateway --help`) and paste the output.",
15140
- "",
15173
+ ...compactMode ? ["For Symi CLI commands, ask the user to run `symi help` and paste the output.", ""] : [
15174
+ "## Symi CLI Quick Reference",
15175
+ "Symi is controlled via subcommands. Do not invent commands.",
15176
+ "To manage the Gateway daemon service (start/stop/restart):",
15177
+ "- symi gateway status",
15178
+ "- symi gateway start",
15179
+ "- symi gateway stop",
15180
+ "- symi gateway restart",
15181
+ "If unsure, ask the user to run `symi help` (or `symi gateway --help`) and paste the output.",
15182
+ ""
15183
+ ],
15141
15184
  ...skillsSection,
15142
15185
  ...memorySection,
15143
- hasGateway && !isMinimal && !isCoding ? "## Symi Self-Update" : "",
15144
- hasGateway && !isMinimal && !isCoding ? [
15186
+ hasGateway && !isMinimal && !isCoding && !compactMode ? "## Symi Self-Update" : "",
15187
+ hasGateway && !isMinimal && !isCoding && !compactMode ? [
15145
15188
  "Get Updates (self-update) is ONLY allowed when the user explicitly asks for it.",
15146
15189
  "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.",
15147
15190
  "Actions: config.get, config.schema, config.apply (validate + write full config, then restart), update.run (update deps or git, then restart).",
15148
15191
  "After restart, Symi pings the last active session automatically."
15149
- ].join("\n") : "",
15192
+ ].join("\n") : hasGateway && !isMinimal && !isCoding && compactMode ? "Gateway destructive actions (config.apply, config.patch, update.run) require explicit user authorization via userRequestAcknowledgment — never invoke speculatively." : "",
15150
15193
  hasGateway && !isMinimal && !isCoding ? "" : "",
15151
15194
  "",
15152
15195
  params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "## Model Aliases" : "",
@@ -15163,7 +15206,8 @@ function buildAgentSystemPrompt(params) {
15163
15206
  ...buildVerifyYourWorkSection({
15164
15207
  isMinimal,
15165
15208
  execToolName,
15166
- readToolName
15209
+ readToolName,
15210
+ compactMode
15167
15211
  }),
15168
15212
  params.sandboxInfo?.enabled ? "## Sandbox" : "",
15169
15213
  params.sandboxInfo?.enabled ? [
@@ -15209,23 +15253,26 @@ function buildAgentSystemPrompt(params) {
15209
15253
  }
15210
15254
  if (params.reactionGuidance) {
15211
15255
  const { level, channel } = params.reactionGuidance;
15212
- const guidanceText = level === "minimal" ? [
15213
- `Reactions are enabled for ${channel} in MINIMAL mode.`,
15214
- "React ONLY when truly relevant:",
15215
- "- Acknowledge important user requests or confirmations",
15216
- "- Express genuine sentiment (humor, appreciation) sparingly",
15217
- "- Avoid reacting to routine messages or your own replies",
15218
- "Guideline: at most 1 reaction per 5-10 exchanges."
15219
- ].join("\n") : [
15220
- `Reactions are enabled for ${channel} in EXTENSIVE mode.`,
15221
- "Feel free to react liberally:",
15222
- "- Acknowledge messages with appropriate emojis",
15223
- "- Express sentiment and personality through reactions",
15224
- "- React to interesting content, humor, or notable events",
15225
- "- Use reactions to confirm understanding or agreement",
15226
- "Guideline: react whenever it feels natural."
15227
- ].join("\n");
15228
- lines.push("## Reactions", guidanceText, "");
15256
+ if (compactMode) lines.push("## Reactions", `Reactions for ${channel} are in ${level.toUpperCase()} mode — see the reactions-${level} skill (auto-loaded).`, "");
15257
+ else {
15258
+ const guidanceText = level === "minimal" ? [
15259
+ `Reactions are enabled for ${channel} in MINIMAL mode.`,
15260
+ "React ONLY when truly relevant:",
15261
+ "- Acknowledge important user requests or confirmations",
15262
+ "- Express genuine sentiment (humor, appreciation) sparingly",
15263
+ "- Avoid reacting to routine messages or your own replies",
15264
+ "Guideline: at most 1 reaction per 5-10 exchanges."
15265
+ ].join("\n") : [
15266
+ `Reactions are enabled for ${channel} in EXTENSIVE mode.`,
15267
+ "Feel free to react liberally:",
15268
+ "- Acknowledge messages with appropriate emojis",
15269
+ "- Express sentiment and personality through reactions",
15270
+ "- React to interesting content, humor, or notable events",
15271
+ "- Use reactions to confirm understanding or agreement",
15272
+ "Guideline: react whenever it feels natural."
15273
+ ].join("\n");
15274
+ lines.push("## Reactions", guidanceText, "");
15275
+ }
15229
15276
  }
15230
15277
  if (reasoningHint) lines.push("## Reasoning Format", reasoningHint, "");
15231
15278
  const validContextFiles = (params.contextFiles ?? []).filter((file) => typeof file.path === "string" && file.path.trim().length > 0);
@@ -39967,7 +40014,9 @@ function buildEmbeddedSystemPrompt(params) {
39967
40014
  userTime: params.userTime,
39968
40015
  userTimeFormat: params.userTimeFormat,
39969
40016
  contextFiles: params.contextFiles,
39970
- memoryCitationsMode: params.memoryCitationsMode
40017
+ memoryCitationsMode: params.memoryCitationsMode,
40018
+ compactMode: params.compactMode,
40019
+ skillsDiscoveryMode: params.skillsDiscoveryMode
39971
40020
  });
39972
40021
  const promptMode = params.promptMode ?? "full";
39973
40022
  const isMinimal = promptMode === "minimal" || promptMode === "none";
@@ -40773,7 +40822,8 @@ async function runEmbeddedAttempt(params) {
40773
40822
  autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
40774
40823
  skillsDiscoveryMode: params.config?.skills?.discoveryMode,
40775
40824
  skillsAnchorList: params.config?.skills?.anchorList,
40776
- currentUserMessage: params.prompt
40825
+ currentUserMessage: params.prompt,
40826
+ compactMode: params.config?.prompt?.compactMode
40777
40827
  });
40778
40828
  const systemPromptReport = buildSystemPromptReport({
40779
40829
  source: "run",
@@ -54298,7 +54348,7 @@ function isVoiceChannelType(type) {
54298
54348
  function createDefaultDeps() {
54299
54349
  return {
54300
54350
  sendMessageWhatsApp: async (...args) => {
54301
- const { sendMessageWhatsApp } = await import("./web-BBbVbRTg.js");
54351
+ const { sendMessageWhatsApp } = await import("./web-K_bPrtFT.js");
54302
54352
  return await sendMessageWhatsApp(...args);
54303
54353
  },
54304
54354
  sendMessageTelegram: async (...args) => {
@@ -69612,7 +69662,7 @@ function loadWebLoginQr() {
69612
69662
  return webLoginQrPromise;
69613
69663
  }
69614
69664
  function loadWebChannel() {
69615
- webChannelPromise ??= import("./web-BBbVbRTg.js");
69665
+ webChannelPromise ??= import("./web-K_bPrtFT.js");
69616
69666
  return webChannelPromise;
69617
69667
  }
69618
69668
  function loadWhatsAppActions() {
@@ -72073,7 +72123,8 @@ async function compactEmbeddedPiSessionDirect(params) {
72073
72123
  autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
72074
72124
  skillsDiscoveryMode: params.config?.skills?.discoveryMode,
72075
72125
  skillsAnchorList: params.config?.skills?.anchorList,
72076
- currentUserMessage: void 0
72126
+ currentUserMessage: void 0,
72127
+ compactMode: params.config?.prompt?.compactMode
72077
72128
  }));
72078
72129
  const sessionLock = await acquireSessionWriteLock({
72079
72130
  sessionFile: params.sessionFile,
@@ -7,7 +7,7 @@ import "./reply-prefix-K_J_nfgx.js";
7
7
  import "./github-copilot-token-BbsJ0Qbo.js";
8
8
  import "./env-CQ_DQOwT.js";
9
9
  import "./tokens-Cn6drXx2.js";
10
- import { p as runAgentTurn } from "./pi-embedded-D6Zi01El.js";
10
+ import { p as runAgentTurn } from "./pi-embedded-DaTqseIp.js";
11
11
  import "./plugins-71oIavrF.js";
12
12
  import "./accounts-DDEyGwby.js";
13
13
  import "./bindings-DYVakimr.js";
@@ -35,7 +35,7 @@ import "./accounts-DImOt9jX.js";
35
35
  import "./paths-DkMamAQ-.js";
36
36
  import "./tool-images-ChC2CXaN.js";
37
37
  import "./image-BjyeKf1c.js";
38
- import "./manager-CLPHK-qG.js";
38
+ import "./manager-SbxZtjEc.js";
39
39
  import "./gemini-auth-DVcG-42i.js";
40
40
  import "./retry-QGp0jvVi.js";
41
41
  import "./sqlite-Bo4pHfp8.js";
@@ -3,16 +3,16 @@ import "./registry-DYq1AYOv.js";
3
3
  import "./agent-scope-CpEJ0B88.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
5
5
  import "./workspace-DscDraUb.js";
6
- import { t as runAgentTurn } from "./unified-runner-CavADnkK.js";
6
+ import { t as runAgentTurn } from "./unified-runner-C0OC_Ay0.js";
7
7
  import "./paths-CbQV9WEg.js";
8
8
  import "./auth-profiles-C2vj6htZ.js";
9
9
  import "./env-BDXYbTKj.js";
10
10
  import "./github-copilot-token-cCYzSU9h.js";
11
11
  import "./boolean-CE7i9tBR.js";
12
- import "./pi-embedded-helpers-B1P8lkqj.js";
12
+ import "./pi-embedded-helpers-CU-kYRrF.js";
13
13
  import "./config-Do4JxgLI.js";
14
14
  import "./manifest-registry-CBCGTsIb.js";
15
- import "./chrome-BaMQiegP.js";
15
+ import "./chrome-CJHOBnUB.js";
16
16
  import "./frontmatter-CTR5f_Ez.js";
17
17
  import "./skills-CXxrn_e2.js";
18
18
  import "./redact-BDMXB06K.js";
@@ -30,16 +30,16 @@ import "./bindings-BsHoBLIE.js";
30
30
  import "./send-B7kMNQ-T.js";
31
31
  import "./send-9ktd0CBZ.js";
32
32
  import "./tool-images-SqqWIT22.js";
33
- import "./deliver-Dx39g9ey.js";
33
+ import "./deliver-D5655IkX.js";
34
34
  import "./diagnostic-BUcR3Meg.js";
35
35
  import "./diagnostic-session-state-Zw87xFym.js";
36
- import "./image-C-JvPPpM.js";
36
+ import "./image-BqpivNGG.js";
37
37
  import "./pi-auth-json-RXOlh8ar.js";
38
38
  import "./tokens-W0JzCJJM.js";
39
39
  import "./send-90t8KM2a.js";
40
40
  import "./pi-model-discovery-CuZX_Q4t.js";
41
41
  import "./reply-prefix-CvEIl6_d.js";
42
- import "./manager-Bc-MeMho.js";
42
+ import "./manager-DlNP6Nui.js";
43
43
  import "./gemini-auth-BefM10YB.js";
44
44
  import "./retry-B-y5suGA.js";
45
45
  import "./sqlite-BN_hIcmu.js";
@@ -50,7 +50,7 @@ import "./local-roots-ClipCZ9s.js";
50
50
  import "./ir-7tMVY7D_.js";
51
51
  import "./render-D1xvLuGo.js";
52
52
  import "./commands-registry-DxbSTLNQ.js";
53
- import "./runner-C4opGXAA.js";
53
+ import "./runner-DzNo-GCz.js";
54
54
  import "./skill-commands-DG2lcozb.js";
55
55
  import "./fetch-ClslA6GS.js";
56
56
  import "./channel-activity-D8QD7GoV.js";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Bt as runAgentTurn } from "./reply-Dx9DWIO2.js";
4
+ import { Bt as runAgentTurn } from "./reply-DaLBaxTg.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -60,8 +60,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
60
60
  import "./send-aXMPprv9.js";
61
61
  import "./model-ECsJuJew.js";
62
62
  import "./reply-prefix-CE2YmmsD.js";
63
- import "./memory-cli-BKNnDIdx.js";
64
- import "./manager-B_2KzUSI.js";
63
+ import "./memory-cli-xSpyRUEV.js";
64
+ import "./manager-Ca7NOWdK.js";
65
65
  import "./retry-BoS4e4X_.js";
66
66
  import "./sqlite-D55gRQbH.js";
67
67
  import "./target-errors-C9e6dMU_.js";
@@ -14,7 +14,7 @@ import "./client-CJIMV1WD.js";
14
14
  import "./call-BCTAmPye.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import { J as runAgentTurn } from "./subagent-registry-K1lQH7iR.js";
17
+ import { J as runAgentTurn } from "./subagent-registry--ttOPMLH.js";
18
18
  import "./sessions-CpDbQNFu.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
52
52
  import "./thinking-8sKPnzpp.js";
53
53
  import "./models-config-frWb8fDT.js";
54
54
  import "./reply-prefix-BUN71nd5.js";
55
- import "./memory-cli-3RSIw4no.js";
56
- import "./manager-yrUe0KOT.js";
55
+ import "./memory-cli-D2LaloPq.js";
56
+ import "./manager-DNxvT0P-.js";
57
57
  import "./gemini-auth-DEakvf-D.js";
58
58
  import "./retry-C4Q_VPOo.js";
59
59
  import "./sqlite-BP8tiuca.js";