@symerian/symi 3.5.37 → 3.5.39

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 (116) 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-3jl2ulOE.js} +4 -4
  16. package/dist/{chrome-DNssqQJs.js → chrome-OTJg3QKn.js} +4 -4
  17. package/dist/{cli-Cn3SPe9j.js → cli-n3Th69Yr.js} +4 -4
  18. package/dist/{cli-Bzqwe7pe.js → cli-oKtyaG-m.js} +4 -4
  19. package/dist/{command-registry-DrE1jnSD.js → command-registry-CL9Kg-yN.js} +10 -10
  20. package/dist/{completion-cli-BBPRS_8d.js → completion-cli-CNVJwiv2.js} +2 -2
  21. package/dist/{completion-cli-aT_WQ3JR.js → completion-cli-CRZLUn7D.js} +1 -1
  22. package/dist/{config-cli-CD6ciGup.js → config-cli-DGd8g_Ct.js} +1 -1
  23. package/dist/{config-cli-DeDb4W-l.js → config-cli-DfRMdVFn.js} +1 -1
  24. package/dist/{configure-CYjlPBqc.js → configure-CCwkHVZQ.js} +2 -2
  25. package/dist/{configure-FUZaNK86.js → configure-DsebNj9T.js} +2 -2
  26. package/dist/control-ui/css/style.css +128 -3
  27. package/dist/control-ui/index.html +4 -0
  28. package/dist/control-ui/js/symframe.js +68 -0
  29. package/dist/{deliver-B04yNX82.js → deliver-BiWlR84Y.js} +4 -4
  30. package/dist/{deliver-q23ar_Pm.js → deliver-f3cIWxXT.js} +4 -4
  31. package/dist/{doctor-completion-CAlfPXUW.js → doctor-completion-D4zwYnEN.js} +1 -1
  32. package/dist/{doctor-completion-d7GlA1cP.js → doctor-completion-DEqpjKDZ.js} +1 -1
  33. package/dist/entry.js +1 -1
  34. package/dist/extensionAPI.js +4 -4
  35. package/dist/{gateway-cli-vsadfWee.js → gateway-cli-BJ6xAu7G.js} +10 -10
  36. package/dist/{gateway-cli-1VbI-_Bq.js → gateway-cli-DyftuEOb.js} +10 -10
  37. package/dist/{glass-ui-ws-5qfhLxPm.js → glass-ui-ws-BLTXXspr.js} +8 -8
  38. package/dist/{glass-ui-ws-BbO6e3iI.js → glass-ui-ws-Bn9B5Ac_.js} +8 -8
  39. package/dist/{hooks-cli-gBkwYJqr.js → hooks-cli-B2V8uacu.js} +5 -5
  40. package/dist/{hooks-cli-C43d1R3q.js → hooks-cli-DfCuxn1F.js} +5 -5
  41. package/dist/index.js +8 -8
  42. package/dist/llm-slug-generator.js +4 -4
  43. package/dist/{manager-vRs88zs_.js → manager-CDkFM3pi.js} +1 -1
  44. package/dist/{manager-DGh2Z3k1.js → manager-CG1eJ27l.js} +1 -1
  45. package/dist/{manager-Dq705UbH.js → manager-DjgKz80p.js} +1 -1
  46. package/dist/{manager-B5P5EgIP.js → manager-IHsU3dHx.js} +1 -1
  47. package/dist/{memory-CH-8Z7r7.js → memory-BLluF2i6.js} +2 -2
  48. package/dist/{memory-DkAg5sbK.js → memory-DgS1AC6J.js} +2 -2
  49. package/dist/{memory-cli-M6FiqgSK.js → memory-cli-DQTznta7.js} +2 -2
  50. package/dist/{memory-cli-CUQGhpc5.js → memory-cli-jmPQDz2s.js} +2 -2
  51. package/dist/{models-6DjS559Z.js → models-BVDQwjWd.js} +2 -2
  52. package/dist/{models-cli-5BfF_sFl.js → models-cli-B1rXMGPT.js} +6 -6
  53. package/dist/{models-cli-D7cfClDO.js → models-cli-DAwcBLHF.js} +5 -5
  54. package/dist/{onboard-BhXq2EXc.js → onboard-BIPhgfaW.js} +1 -1
  55. package/dist/{onboard-we3yileo.js → onboard-C9k0zmHq.js} +1 -1
  56. package/dist/{onboard-channels-BaMPymWt.js → onboard-channels-BEi6XlDW.js} +1 -1
  57. package/dist/{onboard-channels-BlAPAiqf.js → onboard-channels-BkmP8-BZ.js} +1 -1
  58. package/dist/{onboarding-CT9WoHsY.js → onboarding-B1NNMstX.js} +3 -3
  59. package/dist/{onboarding-CWb8cdrF.js → onboarding-B2Km9GAJ.js} +3 -3
  60. package/dist/{onboarding.finalize-DuDe6mVl.js → onboarding.finalize-DJghG2o6.js} +3 -3
  61. package/dist/{onboarding.finalize-Dx44S_JZ.js → onboarding.finalize-xL4ImbkA.js} +4 -4
  62. package/dist/{pi-embedded-B0PVRhQL.js → pi-embedded-CWTDf5-T.js} +47 -10
  63. package/dist/{plugin-registry-Dz2TX8GW.js → plugin-registry-C2TXQh4N.js} +1 -1
  64. package/dist/{plugin-registry-BU848TRC.js → plugin-registry-CPEFf3Lg.js} +1 -1
  65. package/dist/{plugins-cli-CSg1c7CW.js → plugins-cli-Df8zFZuP.js} +5 -5
  66. package/dist/{plugins-cli-gbeibwVM.js → plugins-cli-DiB98WvI.js} +5 -5
  67. package/dist/{program-j2ijuc_q.js → program-BUv-qGcY.js} +10 -10
  68. package/dist/{program-context-CfkRVEf1.js → program-context-B2L7Zll7.js} +18 -18
  69. package/dist/{prompt-select-styled-DQPC6tIG.js → prompt-select-styled-BMyhMWqW.js} +4 -4
  70. package/dist/{prompt-select-styled-T3xNCD3A.js → prompt-select-styled-DCTSxBvr.js} +4 -4
  71. package/dist/{provider-auth-helpers-BVsLvcTN.js → provider-auth-helpers-4CHkGgIn.js} +1 -1
  72. package/dist/{provider-auth-helpers--vDzHS5a.js → provider-auth-helpers-FDwi4Yzt.js} +1 -1
  73. package/dist/{push-apns-MzhuZXok.js → push-apns-BzR8krCb.js} +1 -1
  74. package/dist/{push-apns-CgOg6uMk.js → push-apns-MTIWc9yH.js} +1 -1
  75. package/dist/{pw-ai-v__CyAlM.js → pw-ai-DOAsQ5NX.js} +1 -1
  76. package/dist/{pw-ai-DLsdzdgc.js → pw-ai-DY_6l11g.js} +1 -1
  77. package/dist/{register.agent-Dx35KGyf.js → register.agent-CIA-0mpo.js} +8 -8
  78. package/dist/{register.agent-CuN2ad51.js → register.agent-COTicWGL.js} +9 -9
  79. package/dist/{register.configure-BG1-5fPo.js → register.configure-BV_zrg1a.js} +8 -8
  80. package/dist/{register.configure-Du8LMA8y.js → register.configure-RZHIHn4g.js} +8 -8
  81. package/dist/{register.maintenance-CkQe6RmA.js → register.maintenance-B7OkvZK3.js} +8 -8
  82. package/dist/{register.maintenance-BhzxiuPp.js → register.maintenance-Bgr2ezP7.js} +9 -9
  83. package/dist/{register.message-DpbzBOu0.js → register.message-B87VSL0P.js} +5 -5
  84. package/dist/{register.message-tM5npWX-.js → register.message-MnKGR-CU.js} +5 -5
  85. package/dist/{register.onboard-BsWQiEyl.js → register.onboard-B-mQpES-.js} +2 -2
  86. package/dist/{register.onboard-HYjNN28o.js → register.onboard-uE1fuOoP.js} +2 -2
  87. package/dist/{register.setup-oIXgNxYx.js → register.setup-DvW7pEmV.js} +2 -2
  88. package/dist/{register.setup-BcoMdo3D.js → register.setup-fD86QH-Z.js} +2 -2
  89. package/dist/{register.status-health-sessions--sQTwXrv.js → register.status-health-sessions-CZlmKKRr.js} +3 -3
  90. package/dist/{register.status-health-sessions-BRCKvxKZ.js → register.status-health-sessions-DnJHSkWN.js} +3 -3
  91. package/dist/{register.subclis-Coz5gyMy.js → register.subclis-B_zXq-OG.js} +9 -9
  92. package/dist/{run-main-BP0tSdvm.js → run-main-BwejEUC8.js} +17 -17
  93. package/dist/{server-methods-JJSJ-f4L.js → server-methods-DF_vhByu.js} +7 -7
  94. package/dist/{server-methods-DqMh81yf.js → server-methods-fT02jJUv.js} +7 -7
  95. package/dist/{server-node-events-U29PUJ3C.js → server-node-events-B0Ah5xv3.js} +6 -6
  96. package/dist/{server-node-events-DtE36b7p.js → server-node-events-C-SSj_J4.js} +6 -6
  97. package/dist/{status-CjTgAUf9.js → status-9_SJZT-n.js} +1 -1
  98. package/dist/{status-Ep2Jr3PX.js → status-BJK_HWiE.js} +1 -1
  99. package/dist/{status-B4t6u9nZ.js → status-C43mMdxl.js} +1 -1
  100. package/dist/{status-CE9aMOLz.js → status-DYN36pJ0.js} +1 -1
  101. package/dist/{subagent-registry-BV3-ydad.js → subagent-registry-odA9HOvg.js} +40 -3
  102. package/dist/{synthesis-BoUPCqBp.js → synthesis-BI3Vsi69.js} +4 -4
  103. package/dist/{synthesis-B0bH-fke.js → synthesis-BxLob78U.js} +4 -4
  104. package/dist/{synthesis-DKanvEYA.js → synthesis-ByIDCuPD.js} +4 -4
  105. package/dist/{synthesis-CL1PiA4s.js → synthesis-hqIyCK_Z.js} +4 -4
  106. package/dist/{unified-runner-BwcHrhjo.js → unified-runner-C8BedLLT.js} +40 -3
  107. package/dist/{unified-runner-CdSyDq5s.js → unified-runner-DJTndfeW.js} +47 -10
  108. package/dist/{update-cli-Dw3aFNp8.js → update-cli-BP1MAHhV.js} +8 -8
  109. package/dist/{update-cli-D1wsCp79.js → update-cli-Ce4anXY7.js} +9 -9
  110. package/extensions/memory-core/package.json +1 -1
  111. package/extensions/msteams/CHANGELOG.md +12 -0
  112. package/extensions/msteams/package.json +1 -1
  113. package/extensions/open-prose/package.json +1 -1
  114. package/extensions/outlook/package.json +1 -1
  115. package/extensions/slack/package.json +1 -1
  116. package/package.json +1 -1
