@symerian/symi 2.6.38 → 2.6.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 (156) hide show
  1. package/dist/{accounts-BRw8yhIW.js → accounts-D1r2dq1t.js} +21 -21
  2. package/dist/{accounts-3dCrO3oZ.js → accounts-dRUMQQrB.js} +1 -1
  3. package/dist/{accounts-BuZxOb3B.js → accounts-wSphH5gv.js} +1 -1
  4. package/dist/{active-listener-Br2FcRv7.js → active-listener-C3pfJhdC.js} +1 -1
  5. package/dist/{agent-scope-CpEJ0B88.js → agent-scope-D68_xfTL.js} +3 -3
  6. package/dist/{audio-preflight-DBMz5TQp.js → audio-preflight-DZ_2w4B5.js} +4 -4
  7. package/dist/{audio-preflight-Cz1htqcz.js → audio-preflight-UXg8r6a7.js} +29 -29
  8. package/dist/{auth-profiles-q3HjbboY.js → auth-profiles-CZZjOpX8.js} +17 -17
  9. package/dist/{bindings-BsHoBLIE.js → bindings-Bat2RnAR.js} +2 -2
  10. package/dist/build-info.json +3 -3
  11. package/dist/bundled/boot-md/handler.js +54 -54
  12. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  13. package/dist/bundled/command-logger/handler.js +1 -1
  14. package/dist/bundled/session-memory/handler.js +54 -54
  15. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  16. package/dist/{channel-activity-D-kw83R0.js → channel-activity-Cm1OJRbv.js} +1 -1
  17. package/dist/{chrome-34eOyt_6.js → chrome-CXbfCc20.js} +5 -5
  18. package/dist/{chrome-CovpMGdO.js → chrome-D0sqCqXY.js} +16 -16
  19. package/dist/{chunk-BHW8Yu5A.js → chunk-B9x_1qSr.js} +1 -1
  20. package/dist/{command-registry-Dk55OGO6.js → command-registry-DSV-4T7A.js} +4 -4
  21. package/dist/{commands-registry-BSvi46KZ.js → commands-registry-DPf4J7nj.js} +4 -4
  22. package/dist/{completion-cli-1HmgP7tY.js → completion-cli-DjQVuJdD.js} +2 -2
  23. package/dist/{completion-cli-DrDwlbAX.js → completion-cli-dlL2VvFw.js} +1 -1
  24. package/dist/{config-4Iu6iHCA.js → config-giEDOxub.js} +12 -12
  25. package/dist/control-ui/js/app.js +16 -5
  26. package/dist/control-ui/js/render.js +24 -35
  27. package/dist/{deliver-DtM4u1u_.js → deliver-BY58QnO8.js} +20 -20
  28. package/dist/{deliver-BCYGr-CD.js → deliver-DepjYu87.js} +1 -1
  29. package/dist/{diagnostic-CQiU0O8b.js → diagnostic-DIKKFHpP.js} +1 -1
  30. package/dist/{doctor-completion-B8IZFxo9.js → doctor-completion-Cm7WG43a.js} +1 -1
  31. package/dist/{doctor-completion-D6tzA47C.js → doctor-completion-Z_RXu40-.js} +1 -1
  32. package/dist/entry.js +1 -1
  33. package/dist/{env-BDXYbTKj.js → env-xmBFQPBP.js} +1 -1
  34. package/dist/extensionAPI.js +6 -6
  35. package/dist/{frontmatter-CTR5f_Ez.js → frontmatter-CV0YkjoY.js} +2 -2
  36. package/dist/{gateway-cli-DdjXGMTo.js → gateway-cli-DliBYmLu.js} +2 -2
  37. package/dist/{gateway-cli-DCTt5acx.js → gateway-cli-Fnxgv97F.js} +2 -2
  38. package/dist/{gemini-auth-BkLFtndu.js → gemini-auth-C39f2zRe.js} +1 -1
  39. package/dist/{github-copilot-token-cCYzSU9h.js → github-copilot-token-B8B2pmph.js} +7 -7
  40. package/dist/{glass-ui-ws-C_DzMNsd.js → glass-ui-ws-B0sH6QQi.js} +18 -2
  41. package/dist/{glass-ui-ws-DBlQ-hk7.js → glass-ui-ws-CfNTIb_g.js} +18 -2
  42. package/dist/{image-mx18hbyY.js → image-CKMw_vhe.js} +4 -4
  43. package/dist/{image-DKudhySz.js → image-CjuJpc3E.js} +1 -1
  44. package/dist/{image-ops-C7CauEK8.js → image-ops-M5agStZn.js} +16 -16
  45. package/dist/index.js +1 -1
  46. package/dist/{ir-JAy_3A3B.js → ir-Z9axTYHx.js} +4 -4
  47. package/dist/llm-slug-generator.js +54 -54
  48. package/dist/{local-roots-Se92wAN5.js → local-roots-Bh5xx9IO.js} +5 -5
  49. package/dist/{login-IpOTJtyn.js → login-2w0Q7Btb.js} +7 -7
  50. package/dist/{login-qr-DRepVMvu.js → login-qr-BJMvic1s.js} +12 -12
  51. package/dist/{manager-CJ3M1Uxq.js → manager-BoLUtbg2.js} +22 -22
  52. package/dist/{manifest-registry-yb7sAlu4.js → manifest-registry-0J48biqr.js} +19 -19
  53. package/dist/{markdown-tables-Dnj2LQUc.js → markdown-tables-DuRhvVpP.js} +1 -1
  54. package/dist/{message-channel-OlFBYAw8.js → message-channel-DwDSKGn4.js} +1 -1
  55. package/dist/{onboard-CEE38rOh.js → onboard-A5dfwOyL.js} +1 -1
  56. package/dist/{onboard-Dxf43Kz5.js → onboard-BSlbkbv-.js} +1 -1
  57. package/dist/{onboarding-B1VwuUX5.js → onboarding-BTNiewJj.js} +1 -1
  58. package/dist/{onboarding-BxHFNg2y.js → onboarding-COqa6a28.js} +1 -1
  59. package/dist/{onboarding.finalize-dP5Igu4h.js → onboarding.finalize-CAax5IdL.js} +4 -4
  60. package/dist/{onboarding.finalize-DQm4Tey0.js → onboarding.finalize-CDsTN9zD.js} +3 -3
  61. package/dist/{outbound-UwQEXYXv.js → outbound-B_wliV26.js} +7 -7
  62. package/dist/{outbound-attachment-BzwVH4Pn.js → outbound-attachment-BOy-OY4-.js} +2 -2
  63. package/dist/paths-CYmyCDsE.js +212 -0
  64. package/dist/{paths-CbQV9WEg.js → paths-DEuVuViW.js} +1 -1
  65. package/dist/{pi-auth-json-CCaxCywz.js → pi-auth-json-BQcKJvH0.js} +1 -1
  66. package/dist/{pi-embedded-DKaDXfFG.js → pi-embedded-R_JHJFwq.js} +16 -16
  67. package/dist/{pi-embedded-helpers-CepVOR4e.js → pi-embedded-helpers-BJrRH97f.js} +4 -4
  68. package/dist/{pi-embedded-helpers-DASLSiel.js → pi-embedded-helpers-Cr1X3W9i.js} +73 -73
  69. package/dist/{plugins-BzmbgY7s.js → plugins-Bkr5ZdYs.js} +9 -9
  70. package/dist/{program-DGLuU2_H.js → program-C4k7oBuC.js} +2 -2
  71. package/dist/{program-context-B2BcluHm.js → program-context-CiGMAzyC.js} +6 -6
  72. package/dist/{prompt-select-styled-CAKiYm_X.js → prompt-select-styled-CYiMonwj.js} +1 -1
  73. package/dist/{prompt-select-styled-C9RTEKcx.js → prompt-select-styled-CoWkFI4l.js} +1 -1
  74. package/dist/{pw-ai-Cfeeyp0u.js → pw-ai-CS2tDZd2.js} +1 -1
  75. package/dist/{pw-ai-CPelTpWz.js → pw-ai-Ch_WUbQZ.js} +11 -11
  76. package/dist/{qmd-manager-lBS9mT9w.js → qmd-manager-8-Z3Cdpt.js} +7 -7
  77. package/dist/{register.maintenance-BKB_D_Py.js → register.maintenance-DAwf6cHN.js} +5 -5
  78. package/dist/{register.maintenance-BgWyvLo5.js → register.maintenance-DVv8ljal.js} +4 -4
  79. package/dist/{register.onboard-DT1We9u2.js → register.onboard-DJEZcUm5.js} +2 -2
  80. package/dist/{register.onboard-CSmfgDU5.js → register.onboard-DWrxbBr5.js} +2 -2
  81. package/dist/{register.setup-CEW5ApHJ.js → register.setup-Ah9E7LHA.js} +2 -2
  82. package/dist/{register.setup-mJzihfMO.js → register.setup-BDqhSgCz.js} +2 -2
  83. package/dist/{register.subclis-Bi4jmYW6.js → register.subclis-Bb0yWevQ.js} +3 -3
  84. package/dist/{registry-DYq1AYOv.js → registry-UkL38jvt.js} +17 -17
  85. package/dist/{replies-DA4YTv9G.js → replies-CbeMv5WZ.js} +3 -3
  86. package/dist/{reply-prefix-CvEIl6_d.js → reply-prefix-ZnX2V-k9.js} +1 -1
  87. package/dist/{resolve-route-DX7xcMsD.js → resolve-route-gl0ZOOKR.js} +4 -4
  88. package/dist/{retry-B-y5suGA.js → retry-D25Z8MVS.js} +1 -1
  89. package/dist/{run-main-Ugk40lFF.js → run-main-CZI2Ne08.js} +3 -3
  90. package/dist/{runner-DKq2NJqT.js → runner-B2Y_5crX.js} +22 -22
  91. package/dist/{runner-qeYibveF.js → runner-DKkSu9cc.js} +1 -1
  92. package/dist/{send-Cq1L-2Ik.js → send-CCNIWI2Z.js} +10 -10
  93. package/dist/{send-C4Bqsa_r.js → send-CPSKimCF.js} +6 -6
  94. package/dist/{send-DX0p0ym_.js → send-Dy8tsHUE.js} +6 -6
  95. package/dist/{send-vtz9ZwUj.js → send-iUSZIdml.js} +7 -7
  96. package/dist/{send-DVt9RLDh.js → send-sgxdFZNy.js} +18 -18
  97. package/dist/{session-BQWef058.js → session-BTpKgzso.js} +8 -8
  98. package/dist/{skill-commands-BiPrghRt.js → skill-commands-HBkNllDU.js} +16 -16
  99. package/dist/{skills-Bs0AW1g3.js → skills-CGHRETGF.js} +24 -24
  100. package/dist/{sqlite-BHWvOATS.js → sqlite-JHY-uOmS.js} +16 -16
  101. package/dist/{store-01F_JM7O.js → store-Ea3zM6xK.js} +6 -6
  102. package/dist/{subsystem-BjyjJF-d.js → subsystem-DN75fnEF.js} +1 -1
  103. package/dist/{tables-BuM4FKR3.js → tables-Dkg9O8rv.js} +1 -1
  104. package/dist/{target-errors-BEugWC4F.js → target-errors-Pr77jao5.js} +2 -2
  105. package/dist/{thinking-BprCy23Z.js → thinking-C9-JAUzD.js} +5 -5
  106. package/dist/{tokens-W0JzCJJM.js → tokens-CCZl4YHT.js} +1 -1
  107. package/dist/{tool-images-SqqWIT22.js → tool-images-B1qVCntj.js} +2 -2
  108. package/dist/{tool-loop-detection-D5mBY7AC.js → tool-loop-detection-C33wf43N.js} +3 -3
  109. package/dist/{unified-runner-CMgTwCmG.js → unified-runner-hulABWDL.js} +225 -225
  110. package/dist/{update-cli-Dup4Xi6b.js → update-cli-CnN_k3P1.js} +4 -4
  111. package/dist/{update-cli-DiH9ccFa.js → update-cli-DwGmFbPH.js} +5 -5
  112. package/dist/{web-BrGvZQ21.js → web-C0ZdaR6w.js} +6 -6
  113. package/dist/{web-BIo1QcLd.js → web-DpQ5RaFz.js} +58 -58
  114. package/dist/{whatsapp-actions-DZfLLQ0Y.js → whatsapp-actions-D_w4AfW9.js} +23 -23
  115. package/dist/{workspace-DscDraUb.js → workspace-DqJ5h-ZB.js} +27 -27
  116. package/extensions/bluebubbles/package.json +1 -1
  117. package/extensions/copilot-proxy/package.json +1 -1
  118. package/extensions/diagnostics-otel/package.json +1 -1
  119. package/extensions/discord/package.json +1 -1
  120. package/extensions/feishu/package.json +1 -1
  121. package/extensions/google-antigravity-auth/package.json +1 -1
  122. package/extensions/google-gemini-cli-auth/package.json +1 -1
  123. package/extensions/googlechat/package.json +1 -1
  124. package/extensions/imessage/package.json +1 -1
  125. package/extensions/irc/package.json +1 -1
  126. package/extensions/learning-loop/package.json +1 -1
  127. package/extensions/line/package.json +1 -1
  128. package/extensions/llm-task/package.json +1 -1
  129. package/extensions/matrix/CHANGELOG.md +6 -0
  130. package/extensions/matrix/package.json +1 -1
  131. package/extensions/mattermost/package.json +1 -1
  132. package/extensions/memory-core/package.json +1 -1
  133. package/extensions/memory-lancedb/package.json +1 -1
  134. package/extensions/minimax-portal-auth/package.json +1 -1
  135. package/extensions/msteams/CHANGELOG.md +6 -0
  136. package/extensions/msteams/package.json +1 -1
  137. package/extensions/nextcloud-talk/package.json +1 -1
  138. package/extensions/nostr/CHANGELOG.md +6 -0
  139. package/extensions/nostr/package.json +1 -1
  140. package/extensions/open-prose/package.json +1 -1
  141. package/extensions/outlook/package.json +1 -1
  142. package/extensions/pipeline/package.json +1 -1
  143. package/extensions/signal/package.json +1 -1
  144. package/extensions/slack/package.json +1 -1
  145. package/extensions/telegram/package.json +1 -1
  146. package/extensions/tlon/package.json +1 -1
  147. package/extensions/twitch/CHANGELOG.md +6 -0
  148. package/extensions/twitch/package.json +1 -1
  149. package/extensions/voice-call/CHANGELOG.md +6 -0
  150. package/extensions/voice-call/package.json +1 -1
  151. package/extensions/whatsapp/package.json +1 -1
  152. package/extensions/zalo/CHANGELOG.md +6 -0
  153. package/extensions/zalo/package.json +1 -1
  154. package/extensions/zalouser/CHANGELOG.md +6 -0
  155. package/extensions/zalouser/package.json +1 -1
  156. package/package.json +1 -1
