@symerian/symi 3.3.2 → 3.3.3

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/{agent-BED0HDsS.js → agent-9zPi5Bip.js} +1 -1
  2. package/dist/{agent-pDOR_idq.js → agent-M9EC02CI.js} +1 -1
  3. package/dist/{agents-mZX2a3hp.js → agents-CW9uf_n0.js} +2 -2
  4. package/dist/{auth-choice-BgCnInKE.js → auth-choice-Bio1-QUP.js} +1 -1
  5. package/dist/{auth-choice-nKtOJ3wF.js → auth-choice-DS5oaUTz.js} +1 -1
  6. package/dist/{banner-C2jUZyMq.js → banner-0vT1O9w2.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +4 -4
  9. package/dist/bundled/session-memory/handler.js +4 -4
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-DBKd8H2k.js → channel-options-CcGtiy0Q.js} +1 -1
  12. package/dist/{channel-options-DRzIcaL1.js → channel-options-DZ17japQ.js} +1 -1
  13. package/dist/{channels-cli-CxUB3oX1.js → channels-cli-BSvEpjOV.js} +7 -7
  14. package/dist/{channels-cli-CdfROBlW.js → channels-cli-DxSXTCCh.js} +7 -7
  15. package/dist/{chrome-CejiigNy.js → chrome-C9mX2mtt.js} +7 -7
  16. package/dist/{chrome-b556dOQ6.js → chrome-CQnRgvJz.js} +7 -7
  17. package/dist/{cli-CzEP9cIM.js → cli-CHk4wR-F.js} +4 -4
  18. package/dist/{cli-DWcoPSRG.js → cli-Dn9ylBb2.js} +4 -4
  19. package/dist/{command-registry-5O5dCHsD.js → command-registry-UxY6jjeo.js} +10 -10
  20. package/dist/{completion-cli-D4wYjxBG.js → completion-cli-DebZ6nSb.js} +1 -1
  21. package/dist/{completion-cli-DqrFJhG4.js → completion-cli-m9L2Gv9t.js} +2 -2
  22. package/dist/{config-cli-BE2vvf40.js → config-cli-D4_gO3Pd.js} +1 -1
  23. package/dist/{config-cli-CfA5xnD-.js → config-cli-D9YdRiN2.js} +1 -1
  24. package/dist/{configure-CPY4n9mx.js → configure-BXjJQG1p.js} +2 -2
  25. package/dist/{configure-DYDsHAWF.js → configure-D9NeIMjP.js} +2 -2
  26. package/dist/{deliver-i5knkyHl.js → deliver-DSMNXd9k.js} +4 -4
  27. package/dist/{deliver-BY0HHHHB.js → deliver-DSv-Z24A.js} +4 -4
  28. package/dist/{doctor-completion-DkwAZ_yS.js → doctor-completion--AgLv0kV.js} +1 -1
  29. package/dist/{doctor-completion-C6M7eRb_.js → doctor-completion-D1ImH_eM.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +4 -4
  32. package/dist/{gateway-cli-Dm5RZoKM.js → gateway-cli-5KVJJGFm.js} +10 -10
  33. package/dist/{gateway-cli-K_XVNWQc.js → gateway-cli-BjGvnfU3.js} +10 -10
  34. package/dist/{glass-ui-ws-BbsrTxei.js → glass-ui-ws-CwJdwqn6.js} +8 -8
  35. package/dist/{glass-ui-ws-B_7JgOGU.js → glass-ui-ws-f_OPXcN2.js} +8 -8
  36. package/dist/{hooks-cli-D5S_h70_.js → hooks-cli-BfVq5C1p.js} +5 -5
  37. package/dist/{hooks-cli-DyiztpNG.js → hooks-cli-CQ6rF_LQ.js} +5 -5
  38. package/dist/index.js +8 -8
  39. package/dist/llm-slug-generator.js +4 -4
  40. package/dist/{manager-TrK63P2M.js → manager-BI8o6AGu.js} +1 -1
  41. package/dist/{manager-BTtaJXdu.js → manager-BQ5Wl5r-.js} +1 -1
  42. package/dist/{manager-ue49bRVP.js → manager-BUS2wGkQ.js} +1 -1
  43. package/dist/{manager-BT2SbOdg.js → manager-D_AVoLu8.js} +1 -1
  44. package/dist/{memory-Czxk_hJw.js → memory-2OKjMT7V.js} +2 -2
  45. package/dist/{memory-DJN1Q1jq.js → memory-CMKSFx1T.js} +2 -2
  46. package/dist/{memory-cli-B-nQp5HP.js → memory-cli-CmPcKzGZ.js} +2 -2
  47. package/dist/{memory-cli-C9ZqpaaB.js → memory-cli-rdfaJrCS.js} +2 -2
  48. package/dist/{models-oqT-RVMM.js → models-DRtgYyTB.js} +2 -2
  49. package/dist/{models-cli-D8rsqzuW.js → models-cli-183sPHZO.js} +5 -5
  50. package/dist/{models-cli-CuHQFbs7.js → models-cli-DN2zTFw9.js} +6 -6
  51. package/dist/{onboard-BICXrIV1.js → onboard-CPHA8CdV.js} +1 -1
  52. package/dist/{onboard-D-xPcbdk.js → onboard-bTgNnEHK.js} +1 -1
  53. package/dist/{onboard-channels-CiLPgwMl.js → onboard-channels-B_iyN1qL.js} +1 -1
  54. package/dist/{onboard-channels-IZ52XV8A.js → onboard-channels-D5ugcgBE.js} +1 -1
  55. package/dist/{onboarding-BmB9v20h.js → onboarding-D2SLzcWH.js} +3 -3
  56. package/dist/{onboarding-B-jxZvC2.js → onboarding-ii3ok0Ih.js} +3 -3
  57. package/dist/{onboarding.finalize-BejpUEVe.js → onboarding.finalize-DOHv_Xe8.js} +3 -3
  58. package/dist/{onboarding.finalize-DufFKTf4.js → onboarding.finalize-g-_d-wVY.js} +4 -4
  59. package/dist/{pi-embedded-DoWU3tbW.js → pi-embedded-CvGL6bij.js} +36 -36
  60. package/dist/{plugin-registry-BybhOEu2.js → plugin-registry-DSG-0min.js} +1 -1
  61. package/dist/{plugin-registry-CFRFz2CF.js → plugin-registry-Dl3HqI5J.js} +1 -1
  62. package/dist/plugin-sdk/agents/{symipulse-timeout.d.ts → idle-timeout.d.ts} +3 -3
  63. package/dist/plugin-sdk/index.js +6 -6
  64. package/dist/{plugins-cli-D9jv4SGt.js → plugins-cli-CEj-qNus.js} +5 -5
  65. package/dist/{plugins-cli-Dw_F4XTt.js → plugins-cli-CUTyMzoz.js} +5 -5
  66. package/dist/{program-BijlJds3.js → program-CjZ65fN4.js} +10 -10
  67. package/dist/{program-context-f_krhr6H.js → program-context-GaV454D6.js} +18 -18
  68. package/dist/{prompt-select-styled-D4Dl6PAx.js → prompt-select-styled-BkowcFQR.js} +4 -4
  69. package/dist/{prompt-select-styled-wUs9hOXT.js → prompt-select-styled-CwXc8EFB.js} +4 -4
  70. package/dist/{provider-auth-helpers-Dqg9CSy6.js → provider-auth-helpers-Bo1_RSEb.js} +1 -1
  71. package/dist/{provider-auth-helpers-B0LgxUJm.js → provider-auth-helpers-CRobCJR_.js} +1 -1
  72. package/dist/{push-apns-DBG95KxK.js → push-apns-BBym2pAw.js} +1 -1
  73. package/dist/{push-apns-C8U43QIp.js → push-apns-Bv16DYOL.js} +1 -1
  74. package/dist/{pw-ai-BFZrohva.js → pw-ai-B3qisJP1.js} +1 -1
  75. package/dist/{pw-ai-BHSw4eGG.js → pw-ai-GICi0s74.js} +1 -1
  76. package/dist/{register.agent-BQa36aBT.js → register.agent-QXqsCc-q.js} +9 -9
  77. package/dist/{register.agent-B0UZREcL.js → register.agent-z4GJgPr-.js} +8 -8
  78. package/dist/{register.configure-DXxKMVFv.js → register.configure-CYXErdjF.js} +8 -8
  79. package/dist/{register.configure-C2da871z.js → register.configure-DaMmDTaj.js} +8 -8
  80. package/dist/{register.maintenance-DUuHNER1.js → register.maintenance-CBGhJ5R9.js} +9 -9
  81. package/dist/{register.maintenance-CU2sJOVr.js → register.maintenance-CcWTycM4.js} +8 -8
  82. package/dist/{register.message-DIDXm7JJ.js → register.message-Bcvdcd3v.js} +5 -5
  83. package/dist/{register.message-zAQ9mzwS.js → register.message-EMkIi8Ga.js} +5 -5
  84. package/dist/{register.onboard-BQrBlJMk.js → register.onboard-CtcLKgR4.js} +2 -2
  85. package/dist/{register.onboard-xApCQkav.js → register.onboard-lmLaYYZl.js} +2 -2
  86. package/dist/{register.setup-CfJlyVIU.js → register.setup-Cu8R_HaH.js} +2 -2
  87. package/dist/{register.setup-C3DgnQee.js → register.setup-D47FYXH2.js} +2 -2
  88. package/dist/{register.status-health-sessions-D7eQHV4A.js → register.status-health-sessions--q6ddHX9.js} +3 -3
  89. package/dist/{register.status-health-sessions-CZKtQH3R.js → register.status-health-sessions-B9CINBWm.js} +3 -3
  90. package/dist/{register.subclis-DBKLQ-vk.js → register.subclis-CHTY5PYx.js} +9 -9
  91. package/dist/{run-main-C_9MD69x.js → run-main-Bzub4qvZ.js} +17 -17
  92. package/dist/{server-methods-B4kcazJq.js → server-methods-C2UnIkWU.js} +6 -6
  93. package/dist/{server-methods-BLH71I9g.js → server-methods-THO5vDXZ.js} +6 -6
  94. package/dist/{server-node-events-DO4ug_A0.js → server-node-events-j4AWHS1m.js} +6 -6
  95. package/dist/{server-node-events-BercSdmp.js → server-node-events-mBi614x_.js} +6 -6
  96. package/dist/{status-uVc7h7PN.js → status-BtAHzMLu.js} +1 -1
  97. package/dist/{status-DA_sl7Yp.js → status-BuHx0FXI.js} +1 -1
  98. package/dist/{status-BdrH4P1l.js → status-FKqnkO3K.js} +1 -1
  99. package/dist/{status-3CIcz22o.js → status-MkJRgsTJ.js} +1 -1
  100. package/dist/{subagent-registry-CgZDo35C.js → subagent-registry-B1RgR3-0.js} +29 -29
  101. package/dist/{synthesis-DmdaBp-J.js → synthesis-BEaISjwW.js} +4 -4
  102. package/dist/{synthesis-DwfzSD3_.js → synthesis-BSUjIY0v.js} +4 -4
  103. package/dist/{synthesis-w1oM0_-6.js → synthesis-BtlmxJ7w.js} +4 -4
  104. package/dist/{synthesis-B_K7BSX3.js → synthesis-DsYfiC2s.js} +4 -4
  105. package/dist/{unified-runner-BPgxfuKU.js → unified-runner-BPyxPZv9.js} +36 -36
  106. package/dist/{unified-runner-DzycRpag.js → unified-runner-Bn9vq7Zy.js} +29 -29
  107. package/dist/{update-cli-C4I2k2u9.js → update-cli-BXtHo0ox.js} +9 -9
  108. package/dist/{update-cli-DYYKfrbM.js → update-cli-DLx7LNVB.js} +8 -8
  109. package/package.json +1 -1
@@ -44,8 +44,8 @@ import { t as emitSessionTranscriptUpdate } from "./transcript-events-C1GkbPky.j
44
44
  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-BDh5LPh-.js";
45
45
  import { t as ensureSymiModelsJson } from "./models-config-BfmuswQ_.js";
46
46
  import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CRdCnS44.js";
47
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-DJN1Q1jq.js";
48
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-TrK63P2M.js";
47
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-CMKSFx1T.js";
48
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-BI8o6AGu.js";
49
49
  import { f as runTasksWithConcurrency } from "./internal-BuBDa4KX.js";
50
50
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BySyfaEr.js";
51
51
  import { n as resolveMarkdownTableMode } from "./markdown-tables-CCOfinlW.js";
@@ -76,7 +76,7 @@ import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normal
76
76
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-p35DYzAL.js";
77
77
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BoF_Jubb.js";
78
78
  import { t as parseTimeoutMs } from "./parse-timeout-CMozMfzr.js";
79
- import { n as registerMemoryCli } from "./memory-cli-C9ZqpaaB.js";
79
+ import { n as registerMemoryCli } from "./memory-cli-rdfaJrCS.js";
80
80
  import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-BOy28KVL.js";
81
81
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-D-WJTlz8.js";
82
82
  import { createRequire } from "node:module";
@@ -30768,6 +30768,31 @@ function createCacheTrace(params) {
30768
30768
  };
30769
30769
  }
