@symerian/symi 3.5.26 → 3.5.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/{agent-CoHzNs_e.js → agent-DxRVDqSg.js} +18 -18
  2. package/dist/{agent-scope-Bnsyyeci.js → agent-scope-DOrZjOnW.js} +18 -18
  3. package/dist/{agents.config-DA0ISLi7.js → agents.config-B7sNDvhz.js} +1 -1
  4. package/dist/{audit-CuwXq_EA.js → audit-C_3fAFeS.js} +20 -20
  5. package/dist/{auth-choice-DKRHawfp.js → auth-choice-DQplW60s.js} +11 -11
  6. package/dist/{auth-profiles-D5nYBj_Z.js → auth-profiles-Ce7R_25e.js} +2 -2
  7. package/dist/{auth-token-fgnCQEHT.js → auth-token-Cr28IDKY.js} +3 -3
  8. package/dist/{browser-cli-BI81RlI8.js → browser-cli-D6xFqw9w.js} +9 -9
  9. package/dist/build-info.json +3 -3
  10. package/dist/bundled/boot-md/handler.js +4 -4
  11. package/dist/bundled/session-memory/handler.js +4 -4
  12. package/dist/{call-xUpyZDH4.js → call-AZ9vNhST.js} +9 -9
  13. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  14. package/dist/{channel-options-vjcKi2yl.js → channel-options-DnWkDAWi.js} +1 -1
  15. package/dist/{channels-cli-CfBFa-VO.js → channels-cli-CGCyzahW.js} +57 -57
  16. package/dist/{chrome-38OnGyuN.js → chrome-DJChpTwP.js} +2 -2
  17. package/dist/{chrome-CmQwGAuL.js → chrome-OTJg3QKn.js} +7 -7
  18. package/dist/{cli-qf0qK7oi.js → cli-DZAtyHzb.js} +45 -45
  19. package/dist/{client-DiPa71im.js → client-DH75FlQF.js} +1 -1
  20. package/dist/{commands-registry-CwXsDVuO.js → commands-registry-Ca5hh7nh.js} +1 -1
  21. package/dist/{completion-cli-Ddfrnilx.js → completion-cli-Cbf0-8ob.js} +12 -12
  22. package/dist/{config-BngIfn5l.js → config-B4jkreCN.js} +2 -2
  23. package/dist/{config-cli-JVGYyfYA.js → config-cli-D4RmoOxe.js} +4 -4
  24. package/dist/{config-guard-DStz4_V2.js → config-guard-BRm3RiOi.js} +6 -6
  25. package/dist/{config-validation-Dxj9LRzr.js → config-validation-Cdyg1BZB.js} +1 -1
  26. package/dist/{configure-Bqz2Hvnf.js → configure-kaf3aurx.js} +14 -14
  27. package/dist/{consolidate-CO32_TEx.js → consolidate-DymnvvYm.js} +6 -6
  28. package/dist/{control-service-CUreKVeY.js → control-service-D8kKOts5.js} +4 -4
  29. package/dist/control-ui/css/style.css +159 -0
  30. package/dist/{control-ui-assets-B8B9z_Ll.js → control-ui-assets-CJQ97d4u.js} +1 -1
  31. package/dist/{cost-cli-D-ssjcRF.js → cost-cli-DWiVCOCx.js} +3 -3
  32. package/dist/{cron-cli-pZ_7Wzhj.js → cron-cli-VH_t2D1o.js} +7 -7
  33. package/dist/{daemon-cli-BDzcfcu_.js → daemon-cli-3PFXkheJ.js} +11 -11
  34. package/dist/{daemon-runtime-CKn0wmCk.js → daemon-runtime-DlQla_dA.js} +10 -10
  35. package/dist/{deliver-B04yNX82.js → deliver-BiWlR84Y.js} +4 -4
  36. package/dist/{deliver-CWMFmMCv.js → deliver-lTZLIQqf.js} +2 -2
  37. package/dist/{deps-CdibsPMx.js → deps-Bf9dt2UO.js} +1 -1
  38. package/dist/{devices-cli-BIZbo_Pt.js → devices-cli-Bhi1rWnT.js} +6 -6
  39. package/dist/{diagnostics-CYkqD5lP.js → diagnostics-DlZODdRf.js} +5 -5
  40. package/dist/{directory-cli-giqTe8Yg.js → directory-cli-Bm5QYEo-.js} +3 -3
  41. package/dist/{dm-policy-shared-B61_yf6G.js → dm-policy-shared-CeFt0nch.js} +1 -1
  42. package/dist/{dns-cli-Dssz4RqF.js → dns-cli-CubLq4j9.js} +3 -3
  43. package/dist/{docs-cli-Ct1STieY.js → docs-cli-PS8m1er7.js} +1 -1
  44. package/dist/{doctor-completion-eh7aImCx.js → doctor-completion--j-3qqz6.js} +2 -2
  45. package/dist/{doctor-config-flow-ljVnQJjo.js → doctor-config-flow-C52W1uUK.js} +9 -9
  46. package/dist/{exec-approvals-cli-B2UY9dZC.js → exec-approvals-cli-xTOKcyZh.js} +13 -13
  47. package/dist/{file-lock-2AecMjCa.js → file-lock-BVUYnlQv.js} +8 -8
  48. package/dist/{fs-safe-B0Is-oLk.js → fs-safe-BdejYjW8.js} +6 -6
  49. package/dist/{gateway-cli-BwPy7u0B.js → gateway-cli-B3FuQctH.js} +98 -98
  50. package/dist/{gateway-rpc-DmFOiGIJ.js → gateway-rpc-C6lKFbor.js} +1 -1
  51. package/dist/{glass-ui-ws-CwOiILiY.js → glass-ui-ws-BJcI_IdV.js} +67 -67
  52. package/dist/{health-Bc1wmAO5.js → health-7UqIGG8U.js} +4 -4
  53. package/dist/{hooks-cli-DOjHV2fF.js → hooks-cli-D43GEG-W.js} +59 -59
  54. package/dist/{image-ops-BzCBIakN.js → image-ops-L70xVnpG.js} +10 -10
  55. package/dist/index.js +52 -52
  56. package/dist/{inspect-DzYUb_Dl.js → inspect-CGKsaVZ4.js} +4 -4
  57. package/dist/{install-safe-path-BrpA09f2.js → install-safe-path-B2JrFspY.js} +11 -11
  58. package/dist/{installs-bnDlOSq2.js → installs-D890uIIW.js} +10 -10
  59. package/dist/{internal-csqU78gW.js → internal-DVCddhhN.js} +9 -9
  60. package/dist/{lifecycle-core-cSR_xiIO.js → lifecycle-core-wFwnK_mD.js} +5 -5
  61. package/dist/llm-slug-generator.js +4 -4
  62. package/dist/{local-roots-2Jb79HZ8.js → local-roots-CgDCgCuM.js} +1 -1
  63. package/dist/{logs-cli-CYFlhj51.js → logs-cli-BTU7zrkU.js} +7 -7
  64. package/dist/{manager-DuWp0CTD.js → manager-Cw7IJGbB.js} +15 -15
  65. package/dist/{manager-F0-SHT1B.js → manager-DbVMwpDc.js} +1 -1
  66. package/dist/{memory-fFc7GGPZ.js → memory-BZ24UkLW.js} +5 -5
  67. package/dist/{memory-cli-BnBKckEk.js → memory-cli-0HHYm-B8.js} +12 -12
  68. package/dist/{model-Cwbcw-km.js → model-MUMSB_7d.js} +1 -1
  69. package/dist/{model-auth-_C07_3Yr.js → model-auth-1EAQvYRv.js} +2 -2
  70. package/dist/{model-catalog-BWurV7gl.js → model-catalog-IWi6-nY9.js} +3 -3
  71. package/dist/{model-picker-Dpkr5xBW.js → model-picker-Cf6UgQEh.js} +5 -5
  72. package/dist/{model-selection-CCTzD29o.js → model-selection-7wdmO-Iw.js} +1 -1
  73. package/dist/{models-cli-DVdb_TUS.js → models-cli-C2EXmrYH.js} +55 -55
  74. package/dist/{models-config-DlXge3Sd.js → models-config-B5Xxy-c-.js} +8 -8
  75. package/dist/{node-cli-B0ePfMUr.js → node-cli-CWbA6YCw.js} +27 -27
  76. package/dist/{node-service-Cc18m-uk.js → node-service-BH08wY5j.js} +1 -1
  77. package/dist/{nodes-cli-L0gy-26E.js → nodes-cli-BfHcv62i.js} +10 -10
  78. package/dist/{nodes-screen-Cp5QP3ET.js → nodes-screen-De9ma6e1.js} +4 -4
  79. package/dist/{npm-registry-spec-C-muP97-.js → npm-registry-spec-DTqn-NXZ.js} +9 -9
  80. package/dist/{onboard-D6GZ2t-L.js → onboard-DnwWawQO.js} +15 -15
  81. package/dist/{onboard-channels-DVS9vciR.js → onboard-channels-qDThNkyj.js} +4 -4
  82. package/dist/{onboard-custom-DnDrvxSg.js → onboard-custom-BcRYreNG.js} +3 -3
  83. package/dist/{onboard-helpers-CJlheOSJ.js → onboard-helpers-7IGQ8nAM.js} +8 -8
  84. package/dist/{onboard-hooks-D9jHwImb.js → onboard-hooks-2SCajRKc.js} +1 -1
  85. package/dist/{onboard-remote-CVZ8l58S.js → onboard-remote-Dr75eqOQ.js} +1 -1
  86. package/dist/{onboard-skills-MgcaLiE6.js → onboard-skills-uO7HZwjc.js} +3 -3
  87. package/dist/{onboarding-D-mzwQ_f.js → onboarding-DxZAGVkD.js} +12 -12
  88. package/dist/{onboarding.finalize-DBFL76p0.js → onboarding.finalize-Dt-rcgpk.js} +31 -31
  89. package/dist/{onboarding.gateway-config-BCDgsFl8.js → onboarding.gateway-config-CkP7K4EN.js} +8 -8
  90. package/dist/{openai-model-default-De-UAjwg.js → openai-model-default-BkuuK-Di.js} +2 -2
  91. package/dist/{pairing-cli-CBMMCNnx.js → pairing-cli-Rsae0KnN.js} +5 -5
  92. package/dist/{pairing-store-Be-ZQK87.js → pairing-store-BNhJOnWn.js} +1 -1
  93. package/dist/{pairing-token-B703A1U3.js → pairing-token-Dcy37-4s.js} +7 -7
  94. package/dist/{paths-BWqg8NZT.js → paths-DObzwe08.js} +1 -1
  95. package/dist/{pi-auth-json-D-vdh-nY.js → pi-auth-json-Db8XJVGL.js} +6 -6
  96. package/dist/{pi-embedded-helpers-j1JrlsI0.js → pi-embedded-helpers-D-OFjhdI.js} +6 -6
  97. package/dist/{pi-tools.policy-CvAqjEH9.js → pi-tools.policy-H2t-Xkfc.js} +3 -3
  98. package/dist/{plugin-auto-enable-BXSJTxI7.js → plugin-auto-enable-DJBhDIMq.js} +1 -1
  99. package/dist/{plugin-registry-KP94aK4z.js → plugin-registry-D2_TLnOr.js} +3 -3
  100. package/dist/{plugins-cli-B4ljapU5.js → plugins-cli-CqV1Q7ao.js} +54 -54
  101. package/dist/{ports-CB_Iu83U.js → ports-gxLM5ahL.js} +2 -2
  102. package/dist/{ports-Bi3V_3n9.js → ports-r7LBic2V.js} +1 -1
  103. package/dist/{program-context-BzqGUxMS.js → program-context-B0ovpbFU.js} +40 -40
  104. package/dist/{prompt-select-styled-BVkRteee.js → prompt-select-styled-B5GrNfqR.js} +38 -38
  105. package/dist/{provider-auth-helpers-C6GjAO-s.js → provider-auth-helpers-DU8RlQz7.js} +6 -6
  106. package/dist/{push-apns-CbbWM63o.js → push-apns-CyAPMMJC.js} +4 -4
  107. package/dist/{pw-ai-CP5pn3eU.js → pw-ai-BiBvIJzd.js} +7 -7
  108. package/dist/{pw-ai-DLsdzdgc.js → pw-ai-DY_6l11g.js} +1 -1
  109. package/dist/{qmd-manager-Dxyue7B1.js → qmd-manager-C8-M4Pru.js} +19 -19
  110. package/dist/{qr-cli-DHw6muwK.js → qr-cli-1sCVaPcF.js} +3 -3
  111. package/dist/{register.agent-DhS2lmWo.js → register.agent-BKbQhrre.js} +67 -67
  112. package/dist/{register.configure-ChjzXxh8.js → register.configure-C4_ShaQV.js} +70 -70
  113. package/dist/{register.maintenance-frHWf6Xs.js → register.maintenance-BOYWTu9C.js} +67 -67
  114. package/dist/{register.message-DWB4eVII.js → register.message-BtCthbpo.js} +47 -47
  115. package/dist/{register.onboard-4P8ud4Sw.js → register.onboard-D5GmuX8K.js} +25 -25
  116. package/dist/{register.setup-D0I7sEGc.js → register.setup-DzospfSf.js} +28 -28
  117. package/dist/{register.status-health-sessions-69Gigo_H.js → register.status-health-sessions-NVbWTQpZ.js} +41 -41
  118. package/dist/{replies-B_3j7R_Q.js → replies-CbXXjn9X.js} +1 -1
  119. package/dist/{reply-prefix-CtZtkTJK.js → reply-prefix-BFNeXT65.js} +1 -1
  120. package/dist/{resolve-route-Du0VftVs.js → resolve-route-C1IIA6kH.js} +1 -1
  121. package/dist/{routes-BwTUoI5h.js → routes-ivqbutvM.js} +10 -10
  122. package/dist/{rpc-DTqyJZKO.js → rpc-B1czfnym.js} +1 -1
  123. package/dist/{sandbox-CZGTCone.js → sandbox-BkznAPKO.js} +18 -18
  124. package/dist/{sandbox-cli-DEtGT_4y.js → sandbox-cli-Bb9cBtBH.js} +13 -13
  125. package/dist/{security-cli-iJpHPABF.js → security-cli-l59T6lAJ.js} +29 -29
  126. package/dist/{send-CxjvucMO.js → send-B0jHSNMF.js} +7 -7
  127. package/dist/{server-context-DXdk410X.js → server-context-ChcbJgNo.js} +5 -5
  128. package/dist/{server-methods-DHWxmfIu.js → server-methods-Bl41VzMu.js} +60 -60
  129. package/dist/{server-node-events-DHSiqnRS.js → server-node-events-CxYKzrbU.js} +48 -48
  130. package/dist/{service-CRZoXO_n.js → service-e6MzlLCd.js} +15 -15
  131. package/dist/{session-dirs-a00Ad2SO.js → session-dirs-C9E2G0yZ.js} +2 -2
  132. package/dist/{session-utils-CJhcRx3E.js → session-utils-Cs1jlD-q.js} +14 -14
  133. package/dist/{sessions-BCc3THTm.js → sessions-Dxf5Kjig.js} +10 -10
  134. package/dist/{shared-C39SiDDJ.js → shared-1xPo9ygd.js} +1 -1
  135. package/dist/{shared-Dh-O8nRd.js → shared-COtpr3Ad.js} +3 -3
  136. package/dist/{skill-commands-DWvXs3lz.js → skill-commands-DDGGlq68.js} +4 -4
  137. package/dist/{skill-scanner-CIlHPszT.js → skill-scanner-BCgVcIwi.js} +5 -5
  138. package/dist/{skills-CYcBtLGH.js → skills-BwDmcZdt.js} +4 -4
  139. package/dist/{skills-cli-CD9s3cgm.js → skills-cli-B-7TY-vS.js} +7 -7
  140. package/dist/{skills-install-BTa9IuQ6.js → skills-install-Dwzsjoc8.js} +3 -3
  141. package/dist/{skills-remote-BcRQTDsZ.js → skills-remote-bz71Bstn.js} +3 -3
  142. package/dist/{skills-status-DLnCHUZ2.js → skills-status-BKX1PjCc.js} +1 -1
  143. package/dist/{sqlite-BpogPlQW.js → sqlite-Cod7C5ba.js} +5 -5
  144. package/dist/{status-ISN-LC9F.js → status-D7QX7VDk.js} +23 -23
  145. package/dist/{status-DUbs9rVu.js → status-DrWy5OkC.js} +3 -3
  146. package/dist/{status.update-CKfyV6zw.js → status.update-DGJi0OLl.js} +3 -3
  147. package/dist/{symframe-cli-CPE5nxuJ.js → symframe-cli-BVmRLRid.js} +9 -9
  148. package/dist/{symi-root-DeCVdZB4.js → symi-root-BQ0IpoW2.js} +2 -2
  149. package/dist/{synthesis-CDPVZw2P.js → synthesis-CO5pr92g.js} +4 -4
  150. package/dist/{synthesis-DkHCk0El.js → synthesis-ts2nG0tK.js} +45 -45
  151. package/dist/{system-cli-nWJwLo85.js → system-cli-Du1GEeoO.js} +7 -7
  152. package/dist/{systemd-CsoVnIbM.js → systemd-CUIM0n5P.js} +5 -5
  153. package/dist/{systemd-hints-QISwLlFU.js → systemd-hints-CsrzMCTD.js} +6 -6
  154. package/dist/{systemd-linger-BnhuRdbt.js → systemd-linger-BzYk7A6M.js} +1 -1
  155. package/dist/{tui-ZL7IGA7l.js → tui-B2MY6Mj2.js} +7 -7
  156. package/dist/{tui-cli-CEpMtmhP.js → tui-cli-BMEnosW9.js} +19 -19
  157. package/dist/{unified-runner-CsadjpQa.js → unified-runner-4O0ifBsI.js} +101 -101
  158. package/dist/{unified-runner-Cppo8O8z.js → unified-runner-O3qR5Iie.js} +10 -10
  159. package/dist/{update-check-u6Jgr1cz.js → update-check-BCL_K7kx.js} +5 -5
  160. package/dist/{update-cli-48-Nah-Y.js → update-cli-BMURsYJU.js} +77 -77
  161. package/dist/{update-runner-G2YgEATs.js → update-runner-BLV8SI96.js} +15 -15
  162. package/dist/{update-Cb0Fmxic.js → update-yYduAjKd.js} +3 -3
  163. package/dist/{webhooks-cli-DjUITimx.js → webhooks-cli-D5k-Y2A8.js} +4 -4
  164. package/dist/{with-timeout-CLrF-Yr_.js → with-timeout-DPR4A2dx.js} +1 -1
  165. package/dist/{workspace-dirs-DCICLTHx.js → workspace-dirs-jKFQf7of.js} +1 -1
  166. package/dist/{wsl-DTi7eX-V.js → wsl-CglTdtlb.js} +2 -2
  167. package/extensions/memory-core/package.json +1 -1
  168. package/extensions/msteams/CHANGELOG.md +6 -0
  169. package/extensions/msteams/package.json +1 -1
  170. package/extensions/open-prose/package.json +1 -1
  171. package/extensions/outlook/package.json +1 -1
  172. package/extensions/slack/package.json +1 -1
  173. package/package.json +1 -1
