@symerian/symi 2.7.0 → 2.7.2

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 (313) hide show
  1. package/dist/{accounts-Cd816n6l.js → accounts-DDuIpcln.js} +7 -7
  2. package/dist/{accounts-mN_EcgxC.js → accounts-DyJN4_vR.js} +1 -1
  3. package/dist/{accounts-CokRskCl.js → accounts-bK-Yqdwx.js} +1 -1
  4. package/dist/{acp-cli-COzlJi3B.js → acp-cli-B2f0qBiM.js} +6 -6
  5. package/dist/{acp-cli-BLUeUUA5.js → acp-cli-D-9rzaOI.js} +2 -2
  6. package/dist/{agent-scope-BRwEc2pG.js → agent-scope-CgUHAtCo.js} +18 -18
  7. package/dist/{agents-Cu2bthAX.js → agents-Z8ruJPz2.js} +5 -5
  8. package/dist/{agents.config-Dib8Uo2P.js → agents.config-B9BZoM2m.js} +2 -2
  9. package/dist/{agents.config-5PTwsijs.js → agents.config-C951ocyh.js} +1 -1
  10. package/dist/{api-key-rotation-CEr3lKih.js → api-key-rotation-CzuPlV2t.js} +1 -1
  11. package/dist/{audio-preflight-mj-z_vQ6.js → audio-preflight-CIiS5cfP.js} +28 -28
  12. package/dist/{audio-preflight-DD18zIZd.js → audio-preflight-HILy3i0m.js} +4 -4
  13. package/dist/{audit-Djfdh06o.js → audit-BgdM9XZl.js} +23 -23
  14. package/dist/{audit-BjI_Yyr5.js → audit-xSagQWH8.js} +2 -2
  15. package/dist/{auth-choice-CmSUU3t8.js → auth-choice-BmYi6pBy.js} +8 -8
  16. package/dist/{auth-choice-5gul6jy2.js → auth-choice-D_VfXxhG.js} +2 -2
  17. package/dist/{auth-token-83A2btbE.js → auth-token-Cay2jwzn.js} +1 -1
  18. package/dist/{banner-B4vQpMIJ.js → banner-Bucr6qZ5.js} +1 -1
  19. package/dist/{bindings-ChzePa8q.js → bindings-DFaVVCsf.js} +1 -1
  20. package/dist/{browser-cli-kDUw45Y0.js → browser-cli-Bc_JVdTj.js} +3 -3
  21. package/dist/{browser-cli-BTD0NlrA.js → browser-cli-Dr0yx7-7.js} +9 -9
  22. package/dist/build-info.json +3 -3
  23. package/dist/bundled/boot-md/handler.js +1 -1
  24. package/dist/bundled/session-memory/handler.js +1 -1
  25. package/dist/{call-tmHtVCkn.js → call-CX0cs106.js} +9 -9
  26. package/dist/{call-DKi-hnaF.js → call-DeCQ2DhS.js} +1 -1
  27. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  28. package/dist/{channel-options-DVf4CJIu.js → channel-options-BMDryXHq.js} +1 -1
  29. package/dist/{channel-options-DsWGc55A.js → channel-options-z8-WeZyO.js} +2 -2
  30. package/dist/{channel-selection-DaJDux-Q.js → channel-selection-V2xDgw16.js} +1 -1
  31. package/dist/{channel-web-vGC-WJXi.js → channel-web-D_YxZAHT.js} +17 -17
  32. package/dist/{channels-cli-CSv05N3q.js → channels-cli-397NgC51.js} +7 -7
  33. package/dist/{channels-cli-COayA28A.js → channels-cli-CV7_JUru.js} +76 -76
  34. package/dist/{channels-status-issues-B_PI3nEE.js → channels-status-issues-CJ0Vb_9z.js} +1 -1
  35. package/dist/{chrome-BxwUEWrH.js → chrome-CiOKaTN-.js} +7 -7
  36. package/dist/{chrome-CSJzpT9Z.js → chrome-DU2ZysN3.js} +2 -2
  37. package/dist/cli/daemon-cli.js +1 -1
  38. package/dist/{cli-B-g79xPe.js → cli-4XU7pNlM.js} +4 -4
  39. package/dist/{cli-DJjOxip6.js → cli-Dq95udFO.js} +63 -63
  40. package/dist/{client-Bj_vTpri.js → client-B8xmq-Pw.js} +14 -2
  41. package/dist/{client-T3qcxXru.js → client-qUlxXXVJ.js} +13 -1
  42. package/dist/{command-registry-BvpLfzl7.js → command-registry-yRiaU4-n.js} +10 -10
  43. package/dist/{commands-CtocZ4Lg.js → commands-BNLCWX6e.js} +1 -1
  44. package/dist/{commands-registry-BZ0ZSQpM.js → commands-registry-BT0-zzs3.js} +3 -3
  45. package/dist/{completion-cli-CfRZ-7QF.js → completion-cli-DrQai9KM.js} +2 -2
  46. package/dist/{completion-cli-DtQcXg1N.js → completion-cli-_aqxDQoz.js} +12 -12
  47. package/dist/{config-tNauHpdq.js → config-Dz95lSBW.js} +2 -2
  48. package/dist/{config-cli-DL2RdfLM.js → config-cli-CMymzmrI.js} +1 -1
  49. package/dist/{config-cli-D9Z78raJ.js → config-cli-EdmbBExA.js} +4 -4
  50. package/dist/{config-guard-4oRmpR0a.js → config-guard-CEkSg4hl.js} +12 -12
  51. package/dist/{config-validation-BoDWiwe3.js → config-validation-HDVDlMSV.js} +1 -1
  52. package/dist/{configure-jDpF8lmx.js → configure-DRMAIBBf.js} +15 -15
  53. package/dist/{configure-Dq4f8WPa.js → configure-DkFujfiY.js} +6 -6
  54. package/dist/{control-service-BBnhN7aZ.js → control-service-BYKXzY4f.js} +4 -4
  55. package/dist/control-ui/css/style.css +128 -0
  56. package/dist/control-ui/js/history.js +233 -85
  57. package/dist/{control-ui-assets-6n-YayeS.js → control-ui-assets-B7moDVHX.js} +1 -1
  58. package/dist/{cron-cli-D165ecaj.js → cron-cli-BHxfvWeT.js} +10 -10
  59. package/dist/{cron-cli-QCTdVZuP.js → cron-cli-DacyI1Pw.js} +3 -3
  60. package/dist/{daemon-cli-BccZzUb0.js → daemon-cli-BLhFbih0.js} +11 -11
  61. package/dist/{daemon-cli-DhJYEAoL.js → daemon-cli-BxKtiouf.js} +2 -2
  62. package/dist/daemon-cli.js +12 -0
  63. package/dist/{daemon-runtime-u01h46bE.js → daemon-runtime-mE1b-Q48.js} +10 -10
  64. package/dist/{deliver-BYdNAEqj.js → deliver-B4KZ6-oZ.js} +7 -7
  65. package/dist/{deliver-DtuY4Wgl.js → deliver-D6IcPfbt.js} +1 -1
  66. package/dist/{devices-cli-BNG-fvdl.js → devices-cli-1kiO08aL.js} +2 -2
  67. package/dist/{devices-cli-D0N71nqX.js → devices-cli-B8Q8AzbX.js} +6 -6
  68. package/dist/{diagnostics-BrUo0gqs.js → diagnostics-BRwihzJG.js} +5 -5
  69. package/dist/{directory-cli-aj7aXIBM.js → directory-cli-KgsAVTA0.js} +7 -7
  70. package/dist/{dm-policy-shared-epgkayyq.js → dm-policy-shared-DlDAGtZL.js} +2 -2
  71. package/dist/{dns-cli-Dit09wbu.js → dns-cli-Cwr92Aiq.js} +3 -3
  72. package/dist/{dock-BYiRZSgZ.js → dock-BhS32F6E.js} +4 -4
  73. package/dist/{docs-cli-CyWGMA-e.js → docs-cli-qE-blOLC.js} +1 -1
  74. package/dist/{doctor-completion-Ccb83Wl5.js → doctor-completion-BbrsQOW-.js} +2 -2
  75. package/dist/{doctor-completion-oQemZItC.js → doctor-completion-Cx-AR_dB.js} +1 -1
  76. package/dist/{doctor-config-flow-BXmHd2bb.js → doctor-config-flow-iIzSEQxb.js} +10 -10
  77. package/dist/entry.js +1 -1
  78. package/dist/{exec-approvals-cli-CmndFjEA.js → exec-approvals-cli-BRx2oxs5.js} +4 -4
  79. package/dist/{exec-approvals-cli-CZ-iTtNO.js → exec-approvals-cli-Cj6Z-vxL.js} +13 -13
  80. package/dist/extensionAPI.js +6 -6
  81. package/dist/{fs-safe-CTDvb1DF.js → fs-safe-CUjO1ca2.js} +6 -6
  82. package/dist/{gateway-cli-C1zPKZ7B.js → gateway-cli-C7JTXqby.js} +269 -175
  83. package/dist/{gateway-cli-zbVm1MBQ.js → gateway-cli-CaaX65eF.js} +169 -75
  84. package/dist/{gateway-rpc-BMdVa3QV.js → gateway-rpc-BWTK7g8B.js} +1 -1
  85. package/dist/{gateway-rpc-B1Wzoj99.js → gateway-rpc-WM-HXUbl.js} +1 -1
  86. package/dist/{glass-ui-ws-D3tAmqKX.js → glass-ui-ws-BI81Lh6Z.js} +83 -83
  87. package/dist/{glass-ui-ws-CvUFd4C6.js → glass-ui-ws-jAbqZVc9.js} +11 -11
  88. package/dist/{health-o847FIt1.js → health-B1nih5LD.js} +13 -13
  89. package/dist/{health-DQEqLYg1.js → health-CsTxt66a.js} +2 -2
  90. package/dist/{hooks-cli-sYjbF4I6.js → hooks-cli-BhxMFkKe.js} +77 -77
  91. package/dist/{hooks-cli-D_UW9fc8.js → hooks-cli-CIlvtt2M.js} +5 -5
  92. package/dist/{image-lCS3o9xj.js → image-BWmcNF8N.js} +3 -3
  93. package/dist/{image-lp19FlzF.js → image-D7Fl08gG.js} +1 -1
  94. package/dist/{image-ops-DYbDWaIA.js → image-ops-1OJMSAUX.js} +10 -10
  95. package/dist/index.js +73 -73
  96. package/dist/{inspect-CNYyHVfH.js → inspect-CvbbCuoa.js} +4 -4
  97. package/dist/{install-safe-path-D3mg1DMG.js → install-safe-path-D3Uz77u7.js} +11 -11
  98. package/dist/{installs-CYTVYWH_.js → installs-DQcRVF1U.js} +10 -10
  99. package/dist/{ir-Dt4hOzxG.js → ir-DZam9q5M.js} +6 -6
  100. package/dist/{lifecycle-core-DxmxQdhS.js → lifecycle-core-C4HzGXA1.js} +5 -5
  101. package/dist/llm-slug-generator.js +1 -1
  102. package/dist/{local-roots-BBeKX7PX.js → local-roots-aAFLQGkY.js} +2 -2
  103. package/dist/{login-CnjdNmGD.js → login-DODfJ3Dn.js} +3 -3
  104. package/dist/{login-qr-DUf6CM0M.js → login-qr-CBRxijIg.js} +5 -5
  105. package/dist/{logs-cli-DtlrLf7u.js → logs-cli-BZV7dq_U.js} +3 -3
  106. package/dist/{logs-cli-BVd6h2-Q.js → logs-cli-DyCcDkRs.js} +7 -7
  107. package/dist/{manager-C1CfGzZ2.js → manager-D4LJSRyZ.js} +13 -13
  108. package/dist/{markdown-tables-ZwP14ydw.js → markdown-tables-CEbN0fEm.js} +1 -1
  109. package/dist/{memory-cli-DhkRAIdT.js → memory-cli-DDumUksr.js} +14 -14
  110. package/dist/{model-catalog-CvbwxWuC.js → model-catalog-8Son0J4O.js} +4 -4
  111. package/dist/{model-picker-C2MqloOs.js → model-picker-CAm2Bftd.js} +3 -3
  112. package/dist/{model-selection-X1oLh3CE.js → model-selection-CyFvYcRt.js} +9 -9
  113. package/dist/{model-CeeOcylL.js → model-tWhwnFf8.js} +1 -1
  114. package/dist/{models-Zol34e73.js → models-DhMe2rzL.js} +3 -3
  115. package/dist/{models-cli-DnMUzr15.js → models-cli-DKM5sCQM.js} +72 -72
  116. package/dist/{models-cli-BzcEA9oa.js → models-cli-Dewg24W2.js} +6 -6
  117. package/dist/{models-config-CEMioDUi.js → models-config-CFFjJPe7.js} +7 -7
  118. package/dist/{node-cli-BVJid4L_.js → node-cli-4eMRkmrw.js} +28 -28
  119. package/dist/{node-cli-eHn9-YfJ.js → node-cli-Dfs0UmnJ.js} +1 -1
  120. package/dist/{node-service-CXzMs782.js → node-service-CD47Qpf1.js} +1 -1
  121. package/dist/{nodes-cli-Ct4M7JOe.js → nodes-cli-BKb61OjH.js} +3 -3
  122. package/dist/{nodes-cli-BN2Nslim.js → nodes-cli-DxfP9DIz.js} +10 -10
  123. package/dist/{nodes-screen-Cd49cSPb.js → nodes-screen-8Bq7DiSa.js} +4 -4
  124. package/dist/{npm-registry-spec-DchndI6P.js → npm-registry-spec-C0CPT3vr.js} +9 -9
  125. package/dist/{onboard-CSseK0Co.js → onboard-C6XtdirM.js} +13 -13
  126. package/dist/{onboard-CxOT_xD4.js → onboard-CVfE-Bjj.js} +3 -3
  127. package/dist/{onboard-channels-D-lh_Vh1.js → onboard-channels-8ynJSZL6.js} +1 -1
  128. package/dist/{onboard-channels-CUlITipG.js → onboard-channels-ChxtmhFY.js} +5 -5
  129. package/dist/{onboard-custom-DTcLdtA9.js → onboard-custom-XiomtQr7.js} +3 -3
  130. package/dist/{onboard-helpers-CdPNw25E.js → onboard-helpers-CueJ7O_B.js} +8 -8
  131. package/dist/{onboard-helpers-BBtPmJEe.js → onboard-helpers-PpGrZIGw.js} +1 -1
  132. package/dist/{onboard-hooks-C_2_jpWg.js → onboard-hooks-C3ok8kqB.js} +1 -1
  133. package/dist/{onboard-remote-v6QMnyJD.js → onboard-remote-Cd9kIiSG.js} +1 -1
  134. package/dist/{onboard-remote-D-B4EiOE.js → onboard-remote-DCdpB2HH.js} +1 -1
  135. package/dist/{onboard-skills-BDCzVjxb.js → onboard-skills-CC2CV5Er.js} +1 -1
  136. package/dist/{onboard-skills-CQtkRP20.js → onboard-skills-DRICcBwa.js} +4 -4
  137. package/dist/{onboarding-Dn5agNG_.js → onboarding-Dg6nx_ph.js} +13 -13
  138. package/dist/{onboarding-DktESmTv.js → onboarding-fN3GGyiv.js} +7 -7
  139. package/dist/{onboarding.finalize-Bm-1Kdnh.js → onboarding.finalize--MZAe4B0.js} +10 -10
  140. package/dist/{onboarding.finalize-CTIZ1zvV.js → onboarding.finalize-CBE2mBQQ.js} +75 -75
  141. package/dist/{onboarding.gateway-config-CwnQkyO0.js → onboarding.gateway-config-DTWQ-Bqq.js} +14 -14
  142. package/dist/{onboarding.gateway-config-B9zGPfCl.js → onboarding.gateway-config-Dj68bVBt.js} +3 -3
  143. package/dist/{openai-model-default-4kBA1_78.js → openai-model-default-WqcGxyFM.js} +2 -2
  144. package/dist/{outbound-attachment-Qfh5dlsg.js → outbound-attachment-Bw-c5Cdp.js} +2 -2
  145. package/dist/{outbound-_Ir3M05f.js → outbound-wnv03tb3.js} +4 -4
  146. package/dist/{pairing-cli-C8UXBJ_A.js → pairing-cli-DSM82gJG.js} +8 -8
  147. package/dist/{pairing-labels-Dxb898X5.js → pairing-labels-DyXoD1DS.js} +1 -1
  148. package/dist/{pairing-store-B8ktu-6j.js → pairing-store-CK726Dzq.js} +2 -2
  149. package/dist/{pairing-token-AV-MMfVE.js → pairing-token-CX3NN_qj.js} +7 -7
  150. package/dist/{paths-CT6jsi4E.js → paths-BBm9fwuG.js} +1 -1
  151. package/dist/{pi-auth-json-FpfHyEcu.js → pi-auth-json-zHckislA.js} +5 -5
  152. package/dist/{pi-embedded-CYDMb5q0.js → pi-embedded-BzS693I1.js} +28 -16
  153. package/dist/{pi-embedded-helpers-Bs4eMaNo.js → pi-embedded-helpers-BgdB5kvy.js} +6 -6
  154. package/dist/{pi-embedded-helpers-Dij3O6ox.js → pi-embedded-helpers-DXAoe1Bx.js} +4 -4
  155. package/dist/{pi-tools.policy-BBxnqCay.js → pi-tools.policy-DRWb_Cax.js} +4 -4
  156. package/dist/{plugin-auto-enable-DwIrzVOA.js → plugin-auto-enable-CP0nONRL.js} +2 -2
  157. package/dist/{plugin-registry-CJGPW1-k.js → plugin-registry-Bzz7mUyl.js} +1 -1
  158. package/dist/{plugin-registry-d0oZLl6y.js → plugin-registry-SUa2FFIj.js} +3 -3
  159. package/dist/plugin-sdk/{channel-web-Dm-CzA1O.js → channel-web-DRabhx1e.js} +1 -1
  160. package/dist/plugin-sdk/gateway/protocol/index.d.ts +13 -2
  161. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +11 -0
  162. package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +4 -1
  163. package/dist/plugin-sdk/index.js +2 -2
  164. package/dist/plugin-sdk/{reply-4HEU7aDS.js → reply-Cw3shPk2.js} +14 -2
  165. package/dist/plugin-sdk/{web-Cclb7FTq.js → web-CH43nBP0.js} +2 -2
  166. package/dist/{plugins-BAyxWQSz.js → plugins-DKDeQZF0.js} +2 -2
  167. package/dist/{plugins-cli-CL0tzkMo.js → plugins-cli-DwtoU3xk.js} +5 -5
  168. package/dist/{plugins-cli-BWgjIJQL.js → plugins-cli-qG50__1A.js} +72 -72
  169. package/dist/{ports-OZQlocB7.js → ports-BOmtxoTv.js} +2 -2
  170. package/dist/{ports-u9lWy2Jt.js → ports-DtW62rqS.js} +1 -1
  171. package/dist/{program-BHjH97Q_.js → program-BDspObZY.js} +10 -10
  172. package/dist/{program-context-CXZHSZ4D.js → program-context-BqUFQnhR.js} +39 -39
  173. package/dist/{prompt-select-styled-BUFEoSlM.js → prompt-select-styled-C7DydfxH.js} +38 -38
  174. package/dist/{prompt-select-styled-D8LXSUR7.js → prompt-select-styled-CRUuzDrg.js} +6 -6
  175. package/dist/{provider-auth-helpers-BFHctF2f.js → provider-auth-helpers-CEYCb2mJ.js} +1 -1
  176. package/dist/{provider-auth-helpers-CeAbh3lv.js → provider-auth-helpers-D60nbSLq.js} +5 -5
  177. package/dist/{push-apns-BylbQyP9.js → push-apns-B5txhDVi.js} +1 -1
  178. package/dist/{push-apns-DqFdzIkc.js → push-apns-CoG1P_P0.js} +4 -4
  179. package/dist/{pw-ai-BO5cSmwD.js → pw-ai-CANiWpMA.js} +1 -1
  180. package/dist/{pw-ai-CfrnAHwA.js → pw-ai-DQohWnzT.js} +7 -7
  181. package/dist/{qmd-manager-DUNbG4Qr.js → qmd-manager-CCUK1xoc.js} +18 -18
  182. package/dist/{qr-cli-BZYa2gvF.js → qr-cli-CejYwqsj.js} +3 -3
  183. package/dist/{register.agent-DxAqRAt3.js → register.agent-BY_Df_Me.js} +9 -9
  184. package/dist/{register.agent-bzSGKS-l.js → register.agent-CopGIf9e.js} +82 -82
  185. package/dist/{register.configure-WS1nlSp8.js → register.configure-Bu_XKu7Z.js} +11 -11
  186. package/dist/register.configure-CoYQhQBT.js +148 -0
  187. package/dist/{register.maintenance-B1QcUr38.js → register.maintenance-4Q3E_gqv.js} +85 -85
  188. package/dist/{register.maintenance-D_qMTrgD.js → register.maintenance-DhnICgeT.js} +11 -11
  189. package/dist/{register.message-zu3HGGff.js → register.message-DZCCEK01.js} +5 -5
  190. package/dist/{register.message-CJF8gLAN.js → register.message-dd1xYBZT.js} +64 -64
  191. package/dist/{register.onboard-CswoaT7q.js → register.onboard-Bfz-EJGb.js} +75 -75
  192. package/dist/{register.onboard-9dwNqCe6.js → register.onboard-e8L_UxR4.js} +7 -7
  193. package/dist/{register.setup-CvomtGGu.js → register.setup-C5CZKKAB.js} +78 -78
  194. package/dist/{register.setup-TcjUu6HC.js → register.setup-DuU3Ywi-.js} +7 -7
  195. package/dist/{register.status-health-sessions-CM1SX81r.js → register.status-health-sessions-Dvj4mlom.js} +7 -7
  196. package/dist/{register.status-health-sessions-CQMvbwr6.js → register.status-health-sessions-jeiqtgl7.js} +76 -76
  197. package/dist/{register.subclis-CVQASXaL.js → register.subclis-DD6G0dov.js} +20 -20
  198. package/dist/{replies-Dy92jzrz.js → replies-BMqtgBhh.js} +1 -1
  199. package/dist/{reply-CpNWtuU4.js → reply-XaXqDK9F.js} +139 -139
  200. package/dist/{reply-prefix-BLOOs1aW.js → reply-prefix-CE2YmmsD.js} +1 -1
  201. package/dist/{resolve-route-BcnaXYvh.js → resolve-route-BMoTaVAH.js} +2 -2
  202. package/dist/{routes-CVwRcA9D.js → routes-BAZTZNuQ.js} +8 -8
  203. package/dist/{rpc-CZFfee1J.js → rpc-N1nf_c1A.js} +1 -1
  204. package/dist/{rpc-D0FiEinj.js → rpc-QHo-8pCM.js} +1 -1
  205. package/dist/{run-main-Dq6tfDry.js → run-main-BrUOBCsG.js} +17 -17
  206. package/dist/{runner-Ct0suQrd.js → runner-BS9gGL5i.js} +1 -1
  207. package/dist/{runner-BAVs-p6Z.js → runner-DRv0uCK_.js} +20 -20
  208. package/dist/{sandbox-HZ_uilsn.js → sandbox-B6N8cV4d.js} +18 -18
  209. package/dist/{sandbox-cli-wZtiyo8g.js → sandbox-cli-DwzaNjIJ.js} +20 -20
  210. package/dist/{security-cli-BESmRIrl.js → security-cli-B-4J6enu.js} +36 -36
  211. package/dist/{security-cli-CG1uSlRK.js → security-cli-CSMUEGPK.js} +3 -3
  212. package/dist/{send-DsSI8z3F.js → send-9SapUCg7.js} +6 -6
  213. package/dist/{send-DT-5buW5.js → send-B3RdXvjC.js} +6 -6
  214. package/dist/{send-JWV62VbW.js → send-Bm4ULEzh.js} +6 -6
  215. package/dist/{send-BVBCh27_.js → send-CQVnyJyF.js} +13 -13
  216. package/dist/{send-CXFTeD_J.js → send-DVm0du0_.js} +4 -4
  217. package/dist/{server-context-VlF1_hYj.js → server-context-CCBZN8a0.js} +5 -5
  218. package/dist/{server-methods-B0pdetGJ.js → server-methods-0ksPFnev.js} +441 -124
  219. package/dist/{server-methods-IBEaQXPX.js → server-methods-Bu1RjLe6.js} +484 -167
  220. package/dist/{server-node-events-CyDj7Txd.js → server-node-events-DCbzFyQF.js} +5 -5
  221. package/dist/{server-node-events-BACmfyjo.js → server-node-events-DZAN3hWE.js} +64 -64
  222. package/dist/{service-D80PyJxB.js → service-osK70kTZ.js} +15 -15
  223. package/dist/{session-6Qyc4cBQ.js → session-DsJGtM7g.js} +2 -2
  224. package/dist/{session-dirs-DPzjjra2.js → session-dirs-Dgz7kkUM.js} +2 -2
  225. package/dist/{sessions-jTAGYjWl.js → sessions-Cpgnq0pA.js} +13 -13
  226. package/dist/{shared-BfhtOZAz.js → shared-73T9fyuK.js} +3 -3
  227. package/dist/{shared-BV7WhIkY.js → shared-DnmJ0ABB.js} +1 -1
  228. package/dist/{skill-commands-ZXbEITKi.js → skill-commands-Cxw-jNxU.js} +5 -5
  229. package/dist/{skill-scanner-w3DJvw1Q.js → skill-scanner-hMtQbWPV.js} +5 -5
  230. package/dist/{skills-DqQUtOph.js → skills-6jdJQ5ZL.js} +4 -4
  231. package/dist/{skills-cli-D3lePXkf.js → skills-cli-DXkx4vNV.js} +7 -7
  232. package/dist/{skills-install-HGYidhrv.js → skills-install-CWVdJkLn.js} +3 -3
  233. package/dist/{skills-status-Cjsh8we0.js → skills-status-C3ptXwnh.js} +1 -1
  234. package/dist/{sqlite-BV5ILFtC.js → sqlite-Dx3J_aSE.js} +12 -12
  235. package/dist/{status-DzHL-eVu.js → status-CiHkFbIh.js} +3 -3
  236. package/dist/{status-nzJEZmNT.js → status-DOTlXdcN.js} +25 -25
  237. package/dist/{status-DUeTrQSz.js → status-IWqSLXLR.js} +1 -1
  238. package/dist/{status-BJtbD-cG.js → status-qkmUAeWo.js} +5 -5
  239. package/dist/{status.update-TlYwuzTa.js → status.update-CG0ciGaf.js} +3 -3
  240. package/dist/{store-DvtcmOKj.js → store-r1DJSDq-.js} +5 -5
  241. package/dist/{subagent-registry-CzS4CfnV.js → subagent-registry-DCoU9xIE.js} +5 -5
  242. package/dist/{symi-root-MF6_6SCS.js → symi-root-CrGJbkzf.js} +2 -2
  243. package/dist/{system-cli-C2yhGP4C.js → system-cli-DY7ov1OT.js} +7 -7
  244. package/dist/{system-cli-Z7uzO8qd.js → system-cli-LFURKpwS.js} +3 -3
  245. package/dist/{systemd-CevHlgD4.js → systemd-DT6SbCim.js} +5 -5
  246. package/dist/{systemd-hints-DmgRnw1L.js → systemd-hints-xYZbFny_.js} +6 -6
  247. package/dist/{systemd-linger-ScxQ1_H4.js → systemd-linger-DCskIKcx.js} +1 -1
  248. package/dist/{tables-C38rzF6E.js → tables-BEzT0Da4.js} +1 -1
  249. package/dist/{target-errors-CCz79CmV.js → target-errors-7AvoVa10.js} +4 -4
  250. package/dist/{tool-images-B-pqX3nX.js → tool-images-DvUBlqjX.js} +1 -1
  251. package/dist/{tui-D2MOx3Kx.js → tui-BH7JwqvB.js} +7 -7
  252. package/dist/{tui-DrATGNms.js → tui-C_5HG495.js} +2 -2
  253. package/dist/{tui-cli-D19-MCXt.js → tui-cli-B65PKZMj.js} +3 -3
  254. package/dist/{tui-cli-B2ii7u23.js → tui-cli-CJnfmuxq.js} +28 -28
  255. package/dist/{unified-runner-BtO3UQSd.js → unified-runner-CApgXtVC.js} +14 -2
  256. package/dist/{update-Don6XTH9.js → update-Ya0e-JnM.js} +3 -3
  257. package/dist/{update-check-DCo5RtKp.js → update-check-7EzEjSzb.js} +5 -5
  258. package/dist/{update-cli-gKtjyXlD.js → update-cli-D5_jTEJv.js} +95 -95
  259. package/dist/{update-cli-DRODEMSI.js → update-cli-Dxb3pUyu.js} +12 -12
  260. package/dist/{update-runner-JcdOHr71.js → update-runner-BhVsdpxm.js} +1 -1
  261. package/dist/{update-runner-AsKAxe31.js → update-runner-FhW6n-Nv.js} +15 -15
  262. package/dist/{web-BIzWZFiN.js → web-ConlA_Ch.js} +4 -4
  263. package/dist/{web-DGo16lWn.js → web-CthDLVSz.js} +1 -1
  264. package/dist/{web-DKwOxo8E.js → web-Db_-ahjX.js} +6 -6
  265. package/dist/web-Dpb_tv_j.js +110 -0
  266. package/dist/{webhooks-cli-DbnQ2BVE.js → webhooks-cli-BRxe4uCg.js} +4 -4
  267. package/dist/{whatsapp-actions-CqXxtCoj.js → whatsapp-actions-ChO_shrk.js} +15 -15
  268. package/dist/{with-timeout-Cm5EhxG_.js → with-timeout-CtVdu_1U.js} +1 -1
  269. package/dist/{workspace-dirs-DKu48umx.js → workspace-dirs-GpkFi6Kw.js} +1 -1
  270. package/dist/{wsl-xNOi_Ch8.js → wsl-q8spwrME.js} +2 -2
  271. package/extensions/bluebubbles/package.json +1 -1
  272. package/extensions/copilot-proxy/package.json +1 -1
  273. package/extensions/diagnostics-otel/package.json +1 -1
  274. package/extensions/discord/package.json +1 -1
  275. package/extensions/feishu/package.json +1 -1
  276. package/extensions/google-antigravity-auth/package.json +1 -1
  277. package/extensions/google-gemini-cli-auth/package.json +1 -1
  278. package/extensions/googlechat/package.json +1 -1
  279. package/extensions/imessage/package.json +1 -1
  280. package/extensions/irc/package.json +1 -1
  281. package/extensions/learning-loop/package.json +1 -1
  282. package/extensions/line/package.json +1 -1
  283. package/extensions/llm-task/package.json +1 -1
  284. package/extensions/matrix/CHANGELOG.md +12 -0
  285. package/extensions/matrix/package.json +1 -1
  286. package/extensions/mattermost/package.json +1 -1
  287. package/extensions/memory-core/package.json +1 -1
  288. package/extensions/memory-lancedb/package.json +1 -1
  289. package/extensions/minimax-portal-auth/package.json +1 -1
  290. package/extensions/msteams/CHANGELOG.md +12 -0
  291. package/extensions/msteams/package.json +1 -1
  292. package/extensions/nextcloud-talk/package.json +1 -1
  293. package/extensions/nostr/CHANGELOG.md +12 -0
  294. package/extensions/nostr/package.json +1 -1
  295. package/extensions/open-prose/package.json +1 -1
  296. package/extensions/outlook/package.json +1 -1
  297. package/extensions/pipeline/package.json +1 -1
  298. package/extensions/signal/package.json +1 -1
  299. package/extensions/slack/package.json +1 -1
  300. package/extensions/telegram/package.json +1 -1
  301. package/extensions/tlon/package.json +1 -1
  302. package/extensions/twitch/CHANGELOG.md +12 -0
  303. package/extensions/twitch/package.json +1 -1
  304. package/extensions/voice-call/CHANGELOG.md +12 -0
  305. package/extensions/voice-call/package.json +1 -1
  306. package/extensions/whatsapp/package.json +1 -1
  307. package/extensions/zalo/CHANGELOG.md +12 -0
  308. package/extensions/zalo/package.json +1 -1
  309. package/extensions/zalouser/CHANGELOG.md +12 -0
  310. package/extensions/zalouser/package.json +1 -1
  311. package/package.json +1 -1
  312. package/dist/register.configure-Boyfir72.js +0 -148
  313. package/dist/web-sefqR11J.js +0 -110
