@symerian/symi 3.5.37 → 3.5.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/{agent-CDO1qw1v.js → agent-BTGl36fO.js} +1 -1
  2. package/dist/{agent-DzA2WwRp.js → agent-D-r1jDDr.js} +1 -1
  3. package/dist/{agents-DQjhvX1j.js → agents-qlUHy5Br.js} +2 -2
  4. package/dist/{auth-choice-COhQLofQ.js → auth-choice-B8hl2zQ_.js} +1 -1
  5. package/dist/{auth-choice-HSjAtQjK.js → auth-choice-DmQV3qVD.js} +1 -1
  6. package/dist/{banner-DX6NfQFm.js → banner-B_FIPskF.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-Qp19SWyp.js → channel-options-B3FrqAbY.js} +1 -1
  12. package/dist/{channel-options-D9Rpx5rg.js → channel-options-CXChz2Gl.js} +1 -1
  13. package/dist/{channels-cli-CmXNxU4q.js → channels-cli-BqTjGrnV.js} +7 -7
  14. package/dist/{channels-cli-D9VaH6xu.js → channels-cli-DJruxsCI.js} +7 -7
  15. package/dist/{chrome-CmQwGAuL.js → chrome-OTJg3QKn.js} +7 -7
  16. package/dist/{cli-Cn3SPe9j.js → cli-n3Th69Yr.js} +4 -4
  17. package/dist/{cli-Bzqwe7pe.js → cli-oKtyaG-m.js} +4 -4
  18. package/dist/{command-registry-DrE1jnSD.js → command-registry-CL9Kg-yN.js} +10 -10
  19. package/dist/{completion-cli-BBPRS_8d.js → completion-cli-CNVJwiv2.js} +2 -2
  20. package/dist/{completion-cli-aT_WQ3JR.js → completion-cli-CRZLUn7D.js} +1 -1
  21. package/dist/{config-cli-CD6ciGup.js → config-cli-DGd8g_Ct.js} +1 -1
  22. package/dist/{config-cli-DeDb4W-l.js → config-cli-DfRMdVFn.js} +1 -1
  23. package/dist/{configure-CYjlPBqc.js → configure-CCwkHVZQ.js} +2 -2
  24. package/dist/{configure-FUZaNK86.js → configure-DsebNj9T.js} +2 -2
  25. package/dist/control-ui/css/style.css +74 -0
  26. package/dist/control-ui/js/symframe.js +68 -0
  27. package/dist/{deliver-B04yNX82.js → deliver-BiWlR84Y.js} +4 -4
  28. package/dist/{doctor-completion-CAlfPXUW.js → doctor-completion-D4zwYnEN.js} +1 -1
  29. package/dist/{doctor-completion-d7GlA1cP.js → doctor-completion-DEqpjKDZ.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +2 -2
  32. package/dist/{gateway-cli-vsadfWee.js → gateway-cli-BJ6xAu7G.js} +10 -10
  33. package/dist/{gateway-cli-1VbI-_Bq.js → gateway-cli-DyftuEOb.js} +10 -10
  34. package/dist/{glass-ui-ws-5qfhLxPm.js → glass-ui-ws-BLTXXspr.js} +8 -8
  35. package/dist/{glass-ui-ws-BbO6e3iI.js → glass-ui-ws-Bn9B5Ac_.js} +8 -8
  36. package/dist/{hooks-cli-gBkwYJqr.js → hooks-cli-B2V8uacu.js} +5 -5
  37. package/dist/{hooks-cli-C43d1R3q.js → hooks-cli-DfCuxn1F.js} +5 -5
  38. package/dist/index.js +8 -8
  39. package/dist/llm-slug-generator.js +4 -4
  40. package/dist/{manager-DGh2Z3k1.js → manager-BXM8F9zI.js} +1 -1
  41. package/dist/{manager-vRs88zs_.js → manager-CDkFM3pi.js} +1 -1
  42. package/dist/{manager-Dq705UbH.js → manager-DjgKz80p.js} +1 -1
  43. package/dist/{manager-B5P5EgIP.js → manager-IHsU3dHx.js} +1 -1
  44. package/dist/{memory-CH-8Z7r7.js → memory-BLluF2i6.js} +2 -2
  45. package/dist/{memory-DkAg5sbK.js → memory-DgS1AC6J.js} +2 -2
  46. package/dist/{memory-cli-M6FiqgSK.js → memory-cli-DQTznta7.js} +2 -2
  47. package/dist/{memory-cli-CUQGhpc5.js → memory-cli-jmPQDz2s.js} +2 -2
  48. package/dist/{models-6DjS559Z.js → models-BVDQwjWd.js} +2 -2
  49. package/dist/{models-cli-5BfF_sFl.js → models-cli-B1rXMGPT.js} +6 -6
  50. package/dist/{models-cli-D7cfClDO.js → models-cli-DAwcBLHF.js} +5 -5
  51. package/dist/{onboard-BhXq2EXc.js → onboard-BIPhgfaW.js} +1 -1
  52. package/dist/{onboard-we3yileo.js → onboard-C9k0zmHq.js} +1 -1
  53. package/dist/{onboard-channels-BaMPymWt.js → onboard-channels-BEi6XlDW.js} +1 -1
  54. package/dist/{onboard-channels-BlAPAiqf.js → onboard-channels-BkmP8-BZ.js} +1 -1
  55. package/dist/{onboarding-CT9WoHsY.js → onboarding-B1NNMstX.js} +3 -3
  56. package/dist/{onboarding-CWb8cdrF.js → onboarding-B2Km9GAJ.js} +3 -3
  57. package/dist/{onboarding.finalize-DuDe6mVl.js → onboarding.finalize-DJghG2o6.js} +3 -3
  58. package/dist/{onboarding.finalize-Dx44S_JZ.js → onboarding.finalize-xL4ImbkA.js} +4 -4
  59. package/dist/{pi-embedded-B0PVRhQL.js → pi-embedded-LB2aszfv.js} +40 -3
  60. package/dist/{plugin-registry-Dz2TX8GW.js → plugin-registry-C2TXQh4N.js} +1 -1
  61. package/dist/{plugin-registry-BU848TRC.js → plugin-registry-CPEFf3Lg.js} +1 -1
  62. package/dist/plugin-sdk/index.js +6 -6
  63. package/dist/{plugins-cli-CSg1c7CW.js → plugins-cli-Df8zFZuP.js} +5 -5
  64. package/dist/{plugins-cli-gbeibwVM.js → plugins-cli-DiB98WvI.js} +5 -5
  65. package/dist/{program-j2ijuc_q.js → program-BUv-qGcY.js} +10 -10
  66. package/dist/{program-context-CfkRVEf1.js → program-context-B2L7Zll7.js} +18 -18
  67. package/dist/{prompt-select-styled-DQPC6tIG.js → prompt-select-styled-BMyhMWqW.js} +4 -4
  68. package/dist/{prompt-select-styled-T3xNCD3A.js → prompt-select-styled-DCTSxBvr.js} +4 -4
  69. package/dist/{provider-auth-helpers-BVsLvcTN.js → provider-auth-helpers-4CHkGgIn.js} +1 -1
  70. package/dist/{provider-auth-helpers--vDzHS5a.js → provider-auth-helpers-FDwi4Yzt.js} +1 -1
  71. package/dist/{push-apns-MzhuZXok.js → push-apns-BzR8krCb.js} +1 -1
  72. package/dist/{push-apns-CgOg6uMk.js → push-apns-MTIWc9yH.js} +1 -1
  73. package/dist/{pw-ai-DLsdzdgc.js → pw-ai-DY_6l11g.js} +1 -1
  74. package/dist/{register.agent-Dx35KGyf.js → register.agent-CIA-0mpo.js} +8 -8
  75. package/dist/{register.agent-CuN2ad51.js → register.agent-COTicWGL.js} +9 -9
  76. package/dist/{register.configure-BG1-5fPo.js → register.configure-BV_zrg1a.js} +8 -8
  77. package/dist/{register.configure-Du8LMA8y.js → register.configure-RZHIHn4g.js} +8 -8
  78. package/dist/{register.maintenance-CkQe6RmA.js → register.maintenance-B7OkvZK3.js} +8 -8
  79. package/dist/{register.maintenance-BhzxiuPp.js → register.maintenance-Bgr2ezP7.js} +9 -9
  80. package/dist/{register.message-DpbzBOu0.js → register.message-B87VSL0P.js} +5 -5
  81. package/dist/{register.message-tM5npWX-.js → register.message-MnKGR-CU.js} +5 -5
  82. package/dist/{register.onboard-BsWQiEyl.js → register.onboard-B-mQpES-.js} +2 -2
  83. package/dist/{register.onboard-HYjNN28o.js → register.onboard-uE1fuOoP.js} +2 -2
  84. package/dist/{register.setup-oIXgNxYx.js → register.setup-DvW7pEmV.js} +2 -2
  85. package/dist/{register.setup-BcoMdo3D.js → register.setup-fD86QH-Z.js} +2 -2
  86. package/dist/{register.status-health-sessions--sQTwXrv.js → register.status-health-sessions-CZlmKKRr.js} +3 -3
  87. package/dist/{register.status-health-sessions-BRCKvxKZ.js → register.status-health-sessions-DnJHSkWN.js} +3 -3
  88. package/dist/{register.subclis-Coz5gyMy.js → register.subclis-B_zXq-OG.js} +9 -9
  89. package/dist/{run-main-BP0tSdvm.js → run-main-BwejEUC8.js} +17 -17
  90. package/dist/{server-methods-JJSJ-f4L.js → server-methods-DF_vhByu.js} +7 -7
  91. package/dist/{server-methods-DqMh81yf.js → server-methods-fT02jJUv.js} +7 -7
  92. package/dist/{server-node-events-U29PUJ3C.js → server-node-events-B0Ah5xv3.js} +6 -6
  93. package/dist/{server-node-events-DtE36b7p.js → server-node-events-C-SSj_J4.js} +6 -6
  94. package/dist/{status-CjTgAUf9.js → status-9_SJZT-n.js} +1 -1
  95. package/dist/{status-Ep2Jr3PX.js → status-BJK_HWiE.js} +1 -1
  96. package/dist/{status-B4t6u9nZ.js → status-C43mMdxl.js} +1 -1
  97. package/dist/{status-CE9aMOLz.js → status-DYN36pJ0.js} +1 -1
  98. package/dist/{subagent-registry-BV3-ydad.js → subagent-registry-odA9HOvg.js} +40 -3
  99. package/dist/{synthesis-BoUPCqBp.js → synthesis-BI3Vsi69.js} +4 -4
  100. package/dist/{synthesis-B0bH-fke.js → synthesis-BxLob78U.js} +4 -4
  101. package/dist/{synthesis-DKanvEYA.js → synthesis-ByIDCuPD.js} +4 -4
  102. package/dist/{synthesis-CL1PiA4s.js → synthesis-CVmwfUvx.js} +2 -2
  103. package/dist/{unified-runner-BwcHrhjo.js → unified-runner-C8BedLLT.js} +40 -3
  104. package/dist/{unified-runner-CdSyDq5s.js → unified-runner-DJTndfeW.js} +47 -10
  105. package/dist/{update-cli-Dw3aFNp8.js → update-cli-BP1MAHhV.js} +8 -8
  106. package/dist/{update-cli-D1wsCp79.js → update-cli-Ce4anXY7.js} +9 -9
  107. package/extensions/memory-core/package.json +1 -1
  108. package/extensions/msteams/CHANGELOG.md +6 -0
  109. package/extensions/msteams/package.json +1 -1
  110. package/extensions/open-prose/package.json +1 -1
  111. package/extensions/outlook/package.json +1 -1
  112. package/extensions/slack/package.json +1 -1
  113. package/package.json +1 -1
@@ -49,8 +49,8 @@ import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsX
49
49
  import { i as resolveApiKeyForProvider, n as getCustomProviderApiKey, o as resolveEnvApiKey, r as requireApiKey, s as resolveModelAuthMode, t as getApiKeyForModel } from "./model-auth-Byr7Gic_.js";
50
50
  import { b as OLLAMA_NATIVE_BASE_URL, c as normalizeGoogleModelId, t as ensureSymiModelsJson, x as createOllamaStreamFn } from "./models-config-CiR_RUxw.js";
51
51
  import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-DV3KhOhL.js";
52
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-DkAg5sbK.js";
53
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-vRs88zs_.js";
52
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-DgS1AC6J.js";
53
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-CDkFM3pi.js";
54
54
  import { f as runTasksWithConcurrency } from "./internal-D3mEiuyB.js";
55
55
  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-B2lBXhR0.js";
56
56
  import { n as resolveMarkdownTableMode } from "./markdown-tables-BEdkErjm.js";
@@ -83,7 +83,7 @@ import { t as emitSymframePush } from "./symframe-broadcast-BVxModY5.js";
83
83
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-CmU8iVio.js";
84
84
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BVJ4-d9c.js";
85
85
  import { t as parseTimeoutMs } from "./parse-timeout-widuTpq9.js";
86
- import { n as registerMemoryCli } from "./memory-cli-CUQGhpc5.js";
86
+ import { n as registerMemoryCli } from "./memory-cli-jmPQDz2s.js";
87
87
  import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-CLREUzzB.js";
88
88
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-06k__URR.js";
89
89
  import { createRequire } from "node:module";
@@ -32279,6 +32279,21 @@ function handleAgentEnd(ctx) {
32279
32279
  data: { phase: "end" }
32280
32280
  });
