@symerian/symi 2.6.17 → 2.6.18

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 (109) hide show
  1. package/dist/{agents-BigDbz_d.js → agents-BEWe0DLk.js} +4 -4
  2. package/dist/{agents.config-DtwvTAot.js → agents.config-C76tSodQ.js} +1 -1
  3. package/dist/{agents.config-eIPE7BfG.js → agents.config-DxYp0zoG.js} +1 -1
  4. package/dist/{audio-preflight-C40mKAp7.js → audio-preflight-CPBOQV4I.js} +4 -4
  5. package/dist/{auth-choice-CMG_kz3x.js → auth-choice-DrYJKB8t.js} +1 -1
  6. package/dist/{auth-choice-D9m5BulC.js → auth-choice-EwOsmB_b.js} +1 -1
  7. package/dist/{banner-C_OswN2S.js → banner-CJyz7ro7.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +1 -1
  10. package/dist/bundled/session-memory/handler.js +1 -1
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-Bu_ZCXTH.js → channel-options-D0NlH6Qb.js} +1 -1
  13. package/dist/{channel-options-BB0mSdu0.js → channel-options-tWyK68mk.js} +1 -1
  14. package/dist/{channel-web-DUDswRW8.js → channel-web-PvWA2ukO.js} +1 -1
  15. package/dist/{channels-cli-Di-BSdgT.js → channels-cli-B50IZ27a.js} +4 -4
  16. package/dist/{channels-cli-0x_RN1FV.js → channels-cli-BAXmmIxX.js} +4 -4
  17. package/dist/{chrome-CDJYxX5a.js → chrome-D2SKJnR7.js} +7 -7
  18. package/dist/{cli-cbA1yje8.js → cli-BW4igUHG.js} +1 -1
  19. package/dist/{cli-DkyyhTXQ.js → cli-CPKEDe6C.js} +1 -1
  20. package/dist/{command-registry-DW8qtaug.js → command-registry-DV-FTDz1.js} +9 -9
  21. package/dist/{completion-cli-CokhHC7P.js → completion-cli-BqzmOZg7.js} +1 -1
  22. package/dist/{completion-cli-tloa1jVl.js → completion-cli-Cbr2b-rs.js} +2 -2
  23. package/dist/{config-cli-DYo5T6bX.js → config-cli-D5QqQi4y.js} +1 -1
  24. package/dist/{config-cli-Cks2CdxR.js → config-cli-DBjlHFwQ.js} +1 -1
  25. package/dist/{configure-CYOUSSmp.js → configure-B4VAN-WJ.js} +3 -3
  26. package/dist/{configure-98ZVqzv1.js → configure-DbTH7t_m.js} +3 -3
  27. package/dist/{deliver-BH0l3UKW.js → deliver-C-37cZUe.js} +1 -1
  28. package/dist/{doctor-completion-BM2LI2kQ.js → doctor-completion-Do0e0eZE.js} +1 -1
  29. package/dist/{doctor-completion-DjWUJDRE.js → doctor-completion-v8uq--hy.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +6 -6
  32. package/dist/{gateway-cli-BfgjYQ0a.js → gateway-cli-BAiFaCGg.js} +9 -9
  33. package/dist/{gateway-cli-BMNlnEBq.js → gateway-cli-BkOe3JQ_.js} +9 -9
  34. package/dist/{glass-ui-ws-B-5Q9pvo.js → glass-ui-ws-B8V4Slwd.js} +7 -7
  35. package/dist/{glass-ui-ws-qMQsqHH3.js → glass-ui-ws-DFAQWoiK.js} +7 -7
  36. package/dist/{health-bPgBZggl.js → health-8bTzq722.js} +1 -1
  37. package/dist/{health-C1pVvTq3.js → health-B3pwVJ_N.js} +1 -1
  38. package/dist/{hooks-cli-DTeu0ug5.js → hooks-cli-D1Yhb7y5.js} +2 -2
  39. package/dist/{hooks-cli-v_x0fiwA.js → hooks-cli-Vqz0A84F.js} +2 -2
  40. package/dist/{image-CHzdaNJ4.js → image-DcpMiprB.js} +1 -1
  41. package/dist/index.js +6 -6
  42. package/dist/llm-slug-generator.js +1 -1
  43. package/dist/{models-CCNZ_VGI.js → models-BQOnDzS9.js} +2 -2
  44. package/dist/{models-cli-CZKH-Xq1.js → models-cli-BrDyN5KN.js} +3 -3
  45. package/dist/{models-cli-CWLVJkRC.js → models-cli-EP_U-tWq.js} +2 -2
  46. package/dist/{onboard-BnnTdrLO.js → onboard-BZNptre7.js} +2 -2
  47. package/dist/{onboard-9kUAnlnq.js → onboard-DM0BChC6.js} +2 -2
  48. package/dist/{onboard-channels-CCBRpRJ9.js → onboard-channels-4jeB30Ty.js} +1 -1
  49. package/dist/{onboard-channels-CPRdBKHz.js → onboard-channels-C6dLmiYY.js} +1 -1
  50. package/dist/{onboarding-Blk5VONF.js → onboarding-CDdiYaCC.js} +3 -3
  51. package/dist/{onboarding-BcjWNjOQ.js → onboarding-DQJQ-k9A.js} +3 -3
  52. package/dist/{onboarding.finalize-IQWZ0Nxx.js → onboarding.finalize-B82xL12C.js} +6 -6
  53. package/dist/{onboarding.finalize-DKZ2job-.js → onboarding.finalize-Bmd5TpyH.js} +5 -5
  54. package/dist/{pi-embedded-c89rUF7D.js → pi-embedded-Dtmwbds4.js} +47 -22
  55. package/dist/{pi-embedded-helpers-lgx_U5KS.js → pi-embedded-helpers-B8kqLWns.js} +4 -4
  56. package/dist/{plugin-registry-qHIbASyR.js → plugin-registry-D7ylmzDw.js} +1 -1
  57. package/dist/{plugin-registry-DlpEx7W7.js → plugin-registry-DG_WWCr9.js} +1 -1
  58. package/dist/plugin-sdk/{channel-web-BJSgF8Ms.js → channel-web-_efq-pM9.js} +1 -1
  59. package/dist/plugin-sdk/index.js +2 -2
  60. package/dist/plugin-sdk/{reply-DF2GwNWO.js → reply-D2W7XCcz.js} +33 -8
  61. package/dist/plugin-sdk/{web--NjJYvn_.js → web-CmT3D7vj.js} +2 -2
  62. package/dist/{plugins-cli-DiYaxXSu.js → plugins-cli-BUFrZlyR.js} +2 -2
  63. package/dist/{plugins-cli-uFsQmTOz.js → plugins-cli-CMCwFRL9.js} +2 -2
  64. package/dist/{program-Do8uFcrW.js → program-BdVazL5L.js} +7 -7
  65. package/dist/{program-context-UVmDXg4w.js → program-context-DZNOBe-u.js} +17 -17
  66. package/dist/{prompt-select-styled-CGEbisqY.js → prompt-select-styled-XyOMjPBV.js} +4 -4
  67. package/dist/{prompt-select-styled-kzPqQVwA.js → prompt-select-styled-uLoOKbdZ.js} +4 -4
  68. package/dist/{provider-auth-helpers-CqdTkwA8.js → provider-auth-helpers-CWf7gdZW.js} +1 -1
  69. package/dist/{provider-auth-helpers-DDs0rDUe.js → provider-auth-helpers-D01YbcHZ.js} +1 -1
  70. package/dist/{push-apns-j-mUpMCa.js → push-apns-B-zVLcnN.js} +1 -1
  71. package/dist/{push-apns-CfgfTcOB.js → push-apns-B2bxLda8.js} +1 -1
  72. package/dist/{pw-ai-De-KR9_s.js → pw-ai-1htA-NnS.js} +1 -1
  73. package/dist/{register.agent-CUkxOrUA.js → register.agent-BF6_rPdM.js} +5 -5
  74. package/dist/{register.agent-DBSU9q-C.js → register.agent-BYZEiWk1.js} +6 -6
  75. package/dist/{register.configure-D-YahcNK.js → register.configure-4lt1A0NF.js} +6 -6
  76. package/dist/{register.configure-BHwc52Bf.js → register.configure-B0g-yfDR.js} +6 -6
  77. package/dist/{register.maintenance-DkwHh-sW.js → register.maintenance-DXZyjFYw.js} +8 -8
  78. package/dist/{register.maintenance-CjNxcN3U.js → register.maintenance-WBpgdygw.js} +7 -7
  79. package/dist/{register.message-Dz3kJorp.js → register.message-BHRBK4eH.js} +2 -2
  80. package/dist/{register.message-BMNRNhYd.js → register.message-CuoXu-_e.js} +2 -2
  81. package/dist/{register.onboard-BGSP1g7Q.js → register.onboard-D-P9Wc41.js} +4 -4
  82. package/dist/{register.onboard-CIk7rJ1a.js → register.onboard-D5-L8JYT.js} +4 -4
  83. package/dist/{register.setup-CyU93O5k.js → register.setup-BzmkdzSO.js} +4 -4
  84. package/dist/{register.setup-DxBr7LGK.js → register.setup-D7NNQwXc.js} +4 -4
  85. package/dist/{register.status-health-sessions-Byt1zRKc.js → register.status-health-sessions-BIwZhPIZ.js} +3 -3
  86. package/dist/{register.status-health-sessions-Bo10kUYn.js → register.status-health-sessions-DiCr003h.js} +3 -3
  87. package/dist/{register.subclis-DZS69nNZ.js → register.subclis-BxbyrMu1.js} +9 -9
  88. package/dist/{reply-t3rS1c2M.js → reply-BgOOEOPX.js} +33 -8
  89. package/dist/{run-main-BE8Lea59.js → run-main-BW5eFi2Y.js} +14 -14
  90. package/dist/{runner-DUBExAb5.js → runner-BcQ0sF9T.js} +1 -1
  91. package/dist/{server-methods-vUsaIJLP.js → server-methods-D-Gd1kMo.js} +7 -7
  92. package/dist/{server-methods-BFNuAjXb.js → server-methods-Dp8iuEko.js} +7 -7
  93. package/dist/{server-node-events-DTanfrRl.js → server-node-events-B2_RCsYi.js} +2 -2
  94. package/dist/{server-node-events-DB945tPx.js → server-node-events-CnjqDQbZ.js} +2 -2
  95. package/dist/{status-CuUSAsxJ.js → status-4PSvL6ui.js} +2 -2
  96. package/dist/{status-DUI4savd.js → status-CGhoES6L.js} +1 -1
  97. package/dist/{status-Bytuvtii.js → status-CrVk9Tz5.js} +1 -1
  98. package/dist/{status-DgZSkuK3.js → status-kFfqsras.js} +2 -2
  99. package/dist/{subagent-registry-D0mKE_3q.js → subagent-registry-M6DQwhYN.js} +33 -8
  100. package/dist/{unified-runner-V2k6rAy6.js → unified-runner-DckayuEM.js} +33 -8
  101. package/dist/{update-cli-BKa2ffVu.js → update-cli-DCYkskZu.js} +8 -8
  102. package/dist/{update-cli-D2IDD4R6.js → update-cli-x5YGUm9F.js} +7 -7
  103. package/dist/{update-runner-BL1ESAT9.js → update-runner-BIp88-4P.js} +1 -1
  104. package/dist/{update-runner-CgxeuAoc.js → update-runner-Dmki2xrH.js} +1 -1
  105. package/dist/{web-CLeqzp4c.js → web-1JPHv6du.js} +1 -1
  106. package/dist/{web-DNZZb5tb.js → web-C40boK8U.js} +6 -6
  107. package/dist/{web-DcYJyp75.js → web-DWSTD7Gy.js} +1 -1
  108. package/dist/{web-Ge4OdY6a.js → web-rShvuTx4.js} +2 -2
  109. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { $t as triggerInternalHook, A as normalizeChannelId, B as getPluginComma
3
3
  import { A as buildConfiguredAllowlistKeys, At as resolveShellEnvFallbackTimeoutMs, Ct as resolveEnvApiKey, E as withFileLock, Et as normalizeSecretInput, F as modelKey, H as resolveDefaultModelForAgent, Ht as DEFAULT_MODEL, I as normalizeModelRef$2, K as resolveSubagentSpawnModelSelection, L as normalizeProviderId, M as findNormalizedProviderValue, Ot as getShellPathFromLoginShell, P as isCliProvider, T as resolveSymiAgentDir, Ut as DEFAULT_PROVIDER, V as resolveConfiguredModelRef, Vt as DEFAULT_CONTEXT_TOKENS, W as resolveModelRefFromString, Wt as resolveAuthProfileDisplayLabel, _t as createOllamaStreamFn, a as markAuthProfileFailure, b as ensureAuthProfileStore, bt as requireApiKey, c as resolveApiKeyForProfile, g as markAuthProfileGood, gt as OLLAMA_NATIVE_BASE_URL, h as listProfilesForProvider, i as isProfileInCooldown, j as buildModelAliasIndex, k as buildAllowedModelSet, m as dedupeProfileIds, n as resolveAuthProfileOrder, o as markAuthProfileUsed, q as resolveThinkingDefault, r as getSoonestCooldownExpiry, vt as getApiKeyForModel, w as resolveAuthStorePathForDisplay, wt as resolveModelAuthMode, xt as resolveApiKeyForProvider, yt as getCustomProviderApiKey } from "./auth-profiles-Q1xTr5SX.js";
4
4
  import { t as formatCliCommand } from "./command-format-BtYOfWxC.js";
5
5
  import { C as resolveThreadParentSessionKey, S as parseAgentSessionKey, _ as getSubagentDepth, b as isCronSessionKey, c as normalizeMainKey, d as sanitizeAgentId, h as normalizeAccountId$2, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isAcpSessionKey, x as isSubagentSessionKey } from "./session-key-DjZ7Z1hW.js";
6
- import { t as resolveSymiPackageRoot } from "./symi-root-BNuQ4lAT.js";
6
+ import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-BNuQ4lAT.js";
7
7
  import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-CBKBIMpA.js";
8
8
  import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentModelPrimary, r as resolveAgentConfig, s as resolveAgentSkillsFilter, u as resolveEffectiveModelFallbacks, w as filterBootstrapFilesForSession } from "./agent-scope-D-jRCY0d.js";
9
9
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-DuFIqfeC.js";
@@ -32303,16 +32303,16 @@ function setCliSessionId(entry, provider, sessionId) {
32303
32303
  */
32304
32304
  const STARTER_PACK = [
32305
32305
  "",
32306
- "SELF-AWARENESS:",
32307
- "- You are Symi. Find your installation: node -e \"console.log(require.resolve('@symerian/symi/package.json').replace('/package.json', ''))\"",
32306
+ "YOUR FILES (use read tool directly on these paths — NEVER use exec to find or read files):",
32308
32307
  "- Glass UI CSS: <SYMI_ROOT>/dist/control-ui/css/style.css",
32309
32308
  "- Glass UI HTML: <SYMI_ROOT>/dist/control-ui/index.html",
32310
32309
  "- Glass UI JS: <SYMI_ROOT>/dist/control-ui/js/app.js, gateway.js, render.js, models.js, history.js, symipulse.js, debug.js",
32310
+ "- Package: <SYMI_ROOT>/package.json",
32311
32311
  "- Config: ~/.symi/symi.json | Sessions: ~/.symi/agents/main/sessions/ | Memory: ~/.symi/state/memory/",
32312
32312
  "- For detailed modification guides, read the self-inspect skill.",
32313
32313
  "",
32314
32314
  "TOOL RULES (mandatory):",
32315
- "- read/write/edit: Always provide the full absolute path. Use read to view files — NEVER exec cat, head, find, or grep for files you know the path to.",
32315
+ "- read/write/edit: Always provide the full absolute path directly. NEVER use exec with cat, head, find, grep, or ls to view files.",
32316
32316
  "- exec/bash: Provide only valid shell syntax. No tags, no tokens, no markup. Spell commands exactly.",
32317
32317
  "- web_search: Always include query argument. Example: web_search({ query: \"search terms\" })",
32318
32318
  "- sessions_spawn: Always include task and mode. Example: sessions_spawn({ label: \"name\", mode: \"run\", task: \"description\" })",
@@ -39849,7 +39849,18 @@ async function runEmbeddedAttempt(params) {
39849
39849
  const profileModelKey = params.modelId ?? "";
39850
39850
  const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
39851
39851
  log$5.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
39852
- const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
39852
+ const systemPromptText = createSystemPromptOverride(appendPrompt + (() => {
39853
+ if (modelProfile.promptAdditions.length === 0) return "";
39854
+ let text = "\n\n" + modelProfile.promptAdditions.join("\n");
39855
+ if (text.includes("<SYMI_ROOT>")) {
39856
+ const symiRoot = resolveSymiPackageRootSync({
39857
+ moduleUrl: import.meta.url,
39858
+ argv1: process.argv[1]
39859
+ });
39860
+ if (symiRoot) text = text.replaceAll("<SYMI_ROOT>", symiRoot);
39861
+ }
39862
+ return text;
39863
+ })())();
39853
39864
  const sessionLock = await acquireSessionWriteLock({
39854
39865
  sessionFile: params.sessionFile,
39855
39866
  maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
@@ -40123,6 +40134,18 @@ async function runEmbeddedAttempt(params) {
40123
40134
  const TOOL_ERROR_ABORT_THRESHOLD = 5;
40124
40135
  const TOOL_ERROR_WARN_THRESHOLD = 3;
40125
40136
  let consecutiveToolErrors = 0;
40137
+ /** Detect exec/bash results that indicate a shell error (non-zero exit, command not found, etc.) */
40138
+ const isShellErrorResult = (result) => {
40139
+ if (!result || typeof result !== "object") return false;
40140
+ const content = result.content;
40141
+ if (!Array.isArray(content)) return false;
40142
+ const text = content.filter((b) => b && typeof b === "object" && b.type === "text").map((b) => {
40143
+ const t = b.text;
40144
+ return typeof t === "string" ? t : "";
40145
+ }).join("\n");
40146
+ if (!text) return false;
40147
+ return /exit code [1-9]\d*|command not found|No such file or directory|syntax error|parse error|Permission denied|not recognized|cannot execute/i.test(text);
40148
+ };
40126
40149
  const subscription = subscribeEmbeddedPiSession({
40127
40150
  session: activeSession,
40128
40151
  runId: params.runId,
@@ -40148,7 +40171,9 @@ async function runEmbeddedAttempt(params) {
40148
40171
  const phase = typeof evt.data?.phase === "string" ? evt.data.phase : "";
40149
40172
  const isError = evt.data?.isError === true;
40150
40173
  if (phase === "result") {
40151
- if (isError) consecutiveToolErrors++;
40174
+ const toolName = typeof evt.data?.name === "string" ? evt.data.name : "";
40175
+ const isExecShellError = !isError && (toolName === "exec" || toolName === "bash") && isShellErrorResult(evt.data?.result);
40176
+ if (isError || isExecShellError) consecutiveToolErrors++;
40152
40177
  else consecutiveToolErrors = 0;
40153
40178
  if (consecutiveToolErrors >= TOOL_ERROR_ABORT_THRESHOLD) {
40154
40179
  const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
@@ -53275,7 +53300,7 @@ function isVoiceChannelType(type) {
53275
53300
  function createDefaultDeps() {
53276
53301
  return {
53277
53302
  sendMessageWhatsApp: async (...args) => {
53278
- const { sendMessageWhatsApp } = await import("./web-DcYJyp75.js");
53303
+ const { sendMessageWhatsApp } = await import("./web-DWSTD7Gy.js");
53279
53304
  return await sendMessageWhatsApp(...args);
53280
53305
  },
53281
53306
  sendMessageTelegram: async (...args) => {
@@ -68589,7 +68614,7 @@ function loadWebLoginQr() {
68589
68614
  return webLoginQrPromise;
68590
68615
  }
68591
68616
  function loadWebChannel() {
68592
- webChannelPromise ??= import("./web-DcYJyp75.js");
68617
+ webChannelPromise ??= import("./web-DWSTD7Gy.js");
68593
68618
  return webChannelPromise;
68594
68619
  }
68595
68620
  function loadWhatsAppActions() {
@@ -4,7 +4,7 @@ import { _ as isCronSessionKey, b as resolveThreadParentSessionKey, c as normali
4
4
  import { $ as warn, B as sleep$1, D as escapeRegExp, E as ensureDir$3, G as danger, I as resolveUserPath, J as logVerbose, M as normalizeE164, O as formatTerminalLink, R as shortenHomeInString, S as CONFIG_DIR, U as truncateUtf16Safe, V as sliceUtf16Safe, W as isPlainObject, X as setVerbose, Z as shouldLogVerbose, _ as matchPluginCommand, a as normalizeAnyChannelId, d as createPluginRegistry, dt as resolvePreferredSymiTmpDir, et as colorize, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, k as isRecord$1, l as requireActivePluginRegistry, lt as normalizeLogLevel, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, nt as theme, o as normalizeChannelId, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, rt as getChildLogger, tt as isRich, u as setActivePluginRegistry, v as createInternalHookEvent, w as clampInt, x as triggerInternalHook, z as shortenHomePath } from "./registry-DYq1AYOv.js";
5
5
  import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, d as resolveSessionAgentIds, i as resolveAgentModelFallbacksOverride, l as resolveEffectiveModelFallbacks, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId } from "./agent-scope-CpEJ0B88.js";
6
6
  import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
7
- import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
7
+ import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, h as resolveSymiPackageRootSync, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
8
8
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-CbQV9WEg.js";
9
9
  import { $ as resolveSymiAgentDir, B as resolveApiKeyForProvider, C as normalizeProviderId, D as resolveModelRefFromString, E as resolveDefaultModelForAgent, F as OLLAMA_NATIVE_BASE_URL, H as resolveModelAuthMode, I as createOllamaStreamFn, K as resolveShellEnvFallbackTimeoutMs, L as getApiKeyForModel, O as resolveSubagentSpawnModelSelection, Q as resolveAuthProfileDisplayLabel, R as getCustomProviderApiKey, S as normalizeModelRef$2, T as resolveConfiguredModelRef, U as normalizeSecretInput, V as resolveEnvApiKey, W as getShellPathFromLoginShell, X as DEFAULT_MODEL, Y as DEFAULT_CONTEXT_TOKENS, Z as DEFAULT_PROVIDER, _ as buildConfiguredAllowlistKeys, a as markAuthProfileFailure, b as isCliProvider, c as dedupeProfileIds, d as ensureAuthProfileStore, f as resolveAuthStorePathForDisplay, g as buildAllowedModelSet, i as isProfileInCooldown, k as resolveThinkingDefault, l as listProfilesForProvider, n as resolveAuthProfileOrder, o as markAuthProfileUsed, p as withFileLock, r as getSoonestCooldownExpiry, s as resolveApiKeyForProfile, u as markAuthProfileGood, v as buildModelAliasIndex, x as modelKey, y as findNormalizedProviderValue, z as requireApiKey } from "./auth-profiles-DdK1Hxaa.js";
10
10
  import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
@@ -110,16 +110,16 @@ import { apiThrottler } from "@grammyjs/transformer-throttler";
110
110
  */
111
111
  const STARTER_PACK = [
112
112
  "",
113
- "SELF-AWARENESS:",
114
- "- You are Symi. Find your installation: node -e \"console.log(require.resolve('@symerian/symi/package.json').replace('/package.json', ''))\"",
113
+ "YOUR FILES (use read tool directly on these paths — NEVER use exec to find or read files):",
115
114
  "- Glass UI CSS: <SYMI_ROOT>/dist/control-ui/css/style.css",
116
115
  "- Glass UI HTML: <SYMI_ROOT>/dist/control-ui/index.html",
117
116
  "- Glass UI JS: <SYMI_ROOT>/dist/control-ui/js/app.js, gateway.js, render.js, models.js, history.js, symipulse.js, debug.js",
117
+ "- Package: <SYMI_ROOT>/package.json",
118
118
  "- Config: ~/.symi/symi.json | Sessions: ~/.symi/agents/main/sessions/ | Memory: ~/.symi/state/memory/",
119
119
  "- For detailed modification guides, read the self-inspect skill.",
120
120
  "",
121
121
  "TOOL RULES (mandatory):",
122
- "- read/write/edit: Always provide the full absolute path. Use read to view files — NEVER exec cat, head, find, or grep for files you know the path to.",
122
+ "- read/write/edit: Always provide the full absolute path directly. NEVER use exec with cat, head, find, grep, or ls to view files.",
123
123
  "- exec/bash: Provide only valid shell syntax. No tags, no tokens, no markup. Spell commands exactly.",
124
124
  "- web_search: Always include query argument. Example: web_search({ query: \"search terms\" })",
125
125
  "- sessions_spawn: Always include task and mode. Example: sessions_spawn({ label: \"name\", mode: \"run\", task: \"description\" })",
@@ -53700,7 +53700,7 @@ function isVoiceChannelType(type) {
53700
53700
  function createDefaultDeps() {
53701
53701
  return {
53702
53702
  sendMessageWhatsApp: async (...args) => {
53703
- const { sendMessageWhatsApp } = await import("./web-CLeqzp4c.js");
53703
+ const { sendMessageWhatsApp } = await import("./web-1JPHv6du.js");
53704
53704
  return await sendMessageWhatsApp(...args);
53705
53705
  },
53706
53706
  sendMessageTelegram: async (...args) => {
@@ -68980,7 +68980,7 @@ function loadWebLoginQr() {
68980
68980
  return webLoginQrPromise;
68981
68981
  }
68982
68982
  function loadWebChannel() {
68983
- webChannelPromise ??= import("./web-CLeqzp4c.js");
68983
+ webChannelPromise ??= import("./web-1JPHv6du.js");
68984
68984
  return webChannelPromise;
68985
68985
  }
68986
68986
  function loadWhatsAppActions() {
@@ -77049,7 +77049,18 @@ async function runEmbeddedAttempt(params) {
77049
77049
  const profileModelKey = params.modelId ?? "";
77050
77050
  const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
77051
77051
  log$9.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
77052
- const systemPromptText = createSystemPromptOverride(appendPrompt + (modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : ""))();
77052
+ const systemPromptText = createSystemPromptOverride(appendPrompt + (() => {
77053
+ if (modelProfile.promptAdditions.length === 0) return "";
77054
+ let text = "\n\n" + modelProfile.promptAdditions.join("\n");
77055
+ if (text.includes("<SYMI_ROOT>")) {
77056
+ const symiRoot = resolveSymiPackageRootSync({
77057
+ moduleUrl: import.meta.url,
77058
+ argv1: process.argv[1]
77059
+ });
77060
+ if (symiRoot) text = text.replaceAll("<SYMI_ROOT>", symiRoot);
77061
+ }
77062
+ return text;
77063
+ })())();
77053
77064
  const sessionLock = await acquireSessionWriteLock({
77054
77065
  sessionFile: params.sessionFile,
77055
77066
  maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
@@ -77323,6 +77334,18 @@ async function runEmbeddedAttempt(params) {
77323
77334
  const TOOL_ERROR_ABORT_THRESHOLD = 5;
77324
77335
  const TOOL_ERROR_WARN_THRESHOLD = 3;
77325
77336
  let consecutiveToolErrors = 0;
77337
+ /** Detect exec/bash results that indicate a shell error (non-zero exit, command not found, etc.) */
77338
+ const isShellErrorResult = (result) => {
77339
+ if (!result || typeof result !== "object") return false;
77340
+ const content = result.content;
77341
+ if (!Array.isArray(content)) return false;
77342
+ const text = content.filter((b) => b && typeof b === "object" && b.type === "text").map((b) => {
77343
+ const t = b.text;
77344
+ return typeof t === "string" ? t : "";
77345
+ }).join("\n");
77346
+ if (!text) return false;
77347
+ return /exit code [1-9]\d*|command not found|No such file or directory|syntax error|parse error|Permission denied|not recognized|cannot execute/i.test(text);
77348
+ };
77326
77349
  const subscription = subscribeEmbeddedPiSession({
77327
77350
  session: activeSession,
77328
77351
  runId: params.runId,
@@ -77348,7 +77371,9 @@ async function runEmbeddedAttempt(params) {
77348
77371
  const phase = typeof evt.data?.phase === "string" ? evt.data.phase : "";
77349
77372
  const isError = evt.data?.isError === true;
77350
77373
  if (phase === "result") {
77351
- if (isError) consecutiveToolErrors++;
77374
+ const toolName = typeof evt.data?.name === "string" ? evt.data.name : "";
77375
+ const isExecShellError = !isError && (toolName === "exec" || toolName === "bash") && isShellErrorResult(evt.data?.result);
77376
+ if (isError || isExecShellError) consecutiveToolErrors++;
77352
77377
  else consecutiveToolErrors = 0;
77353
77378
  if (consecutiveToolErrors >= TOOL_ERROR_ABORT_THRESHOLD) {
77354
77379
  const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
@@ -16,7 +16,7 @@ import "./client-DMBZpU6X.js";
16
16
  import "./call-BcE47FtD.js";
17
17
  import "./message-channel-C9dERklz.js";
18
18
  import "./pairing-token-Byh6drgn.js";
19
- import { Ct as trimLogTail } from "./subagent-registry-D0mKE_3q.js";
19
+ import { Ct as trimLogTail } from "./subagent-registry-M6DQwhYN.js";
20
20
  import "./sessions-CJXnZVjR.js";
21
21
  import "./tokens-Csntmwwn.js";
22
22
  import "./plugins-CwSlLxM8.js";
@@ -111,10 +111,10 @@ import "./npm-registry-spec-DkaZNHAW.js";
111
111
  import "./skill-scanner-BGWOBqLY.js";
112
112
  import "./installs-CgQpVncj.js";
113
113
  import "./channels-status-issues-c7qZbYG5.js";
114
- import "./register.subclis-DZS69nNZ.js";
115
- import "./command-registry-DW8qtaug.js";
114
+ import "./register.subclis-BxbyrMu1.js";
115
+ import "./command-registry-DV-FTDz1.js";
116
116
  import "./program-context-CqzR_m-7.js";
117
- import { r as installCompletion } from "./completion-cli-tloa1jVl.js";
117
+ import { r as installCompletion } from "./completion-cli-Cbr2b-rs.js";
118
118
  import "./daemon-runtime-CfRwa6qh.js";
119
119
  import { r as parseSemver } from "./runtime-guard-D7waq_Ho.js";
120
120
  import "./systemd-DlMdyFDY.js";
@@ -124,19 +124,19 @@ import "./systemd-hints-sQipWGd1.js";
124
124
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-wWnBIQtk.js";
125
125
  import "./diagnostics-CS1ov_hH.js";
126
126
  import { t as renderTable } from "./table-D01d2GuY.js";
127
- import "./health-bPgBZggl.js";
127
+ import "./health-8bTzq722.js";
128
128
  import "./control-ui-assets-BseSWee1.js";
129
129
  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-ZdimP1aU.js";
130
130
  import "./dm-policy-shared-DJ-61hCT.js";
131
131
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DbmZz0Aq.js";
132
- 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-BL1ESAT9.js";
132
+ 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-BIp88-4P.js";
133
133
  import "./logging-BGewRZy0.js";
134
134
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-DEMKx4eC.js";
135
135
  import "./doctor-config-flow-CA3eiKhd.js";
136
136
  import "./systemd-linger-DA_LW52P.js";
137
137
  import "./health-format-CzgUHmmX.js";
138
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-kzPqQVwA.js";
139
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DjWUJDRE.js";
138
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-uLoOKbdZ.js";
139
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-v8uq--hy.js";
140
140
  import { spawn, spawnSync } from "node:child_process";
141
141
  import os from "node:os";
142
142
  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 { V as trimLogTail } from "./reply-t3rS1c2M.js";
4
+ import { V as trimLogTail } from "./reply-BgOOEOPX.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";
@@ -106,7 +106,7 @@ import "./stagger-BUClb97_.js";
106
106
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName } from "./constants-C8_BLnaW.js";
107
107
  import "./channel-selection-DuWs0Aak.js";
108
108
  import { r as parseSemver } from "./runtime-guard-B37eizu-.js";
109
- import "./program-context-UVmDXg4w.js";
109
+ import "./program-context-DZNOBe-u.js";
110
110
  import "./catalog-RiADx7MA.js";
111
111
  import "./skills-status-CURJKnyY.js";
112
112
  import { n as inheritOptionFromParent } from "./command-options-BtDai3oC.js";
@@ -117,7 +117,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
117
117
  import "./skill-scanner-CLs8u6vQ.js";
118
118
  import "./installs-C1Cebk97.js";
119
119
  import "./channels-status-issues-B_kBkl_u.js";
120
- import { r as installCompletion } from "./completion-cli-CokhHC7P.js";
120
+ import { r as installCompletion } from "./completion-cli-BqzmOZg7.js";
121
121
  import "./daemon-runtime-2mwX-jqj.js";
122
122
  import "./systemd-riq8uNJQ.js";
123
123
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
@@ -126,19 +126,19 @@ import "./systemd-hints-BR6gChwm.js";
126
126
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-DscwlsKW.js";
127
127
  import "./diagnostics-BAMlsVVX.js";
128
128
  import { t as renderTable } from "./table-BTgkRafz.js";
129
- import "./health-C1pVvTq3.js";
129
+ import "./health-B3pwVJ_N.js";
130
130
  import "./control-ui-assets-Z947tKLt.js";
131
131
  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-CtckACbb.js";
132
132
  import "./dm-policy-shared-Bh3TbexU.js";
133
133
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DtwCUTf-.js";
134
- 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-CgxeuAoc.js";
134
+ 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-Dmki2xrH.js";
135
135
  import "./logging-BzzwiKjv.js";
136
136
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-rw7wJwHd.js";
137
137
  import "./doctor-config-flow-QnaBd8kL.js";
138
138
  import "./systemd-linger-aQ75ZlXY.js";
139
139
  import "./health-format-DSwnXZPU.js";
140
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-CGEbisqY.js";
141
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BM2LI2kQ.js";
140
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-XyOMjPBV.js";
141
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Do0e0eZE.js";
142
142
  import os from "node:os";
143
143
  import path from "node:path";
144
144
  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 { Ct as trimLogTail } from "./subagent-registry-D0mKE_3q.js";
3
+ import { Ct as trimLogTail } from "./subagent-registry-M6DQwhYN.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-BseSWee1.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-ZdimP1aU.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 { V as trimLogTail } from "./reply-t3rS1c2M.js";
2
+ import { V as trimLogTail } from "./reply-BgOOEOPX.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Z947tKLt.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-CtckACbb.js";
@@ -4,7 +4,7 @@ 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-V2k6rAy6.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-DckayuEM.js";
8
8
  import { s as resolveStorePath } from "./paths-CbQV9WEg.js";
9
9
  import "./auth-profiles-DdK1Hxaa.js";
10
10
  import { n as formatCliCommand } from "./env-BDXYbTKj.js";
@@ -8,13 +8,13 @@ import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createR
8
8
  import "./github-copilot-token-BbsJ0Qbo.js";
9
9
  import { r as formatCliCommand } from "./env-CQ_DQOwT.js";
10
10
  import "./tokens-Cn6drXx2.js";
11
- import { C as shouldComputeCommandAuthorized, S as hasControlCommand, T as normalizeMentionText, _ as enqueueSystemEvent, a as DEFAULT_GROUP_HISTORY_LIMIT, b as formatInboundEnvelope, c as shouldAckReactionForWhatsApp, d as createDedupeCache, f as getReplyFromConfig, g as formatDurationPrecise, h as parseActivationCommand, i as resolveMentionGating, l as dispatchReplyWithBufferedBlockDispatcher, m as normalizeGroupActivation, n as sleepWithAbort, o as buildHistoryContextFromEntries, r as buildPairingReply, s as recordPendingHistoryEntryIfEnabled, t as computeBackoff, v as createInboundDebouncer, w as buildMentionRegexes, x as resolveEnvelopeFormatOptions, y as resolveInboundDebounceMs } from "./pi-embedded-c89rUF7D.js";
11
+ import { C as shouldComputeCommandAuthorized, S as hasControlCommand, T as normalizeMentionText, _ as enqueueSystemEvent, a as DEFAULT_GROUP_HISTORY_LIMIT, b as formatInboundEnvelope, c as shouldAckReactionForWhatsApp, d as createDedupeCache, f as getReplyFromConfig, g as formatDurationPrecise, h as parseActivationCommand, i as resolveMentionGating, l as dispatchReplyWithBufferedBlockDispatcher, m as normalizeGroupActivation, n as sleepWithAbort, o as buildHistoryContextFromEntries, r as buildPairingReply, s as recordPendingHistoryEntryIfEnabled, t as computeBackoff, v as createInboundDebouncer, w as buildMentionRegexes, x as resolveEnvelopeFormatOptions, y as resolveInboundDebounceMs } from "./pi-embedded-Dtmwbds4.js";
12
12
  import "./plugins-71oIavrF.js";
13
13
  import { i as logWebSelfId, l as readWebSelfId, n as WA_WEB_AUTH_DIR, p as webAuthExists, r as getWebAuthAgeMs, s as pickWebChannel, t as resolveWhatsAppAccount } from "./accounts-DDEyGwby.js";
14
14
  import "./bindings-DYVakimr.js";
15
15
  import "./send-D-hWrHoH.js";
16
16
  import "./send-C1IYd3g7.js";
17
- import "./deliver-BH0l3UKW.js";
17
+ import "./deliver-C-37cZUe.js";
18
18
  import "./diagnostic-D0xmLpej.js";
19
19
  import "./diagnostic-session-state-C1vRJs5w.js";
20
20
  import "./accounts-8zZqL37v.js";
@@ -22,10 +22,10 @@ import { G as formatLocationText, J as readChannelAllowFromStore, K as toLocatio
22
22
  import "./image-ops-ByaQt43P.js";
23
23
  import "./pi-model-discovery-j5tVLINv.js";
24
24
  import "./message-channel-BQINJQIT.js";
25
- import { Ct as resolveGroupSessionKey, H as loadSessionStore, K as updateLastRoute, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-lgx_U5KS.js";
25
+ import { Ct as resolveGroupSessionKey, H as loadSessionStore, K as updateLastRoute, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-B8kqLWns.js";
26
26
  import { n as loadConfig } from "./config-BmV60pPT.js";
27
27
  import "./manifest-registry-D-mTF1cj.js";
28
- import "./chrome-CDJYxX5a.js";
28
+ import "./chrome-D2SKJnR7.js";
29
29
  import "./skills-BNpGMnp-.js";
30
30
  import "./redact-1NGYV_8p.js";
31
31
  import "./errors-CPfngF0S.js";
@@ -35,7 +35,7 @@ import { h as resolveChannelGroupRequireMention, m as resolveChannelGroupPolicy
35
35
  import "./accounts-DImOt9jX.js";
36
36
  import { s as resolveStorePath } from "./paths-DkMamAQ-.js";
37
37
  import "./tool-images-ChC2CXaN.js";
38
- import "./image-CHzdaNJ4.js";
38
+ import "./image-DcpMiprB.js";
39
39
  import "./manager-jpn5vRTY.js";
40
40
  import "./gemini-auth-CSlZZ1Pw.js";
41
41
  import "./sqlite-BNh23mUR.js";
@@ -49,7 +49,7 @@ import "./render-B1VqYyvo.js";
49
49
  import "./commands-registry-C_aYUwpl.js";
50
50
  import "./skill-commands-DklY7Cj7.js";
51
51
  import { t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
52
- import { p as registerUnhandledRejectionHandler } from "./runner-DUBExAb5.js";
52
+ import { p as registerUnhandledRejectionHandler } from "./runner-BcQ0sF9T.js";
53
53
  import "./fetch-DtLn7YU3.js";
54
54
  import { n as recordChannelActivity } from "./channel-activity-D9q-fIPB.js";
55
55
  import { t as convertMarkdownTables } from "./tables-COnZ169v.js";
@@ -15,7 +15,7 @@ import "./client-DMBZpU6X.js";
15
15
  import "./call-BcE47FtD.js";
16
16
  import "./message-channel-C9dERklz.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import { Bn as resolveEnvelopeFormatOptions, Cn as enqueueSystemEvent, F as buildHistoryContextFromEntries, Hn as hasControlCommand, I as recordPendingHistoryEntryIfEnabled, Kn as buildMentionRegexes, L as shouldAckReactionForWhatsApp, Ln as createInboundDebouncer, M as buildPairingReply, N as resolveMentionGating, P as DEFAULT_GROUP_HISTORY_LIMIT, R as dispatchReplyWithBufferedBlockDispatcher, Rn as resolveInboundDebounceMs, U as createDedupeCache, Un as shouldComputeCommandAuthorized, W as getReplyFromConfig, b as sleepWithAbort, nn as parseActivationCommand, qn as normalizeMentionText, tn as normalizeGroupActivation, y as computeBackoff, zn as formatInboundEnvelope } from "./subagent-registry-D0mKE_3q.js";
18
+ import { Bn as resolveEnvelopeFormatOptions, Cn as enqueueSystemEvent, F as buildHistoryContextFromEntries, Hn as hasControlCommand, I as recordPendingHistoryEntryIfEnabled, Kn as buildMentionRegexes, L as shouldAckReactionForWhatsApp, Ln as createInboundDebouncer, M as buildPairingReply, N as resolveMentionGating, P as DEFAULT_GROUP_HISTORY_LIMIT, R as dispatchReplyWithBufferedBlockDispatcher, Rn as resolveInboundDebounceMs, U as createDedupeCache, Un as shouldComputeCommandAuthorized, W as getReplyFromConfig, b as sleepWithAbort, nn as parseActivationCommand, qn as normalizeMentionText, tn as normalizeGroupActivation, y as computeBackoff, zn as formatInboundEnvelope } from "./subagent-registry-M6DQwhYN.js";
19
19
  import { B as resolveGroupSessionKey, c as recordSessionMetaFromInbound, o as loadSessionStore, s as readSessionUpdatedAt, u as updateLastRoute } from "./sessions-CJXnZVjR.js";
20
20
  import "./tokens-Csntmwwn.js";
21
21
  import "./plugins-CwSlLxM8.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 "./reply-t3rS1c2M.js";
4
+ import "./reply-BgOOEOPX.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -101,7 +101,7 @@ import "./pi-tools.policy-CIDBbw6x.js";
101
101
  import "./control-service-Bz7rxLWq.js";
102
102
  import "./stagger-BUClb97_.js";
103
103
  import "./channel-selection-DuWs0Aak.js";
104
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-DUDswRW8.js";
104
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-PvWA2ukO.js";
105
105
  import { n as sendMessageWhatsApp } from "./outbound-DB5Zus0-.js";
106
106
  import { i as waitForWaConnection, t as createWaSocket } from "./session-DIBTkyvE.js";
107
107
  import { t as loginWeb } from "./login-dIlDkG4X.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "2.6.17",
3
+ "version": "2.6.18",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",