@symerian/symi 2.6.41 → 2.7.0

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 (292) hide show
  1. package/dist/{accounts-DDuIpcln.js → accounts-Cd816n6l.js} +7 -7
  2. package/dist/{accounts-bK-Yqdwx.js → accounts-CokRskCl.js} +1 -1
  3. package/dist/{accounts-DyJN4_vR.js → accounts-mN_EcgxC.js} +1 -1
  4. package/dist/{acp-cli-CrEIx-c7.js → acp-cli-COzlJi3B.js} +6 -6
  5. package/dist/{agent-scope-CgUHAtCo.js → agent-scope-BRwEc2pG.js} +18 -18
  6. package/dist/{agents-B4RNdKQ3.js → agents-Cu2bthAX.js} +4 -4
  7. package/dist/{agents.config-CA31c0kN.js → agents.config-5PTwsijs.js} +1 -1
  8. package/dist/{agents.config-CG2klYOg.js → agents.config-Dib8Uo2P.js} +2 -2
  9. package/dist/{api-key-rotation-CzuPlV2t.js → api-key-rotation-CEr3lKih.js} +1 -1
  10. package/dist/{audio-preflight-K-s65jbB.js → audio-preflight-COaFw917.js} +4 -4
  11. package/dist/{audio-preflight-CIiS5cfP.js → audio-preflight-mj-z_vQ6.js} +28 -28
  12. package/dist/{audit-DB9YkTVX.js → audit-Djfdh06o.js} +23 -23
  13. package/dist/{auth-choice-CCGIgXvF.js → auth-choice-5gul6jy2.js} +1 -1
  14. package/dist/{auth-choice-CiMf3Pjp.js → auth-choice-CmSUU3t8.js} +8 -8
  15. package/dist/{auth-token-Cay2jwzn.js → auth-token-83A2btbE.js} +1 -1
  16. package/dist/{banner-BNsB_A87.js → banner-B4vQpMIJ.js} +1 -1
  17. package/dist/{bindings-DFaVVCsf.js → bindings-ChzePa8q.js} +1 -1
  18. package/dist/{browser-cli-Ctn9do4z.js → browser-cli-BTD0NlrA.js} +9 -9
  19. package/dist/build-info.json +3 -3
  20. package/dist/bundled/boot-md/handler.js +6 -6
  21. package/dist/bundled/session-memory/handler.js +6 -6
  22. package/dist/{call-DwpGquzW.js → call-tmHtVCkn.js} +9 -9
  23. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  24. package/dist/{channel-options-BMQlkUDX.js → channel-options-DVf4CJIu.js} +1 -1
  25. package/dist/{channel-options-pAH4A-xX.js → channel-options-DsWGc55A.js} +2 -2
  26. package/dist/{channel-selection-V2xDgw16.js → channel-selection-DaJDux-Q.js} +1 -1
  27. package/dist/{channel-web-Dwuj48T5.js → channel-web-vGC-WJXi.js} +17 -17
  28. package/dist/{channels-cli-rmDzxb0W.js → channels-cli-COayA28A.js} +76 -76
  29. package/dist/{channels-cli-CuExxB0U.js → channels-cli-CSv05N3q.js} +4 -4
  30. package/dist/{channels-status-issues-CJ0Vb_9z.js → channels-status-issues-B_PI3nEE.js} +1 -1
  31. package/dist/{chrome-DU2ZysN3.js → chrome-CSJzpT9Z.js} +2 -2
  32. package/dist/{chrome-BYOhnxTr.js → chrome-CbA-qnhp.js} +7 -7
  33. package/dist/cli/daemon-cli.js +1 -1
  34. package/dist/{cli-Mcq2pPI0.js → cli-B-g79xPe.js} +1 -1
  35. package/dist/{cli-BPGZalMg.js → cli-DJjOxip6.js} +63 -63
  36. package/dist/{client-jI1oE0_k.js → client-Bj_vTpri.js} +1 -1
  37. package/dist/{command-registry-BoEw2RzH.js → command-registry-BvpLfzl7.js} +9 -9
  38. package/dist/{commands-BNLCWX6e.js → commands-CtocZ4Lg.js} +1 -1
  39. package/dist/{commands-registry-BT0-zzs3.js → commands-registry-BZ0ZSQpM.js} +3 -3
  40. package/dist/{completion-cli-CQVZGJPg.js → completion-cli-CfRZ-7QF.js} +2 -2
  41. package/dist/{completion-cli-CE9Xqlyx.js → completion-cli-DtQcXg1N.js} +12 -12
  42. package/dist/{config-cli-mU_ckD4l.js → config-cli-D9Z78raJ.js} +4 -4
  43. package/dist/{config-cli-BucNvr-c.js → config-cli-DL2RdfLM.js} +1 -1
  44. package/dist/{config-guard-CEkSg4hl.js → config-guard-4oRmpR0a.js} +12 -12
  45. package/dist/{config-Dz95lSBW.js → config-tNauHpdq.js} +2 -2
  46. package/dist/{config-validation-HDVDlMSV.js → config-validation-BoDWiwe3.js} +1 -1
  47. package/dist/{configure-CxnBcN95.js → configure-Dq4f8WPa.js} +3 -3
  48. package/dist/{configure-CDOF87Fk.js → configure-jDpF8lmx.js} +15 -15
  49. package/dist/{control-service-BYKXzY4f.js → control-service-BBnhN7aZ.js} +4 -4
  50. package/dist/control-ui/css/style.css +51 -0
  51. package/dist/control-ui/js/app.js +39 -0
  52. package/dist/control-ui/js/gateway.js +2 -0
  53. package/dist/control-ui/js/settings.js +71 -8
  54. package/dist/{control-ui-assets-B7moDVHX.js → control-ui-assets-6n-YayeS.js} +1 -1
  55. package/dist/{cron-cli-DCpsXkrw.js → cron-cli-D165ecaj.js} +10 -10
  56. package/dist/{daemon-cli-DSDcmWOi.js → daemon-cli-BccZzUb0.js} +11 -11
  57. package/dist/{daemon-runtime-mE1b-Q48.js → daemon-runtime-u01h46bE.js} +10 -10
  58. package/dist/{deliver-B4KZ6-oZ.js → deliver-BYdNAEqj.js} +7 -7
  59. package/dist/{deliver-C1HRkzPJ.js → deliver-C7NePF9Z.js} +1 -1
  60. package/dist/{devices-cli-x3jIP4Ih.js → devices-cli-D0N71nqX.js} +6 -6
  61. package/dist/{diagnostics-BRwihzJG.js → diagnostics-BrUo0gqs.js} +5 -5
  62. package/dist/{directory-cli-KgsAVTA0.js → directory-cli-aj7aXIBM.js} +7 -7
  63. package/dist/{dm-policy-shared-DlDAGtZL.js → dm-policy-shared-epgkayyq.js} +2 -2
  64. package/dist/{dns-cli-Cwr92Aiq.js → dns-cli-Dit09wbu.js} +3 -3
  65. package/dist/{dock-BhS32F6E.js → dock-BYiRZSgZ.js} +4 -4
  66. package/dist/{docs-cli-qE-blOLC.js → docs-cli-CyWGMA-e.js} +1 -1
  67. package/dist/{doctor-completion-CoftKlUX.js → doctor-completion-Ccb83Wl5.js} +2 -2
  68. package/dist/{doctor-completion-CHF_TwGQ.js → doctor-completion-oQemZItC.js} +1 -1
  69. package/dist/{doctor-config-flow-iIzSEQxb.js → doctor-config-flow-BXmHd2bb.js} +10 -10
  70. package/dist/entry.js +1 -1
  71. package/dist/{exec-approvals-cli-BSgxsdMt.js → exec-approvals-cli-CZ-iTtNO.js} +13 -13
  72. package/dist/extensionAPI.js +1 -1
  73. package/dist/{fs-safe-CUjO1ca2.js → fs-safe-CTDvb1DF.js} +6 -6
  74. package/dist/{gateway-cli-SNaqDM7f.js → gateway-cli-C1zPKZ7B.js} +137 -121
  75. package/dist/{gateway-cli-G7fiXsQ6.js → gateway-cli-zbVm1MBQ.js} +32 -16
  76. package/dist/{gateway-rpc-5fREQe9Q.js → gateway-rpc-B1Wzoj99.js} +1 -1
  77. package/dist/{glass-ui-ws-CF0__vuO.js → glass-ui-ws-CvUFd4C6.js} +28 -9
  78. package/dist/{glass-ui-ws-he25wGFt.js → glass-ui-ws-D3tAmqKX.js} +104 -85
  79. package/dist/{health-q7706M36.js → health-DQEqLYg1.js} +1 -1
  80. package/dist/{health-en2N_Kqc.js → health-o847FIt1.js} +13 -13
  81. package/dist/{hooks-cli-ChQbBpyb.js → hooks-cli-D_UW9fc8.js} +2 -2
  82. package/dist/{hooks-cli-C4rVaLzZ.js → hooks-cli-sYjbF4I6.js} +77 -77
  83. package/dist/{image-CbyTdMd5.js → image-C3ugMkb5.js} +1 -1
  84. package/dist/{image-BWmcNF8N.js → image-lCS3o9xj.js} +3 -3
  85. package/dist/{image-ops-1OJMSAUX.js → image-ops-DYbDWaIA.js} +10 -10
  86. package/dist/index.js +73 -73
  87. package/dist/{inspect-CvbbCuoa.js → inspect-CNYyHVfH.js} +4 -4
  88. package/dist/{install-safe-path-D3Uz77u7.js → install-safe-path-D3mg1DMG.js} +11 -11
  89. package/dist/{installs-DQcRVF1U.js → installs-CYTVYWH_.js} +10 -10
  90. package/dist/{ir-DZam9q5M.js → ir-Dt4hOzxG.js} +6 -6
  91. package/dist/{lifecycle-core-C4HzGXA1.js → lifecycle-core-DxmxQdhS.js} +5 -5
  92. package/dist/llm-slug-generator.js +6 -6
  93. package/dist/{local-roots-aAFLQGkY.js → local-roots-BBeKX7PX.js} +2 -2
  94. package/dist/{login-DODfJ3Dn.js → login-CnjdNmGD.js} +3 -3
  95. package/dist/{login-qr-CBRxijIg.js → login-qr-DUf6CM0M.js} +5 -5
  96. package/dist/{logs-cli-CfGj-dOg.js → logs-cli-BVd6h2-Q.js} +7 -7
  97. package/dist/{manager-D4LJSRyZ.js → manager-C1CfGzZ2.js} +13 -13
  98. package/dist/{markdown-tables-CEbN0fEm.js → markdown-tables-ZwP14ydw.js} +1 -1
  99. package/dist/{memory-cli-DDumUksr.js → memory-cli-DhkRAIdT.js} +14 -14
  100. package/dist/{model-tWhwnFf8.js → model-CeeOcylL.js} +1 -1
  101. package/dist/{model-catalog-8Son0J4O.js → model-catalog-CvbwxWuC.js} +4 -4
  102. package/dist/{model-picker-CAm2Bftd.js → model-picker-C2MqloOs.js} +3 -3
  103. package/dist/{model-selection-CyFvYcRt.js → model-selection-X1oLh3CE.js} +9 -9
  104. package/dist/{models-DOTpfa7b.js → models-Zol34e73.js} +2 -2
  105. package/dist/{models-cli-MJAY_Wg4.js → models-cli-BzcEA9oa.js} +3 -3
  106. package/dist/{models-cli-CBl45f7R.js → models-cli-DnMUzr15.js} +72 -72
  107. package/dist/{models-config-CFFjJPe7.js → models-config-CEMioDUi.js} +7 -7
  108. package/dist/{node-cli-DnfDOh1d.js → node-cli-BVJid4L_.js} +28 -28
  109. package/dist/{node-service-CD47Qpf1.js → node-service-CXzMs782.js} +1 -1
  110. package/dist/{nodes-cli-Ci3oxw8k.js → nodes-cli-BN2Nslim.js} +10 -10
  111. package/dist/{nodes-screen-8Bq7DiSa.js → nodes-screen-Cd49cSPb.js} +4 -4
  112. package/dist/{npm-registry-spec-C0CPT3vr.js → npm-registry-spec-DchndI6P.js} +9 -9
  113. package/dist/{onboard-DQdGJ1lE.js → onboard-CSseK0Co.js} +13 -13
  114. package/dist/{onboard-Bx02XPb1.js → onboard-CxOT_xD4.js} +2 -2
  115. package/dist/{onboard-channels-Bp89ZT6Q.js → onboard-channels-CUlITipG.js} +5 -5
  116. package/dist/{onboard-channels-Ct2eNYUC.js → onboard-channels-D-lh_Vh1.js} +1 -1
  117. package/dist/{onboard-custom-XiomtQr7.js → onboard-custom-DTcLdtA9.js} +3 -3
  118. package/dist/{onboard-helpers-DFvWPFhU.js → onboard-helpers-CdPNw25E.js} +8 -8
  119. package/dist/{onboard-hooks-C3ok8kqB.js → onboard-hooks-C_2_jpWg.js} +1 -1
  120. package/dist/{onboard-remote-BURDxwoE.js → onboard-remote-v6QMnyJD.js} +1 -1
  121. package/dist/{onboard-skills-CbzgBT1W.js → onboard-skills-CQtkRP20.js} +4 -4
  122. package/dist/{onboarding-Dnn_0VTy.js → onboarding-DktESmTv.js} +3 -3
  123. package/dist/{onboarding-DxUcsrKV.js → onboarding-Dn5agNG_.js} +13 -13
  124. package/dist/{onboarding.finalize-1kzzMLFM.js → onboarding.finalize-Bm-1Kdnh.js} +6 -6
  125. package/dist/{onboarding.finalize-Dwr-jEtL.js → onboarding.finalize-CTIZ1zvV.js} +75 -75
  126. package/dist/{onboarding.gateway-config-DKwJ5bWd.js → onboarding.gateway-config-CwnQkyO0.js} +14 -14
  127. package/dist/{openai-model-default-WqcGxyFM.js → openai-model-default-4kBA1_78.js} +2 -2
  128. package/dist/{outbound-wnv03tb3.js → outbound-_Ir3M05f.js} +4 -4
  129. package/dist/{outbound-attachment-Bw-c5Cdp.js → outbound-attachment-Qfh5dlsg.js} +2 -2
  130. package/dist/{pairing-cli-DSM82gJG.js → pairing-cli-C8UXBJ_A.js} +8 -8
  131. package/dist/{pairing-labels-DyXoD1DS.js → pairing-labels-Dxb898X5.js} +1 -1
  132. package/dist/{pairing-store-CK726Dzq.js → pairing-store-B8ktu-6j.js} +2 -2
  133. package/dist/{pairing-token-CX3NN_qj.js → pairing-token-AV-MMfVE.js} +7 -7
  134. package/dist/{paths-BBm9fwuG.js → paths-CT6jsi4E.js} +1 -1
  135. package/dist/{pi-auth-json-zHckislA.js → pi-auth-json-FpfHyEcu.js} +5 -5
  136. package/dist/{pi-embedded-BfEg6Wwb.js → pi-embedded-CYDMb5q0.js} +79 -3
  137. package/dist/{pi-embedded-helpers-GaCyI2oH.js → pi-embedded-helpers-BgRcgoC9.js} +4 -4
  138. package/dist/{pi-embedded-helpers-BgdB5kvy.js → pi-embedded-helpers-Bs4eMaNo.js} +6 -6
  139. package/dist/{pi-tools.policy-DRWb_Cax.js → pi-tools.policy-BBxnqCay.js} +4 -4
  140. package/dist/{plugin-auto-enable-CP0nONRL.js → plugin-auto-enable-DwIrzVOA.js} +2 -2
  141. package/dist/{plugin-registry-BMFEJ4FA.js → plugin-registry-CJGPW1-k.js} +1 -1
  142. package/dist/{plugin-registry-wAQeBSeD.js → plugin-registry-d0oZLl6y.js} +3 -3
  143. package/dist/plugin-sdk/agents/pi-embedded-runner/long-task-prompt.d.ts +5 -0
  144. package/dist/plugin-sdk/{channel-web-Ba27v-Om.js → channel-web-Dm-CzA1O.js} +1 -1
  145. package/dist/plugin-sdk/index.js +2 -2
  146. package/dist/plugin-sdk/{reply-Bok_WQGW.js → reply-4HEU7aDS.js} +79 -3
  147. package/dist/plugin-sdk/{web-BoOAa0Xn.js → web-Cclb7FTq.js} +2 -2
  148. package/dist/{plugins-DKDeQZF0.js → plugins-BAyxWQSz.js} +2 -2
  149. package/dist/{plugins-cli-B36YKKla.js → plugins-cli-BWgjIJQL.js} +72 -72
  150. package/dist/{plugins-cli-DoJbbST7.js → plugins-cli-CL0tzkMo.js} +2 -2
  151. package/dist/{ports-BOmtxoTv.js → ports-OZQlocB7.js} +2 -2
  152. package/dist/{ports-DtW62rqS.js → ports-u9lWy2Jt.js} +1 -1
  153. package/dist/{program-4f7W2RMs.js → program-BHjH97Q_.js} +7 -7
  154. package/dist/{program-context-Y4KnAKNT.js → program-context-CXZHSZ4D.js} +39 -39
  155. package/dist/{prompt-select-styled-D0sLJ4TD.js → prompt-select-styled-BUFEoSlM.js} +38 -38
  156. package/dist/{prompt-select-styled-Dql_0SI0.js → prompt-select-styled-D8LXSUR7.js} +4 -4
  157. package/dist/{provider-auth-helpers-GSv3namf.js → provider-auth-helpers-BFHctF2f.js} +1 -1
  158. package/dist/{provider-auth-helpers-CJbHC_mv.js → provider-auth-helpers-CeAbh3lv.js} +5 -5
  159. package/dist/{push-apns-giplY7u-.js → push-apns-BylbQyP9.js} +1 -1
  160. package/dist/{push-apns-sxB8QxSj.js → push-apns-DqFdzIkc.js} +4 -4
  161. package/dist/{pw-ai-pQoxTh-a.js → pw-ai--LDjnyuN.js} +1 -1
  162. package/dist/{pw-ai-DQohWnzT.js → pw-ai-CfrnAHwA.js} +7 -7
  163. package/dist/{qmd-manager-CCUK1xoc.js → qmd-manager-DUNbG4Qr.js} +18 -18
  164. package/dist/{qr-cli-CejYwqsj.js → qr-cli-BZYa2gvF.js} +3 -3
  165. package/dist/{register.agent-_2tVQLMK.js → register.agent-DxAqRAt3.js} +6 -6
  166. package/dist/{register.agent-vd2BSsyE.js → register.agent-bzSGKS-l.js} +82 -82
  167. package/dist/register.configure-Boyfir72.js +148 -0
  168. package/dist/{register.configure-BVKwTrz8.js → register.configure-WS1nlSp8.js} +6 -6
  169. package/dist/{register.maintenance-XySU31jf.js → register.maintenance-B1QcUr38.js} +85 -85
  170. package/dist/{register.maintenance-BqYR2fop.js → register.maintenance-D_qMTrgD.js} +8 -8
  171. package/dist/{register.message-CCfWNWs3.js → register.message-CJF8gLAN.js} +64 -64
  172. package/dist/{register.message-DOyREWdG.js → register.message-zu3HGGff.js} +2 -2
  173. package/dist/{register.onboard-Dy_D_uMj.js → register.onboard-9dwNqCe6.js} +4 -4
  174. package/dist/{register.onboard-zmF-euog.js → register.onboard-CswoaT7q.js} +75 -75
  175. package/dist/{register.setup-DiGPa1Fw.js → register.setup-CvomtGGu.js} +78 -78
  176. package/dist/{register.setup-cE7gPp2m.js → register.setup-TcjUu6HC.js} +4 -4
  177. package/dist/{register.status-health-sessions-ksv1WnIs.js → register.status-health-sessions-CM1SX81r.js} +3 -3
  178. package/dist/{register.status-health-sessions-DWKL1rkz.js → register.status-health-sessions-CQMvbwr6.js} +76 -76
  179. package/dist/{register.subclis-Crt_IYK0.js → register.subclis-CVQASXaL.js} +9 -9
  180. package/dist/{replies-BMqtgBhh.js → replies-Dy92jzrz.js} +1 -1
  181. package/dist/{reply-CjYJHt_H.js → reply-CpNWtuU4.js} +216 -140
  182. package/dist/{reply-prefix-CE2YmmsD.js → reply-prefix-BLOOs1aW.js} +1 -1
  183. package/dist/{resolve-route-BMoTaVAH.js → resolve-route-BcnaXYvh.js} +2 -2
  184. package/dist/{routes-BAZTZNuQ.js → routes-CVwRcA9D.js} +8 -8
  185. package/dist/{rpc-Co5PQ3IJ.js → rpc-CZFfee1J.js} +1 -1
  186. package/dist/{run-main-bOlPbL7t.js → run-main-Dq6tfDry.js} +14 -14
  187. package/dist/{runner-DRv0uCK_.js → runner-BAVs-p6Z.js} +20 -20
  188. package/dist/{runner-B0AbN8wV.js → runner-cJ3m-bxK.js} +1 -1
  189. package/dist/{sandbox-B6N8cV4d.js → sandbox-HZ_uilsn.js} +18 -18
  190. package/dist/{sandbox-cli-DwzaNjIJ.js → sandbox-cli-wZtiyo8g.js} +20 -20
  191. package/dist/{security-cli-D5BWzqEJ.js → security-cli-BESmRIrl.js} +36 -36
  192. package/dist/{send-CQVnyJyF.js → send-BVBCh27_.js} +13 -13
  193. package/dist/{send-DVm0du0_.js → send-CXFTeD_J.js} +4 -4
  194. package/dist/{send-B3RdXvjC.js → send-DT-5buW5.js} +6 -6
  195. package/dist/{send-9SapUCg7.js → send-DsSI8z3F.js} +6 -6
  196. package/dist/{send-Bm4ULEzh.js → send-JWV62VbW.js} +6 -6
  197. package/dist/{server-context-CCBZN8a0.js → server-context-VlF1_hYj.js} +5 -5
  198. package/dist/{server-methods-VimYvcpY.js → server-methods-B0pdetGJ.js} +130 -64
  199. package/dist/{server-methods-CiwWwj6K.js → server-methods-IBEaQXPX.js} +177 -111
  200. package/dist/{server-node-events-DYC45lKC.js → server-node-events-BACmfyjo.js} +64 -64
  201. package/dist/{server-node-events-CHmLiFNV.js → server-node-events-CyDj7Txd.js} +2 -2
  202. package/dist/{service-osK70kTZ.js → service-D80PyJxB.js} +15 -15
  203. package/dist/{session-DsJGtM7g.js → session-6Qyc4cBQ.js} +2 -2
  204. package/dist/{session-dirs-Dgz7kkUM.js → session-dirs-DPzjjra2.js} +2 -2
  205. package/dist/{sessions-Cpgnq0pA.js → sessions-jTAGYjWl.js} +13 -13
  206. package/dist/{shared-DnmJ0ABB.js → shared-BV7WhIkY.js} +1 -1
  207. package/dist/{shared-73T9fyuK.js → shared-BfhtOZAz.js} +3 -3
  208. package/dist/{skill-commands-Cxw-jNxU.js → skill-commands-ZXbEITKi.js} +5 -5
  209. package/dist/{skill-scanner-hMtQbWPV.js → skill-scanner-w3DJvw1Q.js} +5 -5
  210. package/dist/{skills-6jdJQ5ZL.js → skills-DqQUtOph.js} +4 -4
  211. package/dist/{skills-cli-DXkx4vNV.js → skills-cli-D3lePXkf.js} +7 -7
  212. package/dist/{skills-install-CWVdJkLn.js → skills-install-HGYidhrv.js} +3 -3
  213. package/dist/{skills-status-C3ptXwnh.js → skills-status-Cjsh8we0.js} +1 -1
  214. package/dist/{sqlite-Dx3J_aSE.js → sqlite-BV5ILFtC.js} +12 -12
  215. package/dist/{status-DxhtJtzE.js → status-BJtbD-cG.js} +2 -2
  216. package/dist/{status-Dt_MXoNa.js → status-DUeTrQSz.js} +1 -1
  217. package/dist/{status-CA5wJHMj.js → status-DzHL-eVu.js} +3 -3
  218. package/dist/{status-DEpM69Pd.js → status-nzJEZmNT.js} +25 -25
  219. package/dist/{status.update-CG0ciGaf.js → status.update-TlYwuzTa.js} +3 -3
  220. package/dist/{store-r1DJSDq-.js → store-DvtcmOKj.js} +5 -5
  221. package/dist/{subagent-registry-BPwn3Qm7.js → subagent-registry-CzS4CfnV.js} +79 -3
  222. package/dist/{symi-root-CrGJbkzf.js → symi-root-MF6_6SCS.js} +2 -2
  223. package/dist/{system-cli-DFZNGx0i.js → system-cli-C2yhGP4C.js} +7 -7
  224. package/dist/{systemd-DT6SbCim.js → systemd-CevHlgD4.js} +5 -5
  225. package/dist/{systemd-hints-xYZbFny_.js → systemd-hints-DmgRnw1L.js} +6 -6
  226. package/dist/{systemd-linger-DCskIKcx.js → systemd-linger-ScxQ1_H4.js} +1 -1
  227. package/dist/{tables-BEzT0Da4.js → tables-C38rzF6E.js} +1 -1
  228. package/dist/{target-errors-7AvoVa10.js → target-errors-CCz79CmV.js} +4 -4
  229. package/dist/{tool-images-DvUBlqjX.js → tool-images-B-pqX3nX.js} +1 -1
  230. package/dist/{tui-DjPsMdL6.js → tui-D2MOx3Kx.js} +7 -7
  231. package/dist/{tui-cli-pWD_NrUR.js → tui-cli-B2ii7u23.js} +28 -28
  232. package/dist/{unified-runner-CVkyzT1I.js → unified-runner-BtO3UQSd.js} +93 -17
  233. package/dist/{update-Ya0e-JnM.js → update-Don6XTH9.js} +3 -3
  234. package/dist/{update-check-7EzEjSzb.js → update-check-DCo5RtKp.js} +5 -5
  235. package/dist/{update-cli-Dh_dfprI.js → update-cli-DRODEMSI.js} +8 -8
  236. package/dist/{update-cli-Dv4c5Gup.js → update-cli-gKtjyXlD.js} +95 -95
  237. package/dist/{update-runner-MMFI1UZ0.js → update-runner-AsKAxe31.js} +15 -15
  238. package/dist/{update-runner-CG_kbbGR.js → update-runner-JcdOHr71.js} +1 -1
  239. package/dist/{web-DCBOD-Vj.js → web-BIzWZFiN.js} +1 -1
  240. package/dist/{web-BUc-ts5b.js → web-DGo16lWn.js} +6 -6
  241. package/dist/{web-CJk-lv93.js → web-DKwOxo8E.js} +1 -1
  242. package/dist/web-sefqR11J.js +110 -0
  243. package/dist/{webhooks-cli-BRxe4uCg.js → webhooks-cli-DbnQ2BVE.js} +4 -4
  244. package/dist/{whatsapp-actions-ChO_shrk.js → whatsapp-actions-CqXxtCoj.js} +15 -15
  245. package/dist/{with-timeout-CtVdu_1U.js → with-timeout-Cm5EhxG_.js} +1 -1
  246. package/dist/{workspace-dirs-GpkFi6Kw.js → workspace-dirs-DKu48umx.js} +1 -1
  247. package/dist/{wsl-q8spwrME.js → wsl-xNOi_Ch8.js} +2 -2
  248. package/extensions/bluebubbles/package.json +1 -1
  249. package/extensions/copilot-proxy/package.json +1 -1
  250. package/extensions/diagnostics-otel/package.json +1 -1
  251. package/extensions/discord/package.json +1 -1
  252. package/extensions/feishu/package.json +1 -1
  253. package/extensions/google-antigravity-auth/package.json +1 -1
  254. package/extensions/google-gemini-cli-auth/package.json +1 -1
  255. package/extensions/googlechat/package.json +1 -1
  256. package/extensions/imessage/package.json +1 -1
  257. package/extensions/irc/package.json +1 -1
  258. package/extensions/learning-loop/package.json +1 -1
  259. package/extensions/line/package.json +1 -1
  260. package/extensions/llm-task/package.json +1 -1
  261. package/extensions/matrix/CHANGELOG.md +12 -0
  262. package/extensions/matrix/package.json +1 -1
  263. package/extensions/mattermost/package.json +1 -1
  264. package/extensions/memory-core/package.json +1 -1
  265. package/extensions/memory-lancedb/package.json +1 -1
  266. package/extensions/minimax-portal-auth/package.json +1 -1
  267. package/extensions/msteams/CHANGELOG.md +12 -0
  268. package/extensions/msteams/package.json +1 -1
  269. package/extensions/nextcloud-talk/package.json +1 -1
  270. package/extensions/nostr/CHANGELOG.md +12 -0
  271. package/extensions/nostr/package.json +1 -1
  272. package/extensions/open-prose/package.json +1 -1
  273. package/extensions/outlook/package.json +1 -1
  274. package/extensions/pipeline/package.json +1 -1
  275. package/extensions/signal/package.json +1 -1
  276. package/extensions/slack/package.json +1 -1
  277. package/extensions/telegram/package.json +1 -1
  278. package/extensions/tlon/package.json +1 -1
  279. package/extensions/twitch/CHANGELOG.md +12 -0
  280. package/extensions/twitch/package.json +1 -1
  281. package/extensions/voice-call/CHANGELOG.md +12 -0
  282. package/extensions/voice-call/package.json +1 -1
  283. package/extensions/whatsapp/package.json +1 -1
  284. package/extensions/zalo/CHANGELOG.md +12 -0
  285. package/extensions/zalo/package.json +1 -1
  286. package/extensions/zalouser/CHANGELOG.md +12 -0
  287. package/extensions/zalouser/package.json +1 -1
  288. package/package.json +1 -1
  289. package/skills/long-task/SKILL.md +57 -0
  290. package/skills/long-task/scripts/detach-task.sh +135 -0
  291. package/dist/register.configure-D-XV6_Nb.js +0 -148
  292. package/dist/web-CfVd3Mhp.js +0 -110