@@ -1,67 +1,67 @@
1
- import { s as resolveStateDir } from "../../paths-CE7eVGHg.js";
1
+ import { s as resolveStateDir } from "../../paths-CYmyCDsE.js";
2
2
  import { l as resolveAgentIdFromSessionKey } from "../../session-key-BCzIW1Y2.js";
3
- import "../../registry-DYq1AYOv.js";
4
- import { s as resolveAgentWorkspaceDir } from "../../agent-scope-CpEJ0B88.js";
5
- import { t as createSubsystemLogger } from "../../subsystem-BjyjJF-d.js";
6
- import "../../workspace-DscDraUb.js";
7
- import "../../unified-runner-CMgTwCmG.js";
8
- import "../../paths-CbQV9WEg.js";
9
- import "../../auth-profiles-q3HjbboY.js";
10
- import "../../env-BDXYbTKj.js";
11
- import "../../github-copilot-token-cCYzSU9h.js";
3
+ import "../../registry-UkL38jvt.js";
4
+ import { s as resolveAgentWorkspaceDir } from "../../agent-scope-D68_xfTL.js";
5
+ import { t as createSubsystemLogger } from "../../subsystem-DN75fnEF.js";
6
+ import "../../workspace-DqJ5h-ZB.js";
7
+ import "../../unified-runner-hulABWDL.js";
8
+ import "../../paths-DEuVuViW.js";
9
+ import "../../auth-profiles-CZZjOpX8.js";
10
+ import "../../env-xmBFQPBP.js";
11
+ import "../../github-copilot-token-B8B2pmph.js";
12
12
  import "../../boolean-CE7i9tBR.js";