@@ -1341,9 +1341,60 @@ body {
1341
1341
  border-radius: var(--sf-radius-xs);
1342
1342
  }
1343
1343
 
1344
- /* Stage H (3.5.37): Stage J will add a new "breathing light" empty-state
1345
- element in this gap for now the panel is just empty when no cards
1346
- are live. The "quiet mind" substrate empty-state from Stage B is gone. */
1344
+ /* Stage J (3.5.39): blue/silver breathing light. Shown when the panel
1345
+ has zero cardsa felt "symi at rest" mark instead of a void.
1346
+
1347
+ Visibility is pure CSS via :has() — the light hides as soon as any
1348
+ .symframe-card-dynamic enters the cards container. No JS toggle.
1349
+
1350
+ Visual: 80px circle, radial gradient cyan → silver → transparent,
1351
+ blue-silver halo via box-shadow. Breathes at 3.5s — scale 0.85→1.0,
1352
+ opacity 0.6→1.0. Pointer-events disabled so it never blocks clicks. */
1353
+ .symframe-empty-light {
1354
+ position: absolute;
1355
+ top: 50%;
1356
+ left: 50%;
1357
+ width: 80px;
1358
+ height: 80px;
1359
+ border-radius: var(--sf-radius-pill);
1360
+ pointer-events: none;
1361
+ transform: translate(-50%, -50%);
1362
+ background: radial-gradient(
1363
+ circle at center,
1364
+ rgba(0, 212, 255, 0.55) 0%,
1365
+ rgba(180, 200, 220, 0.35) 45%,
1366
+ rgba(120, 160, 200, 0.1) 75%,
1367
+ transparent 100%
1368
+ );
1369
+ box-shadow:
1370
+ 0 0 24px rgba(0, 212, 255, 0.35),
1371
+ 0 0 48px rgba(180, 200, 220, 0.15),
1372
+ inset 0 0 12px rgba(255, 255, 255, 0.12);
1373
+ animation: symframe-empty-breathe var(--sf-time-breathe) ease-in-out infinite;
1374
+ transition: opacity var(--sf-time-normal) ease;
1375
+ }
1376
+ @keyframes symframe-empty-breathe {
1377
+ 0%,
1378
+ 100% {
1379
+ transform: translate(-50%, -50%) scale(0.85);
1380
+ opacity: 0.6;
1381
+ }
1382
+ 50% {
1383
+ transform: translate(-50%, -50%) scale(1);
1384
+ opacity: 1;
1385
+ }
1386
+ }
1387
+ /* Hide the light when any card is present in the stack */
1388
+ .symframe-stack:has(.symframe-card-dynamic) .symframe-empty-light {
1389
+ opacity: 0;
1390
+ }
1391
+ @media (prefers-reduced-motion: reduce) {
1392
+ .symframe-empty-light {
1393
+ animation: none;
1394
+ opacity: 0.8;
1395
+ transform: translate(-50%, -50%);
1396
+ }
1397
+ }
1347
1398
 