@@ -1,19 +1,19 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { X as resolvePreferredSymiTmpDir } from "./utils-B-0b9bGM.js";
3
- import { i as loadConfig } from "./config-Dz95lSBW.js";
4
- import { _ as maxBytesForKind, l as extensionForMime } from "./image-ops-1OJMSAUX.js";
5
- import { v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
3
+ import { i as loadConfig } from "./config-tNauHpdq.js";
4
+ import { _ as maxBytesForKind, l as extensionForMime } from "./image-ops-DYbDWaIA.js";
5
+ import { v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-BAyxWQSz.js";
6
6
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-bG1Q8FzV.js";
7
7
  import { n as retryAsync, t as resolveRetryConfig } from "./retry-BoS4e4X_.js";
8
8
  import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-1dhPX1NK.js";
9
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
10
- import { a as loadWebMedia, o as loadWebMediaRaw } from "./ir-DZam9q5M.js";
9
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-ZwP14ydw.js";
10
+ import { a as loadWebMedia, o as loadWebMediaRaw } from "./ir-Dt4hOzxG.js";
11
11
  import { n as normalizePollInput, t as normalizePollDurationHours } from "./polls-DhH5YkzN.js";
12
12
  import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-BOiuJS3t.js";
13
13
  import { t as resolveFetch } from "./fetch-DTNGXEzX.js";
14
- import { t as convertMarkdownTables } from "./tables-BEzT0Da4.js";
14
+ import { t as convertMarkdownTables } from "./tables-C38rzF6E.js";
15
15
  import path from "node:path";
16
- import fs from "node:fs/promises";
16
+ import fsPromises from "node:fs/promises";
17
17
  import { execFile } from "node:child_process";
18
18
  import { promisify } from "node:util";
19
19
  import crypto from "node:crypto";
@@ -1524,7 +1524,7 @@ async function generateWaveformFromPcm(filePath) {
1524
1524
  "8000",
1525
1525
  tempPcm
1526
1526
  ]);
1527
- const pcmData = await fs.readFile(tempPcm);
1527
+ const pcmData = await fsPromises.readFile(tempPcm);
1528
1528
  const samples = new Int16Array(pcmData.buffer, pcmData.byteOffset, pcmData.byteLength / 2);
1529
1529
  const step = Math.max(1, Math.floor(samples.length / WAVEFORM_SAMPLES));
1530
1530
  const waveform = [];
@@ -1543,7 +1543,7 @@ async function generateWaveformFromPcm(filePath) {
1543
1543
  return Buffer.from(waveform).toString("base64");
1544
1544
  } finally {
1545
1545
  try {
1546
- await fs.unlink(tempPcm);
1546
+ await fsPromises.unlink(tempPcm);
1547
1547
  } catch {}
1548
1548
  }
1549
1549
  }