13
- import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-DASLSiel.js";
14
- import "../../config-4Iu6iHCA.js";
15
- import "../../manifest-registry-yb7sAlu4.js";
16
- import "../../chrome-34eOyt_6.js";
17
- import "../../frontmatter-CTR5f_Ez.js";
18
- import "../../skills-Bs0AW1g3.js";
13
+ import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-Cr1X3W9i.js";
14
+ import "../../config-giEDOxub.js";
15
+ import "../../manifest-registry-0J48biqr.js";
16
+ import "../../chrome-D0sqCqXY.js";
17
+ import "../../frontmatter-CV0YkjoY.js";
18
+ import "../../skills-CGHRETGF.js";
19
19
  import "../../redact-BDMXB06K.js";
20
20
  import "../../errors-XIsvXeC-.js";
21
- import "../../image-ops-C7CauEK8.js";
21
+ import "../../image-ops-M5agStZn.js";
22
22
  import "../../ssrf-DpUUUgkK.js";
23
- import "../../store-01F_JM7O.js";
24
- import "../../thinking-BprCy23Z.js";
25
- import "../../message-channel-OlFBYAw8.js";
26
- import "../../plugins-BzmbgY7s.js";
27
- import "../../accounts-BRw8yhIW.js";
28
- import "../../accounts-3dCrO3oZ.js";
29
- import "../../accounts-BuZxOb3B.js";
30
- import "../../bindings-BsHoBLIE.js";
31
- import "../../send-DX0p0ym_.js";
32
- import "../../send-Cq1L-2Ik.js";
33
- import "../../tool-images-SqqWIT22.js";
34
- import "../../deliver-DtM4u1u_.js";
35
- import "../../diagnostic-CQiU0O8b.js";
23
+ import "../../store-Ea3zM6xK.js";
24
+ import "../../thinking-C9-JAUzD.js";
25
+ import "../../message-channel-DwDSKGn4.js";
26
+ import "../../plugins-Bkr5ZdYs.js";
27
+ import "../../accounts-D1r2dq1t.js";
28
+ import "../../accounts-dRUMQQrB.js";
29
+ import "../../accounts-wSphH5gv.js";
30
+ import "../../bindings-Bat2RnAR.js";
31
+ import "../../send-Dy8tsHUE.js";
32
+ import "../../send-CCNIWI2Z.js";
33
+ import "../../tool-images-B1qVCntj.js";
34
+ import "../../deliver-BY58QnO8.js";
35
+ import "../../diagnostic-DIKKFHpP.js";
36
36
  import "../../diagnostic-session-state-Zw87xFym.js";