30770
30770
 
30771
+ //#endregion
30772
+ //#region src/agents/idle-timeout.ts
30773
+ /**
30774
+ * Per-run idle timeout resolution.
30775
+ *
30776
+ * The idle timer resets on every model/tool activity signal (streaming
30777
+ * chunk, tool execution, compaction, etc.). It fires only when the run is
30778
+ * truly idle — distinguishing "model working slowly on large context" from
30779
+ * "model stuck / connection lost".
30780
+ */
30781
+ const DEFAULT_IDLE_RATIO = .5;
30782
+ const MIN_IDLE_MS = 12e4;
30783
+ const MAX_IDLE_MS = 9e5;
30784
+ const ABSOLUTE_MIN_IDLE_MS = 3e4;
30785
+ const normalizeNumber = (value) => typeof value === "number" && Number.isFinite(value) ? Math.floor(value) : void 0;
30786
+ function resolveIdleTimeoutMs(opts) {
30787
+ const cap = Math.max(ABSOLUTE_MIN_IDLE_MS, opts.runTimeoutMs - 1e3);
30788
+ const modelMs = normalizeNumber(opts.modelSeconds != null ? opts.modelSeconds * 1e3 : void 0);
30789
+ if (modelMs !== void 0 && modelMs > 0) return Math.min(Math.max(modelMs, ABSOLUTE_MIN_IDLE_MS), cap);
30790
+ const configMs = normalizeNumber(opts.configSeconds != null ? opts.configSeconds * 1e3 : void 0);
30791
+ if (configMs !== void 0 && configMs > 0) return Math.min(Math.max(configMs, ABSOLUTE_MIN_IDLE_MS), cap);
30792
+ const computed = Math.floor(opts.runTimeoutMs * DEFAULT_IDLE_RATIO);
30793
+ return Math.min(Math.max(computed, MIN_IDLE_MS), Math.min(MAX_IDLE_MS, cap));
30794
+ }
30795
+
30771
30796
  //#endregion