1348
1399
  /* Card chrome — overrides the per-panel transparent treatment from the
1349
1400
  floating-panels arc (3.4.10/11/12/13) for the panels that now live
@@ -2408,6 +2459,80 @@ body {
2408
2459
  }
2409
2460
  }
2410
2461
 
2462
+ /* ── Stage I: Context meter card ───────────────────────────────────────
2463
+ Token usage + model name as a persistent card pinned to the top of
2464
+ the stack. Stable id "context-meter"; replaces itself on every
2465
+ assistant message end. order:-1 keeps it above all other cards
2466
+ regardless of insertion sequence (since cards are flex column).
2467
+ */
2468
+ .symframe-card[data-card-type="context"] {
2469
+ order: -1;
2470
+ padding: var(--sf-pad-md) var(--sf-pad-lg);
2471
+ }
2472
+ .symframe-card[data-card-type="context"] .symframe-card-header {
2473
+ font-family: var(--font-mono);
2474
+ font-size: var(--sf-text-sm);
2475
+ letter-spacing: 0.08em;
2476
+ text-transform: uppercase;
2477
+ opacity: 0.7;
2478
+ }
2479
+ .symframe-body-context {
2480
+ display: flex;
2481
+ flex-direction: column;
2482
+ gap: var(--sf-pad-sm);
2483
+ font-family: var(--font-mono);
2484
+ font-size: var(--sf-text-xs);
2485
+ }
2486
+ .symframe-context-model {
2487
+ color: var(--accent-cyan);
2488
+ font-weight: 600;
2489
+ letter-spacing: 0.02em;
2490
+ word-break: break-all;
2491
+ }
2492
+ .symframe-context-tokens {
2493
+ color: var(--text);
2494
+ letter-spacing: 0.02em;
2495
+ }
2496
+ .symframe-context-bar {
2497
+ width: 100%;
2498
+ height: var(--sf-pad-xs);
2499
+ background: var(--sf-cyan-hairline);
2500
+ border-radius: var(--sf-radius-pill);
2501
+ overflow: hidden;
2502
+ border: 1px solid var(--sf-cyan-veil);
2503
+ }
2504
+ .symframe-context-bar-fill {
2505
+ height: 100%;
2506
+ background: linear-gradient(to right, var(--sf-cyan-pulse), var(--sf-cyan-flash));
2507
+ border-radius: var(--sf-radius-pill);
2508
+ transition: width var(--sf-time-normal) ease;
2509
+ }
2510
+ .symframe-context-meta {
2511
+ color: var(--text-dim);
2512
+ font-size: var(--sf-text-xs);
2513
+ opacity: 0.7;
2514
+ }
2515
+ .symframe-body-context[data-context-phase="running"] .symframe-context-bar-fill {
2516
+ animation: symframe-context-pulse var(--sf-time-pulse) ease-in-out infinite;
2517
+ }
2518
+ .symframe-body-context[data-context-phase="error"] .symframe-context-bar-fill {
2519
+ background: var(--sf-pink-strong);
2520
+ }
2521
+ @keyframes symframe-context-pulse {
2522
+ 0%,
2523
+ 100% {
2524
+ opacity: 0.7;
2525
+ }
2526
+ 50% {
2527
+ opacity: 1;
2528
+ }
2529
+ }
2530
+ @media (prefers-reduced-motion: reduce) {
2531
+ .symframe-body-context[data-context-phase="running"] .symframe-context-bar-fill {
2532
+ animation: none;
2533
+ }
2534
+ }
2535
+
2411
2536
  /* ── Response Area ────────────────────────────────────────────────── */
2412
2537
  .response-area {
2413
2538
  position: fixed;
@@ -266,6 +266,10 @@
266
266
  <!-- the panel is now a unified card stream with auto-decay. -->
267
267
  </div>
268
268
  <!-- /.symframe-cards -->
269
+ <!-- Stage J (3.5.39): blue/silver breathing light. Shown when the -->
270
+ <!-- panel has zero cards (CSS :has() inverse on .symframe-cards). -->
271
+ <!-- A breath, not a status — symi at rest. -->
272
+ <div class="symframe-empty-light" aria-hidden="true"></div>
269
273
  </div>
270
274
  <!-- /.symframe-stack -->
271
275
 
@@ -359,6 +359,69 @@
359
359
  return wrap;
360
360
  }
361
361
 