37
- import "../../image-mx18hbyY.js";
38
- import "../../pi-auth-json-CCaxCywz.js";
39
- import "../../tokens-W0JzCJJM.js";
40
- import "../../send-DVt9RLDh.js";
37
+ import "../../image-CKMw_vhe.js";
38
+ import "../../pi-auth-json-BQcKJvH0.js";
39
+ import "../../tokens-CCZl4YHT.js";
40
+ import "../../send-sgxdFZNy.js";
41
41
  import "../../pi-model-discovery-CuZX_Q4t.js";
42
- import "../../reply-prefix-CvEIl6_d.js";
43
- import "../../manager-CJ3M1Uxq.js";
44
- import "../../gemini-auth-BkLFtndu.js";
45
- import "../../sqlite-BHWvOATS.js";
46
- import "../../retry-B-y5suGA.js";
47
- import "../../target-errors-BEugWC4F.js";
48
- import "../../chunk-BHW8Yu5A.js";
49
- import "../../markdown-tables-Dnj2LQUc.js";
50
- import "../../local-roots-Se92wAN5.js";
51
- import "../../ir-JAy_3A3B.js";
42
+ import "../../reply-prefix-ZnX2V-k9.js";
43
+ import "../../manager-BoLUtbg2.js";
44
+ import "../../gemini-auth-C39f2zRe.js";
45
+ import "../../sqlite-JHY-uOmS.js";
46
+ import "../../retry-D25Z8MVS.js";
47
+ import "../../target-errors-Pr77jao5.js";
48
+ import "../../chunk-B9x_1qSr.js";
49
+ import "../../markdown-tables-DuRhvVpP.js";
50
+ import "../../local-roots-Bh5xx9IO.js";
51
+ import "../../ir-Z9axTYHx.js";
52
52
  import "../../render-DwEu-aCr.js";
53
- import "../../commands-registry-BSvi46KZ.js";
54
- import "../../runner-DKq2NJqT.js";
55
- import "../../skill-commands-BiPrghRt.js";
53
+ import "../../commands-registry-DPf4J7nj.js";
54
+ import "../../runner-B2Y_5crX.js";
55
+ import "../../skill-commands-HBkNllDU.js";
56
56
  import "../../fetch-Dnti0cFs.js";
57
- import "../../channel-activity-D-kw83R0.js";
58
- import "../../tables-BuM4FKR3.js";
59
- import "../../send-C4Bqsa_r.js";
60
- import "../../outbound-attachment-BzwVH4Pn.js";
61
- import "../../send-vtz9ZwUj.js";
62
- import "../../resolve-route-DX7xcMsD.js";
57
+ import "../../channel-activity-Cm1OJRbv.js";
58
+ import "../../tables-Dkg9O8rv.js";
59
+ import "../../send-CPSKimCF.js";
60
+ import "../../outbound-attachment-BOy-OY4-.js";
61
+ import "../../send-iUSZIdml.js";
62
+ import "../../resolve-route-gl0ZOOKR.js";
63
63
  import "../../proxy-DVy9foH0.js";
64
- import "../../replies-DA4YTv9G.js";
64
+ import "../../replies-CbeMv5WZ.js";
65
65
  import { generateSlugViaLLM } from "../../llm-slug-generator.js";
66
66
  import { t as resolveHookConfig } from "../../config-DmMe1tf9.js";
67
67
  import path from "node:path";
@@ -1 +1 @@
1
- 3810f5db98c4f3beba4971ed1edf57319c35a9a5f416021997d4188584f25097
1
+ 4d2ed974908f9c6a51c8d88be73ca85c85459027e4ba76d0334ab8dc1f12696e
@@ -1,5 +1,5 @@
1
1
  import { n as formatErrorMessage } from "./errors-XIsvXeC-.js";
2
- import { n as retryAsync, t as resolveRetryConfig } from "./retry-B-y5suGA.js";
2
+ import { n as retryAsync, t as resolveRetryConfig } from "./retry-D25Z8MVS.js";
3
3
  import { RateLimitError } from "@buape/carbon";
4
4
 
5
5
  //#region src/infra/retry-policy.ts
@@ -1,8 +1,8 @@
1
- import { S as CONFIG_DIR } from "./registry-DYq1AYOv.js";
2
- import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
3
- import { n as loadConfig } from "./config-4Iu6iHCA.js";
4
- import { i as isErrno } from "./errors-XIsvXeC-.js";
5
- import { a as resolvePinnedHostnameWithPolicy } from "./ssrf-DpUUUgkK.js";
1
+ import { b as CONFIG_DIR } from "./registry-BhoUuugi.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-CZixfwU8.js";
3
+ import { n as loadConfig } from "./config-DBqxAhpU.js";
4
+ import { i as isErrno } from "./errors-CPfngF0S.js";
5
+ import { a as resolvePinnedHostnameWithPolicy } from "./ssrf-CxfFyMRZ.js";
6
6
  import path from "node:path";
7
7
  import fs from "node:fs";
8
8
  import os from "node:os";