@@ -1855,7 +1855,7 @@ async function materializeVoiceMessageInput(mediaUrl) {
1855
1855
  const ext = extFromName || extFromMime || ".bin";
1856
1856
  const tempDir = resolvePreferredSymiTmpDir();
1857
1857
  const filePath = path.join(tempDir, `voice-src-${crypto.randomUUID()}${ext}`);
1858
- await fs.writeFile(filePath, media.buffer, { mode: 384 });
1858
+ await fsPromises.writeFile(filePath, media.buffer, { mode: 384 });
1859
1859
  return { filePath };
1860
1860
  }
1861
1861
  /**
@@ -1891,7 +1891,7 @@ async function sendVoiceMessageDiscord(to, audioPath, opts = {}) {
1891
1891
  oggPath = ogg.path;
1892
1892
  oggCleanup = ogg.cleanup;
1893
1893
  const metadata = await getVoiceMessageMetadata(oggPath);
1894
- const audioBuffer = await fs.readFile(oggPath);
1894
+ const audioBuffer = await fsPromises.readFile(oggPath);
1895
1895
  const result = await sendDiscordVoiceMessage(rest, channelId, audioBuffer, metadata, opts.replyTo, request, opts.silent);
1896
1896
  recordChannelActivity({
1897
1897
  channel: "discord",
@@ -1909,10 +1909,10 @@ async function sendVoiceMessageDiscord(to, audioPath, opts = {}) {
1909
1909
  throw err;
1910
1910
  } finally {
1911
1911
  if (oggCleanup && oggPath) try {
1912
- await fs.unlink(oggPath);
1912
+ await fsPromises.unlink(oggPath);
1913
1913
  } catch {}
1914
1914
  try {
1915
- await fs.unlink(localInputPath);
1915
+ await fsPromises.unlink(localInputPath);
1916
1916
  } catch {}
1917
1917
  }
1918
1918
  }
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as logVerbose } from "./utils-B-0b9bGM.js";
3
- import { i as loadConfig } from "./config-Dz95lSBW.js";
4
- import { f as resolveSlackAccount, h as resolveSlackBotToken } from "./plugins-DKDeQZF0.js";
3
+ import { i as loadConfig } from "./config-tNauHpdq.js";
4
+ import { f as resolveSlackAccount, h as resolveSlackBotToken } from "./plugins-BAyxWQSz.js";
5
5
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-bG1Q8FzV.js";
6
6
  import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-1dhPX1NK.js";
7
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
8
- import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-DZam9q5M.js";
7
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-ZwP14ydw.js";
8
+ import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-Dt4hOzxG.js";
9
9
  import { t as renderMarkdownWithMarkers } from "./render-CXDO_kgw.js";
10
10
  import { WebClient } from "@slack/web-api";
11
11
 
@@ -2,18 +2,18 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as logVerbose, O as danger } from "./utils-B-0b9bGM.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
4
4
  import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
5
- import { i as loadConfig } from "./config-Dz95lSBW.js";
5
+ import { i as loadConfig } from "./config-tNauHpdq.js";
6
6
  import { n as redactSensitiveText } from "./redact-f-Q-hFt_.js";
7
7
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-BF3TeRH2.js";
8
- import { h as normalizeMimeType, p as isGifMedia, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
9
- import { u as resolveTelegramAccount } from "./plugins-DKDeQZF0.js";
10
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
11
- import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-DZam9q5M.js";
8
+ import { h as normalizeMimeType, p as isGifMedia, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-DYbDWaIA.js";
9
+ import { u as resolveTelegramAccount } from "./plugins-BAyxWQSz.js";
10
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-ZwP14ydw.js";
11
+ import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-Dt4hOzxG.js";
12
12
  import { t as renderMarkdownWithMarkers } from "./render-CXDO_kgw.js";
13
13
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
14
14
  import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-BOiuJS3t.js";
15
15
  import { t as resolveFetch } from "./fetch-DTNGXEzX.js";
16
- import { i as readChannelAllowFromStore } from "./pairing-store-CK726Dzq.js";
16
+ import { i as readChannelAllowFromStore } from "./pairing-store-B8ktu-6j.js";
17
17
  import { t as makeProxyFetch } from "./proxy-DU7W9XSc.js";
18
18
  import process$1 from "node:process";
19
19
  import * as net$1 from "node:net";
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { m as normalizeE164, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
- import { i as loadConfig } from "./config-Dz95lSBW.js";
4
- import { v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
5
- import { t as resolveIMessageAccount } from "./accounts-bK-Yqdwx.js";
6
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
7
- import { t as convertMarkdownTables } from "./tables-BEzT0Da4.js";
8
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-Bw-c5Cdp.js";
3
+ import { i as loadConfig } from "./config-tNauHpdq.js";
4
+ import { v as mediaKindFromMime } from "./image-ops-DYbDWaIA.js";
5
+ import { t as resolveIMessageAccount } from "./accounts-CokRskCl.js";
6
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-ZwP14ydw.js";
7
+ import { t as convertMarkdownTables } from "./tables-C38rzF6E.js";
8
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-Qfh5dlsg.js";
9
9
  import { spawn } from "node:child_process";
10
10
  import { createInterface } from "node:readline";
11
11
 
@@ -1,12 +1,12 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { i as loadConfig } from "./config-Dz95lSBW.js";
3
- import { v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
4
- import { n as resolveSignalAccount } from "./accounts-DyJN4_vR.js";
2
+ import { i as loadConfig } from "./config-tNauHpdq.js";
3
+ import { v as mediaKindFromMime } from "./image-ops-DYbDWaIA.js";
4
+ import { n as resolveSignalAccount } from "./accounts-mN_EcgxC.js";
5
5
  import { n as fetchWithTimeout } from "./fetch-timeout-Db3da8yR.js";
6
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
7
- import { n as markdownToIR, t as chunkMarkdownIR } from "./ir-DZam9q5M.js";
6
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-ZwP14ydw.js";
7
+ import { n as markdownToIR, t as chunkMarkdownIR } from "./ir-Dt4hOzxG.js";
8
8
  import { t as resolveFetch } from "./fetch-DTNGXEzX.js";
9
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-Bw-c5Cdp.js";
9
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-Qfh5dlsg.js";
10
10
  import { randomUUID } from "node:crypto";
11
11
 
12
12
  //#region src/signal/client.ts
@@ -1,6 +1,6 @@
1
1
  import { u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
2
- import { i as loadConfig, l as writeConfigFile, r as createConfigIO } from "./config-Dz95lSBW.js";
3
- import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, O as DEFAULT_SYMI_BROWSER_COLOR, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, k as DEFAULT_SYMI_BROWSER_ENABLED, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, v as fetchOk, x as ensureChromeExtensionRelayServer } from "./chrome-DU2ZysN3.js";
2
+ import { i as loadConfig, l as writeConfigFile, r as createConfigIO } from "./config-tNauHpdq.js";
3
+ import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, O as DEFAULT_SYMI_BROWSER_COLOR, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, k as DEFAULT_SYMI_BROWSER_ENABLED, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, v as fetchOk, x as ensureChromeExtensionRelayServer } from "./chrome-CSJzpT9Z.js";
4
4
  import { r as isLoopbackHost } from "./ws-C7EXRv8z.js";
5
5
  import { a as resolveGatewayAuth } from "./auth-B741uFtk.js";
6
6
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BF3TeRH2.js";
@@ -152,7 +152,7 @@ function isModuleNotFoundError(err) {
152
152
  }
153
153
  async function loadPwAiModule(mode) {
154
154
  try {
155
- return await import("./pw-ai-DQohWnzT.js");
155
+ return await import("./pw-ai-CfrnAHwA.js");
156
156
  } catch (err) {
157
157
  if (mode === "soft") return null;
158
158
  if (isModuleNotFoundError(err)) return null;
@@ -775,11 +775,11 @@ function createProfileContext(opts, profile) {
775
775
  const userDataDir = resolveSymiUserDataDir(profile.name);
776
776
  const profileState = getProfileState();
777
777
  if (await isHttpReachable(300) && !profileState.running) try {
778
- await (await import("./pw-ai-DQohWnzT.js")).closePlaywrightBrowserConnection();
778
+ await (await import("./pw-ai-CfrnAHwA.js")).closePlaywrightBrowserConnection();
779
779
  } catch {}
780
780
  if (profileState.running) await stopRunningBrowser();
781
781
  try {
782
- await (await import("./pw-ai-DQohWnzT.js")).closePlaywrightBrowserConnection();
782
+ await (await import("./pw-ai-CfrnAHwA.js")).closePlaywrightBrowserConnection();
783
783
  } catch {}
784
784
  if (!fs.existsSync(userDataDir)) return {
785
785
  moved: false,
@@ -12,7 +12,7 @@ import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessa
12
12
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Byh6drgn.js";
13
13
  import { s as pickPrimaryLanIPv4 } from "./net-DZ5Ayk-W.js";
14
14
  import { i as normalizeInputProvenance } from "./input-provenance-D0lNkCf6.js";
15
- import { $n as resolveTtsAutoMode, B as dispatchInboundMessage, C as resolveAgentDeliveryPlan, Cn as enqueueSystemEvent, Cr as onAgentEvent, D as createOutboundSendDeps, Dt as normalizeCronJobPatch, Et as normalizeCronJobCreate, G as BARE_SESSION_RESET_PROMPT, Gn as stopSubagentsForRequester, Gt as persistBrowserProxyFiles, In as resolveAgentTimeoutMs, Jn as resolveUserTimezone, Qn as resolveTtsApiKey, Sn as parseVerboseOverride, V as createReplyDispatcher, Vn as formatZonedTimestamp, Wn as isAbortTrigger, Wt as applyBrowserProxyPaths, Xn as isTtsEnabled, Y as abortEmbeddedPiRun, Yn as getTtsProvider, Z as waitForEmbeddedPiRunEnd, Zn as isTtsProviderConfigured, Zt as scheduleGatewaySigusr1Restart, a as listSubagentRunsForRequester, ar as textToSpeech, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, ct as resolveOutboundSessionRoute, dt as resolveOutboundTarget, en as unbindThreadBindingsBySessionKey, er as resolveTtsConfig, hn as resolveSendPolicy, i as listDescendantRunsForRequester, ir as setTtsProvider, m as loadSymiPlugins, mn as normalizeSendPolicy, nr as resolveTtsProviderOrder, or as OPENAI_TTS_MODELS, rn as loadProviderUsageSummary, rr as setTtsEnabled, sr as OPENAI_TTS_VOICES, st as ensureOutboundSessionEntry, tn as normalizeGroupActivation, tr as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wn as isSystemEventContextChanged, wr as registerAgentRunContext, wt as writeRestartSentinel, x as agentCommand, xn as applyVerboseOverride, yt as formatDoctorNonInteractiveHint } from "./subagent-registry-BPwn3Qm7.js";
15
+ import { $n as resolveTtsAutoMode, B as dispatchInboundMessage, C as resolveAgentDeliveryPlan, Cn as enqueueSystemEvent, Cr as onAgentEvent, D as createOutboundSendDeps, Dt as normalizeCronJobPatch, Et as normalizeCronJobCreate, G as BARE_SESSION_RESET_PROMPT, Gn as stopSubagentsForRequester, Gt as persistBrowserProxyFiles, In as resolveAgentTimeoutMs, Jn as resolveUserTimezone, Qn as resolveTtsApiKey, Sn as parseVerboseOverride, V as createReplyDispatcher, Vn as formatZonedTimestamp, Wn as isAbortTrigger, Wt as applyBrowserProxyPaths, Xn as isTtsEnabled, Y as abortEmbeddedPiRun, Yn as getTtsProvider, Z as waitForEmbeddedPiRunEnd, Zn as isTtsProviderConfigured, Zt as scheduleGatewaySigusr1Restart, a as listSubagentRunsForRequester, ar as textToSpeech, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, ct as resolveOutboundSessionRoute, dt as resolveOutboundTarget, en as unbindThreadBindingsBySessionKey, er as resolveTtsConfig, hn as resolveSendPolicy, i as listDescendantRunsForRequester, ir as setTtsProvider, m as loadSymiPlugins, mn as normalizeSendPolicy, nr as resolveTtsProviderOrder, or as OPENAI_TTS_MODELS, rn as loadProviderUsageSummary, rr as setTtsEnabled, sr as OPENAI_TTS_VOICES, st as ensureOutboundSessionEntry, tn as normalizeGroupActivation, tr as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wn as isSystemEventContextChanged, wr as registerAgentRunContext, wt as writeRestartSentinel, x as agentCommand, xn as applyVerboseOverride, yt as formatDoctorNonInteractiveHint } from "./subagent-registry-CzS4CfnV.js";
16
16
  import { F as resolveMainSessionKey, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-Cfa6JEB3.js";
17
17
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
18
18
  import { n as createBrowserRouteDispatcher } from "./with-timeout-Cgi3TwWN.js";
@@ -37,14 +37,14 @@ import { t as WizardCancelledError } from "./prompts-m1IJwIAx.js";
37
37
  import { t as resolveChannelDefaultAccountId } from "./helpers-cLP5YLeQ.js";
38
38
  import { t as buildChannelAccountSnapshot } from "./status-BUedPCLb.js";
39
39
  import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-BjI_Yyr5.js";
40
- import { r as getStatusSummary } from "./status-DxhtJtzE.js";
41
- import { c as setHeartbeatsEnabled } from "./health-q7706M36.js";
40
+ import { r as getStatusSummary } from "./status-BJtbD-cG.js";
41
+ import { c as setHeartbeatsEnabled } from "./health-DQEqLYg1.js";
42
42
  import { m as normalizeUpdateChannel } from "./update-check-ZdimP1aU.js";
43
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-giplY7u-.js";
44
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-CA31c0kN.js";
43
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-BylbQyP9.js";
44
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-5PTwsijs.js";
45
45
  import { t as resolveSystemRunCommand } from "./system-run-command-ByVa3txU.js";
46
46
  import { t as installSkill } from "./skills-install-1ZdwGTnh.js";
47
- import { t as runGatewayUpdate } from "./update-runner-CG_kbbGR.js";
47
+ import { t as runGatewayUpdate } from "./update-runner-JcdOHr71.js";
48
48
  import { spawnSync } from "node:child_process";
49
49
  import * as os$1 from "node:os";
50
50
  import os from "node:os";
@@ -1609,6 +1609,33 @@ async function emitSessionUnboundLifecycleEvent(params) {
1609
1609
  outcome: params.reason === "session-reset" ? "reset" : "deleted"
1610
1610
  }, { childSessionKey: params.targetSessionKey });
1611
1611
  }
1612
+ /**
1613
+ * Per-session in-flight lock for sessions.restore. Prevents two concurrent
1614
+ * restore calls for the same session from corrupting each other (e.g. one
1615
+ * archives the active transcript while the other is mid-rename).
1616
+ */
1617
+ const restoreInFlight = /* @__PURE__ */ new Set();
1618
+ /**
1619
+ * Best-effort inverse of `archiveFileOnDisk(file, "reset")` — renames
1620
+ * `<file>.reset.<timestamp>` back to `<file>`. Used by the sessions.restore
1621
+ * rollback path when a later step fails after the current transcript was
1622
+ * archived. Swallows all errors and logs; the goal is to recover as much
1623
+ * state as possible, not to guarantee success.
1624
+ */
1625
+ function renameArchivedBackToOriginal(archivedPath, reason) {
1626
+ const marker = `.${reason}.`;
1627
+ const idx = archivedPath.lastIndexOf(marker);
1628
+ if (idx <= 0) {
1629
+ console.warn(`[sessions.restore] cannot parse archived path for rollback: ${archivedPath}`);
1630
+ return;
1631
+ }
1632
+ const originalPath = archivedPath.slice(0, idx);
1633
+ try {
1634
+ fs.renameSync(archivedPath, originalPath);
1635
+ } catch (err) {
1636
+ console.warn(`[sessions.restore] rollback failed: could not rename ${archivedPath} back to ${originalPath}: ${String(err)}`);
1637
+ }
1638
+ }
1612
1639
  async function ensureSessionRuntimeCleanup(params) {
1613
1640
  const queueKeys = new Set(params.target.storeKeys);
1614
1641
  queueKeys.add(params.target.canonicalKey);
@@ -1857,69 +1884,108 @@ const sessionsHandlers = {
1857
1884
  respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "Target file is not a valid session transcript."));