362
+ // Stage I (3.5.38): context meter. A persistent card pinned to the top
363
+ // of the stack (via CSS order:-1) showing the running token totals for
364
+ // the current session. Updates on every assistant message end; phase
365
+ // flips to settled at agent end and stays visible for the next turn.
366
+ function renderContextBody(card) {
367
+ const wrap = document.createElement("div");
368
+ wrap.className = "symframe-body-context";
369
+ wrap.dataset.contextPhase = card.contextPhase || "running";
370
+
371
+ if (card.contextModel) {
372
+ const model = document.createElement("div");
373
+ model.className = "symframe-context-model";
374
+ model.textContent = card.contextModel;
375
+ wrap.appendChild(model);
376
+ }
377
+
378
+ // Token line — compact summary
379
+ const tokens = document.createElement("div");
380
+ tokens.className = "symframe-context-tokens";
381
+ const inTok = Number(card.contextInput) || 0;
382
+ const outTok = Number(card.contextOutput) || 0;
383
+ const cacheRead = Number(card.contextCacheRead) || 0;
384
+ const cacheWrite = Number(card.contextCacheWrite) || 0;
385
+ const total = Number(card.contextTotal) || inTok + outTok + cacheRead + cacheWrite;
386
+ const parts = [];
387
+ parts.push(`in ${formatTokens(inTok)}`);
388
+ parts.push(`out ${formatTokens(outTok)}`);
389
+ if (cacheRead > 0) {
390
+ parts.push(`cache ${formatTokens(cacheRead)}`);
391
+ }
392
+ parts.push(`· total ${formatTokens(total)}`);
393
+ tokens.textContent = parts.join(" · ");
394
+ wrap.appendChild(tokens);
395
+
396
+ // Window bar — uses a 200k default if no contextWindow provided
397
+ const windowSize = Number(card.contextWindow) || 200_000;
398
+ const pct = Math.min(100, (total / windowSize) * 100);
399
+ const bar = document.createElement("div");
400
+ bar.className = "symframe-context-bar";
401
+ const fill = document.createElement("div");
402
+ fill.className = "symframe-context-bar-fill";
403
+ fill.style.width = `${pct.toFixed(1)}%`;
404
+ bar.appendChild(fill);
405
+ wrap.appendChild(bar);
406
+
407
+ const meta = document.createElement("div");
408
+ meta.className = "symframe-context-meta";
409
+ meta.textContent = `${pct.toFixed(1)}% of ${formatTokens(windowSize)} window`;
410
+ wrap.appendChild(meta);
411
+
412
+ return wrap;
413
+ }
414
+
415
+ function formatTokens(n) {
416
+ if (n < 1000) {
417
+ return String(n);
418
+ }
419
+ if (n < 1_000_000) {
420
+ return `${(n / 1000).toFixed(1)}k`;
421
+ }
422
+ return `${(n / 1_000_000).toFixed(2)}m`;
423
+ }
424
+
362
425
  const renderers = {
363
426
  text: renderTextBody,
364
427
  markdown: renderMarkdownBody,
@@ -370,6 +433,7 @@
370
433
  tool: renderToolBody,
371
434
  memory: renderMemoryBody,
372
435
  thought: renderThoughtBody,
436
+ context: renderContextBody,
373
437
  };
374
438
 
375
439
  function renderBodyForType(card) {
@@ -404,6 +468,10 @@
404
468
  if (card.type === "thought") {
405
469
  return true;
406
470
  }
471
+ // Stage I: context cards carry their data in dedicated fields
472
+ if (card.type === "context") {
473
+ return true;
474
+ }
407
475
  return false;
408
476
  }
409
477
 
@@ -9,7 +9,7 @@ import { t as formatCliCommand } from "./command-format-BrrHNE8r.js";
9
9
  import { n as isPidAlive, t as resolveProcessScopedMap } from "./process-scoped-map-B-dHc_9I.js";
10
10
  import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-DNhyFMRW.js";
11
11
  import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
12
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CmQwGAuL.js";
12
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-OTJg3QKn.js";
13
13
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-Dm4gX4Tl.js";
14
14
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-C89ppfp9.js";
15
15
  import { b as SafeOpenError, d as extensionForMime, i as buildImageResizeSideGrid, l as resizeToJpeg, o as getImageMetadata, r as IMAGE_REDUCE_QUALITY_STEPS, t as getAgentScopedMediaLocalRoots, u as detectMime, x as openFileWithinRoot } from "./local-roots-C7fBKoOI.js";
@@ -939,7 +939,7 @@ function isModuleNotFoundError(err) {
939
939
  }