@@ -1,12 +1,12 @@
1
- import { b as CONFIG_DIR } from "./registry-BhoUuugi.js";
2
- import { t as createSubsystemLogger } from "./subsystem-CZixfwU8.js";
3
- import { n as loadConfig } from "./config-DBqxAhpU.js";
4
- import { i as isErrno } from "./errors-CPfngF0S.js";
5
- import { a as resolvePinnedHostnameWithPolicy } from "./ssrf-CxfFyMRZ.js";
1
+ import { S as CONFIG_DIR } from "./registry-UkL38jvt.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-DN75fnEF.js";
3
+ import { n as loadConfig } from "./config-giEDOxub.js";
4
+ import { i as isErrno } from "./errors-XIsvXeC-.js";
5
+ import { a as resolvePinnedHostnameWithPolicy } from "./ssrf-DpUUUgkK.js";
6
6
  import path from "node:path";
7
- import fs from "node:fs";
7
+ import fsSync from "node:fs";
8
8
  import os from "node:os";
9
- import fs$1 from "node:fs/promises";
9
+ import fs from "node:fs/promises";
10
10
  import { execFileSync, spawn } from "node:child_process";
11
11
  import net from "node:net";
12
12
  import { createServer } from "node:http";
@@ -1007,7 +1007,7 @@ const CHROMIUM_EXE_NAMES = new Set([
1007
1007
  ]);