30772
30797
  //#region src/agents/model-token-filter.ts
30773
30798
  /**
@@ -34924,31 +34949,6 @@ function hasRepetition(text, minBlockSize) {
34924
34949
  return text.indexOf(sample, searchStart) >= 0;
34925
34950
  }
34926
34951
 
34927
- //#endregion
34928
- //#region src/agents/symipulse-timeout.ts
34929
- /**
34930
- * Symipulse inactivity timeout resolution.
34931
- *
34932
- * The symipulse timer resets on every model/tool activity signal (streaming
34933
- * chunk, tool execution, compaction, etc.). It fires only when the run is
34934
- * truly idle — distinguishing "model working slowly on large context" from
34935
- * "model stuck / connection lost".
34936
- */
34937
- const DEFAULT_SYMIPULSE_RATIO = .5;
34938
- const MIN_SYMIPULSE_MS = 12e4;
34939
- const MAX_SYMIPULSE_MS = 9e5;
34940
- const SYMIPULSE_MIN_TIMEOUT_MS = 3e4;
34941
- const normalizeNumber = (value) => typeof value === "number" && Number.isFinite(value) ? Math.floor(value) : void 0;
34942
- function resolveSymipulseMs(opts) {
34943
- const cap = Math.max(SYMIPULSE_MIN_TIMEOUT_MS, opts.runTimeoutMs - 1e3);
34944
- const modelMs = normalizeNumber(opts.modelSeconds != null ? opts.modelSeconds * 1e3 : void 0);
34945
- if (modelMs !== void 0 && modelMs > 0) return Math.min(Math.max(modelMs, SYMIPULSE_MIN_TIMEOUT_MS), cap);
34946
- const configMs = normalizeNumber(opts.configSeconds != null ? opts.configSeconds * 1e3 : void 0);
34947
- if (configMs !== void 0 && configMs > 0) return Math.min(Math.max(configMs, SYMIPULSE_MIN_TIMEOUT_MS), cap);
34948
- const computed = Math.floor(opts.runTimeoutMs * DEFAULT_SYMIPULSE_RATIO);
34949
- return Math.min(Math.max(computed, MIN_SYMIPULSE_MS), Math.min(MAX_SYMIPULSE_MS, cap));
34950
- }
34951
-
34952
34952
  //#endregion
34953
34953
  //#region src/agents/transcript-policy.ts
34954
34954
  const GEMMA_MODEL_HINTS = ["gemma", "redsand/"];
@@ -38301,7 +38301,7 @@ async function runEmbeddedAttempt(params) {
38301
38301
  if (!key) return null;
38302
38302
  return (params.config?.agents?.defaults?.models)?.[key]?.symipulseSeconds ?? null;
38303
38303
  };