@@ -2,10 +2,10 @@ import "./registry-Sbac4a4z.js";
2
2
  import "./paths-By0XjHBk.js";
3
3
  import "./utils-CTPsqyE_.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
5
- import { l as parseEmbedding, r as cosineSimilarity } from "./internal-csqU78gW.js";
5
+ import { l as parseEmbedding, r as cosineSimilarity } from "./internal-DVCddhhN.js";
6
6
  import crypto from "node:crypto";
7
7
  import path from "node:path";
8
- import fsPromises from "node:fs/promises";
8
+ import fs from "node:fs/promises";
9
9
 
10
10
  //#region src/memory/consolidate.ts
11
11
  const log = createSubsystemLogger("memory/consolidate");
@@ -346,7 +346,7 @@ async function stagePromote(params) {
346
346
  };
347
347
  const now = params.now ?? Date.now();
348
348
  const memoryDir = path.join(params.workspaceDir, "memory");
349
- await fsPromises.mkdir(memoryDir, { recursive: true }).catch(() => {});
349
+ await fs.mkdir(memoryDir, { recursive: true }).catch(() => {});
350
350
  const corePath = path.join(memoryDir, "symi-core.md");
351
351
  const beliefsPath = path.join(memoryDir, "symi-beliefs.md");
352
352
  params.db.prepare(`UPDATE chunks SET promoted_to = NULL WHERE promoted_to = ?`).run(SYMI_CORE_PATH);