940
940
  async function loadPwAiModule(mode) {
941
941
  try {
942
- return await import("./pw-ai-DLsdzdgc.js");
942
+ return await import("./pw-ai-DY_6l11g.js");
943
943
  } catch (err) {
944
944
  if (mode === "soft") return null;
945
945
  if (isModuleNotFoundError(err)) return null;
@@ -3536,11 +3536,11 @@ function createProfileContext(opts, profile) {
3536
3536
  const userDataDir = resolveSymiUserDataDir(profile.name);
3537
3537
  const profileState = getProfileState();
3538
3538
  if (await isHttpReachable(300) && !profileState.running) try {
3539
- await (await import("./pw-ai-DLsdzdgc.js")).closePlaywrightBrowserConnection();
3539
+ await (await import("./pw-ai-DY_6l11g.js")).closePlaywrightBrowserConnection();
3540
3540
  } catch {}
3541
3541
  if (profileState.running) await stopRunningBrowser();
3542
3542
  try {
3543
- await (await import("./pw-ai-DLsdzdgc.js")).closePlaywrightBrowserConnection();
3543
+ await (await import("./pw-ai-DY_6l11g.js")).closePlaywrightBrowserConnection();
3544
3544
  } catch {}
3545
3545
  if (!fs.existsSync(userDataDir)) return {
3546
3546
  moved: false,
@@ -9,7 +9,7 @@ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CZ_mYw
9
9
  import { _ as listDeliverableMessageChannels, c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, v as normalizeMessageChannel } from "./chunk-CAZujdOi.js";
10
10
  import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-BCSnhba8.js";
11
11
  import { t as parseBooleanValue } from "./boolean-BW6OTjPi.js";
12
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-DNssqQJs.js";
12
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-3jl2ulOE.js";
13
13
  import { t as formatCliCommand } from "./command-format-DPd9RN2g.js";
14
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DO7WNsVJ.js";
15
15
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BEU7IHU6.js";
@@ -1331,7 +1331,7 @@ function isModuleNotFoundError(err) {
1331
1331
  }
1332
1332
  async function loadPwAiModule(mode) {
1333
1333
  try {
1334
- return await import("./pw-ai-v__CyAlM.js");
1334
+ return await import("./pw-ai-DOAsQ5NX.js");
1335
1335
  } catch (err) {
1336
1336
  if (mode === "soft") return null;
1337
1337
  if (isModuleNotFoundError(err)) return null;
@@ -3928,11 +3928,11 @@ function createProfileContext(opts, profile) {
3928
3928
  const userDataDir = resolveSymiUserDataDir(profile.name);
3929
3929
  const profileState = getProfileState();
3930
3930
  if (await isHttpReachable(300) && !profileState.running) try {
3931
- await (await import("./pw-ai-v__CyAlM.js")).closePlaywrightBrowserConnection();
3931
+ await (await import("./pw-ai-DOAsQ5NX.js")).closePlaywrightBrowserConnection();
3932
3932
  } catch {}
3933
3933
  if (profileState.running) await stopRunningBrowser();
3934
3934
  try {
3935
- await (await import("./pw-ai-v__CyAlM.js")).closePlaywrightBrowserConnection();
3935
+ await (await import("./pw-ai-DOAsQ5NX.js")).closePlaywrightBrowserConnection();
3936
3936
  } catch {}
3937
3937
  if (!fs.existsSync(userDataDir)) return {
3938
3938
  moved: false,
@@ -1,7 +1,7 @@
1
1
  import { n as resolveCliName } from "./cli-name-DY75UA5M.js";
2
2
  import { t as resolveSymiPackageRoot } from "./symi-root-Ctw1Rb_n.js";
3
3
  import { t as note } from "./note-BIAQpZxi.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BBPRS_8d.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CNVJwiv2.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { n as resolveCliName } from "./cli-name-CzMV-gJF.js";
2
2
  import { t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
3
3
  import { t as note } from "./note-D9FXI2qW.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-aT_WQ3JR.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CRZLUn7D.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
package/dist/entry.js CHANGED
@@ -2315,7 +2315,7 @@ if (!ensureExperimentalWarningSuppressed()) {
2315
2315
  applyCliProfileEnv({ profile: parsed.profile });
2316
2316
  process$1.argv = parsed.argv;
2317
2317
  }
2318
- import("./run-main-BP0tSdvm.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2318
+ import("./run-main-BwejEUC8.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2319
2319
  console.error("[symi] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
2320
2320
  process$1.exitCode = 1;
2321
2321
  });
@@ -6,8 +6,8 @@ import { _ as DEFAULT_PROVIDER, g as DEFAULT_MODEL, p as resolveThinkingDefault
6
6
  import { a as resolveAgentIdentity } from "./reply-prefix-i-FPYcoQ.js";
7
7
  import "./plugins-CZ_mYwXq.js";
8
8
  import "./replies-0nzkXt6o.js";
9
- import { a as resolveAgentTimeoutMs, r as runEmbeddedPiAgent } from "./pi-embedded-B0PVRhQL.js";
10
- import { $ as loadSessionStore, nt as saveSessionStore } from "./deliver-q23ar_Pm.js";
9
+ import { a as resolveAgentTimeoutMs, r as runEmbeddedPiAgent } from "./pi-embedded-CWTDf5-T.js";
10
+ import { $ as loadSessionStore, nt as saveSessionStore } from "./deliver-f3cIWxXT.js";
11
11
  import "./diagnostic-BdRnGknC.js";
12
12
  import "./diagnostic-session-state-DpxCUzoM.js";
13
13
  import "./chunk-CAZujdOi.js";
@@ -16,14 +16,14 @@ import "./ssrf-BCSnhba8.js";
16
16
  import "./boolean-BW6OTjPi.js";
17
17
  import "./shell-env-DgjeObDZ.js";
18
18
  import "./manifest-registry-CAWGTwb5.js";
19
- import "./chrome-DNssqQJs.js";
19
+ import "./chrome-3jl2ulOE.js";
20
20
  import "./skills-DO7WNsVJ.js";
21
21
  import "./redact-DSOAcWMe.js";
22
22
  import "./errors-BEU7IHU6.js";
23
23
  import "./tokens-yWO1wD7Z.js";
24
24
  import "./thinking-DgjGxdSP.js";
25
25
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-BsT3BvfH.js";
26
- import "./manager-DGh2Z3k1.js";
26
+ import "./manager-CG1eJ27l.js";
27
27
  import "./github-copilot-token-dYUr1mDQ.js";
28
28
  import "./sqlite-D8iYC_CU.js";
29
29
  import "./markdown-tables-jQzXAsf3.js";
@@ -26,7 +26,7 @@ import "./pairing-token-B-OTYROz.js";
26
26
  import { t as safeEqualSecret } from "./secret-equal-CDUVxXmp.js";
27
27
  import { a as isValidIPv4, c as resolveClientIp, d as resolveHostName, f as rawDataToString, i as isTrustedProxyAddress, l as resolveGatewayBindHost, n as isLoopbackHost, o as normalizeHostHeader, t as isLoopbackAddress, u as resolveGatewayListenHosts } from "./net-TZUXtwGR.js";
28
28
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-B2SPYrh4.js";
29
- import { $ as normalizeHttpWebhookUrl, $t as resolveInputFileLimits, Cn as emitAgentEvent, Ct as deferGatewayRestartUntilIdle, D as getActiveEmbeddedRunCount, En as registerAgentRunContext, Et as markGatewaySigusr1RestartHandled, F as createSymiTools, Gt as registerUnhandledRejectionHandler, H as resolveOutboundSessionRoute, Jt as DEFAULT_INPUT_MAX_REDIRECTS, Kt as DEFAULT_INPUT_IMAGE_MAX_BYTES, M as resolveModelProfile, Ot as setGatewaySigusr1RestartPolicy, Qt as normalizeMimeList, R as readLatestAssistantReply, S as getTotalPendingReplies, Sn as clearAgentRunContext, St as consumeGatewaySigusr1RestartAuthorization, T as runAgentTurn, Tn as onAgentEvent, Tt as isGatewaySigusr1RestartExternallyAllowed, U as resolveOutboundTarget, W as resolveSessionDeliveryTarget, Xt as extractFileContentFromSource, Y as runWithModelFallback, Yt as DEFAULT_INPUT_TIMEOUT_MS, Zt as extractImageContentFromSource, _ as requestBodyErrorToText, _n as getTotalQueueSize, _t as isExternalHookSession, at as normalizeOptionalText, bn as waitForActiveTasks, ct as migrateLegacyCronPayload, dn as formatUserTime, dt as stripLegacyDeliveryFields, f as getPluginToolMeta, fn as resolveUserTimeFormat, g as readJsonBodyWithLimit, gn as getActiveTaskCount, gt as getHookType, h as handleSlackHttpRequest, ht as detectSuspiciousPatterns, i as listDescendantRunsForRequester, it as normalizeOptionalSessionKey, j as classifyOutboundMessage, kt as setPreRestartDeferralCheck, l as applyToolPolicyPipeline, ln as ToolInputError, lt as buildDeliveryFromLegacyPayload, m as loadSymiPlugins, mt as buildSafeExternalPrompt, n as countActiveRunsForSession, nt as inferLegacyName, ot as normalizePayloadToSystemText, pn as resolveUserTimezone, q as resetDirectoryCache, qt as DEFAULT_INPUT_IMAGE_MIMES, r as initSubagentRegistry, rt as normalizeOptionalAgentId, s as runSubagentAnnounceFlow, st as normalizeRequiredName, t as countActiveDescendantRuns, tn as resolveAgentTimeoutMs, u as buildDefaultToolPolicyPipelineSteps, ut as hasLegacyDeliveryHints, v as buildHistoryContextFromEntries, vn as resetAllLanes, wn as getAgentRunContext, wt as emitGatewayRestart, xn as CommandLane, yn as setCommandLaneConcurrency, z as resolveAnnounceTargetFromKey } from "./subagent-registry-BV3-ydad.js";
29
+ import { $ as normalizeHttpWebhookUrl, $t as resolveInputFileLimits, Cn as emitAgentEvent, Ct as deferGatewayRestartUntilIdle, D as getActiveEmbeddedRunCount, En as registerAgentRunContext, Et as markGatewaySigusr1RestartHandled, F as createSymiTools, Gt as registerUnhandledRejectionHandler, H as resolveOutboundSessionRoute, Jt as DEFAULT_INPUT_MAX_REDIRECTS, Kt as DEFAULT_INPUT_IMAGE_MAX_BYTES, M as resolveModelProfile, Ot as setGatewaySigusr1RestartPolicy, Qt as normalizeMimeList, R as readLatestAssistantReply, S as getTotalPendingReplies, Sn as clearAgentRunContext, St as consumeGatewaySigusr1RestartAuthorization, T as runAgentTurn, Tn as onAgentEvent, Tt as isGatewaySigusr1RestartExternallyAllowed, U as resolveOutboundTarget, W as resolveSessionDeliveryTarget, Xt as extractFileContentFromSource, Y as runWithModelFallback, Yt as DEFAULT_INPUT_TIMEOUT_MS, Zt as extractImageContentFromSource, _ as requestBodyErrorToText, _n as getTotalQueueSize, _t as isExternalHookSession, at as normalizeOptionalText, bn as waitForActiveTasks, ct as migrateLegacyCronPayload, dn as formatUserTime, dt as stripLegacyDeliveryFields, f as getPluginToolMeta, fn as resolveUserTimeFormat, g as readJsonBodyWithLimit, gn as getActiveTaskCount, gt as getHookType, h as handleSlackHttpRequest, ht as detectSuspiciousPatterns, i as listDescendantRunsForRequester, it as normalizeOptionalSessionKey, j as classifyOutboundMessage, kt as setPreRestartDeferralCheck, l as applyToolPolicyPipeline, ln as ToolInputError, lt as buildDeliveryFromLegacyPayload, m as loadSymiPlugins, mt as buildSafeExternalPrompt, n as countActiveRunsForSession, nt as inferLegacyName, ot as normalizePayloadToSystemText, pn as resolveUserTimezone, q as resetDirectoryCache, qt as DEFAULT_INPUT_IMAGE_MIMES, r as initSubagentRegistry, rt as normalizeOptionalAgentId, s as runSubagentAnnounceFlow, st as normalizeRequiredName, t as countActiveDescendantRuns, tn as resolveAgentTimeoutMs, u as buildDefaultToolPolicyPipelineSteps, ut as hasLegacyDeliveryHints, v as buildHistoryContextFromEntries, vn as resetAllLanes, wn as getAgentRunContext, wt as emitGatewayRestart, xn as CommandLane, yn as setCommandLaneConcurrency, z as resolveAnnounceTargetFromKey } from "./subagent-registry-odA9HOvg.js";
30
30
  import { D as resolveSessionResetPolicy, F as resolveMainSessionKey, H as cleanStaleLockFiles, I as resolveMainSessionKeyFromConfig, K as mergeDeliveryContext, M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, T as evaluateSessionFreshness, W as deliveryContextFromSession, d as updateSessionStore, n as parseSessionThreadInfo, o as loadSessionStore } from "./sessions-Dn6VXn4p.js";
31
31
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BsEhWvLn.js";
32
32
  import "./send-Dq252-bi.js";
@@ -56,8 +56,8 @@ import "./model-auth-Byr7Gic_.js";
56
56
  import "./github-copilot-token-B5y4__YM.js";
57
57
  import "./models-config-CiR_RUxw.js";
58
58
  import { a as resolveAgentIdentity } from "./reply-prefix-DV3KhOhL.js";
59
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-DkAg5sbK.js";
60
- import { c as resolveMemorySearchConfig } from "./manager-vRs88zs_.js";
59
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-DgS1AC6J.js";
60
+ import { c as resolveMemorySearchConfig } from "./manager-CDkFM3pi.js";
61
61
  import "./sqlite-9jF_eajd.js";
62
62
  import "./chunk-B2lBXhR0.js";
63
63
  import "./markdown-tables-BEdkErjm.js";
@@ -90,7 +90,7 @@ import { t as formatDocsLink } from "./links-Dnmd-RS-.js";
90
90
  import { n as runCommandWithRuntime } from "./cli-utils-DXfA5936.js";
91
91
  import { t as formatHelpExamples } from "./help-format-Dbp8yEhl.js";
92
92
  import { n as withProgress } from "./progress-CI19Xh3z.js";
93
- import "./memory-cli-CUQGhpc5.js";
93
+ import "./memory-cli-jmPQDz2s.js";
94
94
  import "./logging-UO6tk8Em.js";
95
95
  import "./replies-CLREUzzB.js";
96
96
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-06k__URR.js";
@@ -117,17 +117,17 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
117
117
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-Dl4ZrOve.js";
118
118
  import { c as resolveNodeCommandAllowlist, l as probeGateway, n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./audit-DyncRBKq.js";
119
119
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-XbH0AYJ4.js";
120
- import { i as pickGatewaySelfPresence } from "./status-B4t6u9nZ.js";
120
+ import { i as pickGatewaySelfPresence } from "./status-C43mMdxl.js";
121
121
  import { a as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-Dkwuq8ta.js";
122
122
  import { n as createDefaultDeps, t as createOutboundSendDeps } from "./outbound-send-deps-BCyarBRf.js";
123
123
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Dnz69KRU.js";
124
124
  import { t as ensureSymiCliOnPath } from "./path-env-SUrcTSJ-.js";
125
125
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-DLOnLuop.js";
126
- import { t as runOnboardingWizard } from "./onboarding-CWb8cdrF.js";
127
- import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-DqMh81yf.js";
128
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-MzhuZXok.js";
126
+ import { t as runOnboardingWizard } from "./onboarding-B2Km9GAJ.js";
127
+ import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-fT02jJUv.js";
128
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-BzR8krCb.js";
129
129
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-BYBwPfuu.js";
130
- import { a as getCliSessionId, o as setCliSessionId, s as runCliAgent, t as agentCommand } from "./agent-DzA2WwRp.js";
130
+ import { a as getCliSessionId, o as setCliSessionId, s as runCliAgent, t as agentCommand } from "./agent-D-r1jDDr.js";
131
131
  import { s as loadAgentIdentityFromWorkspace } from "./agents.config-CqfMQEiy.js";
132
132
  import "./dm-policy-shared-BtrdvOIT.js";
133
133
  import "./node-service-CZlyWmxa.js";
@@ -12046,7 +12046,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
12046
12046
  });
12047
12047
  let glassUiBridgeCleanup = null;
12048
12048
  if (!minimalTestGateway) {
12049
- const { createGlassUiBridge } = await import("./glass-ui-ws-BbO6e3iI.js");
12049
+ const { createGlassUiBridge } = await import("./glass-ui-ws-Bn9B5Ac_.js");
12050
12050
  glassUiBridgeCleanup = createGlassUiBridge({
12051
12051
  wss: glassUiWss,
12052
12052
  context: gatewayRequestContext,
@@ -1,4 +1,4 @@
1
- import { $ as isExternalHookSession, $t as emitAgentEvent, A as resolveSessionDeliveryTarget, At as resolveInputFileLimits, B as normalizeOptionalSessionKey, Bt as countActiveDescendantRuns, Cn as CommandLane, Ct as DEFAULT_INPUT_IMAGE_MAX_BYTES, Dn as runWithModelFallback, Dt as extractFileContentFromSource, Et as DEFAULT_INPUT_TIMEOUT_MS, F as normalizeHttpWebhookUrl, G as buildDeliveryFromLegacyPayload, H as normalizePayloadToSystemText, Ht as initSubagentRegistry, Jt as readLatestAssistantReply, K as hasLegacyDeliveryHints, Kt as resolveAgentTimeoutMs, N as resetDirectoryCache, O as resolveOutboundSessionRoute, Ot as extractImageContentFromSource, Q as getHookType, Qt as clearAgentRunContext, R as inferLegacyName, S as createSymiTools, Sn as waitForActiveTasks, T as resolveAnnounceTargetFromKey, Tn as resolveModelProfile, Tt as DEFAULT_INPUT_MAX_REDIRECTS, U as normalizeRequiredName, Ut as listDescendantRunsForRequester, V as normalizeOptionalText, Vt as countActiveRunsForSession, W as migrateLegacyCronPayload, X as buildSafeExternalPrompt, Z as detectSuspiciousPatterns, a as getPluginToolMeta, an as getActiveEmbeddedRunCount, at as isGatewaySigusr1RestartExternallyAllowed, bn as resetAllLanes, c as handleSlackHttpRequest, cn as registerUnhandledRejectionHandler, ct as setGatewaySigusr1RestartPolicy, d as buildHistoryContextFromEntries, dn as formatUserTime, en as getAgentRunContext, fn as resolveUserTimeFormat, h as getTotalPendingReplies, it as emitGatewayRestart, k as resolveOutboundTarget, kt as normalizeMimeList, l as readJsonBodyWithLimit, ln as ToolInputError, lt as setPreRestartDeferralCheck, n as applyToolPolicyPipeline, nn as registerAgentRunContext, nt as consumeGatewaySigusr1RestartAuthorization, ot as markGatewaySigusr1RestartHandled, pn as resolveUserTimezone, q as stripLegacyDeliveryFields, qt as runSubagentAnnounceFlow, r as buildDefaultToolPolicyPipelineSteps, rt as deferGatewayRestartUntilIdle, s as loadSymiPlugins, t as runAgentTurn, tn as onAgentEvent, u as requestBodyErrorToText, vn as getActiveTaskCount, wn as classifyOutboundMessage, wt as DEFAULT_INPUT_IMAGE_MIMES, xn as setCommandLaneConcurrency, yn as getTotalQueueSize, z as normalizeOptionalAgentId } from "./unified-runner-BwcHrhjo.js";
1
+ import { $ as isExternalHookSession, $t as emitAgentEvent, A as resolveSessionDeliveryTarget, At as resolveInputFileLimits, B as normalizeOptionalSessionKey, Bt as countActiveDescendantRuns, Cn as CommandLane, Ct as DEFAULT_INPUT_IMAGE_MAX_BYTES, Dn as runWithModelFallback, Dt as extractFileContentFromSource, Et as DEFAULT_INPUT_TIMEOUT_MS, F as normalizeHttpWebhookUrl, G as buildDeliveryFromLegacyPayload, H as normalizePayloadToSystemText, Ht as initSubagentRegistry, Jt as readLatestAssistantReply, K as hasLegacyDeliveryHints, Kt as resolveAgentTimeoutMs, N as resetDirectoryCache, O as resolveOutboundSessionRoute, Ot as extractImageContentFromSource, Q as getHookType, Qt as clearAgentRunContext, R as inferLegacyName, S as createSymiTools, Sn as waitForActiveTasks, T as resolveAnnounceTargetFromKey, Tn as resolveModelProfile, Tt as DEFAULT_INPUT_MAX_REDIRECTS, U as normalizeRequiredName, Ut as listDescendantRunsForRequester, V as normalizeOptionalText, Vt as countActiveRunsForSession, W as migrateLegacyCronPayload, X as buildSafeExternalPrompt, Z as detectSuspiciousPatterns, a as getPluginToolMeta, an as getActiveEmbeddedRunCount, at as isGatewaySigusr1RestartExternallyAllowed, bn as resetAllLanes, c as handleSlackHttpRequest, cn as registerUnhandledRejectionHandler, ct as setGatewaySigusr1RestartPolicy, d as buildHistoryContextFromEntries, dn as formatUserTime, en as getAgentRunContext, fn as resolveUserTimeFormat, h as getTotalPendingReplies, it as emitGatewayRestart, k as resolveOutboundTarget, kt as normalizeMimeList, l as readJsonBodyWithLimit, ln as ToolInputError, lt as setPreRestartDeferralCheck, n as applyToolPolicyPipeline, nn as registerAgentRunContext, nt as consumeGatewaySigusr1RestartAuthorization, ot as markGatewaySigusr1RestartHandled, pn as resolveUserTimezone, q as stripLegacyDeliveryFields, qt as runSubagentAnnounceFlow, r as buildDefaultToolPolicyPipelineSteps, rt as deferGatewayRestartUntilIdle, s as loadSymiPlugins, t as runAgentTurn, tn as onAgentEvent, u as requestBodyErrorToText, vn as getActiveTaskCount, wn as classifyOutboundMessage, wt as DEFAULT_INPUT_IMAGE_MIMES, xn as setCommandLaneConcurrency, yn as getTotalQueueSize, z as normalizeOptionalAgentId } from "./unified-runner-C8BedLLT.js";
2
2
  import { A as isRich, E as setVerbose, H as createInternalHookEvent, M as getChildLogger, N as getLogger, P as getResolvedLoggerSettings, U as registerInternalHook, V as clearInternalHooks, W as triggerInternalHook, j as theme, k as colorize, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL } from "./registry-Sbac4a4z.js";
3
3
  import { _ as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort, v as expandHomePrefix } from "./paths-By0XjHBk.js";
4
4
  import { h as resolveUserPath, s as ensureDir, t as CONFIG_DIR, v as shortenHomePath, x as truncateUtf16Safe } from "./utils-CTPsqyE_.js";
@@ -58,8 +58,8 @@ import { c as hasNonzeroUsage, s as deriveSessionTotalTokens } from "./session-c
58
58
  import { C as enqueueSystemEvent, a as loadCombinedSessionStoreForGateway, f as formatRestartSentinelMessage, i as listSessionsFromStore, m as summarizeRestartSentinel, o as loadSessionEntry, u as consumeRestartSentinel, x as lookupContextTokens } from "./session-utils-Cs1jlD-q.js";
59
59
  import { r as getMachineDisplayName } from "./with-timeout-DPR4A2dx.js";
60
60
  import { a as resolveAgentIdentity } from "./reply-prefix-BFNeXT65.js";
61
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-CH-8Z7r7.js";
62
- import { c as resolveMemorySearchConfig } from "./manager-Dq705UbH.js";
61
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-BLluF2i6.js";
62
+ import { c as resolveMemorySearchConfig } from "./manager-DjgKz80p.js";
63
63
  import "./sqlite-Cod7C5ba.js";
64
64
  import "./chunk-BxfKjCUx.js";
65
65
  import "./markdown-tables-CS1Tvb3z.js";
@@ -92,7 +92,7 @@ import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
92
92
  import { n as runCommandWithRuntime } from "./cli-utils-CuyGL3rq.js";
93
93
  import { t as formatHelpExamples } from "./help-format-7hFcsqss.js";
94
94
  import { n as withProgress } from "./progress-swt2y17x.js";
95
- import "./memory-cli-M6FiqgSK.js";
95
+ import "./memory-cli-DQTznta7.js";
96
96
  import "./logging-BWknayJl.js";
97
97
  import "./replies-CbXXjn9X.js";
98
98
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-H2t-Xkfc.js";
@@ -124,15 +124,15 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
124
124
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-1xPo9ygd.js";
125
125
  import { c as resolveNodeCommandAllowlist, l as probeGateway, n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./audit-C_3fAFeS.js";
126
126
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-CWTnBKX8.js";
127
- import { r as pickGatewaySelfPresence } from "./status-Ep2Jr3PX.js";
127
+ import { r as pickGatewaySelfPresence } from "./status-BJK_HWiE.js";
128
128
  import { i as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-7UqIGG8U.js";
129
129
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CJQ97d4u.js";
130
130
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-BCL_K7kx.js";
131
- import { t as runOnboardingWizard } from "./onboarding-CT9WoHsY.js";
132
- import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-JJSJ-f4L.js";
133
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-CgOg6uMk.js";
131
+ import { t as runOnboardingWizard } from "./onboarding-B1NNMstX.js";
132
+ import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-DF_vhByu.js";
133
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-MTIWc9yH.js";
134
134
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CGaQ7-Vb.js";
135
- import { a as getCliSessionId, o as setCliSessionId, s as runCliAgent, t as agentCommand } from "./agent-CDO1qw1v.js";
135
+ import { a as getCliSessionId, o as setCliSessionId, s as runCliAgent, t as agentCommand } from "./agent-BTGl36fO.js";
136
136
  import { t as createOutboundSendDeps } from "./outbound-send-deps--SpwgFhS.js";
137
137
  import { s as loadAgentIdentityFromWorkspace } from "./agents.config-B7sNDvhz.js";
138
138
  import "./dm-policy-shared-CeFt0nch.js";
@@ -12051,7 +12051,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
12051
12051
  });
12052
12052
  let glassUiBridgeCleanup = null;
12053
12053
  if (!minimalTestGateway) {
12054
- const { createGlassUiBridge } = await import("./glass-ui-ws-5qfhLxPm.js");
12054
+ const { createGlassUiBridge } = await import("./glass-ui-ws-BLTXXspr.js");
12055
12055
  glassUiBridgeCleanup = createGlassUiBridge({
12056
12056
  wss: glassUiWss,
12057
12057
  context: gatewayRequestContext,
@@ -1,4 +1,4 @@
1
- import { Tn as resolveModelProfile } from "./unified-runner-BwcHrhjo.js";
1
+ import { Tn as resolveModelProfile } 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";
@@ -101,13 +101,13 @@ import "./service-e6MzlLCd.js";
101
101
  import "./diagnostics-DlZODdRf.js";
102
102
  import "./table-0A3xKJVC.js";
103
103
  import "./audit-C_3fAFeS.js";
104
- import "./status-Ep2Jr3PX.js";
104
+ import "./status-BJK_HWiE.js";
105
105
  import "./health-7UqIGG8U.js";
106
106
  import "./control-ui-assets-CJQ97d4u.js";
107
107
  import "./update-check-BCL_K7kx.js";
108
- import { n as handleGatewayRequest } from "./server-methods-JJSJ-f4L.js";
109
- import "./push-apns-CgOg6uMk.js";
110
- import "./agent-CDO1qw1v.js";
108
+ import { n as handleGatewayRequest } from "./server-methods-DF_vhByu.js";
109
+ import "./push-apns-MTIWc9yH.js";
110
+ import "./agent-BTGl36fO.js";
111
111
  import "./agents.config-B7sNDvhz.js";
112
112
  import "./dm-policy-shared-CeFt0nch.js";
113
113
  import "./node-service-BH08wY5j.js";
@@ -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 { M as resolveModelProfile } from "./subagent-registry-BV3-ydad.js";
20
+ import { M as resolveModelProfile } 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";
@@ -95,14 +95,14 @@ import "./service-DYpU1ajf.js";
95
95
  import "./diagnostics-D2oNwzue.js";
96
96
  import "./table-D0JXlEhQ.js";
97
97
  import "./audit-DyncRBKq.js";
98
- import "./status-B4t6u9nZ.js";
98
+ import "./status-C43mMdxl.js";
99
99
  import "./health-Dkwuq8ta.js";
100
100
  import "./outbound-send-deps-BCyarBRf.js";
101
101
  import "./control-ui-assets-Dnz69KRU.js";
102
102
  import "./update-check-DLOnLuop.js";
103
- import { n as handleGatewayRequest } from "./server-methods-DqMh81yf.js";
104
- import "./push-apns-MzhuZXok.js";
105
- import "./agent-DzA2WwRp.js";
103
+ import { n as handleGatewayRequest } from "./server-methods-fT02jJUv.js";
104
+ import "./push-apns-BzR8krCb.js";
105
+ import "./agent-D-r1jDDr.js";
106
106
  import "./agents.config-CqfMQEiy.js";
107
107
  import "./dm-policy-shared-BtrdvOIT.js";
108
108
  import "./node-service-CZlyWmxa.js";