38304
- const symipulseMs = params.symipulseMs ?? resolveSymipulseMs({
38304
+ const symipulseMs = params.symipulseMs ?? resolveIdleTimeoutMs({
38305
38305
  runTimeoutMs: params.timeoutMs,
38306
38306
  configSeconds: params.config?.agents?.defaults?.symipulseSeconds,
38307
38307
  modelSeconds: resolveModelSymipulseSeconds()
@@ -7,21 +7,21 @@ import "./reply-prefix-BqgLflxO.js";
7
7
  import "./github-copilot-token-BbsJ0Qbo.js";
8
8
  import "./plugins-Cp39v6b_.js";
9
9
  import "./replies-BeK3uuQ8.js";
10
- import { n as runAgentTurn } from "./pi-embedded-DoWU3tbW.js";
11
- import "./deliver-i5knkyHl.js";
10
+ import { n as runAgentTurn } from "./pi-embedded-CvGL6bij.js";
11
+ import "./deliver-DSMNXd9k.js";
12
12
  import "./diagnostic-BvZmqxYI.js";
13
13
  import "./diagnostic-session-state-CWtaDOiK.js";
14
14
  import "./chunk-BjnT3w_x.js";
15
15
  import "./ssrf-BJZIZ4yo.js";
16
16
  import "./manifest-registry-BV_2TbGz.js";
17
- import "./chrome-b556dOQ6.js";
17
+ import "./chrome-CQnRgvJz.js";
18
18
  import "./skills-xmXjOnAV.js";
19
19
  import "./redact-ojHFHOAb.js";
20
20
  import "./errors-C6sHIFo_.js";
21
21
  import "./tokens-CJgPtOxz.js";
22
22
  import "./thinking-BKsvyjWX.js";
23
23
  import "./paths-N698mtPE.js";
24
- import "./manager-ue49bRVP.js";
24
+ import "./manager-BUS2wGkQ.js";
25
25
  import "./sqlite-jFnvSfLz.js";
26
26
  import "./markdown-tables-BtWlyyt1.js";
27
27
  import "./commands-registry-BO62ZyK2.js";
@@ -14,7 +14,7 @@ import "./client-CAz5aPpp.js";
14
14
  import "./call-BocrIanP.js";
15
15
  import "./message-channel-CNPAq1Tl.js";
16
16
  import "./pairing-token-Bnr7QjVF.js";
17
- import { T as runAgentTurn } from "./subagent-registry-CgZDo35C.js";
17
+ import { T as runAgentTurn } from "./subagent-registry-B1RgR3-0.js";
18
18
  import "./sessions-7jk0D1BI.js";
19
19
  import "./plugins-Bq-Msc8Z.js";
20
20
  import "./send-CLJ2KPVT.js";
@@ -42,8 +42,8 @@ import "./paths-CNexk5_o.js";
42
42
  import "./thinking-BDh5LPh-.js";
43
43
  import "./models-config-BfmuswQ_.js";
44
44
  import "./reply-prefix-CRdCnS44.js";
45
- import "./memory-DJN1Q1jq.js";
46
- import "./manager-TrK63P2M.js";
45
+ import "./memory-CMKSFx1T.js";
46
+ import "./manager-BI8o6AGu.js";
47
47
  import "./sqlite-l3CZYU6t.js";
48
48
  import "./chunk-BySyfaEr.js";
49
49
  import "./markdown-tables-CCOfinlW.js";
@@ -73,7 +73,7 @@ import "./links-Db3Rw0Tg.js";
73
73
  import "./cli-utils-BqMwAlgf.js";
74
74
  import "./help-format-DbbIlOje.js";
75
75
  import "./progress-C4ck6JXh.js";
76
- import "./memory-cli-C9ZqpaaB.js";
76
+ import "./memory-cli-rdfaJrCS.js";
77
77
  import "./logging-D0L9TWhE.js";
78
78
  import "./replies-BOy28KVL.js";
79
79
  import "./pi-tools.policy-D-WJTlz8.js";
@@ -1,4 +1,4 @@
1
- import { t as runAgentTurn } from "./unified-runner-DzycRpag.js";
1
+ import { t as runAgentTurn } from "./unified-runner-Bn9vq7Zy.js";
2
2
  import "./registry-DKJLAPDB.js";
3
3
  import "./paths-BSzKwaxE.js";
4
4
  import "./utils-BU8jVQFM.js";
@@ -45,8 +45,8 @@ import "./session-cost-usage-DYcv40ss.js";
45
45
  import "./session-utils-0F9pB5d6.js";
46
46
  import "./with-timeout-C0UtpXBj.js";
47
47
  import "./reply-prefix-xaWqfM9m.js";
48
- import "./memory-Czxk_hJw.js";
49
- import "./manager-BTtaJXdu.js";
48
+ import "./memory-2OKjMT7V.js";
49
+ import "./manager-BQ5Wl5r-.js";
50
50
  import "./sqlite-DBEvS-Ne.js";
51
51
  import "./chunk-DQGU0F8t.js";
52
52
  import "./markdown-tables-GTLvbzuR.js";
@@ -76,7 +76,7 @@ import "./links-CSaUKNKm.js";
76
76
  import "./cli-utils-CX1oQ81G.js";
77
77
  import "./help-format-BI_G2p1e.js";
78
78
  import "./progress-CyPyGCDn.js";
79
- import "./memory-cli-B-nQp5HP.js";
79
+ import "./memory-cli-CmPcKzGZ.js";
80
80
  import "./logging-B5YNzZB9.js";
81
81
  import "./replies-P7jbK6Bo.js";
82
82
  import "./pi-tools.policy-BBHbN8Nh.js";
@@ -3,14 +3,14 @@ import "./registry-C-JddWwo.js";
3
3
  import "./agent-scope-D_MtsuXX.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-DzRUKS9f.js";
5
5
  import "./workspace-CsaDUuDn.js";
6
- import { t as runAgentTurn } from "./unified-runner-BPgxfuKU.js";
6
+ import { t as runAgentTurn } from "./unified-runner-BPyxPZv9.js";
7
7
  import "./auth-profiles-duUuQXeC.js";
8
8
  import "./github-copilot-token-B31ugq7R.js";
9
9
  import "./boolean-mcn6kL0s.js";
10
- import "./deliver-BY0HHHHB.js";
10
+ import "./deliver-DSv-Z24A.js";
11
11
  import "./ssrf-Dcgaqg3U.js";
12
12
  import "./manifest-registry-DsTUFMvZ.js";
13
- import "./chrome-CejiigNy.js";
13
+ import "./chrome-C9mX2mtt.js";
14
14
  import "./frontmatter-BzAaXBfE.js";
15
15
  import "./skills-D0k4o0Ez.js";
16
16
  import "./redact-Dd8jrogi.js";
@@ -26,7 +26,7 @@ import "./diagnostic-D7z6O7v0.js";
26
26
  import "./diagnostic-session-state-BkfiP_y6.js";
27
27
  import "./pi-auth-json-D4Bl4hBw.js";
28
28
  import "./reply-prefix-ChIeKp-P.js";
29
- import "./manager-BT2SbOdg.js";
29
+ import "./manager-D_AVoLu8.js";
30
30
  import "./sqlite--aBEq1-J.js";
31
31
  import "./markdown-tables-ptfgMe6b.js";
32
32
  import "./commands-registry-DaPrWQSe.js";
@@ -8,10 +8,10 @@ import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapF
8
8
  import { $ as DEFAULT_MODEL, A as resolveThinkingDefault, B as requireApiKey, C as normalizeModelRef$1, D as resolveDefaultModelForAgent, E as resolveConfiguredModelRef, F as resolveImplicitProviders, G as normalizeSecretInput, H as resolveEnvApiKey, I as OLLAMA_NATIVE_BASE_URL, J as resolveShellEnvFallbackTimeoutMs, K as getShellPathFromLoginShell, L as createOllamaStreamFn, M as normalizeProviders, N as resolveImplicitBedrockProvider, O as resolveModelRefFromString, P as resolveImplicitCopilotProvider, Q as DEFAULT_CONTEXT_TOKENS, R as getApiKeyForModel, S as modelKey, U as resolveModelAuthMode, V as resolveApiKeyForProvider, Z as isTruthyEnvValue, _ as buildAllowedModelSet, a as markAuthProfileFailure, b as findNormalizedProviderValue, c as dedupeProfileIds, d as ensureAuthProfileStore, et as DEFAULT_PROVIDER, f as resolveAuthStorePathForDisplay, i as isProfileInCooldown, j as normalizeGoogleModelId, k as resolveSubagentSpawnModelSelection, l as listProfilesForProvider, m as withFileLock$1, n as resolveAuthProfileOrder, nt as resolveCliName, o as markAuthProfileUsed, p as resolveSymiAgentDir, r as getSoonestCooldownExpiry, rt as resolveAuthProfileDisplayLabel, s as resolveApiKeyForProfile, tt as formatCliCommand, u as markAuthProfileGood, v as buildConfiguredAllowlistKeys, w as normalizeProviderId, y as buildModelAliasIndex, z as getCustomProviderApiKey } from "./auth-profiles-duUuQXeC.js";
9
9
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-B31ugq7R.js";
10
10
  import { t as parseBooleanValue } from "./boolean-mcn6kL0s.js";
11
- import { $ as resolveSandboxContext, $t as resolveBrowserControlAuth, A as isGoogleModelApi, At as resolveSessionResetPolicy, B as isCompactionFailureError, Bt as resolveGroupSessionKey, C as sanitizeImageBlocks, Ct as INPUT_PROVENANCE_KIND_VALUES, D as extractToolResultId, Dt as resolveSessionKey, E as extractToolCallsFromAssistant, Et as normalizeInputProvenance, F as formatRawAssistantErrorForUi, Ft as canonicalizeMainSessionAlias, G as isRateLimitAssistantError, Gt as resolveBrowserConfig, H as isFailoverAssistantError, Ht as resolveSessionLockMaxHoldFromTimeout, I as getApiErrorPayloadFingerprint, J as isTransientHttpError, Jt as saveMediaBuffer, K as isRawApiErrorPayload, Kt as resolveProfile, L as isAuthAssistantError, M as classifyFailoverReason, Mt as resolveThreadFlag, N as formatAssistantErrorText, Nt as DEFAULT_RESET_TRIGGERS, O as downgradeOpenAIReasoningBlocks, Ot as evaluateSessionFreshness, P as formatBillingErrorMessage, Pt as resolveFreshSessionTotalTokens, Q as ensureSandboxWorkspaceForSession, Qt as ensureBrowserControlAuth, R as isBillingAssistantError, Rt as resolveMainSessionKey, S as sanitizeSessionMessagesImages, St as extractToolCallNames, T as resolveImageSanitizationLimits, Tt as hasInterSessionUserProvenance, U as isFailoverErrorMessage, Ut as createBrowserRouteContext, V as isContextOverflowError, Vt as acquireSessionWriteLock, W as isLikelyContextOverflowError, Wt as registerBrowserRoutes, X as parseImageSizeError, Xt as resolveExistingPathsWithinRoot, Y as parseImageDimensionError, Yt as DEFAULT_UPLOAD_DIR, Z as sanitizeUserFacingText, Zt as getBridgeAuthForPort, _ as validateAnthropicTurns, _t as normalizeSessionDeliveryFields, an as mergeAlsoAllowPolicy, at as loadSessionStore, b as isMessagingToolDuplicateNormalized, bt as capArrayByJsonBytes, c as normalizeChannelTargetInput, cn as stripPluginOnlyAllowlist, ct as updateLastRoute, d as parseReplyDirectives, dn as buildBootstrapContextFiles, dt as isCacheEnabled, en as applyOwnerOnlyToolPolicy, et as resolveSandboxRuntimeStatus, f as MEDIA_TOKEN_RE, fn as ensureSessionHeader, ft as resolveCacheTtlMs$1, g as initializeGlobalHookRunner, gt as normalizeDeliveryContext, h as getGlobalHookRunner, hn as sanitizeGoogleTurnOrdering, ht as mergeDeliveryContext, in as expandToolGroups, it as resolveAndPersistSessionFile, j as BILLING_ERROR_USER_MESSAGE, jt as resolveSessionResetType, k as isAntigravityClaude, kt as resolveChannelResetConfig, l as normalizeTargetForProvider, ln as compileGlobPatterns, lt as updateSessionStore, m as parseInlineDirectives$1, mn as resolveBootstrapTotalMaxChars, mt as deliveryContextKey, nn as collectExplicitAllowlist, o as normalizeReplyPayloadsForDelivery, on as normalizeToolName$1, ot as readSessionUpdatedAt, p as splitMediaFromOutput, pn as resolveBootstrapMaxChars, pt as deliveryContextFromSession, q as isTimeoutErrorMessage, qt as getMediaDir, rn as expandPolicyWithPluginGroups, rt as appendAssistantMessageToSessionTranscript, s as buildTargetResolverSignature, sn as resolveToolProfilePolicy, st as recordSessionMetaFromInbound, t as deliverOutboundPayloads, tn as buildPluginToolGroups, tt as extractDeliveryInfo, u as throwIfAborted, un as matchesAnyGlobPattern, ut as updateSessionStoreEntry, v as validateGeminiTurns, w as sanitizeToolResultImages, wt as applyInputProvenanceToUserMessage, x as normalizeTextForComparison, xt as countToolResults, y as pickFallbackThinkingLevel, yt as archiveSessionTranscripts, z as isCloudCodeAssistFormatError, zt as deriveSessionMetaPatch } from "./deliver-BY0HHHHB.js";
11
+ import { $ as resolveSandboxContext, $t as resolveBrowserControlAuth, A as isGoogleModelApi, At as resolveSessionResetPolicy, B as isCompactionFailureError, Bt as resolveGroupSessionKey, C as sanitizeImageBlocks, Ct as INPUT_PROVENANCE_KIND_VALUES, D as extractToolResultId, Dt as resolveSessionKey, E as extractToolCallsFromAssistant, Et as normalizeInputProvenance, F as formatRawAssistantErrorForUi, Ft as canonicalizeMainSessionAlias, G as isRateLimitAssistantError, Gt as resolveBrowserConfig, H as isFailoverAssistantError, Ht as resolveSessionLockMaxHoldFromTimeout, I as getApiErrorPayloadFingerprint, J as isTransientHttpError, Jt as saveMediaBuffer, K as isRawApiErrorPayload, Kt as resolveProfile, L as isAuthAssistantError, M as classifyFailoverReason, Mt as resolveThreadFlag, N as formatAssistantErrorText, Nt as DEFAULT_RESET_TRIGGERS, O as downgradeOpenAIReasoningBlocks, Ot as evaluateSessionFreshness, P as formatBillingErrorMessage, Pt as resolveFreshSessionTotalTokens, Q as ensureSandboxWorkspaceForSession, Qt as ensureBrowserControlAuth, R as isBillingAssistantError, Rt as resolveMainSessionKey, S as sanitizeSessionMessagesImages, St as extractToolCallNames, T as resolveImageSanitizationLimits, Tt as hasInterSessionUserProvenance, U as isFailoverErrorMessage, Ut as createBrowserRouteContext, V as isContextOverflowError, Vt as acquireSessionWriteLock, W as isLikelyContextOverflowError, Wt as registerBrowserRoutes, X as parseImageSizeError, Xt as resolveExistingPathsWithinRoot, Y as parseImageDimensionError, Yt as DEFAULT_UPLOAD_DIR, Z as sanitizeUserFacingText, Zt as getBridgeAuthForPort, _ as validateAnthropicTurns, _t as normalizeSessionDeliveryFields, an as mergeAlsoAllowPolicy, at as loadSessionStore, b as isMessagingToolDuplicateNormalized, bt as capArrayByJsonBytes, c as normalizeChannelTargetInput, cn as stripPluginOnlyAllowlist, ct as updateLastRoute, d as parseReplyDirectives, dn as buildBootstrapContextFiles, dt as isCacheEnabled, en as applyOwnerOnlyToolPolicy, et as resolveSandboxRuntimeStatus, f as MEDIA_TOKEN_RE, fn as ensureSessionHeader, ft as resolveCacheTtlMs$1, g as initializeGlobalHookRunner, gt as normalizeDeliveryContext, h as getGlobalHookRunner, hn as sanitizeGoogleTurnOrdering, ht as mergeDeliveryContext, in as expandToolGroups, it as resolveAndPersistSessionFile, j as BILLING_ERROR_USER_MESSAGE, jt as resolveSessionResetType, k as isAntigravityClaude, kt as resolveChannelResetConfig, l as normalizeTargetForProvider, ln as compileGlobPatterns, lt as updateSessionStore, m as parseInlineDirectives$1, mn as resolveBootstrapTotalMaxChars, mt as deliveryContextKey, nn as collectExplicitAllowlist, o as normalizeReplyPayloadsForDelivery, on as normalizeToolName$1, ot as readSessionUpdatedAt, p as splitMediaFromOutput, pn as resolveBootstrapMaxChars, pt as deliveryContextFromSession, q as isTimeoutErrorMessage, qt as getMediaDir, rn as expandPolicyWithPluginGroups, rt as appendAssistantMessageToSessionTranscript, s as buildTargetResolverSignature, sn as resolveToolProfilePolicy, st as recordSessionMetaFromInbound, t as deliverOutboundPayloads, tn as buildPluginToolGroups, tt as extractDeliveryInfo, u as throwIfAborted, un as matchesAnyGlobPattern, ut as updateSessionStoreEntry, v as validateGeminiTurns, w as sanitizeToolResultImages, wt as applyInputProvenanceToUserMessage, x as normalizeTextForComparison, xt as countToolResults, y as pickFallbackThinkingLevel, yt as archiveSessionTranscripts, z as isCloudCodeAssistFormatError, zt as deriveSessionMetaPatch } from "./deliver-DSv-Z24A.js";
12
12
  import { C as unsetConfigValueAtPath, S as setConfigValueAtPath, T as VERSION, _ as resetConfigOverrides, b as getConfigValueAtPath, c as loadConfig, d as writeConfigFile, f as validateConfigObjectWithPlugins, g as getConfigOverrides, h as validateJsonSchemaValue, i as isBlockedHostnameOrIp, l as readConfigFileSnapshot, m as parseDurationMs, o as normalizeHostname, t as SsrFBlockedError, u as resolveConfigSnapshotHash, v as setConfigOverride, w as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, x as parseConfigPath, y as unsetConfigOverride } from "./ssrf-Dcgaqg3U.js";
13
13
  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-DsTUFMvZ.js";
14
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CejiigNy.js";
14
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-C9mX2mtt.js";
15
15
  import { l as parseFrontmatterBlock } from "./frontmatter-BzAaXBfE.js";
16
16
  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-D0k4o0Ez.js";
17
17
  import { n as redactToolDetail } from "./redact-Dd8jrogi.js";
@@ -30,7 +30,7 @@ import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r
30
30
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-BkfiP_y6.js";
31
31
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-D4Bl4hBw.js";
32
32
  import { a as resolveEffectiveMessagesConfig, i as resolveAckReaction, o as resolveHumanDelayConfig, r as resolveResponsePrefixTemplate, t as createReplyPrefixOptions } from "./reply-prefix-ChIeKp-P.js";
33
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, n as retryAsync, o as collectProviderApiKeysForExecution, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation } from "./manager-BT2SbOdg.js";
33
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, n as retryAsync, o as collectProviderApiKeysForExecution, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation } from "./manager-D_AVoLu8.js";
34
34
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-Crkye5gI.js";
35
35
  import { n as resolveMarkdownTableMode } from "./markdown-tables-ptfgMe6b.js";
36
36
  import { a as shouldHandleTextCommands, c as resolveNativeCommandsEnabled, i as normalizeCommandBody, l as resolveNativeSkillsEnabled, n as listChatCommands, o as isCommandFlagEnabled, r as listChatCommandsForConfig, s as isRestartEnabled } from "./commands-registry-DaPrWQSe.js";
@@ -54,7 +54,7 @@ import crypto, { X509Certificate, createHash, createHmac, randomBytes, randomUUI
54
54
  import { complete, createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
55
55
  import AjvPkg from "ajv";
56
56
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
57
- import { WebSocket } from "ws";
57
+ import { WebSocket as WebSocket$1 } from "ws";
58
58
  import { Buffer as Buffer$1 } from "node:buffer";
59
59
  import { createJiti } from "jiti";
60
60
  import { Type } from "@sinclair/typebox";
@@ -2099,7 +2099,7 @@ async function getMemorySearchManager(params) {
2099
2099
  const wrapper = new FallbackMemoryManager({
2100
2100
  primary,
2101
2101
  fallbackFactory: async () => {
2102
- const { MemoryIndexManager } = await import("./manager-BT2SbOdg.js").then((n) => n.t);
2102
+ const { MemoryIndexManager } = await import("./manager-D_AVoLu8.js").then((n) => n.t);
2103
2103
  return await MemoryIndexManager.get(params);
2104
2104
  }
2105
2105
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -2112,7 +2112,7 @@ async function getMemorySearchManager(params) {
2112
2112
  }
2113
2113
  }
2114
2114
  try {
2115
- const { MemoryIndexManager } = await import("./manager-BT2SbOdg.js").then((n) => n.t);
2115
+ const { MemoryIndexManager } = await import("./manager-D_AVoLu8.js").then((n) => n.t);
2116
2116
  return { manager: await MemoryIndexManager.get(params) };
2117
2117
  } catch (err) {
2118
2118
  return {
@@ -7258,7 +7258,7 @@ var GatewayClient = class {
7258
7258
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
7259
7259
  });
7260
7260
  }
7261
- this.ws = new WebSocket(url, wsOptions);
7261
+ this.ws = new WebSocket$1(url, wsOptions);
7262
7262
  this.ws.on("open", () => {
7263
7263
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
7264
7264
  const tlsError = this.validateTlsFingerprint();
@@ -7477,7 +7477,7 @@ var GatewayClient = class {
7477
7477
  return null;
7478
7478
  }
7479
7479
  async request(method, params, opts) {
7480
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
7480
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
7481
7481
  const id = randomUUID();
7482
7482
  const frame = {
7483
7483
  type: "req",
@@ -8438,7 +8438,7 @@ async function routeReply(params) {
8438
8438
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
8439
8439
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
8440
8440
  try {
8441
- const { deliverOutboundPayloads } = await import("./deliver-BY0HHHHB.js").then((n) => n.n);
8441
+ const { deliverOutboundPayloads } = await import("./deliver-DSv-Z24A.js").then((n) => n.n);
8442
8442
  return {
8443
8443
  ok: true,
8444
8444
  messageId: (await deliverOutboundPayloads({
@@ -41289,7 +41289,7 @@ async function deliverSessionMaintenanceWarning(params) {
41289
41289
  return;
41290
41290
  }
41291
41291
  try {
41292
- const { deliverOutboundPayloads } = await import("./deliver-BY0HHHHB.js").then((n) => n.n);
41292
+ const { deliverOutboundPayloads } = await import("./deliver-DSv-Z24A.js").then((n) => n.n);
41293
41293
  await deliverOutboundPayloads({
41294
41294
  cfg: params.cfg,
41295
41295
  channel,
@@ -53434,6 +53434,31 @@ function createCacheTrace(params) {
53434
53434
  };
53435
53435
  }
53436
53436
 
53437
+ //#endregion
53438
+ //#region src/agents/idle-timeout.ts
53439
+ /**
53440
+ * Per-run idle timeout resolution.
53441
+ *
53442
+ * The idle timer resets on every model/tool activity signal (streaming
53443
+ * chunk, tool execution, compaction, etc.). It fires only when the run is
53444
+ * truly idle — distinguishing "model working slowly on large context" from
53445
+ * "model stuck / connection lost".
53446
+ */
53447
+ const DEFAULT_IDLE_RATIO = .5;
53448
+ const MIN_IDLE_MS = 12e4;
53449
+ const MAX_IDLE_MS = 9e5;
53450
+ const ABSOLUTE_MIN_IDLE_MS = 3e4;
53451
+ const normalizeNumber = (value) => typeof value === "number" && Number.isFinite(value) ? Math.floor(value) : void 0;
53452
+ function resolveIdleTimeoutMs(opts) {
53453
+ const cap = Math.max(ABSOLUTE_MIN_IDLE_MS, opts.runTimeoutMs - 1e3);
53454
+ const modelMs = normalizeNumber(opts.modelSeconds != null ? opts.modelSeconds * 1e3 : void 0);
53455
+ if (modelMs !== void 0 && modelMs > 0) return Math.min(Math.max(modelMs, ABSOLUTE_MIN_IDLE_MS), cap);
53456
+ const configMs = normalizeNumber(opts.configSeconds != null ? opts.configSeconds * 1e3 : void 0);
53457
+ if (configMs !== void 0 && configMs > 0) return Math.min(Math.max(configMs, ABSOLUTE_MIN_IDLE_MS), cap);
53458
+ const computed = Math.floor(opts.runTimeoutMs * DEFAULT_IDLE_RATIO);
53459
+ return Math.min(Math.max(computed, MIN_IDLE_MS), Math.min(MAX_IDLE_MS, cap));
53460
+ }
53461
+
53437
53462
  //#endregion
53438
53463
  //#region src/agents/model-token-filter.ts
53439
53464
  /**
@@ -56596,31 +56621,6 @@ function hasRepetition(text, minBlockSize) {
56596
56621
  return text.indexOf(sample, searchStart) >= 0;
56597
56622
  }
56598
56623
 
56599
- //#endregion
56600
- //#region src/agents/symipulse-timeout.ts
56601
- /**
56602
- * Symipulse inactivity timeout resolution.
56603
- *
56604
- * The symipulse timer resets on every model/tool activity signal (streaming
56605
- * chunk, tool execution, compaction, etc.). It fires only when the run is
56606
- * truly idle — distinguishing "model working slowly on large context" from
56607
- * "model stuck / connection lost".
56608
- */
56609
- const DEFAULT_SYMIPULSE_RATIO = .5;
56610
- const MIN_SYMIPULSE_MS = 12e4;
56611
- const MAX_SYMIPULSE_MS = 9e5;
56612
- const SYMIPULSE_MIN_TIMEOUT_MS = 3e4;
56613
- const normalizeNumber = (value) => typeof value === "number" && Number.isFinite(value) ? Math.floor(value) : void 0;
56614
- function resolveSymipulseMs(opts) {
56615
- const cap = Math.max(SYMIPULSE_MIN_TIMEOUT_MS, opts.runTimeoutMs - 1e3);
56616
- const modelMs = normalizeNumber(opts.modelSeconds != null ? opts.modelSeconds * 1e3 : void 0);
56617
- if (modelMs !== void 0 && modelMs > 0) return Math.min(Math.max(modelMs, SYMIPULSE_MIN_TIMEOUT_MS), cap);
56618
- const configMs = normalizeNumber(opts.configSeconds != null ? opts.configSeconds * 1e3 : void 0);
56619
- if (configMs !== void 0 && configMs > 0) return Math.min(Math.max(configMs, SYMIPULSE_MIN_TIMEOUT_MS), cap);
56620
- const computed = Math.floor(opts.runTimeoutMs * DEFAULT_SYMIPULSE_RATIO);
56621
- return Math.min(Math.max(computed, MIN_SYMIPULSE_MS), Math.min(MAX_SYMIPULSE_MS, cap));
56622
- }
56623
-
56624
56624
  //#endregion
56625
56625
  //#region src/agents/pi-embedded-runner/abort.ts
56626
56626
  /**
@@ -57758,7 +57758,7 @@ async function runEmbeddedAttempt(params) {
57758
57758
  if (!key) return null;
57759
57759
  return (params.config?.agents?.defaults?.models)?.[key]?.symipulseSeconds ?? null;
57760
57760
  };
57761
- const symipulseMs = params.symipulseMs ?? resolveSymipulseMs({
57761
+ const symipulseMs = params.symipulseMs ?? resolveIdleTimeoutMs({
57762
57762
  runTimeoutMs: params.timeoutMs,
57763
57763
  configSeconds: params.config?.agents?.defaults?.symipulseSeconds,
57764
57764
  modelSeconds: resolveModelSymipulseSeconds()
@@ -47,8 +47,8 @@ import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o
47
47
  import { C as enqueueSystemEvent, E as buildChannelSummary, S as drainSystemEventEntries, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, b as resolveUsageProviderId, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, k as redactIdentifier, x as lookupContextTokens, y as formatUsageWindowSummary } from "./session-utils-0F9pB5d6.js";
48
48
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-C0UtpXBj.js";
49
49
  import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-xaWqfM9m.js";
50
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-Czxk_hJw.js";
51
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-BTtaJXdu.js";
50
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-2OKjMT7V.js";
51
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-BQ5Wl5r-.js";
52
52
  import { f as runTasksWithConcurrency } from "./internal-CHnZdvRy.js";
53
53
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-DQGU0F8t.js";
54
54
  import { n as resolveMarkdownTableMode } from "./markdown-tables-GTLvbzuR.js";
@@ -79,7 +79,7 @@ import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normal
79
79
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-BvIcXQLj.js";
80
80
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-DKhx5C-P.js";
81
81
  import { t as parseTimeoutMs } from "./parse-timeout-CpgyC-LD.js";
82
- import { n as registerMemoryCli } from "./memory-cli-B-nQp5HP.js";
82
+ import { n as registerMemoryCli } from "./memory-cli-CmPcKzGZ.js";
83
83
  import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-P7jbK6Bo.js";
84
84
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BBHbN8Nh.js";
85
85
  import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-BKtw-Bqs.js";
@@ -43930,6 +43930,31 @@ function createCacheTrace(params) {
43930
43930
  };
43931
43931
  }
43932
43932
 
43933
+ //#endregion
43934
+ //#region src/agents/idle-timeout.ts
43935
+ /**
43936
+ * Per-run idle timeout resolution.
43937
+ *
43938
+ * The idle timer resets on every model/tool activity signal (streaming
43939
+ * chunk, tool execution, compaction, etc.). It fires only when the run is
43940
+ * truly idle — distinguishing "model working slowly on large context" from
43941
+ * "model stuck / connection lost".
43942
+ */
43943
+ const DEFAULT_IDLE_RATIO = .5;
43944
+ const MIN_IDLE_MS = 12e4;
43945
+ const MAX_IDLE_MS = 9e5;
43946
+ const ABSOLUTE_MIN_IDLE_MS = 3e4;
43947
+ const normalizeNumber = (value) => typeof value === "number" && Number.isFinite(value) ? Math.floor(value) : void 0;
43948
+ function resolveIdleTimeoutMs(opts) {
43949
+ const cap = Math.max(ABSOLUTE_MIN_IDLE_MS, opts.runTimeoutMs - 1e3);
43950
+ const modelMs = normalizeNumber(opts.modelSeconds != null ? opts.modelSeconds * 1e3 : void 0);
43951
+ if (modelMs !== void 0 && modelMs > 0) return Math.min(Math.max(modelMs, ABSOLUTE_MIN_IDLE_MS), cap);
43952
+ const configMs = normalizeNumber(opts.configSeconds != null ? opts.configSeconds * 1e3 : void 0);
43953
+ if (configMs !== void 0 && configMs > 0) return Math.min(Math.max(configMs, ABSOLUTE_MIN_IDLE_MS), cap);
43954
+ const computed = Math.floor(opts.runTimeoutMs * DEFAULT_IDLE_RATIO);
43955
+ return Math.min(Math.max(computed, MIN_IDLE_MS), Math.min(MAX_IDLE_MS, cap));
43956
+ }
43957
+
43933
43958
  //#endregion
43934
43959
  //#region src/agents/model-token-filter.ts
43935
43960
  /**
@@ -47092,31 +47117,6 @@ function hasRepetition(text, minBlockSize) {
47092
47117
  return text.indexOf(sample, searchStart) >= 0;
47093
47118
  }
47094
47119
 
47095
- //#endregion
47096
- //#region src/agents/symipulse-timeout.ts
47097
- /**
47098
- * Symipulse inactivity timeout resolution.
47099
- *
47100
- * The symipulse timer resets on every model/tool activity signal (streaming
47101
- * chunk, tool execution, compaction, etc.). It fires only when the run is
47102
- * truly idle — distinguishing "model working slowly on large context" from
47103
- * "model stuck / connection lost".
47104
- */
47105
- const DEFAULT_SYMIPULSE_RATIO = .5;
47106
- const MIN_SYMIPULSE_MS = 12e4;
47107
- const MAX_SYMIPULSE_MS = 9e5;
47108
- const SYMIPULSE_MIN_TIMEOUT_MS = 3e4;
47109
- const normalizeNumber = (value) => typeof value === "number" && Number.isFinite(value) ? Math.floor(value) : void 0;
47110
- function resolveSymipulseMs(opts) {
47111
- const cap = Math.max(SYMIPULSE_MIN_TIMEOUT_MS, opts.runTimeoutMs - 1e3);
47112
- const modelMs = normalizeNumber(opts.modelSeconds != null ? opts.modelSeconds * 1e3 : void 0);
47113
- if (modelMs !== void 0 && modelMs > 0) return Math.min(Math.max(modelMs, SYMIPULSE_MIN_TIMEOUT_MS), cap);
47114
- const configMs = normalizeNumber(opts.configSeconds != null ? opts.configSeconds * 1e3 : void 0);
47115
- if (configMs !== void 0 && configMs > 0) return Math.min(Math.max(configMs, SYMIPULSE_MIN_TIMEOUT_MS), cap);
47116
- const computed = Math.floor(opts.runTimeoutMs * DEFAULT_SYMIPULSE_RATIO);
47117
- return Math.min(Math.max(computed, MIN_SYMIPULSE_MS), Math.min(MAX_SYMIPULSE_MS, cap));
47118
- }
47119
-
47120
47120
  //#endregion
47121
47121
  //#region src/agents/pi-embedded-runner/abort.ts
47122
47122
  /**
@@ -48254,7 +48254,7 @@ async function runEmbeddedAttempt(params) {
48254
48254
  if (!key) return null;
48255
48255
  return (params.config?.agents?.defaults?.models)?.[key]?.symipulseSeconds ?? null;
48256
48256
  };
48257
- const symipulseMs = params.symipulseMs ?? resolveSymipulseMs({
48257
+ const symipulseMs = params.symipulseMs ?? resolveIdleTimeoutMs({
48258
48258
  runTimeoutMs: params.timeoutMs,
48259
48259
  configSeconds: params.config?.agents?.defaults?.symipulseSeconds,
48260
48260
  modelSeconds: resolveModelSymipulseSeconds()
@@ -17,7 +17,7 @@ import "./client-CAz5aPpp.js";
17
17
  import "./call-BocrIanP.js";
18
18
  import "./message-channel-CNPAq1Tl.js";
19
19
  import "./pairing-token-Bnr7QjVF.js";
20
- import "./subagent-registry-CgZDo35C.js";
20
+ import "./subagent-registry-B1RgR3-0.js";
21
21
  import "./sessions-7jk0D1BI.js";
22
22
  import "./plugins-Bq-Msc8Z.js";
23
23
  import "./send-CLJ2KPVT.js";
@@ -45,8 +45,8 @@ import "./paths-CNexk5_o.js";
45
45
  import "./thinking-BDh5LPh-.js";
46
46
  import "./models-config-BfmuswQ_.js";
47
47
  import "./reply-prefix-CRdCnS44.js";
48
- import "./memory-DJN1Q1jq.js";
49
- import "./manager-TrK63P2M.js";
48
+ import "./memory-CMKSFx1T.js";
49
+ import "./manager-BI8o6AGu.js";
50
50
  import "./sqlite-l3CZYU6t.js";
51
51
  import "./chunk-BySyfaEr.js";
52
52
  import "./markdown-tables-CCOfinlW.js";
@@ -78,7 +78,7 @@ import { t as formatDocsLink } from "./links-Db3Rw0Tg.js";
78
78
  import "./cli-utils-BqMwAlgf.js";
79
79
  import { t as formatHelpExamples } from "./help-format-DbbIlOje.js";
80
80
  import "./progress-C4ck6JXh.js";
81
- import "./memory-cli-C9ZqpaaB.js";
81
+ import "./memory-cli-rdfaJrCS.js";
82
82
  import "./logging-D0L9TWhE.js";
83
83
  import "./replies-BOy28KVL.js";
84
84
  import "./pi-tools.policy-D-WJTlz8.js";
@@ -92,10 +92,10 @@ import "./npm-registry-spec-NLo2PCol.js";
92
92
  import "./skill-scanner-DkITukAS.js";
93
93
  import "./installs-D0_bsQwa.js";
94
94
  import "./channels-status-issues-GSsGZvfn.js";
95
- import "./register.subclis-DBKLQ-vk.js";
96
- import "./command-registry-5O5dCHsD.js";
95
+ import "./register.subclis-CHTY5PYx.js";
96
+ import "./command-registry-UxY6jjeo.js";
97
97
  import "./program-context-BFKw4l9I.js";
98
- import { r as installCompletion } from "./completion-cli-DqrFJhG4.js";
98
+ import { r as installCompletion } from "./completion-cli-m9L2Gv9t.js";
99
99
  import "./daemon-runtime-Y8XS0WGP.js";
100
100
  import { r as parseSemver } from "./runtime-guard-p4-FMx0l.js";
101
101
  import "./onboard-helpers-LbRPhqLj.js";
@@ -117,8 +117,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
117
117
  import "./doctor-config-flow-DlX_L8Y-.js";
118
118
  import "./systemd-linger-BM4qvprK.js";
119
119
  import "./health-format-DaP03FBk.js";
120
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-wUs9hOXT.js";
121
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DkwAZ_yS.js";
120
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-CwXc8EFB.js";
121
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion--AgLv0kV.js";
122
122
  import { spawn, spawnSync } from "node:child_process";
123
123
  import os from "node:os";
124
124
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import "./unified-runner-DzycRpag.js";
1
+ import "./unified-runner-Bn9vq7Zy.js";
2
2
  import { j as theme } from "./registry-DKJLAPDB.js";
3
3
  import { g as resolveStateDir } from "./paths-BSzKwaxE.js";
4
4
  import { f as pathExists } from "./utils-BU8jVQFM.js";
@@ -47,8 +47,8 @@ import "./session-cost-usage-DYcv40ss.js";
47
47
  import { h as trimLogTail } from "./session-utils-0F9pB5d6.js";
48
48
  import "./with-timeout-C0UtpXBj.js";
49
49
  import "./reply-prefix-xaWqfM9m.js";
50
- import "./memory-Czxk_hJw.js";
51
- import "./manager-BTtaJXdu.js";
50
+ import "./memory-2OKjMT7V.js";
51
+ import "./manager-BQ5Wl5r-.js";
52
52
  import "./sqlite-DBEvS-Ne.js";
53
53
  import "./chunk-DQGU0F8t.js";
54
54
  import "./markdown-tables-GTLvbzuR.js";
@@ -80,13 +80,13 @@ import { t as formatDocsLink } from "./links-CSaUKNKm.js";
80
80
  import "./cli-utils-CX1oQ81G.js";
81
81
  import { t as formatHelpExamples } from "./help-format-BI_G2p1e.js";
82
82
  import "./progress-CyPyGCDn.js";
83
- import "./memory-cli-B-nQp5HP.js";
83
+ import "./memory-cli-CmPcKzGZ.js";
84
84
  import "./logging-B5YNzZB9.js";
85
85
  import "./replies-P7jbK6Bo.js";
86
86
  import "./pi-tools.policy-BBHbN8Nh.js";
87
87
  import "./model-BKtw-Bqs.js";
88
88
  import { r as parseSemver } from "./runtime-guard-BZ3_1QqS.js";
89
- import "./program-context-f_krhr6H.js";
89
+ import "./program-context-GaV454D6.js";
90
90
  import "./catalog-BEREnWaa.js";
91
91
  import "./skills-status-Dx3Lf5iU.js";
92
92
  import { n as inheritOptionFromParent } from "./command-options-ChiIn6Na.js";
@@ -98,7 +98,7 @@ import "./npm-registry-spec-BXw_6vF6.js";
98
98
  import "./skill-scanner-qMQf6-FN.js";
99
99
  import "./installs-CLp95gcX.js";
100
100
  import "./channels-status-issues-DC8vgOMo.js";
101
- import { r as installCompletion } from "./completion-cli-D4wYjxBG.js";
101
+ import { r as installCompletion } from "./completion-cli-DebZ6nSb.js";
102
102
  import "./daemon-runtime-BD-3XS8R.js";
103
103
  import "./onboard-helpers-D2mWJnFB.js";
104
104
  import "./systemd-9LEEqibe.js";
@@ -119,8 +119,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
119
119
  import "./doctor-config-flow-4UT3396o.js";
120
120
  import "./systemd-linger-PqG8iGCt.js";
121
121
  import "./health-format-39e76m9p.js";
122
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-D4Dl6PAx.js";
123
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-C6M7eRb_.js";
122
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BkowcFQR.js";
123
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-D1ImH_eM.js";
124
124
  import path from "node:path";
125
125
  import os from "node:os";
126
126
  import fs from "node:fs/promises";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "3.3.2",
3
+ "version": "3.3.3",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",