@@ -386,7 +386,7 @@ async function stagePromote(params) {
386
386
  sections: sectionLines,
387
387
  now
388
388
  });
389
- await fsPromises.writeFile(corePath, symiCoreContent, "utf-8");
389
+ await fs.writeFile(corePath, symiCoreContent, "utf-8");
390
390
  const merged = mergeBeliefs({
391
391
  existing: await readExistingBeliefs(beliefsPath),
392
392
  fresh: params.synthesizedBeliefs ?? [],
@@ -396,7 +396,7 @@ async function stagePromote(params) {
396
396
  beliefs: merged,
397
397
  now
398
398
  });
399
- await fsPromises.writeFile(beliefsPath, symiBeliefsContent, "utf-8");
399
+ await fs.writeFile(beliefsPath, symiBeliefsContent, "utf-8");
400
400
  log.debug("consolidate.promote", {
401
401
  promoted,
402
402
  sections: CORE_SECTIONS.length,
@@ -596,7 +596,7 @@ function mergeBeliefs(params) {
596
596
  return [...byHash.values()].toSorted((a, b) => b.confidence - a.confidence).slice(0, params.cap);
597
597
  }
598
598
  async function readExistingBeliefs(filePath) {
599
- const content = await fsPromises.readFile(filePath, "utf-8").catch(() => "");
599
+ const content = await fs.readFile(filePath, "utf-8").catch(() => "");
600
600
  if (!content) return [];
601
601
  const out = [];
602
602
  for (const rawLine of content.split("\n")) {
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
3
- import { i as loadConfig } from "./config-BngIfn5l.js";
4
- import { x as ensureChromeExtensionRelayServer } from "./chrome-38OnGyuN.js";
5
- import { a as resolveProfile, i as resolveBrowserConfig, n as listKnownProfileNames, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-DXdk410X.js";
3
+ import { i as loadConfig } from "./config-B4jkreCN.js";
4
+ import { x as ensureChromeExtensionRelayServer } from "./chrome-DJChpTwP.js";
5
+ import { a as resolveProfile, i as resolveBrowserConfig, n as listKnownProfileNames, p as ensureBrowserControlAuth, t as createBrowserRouteContext } from "./server-context-ChcbJgNo.js";
6
6
 
7
7
  //#region src/browser/server-lifecycle.ts
8
8
  async function ensureExtensionRelayForProfiles(params) {
@@ -80,7 +80,7 @@ async function stopBrowserControlService() {
80
80
  });
81
81
  state = null;
82
82
  try {
83
- await (await import("./pw-ai-CP5pn3eU.js")).closePlaywrightBrowserConnection();
83
+ await (await import("./pw-ai-BiBvIJzd.js")).closePlaywrightBrowserConnection();
84
84
  } catch {}
85
85
  }
86
86
 
@@ -1656,6 +1656,165 @@ body {
1656
1656
  box-shadow: 0 0 8px rgba(0, 212, 255, 0.18);
1657
1657
  }
1658
1658
 
1659
+ /* ── Stage D.1 (3.5.27): intent-aware visual treatment ──────────── */
1660
+ /* The data-intent attribute has been on every card since Stage A but
1661
+ was metadata only. Stage D.1 makes the agent's mental categorization
1662
+ visible: each intent gets a distinct color stripe running down the
1663
+ left edge of the card + a small corner ribbon at the top-left with
1664
+ the intent label. Some intents add subtle behavior (producing
1665
+ pulses; drafted emphasizes action buttons; reference desaturates).
1666
+
1667
+ No JS changes — purely a CSS layer on top of the existing
1668
+ .symframe-card-dynamic[data-intent="..."] hook. */
1669
+
1670
+ /* Base treatment shared across all intents: the left stripe is via
1671
+ inset box-shadow so it doesn't disturb the card's border-radius.
1672
+ The ribbon is via ::before pseudo-element at the top-left corner.
1673
+ Cards without data-intent (legacy / pre-Stage-A pushes) get neither. */
1674
+
1675
+ .symframe-card-dynamic[data-intent]::before {
1676
+ content: attr(data-intent);
1677
+ position: absolute;
1678
+ top: 0;
1679
+ left: 0;
1680
+ padding: 2px 8px 2px 6px;
1681
+ font-family: var(--font-mono);
1682
+ font-size: 8px;
1683
+ font-weight: 700;
1684
+ letter-spacing: 0.14em;
1685
+ text-transform: uppercase;
1686
+ background: rgba(0, 0, 0, 0.55);
1687
+ border-radius: 10px 0 6px 0;
1688
+ border-right: 1px solid currentColor;
1689
+ border-bottom: 1px solid currentColor;
1690
+ pointer-events: none;
1691
+ z-index: 2;
1692
+ opacity: 0.85;
1693
+ }
1694
+ /* Reset the base card-padding so the ribbon hugs the corner */
1695
+ .symframe-card-dynamic[data-intent] {
1696
+ /* Slight top padding so the ribbon doesn't crowd the title */
1697
+ padding-top: 22px;
1698
+ }
1699
+
1700
+ /* holding — cyan; working memory */
1701
+ .symframe-card-dynamic[data-intent="holding"] {
1702
+ box-shadow:
1703
+ inset 3px 0 0 0 rgba(0, 212, 255, 0.65),
1704
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1705
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1706
+ }
1707
+ .symframe-card-dynamic[data-intent="holding"]::before {
1708
+ color: var(--accent-cyan);
1709
+ }
1710
+
1711
+ /* weighing — amber; an option under consideration */
1712
+ .symframe-card-dynamic[data-intent="weighing"] {
1713
+ box-shadow:
1714
+ inset 3px 0 0 0 #f5b73a,
1715
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1716
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1717
+ }
1718
+ .symframe-card-dynamic[data-intent="weighing"]::before {
1719
+ color: #f5b73a;
1720
+ }
1721
+
1722
+ /* producing — green; actively drafting, slow pulse on the stripe */
1723
+ .symframe-card-dynamic[data-intent="producing"] {
1724
+ animation: intent-producing-pulse 2.6s ease-in-out infinite;
1725
+ }
1726
+ @keyframes intent-producing-pulse {
1727
+ 0%,
1728
+ 100% {
1729
+ box-shadow:
1730
+ inset 3px 0 0 0 rgba(52, 211, 153, 0.55),
1731
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1732
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1733
+ }
1734
+ 50% {
1735
+ box-shadow:
1736
+ inset 3px 0 0 0 rgba(52, 211, 153, 1),
1737
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1738
+ 0 4px 12px rgba(0, 0, 0, 0.25),
1739
+ 0 0 14px rgba(52, 211, 153, 0.2);
1740
+ }
1741
+ }
1742
+ .symframe-card-dynamic[data-intent="producing"]::before {
1743
+ content: "● producing";
1744
+ color: #34d399;
1745
+ }
1746
+
1747
+ /* drafted — violet; finished artifact ready for user review */
1748
+ .symframe-card-dynamic[data-intent="drafted"] {
1749
+ box-shadow:
1750
+ inset 3px 0 0 0 #8b5cf6,
1751
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1752
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1753
+ }
1754
+ .symframe-card-dynamic[data-intent="drafted"]::before {
1755
+ color: #8b5cf6;
1756
+ }
1757
+ /* Emphasize action buttons on drafted cards — these cards exist to
1758
+ be acted on (Send / Copy / Open). Make the buttons more clickable. */
1759
+ .symframe-card-dynamic[data-intent="drafted"] .symframe-card-action {
1760
+ border-color: rgba(139, 92, 246, 0.55);
1761
+ color: var(--text);
1762
+ font-weight: 600;
1763
+ }
1764
+ .symframe-card-dynamic[data-intent="drafted"] .symframe-card-action:hover {
1765
+ background: rgba(139, 92, 246, 0.12);
1766
+ border-color: #8b5cf6;
1767
+ }
1768
+ .symframe-card-dynamic[data-intent="drafted"] .symframe-card-action-primary {
1769
+ background: rgba(139, 92, 246, 0.22);
1770
+ border-color: #8b5cf6;
1771
+ color: var(--text);
1772
+ }
1773
+ .symframe-card-dynamic[data-intent="drafted"] .symframe-card-action-primary:hover {
1774
+ background: rgba(139, 92, 246, 0.32);
1775
+ box-shadow: 0 0 10px rgba(139, 92, 246, 0.25);
1776
+ }
1777
+
1778
+ /* reference — muted gray; passive read-only context */
1779
+ .symframe-card-dynamic[data-intent="reference"] {
1780
+ box-shadow:
1781
+ inset 3px 0 0 0 rgba(255, 255, 255, 0.22),
1782
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1783
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1784
+ opacity: 0.88;
1785
+ filter: saturate(0.75);
1786
+ }
1787
+ .symframe-card-dynamic[data-intent="reference"]::before {
1788
+ color: var(--text-dim);
1789
+ }
1790
+
1791
+ /* awaiting — if a card is mistakenly pushed with this intent (it
1792
+ belongs in the AWAITING footer, not the foreground), flag with a
1793
+ pink stripe and a "→ footer" hint so the user/agent notices the
1794
+ miscategorization. */
1795
+ .symframe-card-dynamic[data-intent="awaiting"] {
1796
+ box-shadow:
1797
+ inset 3px 0 0 0 rgba(244, 114, 182, 0.55),
1798
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1799
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1800
+ }
1801
+ .symframe-card-dynamic[data-intent="awaiting"]::before {
1802
+ content: "awaiting → footer";
1803
+ color: rgba(244, 114, 182, 0.85);
1804
+ }
1805
+
1806
+ /* Reduced-motion: skip the producing pulse but keep the static
1807
+ green stripe so the intent is still visible. */
1808
+ @media (prefers-reduced-motion: reduce) {
1809
+ .symframe-card-dynamic[data-intent="producing"] {
1810
+ animation: none;
1811
+ box-shadow:
1812
+ inset 3px 0 0 0 rgba(52, 211, 153, 0.75),
1813
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
1814
+ 0 4px 12px rgba(0, 0, 0, 0.25);
1815
+ }
1816
+ }
1817
+
1659
1818
  /* ── Phase 4: type-specific body renderers ───────────────────────── */
1660
1819
 
1661
1820
  /* Text + markdown: inherit from .symframe-card-body. Add minimal
@@ -1,5 +1,5 @@
1
1
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
2
- import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-DeCVdZB4.js";
2
+ import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-DuYbft0z.js";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import path from "node:path";
@@ -3,9 +3,9 @@ import "./paths-By0XjHBk.js";
3
3
  import "./utils-CTPsqyE_.js";
4
4
  import "./subsystem-CHbO_DkH.js";
5
5
  import "./exec-DuYbft0z.js";
6
- import "./agent-scope-Bnsyyeci.js";
7
- import "./model-selection-CCTzD29o.js";
8
- import { i as loadConfig } from "./config-BngIfn5l.js";
6
+ import "./agent-scope-DOrZjOnW.js";
7
+ import "./model-selection-7wdmO-Iw.js";
8
+ import { i as loadConfig } from "./config-B4jkreCN.js";
9
9
  import "./boolean-CbZoNRMn.js";
10
10
  import "./env-BRnPI9sO.js";
11
11
  import "./shell-env-Dc3iU7HK.js";
@@ -4,24 +4,24 @@ import "./utils-CTPsqyE_.js";
4
4
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
5
5
  import { u as sanitizeAgentId } from "./session-key-DUSb7CCb.js";
6
6
  import "./exec-DuYbft0z.js";
7
- import "./agent-scope-Bnsyyeci.js";
8
- import "./model-selection-CCTzD29o.js";
9
- import "./config-BngIfn5l.js";
7
+ import "./agent-scope-DOrZjOnW.js";
8
+ import "./model-selection-7wdmO-Iw.js";
9
+ import "./config-B4jkreCN.js";
10
10
  import "./boolean-CbZoNRMn.js";
11
11
  import "./env-BRnPI9sO.js";
12
12
  import "./shell-env-Dc3iU7HK.js";
13
13
  import "./manifest-registry-D1MLZEjS.js";
14
14
  import "./message-channel-DgjXWzf-.js";
15
15
  import { n as listChannelPlugins } from "./plugins-CF5skkHh.js";
16
- import "./client-DiPa71im.js";
17
- import "./call-xUpyZDH4.js";
18
- import "./pairing-token-B703A1U3.js";
16
+ import "./client-DH75FlQF.js";
17
+ import "./call-AZ9vNhST.js";
18
+ import "./pairing-token-Dcy37-4s.js";
19
19
  import { n as formatDurationHuman } from "./format-duration-CIjmjQST.js";
20
20
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-DQs772BN.js";
21
21
  import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
22
22
  import "./progress-swt2y17x.js";
23
23
  import { n as parsePositiveIntOrUndefined } from "./helpers-B_p8ul9t.js";
24
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-DmFOiGIJ.js";
24
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-C6lKFbor.js";
25
25
 
26
26
  //#region src/cli/cron-cli/shared.ts
27
27
  const getCronChannelOptions = () => ["last", ...listChannelPlugins().map((plugin) => plugin.id)].join("|");
@@ -4,26 +4,26 @@ import { _ as resolveStateDir, d as resolveIsNixMode, o as resolveConfigPath, u
4
4
  import { v as shortenHomePath } from "./utils-CTPsqyE_.js";
5
5
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
6
6
  import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
7
- import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-BngIfn5l.js";
7
+ import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-B4jkreCN.js";
8
8
  import { n as pickPrimaryTailnetIPv4 } from "./tailnet-XKACsamF.js";
9
9
  import { u as resolveGatewayBindHost } from "./ws-C7Ktmt-R.js";
10
10
  import { a as resolveGatewayAuth } from "./auth-Bkx-QuRN.js";
11
- import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-CB_Iu83U.js";
11
+ import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-gxLM5ahL.js";
12
12
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
13
- import { n as callGateway } from "./call-xUpyZDH4.js";
13
+ import { n as callGateway } from "./call-AZ9vNhST.js";
14
14
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-BLIhifCJ.js";
15
15
  import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
16
16
  import { n as withProgress } from "./progress-swt2y17x.js";
17
17
  import { n as inheritOptionFromParent } from "./command-options-DDDwkB9t.js";
18
- import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CKn0wmCk.js";
19
- import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-CJlheOSJ.js";
20
- import { n as isWSLEnv } from "./wsl-DTi7eX-V.js";
21
- import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-CRZoXO_n.js";
22
- import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-cSR_xiIO.js";
23
- import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-QISwLlFU.js";
18
+ import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DlQla_dA.js";
19
+ import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-7IGQ8nAM.js";
20
+ import { n as isWSLEnv } from "./wsl-CglTdtlb.js";
21
+ import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-e6MzlLCd.js";
22
+ import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-wFwnK_mD.js";
23
+ import { i as auditGatewayServiceConfig, n as renderSystemdUnavailableHints, s as formatRuntimeStatus, t as isSystemdUnavailableDetail } from "./systemd-hints-CsrzMCTD.js";
24
24
  import { t as parsePort } from "./parse-port-CMRD6fhd.js";
25
- import { t as readLastGatewayErrorLine } from "./diagnostics-CYkqD5lP.js";
26
- import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-DzYUb_Dl.js";
25
+ import { t as readLastGatewayErrorLine } from "./diagnostics-DlZODdRf.js";
26
+ import { n as renderGatewayServiceCleanupHints, t as findExtraGatewayServices } from "./inspect-CGKsaVZ4.js";
27
27
 
28
28
  //#region src/cli/daemon-cli/install.ts
29
29
  async function runDaemonInstall(opts) {
@@ -1,11 +1,11 @@
1
1
  import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
2
- import { N as VERSION, k as collectConfigServiceEnvVars } from "./config-BngIfn5l.js";
2
+ import { N as VERSION, k as collectConfigServiceEnvVars } from "./config-B4jkreCN.js";
3
3
  import { a as NODE_SERVICE_MARKER, c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, g as resolveNodeWindowsTaskName, h as resolveNodeSystemdServiceName, i as NODE_SERVICE_KIND, m as resolveNodeLaunchAgentLabel, n as GATEWAY_SERVICE_KIND, o as NODE_WINDOWS_TASK_SCRIPT_NAME, r as GATEWAY_SERVICE_MARKER } from "./constants-BLIhifCJ.js";
4
4
  import { n as isSupportedNodeVersion } from "./runtime-guard-CWA00ZXa.js";
5
5
  import path from "node:path";
6
6
  import os from "node:os";
7
7
  import { promisify } from "node:util";
8
- import fsPromises from "node:fs/promises";
8
+ import fs from "node:fs/promises";
9
9
  import { execFile } from "node:child_process";
10
10
 
11
11
  //#region src/daemon/program-args.ts
@@ -23,23 +23,23 @@ async function resolveCliEntrypointPathForService() {
23
23
  const normalized = path.resolve(argv1);
24
24
  const resolvedPath = await resolveRealpathSafe(normalized);
25
25
  if (/[/\\]dist[/\\].+\.(cjs|js|mjs)$/.test(resolvedPath)) {
26
- await fsPromises.access(resolvedPath);
26
+ await fs.access(resolvedPath);
27
27
  if (/[/\\]dist[/\\].+\.(cjs|js|mjs)$/.test(normalized) && normalized !== resolvedPath) try {
28
- await fsPromises.access(normalized);
28
+ await fs.access(normalized);
29
29
  return normalized;
30
30
  } catch {}
31
31
  return resolvedPath;
32
32
  }
33
33
  const distCandidates = buildDistCandidates(resolvedPath, normalized);
34
34
  for (const candidate of distCandidates) try {
35
- await fsPromises.access(candidate);
35
+ await fs.access(candidate);
36
36
  return candidate;
37
37
  } catch {}
38
38
  throw new Error(`Cannot find built CLI at ${distCandidates.join(" or ")}. Run "pnpm build" first, or use dev mode.`);
39
39
  }
40
40
  async function resolveRealpathSafe(inputPath) {
41
41
  try {
42
- return await fsPromises.realpath(inputPath);
42
+ return await fs.realpath(inputPath);
43
43
  } catch {
44
44
  return inputPath;
45
45
  }
@@ -99,7 +99,7 @@ async function resolveBinaryPath(binary) {
99
99
  try {
100
100
  const resolved = execFileSync(cmd, [binary], { encoding: "utf8" }).trim().split(/\r?\n/)[0]?.trim();
101
101
  if (!resolved) throw new Error("empty");
102
- await fsPromises.access(resolved);
102
+ await fs.access(resolved);
103
103
  return resolved;
104
104
  } catch {
105
105
  if (binary === "bun") throw new Error("Bun not found in PATH. Install bun: https://bun.sh");
@@ -118,7 +118,7 @@ async function resolveCliProgramArguments(params) {
118
118
  if (params.dev) {
119
119
  const repoRoot = resolveRepoRootForDev();
120
120
  const devCliPath = path.join(repoRoot, "src", "index.ts");
121
- await fsPromises.access(devCliPath);
121
+ await fs.access(devCliPath);
122
122
  return {
123
123
  programArguments: [
124
124
  isBunRuntime(execPath) ? execPath : await resolveBunPath(),
@@ -146,7 +146,7 @@ async function resolveCliProgramArguments(params) {
146
146
  }
147
147
  const repoRoot = resolveRepoRootForDev();
148
148
  const devCliPath = path.join(repoRoot, "src", "index.ts");
149
- await fsPromises.access(devCliPath);
149
+ await fs.access(devCliPath);
150
150
  if (isBunRuntime(execPath)) return {
151
151
  programArguments: [
152
152
  execPath,
@@ -259,7 +259,7 @@ function isSystemNodePath(nodePath, env = process.env, platform = process.platfo
259
259
  async function resolveSystemNodePath(env = process.env, platform = process.platform) {
260
260
  const candidates = buildSystemNodeCandidates(env, platform);
261
261
  for (const candidate of candidates) try {
262
- await fsPromises.access(candidate);
262
+ await fs.access(candidate);
263
263
  return candidate;
264
264
  } catch {}
265
265
  return null;
@@ -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,
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { H as createInternalHookEvent, W as triggerInternalHook, d as getActivePluginRegistry } from "./registry-Sbac4a4z.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
4
- import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript } from "./sessions-BCc3THTm.js";
4
+ import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript } from "./sessions-Dxf5Kjig.js";
5
5
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CF5skkHh.js";
6
6
  import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-0yh2UnJq.js";
7
7
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BxfKjCUx.js";
8
- import { t as getAgentScopedMediaLocalRoots } from "./local-roots-2Jb79HZ8.js";
8
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-CgDCgCuM.js";
9
9
  import { i as failDelivery, r as enqueueDelivery, t as ackDelivery } from "./delivery-queue-OAc7hsIs.js";
10
10
 
11
11
  //#region src/plugins/hooks.ts
@@ -1,7 +1,7 @@
1
1
  //#region src/cli/deps.ts
2
2
  function createDefaultDeps() {
3
3
  return { sendMessageSlack: async (...args) => {
4
- const { sendMessageSlack } = await import("./send-CxjvucMO.js").then((n) => n.n);
4
+ const { sendMessageSlack } = await import("./send-B0jHSNMF.js").then((n) => n.n);
5
5
  return await sendMessageSlack(...args);
6
6
  } };
7
7
  }
@@ -3,18 +3,18 @@ import "./paths-By0XjHBk.js";
3
3
  import "./utils-CTPsqyE_.js";
4
4
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
5
5
  import "./exec-DuYbft0z.js";
6
- import "./agent-scope-Bnsyyeci.js";
7
- import "./model-selection-CCTzD29o.js";
8
- import "./config-BngIfn5l.js";
6
+ import "./agent-scope-DOrZjOnW.js";
7
+ import "./model-selection-7wdmO-Iw.js";
8
+ import "./config-B4jkreCN.js";
9
9
  import "./boolean-CbZoNRMn.js";
10
10
  import "./env-BRnPI9sO.js";
11
11
  import "./shell-env-Dc3iU7HK.js";
12
12
  import "./manifest-registry-D1MLZEjS.js";
13
13
  import { r as isLoopbackHost } from "./ws-C7Ktmt-R.js";
14
14
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
15
- import { Gt as approveDevicePairing, Jt as listDevicePairing, en as summarizeDeviceTokens } from "./client-DiPa71im.js";
16
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-xUpyZDH4.js";
17
- import "./pairing-token-B703A1U3.js";
15
+ import { Gt as approveDevicePairing, Jt as listDevicePairing, en as summarizeDeviceTokens } from "./client-DH75FlQF.js";
16
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-AZ9vNhST.js";
17
+ import "./pairing-token-Dcy37-4s.js";
18
18
  import { n as formatTimeAgo } from "./format-relative-D4GQsWlP.js";
19
19
  import { n as withProgress } from "./progress-swt2y17x.js";
20
20
  import { t as renderTable } from "./table-0A3xKJVC.js";
@@ -1,5 +1,5 @@
1
- import { s as resolveGatewayLogPaths } from "./service-CRZoXO_n.js";
2
- import fsPromises from "node:fs/promises";
1
+ import { s as resolveGatewayLogPaths } from "./service-e6MzlLCd.js";
2
+ import fs from "node:fs/promises";
3
3
 
4
4
  //#region src/daemon/diagnostics.ts
5
5
  const GATEWAY_LOG_ERROR_PATTERNS = [
@@ -11,7 +11,7 @@ const GATEWAY_LOG_ERROR_PATTERNS = [
11
11
  ];
12
12
  async function readLastLogLine(filePath) {
13
13
  try {
14
- const lines = (await fsPromises.readFile(filePath, "utf8")).split(/\r?\n/).map((line) => line.trim());
14
+ const lines = (await fs.readFile(filePath, "utf8")).split(/\r?\n/).map((line) => line.trim());
15
15
  for (let i = lines.length - 1; i >= 0; i -= 1) if (lines[i]) return lines[i];
16
16
  return null;
17
17
  } catch {
@@ -20,8 +20,8 @@ async function readLastLogLine(filePath) {
20
20
  }
21
21
  async function readLastGatewayErrorLine(env) {
22
22
  const { stdoutPath, stderrPath } = resolveGatewayLogPaths(env);
23
- const stderrRaw = await fsPromises.readFile(stderrPath, "utf8").catch(() => "");
24
- const stdoutRaw = await fsPromises.readFile(stdoutPath, "utf8").catch(() => "");
23
+ const stderrRaw = await fs.readFile(stderrPath, "utf8").catch(() => "");
24
+ const stdoutRaw = await fs.readFile(stdoutPath, "utf8").catch(() => "");
25
25
  const lines = [...stderrRaw.split(/\r?\n/), ...stdoutRaw.split(/\r?\n/)].map((line) => line.trim());
26
26
  for (let i = lines.length - 1; i >= 0; i -= 1) {
27
27
  const line = lines[i];
@@ -3,9 +3,9 @@ import "./paths-By0XjHBk.js";
3
3
  import "./utils-CTPsqyE_.js";
4
4
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
5
5
  import "./exec-DuYbft0z.js";
6
- import "./agent-scope-Bnsyyeci.js";
7
- import "./model-selection-CCTzD29o.js";
8
- import { i as loadConfig } from "./config-BngIfn5l.js";
6
+ import "./agent-scope-DOrZjOnW.js";
7
+ import "./model-selection-7wdmO-Iw.js";
8
+ import { i as loadConfig } from "./config-B4jkreCN.js";
9
9
  import "./boolean-CbZoNRMn.js";
10
10
  import "./env-BRnPI9sO.js";
11
11
  import "./shell-env-Dc3iU7HK.js";
@@ -1,5 +1,5 @@
1
1
  import { c as normalizeStringEntries } from "./dock-hF45sewN.js";
2
- import { i as readChannelAllowFromStore } from "./pairing-store-Be-ZQK87.js";
2
+ import { i as readChannelAllowFromStore } from "./pairing-store-BNhJOnWn.js";
3
3
 
4
4
  //#region src/security/dm-policy-shared.ts
5
5
  async function resolveDmAllowState(params) {
@@ -3,9 +3,9 @@ import "./paths-By0XjHBk.js";
3
3
  import "./utils-CTPsqyE_.js";
4
4
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
5
5
  import "./exec-DuYbft0z.js";
6
- import "./agent-scope-Bnsyyeci.js";
7
- import "./model-selection-CCTzD29o.js";
8
- import { i as loadConfig } from "./config-BngIfn5l.js";
6
+ import "./agent-scope-DOrZjOnW.js";
7
+ import "./model-selection-7wdmO-Iw.js";
8
+ import { i as loadConfig } from "./config-B4jkreCN.js";
9
9
  import "./boolean-CbZoNRMn.js";
10
10
  import "./env-BRnPI9sO.js";
11
11
  import "./shell-env-Dc3iU7HK.js";
@@ -7,7 +7,7 @@ import { t as runCommandWithTimeout } from "./exec-DuYbft0z.js";
7
7
  import "./boolean-CbZoNRMn.js";
8
8
  import "./manifest-registry-D1MLZEjS.js";
9
9
  import { d as hasBinary } from "./frontmatter-B_jqcova.js";
10
- import "./skills-CYcBtLGH.js";
10
+ import "./skills-BwDmcZdt.js";
11
11
  import "./redact-B3O-RBO1.js";
12
12
  import "./errors-bI7Tdx75.js";
13
13
  import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
@@ -1,7 +1,7 @@
1
1
  import { n as resolveCliName } from "./cli-name-CzMV-gJF.js";
2
- import { t as resolveSymiPackageRoot } from "./symi-root-DeCVdZB4.js";
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-Ddfrnilx.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Cbf0-8ob.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
@@ -2,17 +2,17 @@ import { _ as resolveStateDir, h as resolveOAuthDir, m as resolveNewStateDir, p
2
2
  import { m as resolveHomeDir, u as isRecord } from "./utils-CTPsqyE_.js";
3
3
  import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
4
4
  import { n as DEFAULT_MAIN_KEY, o as normalizeAgentId, p as DEFAULT_ACCOUNT_ID, r as buildAgentMainSessionKey } from "./session-key-DUSb7CCb.js";
5
- import { l as resolveDefaultAgentId } from "./agent-scope-Bnsyyeci.js";
6
- import { d as SymiSchema, n as migrateLegacyConfig, o as readConfigFileSnapshot } from "./config-BngIfn5l.js";
7
- import { l as saveSessionStore, z as canonicalizeMainSessionAlias } from "./sessions-BCc3THTm.js";
5
+ import { l as resolveDefaultAgentId } from "./agent-scope-DOrZjOnW.js";
6
+ import { d as SymiSchema, n as migrateLegacyConfig, o as readConfigFileSnapshot } from "./config-B4jkreCN.js";
7
+ import { l as saveSessionStore, z as canonicalizeMainSessionAlias } from "./sessions-Dxf5Kjig.js";
8
8
  import { t as note } from "./note-D9FXI2qW.js";
9
- import { t as applyPluginAutoEnable } from "./plugin-auto-enable-BXSJTxI7.js";
9
+ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-DJBhDIMq.js";
10
10
  import { t as isWithinDir } from "./path-safety-CkXjT453.js";
11
11
  import path from "node:path";
12
12
  import fs from "node:fs";
13
13
  import os from "node:os";
14
14
  import JSON5 from "json5";
15
- import fsPromises from "node:fs/promises";
15
+ import fs$1 from "node:fs/promises";
16
16
 
17
17
  //#region src/commands/doctor-legacy-config.ts
18
18
  function normalizeLegacyConfigValues(cfg) {
@@ -1063,7 +1063,7 @@ async function maybeMigrateLegacyConfig() {
1063
1063
  const targetDir = path.join(home, ".symi");
1064
1064
  const targetPath = path.join(targetDir, "symi.json");
1065
1065
  try {
1066
- await fsPromises.access(targetPath);
1066
+ await fs$1.access(targetPath);
1067
1067
  return changes;
1068
1068
  } catch {}
1069
1069
  const legacyCandidates = [
@@ -1073,14 +1073,14 @@ async function maybeMigrateLegacyConfig() {
1073
1073
  ];
1074
1074
  let legacyPath = null;
1075
1075
  for (const candidate of legacyCandidates) try {
1076
- await fsPromises.access(candidate);
1076
+ await fs$1.access(candidate);
1077
1077
  legacyPath = candidate;
1078
1078
  break;
1079
1079
  } catch {}
1080
1080
  if (!legacyPath) return changes;
1081
- await fsPromises.mkdir(targetDir, { recursive: true });
1081
+ await fs$1.mkdir(targetDir, { recursive: true });
1082
1082
  try {
1083
- await fsPromises.copyFile(legacyPath, targetPath, fsPromises.constants.COPYFILE_EXCL);
1083
+ await fs$1.copyFile(legacyPath, targetPath, fs$1.constants.COPYFILE_EXCL);
1084
1084
  changes.push(`Migrated legacy config: ${legacyPath} -> ${targetPath}`);
1085
1085
  } catch {}
1086
1086
  return changes;