1008
1008
  function exists$1(filePath) {
1009
1009
  try {
1010
- return fs.existsSync(filePath);
1010
+ return fsSync.existsSync(filePath);
1011
1011
  } catch {
1012
1012
  return false;
1013
1013
  }
@@ -1150,7 +1150,7 @@ function findDesktopFilePath(desktopId) {
1150
1150
  }
1151
1151
  function readDesktopExecLine(desktopPath) {
1152
1152
  try {
1153
- const lines = fs.readFileSync(desktopPath, "utf8").split(/\r?\n/);
1153
+ const lines = fsSync.readFileSync(desktopPath, "utf8").split(/\r?\n/);
1154
1154
  for (const line of lines) if (line.startsWith("Exec=")) return line.slice(5).trim();
1155
1155
  } catch {}
1156
1156
  return null;
@@ -1437,8 +1437,8 @@ function decoratedMarkerPath(userDataDir) {
1437
1437
  }
1438
1438
  function safeReadJson(filePath) {
1439
1439
  try {
1440
- if (!fs.existsSync(filePath)) return null;
1441
- const raw = fs.readFileSync(filePath, "utf-8");
1440
+ if (!fsSync.existsSync(filePath)) return null;
1441
+ const raw = fsSync.readFileSync(filePath, "utf-8");
1442
1442
  const parsed = JSON.parse(raw);
1443
1443
  if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) return null;
1444
1444
  return parsed;
@@ -1447,8 +1447,8 @@ function safeReadJson(filePath) {
1447
1447
  }
1448
1448
  }
1449
1449
  function safeWriteJson(filePath, data) {
1450
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
1451
- fs.writeFileSync(filePath, JSON.stringify(data, null, 2));
1450
+ fsSync.mkdirSync(path.dirname(filePath), { recursive: true });
1451
+ fsSync.writeFileSync(filePath, JSON.stringify(data, null, 2));
1452
1452
  }
1453
1453
  function setDeep(obj, keys, value) {
1454
1454
  let node = obj;
@@ -1575,7 +1575,7 @@ function decorateSymiProfile(userDataDir, opts) {
1575
1575
  }
1576
1576
  safeWriteJson(preferencesPath, prefs);
1577
1577
  try {
1578
- fs.writeFileSync(decoratedMarkerPath(userDataDir), `${Date.now()}\n`, "utf-8");
1578
+ fsSync.writeFileSync(decoratedMarkerPath(userDataDir), `${Date.now()}\n`, "utf-8");
1579
1579
  } catch {}
1580
1580
  }
1581
1581
  function ensureProfileCleanExit(userDataDir) {
@@ -1591,7 +1591,7 @@ function ensureProfileCleanExit(userDataDir) {
1591
1591
  const log = createSubsystemLogger("browser").child("chrome");
1592
1592
  function exists(filePath) {
1593
1593
  try {
1594
- return fs.existsSync(filePath);
1594
+ return fsSync.existsSync(filePath);
1595
1595
  } catch {
1596
1596
  return false;
1597
1597
  }
@@ -1671,7 +1671,7 @@ async function launchSymiChrome(resolved, profile) {
1671
1671
  const exe = resolveBrowserExecutable(resolved);
1672
1672
  if (!exe) throw new Error("No supported browser found (Chrome/Brave/Edge/Chromium on macOS, Linux, or Windows).");
1673
1673
  const userDataDir = resolveSymiUserDataDir(profile.name);
1674
- fs.mkdirSync(userDataDir, { recursive: true });
1674
+ fsSync.mkdirSync(userDataDir, { recursive: true });
1675
1675
  const needsDecorate = !isProfileDecorated(userDataDir, profile.name, (profile.color ?? DEFAULT_SYMI_BROWSER_COLOR).toUpperCase());
1676
1676
  const spawnOnce = () => {
1677
1677
  const args = [
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
3
- import { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-OlFBYAw8.js";
3
+ import { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-DwDSKGn4.js";
4
4
 
5
5
  //#region src/markdown/fences.ts
6
6
  function parseFenceSpans(buffer) {
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { an as getPrimaryCommand, cn as hasHelpOrVersion } from "./entry.js";
3
- import { i as registerSubCliCommands, o as reparseProgramFromActionArgs } from "./register.subclis-Bi4jmYW6.js";
3
+ import { i as registerSubCliCommands, o as reparseProgramFromActionArgs } from "./register.subclis-Bb0yWevQ.js";
4
4
 
5
5
  //#region src/cli/program/command-registry.ts
6
6
  var command_registry_exports = /* @__PURE__ */ __exportAll({
@@ -22,7 +22,7 @@ const coreEntries = [
22
22
  hasSubcommands: false
23
23
  }],
24
24
  register: async ({ program }) => {
25
- (await import("./register.setup-CEW5ApHJ.js")).registerSetupCommand(program);
25
+ (await import("./register.setup-Ah9E7LHA.js")).registerSetupCommand(program);
26
26
  }
27
27
  },
28
28
  {
@@ -32,7 +32,7 @@ const coreEntries = [
32
32
  hasSubcommands: false
33
33
  }],
34
34
  register: async ({ program }) => {
35
- (await import("./register.onboard-DT1We9u2.js")).registerOnboardCommand(program);
35
+ (await import("./register.onboard-DJEZcUm5.js")).registerOnboardCommand(program);
36
36
  }
37
37
  },
38
38
  {
@@ -79,7 +79,7 @@ const coreEntries = [
79
79
  }
80
80
  ],
81
81
  register: async ({ program }) => {
82
- (await import("./register.maintenance-BKB_D_Py.js")).registerMaintenanceCommands(program);
82
+ (await import("./register.maintenance-DAwf6cHN.js")).registerMaintenanceCommands(program);
83
83
  }
84
84
  },
85
85
  {
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { D as escapeRegExp, W as isPlainObject, c as getActivePluginRegistry } from "./registry-DYq1AYOv.js";
3
- import { Q as DEFAULT_PROVIDER, T as resolveConfiguredModelRef, Z as DEFAULT_MODEL } from "./auth-profiles-q3HjbboY.js";
4
- import { f as listChannelDocks, r as listThinkingLevels } from "./thinking-BprCy23Z.js";
5
- import { r as normalizeChannelId } from "./plugins-BzmbgY7s.js";
2
+ import { D as escapeRegExp, W as isPlainObject, c as getActivePluginRegistry } from "./registry-UkL38jvt.js";
3
+ import { Q as DEFAULT_PROVIDER, T as resolveConfiguredModelRef, Z as DEFAULT_MODEL } from "./auth-profiles-CZZjOpX8.js";
4
+ import { f as listChannelDocks, r as listThinkingLevels } from "./thinking-C9-JAUzD.js";
5
+ import { r as normalizeChannelId } from "./plugins-Bkr5ZdYs.js";
6
6
 
7
7
  //#region src/config/commands.ts
8
8
  function resolveAutoDefault(providerId) {
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { Yt as resolveStateDir, l as routeLogsToStderr, nt as pathExists } from "./entry.js";
3
- import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-Bi4jmYW6.js";
4
- import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-Dk55OGO6.js";
3
+ import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-Bb0yWevQ.js";
4
+ import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-DSV-4T7A.js";
5
5
  import { t as getProgramContext } from "./program-context-CqzR_m-7.js";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
3
3
  import { h as pathExists } from "./utils-B-0b9bGM.js";
4
4
  import { i as routeLogsToStderr } from "./subsystem-D9vIQve0.js";
5
- import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-B2BcluHm.js";
5
+ import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-CiGMAzyC.js";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs/promises";
@@ -1,12 +1,12 @@
1
- import { n as resolveConfigPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-CE7eVGHg.js";
1
+ import { n as resolveConfigPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-CYmyCDsE.js";
2
2
  import { s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-BCzIW1Y2.js";
3
- import { I as resolveUserPath, P as resolveConfigDir, W as isPlainObject$1, k as isRecord, s as normalizeChatChannelId, t as CHANNEL_IDS } from "./registry-DYq1AYOv.js";
4
- import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-CpEJ0B88.js";
5
- import { J as shouldDeferShellEnvFallback, K as loadShellEnvFallback, X as DEFAULT_CONTEXT_TOKENS, Y as shouldEnableShellEnvFallback, q as resolveShellEnvFallbackTimeoutMs, w as parseModelRef } from "./auth-profiles-q3HjbboY.js";
6
- import { c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, f as normalizeEnvVarKey, l as isPathInside, o as normalizePluginsConfig, s as resolveEnableState, t as loadPluginManifestRegistry } from "./manifest-registry-yb7sAlu4.js";
3
+ import { I as resolveUserPath, P as resolveConfigDir, W as isPlainObject$1, k as isRecord, s as normalizeChatChannelId, t as CHANNEL_IDS } from "./registry-UkL38jvt.js";
4
+ import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-D68_xfTL.js";
5
+ import { J as shouldDeferShellEnvFallback, K as loadShellEnvFallback, X as DEFAULT_CONTEXT_TOKENS, Y as shouldEnableShellEnvFallback, q as resolveShellEnvFallbackTimeoutMs, w as parseModelRef } from "./auth-profiles-CZZjOpX8.js";
6
+ import { c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, f as normalizeEnvVarKey, l as isPathInside, o as normalizePluginsConfig, s as resolveEnableState, t as loadPluginManifestRegistry } from "./manifest-registry-0J48biqr.js";
7
7
  import { createRequire } from "node:module";
8
8
  import path from "node:path";
9
- import fs from "node:fs";
9
+ import fsSync from "node:fs";
10
10
  import os from "node:os";
11
11
  import JSON5 from "json5";
12
12
  import { isDeepStrictEqual } from "node:util";
@@ -20,7 +20,7 @@ function loadDotEnv(opts) {
20
20
  const quiet = opts?.quiet ?? true;
21
21
  dotenv.config({ quiet });
22
22
  const globalEnvPath = path.join(resolveConfigDir(process.env), ".env");
23
- if (!fs.existsSync(globalEnvPath)) return;
23
+ if (!fsSync.existsSync(globalEnvPath)) return;
24
24
  dotenv.config({
25
25
  quiet,
26
26
  path: globalEnvPath,
@@ -156,7 +156,7 @@ function resolveAgentMaxConcurrent(cfg) {
156
156
  //#endregion
157
157
  //#region src/config/talk.ts
158
158
  function readTalkApiKeyFromProfile(deps = {}) {
159
- const fsImpl = deps.fs ?? fs;
159
+ const fsImpl = deps.fs ?? fsSync;
160
160
  const osImpl = deps.os ?? os;
161
161
  const pathImpl = deps.path ?? path;
162
162
  const home = osImpl.homedir();
@@ -849,7 +849,7 @@ var IncludeProcessor = class IncludeProcessor {
849
849
  const normalized = path.normalize(resolved);
850
850
  if (!isPathInside(this.rootDir, normalized)) throw new ConfigIncludeError(`Include path escapes config directory: ${includePath} (root: ${this.rootDir})`, includePath);
851
851
  try {
852
- const real = fs.realpathSync(normalized);
852
+ const real = fsSync.realpathSync(normalized);
853
853
  if (!isPathInside(this.rootRealDir, real)) throw new ConfigIncludeError(`Include path resolves outside config directory (symlink): ${includePath} (root: ${this.rootDir})`, includePath);
854
854
  } catch (err) {
855
855
  if (err instanceof ConfigIncludeError) throw err;
@@ -885,13 +885,13 @@ var IncludeProcessor = class IncludeProcessor {
885
885
  };
886
886
  function safeRealpath(target) {
887
887
  try {
888
- return fs.realpathSync(target);
888
+ return fsSync.realpathSync(target);
889
889
  } catch {
890
890
  return target;
891
891
  }
892
892
  }
893
893
  const defaultResolver = {
894
- readFile: (p) => fs.readFileSync(p, "utf-8"),
894
+ readFile: (p) => fsSync.readFileSync(p, "utf-8"),
895
895
  parseJson: (raw) => JSON5.parse(raw)
896
896
  };
897
897
  /**
@@ -5583,7 +5583,7 @@ function resolveConfigPathForDeps(deps) {
5583
5583
  }
5584
5584
  function normalizeDeps(overrides = {}) {
5585
5585
  return {
5586
- fs: overrides.fs ?? fs,
5586
+ fs: overrides.fs ?? fsSync,
5587
5587
  json5: overrides.json5 ?? JSON5,
5588
5588
  env: overrides.env ?? process.env,
5589
5589
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
@@ -153,13 +153,24 @@ function closeStreamBubble(model) {
153
153
  streamBubble.classList.remove("streaming");
154
154
  streamBubble.classList.add("done");
155
155
 
156
- // Apply full markdown rendering to the final text
156
+ // Apply full markdown rendering to the final text. Build the replacement
157
+ // BEFORE wiping the existing content so a failing/empty render can't leave
158
+ // the bubble visibly blank ("response appeared then disappeared").
157
159
  const rawText = streamContent?.textContent ?? "";
158
160
  if (streamContent && rawText) {
159
- streamContent.innerHTML = "";
160
- const textBlock = renderBlock({ type: "text", text: rawText });
161
- streamContent.appendChild(textBlock);
162
- window.applyHighlighting(streamContent);
161
+ let textBlock = null;
162
+ try {
163
+ textBlock = renderBlock({ type: "text", text: rawText });
164
+ } catch (err) {
165
+ console.warn("[app] renderBlock failed during closeStreamBubble:", err);
166
+ }
167
+ if (textBlock && textBlock.textContent.trim()) {
168
+ streamContent.innerHTML = "";
169
+ streamContent.appendChild(textBlock);
170
+ window.applyHighlighting(streamContent);
171
+ }
172
+ // else: preserve original textContent — the plain stream is better than
173
+ // an empty bubble.
163
174
  }
164
175
 
165
176
  const elapsed = Date.now() - streamStart;
@@ -288,43 +288,28 @@ window.copyCode = async (btn) => {
288
288
  } catch {}
289
289
  };
290
290
 
291
- // ── Model token stripping (defense-in-depth for server-side filter) ──
292
- // These patterns are Gemma-specific control tokens. Only apply when the
293
- // active profile does NOT have structured thinking (i.e. Gemma/Ollama).
294
- // Models with native thinking (Claude, Nemotron) don't leak these tokens
295
- // and the regexes can corrupt legitimate output if applied blindly.
296
- const GEMMA_STRIP_TOKENS = [
297
- /<\|channel>\w*/gi,
298
- /<channel\|>/gi,
299
- /<start_of_turn>(?:model|user)?/gi,
300
- /<end_of_turn>/gi,
301
- /<\|(?:fim_prefix|fim_suffix|fim_middle)\|>/gi,
302
- /^\s*<bos>\s*/gim,
303
- ];
304
-
291
+ // ── Model token stripping (profile-driven) ───────────────────────────
292
+ // Strips whatever patterns the active profile declares in
293
+ // profile.filters.stripPatterns. There are no hardcoded Gemma patterns
294
+ // here relying on the profile means Qwen/Nemotron/Claude (which declare
295
+ // empty stripPatterns) pass through untouched, and the Ollama/Gemma
296
+ // profiles apply their own patterns. Server-side stripping in
297
+ // output-normalizer.ts remains the primary defense; this is best-effort
298
+ // for history messages that predate the active profile.
305
299
  function stripModelTokensClient(text) {
306
300
  const profile = window.activeModelProfile;
307
- let cleaned = text;
308
-
309
- // Only strip Gemma control tokens for models that need it
310
- if (!profile?.filters?.hasStructuredThinking) {
311
- for (const re of GEMMA_STRIP_TOKENS) {
312
- re.lastIndex = 0;
313
- cleaned = cleaned.replace(re, "");
314
- }
301
+ const patterns = profile?.filters?.stripPatterns;
302
+ if (!patterns?.length) {
303
+ return text;
315
304
  }
316
-
317
- // Profile-specific patterns on top
318
- if (profile?.filters?.stripPatterns?.length) {
319
- for (const pat of profile.filters.stripPatterns) {
320
- try {
321
- cleaned = cleaned.replace(new RegExp(pat, "gi"), "");
322
- } catch {
323
- /* skip invalid patterns */
324
- }
305
+ let cleaned = text;
306
+ for (const pat of patterns) {
307
+ try {
308
+ cleaned = cleaned.replace(new RegExp(pat, "gi"), "");
309
+ } catch {
310
+ /* skip invalid patterns */
325
311
  }
326
312
  }
327
-
328
313
  return cleaned;
329
314
  }
330
315
 
@@ -409,10 +394,14 @@ function renderBlock(block) {
409
394
  el.className = "msg-text";
410
395
  const rawText = block.text ?? "";
411
396
  const stripped = stripModelTokensClient(rawText);
412
- if (!stripped.trim()) {
413
- break; // Empty after stripping skip
397
+ // If stripping ate everything but we started with real text, render
398
+ // the raw text rather than silently dropping the message. Prevents
399
+ // the "response appeared then disappeared" regression.
400
+ const safeText = stripped.trim() ? stripped : rawText;
401
+ if (!safeText) {
402
+ break;
414
403
  }
415
- el.innerHTML = renderMarkdown(stripped);
404
+ el.innerHTML = renderMarkdown(safeText);
416
405
  break;
417
406
  }
418
407
 
@@ -1,18 +1,18 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { s as resolveStateDir } from "./paths-CE7eVGHg.js";
2
+ import { s as resolveStateDir } from "./paths-CYmyCDsE.js";
3
3
  import { m as normalizeOptionalAccountId, p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
4
- import { c as getActivePluginRegistry, v as createInternalHookEvent, x as triggerInternalHook } from "./registry-DYq1AYOv.js";
5
- import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
6
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-DASLSiel.js";
7
- import { d as getChannelDock } from "./thinking-BprCy23Z.js";
8
- import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BzmbgY7s.js";
9
- import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-W0JzCJJM.js";
10
- import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BHW8Yu5A.js";
11
- import { n as resolveMarkdownTableMode } from "./markdown-tables-Dnj2LQUc.js";
12
- import { t as getAgentScopedMediaLocalRoots } from "./local-roots-Se92wAN5.js";
13
- import { l as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-C4Bqsa_r.js";
4
+ import { c as getActivePluginRegistry, v as createInternalHookEvent, x as triggerInternalHook } from "./registry-UkL38jvt.js";
5
+ import { t as createSubsystemLogger } from "./subsystem-DN75fnEF.js";
6
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-Cr1X3W9i.js";
7
+ import { d as getChannelDock } from "./thinking-C9-JAUzD.js";
8
+ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-Bkr5ZdYs.js";
9
+ import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-CCZl4YHT.js";
10
+ import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-B9x_1qSr.js";
11
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DuRhvVpP.js";
12
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-Bh5xx9IO.js";
13
+ import { l as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-CPSKimCF.js";
14
14
  import path from "node:path";
15
- import fs from "node:fs";
15
+ import fsSync from "node:fs";
16
16
  import crypto from "node:crypto";
17
17
 
18
18
  //#region src/plugins/hooks.ts
@@ -721,11 +721,11 @@ function resolveFailedDir(stateDir) {
721
721
  /** Ensure the queue directory (and failed/ subdirectory) exist. */
722
722
  async function ensureQueueDir(stateDir) {
723
723
  const queueDir = resolveQueueDir(stateDir);
724
- await fs.promises.mkdir(queueDir, {
724
+ await fsSync.promises.mkdir(queueDir, {
725
725
  recursive: true,
726
726
  mode: 448
727
727
  });
728
- await fs.promises.mkdir(resolveFailedDir(stateDir), {
728
+ await fsSync.promises.mkdir(resolveFailedDir(stateDir), {
729
729
  recursive: true,
730
730
  mode: 448
731
731
  });
@@ -752,18 +752,18 @@ async function enqueueDelivery(params, stateDir) {
752
752
  const filePath = path.join(queueDir, `${id}.json`);
753
753
  const tmp = `${filePath}.${process.pid}.tmp`;
754
754
  const json = JSON.stringify(entry, null, 2);
755
- await fs.promises.writeFile(tmp, json, {
755
+ await fsSync.promises.writeFile(tmp, json, {
756
756
  encoding: "utf-8",
757
757
  mode: 384
758
758
  });
759
- await fs.promises.rename(tmp, filePath);
759
+ await fsSync.promises.rename(tmp, filePath);
760
760
  return id;
761
761
  }
762
762
  /** Remove a successfully delivered entry from the queue. */
763
763
  async function ackDelivery(id, stateDir) {
764
764
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
765
765
  try {
766
- await fs.promises.unlink(filePath);
766
+ await fsSync.promises.unlink(filePath);
767
767
  } catch (err) {
768
768
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) !== "ENOENT") throw err;
769
769
  }
@@ -771,16 +771,16 @@ async function ackDelivery(id, stateDir) {
771
771
  /** Update a queue entry after a failed delivery attempt. */
772
772
  async function failDelivery(id, error, stateDir) {
773
773
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
774
- const raw = await fs.promises.readFile(filePath, "utf-8");
774
+ const raw = await fsSync.promises.readFile(filePath, "utf-8");
775
775
  const entry = JSON.parse(raw);
776
776
  entry.retryCount += 1;
777
777
  entry.lastError = error;
778
778
  const tmp = `${filePath}.${process.pid}.tmp`;
779
- await fs.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
779
+ await fsSync.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
780
780
  encoding: "utf-8",
781
781
  mode: 384
782
782
  });
783
- await fs.promises.rename(tmp, filePath);
783
+ await fsSync.promises.rename(tmp, filePath);
784
784
  }
785
785
 
786
786
  //#endregion
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, y as trigge
5
5
  import { t as createSubsystemLogger } from "./subsystem-CZixfwU8.js";
6
6
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Cn6drXx2.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-71oIavrF.js";
8
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-CepVOR4e.js";
8
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-BJrRH97f.js";
9
9
  import { d as getChannelDock } from "./thinking-W85Rb32m.js";
10
10
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-DTMTDXwE.js";
11
11
  import { n as resolveMarkdownTableMode } from "./markdown-tables-DawaaZEe.js";
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-DN75fnEF.js";
3
3
  import { i as pruneDiagnosticSessionStates, r as getDiagnosticSessionState, t as diagnosticSessionStates } from "./diagnostic-session-state-Zw87xFym.js";
4
4
 
5
5
  //#region src/infra/diagnostic-events.ts
@@ -1,7 +1,7 @@
1
1
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
2
2
  import { r as resolveCliName } from "./command-format-COaS-S7B.js";
3
3
  import { t as note } from "./note-DQ9BvHF2.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DrDwlbAX.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-dlL2VvFw.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { r as resolveCliName } from "./command-format-BtYOfWxC.js";
2
2
  import { t as resolveSymiPackageRoot } from "./symi-root-BNuQ4lAT.js";
3
3
  import { t as note } from "./note-DDecZomM.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-1HmgP7tY.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DjQVuJdD.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7