32281
32281
  }
32282
+ {
32283
+ const totals = ctx.getUsageTotals();
32284
+ if (totals) emitSymframePush({
32285
+ action: "update",
32286
+ id: "context-meter",
32287
+ card: {
32288
+ contextInput: totals.input ?? 0,
32289
+ contextOutput: totals.output ?? 0,
32290
+ contextCacheRead: totals.cacheRead ?? 0,
32291
+ contextCacheWrite: totals.cacheWrite ?? 0,
32292
+ contextTotal: totals.total ?? (totals.input ?? 0) + (totals.output ?? 0) + (totals.cacheRead ?? 0) + (totals.cacheWrite ?? 0),
32293
+ contextPhase: isError ? "error" : "settled"
32294
+ }
32295
+ });
32296
+ }
32282
32297
  ctx.flushBlockReplyBuffer();
32283
32298
  ctx.state.blockState.thinking = false;
32284
32299
  ctx.state.blockState.final = false;
@@ -32463,6 +32478,28 @@ function handleMessageEnd(ctx, evt) {
32463
32478
  ctx.noteLastAssistant(assistantMessage);
32464
32479
  ctx.recordAssistantUsage(assistantMessage.usage);
32465
32480
  promoteThinkingTagsToBlocks(assistantMessage);
32481
+ {
32482
+ const totals = ctx.getUsageTotals();
32483
+ const modelInfo = assistantMessage;
32484
+ emitSymframePush({
32485
+ action: "add",
32486
+ id: "context-meter",
32487
+ card: {
32488
+ id: "context-meter",
32489
+ type: "context",
32490
+ intent: "holding",
32491
+ title: "context",
32492
+ contextModel: typeof modelInfo.model === "string" && modelInfo.model ? modelInfo.model : typeof modelInfo.provider === "string" ? modelInfo.provider : "model",
32493
+ contextInput: totals?.input ?? 0,
32494
+ contextOutput: totals?.output ?? 0,
32495
+ contextCacheRead: totals?.cacheRead ?? 0,
32496
+ contextCacheWrite: totals?.cacheWrite ?? 0,
32497
+ contextTotal: totals?.total ?? (totals?.input ?? 0) + (totals?.output ?? 0) + (totals?.cacheRead ?? 0) + (totals?.cacheWrite ?? 0),
32498
+ contextPhase: "running",
32499
+ dismissable: true
32500
+ }
32501
+ });
32502
+ }
32466
32503
  const rawText = extractAssistantText$1(assistantMessage);
32467
32504
  appendRawStream({
32468
32505
  ts: Date.now(),
@@ -17,7 +17,7 @@ import "./client-BOd5o3Kp.js";
17
17
  import "./call-DTshgdlW.js";
18
18
  import "./message-channel-DXToSaWK.js";
19
19
  import "./pairing-token-B-OTYROz.js";
20
- import { T as runAgentTurn } from "./subagent-registry-BV3-ydad.js";
20
+ import { T as runAgentTurn } from "./subagent-registry-odA9HOvg.js";
21
21
  import "./sessions-Dn6VXn4p.js";
22
22
  import "./plugins-BsEhWvLn.js";
23
23
  import "./send-Dq252-bi.js";
@@ -47,8 +47,8 @@ import "./model-auth-Byr7Gic_.js";
47
47
  import "./github-copilot-token-B5y4__YM.js";
48
48
  import "./models-config-CiR_RUxw.js";
49
49
  import "./reply-prefix-DV3KhOhL.js";
50
- import "./memory-DkAg5sbK.js";
51
- import "./manager-vRs88zs_.js";
50
+ import "./memory-DgS1AC6J.js";
51
+ import "./manager-CDkFM3pi.js";
52
52
  import "./sqlite-9jF_eajd.js";
53
53
  import "./chunk-B2lBXhR0.js";
54
54
  import "./markdown-tables-BEdkErjm.js";
@@ -79,7 +79,7 @@ import "./links-Dnmd-RS-.js";
79
79
  import "./cli-utils-DXfA5936.js";
80
80
  import "./help-format-Dbp8yEhl.js";
81
81
  import "./progress-CI19Xh3z.js";
82
- import "./memory-cli-CUQGhpc5.js";
82
+ import "./memory-cli-jmPQDz2s.js";
83
83
  import "./logging-UO6tk8Em.js";
84
84
  import "./replies-CLREUzzB.js";
85
85
  import "./pi-tools.policy-06k__URR.js";
@@ -1,4 +1,4 @@
1
- import { t as runAgentTurn } from "./unified-runner-BwcHrhjo.js";
1
+ import { t as runAgentTurn } from "./unified-runner-C8BedLLT.js";
2
2
  import "./registry-Sbac4a4z.js";
3
3
  import "./paths-By0XjHBk.js";
4
4
  import "./utils-CTPsqyE_.js";
@@ -50,8 +50,8 @@ import "./session-cost-usage-D3mgssM_.js";
50
50
  import "./session-utils-Cs1jlD-q.js";
51
51
  import "./with-timeout-DPR4A2dx.js";
52
52
  import "./reply-prefix-BFNeXT65.js";
53
- import "./memory-CH-8Z7r7.js";
54
- import "./manager-Dq705UbH.js";
53
+ import "./memory-BLluF2i6.js";
54
+ import "./manager-DjgKz80p.js";
55
55
  import "./sqlite-Cod7C5ba.js";
56
56
  import "./chunk-BxfKjCUx.js";
57
57
  import "./markdown-tables-CS1Tvb3z.js";
@@ -82,7 +82,7 @@ import "./links-Bqr0FxXx.js";
82
82
  import "./cli-utils-CuyGL3rq.js";
83
83
  import "./help-format-7hFcsqss.js";
84
84
  import "./progress-swt2y17x.js";
85
- import "./memory-cli-M6FiqgSK.js";
85
+ import "./memory-cli-DQTznta7.js";
86
86
  import "./logging-BWknayJl.js";
87
87
  import "./replies-CbXXjn9X.js";
88
88
  import "./pi-tools.policy-H2t-Xkfc.js";
@@ -3,15 +3,15 @@ import "./registry-C-JddWwo.js";
3
3
  import "./agent-scope-B1Ina6jV.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-CdSyDq5s.js";
6
+ import { t as runAgentTurn } from "./unified-runner-DJTndfeW.js";
7
7
  import "./auth-profiles-BSw0aQND.js";
8
8
  import "./model-selection-BqshlIZc.js";
9
- import "./deliver-B04yNX82.js";
9
+ import "./deliver-BiWlR84Y.js";
10
10
  import "./ssrf-DNhyFMRW.js";
11
11
  import "./boolean-BsqeuxE6.js";
12
12
  import "./shell-env-B1lDWz4t.js";
13
13
  import "./manifest-registry-BGJu2aC-.js";
14
- import "./chrome-CmQwGAuL.js";
14
+ import "./chrome-OTJg3QKn.js";
15
15
  import "./frontmatter-CJEX1BrH.js";
16
16
  import "./skills-Dm4gX4Tl.js";
17
17
  import "./redact-CSGZUFxa.js";
@@ -25,7 +25,7 @@ import "./paths-BsT3BvfH.js";
25
25
  import "./tokens-D_vCJSzF.js";
26
26
  import "./diagnostic-BALvP9wI.js";
27
27
  import "./diagnostic-session-state-BDfanaOY.js";
28
- import "./manager-B5P5EgIP.js";
28
+ import "./manager-IHsU3dHx.js";
29
29
  import "./github-copilot-token-uhEBNQfj.js";
30
30
  import "./pi-auth-json-DCGR3yfh.js";
31
31
  import "./reply-prefix-D0NzzC4I.js";
@@ -6,7 +6,7 @@ import "./model-selection-BisYvTBb.js";
6
6
  import "./reply-prefix-i-FPYcoQ.js";
7
7
  import "./plugins-CZ_mYwXq.js";
8
8
  import "./replies-0nzkXt6o.js";
9
- import { n as runAgentTurn } from "./pi-embedded-B0PVRhQL.js";
9
+ import { n as runAgentTurn } from "./pi-embedded-LB2aszfv.js";
10
10
  import "./deliver-q23ar_Pm.js";
11
11
  import "./diagnostic-BdRnGknC.js";
12
12
  import "./diagnostic-session-state-DpxCUzoM.js";
@@ -23,7 +23,7 @@ import "./errors-BEU7IHU6.js";
23
23
  import "./tokens-yWO1wD7Z.js";
24
24
  import "./thinking-DgjGxdSP.js";
25
25
  import "./paths-BsT3BvfH.js";
26
- import "./manager-DGh2Z3k1.js";
26
+ import "./manager-BXM8F9zI.js";
27
27
  import "./github-copilot-token-dYUr1mDQ.js";
28
28
  import "./sqlite-D8iYC_CU.js";
29
29
  import "./markdown-tables-jQzXAsf3.js";
@@ -52,8 +52,8 @@ import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o
52
52
  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-Cs1jlD-q.js";
53
53
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-DPR4A2dx.js";
54
54
  import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BFNeXT65.js";
55
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-CH-8Z7r7.js";
56
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-Dq705UbH.js";
55
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-BLluF2i6.js";
56
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-DjgKz80p.js";
57
57
  import { f as runTasksWithConcurrency } from "./internal-DVCddhhN.js";
58
58
  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-BxfKjCUx.js";
59
59
  import { n as resolveMarkdownTableMode } from "./markdown-tables-CS1Tvb3z.js";
@@ -86,7 +86,7 @@ import { t as emitSymframePush } from "./symframe-broadcast-CXo2qoxy.js";
86
86
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-H1qOf0q-.js";
87
87
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-C1IIA6kH.js";
88
88
  import { t as parseTimeoutMs } from "./parse-timeout-DmEcHIsV.js";
89
- import { n as registerMemoryCli } from "./memory-cli-M6FiqgSK.js";
89
+ import { n as registerMemoryCli } from "./memory-cli-DQTznta7.js";
90
90
  import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-CbXXjn9X.js";
91
91
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-H2t-Xkfc.js";
92
92
  import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-MUMSB_7d.js";
@@ -45424,6 +45424,21 @@ function handleAgentEnd(ctx) {
45424
45424
  data: { phase: "end" }
45425
45425
  });
45426
45426
  }
45427
+ {
45428
+ const totals = ctx.getUsageTotals();
45429
+ if (totals) emitSymframePush({
45430
+ action: "update",
45431
+ id: "context-meter",
45432
+ card: {
45433
+ contextInput: totals.input ?? 0,
45434
+ contextOutput: totals.output ?? 0,
45435
+ contextCacheRead: totals.cacheRead ?? 0,
45436
+ contextCacheWrite: totals.cacheWrite ?? 0,
45437
+ contextTotal: totals.total ?? (totals.input ?? 0) + (totals.output ?? 0) + (totals.cacheRead ?? 0) + (totals.cacheWrite ?? 0),
45438
+ contextPhase: isError ? "error" : "settled"
45439
+ }
45440
+ });
45441
+ }
45427
45442
  ctx.flushBlockReplyBuffer();
45428
45443
  ctx.state.blockState.thinking = false;
45429
45444
  ctx.state.blockState.final = false;
@@ -45608,6 +45623,28 @@ function handleMessageEnd(ctx, evt) {
45608
45623
  ctx.noteLastAssistant(assistantMessage);
45609
45624
  ctx.recordAssistantUsage(assistantMessage.usage);
45610
45625
  promoteThinkingTagsToBlocks(assistantMessage);
45626
+ {
45627
+ const totals = ctx.getUsageTotals();
45628
+ const modelInfo = assistantMessage;
45629
+ emitSymframePush({
45630
+ action: "add",
45631
+ id: "context-meter",
45632
+ card: {
45633
+ id: "context-meter",
45634
+ type: "context",
45635
+ intent: "holding",
45636
+ title: "context",
45637
+ contextModel: typeof modelInfo.model === "string" && modelInfo.model ? modelInfo.model : typeof modelInfo.provider === "string" ? modelInfo.provider : "model",
45638
+ contextInput: totals?.input ?? 0,
45639
+ contextOutput: totals?.output ?? 0,
45640
+ contextCacheRead: totals?.cacheRead ?? 0,
45641
+ contextCacheWrite: totals?.cacheWrite ?? 0,
45642
+ contextTotal: totals?.total ?? (totals?.input ?? 0) + (totals?.output ?? 0) + (totals?.cacheRead ?? 0) + (totals?.cacheWrite ?? 0),
45643
+ contextPhase: "running",
45644
+ dismissable: true
45645
+ }
45646
+ });
45647
+ }
45611
45648
  const rawText = extractAssistantText$1(assistantMessage);
45612
45649
  appendRawStream({
45613
45650
  ts: Date.now(),
@@ -9,12 +9,12 @@ import { _ as resolveAuthProfileDisplayLabel, a as markAuthProfileFailure, c as
9
9
  import { n as resolveCliName, t as formatCliCommand } from "./command-format-BrrHNE8r.js";
10
10
  import { _ as DEFAULT_MODEL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, g as DEFAULT_CONTEXT_TOKENS, h as getProviderAdapter, i as findNormalizedProviderValue, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, r as buildModelAliasIndex, s as normalizeModelRef$1, t as buildAllowedModelSet, u as resolveConfiguredModelRef, v as DEFAULT_PROVIDER } from "./model-selection-BqshlIZc.js";
11
11
  import { n as saveJsonFile, t as loadJsonFile } from "./json-file-CZ3ssFR9.js";
12
- 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-B04yNX82.js";
12
+ 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-BiWlR84Y.js";
13
13
  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, o as normalizeHostname, p as parseDurationMs, t as SsrFBlockedError, u as resolveConfigSnapshotHash, v as setConfigOverride, w as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, x as parseConfigPath, y as unsetConfigOverride } from "./ssrf-DNhyFMRW.js";
14
14
  import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
15
15
  import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell, s as isTruthyEnvValue } from "./shell-env-B1lDWz4t.js";
16
16
  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-BGJu2aC-.js";
17
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CmQwGAuL.js";
17
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-OTJg3QKn.js";
18
18
  import { l as parseFrontmatterBlock } from "./frontmatter-CJEX1BrH.js";
19
19
  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-Dm4gX4Tl.js";
20
20
  import { n as redactToolDetail } from "./redact-CSGZUFxa.js";
@@ -31,7 +31,7 @@ import { t as emitSessionTranscriptUpdate } from "./transcript-events-ChU6IQwp.j
31
31
  import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-D_vCJSzF.js";
32
32
  import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-BALvP9wI.js";
33
33
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-BDfanaOY.js";
34
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, d as requireApiKey, f as resolveApiKeyForProvider, h as resolveModelAuthMode, i as resolveOllamaBaseUrl, l as getApiKeyForModel, m as resolveEnvApiKey, n as retryAsync, o as collectProviderApiKeysForExecution, p as resolveAwsSdkEnvVarName, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation, u as getCustomProviderApiKey } from "./manager-B5P5EgIP.js";
34
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, d as requireApiKey, f as resolveApiKeyForProvider, h as resolveModelAuthMode, i as resolveOllamaBaseUrl, l as getApiKeyForModel, m as resolveEnvApiKey, n as retryAsync, o as collectProviderApiKeysForExecution, p as resolveAwsSdkEnvVarName, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation, u as getCustomProviderApiKey } from "./manager-IHsU3dHx.js";
35
35
  import { r as resolveCopilotApiToken, t as DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token-uhEBNQfj.js";
36
36
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-DCGR3yfh.js";
37
37
  import { a as resolveEffectiveMessagesConfig, i as resolveAckReaction, o as resolveHumanDelayConfig, r as resolveResponsePrefixTemplate, t as createReplyPrefixOptions } from "./reply-prefix-D0NzzC4I.js";
@@ -58,7 +58,7 @@ import crypto, { X509Certificate, createHash, createHmac, randomBytes, randomUUI
58
58
  import { complete, createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
59
59
  import AjvPkg from "ajv";
60
60
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
61
- import { WebSocket as WebSocket$1 } from "ws";
61
+ import { WebSocket } from "ws";
62
62
  import { Buffer as Buffer$1 } from "node:buffer";
63
63
  import { BedrockClient, ListFoundationModelsCommand } from "@aws-sdk/client-bedrock";
64
64
  import { createJiti } from "jiti";
@@ -4460,7 +4460,7 @@ async function getMemorySearchManager(params) {
4460
4460
  const wrapper = new FallbackMemoryManager({
4461
4461
  primary,
4462
4462
  fallbackFactory: async () => {
4463
- const { MemoryIndexManager } = await import("./manager-B5P5EgIP.js").then((n) => n.t);
4463
+ const { MemoryIndexManager } = await import("./manager-IHsU3dHx.js").then((n) => n.t);
4464
4464
  return await MemoryIndexManager.get(params);
4465
4465
  }
4466
4466
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4473,7 +4473,7 @@ async function getMemorySearchManager(params) {
4473
4473
  }
4474
4474
  }
4475
4475
  try {
4476
- const { MemoryIndexManager } = await import("./manager-B5P5EgIP.js").then((n) => n.t);
4476
+ const { MemoryIndexManager } = await import("./manager-IHsU3dHx.js").then((n) => n.t);
4477
4477
  return { manager: await MemoryIndexManager.get(params) };
4478
4478
  } catch (err) {
4479
4479
  return {
@@ -9695,7 +9695,7 @@ var GatewayClient = class {
9695
9695
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
9696
9696
  });
9697
9697
  }
9698
- this.ws = new WebSocket$1(url, wsOptions);
9698
+ this.ws = new WebSocket(url, wsOptions);
9699
9699
  this.ws.on("open", () => {
9700
9700
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
9701
9701
  const tlsError = this.validateTlsFingerprint();
@@ -9914,7 +9914,7 @@ var GatewayClient = class {
9914
9914
  return null;
9915
9915
  }
9916
9916
  async request(method, params, opts) {
9917
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
9917
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
9918
9918
  const id = randomUUID();
9919
9919
  const frame = {
9920
9920
  type: "req",
@@ -10877,7 +10877,7 @@ async function routeReply(params) {
10877
10877
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10878
10878
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10879
10879
  try {
10880
- const { deliverOutboundPayloads } = await import("./deliver-B04yNX82.js").then((n) => n.n);
10880
+ const { deliverOutboundPayloads } = await import("./deliver-BiWlR84Y.js").then((n) => n.n);
10881
10881
  return {
10882
10882
  ok: true,
10883
10883
  messageId: (await deliverOutboundPayloads({
@@ -44827,7 +44827,7 @@ async function deliverSessionMaintenanceWarning(params) {
44827
44827
  return;
44828
44828
  }
44829
44829
  try {
44830
- const { deliverOutboundPayloads } = await import("./deliver-B04yNX82.js").then((n) => n.n);
44830
+ const { deliverOutboundPayloads } = await import("./deliver-BiWlR84Y.js").then((n) => n.n);
44831
44831
  await deliverOutboundPayloads({
44832
44832
  cfg: params.cfg,
44833
44833
  channel,
@@ -58090,6 +58090,21 @@ function handleAgentEnd(ctx) {
58090
58090
  data: { phase: "end" }
58091
58091
  });
58092
58092
  }
58093
+ {
58094
+ const totals = ctx.getUsageTotals();
58095
+ if (totals) emitSymframePush({
58096
+ action: "update",
58097
+ id: "context-meter",
58098
+ card: {
58099
+ contextInput: totals.input ?? 0,
58100
+ contextOutput: totals.output ?? 0,
58101
+ contextCacheRead: totals.cacheRead ?? 0,
58102
+ contextCacheWrite: totals.cacheWrite ?? 0,
58103
+ contextTotal: totals.total ?? (totals.input ?? 0) + (totals.output ?? 0) + (totals.cacheRead ?? 0) + (totals.cacheWrite ?? 0),
58104
+ contextPhase: isError ? "error" : "settled"
58105
+ }
58106
+ });
58107
+ }
58093
58108
  ctx.flushBlockReplyBuffer();
58094
58109
  ctx.state.blockState.thinking = false;
58095
58110
  ctx.state.blockState.final = false;
@@ -58274,6 +58289,28 @@ function handleMessageEnd(ctx, evt) {
58274
58289
  ctx.noteLastAssistant(assistantMessage);
58275
58290
  ctx.recordAssistantUsage(assistantMessage.usage);
58276
58291
  promoteThinkingTagsToBlocks(assistantMessage);
58292
+ {
58293
+ const totals = ctx.getUsageTotals();
58294
+ const modelInfo = assistantMessage;
58295
+ emitSymframePush({
58296
+ action: "add",
58297
+ id: "context-meter",
58298
+ card: {
58299
+ id: "context-meter",
58300
+ type: "context",
58301
+ intent: "holding",
58302
+ title: "context",
58303
+ contextModel: typeof modelInfo.model === "string" && modelInfo.model ? modelInfo.model : typeof modelInfo.provider === "string" ? modelInfo.provider : "model",
58304
+ contextInput: totals?.input ?? 0,
58305
+ contextOutput: totals?.output ?? 0,
58306
+ contextCacheRead: totals?.cacheRead ?? 0,
58307
+ contextCacheWrite: totals?.cacheWrite ?? 0,
58308
+ contextTotal: totals?.total ?? (totals?.input ?? 0) + (totals?.output ?? 0) + (totals?.cacheRead ?? 0) + (totals?.cacheWrite ?? 0),
58309
+ contextPhase: "running",
58310
+ dismissable: true
58311
+ }
58312
+ });
58313
+ }
58277
58314
  const rawText = extractAssistantText$1(assistantMessage);
58278
58315
  appendRawStream({
58279
58316
  ts: Date.now(),
@@ -1,4 +1,4 @@
1
- import "./unified-runner-BwcHrhjo.js";
1
+ import "./unified-runner-C8BedLLT.js";
2
2
  import { j as theme } from "./registry-Sbac4a4z.js";
3
3
  import { _ as resolveStateDir } from "./paths-By0XjHBk.js";
4
4
  import { f as pathExists } from "./utils-CTPsqyE_.js";
@@ -53,8 +53,8 @@ import "./session-cost-usage-D3mgssM_.js";
53
53
  import { h as trimLogTail } from "./session-utils-Cs1jlD-q.js";
54
54
  import "./with-timeout-DPR4A2dx.js";
55
55
  import "./reply-prefix-BFNeXT65.js";
56
- import "./memory-CH-8Z7r7.js";
57
- import "./manager-Dq705UbH.js";
56
+ import "./memory-BLluF2i6.js";
57
+ import "./manager-DjgKz80p.js";
58
58
  import "./sqlite-Cod7C5ba.js";
59
59
  import "./chunk-BxfKjCUx.js";
60
60
  import "./markdown-tables-CS1Tvb3z.js";
@@ -87,13 +87,13 @@ import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
87
87
  import "./cli-utils-CuyGL3rq.js";
88
88
  import { t as formatHelpExamples } from "./help-format-7hFcsqss.js";
89
89
  import "./progress-swt2y17x.js";
90
- import "./memory-cli-M6FiqgSK.js";
90
+ import "./memory-cli-DQTznta7.js";
91
91
  import "./logging-BWknayJl.js";
92
92
  import "./replies-CbXXjn9X.js";
93
93
  import "./pi-tools.policy-H2t-Xkfc.js";
94
94
  import "./model-MUMSB_7d.js";
95
95
  import { r as parseSemver } from "./runtime-guard-CWA00ZXa.js";
96
- import "./program-context-CfkRVEf1.js";
96
+ import "./program-context-B2L7Zll7.js";
97
97
  import "./catalog-BptA-dUv.js";
98
98
  import "./skills-status-BKX1PjCc.js";
99
99
  import { n as inheritOptionFromParent } from "./command-options-DDDwkB9t.js";
@@ -105,7 +105,7 @@ import "./npm-registry-spec-DTqn-NXZ.js";
105
105
  import "./skill-scanner-BCgVcIwi.js";
106
106
  import "./installs-D890uIIW.js";
107
107
  import "./channels-status-issues-DLIzUsjR.js";
108
- import { r as installCompletion } from "./completion-cli-aT_WQ3JR.js";
108
+ import { r as installCompletion } from "./completion-cli-CRZLUn7D.js";
109
109
  import "./daemon-runtime-DlQla_dA.js";
110
110
  import "./onboard-helpers-7IGQ8nAM.js";
111
111
  import "./systemd-CUIM0n5P.js";
@@ -126,8 +126,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
126
126
  import "./doctor-config-flow-C52W1uUK.js";
127
127
  import "./systemd-linger-BzYk7A6M.js";
128
128
  import "./health-format-Bxg84_f4.js";
129
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-T3xNCD3A.js";
130
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-d7GlA1cP.js";
129
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-DCTSxBvr.js";
130
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DEqpjKDZ.js";
131
131
  import path from "node:path";
132
132
  import os from "node:os";
133
133
  import fs from "node:fs/promises";
@@ -21,7 +21,7 @@ import "./client-BOd5o3Kp.js";
21
21
  import "./call-DTshgdlW.js";
22
22
  import "./message-channel-DXToSaWK.js";
23
23
  import "./pairing-token-B-OTYROz.js";
24
- import "./subagent-registry-BV3-ydad.js";
24
+ import "./subagent-registry-odA9HOvg.js";
25
25
  import "./sessions-Dn6VXn4p.js";
26
26
  import "./plugins-BsEhWvLn.js";
27
27
  import "./send-Dq252-bi.js";
@@ -51,8 +51,8 @@ import "./model-auth-Byr7Gic_.js";
51
51
  import "./github-copilot-token-B5y4__YM.js";
52
52
  import "./models-config-CiR_RUxw.js";
53
53
  import "./reply-prefix-DV3KhOhL.js";
54
- import "./memory-DkAg5sbK.js";
55
- import "./manager-vRs88zs_.js";
54
+ import "./memory-DgS1AC6J.js";
55
+ import "./manager-CDkFM3pi.js";
56
56
  import "./sqlite-9jF_eajd.js";
57
57
  import "./chunk-B2lBXhR0.js";
58
58
  import "./markdown-tables-BEdkErjm.js";
@@ -85,7 +85,7 @@ import { t as formatDocsLink } from "./links-Dnmd-RS-.js";
85
85
  import "./cli-utils-DXfA5936.js";
86
86
  import { t as formatHelpExamples } from "./help-format-Dbp8yEhl.js";
87
87
  import "./progress-CI19Xh3z.js";
88
- import "./memory-cli-CUQGhpc5.js";
88
+ import "./memory-cli-jmPQDz2s.js";
89
89
  import "./logging-UO6tk8Em.js";
90
90
  import "./replies-CLREUzzB.js";
91
91
  import "./pi-tools.policy-06k__URR.js";
@@ -99,10 +99,10 @@ import "./npm-registry-spec-BPgK9EL7.js";
99
99
  import "./skill-scanner-BC3PyNso.js";
100
100
  import "./installs-Dunp9UFl.js";
101
101
  import "./channels-status-issues-BTvrA4nx.js";
102
- import "./register.subclis-Coz5gyMy.js";
103
- import "./command-registry-DrE1jnSD.js";
102
+ import "./register.subclis-B_zXq-OG.js";
103
+ import "./command-registry-CL9Kg-yN.js";
104
104
  import "./program-context-B_0V80zV.js";
105
- import { r as installCompletion } from "./completion-cli-BBPRS_8d.js";
105
+ import { r as installCompletion } from "./completion-cli-CNVJwiv2.js";
106
106
  import "./daemon-runtime-AkgOtHR6.js";
107
107
  import { r as parseSemver } from "./runtime-guard-LRRZ73eX.js";
108
108
  import "./onboard-helpers-t7tI9KSA.js";
@@ -124,8 +124,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
124
124
  import "./doctor-config-flow-BIBJeoRl.js";
125
125
  import "./systemd-linger-CctFkWNE.js";
126
126
  import "./health-format-6tfMqkNX.js";
127
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-DQPC6tIG.js";
128
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CAlfPXUW.js";
127
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BMyhMWqW.js";
128
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-D4zwYnEN.js";
129
129
  import { spawn, spawnSync } from "node:child_process";
130
130
  import os from "node:os";
131
131
  import path from "node:path";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/memory-core",
3
- "version": "3.5.37",
3
+ "version": "3.5.38",
4
4
  "private": true,
5
5
  "description": "Symi core memory search plugin",
6
6
  "type": "module",
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.5.38
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core Symi release numbers.
8
+
3
9
  ## 3.5.37
4
10
 
5
11
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/msteams",
3
- "version": "3.5.37",
3
+ "version": "3.5.38",
4
4
  "description": "Symi Microsoft Teams channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/open-prose",
3
- "version": "3.5.37",
3
+ "version": "3.5.38",
4
4
  "private": true,
5
5
  "description": "OpenProse VM skill pack plugin (slash command + telemetry).",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/outlook",
3
- "version": "3.5.37",
3
+ "version": "3.5.38",
4
4
  "private": true,
5
5
  "description": "Symi Outlook 365 email integration via Microsoft Graph API",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/slack",
3
- "version": "3.5.37",
3
+ "version": "3.5.38",
4
4
  "private": true,
5
5
  "description": "Symi Slack channel plugin",
6
6
  "type": "module",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "3.5.37",
3
+ "version": "3.5.38",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",