1858
1885
  return;
1859
1886
  }
1860
- const { entry } = loadSessionEntry(key);
1861
- const sessionId = entry?.sessionId;
1862
- const cleanupError = await ensureSessionRuntimeCleanup({
1863
- cfg,
1864
- key,
1865
- target,
1866
- sessionId
1867
- });
1868
- if (cleanupError) {
1869
- respond(false, void 0, cleanupError);
1887
+ const lockKey = target.canonicalKey ?? key;
1888
+ if (restoreInFlight.has(lockKey)) {
1889
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `Restore already in progress for session ${lockKey}; try again in a moment.`));
1870
1890
  return;
1871
1891
  }
1872
- const oldSessionId = entry?.sessionId;
1873
- const oldSessionFile = entry?.sessionFile;
1874
- archiveSessionTranscriptsForSession({
1875
- sessionId: oldSessionId,
1876
- storePath,
1877
- sessionFile: oldSessionFile,
1878
- agentId: target.agentId,
1879
- reason: "reset"
1880
- });
1881
- const restoredFileName = `${restoredSessionId}.jsonl`;
1882
- const restoredPath = path.join(sessionsDir, restoredFileName);
1883
- if (targetPath !== restoredPath) fs.renameSync(targetPath, restoredPath);
1884
- const next = await updateSessionStore(storePath, (store) => {
1885
- const { primaryKey } = migrateAndPruneSessionStoreKey({
1892
+ restoreInFlight.add(lockKey);
1893
+ const rollback = [];
1894
+ let responded = false;
1895
+ try {
1896
+ const { entry } = loadSessionEntry(key);
1897
+ const sessionId = entry?.sessionId;
1898
+ const cleanupError = await ensureSessionRuntimeCleanup({
1886
1899
  cfg,
1887
1900
  key,
1888
- store
1901
+ target,
1902
+ sessionId
1889
1903
  });
1890
- const existingEntry = store[primaryKey];
1891
- const nextEntry = {
1904
+ if (cleanupError) {
1905
+ respond(false, void 0, cleanupError);
1906
+ responded = true;
1907
+ return;
1908
+ }
1909
+ const archivedPaths = archiveSessionTranscriptsForSession({
1910
+ sessionId: entry?.sessionId,
1911
+ storePath,
1912
+ sessionFile: entry?.sessionFile,
1913
+ agentId: target.agentId,
1914
+ reason: "reset"
1915
+ });
1916
+ for (const archived of archivedPaths) rollback.push({
1917
+ desc: `un-archive ${archived}`,
1918
+ fn: () => renameArchivedBackToOriginal(archived, "reset")
1919
+ });
1920
+ const restoredFileName = `${restoredSessionId}.jsonl`;
1921
+ const restoredPath = path.join(sessionsDir, restoredFileName);
1922
+ if (targetPath !== restoredPath) {
1923
+ fs.renameSync(targetPath, restoredPath);
1924
+ rollback.push({
1925
+ desc: `re-archive ${restoredPath} to ${targetPath}`,
1926
+ fn: () => {
1927
+ try {
1928
+ fs.renameSync(restoredPath, targetPath);
1929
+ } catch (err) {
1930
+ console.warn(`[sessions.restore] rollback failed: could not rename ${restoredPath} back to ${targetPath}: ${String(err)}`);
1931
+ }
1932
+ }
1933
+ });
1934
+ }
1935
+ const next = await updateSessionStore(storePath, (store) => {
1936
+ const { primaryKey } = migrateAndPruneSessionStoreKey({
1937
+ cfg,
1938
+ key,
1939
+ store
1940
+ });
1941
+ const existingEntry = store[primaryKey];
1942
+ const nextEntry = {
1943
+ sessionId: restoredSessionId,
1944
+ sessionFile: restoredPath,
1945
+ updatedAt: Date.now(),
1946
+ systemSent: false,
1947
+ abortedLastRun: false,
1948
+ thinkingLevel: existingEntry?.thinkingLevel,
1949
+ verboseLevel: existingEntry?.verboseLevel,
1950
+ reasoningLevel: existingEntry?.reasoningLevel,
1951
+ responseUsage: existingEntry?.responseUsage,
1952
+ model: existingEntry?.model,
1953
+ contextTokens: existingEntry?.contextTokens,
1954
+ sendPolicy: existingEntry?.sendPolicy,
1955
+ label: existingEntry?.label,
1956
+ origin: snapshotSessionOrigin(existingEntry),
1957
+ lastChannel: existingEntry?.lastChannel,
1958
+ lastTo: existingEntry?.lastTo,
1959
+ skillsSnapshot: existingEntry?.skillsSnapshot,
1960
+ inputTokens: 0,
1961
+ outputTokens: 0,
1962
+ totalTokens: 0,
1963
+ totalTokensFresh: true
1964
+ };
1965
+ store[primaryKey] = nextEntry;
1966
+ return nextEntry;
1967
+ });
1968
+ rollback.length = 0;
1969
+ respond(true, {
1970
+ ok: true,
1971
+ key: target.canonicalKey,
1892
1972
  sessionId: restoredSessionId,
1893
- sessionFile: restoredPath,
1894
- updatedAt: Date.now(),
1895
- systemSent: false,
1896
- abortedLastRun: false,
1897
- thinkingLevel: existingEntry?.thinkingLevel,
1898
- verboseLevel: existingEntry?.verboseLevel,
1899
- reasoningLevel: existingEntry?.reasoningLevel,
1900
- responseUsage: existingEntry?.responseUsage,
1901
- model: existingEntry?.model,
1902
- contextTokens: existingEntry?.contextTokens,
1903
- sendPolicy: existingEntry?.sendPolicy,
1904
- label: existingEntry?.label,
1905
- origin: snapshotSessionOrigin(existingEntry),
1906
- lastChannel: existingEntry?.lastChannel,
1907
- lastTo: existingEntry?.lastTo,
1908
- skillsSnapshot: existingEntry?.skillsSnapshot,
1909
- inputTokens: 0,
1910
- outputTokens: 0,
1911
- totalTokens: 0,
1912
- totalTokensFresh: true
1913
- };
1914
- store[primaryKey] = nextEntry;
1915
- return nextEntry;
1916
- });
1917
- respond(true, {
1918
- ok: true,
1919
- key: target.canonicalKey,
1920
- sessionId: restoredSessionId,
1921
- entry: next
1922
- }, void 0);
1973
+ entry: next
1974
+ }, void 0);
1975
+ responded = true;
1976
+ } catch (err) {
1977
+ console.warn(`[sessions.restore] failed for ${lockKey}; running ${rollback.length} rollback step(s): ${String(err)}`);
1978
+ for (let i = rollback.length - 1; i >= 0; i--) {
1979
+ const step = rollback[i];
1980
+ if (step) step.fn();
1981
+ }
1982
+ if (!responded) {
1983
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `Restore failed: ${err instanceof Error ? err.message : String(err)}`));
1984
+ responded = true;
1985
+ }
1986
+ } finally {
1987
+ restoreInFlight.delete(lockKey);
1988
+ }
1923
1989
  },
1924
1990
  "sessions.delete": async ({ params, respond, client, isWebchatConnect }) => {
1925
1991
  if (!assertValidParams(params, validateSessionsDeleteParams, "sessions.delete", respond)) return;
@@ -6942,7 +7008,7 @@ const nodeHandlers = {
6942
7008
  const p = params;
6943
7009
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
6944
7010
  await respondUnavailableOnThrow(respond, async () => {
6945
- const { handleNodeEvent } = await import("./server-node-events-CHmLiFNV.js");
7011
+ const { handleNodeEvent } = await import("./server-node-events-CyDj7Txd.js");
6946
7012
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6947
7013
  await handleNodeEvent({
6948
7014
  deps: context.deps,