@@ -1,156 +1,156 @@
1
1
  import { _ as expandHomePrefix, g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, E as truncateUtf16Safe, H as getLogger, P as setVerbose, R as colorize, S as shortenHomePath, U as getResolvedLoggerSettings, V as getChildLogger, c as ensureDir, t as CONFIG_DIR, y as resolveUserPath, z as isRich } from "./utils-B-0b9bGM.js";
3
3
  import { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-EAliFiVK.js";
4
- import { $ as buildDeliveryFromLegacyPayload, A as emitGatewayRestart, An as initSubagentRegistry, Ar as extractImageContentFromSource, B as summarizeRestartSentinel, Bn as registerAgentRunContext, Ct as requestBodyErrorToText, Dr as DEFAULT_INPUT_MAX_REDIRECTS, E as resetDirectoryCache, Er as DEFAULT_INPUT_IMAGE_MIMES, Et as agentCommand, F as setPreRestartDeferralCheck, Fn as readLatestAssistantReply, Gt as getCliSessionId, I as consumeRestartSentinel, In as clearAgentRunContext, J as normalizeOptionalSessionKey, K as inferLegacyName, Kt as setCliSessionId, Ln as emitAgentEvent, Lt as createDefaultDeps, M as markGatewaySigusr1RestartHandled, Mr as resolveInputFileLimits, Mt as resolveOutboundTarget, Nt as resolveSessionDeliveryTarget, O as consumeGatewaySigusr1RestartAuthorization, On as countActiveDescendantRuns, Or as DEFAULT_INPUT_TIMEOUT_MS, P as setGatewaySigusr1RestartPolicy, Pn as runSubagentAnnounceFlow, Pr as resolveAgentTimeoutMs, Pt as createOutboundSendDeps, Q as migrateLegacyCronPayload, R as formatRestartSentinelMessage, Rn as getAgentRunContext, St as readJsonBodyWithLimit, Tr as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as sleepWithAbort, U as normalizeHttpWebhookUrl, Ut as resolveModelProfile, Vt as getActiveEmbeddedRunCount, Wt as runWithModelFallback, X as normalizePayloadToSystemText, Xt as resolveAgentAvatar, Y as normalizeOptionalText, Z as normalizeRequiredName, _ as loadCombinedSessionStoreForGateway, ar as setCommandLaneConcurrency, cn as buildHistoryContextFromEntries, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, d as createSymiTools, en as buildSafeExternalPrompt, et as hasLegacyDeliveryHints, f as resolveAnnounceTargetFromKey, fr as stripHeartbeatToken, ft as loadSymiPlugins, g as listSessionsFromStore, hn as getTotalPendingReplies, i as resolveCronStyleNow, ir as resetAllLanes, j as isGatewaySigusr1RestartExternallyAllowed, jn as listDescendantRunsForRequester, jr as normalizeMimeList, k as deferGatewayRestartUntilIdle, kn as countActiveRunsForSession, kr as extractFileContentFromSource, l as applyToolPolicyPipeline, nn as getHookType, or as waitForActiveTasks, pr as lookupContextTokens, q as normalizeOptionalAgentId, qt as runCliAgent, rn as isExternalHookSession, rr as getTotalQueueSize, sr as CommandLane, st as requestHeartbeatNow, tn as detectSuspiciousPatterns, tr as getActiveTaskCount, tt as stripLegacyDeliveryFields, u as buildDefaultToolPolicyPipelineSteps, ut as getPluginToolMeta, v as loadSessionEntry, w as resolveOutboundSessionRoute, wt as computeBackoff, xr as enqueueSystemEvent, xt as handleSlackHttpRequest, zn as onAgentEvent, zt as runAgentTurn } from "./reply-CpNWtuU4.js";
4
+ import { $ as buildDeliveryFromLegacyPayload, A as emitGatewayRestart, An as initSubagentRegistry, Ar as extractImageContentFromSource, B as summarizeRestartSentinel, Bn as registerAgentRunContext, Ct as requestBodyErrorToText, Dr as DEFAULT_INPUT_MAX_REDIRECTS, E as resetDirectoryCache, Er as DEFAULT_INPUT_IMAGE_MIMES, Et as agentCommand, F as setPreRestartDeferralCheck, Fn as readLatestAssistantReply, Gt as getCliSessionId, I as consumeRestartSentinel, In as clearAgentRunContext, J as normalizeOptionalSessionKey, K as inferLegacyName, Kt as setCliSessionId, Ln as emitAgentEvent, Lt as createDefaultDeps, M as markGatewaySigusr1RestartHandled, Mr as resolveInputFileLimits, Mt as resolveOutboundTarget, Nt as resolveSessionDeliveryTarget, O as consumeGatewaySigusr1RestartAuthorization, On as countActiveDescendantRuns, Or as DEFAULT_INPUT_TIMEOUT_MS, P as setGatewaySigusr1RestartPolicy, Pn as runSubagentAnnounceFlow, Pr as resolveAgentTimeoutMs, Pt as createOutboundSendDeps, Q as migrateLegacyCronPayload, R as formatRestartSentinelMessage, Rn as getAgentRunContext, St as readJsonBodyWithLimit, Tr as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as sleepWithAbort, U as normalizeHttpWebhookUrl, Ut as resolveModelProfile, Vt as getActiveEmbeddedRunCount, Wt as runWithModelFallback, X as normalizePayloadToSystemText, Xt as resolveAgentAvatar, Y as normalizeOptionalText, Z as normalizeRequiredName, _ as loadCombinedSessionStoreForGateway, ar as setCommandLaneConcurrency, cn as buildHistoryContextFromEntries, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, d as createSymiTools, en as buildSafeExternalPrompt, et as hasLegacyDeliveryHints, f as resolveAnnounceTargetFromKey, fr as stripHeartbeatToken, ft as loadSymiPlugins, g as listSessionsFromStore, hn as getTotalPendingReplies, i as resolveCronStyleNow, ir as resetAllLanes, j as isGatewaySigusr1RestartExternallyAllowed, jn as listDescendantRunsForRequester, jr as normalizeMimeList, k as deferGatewayRestartUntilIdle, kn as countActiveRunsForSession, kr as extractFileContentFromSource, l as applyToolPolicyPipeline, nn as getHookType, or as waitForActiveTasks, pr as lookupContextTokens, q as normalizeOptionalAgentId, qt as runCliAgent, rn as isExternalHookSession, rr as getTotalQueueSize, sr as CommandLane, st as requestHeartbeatNow, tn as detectSuspiciousPatterns, tr as getActiveTaskCount, tt as stripLegacyDeliveryFields, u as buildDefaultToolPolicyPipelineSteps, ut as getPluginToolMeta, v as loadSessionEntry, w as resolveOutboundSessionRoute, wt as computeBackoff, xr as enqueueSystemEvent, xt as handleSlackHttpRequest, zn as onAgentEvent, zt as runAgentTurn } from "./reply-XaXqDK9F.js";
5
5
  import { S as parseAgentSessionKey, c as normalizeMainKey, f as toAgentRequestSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, p as toAgentStoreSessionKey, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
6
- import { r as matchesSkillFilter, t as resolveSymiPackageRoot } from "./symi-root-MF6_6SCS.js";
6
+ import { r as matchesSkillFilter, t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
7
7
  import { C as createInternalHookEvent, S as clearInternalHooks, T as triggerInternalHook, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL, w as registerInternalHook } from "./registry-Cja8eT7G.js";
8
8
  import { a as setConsoleSubsystemFilter, f as defaultRuntime, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
9
9
  import { i as logDebug, n as runExec, s as logWarn, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
10
- import { C as ensureAgentWorkspace, D as resolveDefaultAgentWorkspaceDir, O as resolveWorkspaceTemplateDir, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, r as resolveAgentConfig, s as resolveAgentSkillsFilter } from "./agent-scope-BRwEc2pG.js";
11
- import { Gt as DEFAULT_MODEL, Kt as DEFAULT_PROVIDER, Rt as isPidAlive, Wt as DEFAULT_CONTEXT_TOKENS, a as getModelRefStatus, d as resolveAllowedModelRef, h as resolveHooksGmailModel, o as isCliProvider, p as resolveConfiguredModelRef, y as resolveThinkingDefault } from "./model-selection-X1oLh3CE.js";
10
+ import { C as ensureAgentWorkspace, D as resolveDefaultAgentWorkspaceDir, O as resolveWorkspaceTemplateDir, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, r as resolveAgentConfig, s as resolveAgentSkillsFilter } from "./agent-scope-CgUHAtCo.js";
11
+ import { Gt as DEFAULT_MODEL, Kt as DEFAULT_PROVIDER, Rt as isPidAlive, Wt as DEFAULT_CONTEXT_TOKENS, a as getModelRefStatus, d as resolveAllowedModelRef, h as resolveHooksGmailModel, o as isCliProvider, p as resolveConfiguredModelRef, y as resolveThinkingDefault } from "./model-selection-CyFvYcRt.js";
12
12
  import "./github-copilot-token-DAu1a6BX.js";
13
13
  import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
14
14
  import "./boolean-BsqeuxE6.js";
15
15
  import { n as logAcceptedEnvOption, t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
16
16
  import { _ as normalizeGatewayClientMode, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, r as isGatewayCliClient, s as isWebchatClient } from "./message-channel-aT-I_DTX.js";
17
- import "./send-BVBCh27_.js";
18
- import { B as resolveAgentMaxConcurrent, C as parseDurationMs, H as VERSION, U as resolveRuntimeServiceVersion, V as resolveSubagentMaxConcurrent, i as loadConfig, l as writeConfigFile, n as migrateLegacyConfig, o as readConfigFileSnapshot, r as createConfigIO } from "./config-tNauHpdq.js";
17
+ import "./send-CQVnyJyF.js";
18
+ import { B as resolveAgentMaxConcurrent, C as parseDurationMs, H as VERSION, U as resolveRuntimeServiceVersion, V as resolveSubagentMaxConcurrent, i as loadConfig, l as writeConfigFile, n as migrateLegacyConfig, o as readConfigFileSnapshot, r as createConfigIO } from "./config-Dz95lSBW.js";
19
19
  import { l as isTestDefaultMemorySlotDisabled } from "./manifest-registry-C4BxOMWX.js";
20
20
  import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
- import { d as registerUnhandledRejectionHandler } from "./runner-BAVs-p6Z.js";
22
- import "./image-lCS3o9xj.js";
23
- import "./models-config-CEMioDUi.js";
21
+ import { d as registerUnhandledRejectionHandler } from "./runner-DRv0uCK_.js";
22
+ import "./image-BWmcNF8N.js";
23
+ import "./models-config-CFFjJPe7.js";
24
24
  import "./pi-model-discovery-4uUnLc3n.js";
25
- import "./pi-embedded-helpers-Bs4eMaNo.js";
26
- import { S as resolveToolProfilePolicy, _ as collectExplicitAllowlist, b as mergeAlsoAllowPolicy } from "./sandbox-HZ_uilsn.js";
27
- import "./chrome-CSJzpT9Z.js";
25
+ import "./pi-embedded-helpers-BgdB5kvy.js";
26
+ import { S as resolveToolProfilePolicy, _ as collectExplicitAllowlist, b as mergeAlsoAllowPolicy } from "./sandbox-B6N8cV4d.js";
27
+ import "./chrome-DU2ZysN3.js";
28
28
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-D5dKabOc.js";
29
29
  import { t as safeEqualSecret } from "./secret-equal-D7A3Bol7.js";
30
30
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-B2SPYrh4.js";
31
31
  import { a as isTrustedProxyAddress, d as resolveGatewayListenHosts, f as resolveHostName, l as resolveClientIp, n as isLoopbackAddress, o as isValidIPv4, r as isLoopbackHost, s as normalizeHostHeader, t as rawDataToString, u as resolveGatewayBindHost } from "./ws-C7EXRv8z.js";
32
32
  import { a as resolveGatewayAuth, c as createAuthRateLimiter, i as isLocalDirectRequest, n as authorizeHttpGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as authorizeWsControlUiGatewayConnect, s as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, t as assertGatewayAuthConfigured } from "./auth-B741uFtk.js";
33
- import { g as mergeGatewayTailscaleConfig, h as ensureGatewayStartupAuth } from "./server-context-VlF1_hYj.js";
33
+ import { g as mergeGatewayTailscaleConfig, h as ensureGatewayStartupAuth } from "./server-context-CCBZN8a0.js";
34
34
  import { d as hasBinary } from "./frontmatter-DWQhtOo7.js";
35
- import { r as buildWorkspaceSkillSnapshot } from "./skills-DqQUtOph.js";
36
- import "./routes-CVwRcA9D.js";
35
+ import { r as buildWorkspaceSkillSnapshot } from "./skills-6jdJQ5ZL.js";
36
+ import "./routes-BAZTZNuQ.js";
37
37
  import "./redact-f-Q-hFt_.js";
38
38
  import { a as isErrno, n as formatErrorMessage } from "./errors-BF3TeRH2.js";
39
- import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-CTDvb1DF.js";
40
- import "./paths-CT6jsi4E.js";
39
+ import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-CUjO1ca2.js";
40
+ import "./paths-BBm9fwuG.js";
41
41
  import { t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
42
- import { c as detectMime } from "./image-ops-DYbDWaIA.js";
43
- import "./store-DvtcmOKj.js";
44
- import { a as inspectPortUsage, r as ensurePortAvailable, s as formatPortDiagnostics } from "./ports-OZQlocB7.js";
42
+ import { c as detectMime } from "./image-ops-1OJMSAUX.js";
43
+ import "./store-r1DJSDq-.js";
44
+ import { a as inspectPortUsage, r as ensurePortAvailable, s as formatPortDiagnostics } from "./ports-BOmtxoTv.js";
45
45
  import "./trash-DcMh1i4B.js";
46
- import { B as resolveAgentMainSessionKey, H as resolveMainSessionKey, M as evaluateSessionFreshness, P as resolveSessionResetPolicy, U as resolveMainSessionKeyFromConfig, Y as cleanStaleLockFiles, _ as mergeDeliveryContext, d as updateSessionStore, h as deliveryContextFromSession, n as parseSessionThreadInfo, o as loadSessionStore, z as canonicalizeMainSessionAlias } from "./sessions-jTAGYjWl.js";
47
- import "./dock-BYiRZSgZ.js";
48
- import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BAyxWQSz.js";
49
- import { n as resolveWhatsAppAccount } from "./accounts-Cd816n6l.js";
50
- import "./accounts-CokRskCl.js";
51
- import "./accounts-mN_EcgxC.js";
52
- import { t as buildChannelAccountBindings } from "./bindings-ChzePa8q.js";
46
+ import { B as resolveAgentMainSessionKey, H as resolveMainSessionKey, M as evaluateSessionFreshness, P as resolveSessionResetPolicy, U as resolveMainSessionKeyFromConfig, Y as cleanStaleLockFiles, _ as mergeDeliveryContext, d as updateSessionStore, h as deliveryContextFromSession, n as parseSessionThreadInfo, o as loadSessionStore, z as canonicalizeMainSessionAlias } from "./sessions-Cpgnq0pA.js";
47
+ import "./dock-BhS32F6E.js";
48
+ import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DKDeQZF0.js";
49
+ import { n as resolveWhatsAppAccount } from "./accounts-DDuIpcln.js";
50
+ import "./accounts-bK-Yqdwx.js";
51
+ import "./accounts-DyJN4_vR.js";
52
+ import { t as buildChannelAccountBindings } from "./bindings-DFaVVCsf.js";
53
53
  import "./logging-w5jq5901.js";
54
- import "./send-CXFTeD_J.js";
54
+ import "./send-DVm0du0_.js";
55
55
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, s as resolveSessionTranscriptsDirForAgent } from "./paths-CyhzMxFA.js";
56
- import "./tool-images-B-pqX3nX.js";
56
+ import "./tool-images-DvUBlqjX.js";
57
57
  import "./tool-display-D8N3rsYt.js";
58
58
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
59
- import "./api-key-rotation-CEr3lKih.js";
60
- import "./local-roots-BBeKX7PX.js";
61
- import "./sqlite-BV5ILFtC.js";
62
- import { n as loadModelCatalog } from "./model-catalog-CvbwxWuC.js";
59
+ import "./api-key-rotation-CzuPlV2t.js";
60
+ import "./local-roots-aAFLQGkY.js";
61
+ import "./sqlite-Dx3J_aSE.js";
62
+ import { n as loadModelCatalog } from "./model-catalog-8Son0J4O.js";
63
63
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-BuceUQDl.js";
64
- import { r as getMachineDisplayName } from "./with-timeout-Cm5EhxG_.js";
65
- import { C as getGlobalHookRunner, T as runGlobalGatewayStopSafely, t as deliverOutboundPayloads } from "./deliver-BYdNAEqj.js";
64
+ import { r as getMachineDisplayName } from "./with-timeout-CtVdu_1U.js";
65
+ import { C as getGlobalHookRunner, T as runGlobalGatewayStopSafely, t as deliverOutboundPayloads } from "./deliver-B4KZ6-oZ.js";
66
66
  import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-CH0skkp6.js";
67
67
  import "./diagnostic-session-state-CUslJyKP.js";
68
- import "./send-DT-5buW5.js";
69
- import "./model-CeeOcylL.js";
70
- import { a as resolveAgentIdentity } from "./reply-prefix-BLOOs1aW.js";
71
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-DhkRAIdT.js";
72
- import { i as resolveMemorySearchConfig } from "./manager-C1CfGzZ2.js";
68
+ import "./send-B3RdXvjC.js";
69
+ import "./model-tWhwnFf8.js";
70
+ import { a as resolveAgentIdentity } from "./reply-prefix-CE2YmmsD.js";
71
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-DDumUksr.js";
72
+ import { i as resolveMemorySearchConfig } from "./manager-D4LJSRyZ.js";
73
73
  import "./retry-BoS4e4X_.js";
74
- import { a as ToolInputError } from "./target-errors-CCz79CmV.js";
74
+ import { a as ToolInputError } from "./target-errors-7AvoVa10.js";
75
75
  import "./chunk-1dhPX1NK.js";
76
- import "./markdown-tables-ZwP14ydw.js";
77
- import "./ir-Dt4hOzxG.js";
76
+ import "./markdown-tables-CEbN0fEm.js";
77
+ import "./ir-DZam9q5M.js";
78
78
  import "./render-CXDO_kgw.js";
79
- import { r as isRestartEnabled } from "./commands-CtocZ4Lg.js";
80
- import "./commands-registry-BZ0ZSQpM.js";
81
- import { $t as verifyDeviceSignature, At as PROTOCOL_VERSION, Ft as buildDeviceAuthPayload, Ht as requestDevicePairing, It as approveDevicePairing, Jt as roleScopesAllow, Kt as updatePairedDeviceMetadata, Lt as ensureDeviceToken, Mt as errorShape, Qt as normalizeDevicePublicKeyBase64Url, R as validateExecApprovalRequestParams, Rt as getPairedDevice, Xt as deriveDeviceIdFromPublicKey, at as validateRequestFrame, jt as ErrorCodes, n as formatValidationErrors, qt as verifyDeviceToken, w as validateConnectParams, z as validateExecApprovalResolveParams } from "./client-Bj_vTpri.js";
82
- import { f as loadGatewayTlsRuntime$1, n as callGateway } from "./call-tmHtVCkn.js";
83
- import "./pairing-token-AV-MMfVE.js";
79
+ import { r as isRestartEnabled } from "./commands-BNLCWX6e.js";
80
+ import "./commands-registry-BT0-zzs3.js";
81
+ import { $t as deriveDeviceIdFromPublicKey, Bt as ensureDeviceToken, Ft as errorShape, Gt as requestDevicePairing, Nt as PROTOCOL_VERSION, Pt as ErrorCodes, R as validateExecApprovalRequestParams, Rt as buildDeviceAuthPayload, Vt as getPairedDevice, Xt as verifyDeviceToken, Yt as updatePairedDeviceMetadata, Zt as roleScopesAllow, at as validateRequestFrame, n as formatValidationErrors, nn as verifyDeviceSignature, tn as normalizeDevicePublicKeyBase64Url, w as validateConnectParams, z as validateExecApprovalResolveParams, zt as approveDevicePairing } from "./client-B8xmq-Pw.js";
82
+ import { f as loadGatewayTlsRuntime$1, n as callGateway } from "./call-CX0cs106.js";
83
+ import "./pairing-token-CX3NN_qj.js";
84
84
  import "./channel-activity-BOiuJS3t.js";
85
85
  import "./fetch-DTNGXEzX.js";
86
- import "./tables-C38rzF6E.js";
87
- import "./send-JWV62VbW.js";
88
- import { a as readChannelAllowFromStoreSync } from "./pairing-store-B8ktu-6j.js";
86
+ import "./tables-BEzT0Da4.js";
87
+ import "./send-Bm4ULEzh.js";
88
+ import { a as readChannelAllowFromStoreSync } from "./pairing-store-CK726Dzq.js";
89
89
  import "./proxy-DU7W9XSc.js";
90
90
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
91
91
  import { n as runCommandWithRuntime } from "./cli-utils-DN_hM6ov.js";
92
92
  import { t as formatHelpExamples } from "./help-format-B_-M23wP.js";
93
93
  import { n as withProgress } from "./progress-jIePzvGA.js";
94
- import "./resolve-route-BcnaXYvh.js";
95
- import "./replies-Dy92jzrz.js";
96
- import { S as registerSkillsChangeListener, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, l as refreshRemoteBinsForConnectedNodes, o as getRemoteSkillEligibility, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion } from "./skill-commands-ZXbEITKi.js";
97
- import "./workspace-dirs-DKu48umx.js";
98
- import "./pi-auth-json-FpfHyEcu.js";
94
+ import "./resolve-route-BMoTaVAH.js";
95
+ import "./replies-BMqtgBhh.js";
96
+ import { S as registerSkillsChangeListener, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, l as refreshRemoteBinsForConnectedNodes, o as getRemoteSkillEligibility, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion } from "./skill-commands-Cxw-jNxU.js";
97
+ import "./workspace-dirs-GpkFi6Kw.js";
98
+ import "./pi-auth-json-zHckislA.js";
99
99
  import { c as hasNonzeroUsage, s as deriveSessionTotalTokens } from "./session-cost-usage-BXAI7CNH.js";
100
- import "./outbound-attachment-Qfh5dlsg.js";
100
+ import "./outbound-attachment-Bw-c5Cdp.js";
101
101
  import "./delivery-queue-CAxX6nGq.js";
102
- import "./send-DsSI8z3F.js";
103
- import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-CdPNw25E.js";
102
+ import "./send-9SapUCg7.js";
103
+ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-CueJ7O_B.js";
104
104
  import "./prompt-style-CnkMpSXt.js";
105
- import "./pairing-labels-Dxb898X5.js";
105
+ import "./pairing-labels-DyXoD1DS.js";
106
106
  import { n as formatTokenCount, r as formatUsd } from "./usage-format-BgUx3Bm4.js";
107
107
  import { t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-DXM2pQYL.js";
108
- import "./nodes-screen-Cd49cSPb.js";
109
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-BBxnqCay.js";
110
- import "./control-service-BBnhN7aZ.js";
108
+ import "./nodes-screen-8Bq7DiSa.js";
109
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-DRWb_Cax.js";
110
+ import "./control-service-BYKXzY4f.js";
111
111
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CvFURHzt.js";
112
- import { n as resolveMessageChannelSelection } from "./channel-selection-DaJDux-Q.js";
112
+ import { n as resolveMessageChannelSelection } from "./channel-selection-V2xDgw16.js";
113
113
  import { i as onHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-ChEo5Zvk.js";
114
114
  import { t as ensureSymiCliOnPath } from "./path-env-BaQ2E7uD.js";
115
115
  import "./runtime-guard-Dik20CVM.js";
116
- import { t as forceFreePortAndWait } from "./ports-u9lWy2Jt.js";
116
+ import { t as forceFreePortAndWait } from "./ports-DtW62rqS.js";
117
117
  import "./catalog-NQ4pj9RI.js";
118
- import "./skills-status-Cjsh8we0.js";
118
+ import "./skills-status-C3ptXwnh.js";
119
119
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-BvU3-DRl.js";
120
120
  import { n as inheritOptionFromParent } from "./command-options-BkTXKWlb.js";
121
121
  import { t as resolveChannelDefaultAccountId } from "./helpers-DnjQ73f_.js";
122
- import { t as applyPluginAutoEnable } from "./plugin-auto-enable-DwIrzVOA.js";
123
- import "./install-safe-path-D3mg1DMG.js";
124
- import "./skill-scanner-w3DJvw1Q.js";
125
- import "./channels-status-issues-B_PI3nEE.js";
126
- import "./daemon-runtime-u01h46bE.js";
127
- import "./systemd-CevHlgD4.js";
128
- import "./service-D80PyJxB.js";
129
- import "./lifecycle-core-DxmxQdhS.js";
130
- import "./systemd-hints-DmgRnw1L.js";
122
+ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-CP0nONRL.js";
123
+ import "./install-safe-path-D3Uz77u7.js";
124
+ import "./skill-scanner-hMtQbWPV.js";
125
+ import "./channels-status-issues-CJ0Vb_9z.js";
126
+ import "./daemon-runtime-mE1b-Q48.js";
127
+ import "./systemd-DT6SbCim.js";
128
+ import "./service-osK70kTZ.js";
129
+ import "./lifecycle-core-C4HzGXA1.js";
130
+ import "./systemd-hints-xYZbFny_.js";
131
131
  import { t as parsePort$1 } from "./parse-port-DnJYkByg.js";
132
- import { n as addGatewayServiceCommands } from "./daemon-cli-BccZzUb0.js";
133
- import "./diagnostics-BrUo0gqs.js";
132
+ import { n as addGatewayServiceCommands } from "./daemon-cli-BLhFbih0.js";
133
+ import "./diagnostics-BRwihzJG.js";
134
134
  import "./table-BKlH0YlA.js";
135
135
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-CyVOLgNE.js";
136
- import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BV7WhIkY.js";
137
- import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-Djfdh06o.js";
136
+ import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-DnmJ0ABB.js";
137
+ import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-BgdM9XZl.js";
138
138
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-DUQ6tE92.js";
139
- import { r as pickGatewaySelfPresence } from "./status-nzJEZmNT.js";
140
- import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-o847FIt1.js";
141
- import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-6n-YayeS.js";
142
- import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-DCo5RtKp.js";
143
- import { t as runOnboardingWizard } from "./onboarding-Dn5agNG_.js";
144
- import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-IBEaQXPX.js";
145
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-DqFdzIkc.js";
139
+ import { r as pickGatewaySelfPresence } from "./status-DOTlXdcN.js";
140
+ import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-B1nih5LD.js";
141
+ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B7moDVHX.js";
142
+ import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-7EzEjSzb.js";
143
+ import { t as runOnboardingWizard } from "./onboarding-Dg6nx_ph.js";
144
+ import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-Bu1RjLe6.js";
145
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-CoG1P_P0.js";
146
146
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-Dq6vwkWW.js";
147
- import "./agents.config-Dib8Uo2P.js";
148
- import "./dm-policy-shared-epgkayyq.js";
149
- import "./node-service-CXzMs782.js";
150
- import "./status.update-TlYwuzTa.js";
151
- import "./skills-install-HGYidhrv.js";
152
- import "./update-runner-AsKAxe31.js";
153
- import { t as resolveAgentSessionDirs } from "./session-dirs-DPzjjra2.js";
147
+ import "./agents.config-B9BZoM2m.js";
148
+ import "./dm-policy-shared-DlDAGtZL.js";
149
+ import "./node-service-CD47Qpf1.js";
150
+ import "./status.update-CG0ciGaf.js";
151
+ import "./skills-install-CWVdJkLn.js";
152
+ import "./update-runner-FhW6n-Nv.js";
153
+ import { t as resolveAgentSessionDirs } from "./session-dirs-Dgz7kkUM.js";
154
154
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-B4H-2N8y.js";
155
155
  import { fileURLToPath, pathToFileURL } from "node:url";
156
156
  import * as fsSync from "node:fs";
@@ -159,7 +159,7 @@ import os from "node:os";
159
159
  import path from "node:path";
160
160
  import JSON5 from "json5";
161
161
  import chalk from "chalk";
162
- import fsPromises from "node:fs/promises";
162
+ import fs$1 from "node:fs/promises";
163
163
  import { spawn } from "node:child_process";
164
164
  import crypto, { createHash, randomBytes, randomUUID } from "node:crypto";
165
165
  import { z } from "zod";
@@ -1152,7 +1152,7 @@ function shouldSkipCheck(allowInTests) {
1152
1152
  }
1153
1153
  async function readState(statePath) {
1154
1154
  try {
1155
- const raw = await fsPromises.readFile(statePath, "utf-8");
1155
+ const raw = await fs$1.readFile(statePath, "utf-8");
1156
1156
  const parsed = JSON.parse(raw);
1157
1157
  return parsed && typeof parsed === "object" ? parsed : {};
1158
1158
  } catch {
@@ -1160,8 +1160,8 @@ async function readState(statePath) {
1160
1160
  }
1161
1161
  }
1162
1162
  async function writeState(statePath, state) {
1163
- await fsPromises.mkdir(path.dirname(statePath), { recursive: true });
1164
- await fsPromises.writeFile(statePath, JSON.stringify(state, null, 2), "utf-8");
1163
+ await fs$1.mkdir(path.dirname(statePath), { recursive: true });
1164
+ await fs$1.writeFile(statePath, JSON.stringify(state, null, 2), "utf-8");
1165
1165
  }
1166
1166
  function sameUpdateAvailable(a, b) {
1167
1167
  if (a === b) return true;
@@ -5598,6 +5598,9 @@ const BASE_METHODS = [
5598
5598
  "sessions.patch",
5599
5599
  "sessions.reset",
5600
5600
  "sessions.restore",
5601
+ "sessions.adoptFile",
5602
+ "sessions.favoriteFile",
5603
+ "sessions.deleteFile",
5601
5604
  "sessions.delete",
5602
5605
  "sessions.compact",
5603
5606
  "last-heartbeat",
@@ -6458,7 +6461,7 @@ function normalizeAgentPayload(payload) {
6458
6461
  async function startBrowserControlServerIfEnabled() {
6459
6462
  if (isTruthyEnvValue(process.env.SYMI_SKIP_BROWSER_CONTROL_SERVER)) return null;
6460
6463
  const override = process.env.SYMI_BROWSER_CONTROL_MODULE?.trim();
6461
- const mod = override ? await import(override) : await import("./control-service-BBnhN7aZ.js").then((n) => n.t);
6464
+ const mod = override ? await import(override) : await import("./control-service-BYKXzY4f.js").then((n) => n.t);
6462
6465
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
6463
6466
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
6464
6467
  if (!start) return null;
@@ -6686,7 +6689,7 @@ async function resolveFileWithinRoot(rootReal, urlPath) {
6686
6689
  if (normalized.endsWith("/")) return await tryOpen(path.posix.join(rel, "index.html"));
6687
6690
  const candidate = path.join(rootReal, rel);
6688
6691
  try {
6689
- const st = await fsPromises.lstat(candidate);
6692
+ const st = await fs$1.lstat(candidate);
6690
6693
  if (st.isSymbolicLink()) return null;
6691
6694
  if (st.isDirectory()) return await tryOpen(path.posix.join(rel, "index.html"));
6692
6695
  } catch {}
@@ -6723,8 +6726,8 @@ async function resolveA2uiRoot() {
6723
6726
  for (const dir of candidates) try {
6724
6727
  const indexPath = path.join(dir, "index.html");
6725
6728
  const bundlePath = path.join(dir, "a2ui.bundle.js");
6726
- await fsPromises.stat(indexPath);
6727
- await fsPromises.stat(bundlePath);
6729
+ await fs$1.stat(indexPath);
6730
+ await fs$1.stat(bundlePath);
6728
6731
  return dir;
6729
6732
  } catch {}
6730
6733
  return null;
@@ -6733,7 +6736,7 @@ async function resolveA2uiRootReal() {
6733
6736
  if (cachedA2uiRootReal !== void 0 && (cachedA2uiRootReal !== null || Date.now() - cachedA2uiResolvedAtMs < A2UI_ROOT_RETRY_NULL_AFTER_MS)) return cachedA2uiRootReal;
6734
6737
  if (!resolvingA2uiRoot) resolvingA2uiRoot = (async () => {
6735
6738
  const root = await resolveA2uiRoot();
6736
- cachedA2uiRootReal = root ? await fsPromises.realpath(root) : null;
6739
+ cachedA2uiRootReal = root ? await fs$1.realpath(root) : null;
6737
6740
  cachedA2uiResolvedAtMs = Date.now();
6738
6741
  resolvingA2uiRoot = null;
6739
6742
  return cachedA2uiRootReal;
@@ -6954,13 +6957,13 @@ function normalizeBasePath(rawPath) {
6954
6957
  }
6955
6958
  async function prepareCanvasRoot(rootDir) {
6956
6959
  await ensureDir(rootDir);
6957
- const rootReal = await fsPromises.realpath(rootDir);
6960
+ const rootReal = await fs$1.realpath(rootDir);
6958
6961
  try {
6959
6962
  const indexPath = path.join(rootReal, "index.html");
6960
- await fsPromises.stat(indexPath);
6963
+ await fs$1.stat(indexPath);
6961
6964
  } catch {
6962
6965
  try {
6963
- await fsPromises.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
6966
+ await fs$1.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
6964
6967
  } catch {}
6965
6968
  }
6966
6969
  return rootReal;
@@ -8862,22 +8865,25 @@ async function handleOpenResponsesHttpRequest(req, res, opts) {
8862
8865
  /**
8863
8866
  * HTTP API for session history — serves the Glass UI History drawer.
8864
8867
  *
8865
- * GET /api/sessions — List all sessions with metadata
8866
- * GET /api/transcript?file=<filename> Read a session transcript
8868
+ * GET /api/sessions?currentKey=<sessionKey>
8869
+ * List all sessions (live + archived) with metadata. Passing `currentKey`
8870
+ * lets the server mark exactly one row as `kind: "current"`. Response shape:
8871
+ * { sessions: SessionHistoryRow[] }
8867
8872
  *
8868
- * Both endpoints are read-only and serve data from the existing session
8869
- * store and .jsonl transcript files.
8873
+ * GET /api/transcript?file=<basename>
8874
+ * Read a session transcript (active or archived). Returns:
8875
+ * { messages: AgentMessage[] }
8876
+ *
8877
+ * Both endpoints are read-only. Mutations (adopt, favorite, delete) go
8878
+ * through the gateway RPC (`sessions.adoptFile`, `sessions.favoriteFile`,
8879
+ * `sessions.deleteFile`).
8870
8880
  *
8871
8881
  * @module
8872
8882
  */
8873
- /**
8874
- * Handle /api/sessions and /api/transcript HTTP requests.
8875
- * Returns true if the request was handled, false otherwise.
8876
- */
8877
8883
  function handleSessionsApiRequest(req, res, cfg) {
8878
8884
  const url = new URL(req.url ?? "/", "http://localhost");
8879
8885
  if (url.pathname === "/api/sessions" && req.method === "GET") {
8880
- handleListSessions(res, cfg);
8886
+ handleListSessions(res, cfg, url.searchParams.get("currentKey") ?? void 0);
8881
8887
  return true;
8882
8888
  }
8883
8889
  if (url.pathname === "/api/transcript" && req.method === "GET") {
@@ -8890,11 +8896,62 @@ function sendJson$1(res, data, status = 200) {
8890
8896
  res.writeHead(status, { "Content-Type": "application/json" });
8891
8897
  res.end(JSON.stringify(data));
8892
8898
  }
8893
- function handleListSessions(res, cfg) {
8899
+ /**
8900
+ * Convert an archive-suffix timestamp (e.g. `2026-03-31T03-26-10.444Z`) back
8901
+ * to a valid ISO-8601 string. The timestamp is created by
8902
+ * `archiveFileOnDisk()` as `new Date().toISOString().replaceAll(":", "-")`,
8903
+ * so we only need to restore the colons in the time portion (after "T").
8904
+ *
8905
+ * Returns `undefined` if the input cannot be parsed as a valid date.
8906
+ */
8907
+ function parseArchivedAt(suffix) {
8908
+ const dotIdx = suffix.indexOf(".");
8909
+ if (dotIdx < 0) return;
8910
+ const raw = suffix.slice(dotIdx + 1);
8911
+ const tIdx = raw.indexOf("T");
8912
+ if (tIdx < 0) return;
8913
+ const iso = raw.slice(0, tIdx) + "T" + raw.slice(tIdx + 1).replace(/-/g, ":");
8914
+ const d = new Date(iso);
8915
+ if (Number.isNaN(d.getTime())) return;
8916
+ return d.toISOString();
8917
+ }
8918
+ /**
8919
+ * Count user + assistant messages in a JSONL transcript and extract the
8920
+ * first user message as an 80-char preview. Silent on malformed lines —
8921
+ * we never fail the whole list request because one transcript is corrupt.
8922
+ */
8923
+ function scanTranscript(filePath) {
8924
+ let msgCount = 0;
8925
+ let preview = null;
8894
8926
  try {
8895
- const sessionsDir = resolveSessionTranscriptsDirForAgent(resolveDefaultAgentId(cfg));
8927
+ const lines = fs.readFileSync(filePath, "utf-8").split(/\r?\n/);
8928
+ for (const line of lines) {
8929
+ const trimmed = line.trim();
8930
+ if (!trimmed) continue;
8931
+ try {
8932
+ const parsed = JSON.parse(trimmed);
8933
+ const role = parsed?.message?.role;
8934
+ if (role === "user" || role === "assistant") msgCount++;
8935
+ if (!preview && role === "user") {
8936
+ const content = parsed.message?.content;
8937
+ const snipped = (typeof content === "string" ? content : Array.isArray(content) ? content.filter((b) => typeof b === "object" && b !== null && b.type === "text").map((b) => b.text ?? "").join(" ") : "").trim().slice(0, 80);
8938
+ if (snipped) preview = snipped;
8939
+ }
8940
+ } catch {}
8941
+ }
8942
+ } catch {}
8943
+ return {
8944
+ msgCount,
8945
+ preview
8946
+ };
8947
+ }
8948
+ function handleListSessions(res, cfg, currentKey) {
8949
+ try {
8950
+ const agentId = resolveDefaultAgentId(cfg);
8951
+ const sessionsDir = resolveSessionTranscriptsDirForAgent(agentId);
8952
+ const existingFiles = /* @__PURE__ */ new Set();
8896
8953
  const { storePath, store } = loadCombinedSessionStoreForGateway(cfg);
8897
- const storeSessions = listSessionsFromStore({
8954
+ const storeResult = listSessionsFromStore({
8898
8955
  cfg,
8899
8956
  storePath,
8900
8957
  store,
@@ -8902,62 +8959,99 @@ function handleListSessions(res, cfg) {
8902
8959
  includeDerivedTitles: true,
8903
8960
  includeLastMessage: true
8904
8961
  }
8905
- }).sessions.map((s) => ({
8906
- file: s.sessionId ? `${s.sessionId}.jsonl` : void 0,
8907
- sessionId: s.sessionId,
8908
- sessionKey: s.key,
8909
- isArchived: false,
8910
- mtime: s.updatedAt ? new Date(s.updatedAt).toISOString() : void 0,
8911
- preview: s.lastMessagePreview || s.derivedTitle || s.displayName || s.label || void 0,
8912
- msgCount: (s.inputTokens ?? 0) > 0 || (s.outputTokens ?? 0) > 0 ? void 0 : void 0,
8913
- size: void 0,
8914
- model: s.model,
8915
- modelProvider: s.modelProvider
8916
- }));
8917
- const archivedSessions = [];
8962
+ });
8963
+ const liveRows = [];
8964
+ const liveSessionIds = /* @__PURE__ */ new Set();
8965
+ for (const s of storeResult.sessions) {
8966
+ if (!s.sessionId) continue;
8967
+ const fileName = `${s.sessionId}.jsonl`;
8968
+ const filePath = path.join(sessionsDir, fileName);
8969
+ if (!fs.existsSync(filePath)) continue;
8970
+ existingFiles.add(fileName);
8971
+ liveSessionIds.add(s.sessionId);
8972
+ const stat = fs.statSync(filePath);
8973
+ const { msgCount, preview: scanPreview } = scanTranscript(filePath);
8974
+ const preview = s.lastMessagePreview ?? s.derivedTitle ?? s.displayName ?? s.label ?? scanPreview ?? null;
8975
+ const mtime = stat.mtime.toISOString();
8976
+ const updatedAtMs = typeof s.updatedAt === "number" ? s.updatedAt : 0;
8977
+ const updatedAtIso = updatedAtMs > 0 ? new Date(updatedAtMs).toISOString() : mtime;
8978
+ const lastActivity = mtime > updatedAtIso ? mtime : updatedAtIso;
8979
+ const isCurrent = currentKey !== void 0 && s.key === currentKey;
8980
+ if (!isCurrent && msgCount === 0) {
8981
+ existingFiles.add(fileName);
8982
+ continue;
8983
+ }
8984
+ liveRows.push({
8985
+ file: fileName,
8986
+ sessionId: s.sessionId,
8987
+ sessionKey: s.key,
8988
+ kind: isCurrent ? "current" : "past",
8989
+ mtime,
8990
+ lastActivity,
8991
+ msgCount,
8992
+ size: stat.size,
8993
+ preview,
8994
+ model: s.model,
8995
+ modelProvider: s.modelProvider,
8996
+ favorited: false,
8997
+ canLoad: !isCurrent,
8998
+ canDelete: !isCurrent
8999
+ });
9000
+ }
9001
+ const archivedRows = [];
8918
9002
  if (fs.existsSync(sessionsDir)) {
8919
- const files = fs.readdirSync(sessionsDir);
8920
- for (const file of files) {
9003
+ const entries = fs.readdirSync(sessionsDir);
9004
+ for (const file of entries) {
8921
9005
  if (!file.includes(".jsonl.")) continue;
8922
9006
  const parts = file.split(".jsonl.");
8923
- if (parts.length < 2 || !parts[1]) continue;
9007
+ if (parts.length < 2 || !parts[0] || !parts[1]) continue;
9008
+ const sessionId = parts[0];
9009
+ const suffix = parts[1];
9010
+ const reason = suffix.match(/^(reset|deleted)\./)?.[1];
9011
+ if (!reason) continue;
8924
9012
  const filePath = path.join(sessionsDir, file);
9013
+ let stat;
8925
9014
  try {
8926
- const stat = fs.statSync(filePath);
8927
- const lines = fs.readFileSync(filePath, "utf-8").split(/\r?\n/).filter((l) => l.trim());
8928
- let preview;
8929
- let msgCount = 0;
8930
- for (const line of lines) try {
8931
- const parsed = JSON.parse(line);
8932
- if (parsed?.message?.role === "user" || parsed?.message?.role === "assistant") msgCount++;
8933
- if (!preview && parsed?.message?.role === "user") preview = (typeof parsed.message.content === "string" ? parsed.message.content : Array.isArray(parsed.message.content) ? parsed.message.content.filter((b) => b.type === "text").map((b) => b.text ?? "").join(" ") : "").trim().slice(0, 80) || void 0;
8934
- } catch {}
8935
- const suffix = parts[1];
8936
- const dotIdx = suffix.indexOf(".");
8937
- const archivedAt = dotIdx >= 0 ? suffix.slice(dotIdx + 1).replace(/-(?=\d{2}[T:-])/g, ":") : void 0;
8938
- archivedSessions.push({
8939
- file,
8940
- sessionId: parts[0],
8941
- isArchived: true,
8942
- archivedAt: archivedAt || stat.mtime.toISOString(),
8943
- mtime: stat.mtime.toISOString(),
8944
- preview,
8945
- msgCount,
8946
- size: stat.size
8947
- });
8948
- } catch {}
9015
+ stat = fs.statSync(filePath);
9016
+ } catch {
9017
+ continue;
9018
+ }
9019
+ existingFiles.add(file);
9020
+ const archivedAt = parseArchivedAt(suffix);
9021
+ const mtime = stat.mtime.toISOString();
9022
+ const { msgCount, preview } = scanTranscript(filePath);
9023
+ const lastActivity = archivedAt ?? mtime;
9024
+ if (msgCount === 0) continue;
9025
+ archivedRows.push({
9026
+ file,
9027
+ sessionId,
9028
+ sessionKey: void 0,
9029
+ kind: "archived",
9030
+ archivedReason: reason,
9031
+ mtime,
9032
+ archivedAt,
9033
+ lastActivity,
9034
+ msgCount,
9035
+ size: stat.size,
9036
+ preview,
9037
+ favorited: false,
9038
+ canLoad: true,
9039
+ canDelete: true
9040
+ });
8949
9041
  }
8950
9042
  }
8951
- sendJson$1(res, [...storeSessions.filter((s) => s.sessionId), ...archivedSessions].toSorted((a, b) => {
8952
- const aArchived = Boolean(a.isArchived);
8953
- const bArchived = Boolean(b.isArchived);
8954
- if (!aArchived && bArchived) return -1;
8955
- if (aArchived && !bArchived) return 1;
8956
- const aDate = typeof a.mtime === "string" ? a.mtime : typeof a.archivedAt === "string" ? a.archivedAt : "";
8957
- return (typeof b.mtime === "string" ? b.mtime : typeof b.archivedAt === "string" ? b.archivedAt : "").localeCompare(aDate);
8958
- }));
9043
+ const favorites = reconcileFavorites(existingFiles, agentId);
9044
+ const favSet = favorites.size > 0 ? favorites : loadFavoritesSet(agentId);
9045
+ for (const row of liveRows) row.favorited = favSet.has(row.file);
9046
+ for (const row of archivedRows) row.favorited = favSet.has(row.file);
9047
+ sendJson$1(res, { sessions: [...liveRows, ...archivedRows].toSorted((a, b) => {
9048
+ if (a.kind === "current" && b.kind !== "current") return -1;
9049
+ if (b.kind === "current" && a.kind !== "current") return 1;
9050
+ if (a.favorited !== b.favorited) return a.favorited ? -1 : 1;
9051
+ return b.lastActivity.localeCompare(a.lastActivity);
9052
+ }) });
8959
9053
  } catch (err) {
8960
- sendJson$1(res, { error: String(err) }, 500);
9054
+ sendJson$1(res, { error: err instanceof Error ? err.message : String(err) }, 500);
8961
9055
  }
8962
9056
  }
8963
9057
  function handleTranscript(res, cfg, file) {
@@ -8985,7 +9079,7 @@ function handleTranscript(res, cfg, file) {
8985
9079
  } catch {}
8986
9080
  sendJson$1(res, { messages });
8987
9081
  } catch (err) {
8988
- sendJson$1(res, { error: String(err) }, 500);
9082
+ sendJson$1(res, { error: err instanceof Error ? err.message : String(err) }, 500);
8989
9083
  }
8990
9084
  }
8991
9085
 
@@ -9808,7 +9902,7 @@ function resolveGatewayOwnerStatus(pid, payload, platform) {
9808
9902
  }
9809
9903
  async function readLockPayload(lockPath) {
9810
9904
  try {
9811
- const raw = await fsPromises.readFile(lockPath, "utf8");
9905
+ const raw = await fs$1.readFile(lockPath, "utf8");
9812
9906
  const parsed = JSON.parse(raw);
9813
9907
  if (typeof parsed.pid !== "number") return null;
9814
9908
  if (typeof parsed.createdAt !== "string") return null;
@@ -9842,11 +9936,11 @@ async function acquireGatewayLock(opts = {}) {
9842
9936
  const staleMs = opts.staleMs ?? DEFAULT_STALE_MS;
9843
9937
  const platform = opts.platform ?? process.platform;
9844
9938
  const { lockPath, configPath } = resolveGatewayLockPath(env);
9845
- await fsPromises.mkdir(path.dirname(lockPath), { recursive: true });
9939
+ await fs$1.mkdir(path.dirname(lockPath), { recursive: true });
9846
9940
  const startedAt = Date.now();
9847
9941
  let lastPayload = null;
9848
9942
  while (Date.now() - startedAt < timeoutMs) try {
9849
- const handle = await fsPromises.open(lockPath, "wx");
9943
+ const handle = await fs$1.open(lockPath, "wx");
9850
9944
  const startTime = platform === "linux" ? readLinuxStartTime(process.pid) : null;
9851
9945
  const payload = {
9852
9946
  pid: process.pid,
@@ -9860,7 +9954,7 @@ async function acquireGatewayLock(opts = {}) {
9860
9954
  configPath,
9861
9955
  release: async () => {
9862
9956
  await handle.close().catch(() => void 0);
9863
- await fsPromises.rm(lockPath, { force: true });
9957
+ await fs$1.rm(lockPath, { force: true });
9864
9958
  }
9865
9959
  };
9866
9960
  } catch (err) {
@@ -9869,7 +9963,7 @@ async function acquireGatewayLock(opts = {}) {
9869
9963
  const ownerPid = lastPayload?.pid;
9870
9964
  const ownerStatus = ownerPid ? resolveGatewayOwnerStatus(ownerPid, lastPayload, platform) : "unknown";
9871
9965
  if (ownerStatus === "dead" && ownerPid) {
9872
- await fsPromises.rm(lockPath, { force: true });
9966
+ await fs$1.rm(lockPath, { force: true });
9873
9967
  continue;
9874
9968
  }
9875
9969
  if (ownerStatus !== "alive") {
@@ -9879,13 +9973,13 @@ async function acquireGatewayLock(opts = {}) {
9879
9973
  stale = Number.isFinite(createdAt) ? Date.now() - createdAt > staleMs : false;
9880
9974
  }
9881
9975
  if (!stale) try {
9882
- const st = await fsPromises.stat(lockPath);
9976
+ const st = await fs$1.stat(lockPath);
9883
9977
  stale = Date.now() - st.mtimeMs > staleMs;
9884
9978
  } catch {
9885
9979
  stale = true;
9886
9980
  }
9887
9981
  if (stale) {
9888
- await fsPromises.rm(lockPath, { force: true });
9982
+ await fs$1.rm(lockPath, { force: true });
9889
9983
  continue;
9890
9984
  }
9891
9985
  }
@@ -11790,7 +11884,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
11790
11884
  if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
11791
11885
  if (!minimalTestGateway) (async () => {
11792
11886
  const { recoverPendingDeliveries } = await import("./delivery-queue-CAxX6nGq.js").then((n) => n.n);
11793
- const { deliverOutboundPayloads } = await import("./deliver-BYdNAEqj.js").then((n) => n.n);
11887
+ const { deliverOutboundPayloads } = await import("./deliver-B4KZ6-oZ.js").then((n) => n.n);
11794
11888
  await recoverPendingDeliveries({
11795
11889
  deliver: deliverOutboundPayloads,
11796
11890
  log: log.child("delivery-recovery"),
@@ -11863,7 +11957,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
11863
11957
  });
11864
11958
  let glassUiBridgeCleanup = null;
11865
11959
  if (!minimalTestGateway) {
11866
- const { createGlassUiBridge } = await import("./glass-ui-ws-D3tAmqKX.js");
11960
+ const { createGlassUiBridge } = await import("./glass-ui-ws-BI81Lh6Z.js");
11867
11961
  glassUiBridgeCleanup = createGlassUiBridge({
11868
11962
  wss: glassUiWss,
11869
11963
  context: gatewayRequestContext,