@fased/fased 0.1.28 → 0.1.30

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 (301) hide show
  1. package/dist/{active-listener-Dmc7Xtuo.js → active-listener-Bw8DT1EX.js} +1 -1
  2. package/dist/{agent-scope-BYecP9O5.js → agent-scope-Bx0XQq3s.js} +124 -124
  3. package/dist/{agents-iYhhEhBa.js → agents-BU4NqZkn.js} +8 -8
  4. package/dist/{attachment-normalize-BhAxfpDx.js → attachment-normalize-3_V1yb6a.js} +1 -1
  5. package/dist/{attachment-normalize-CKtDb7Dr.js → attachment-normalize-D3LvGnxE.js} +1 -1
  6. package/dist/{audio-preflight-C8g4U208.js → audio-preflight-B4hZi0X5.js} +1 -1
  7. package/dist/{audio-preflight-W0jytQTE.js → audio-preflight-DcQrkXYr.js} +2 -2
  8. package/dist/{audio-preflight-Ck89DLHq.js → audio-preflight-MUfVeIPT.js} +31 -31
  9. package/dist/{audio-preflight-ktHzRxN9.js → audio-preflight-YPQKo93v.js} +1 -1
  10. package/dist/{audio-preflight-Cay8mZwp.js → audio-preflight-r8PHFHTe.js} +2 -2
  11. package/dist/{audit-DAgPJ6XG.js → audit-BNmzld5I.js} +1 -1
  12. package/dist/{audit-nu4TuGmi.js → audit-ChF16w3M.js} +1 -1
  13. package/dist/{auth-BXZyivvK.js → auth-DGXGqcN7.js} +5 -5
  14. package/dist/{auth-choice-T0k3b6-S.js → auth-choice-BJGGTOYU.js} +1 -1
  15. package/dist/{auth-choice--uTO5KF9.js → auth-choice-UvbBnRhr.js} +1 -1
  16. package/dist/{auth-choice-prompt-CpPAxYWh.js → auth-choice-prompt-9uH2hSjM.js} +1 -1
  17. package/dist/{auth-choice-prompt-DT4lamSy.js → auth-choice-prompt-CPoTg_-G.js} +1 -1
  18. package/dist/build-info.json +3 -3
  19. package/dist/bundled/boot-md/handler.js +31 -31
  20. package/dist/bundled/bootstrap-extra-files/handler.js +3 -3
  21. package/dist/bundled/command-logger/handler.js +2 -2
  22. package/dist/bundled/session-memory/handler.js +31 -31
  23. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  24. package/dist/{channel-activity-D69hLBEQ.js → channel-activity-BvC4RbBO.js} +1 -1
  25. package/dist/{channel-web-C5m2F4jn.js → channel-web-0wKGD4yD.js} +1 -1
  26. package/dist/{channel-web-DCEtUdZl.js → channel-web-DLD1undh.js} +1 -1
  27. package/dist/{channels-BKcpSzps.js → channels-B9bvlD7y.js} +6 -6
  28. package/dist/{channels-DmfjfmuY.js → channels-CBT56Ap7.js} +6 -6
  29. package/dist/{channels-cli-Cz7A96xt.js → channels-cli-CK1qojpR.js} +5 -5
  30. package/dist/{channels-cli-CQoyRjEk.js → channels-cli-D6ioLe8o.js} +5 -5
  31. package/dist/{chunk-KatG8h1H.js → chunk-CiQeXMLG.js} +1 -1
  32. package/dist/cli/daemon-cli.js +1 -1
  33. package/dist/{cli-CTiidr2w.js → cli-ByaZFcQl.js} +2 -2
  34. package/dist/{cli-D6qlo3sU.js → cli-DgHb9Vld.js} +2 -2
  35. package/dist/{command-registry-DjcstblD.js → command-registry-mptWJW8S.js} +9 -9
  36. package/dist/{commands-registry-CG-_VuYC.js → commands-registry-t0hu8c_Z.js} +1 -1
  37. package/dist/{completion-cli-DId41h2e.js → completion-cli-BRvgVQzN.js} +2 -2
  38. package/dist/{completion-cli-B_uil7u0.js → completion-cli-DyJbXhbh.js} +1 -1
  39. package/dist/{config-cli-B6Eyt9Xm.js → config-cli-BrzPOli4.js} +1 -1
  40. package/dist/{config-cli-atr2j6q9.js → config-cli-R0TQZDi7.js} +1 -1
  41. package/dist/{config-eval-DxNYxraZ.js → config-eval-CLXDBlCw.js} +3 -3
  42. package/dist/{configure-CrAz2sq9.js → configure-Bt3nH-_I.js} +13 -13
  43. package/dist/{configure-C5toPgaS.js → configure-pREf12zB.js} +13 -13
  44. package/dist/control-ui/assets/app-DXYMrRJ9.js.map +1 -1
  45. package/dist/{cron-cli-CJ90NUZf.js → cron-cli-BIYfBpRP.js} +5 -5
  46. package/dist/{cron-cli-B9LYsXv6.js → cron-cli-zdoRLQ0m.js} +5 -5
  47. package/dist/{daemon-cli-D2K0A2cj.js → daemon-cli-Cj4_RgEM.js} +4 -4
  48. package/dist/{daemon-cli-BS1JARm_.js → daemon-cli-LLGP6g2r.js} +4 -4
  49. package/dist/daemon-cli.js +3 -10
  50. package/dist/{daemon-install-helpers-BKLej54T.js → daemon-install-helpers-BPdikKF-.js} +2 -9
  51. package/dist/{daemon-install-helpers-DTxcfITS.js → daemon-install-helpers-BdhhuvlY.js} +2 -9
  52. package/dist/{deps-BX9qxzg9.js → deps-QnUngXA3.js} +1 -1
  53. package/dist/{deps-BtUx0oOa.js → deps-sd-SQKYn.js} +1 -1
  54. package/dist/{diagnostic-BYQE13k1.js → diagnostic-C6MSQFZF.js} +1 -1
  55. package/dist/entry.js +1 -1
  56. package/dist/extensionAPI.js +1 -1
  57. package/dist/{fetch-CYWabNXm.js → fetch-BwkjkjT6.js} +1 -1
  58. package/dist/{fetch-guard-CNlKZ01R.js → fetch-guard-DdMratk8.js} +1 -1
  59. package/dist/{filesystem-manager-CWbYjhcQ.js → filesystem-manager-B8V6mEya.js} +4 -4
  60. package/dist/{fs-safe-T802CTm-.js → fs-safe-CrX7hR24.js} +2 -2
  61. package/dist/{gateway-cli-DQUDvD-P.js → gateway-cli-Cn3STpYX.js} +30 -30
  62. package/dist/{gateway-cli-C8uThQly.js → gateway-cli-yfNsUzH6.js} +30 -30
  63. package/dist/{github-copilot-token-eyrRGmGp.js → github-copilot-token-DYrFvncE.js} +8 -8
  64. package/dist/{health-ylUwlg54.js → health-BfGnSyOV.js} +2 -2
  65. package/dist/{health-BH3E5Lbb.js → health-DcurJYny.js} +2 -2
  66. package/dist/{heartbeat-runner-CrsGVWl5.js → heartbeat-runner-CJZStXhx.js} +1 -1
  67. package/dist/{heartbeat-runner-7_Hl_o9c.js → heartbeat-runner-CY41VFZE.js} +1 -1
  68. package/dist/{hooks-cli-tKMQrFUs.js → hooks-cli-DpkFISKR.js} +3 -3
  69. package/dist/{hooks-cli-CeznlOC9.js → hooks-cli-WtC65axA.js} +3 -3
  70. package/dist/index.js +7 -7
  71. package/dist/{internal-CGfrGFGR.js → internal-QlbJb-4V.js} +3 -3
  72. package/dist/{ipv4-xPPu8uhS.js → ipv4-BkY__Z0A.js} +2 -2
  73. package/dist/{ipv4-BdcUd7th.js → ipv4-CdRPraPM.js} +2 -2
  74. package/dist/{lifecycle-Dgvcj0y7.js → lifecycle-DUPuKIvd.js} +1 -1
  75. package/dist/{lifecycle-BiI4r6Yk.js → lifecycle-Dd-6tFQk.js} +1 -1
  76. package/dist/{list.auth-overview-DBtoDv3I.js → list.auth-overview-CE2_GQ-8.js} +1 -1
  77. package/dist/{list.auth-overview-CEuyMCA_.js → list.auth-overview-DcdJySBi.js} +1 -1
  78. package/dist/llm-slug-generator.js +31 -31
  79. package/dist/{login-H3-M4-wp.js → login-BGt2KP5c.js} +2 -2
  80. package/dist/{login-qr-DIly-pBD.js → login-qr-CDDF5Ark.js} +3 -3
  81. package/dist/{manager-ZRPdFyMZ.js → manager-BfodMNDG.js} +8 -8
  82. package/dist/{markdown-tables-KcZiNfqg.js → markdown-tables-C-HEtwaC.js} +1 -1
  83. package/dist/{media-93Hw7QIY.js → media-CInvDVc0.js} +5 -5
  84. package/dist/{memory-search-CueDEO0U.js → memory-search-BZt8FFLW.js} +2 -2
  85. package/dist/{model-catalog-CZu0lceX.js → model-catalog-DOuyqwFa.js} +6 -6
  86. package/dist/{models-CH88-l57.js → models-ItVo4_FF.js} +4 -4
  87. package/dist/{models-cli-DaSPxlwv.js → models-cli-DKEzhF9X.js} +4 -4
  88. package/dist/{models-cli-BidzQ2ub.js → models-cli-YznPWFUE.js} +5 -5
  89. package/dist/{node-cli-DHodXSn8.js → node-cli-CZaJUGYu.js} +5 -5
  90. package/dist/{node-cli-DtpX07Iy.js → node-cli-qkHTKDmW.js} +5 -5
  91. package/dist/{onboard-C6FZXU0s.js → onboard--COJdfXc.js} +7 -7
  92. package/dist/{onboard-DxuuLAd-.js → onboard-Cpw2fP2S.js} +7 -7
  93. package/dist/{onboard-channels-md6qnWB2.js → onboard-channels-BH6atgy1.js} +2 -2
  94. package/dist/{onboard-channels-CD98bI5k.js → onboard-channels-CbQgdo3k.js} +2 -2
  95. package/dist/{onboard-search-VCCwZ9cO.js → onboard-search-Bg8qvHBV.js} +5 -5
  96. package/dist/{onboard-search-DxM2zPhD.js → onboard-search-BxaAdq5U.js} +5 -5
  97. package/dist/{onboarding-CIOt4f3q.js → onboarding-B-_4gKpN.js} +9 -9
  98. package/dist/{onboarding-CUFTjmEm.js → onboarding-DiuUZg9l.js} +9 -9
  99. package/dist/{openresponses-http-B6U9EAH8.js → openresponses-http-BNIAyGrH.js} +1 -1
  100. package/dist/{openresponses-http-C-s0pFs7.js → openresponses-http-BVdja8Nj.js} +2 -2
  101. package/dist/{openresponses-http-CP2yl2hZ.js → openresponses-http-DGAqU5K9.js} +1 -1
  102. package/dist/{openresponses-http-BQnFLiT5.js → openresponses-http-DhBER2sI.js} +2 -2
  103. package/dist/{openresponses-http-D4z9eTJH.js → openresponses-http-svQwMBaq.js} +31 -31
  104. package/dist/{outbound-C7mwBvhN.js → outbound-CfdOHhpP.js} +6 -6
  105. package/dist/{outbound-attachment-DILp822M.js → outbound-attachment-BL6wK70V.js} +2 -2
  106. package/dist/{parent-default-help-ChpJAsU-.js → parent-default-help-B2mCEhav.js} +1 -1
  107. package/dist/{parent-default-help-DbZXyZlW.js → parent-default-help-DUqMyqko.js} +1 -1
  108. package/dist/{path-alias-guards-DyTCSx8q.js → path-alias-guards-Dalcwl5X.js} +1 -1
  109. package/dist/{paths-DBTQPSY5.js → paths-zdeD1PNp.js} +13 -13
  110. package/dist/{pi-embedded-B8HZySK8.js → pi-embedded-CrKlYvWM.js} +234 -234
  111. package/dist/{pi-embedded-CulwZKSH.js → pi-embedded-DPl5Aqw4.js} +5 -5
  112. package/dist/{pi-model-discovery--TE7j7VE.js → pi-model-discovery-C1CAe7eM.js} +7 -7
  113. package/dist/pi-model-discovery-runtime-C34IWfDn.js +5 -0
  114. package/dist/{plugin-registry-BnvUlYjK.js → plugin-registry-BBzitaxQ.js} +1 -1
  115. package/dist/{plugin-registry-DxU6FpxL.js → plugin-registry-CIiRwpQv.js} +1 -1
  116. package/dist/plugin-sdk/{active-listener--vjYvMEK.js → active-listener-BMdC_vyr.js} +1 -1
  117. package/dist/plugin-sdk/{audio-preflight-IwS9Ev0P.js → audio-preflight-B-__-RfZ.js} +29 -29
  118. package/dist/plugin-sdk/{audio-preflight-DVUWB0LK.js → audio-preflight-DcJUk03P.js} +1 -1
  119. package/dist/plugin-sdk/{channel-activity-DkLb5E2L.js → channel-activity-NWX3LiLh.js} +1 -1
  120. package/dist/plugin-sdk/channel-plugin-common.js +1 -1
  121. package/dist/plugin-sdk/{channel-web-B2i4wI9t.js → channel-web-DoGtD0PQ.js} +14 -14
  122. package/dist/plugin-sdk/{chunk-BDulh-FS.js → chunk-DnpNE3Xp.js} +1 -1
  123. package/dist/plugin-sdk/command-status.js +1 -1
  124. package/dist/plugin-sdk/{commands-registry-Cl80XXdf.js → commands-registry-D-wBX44P.js} +1 -1
  125. package/dist/plugin-sdk/{diagnostic-BDrUrfZB.js → diagnostic-BjLGAdPW.js} +1 -1
  126. package/dist/plugin-sdk/{fetch-dvtAysG4.js → fetch-CwQDqOty.js} +1 -1
  127. package/dist/plugin-sdk/{fetch-guard-BxBS-Ozv.js → fetch-guard-C9OlAzZl.js} +1 -1
  128. package/dist/plugin-sdk/{filesystem-manager-6RcmLJuY.js → filesystem-manager-D2yRTu4v.js} +3 -3
  129. package/dist/plugin-sdk/{fs-safe-CVSBTTvX.js → fs-safe-Vt6xas26.js} +2 -2
  130. package/dist/plugin-sdk/index.js +34 -34
  131. package/dist/plugin-sdk/{internal-s9L09jdh.js → internal-BRBMoaD6.js} +1 -1
  132. package/dist/plugin-sdk/{ir-BmFS6Dzq.js → ir-BD_A53gm.js} +4 -4
  133. package/dist/plugin-sdk/{login-DNZBECsI.js → login-Beyw9UA5.js} +2 -2
  134. package/dist/plugin-sdk/{login-qr-B4GBAfDr.js → login-qr-CvB90Ony.js} +2 -2
  135. package/dist/plugin-sdk/{manager-BlHbK3u2.js → manager-BQu1VKQ6.js} +5 -5
  136. package/dist/plugin-sdk/{markdown-tables-CnJAOUZL.js → markdown-tables-trVxBCrI.js} +1 -1
  137. package/dist/plugin-sdk/{memory-search-nQXS-L20.js → memory-search-DjvKx_Hd.js} +1 -1
  138. package/dist/plugin-sdk/{openresponses-http-CCgnaxp6.js → openresponses-http-DQWJE95u.js} +1 -1
  139. package/dist/plugin-sdk/{openresponses-http-CFXgOYZ8.js → openresponses-http-VFgg_bR4.js} +29 -29
  140. package/dist/plugin-sdk/{outbound-DNozCpaG.js → outbound-D_1hFaJ-.js} +6 -6
  141. package/dist/plugin-sdk/{outbound-attachment-D22qcHys.js → outbound-attachment-DenNTymT.js} +2 -2
  142. package/dist/plugin-sdk/{path-alias-guards-DN9j8duf.js → path-alias-guards-Wu92iGvE.js} +1 -1
  143. package/dist/plugin-sdk/{paths-Cn8yCaSN.js → paths-CK25m2hW.js} +2 -2
  144. package/dist/plugin-sdk/{pi-model-discovery-BeAR6-Xm.js → pi-model-discovery-DMqhr7U_.js} +1 -1
  145. package/dist/plugin-sdk/{pi-model-discovery-runtime-DaiqegxK.js → pi-model-discovery-runtime-CwXjrUIM.js} +1 -1
  146. package/dist/plugin-sdk/{pi-model-discovery-runtime-DRhhMGTg.js → pi-model-discovery-runtime-DScmspTB.js} +2 -2
  147. package/dist/plugin-sdk/{pw-ai-CVhjKZsh.js → pw-ai-Cs75h-nL.js} +4 -4
  148. package/dist/plugin-sdk/{qmd-manager-Hhb9s5Ex.js → qmd-manager-DEcJj-8k.js} +4 -4
  149. package/dist/plugin-sdk/{qmd-scope-DOiYgpAa.js → qmd-scope-BjxICI2O.js} +1 -1
  150. package/dist/plugin-sdk/{query-expansion-DlX2-yhE.js → query-expansion-6wijZpq6.js} +2 -2
  151. package/dist/plugin-sdk/{registry-D1bAj51G.js → registry-C90cYLNB.js} +8 -8
  152. package/dist/plugin-sdk/{replies-DsTSTkkm.js → replies-C28zWuLO.js} +2 -2
  153. package/dist/plugin-sdk/{reply-BzHXWKR0.js → reply-D4WNXysa.js} +67 -67
  154. package/dist/plugin-sdk/{reply-prefix-CM9vmzNS.js → reply-prefix-CZBe0Ovo.js} +1 -1
  155. package/dist/plugin-sdk/{resolve-outbound-target-BmAvZt5m.js → resolve-outbound-target-DyNIwkzd.js} +2 -2
  156. package/dist/plugin-sdk/{resolve-route-DB2O8xap.js → resolve-route-aT1YT8Ih.js} +1 -1
  157. package/dist/plugin-sdk/{runtime-B3BC00NW.js → runtime-Dxpfvz83.js} +8 -8
  158. package/dist/plugin-sdk/{send-Dzl1P-r1.js → send-5VxqNtsW.js} +7 -7
  159. package/dist/plugin-sdk/{send-B2PuRxAo.js → send-Bf5cNKV-.js} +5 -5
  160. package/dist/plugin-sdk/{send-CX4dzEhO.js → send-D4Figs17.js} +5 -5
  161. package/dist/plugin-sdk/{send-Co84r8KW.js → send-Des0LL0Y.js} +7 -7
  162. package/dist/plugin-sdk/{send-LjnXKHz9.js → send-Uasa6JPL.js} +4 -4
  163. package/dist/plugin-sdk/{session-KVX2v7T3.js → session-BYUOdzi1.js} +1 -1
  164. package/dist/plugin-sdk/{skill-commands-CZ5QzawX.js → skill-commands-FnaJNY1m.js} +5 -5
  165. package/dist/plugin-sdk/src/brand.d.ts +2 -2
  166. package/dist/plugin-sdk/{status-B0XnEiYk.js → status-BlX9jStp.js} +5 -5
  167. package/dist/plugin-sdk/{tables-B8koh_pB.js → tables-DjSNh4Qx.js} +1 -1
  168. package/dist/plugin-sdk/{target-errors-Bnnn54IW.js → target-errors-DDRTJb87.js} +2 -2
  169. package/dist/plugin-sdk/{tool-loop-detection-ImTTGqAY.js → tool-loop-detection-B0pfI1b9.js} +1 -1
  170. package/dist/plugin-sdk/{web-C9P8KPay.js → web-CEucw6Dl.js} +1 -1
  171. package/dist/plugin-sdk/web-Cr8AJx43.js +40 -0
  172. package/dist/plugin-sdk/{whatsapp-actions-DjtDOMIg.js → whatsapp-actions-Bx1OtYYh.js} +12 -12
  173. package/dist/{plugins-cli-ipO2s_1B.js → plugins-cli-B9w9SKYa.js} +5 -5
  174. package/dist/{plugins-cli-1E09EVlV.js → plugins-cli-CdRa6xYi.js} +5 -5
  175. package/dist/{program-CDxLwJ0z.js → program-C9wZbb_-.js} +7 -7
  176. package/dist/{program-context-BD93RW74.js → program-context-Dc8hoANx.js} +25 -25
  177. package/dist/{prompt-select-styled-CAKroAbM.js → prompt-select-styled-9E7HlPjk.js} +6 -6
  178. package/dist/{prompt-select-styled-C-zi15KS.js → prompt-select-styled-oUCALY2N.js} +6 -6
  179. package/dist/{pw-ai-4dv28kg0.js → pw-ai-5b6U6vNE.js} +5 -5
  180. package/dist/{qmd-manager-DA3v0Y-t.js → qmd-manager-CVbI17-v.js} +5 -5
  181. package/dist/{qmd-scope-Byk5KlGv.js → qmd-scope-CL7VCB5M.js} +1 -1
  182. package/dist/{query-expansion-CGVFZR8O.js → query-expansion-DrMLz38Q.js} +2 -2
  183. package/dist/{register.agent-BGaZQH1X.js → register.agent-BhoMAqJe.js} +8 -8
  184. package/dist/{register.agent-eKraQHJw.js → register.agent-Dty2GQos.js} +9 -9
  185. package/dist/{register.configure-BA-xnssd.js → register.configure-CjQhBudl.js} +13 -13
  186. package/dist/{register.configure-GwR5so5q.js → register.configure-DZl7w5Se.js} +13 -13
  187. package/dist/{register.maintenance-C8OesoUh.js → register.maintenance-C9_UzTyI.js} +10 -10
  188. package/dist/{register.maintenance-BXgIzrdf.js → register.maintenance-CGFQEESj.js} +11 -11
  189. package/dist/{register.message-DhqGREy0.js → register.message-C3BTjmhg.js} +3 -3
  190. package/dist/{register.message-Cu7PekBP.js → register.message-DnrC31ZC.js} +3 -3
  191. package/dist/{register.onboard-CQU1AliO.js → register.onboard-DIxJ1bFs.js} +16 -16
  192. package/dist/{register.onboard-DkIAVugY.js → register.onboard-DzO2dNpB.js} +16 -16
  193. package/dist/{register.setup-BusNqDdc.js → register.setup-B5Ji_Smo.js} +16 -16
  194. package/dist/{register.setup-DQaKZMeV.js → register.setup-Cd8rXata.js} +16 -16
  195. package/dist/{register.start-Bsm3VLUW.js → register.start-BObciIYA.js} +1 -1
  196. package/dist/{register.start-CmIaQmz8.js → register.start-zfaQ2lDQ.js} +1 -1
  197. package/dist/{register.status-health-sessions-ChOZwDRw.js → register.status-health-sessions-CUw6awJ6.js} +6 -6
  198. package/dist/{register.status-health-sessions-D6VCFOIo.js → register.status-health-sessions-CYpKmq3y.js} +6 -6
  199. package/dist/{register.subclis-Drc4P-Nq.js → register.subclis-DEnba1hq.js} +17 -17
  200. package/dist/{replies-oXYe4wxf.js → replies-DEtI8EHM.js} +2 -2
  201. package/dist/{reply-BiTQJbqI.js → reply-DVGmtLPq.js} +6 -6
  202. package/dist/{reply-prefix-DZjj9KHV.js → reply-prefix-DVyUjzCQ.js} +1 -1
  203. package/dist/{resolve-route-D3-NnOVE.js → resolve-route-Dc1L-NXd.js} +1 -1
  204. package/dist/{run-main-BY0Rwey1.js → run-main-BqiU1shU.js} +14 -14
  205. package/dist/{runtime-helper-grants-DfJj0yBK.js → runtime-helper-grants-BQl2Y_KJ.js} +1 -1
  206. package/dist/{runtime-helper-grants-KLyyfrTt.js → runtime-helper-grants-CHz5azhO.js} +1 -1
  207. package/dist/{sandbox-cli-DA7q2-Ck.js → sandbox-cli-BLWfhZh2.js} +2 -2
  208. package/dist/{sandbox-cli-DaBgqYew.js → sandbox-cli-C7tRjHGl.js} +2 -2
  209. package/dist/{security-cli-CjylWZ8O.js → security-cli-0-5Vgk1A.js} +3 -3
  210. package/dist/{security-cli-BzwvvYlN.js → security-cli-DGCfCHzM.js} +3 -3
  211. package/dist/{send-BqgaWpoE.js → send-BohOQw4n.js} +4 -4
  212. package/dist/{send-B-sa1Rzn.js → send-CqQ88clX.js} +18 -18
  213. package/dist/{send-DQ3s5E33.js → send-D2IXnEJl.js} +7 -7
  214. package/dist/{send-C1YtjPQb.js → send-D8eFKkkd.js} +5 -5
  215. package/dist/{send-Bhj3bXKi.js → send-Ps08x526.js} +5 -5
  216. package/dist/{server-B-QKsL4x.js → server-BMZYE37o.js} +2 -2
  217. package/dist/{server-Bz-J2_5y.js → server-DamsmTjm.js} +2 -2
  218. package/dist/{server-cron-CyHe5fDq.js → server-cron-BUWyjpTV.js} +2 -2
  219. package/dist/{server-cron-B5wrfwxM.js → server-cron-DC9t05LU.js} +2 -2
  220. package/dist/{server-node-events-Baqsf2NX.js → server-node-events-C3IOxSF_.js} +3 -3
  221. package/dist/{server-node-events-0EBnfqMC.js → server-node-events-cusaGrcY.js} +3 -3
  222. package/dist/{service-audit-CKhQ-gE8.js → service-audit-1anzCSV2.js} +1 -1
  223. package/dist/{service-audit-vZURAwy5.js → service-audit-Daqv2ulM.js} +1 -1
  224. package/dist/{session-CYgXtJQQ.js → session-Cz9lOeBe.js} +5 -5
  225. package/dist/{shared-NfkGRhDK.js → shared-BO4hP_yT.js} +1 -1
  226. package/dist/{shared-BiAB2K_s.js → shared-DnllDWpn.js} +1 -1
  227. package/dist/{skill-commands-HOHDwVYx.js → skill-commands-LW0SeGsB.js} +24 -24
  228. package/dist/{status-Bn_17wli.js → status-B39ZJFhD.js} +1 -1
  229. package/dist/{status-CedgExBn.js → status-CrL7Hp3R.js} +4 -4
  230. package/dist/{status-B2XDD6O1.js → status-Dlt3xwcf.js} +4 -4
  231. package/dist/{status-DkO_XJ89.js → status-Doqt5wXN.js} +1 -1
  232. package/dist/{tables-BQMYTcw_.js → tables-CjmIs23-.js} +1 -1
  233. package/dist/{target-errors-iZTI1Fwr.js → target-errors-C3MQ1_UT.js} +2 -2
  234. package/dist/{tool-loop-detection-CqQip5ev.js → tool-loop-detection-CSfX9pJE.js} +2 -2
  235. package/dist/{tui-DNfrxf46.js → tui-DdPEVWjR.js} +1 -1
  236. package/dist/{tui-CM1AENKh.js → tui-R-P_OV8J.js} +1 -1
  237. package/dist/{tui-cli-CCBB8SMS.js → tui-cli-BgihXvs7.js} +3 -3
  238. package/dist/{tui-cli-DIW91DD7.js → tui-cli-ChpP9FsL.js} +3 -3
  239. package/dist/{update-cli-BjzhdsTf.js → update-cli-DPdSuHZT.js} +17 -17
  240. package/dist/{update-cli-BmVv97nm.js → update-cli-DVCjSLYw.js} +18 -18
  241. package/dist/{update-runner-Bqlzlgnj.js → update-runner-COs-YDhT.js} +38 -4
  242. package/dist/{update-runner-CweCoZFE.js → update-runner-DNPfs265.js} +38 -4
  243. package/dist/{web-Cx5CZwIi.js → web-B2SWpLdC.js} +3 -3
  244. package/dist/{web-D9Laamj2.js → web-BHp_2XHP.js} +1 -1
  245. package/dist/{web-By4q48rt.js → web-D8bq1XRX.js} +3 -3
  246. package/dist/{web-D2vp8fmO.js → web-DQuQBwMr.js} +35 -35
  247. package/dist/{web-search-providers.runtime-CuW6jS_G.js → web-search-providers.runtime-BD9Vp8eD.js} +1 -1
  248. package/dist/{web-search-providers.runtime-C_62DK_P.js → web-search-providers.runtime-CiOoq6G3.js} +1 -1
  249. package/dist/{web-BpZesxOB.js → web-vGE7qeF-.js} +1 -1
  250. package/dist/{whatsapp-actions-CrVrn3wF.js → whatsapp-actions-oa93ddRw.js} +12 -12
  251. package/extensions/acpx/package.json +1 -1
  252. package/extensions/bluebubbles/package.json +1 -1
  253. package/extensions/copilot-proxy/package.json +1 -1
  254. package/extensions/diagnostics-otel/package.json +1 -1
  255. package/extensions/discord/package.json +1 -1
  256. package/extensions/fased-federation/package.json +1 -1
  257. package/extensions/feishu/package.json +1 -1
  258. package/extensions/google-gemini-cli-auth/package.json +1 -1
  259. package/extensions/googlechat/package.json +1 -1
  260. package/extensions/imessage/package.json +1 -1
  261. package/extensions/irc/package.json +1 -1
  262. package/extensions/line/package.json +1 -1
  263. package/extensions/llm-task/package.json +1 -1
  264. package/extensions/lobster/package.json +1 -1
  265. package/extensions/matrix/CHANGELOG.md +12 -0
  266. package/extensions/matrix/package.json +1 -1
  267. package/extensions/mattermost/package.json +1 -1
  268. package/extensions/memory-core/package.json +1 -1
  269. package/extensions/memory-lancedb/package.json +1 -1
  270. package/extensions/minimax-portal-auth/package.json +1 -1
  271. package/extensions/msteams/CHANGELOG.md +12 -0
  272. package/extensions/msteams/package.json +1 -1
  273. package/extensions/nextcloud-talk/package.json +1 -1
  274. package/extensions/nostr/CHANGELOG.md +12 -0
  275. package/extensions/nostr/package.json +1 -1
  276. package/extensions/open-prose/package.json +1 -1
  277. package/extensions/sat-mining/package.json +1 -1
  278. package/extensions/signal/package.json +1 -1
  279. package/extensions/slack/package.json +1 -1
  280. package/extensions/synology-chat/package.json +1 -1
  281. package/extensions/telegram/package.json +1 -1
  282. package/extensions/tlon/package.json +1 -1
  283. package/extensions/twitch/CHANGELOG.md +12 -0
  284. package/extensions/twitch/package.json +1 -1
  285. package/extensions/voice-call/CHANGELOG.md +12 -0
  286. package/extensions/voice-call/package.json +1 -1
  287. package/extensions/whatsapp/package.json +1 -1
  288. package/extensions/zalo/CHANGELOG.md +12 -0
  289. package/extensions/zalo/package.json +1 -1
  290. package/extensions/zalouser/CHANGELOG.md +12 -0
  291. package/extensions/zalouser/package.json +1 -1
  292. package/package.json +1 -1
  293. package/src/brand.ts +1 -1
  294. package/src/canvas-host/a2ui/.bundle.hash +1 -1
  295. package/src/cli/update-cli/progress.ts +2 -2
  296. package/src/cli/update-cli/update-command.ts +4 -3
  297. package/src/commands/daemon-install-helpers.ts +0 -12
  298. package/src/infra/update-global.ts +47 -0
  299. package/src/infra/update-runner.ts +10 -2
  300. package/dist/pi-model-discovery-runtime-DD55ZBCk.js +0 -5
  301. package/dist/plugin-sdk/web-qxwuv8Ap.js +0 -40
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { a as saveJsonFile, c as resolveDefaultConfigCandidates, d as resolveOAuthPath, f as resolveStateDir, h as resolveRequiredHomeDir, i as loadJsonFile, m as resolveEffectiveHomeDir, p as expandHomePrefix, r as resolveCopilotApiToken, s as resolveConfigPath, t as DEFAULT_COPILOT_API_BASE_URL, u as resolveOAuthDir } from "./github-copilot-token-eyrRGmGp.js";
2
+ import { a as saveJsonFile, c as resolveDefaultConfigCandidates, d as resolveOAuthPath, f as resolveStateDir, h as resolveRequiredHomeDir, i as loadJsonFile, m as resolveEffectiveHomeDir, p as expandHomePrefix, r as resolveCopilotApiToken, s as resolveConfigPath, t as DEFAULT_COPILOT_API_BASE_URL, u as resolveOAuthDir } from "./github-copilot-token-DYrFvncE.js";
3
3
  import { n as resolveConversationLabel, r as normalizeChatType } from "./conversation-label-BNq0hhpR.js";
4
4
  import { createRequire } from "node:module";
5
5
  import fs from "node:fs/promises";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
8
- import syncFs, { constants } from "node:fs";
8
+ import fs$1, { constants } from "node:fs";
9
9
  import chalk, { Chalk } from "chalk";
10
10
  import { Logger } from "tslog";
11
11
  import JSON5 from "json5";
@@ -161,15 +161,15 @@ function normalizePluginGatewayMethodScope(method, scope) {
161
161
  //#endregion
162
162
  //#region src/infra/tmp-fased-dir.ts
163
163
  const POSIX_FASED_TMP_DIR = "/tmp/fased";
164
- const TMP_DIR_ACCESS_MODE = syncFs.constants.W_OK | syncFs.constants.X_OK;
164
+ const TMP_DIR_ACCESS_MODE = fs$1.constants.W_OK | fs$1.constants.X_OK;
165
165
  function isNodeErrorWithCode(err, code) {
166
166
  return typeof err === "object" && err !== null && "code" in err && err.code === code;
167
167
  }
168
168
  function resolvePreferredFasedAgentTmpDir(options = {}) {
169
- const accessSync = options.accessSync ?? syncFs.accessSync;
170
- const chmodSync = options.chmodSync ?? syncFs.chmodSync;
171
- const lstatSync = options.lstatSync ?? syncFs.lstatSync;
172
- const mkdirSync = options.mkdirSync ?? syncFs.mkdirSync;
169
+ const accessSync = options.accessSync ?? fs$1.accessSync;
170
+ const chmodSync = options.chmodSync ?? fs$1.chmodSync;
171
+ const lstatSync = options.lstatSync ?? fs$1.lstatSync;
172
+ const mkdirSync = options.mkdirSync ?? fs$1.mkdirSync;
173
173
  const warn = options.warn ?? ((message) => console.warn(message));
174
174
  const getuid = options.getuid ?? (() => {
175
175
  try {
@@ -262,8 +262,8 @@ function resolvePreferredFasedAgentTmpDir(options = {}) {
262
262
  function readLoggingConfig() {
263
263
  const configPath = resolveConfigPath();
264
264
  try {
265
- if (!syncFs.existsSync(configPath)) return;
266
- const raw = syncFs.readFileSync(configPath, "utf-8");
265
+ if (!fs$1.existsSync(configPath)) return;
266
+ const raw = fs$1.readFileSync(configPath, "utf-8");
267
267
  const logging = JSON5.parse(raw)?.logging;
268
268
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
269
269
  return logging;
@@ -398,7 +398,7 @@ function isFileLogLevelEnabled(level) {
398
398
  return levelToMinLevel(level) <= levelToMinLevel(settings.level);
399
399
  }
400
400
  function buildLogger(settings) {
401
- syncFs.mkdirSync(path.dirname(settings.file), { recursive: true });
401
+ fs$1.mkdirSync(path.dirname(settings.file), { recursive: true });
402
402
  if (isRollingPath(settings.file)) pruneOldRollingLogs(path.dirname(settings.file));
403
403
  let currentFileBytes = getCurrentLogFileBytes(settings.file);
404
404
  let warnedAboutSizeCap = false;
@@ -442,14 +442,14 @@ function resolveMaxLogFileBytes(raw) {
442
442
  }
443
443
  function getCurrentLogFileBytes(file) {
444
444
  try {
445
- return syncFs.statSync(file).size;
445
+ return fs$1.statSync(file).size;
446
446
  } catch {
447
447
  return 0;
448
448
  }
449
449
  }
450
450
  function appendLogLine(file, line) {
451
451
  try {
452
- syncFs.appendFileSync(file, line, { encoding: "utf8" });
452
+ fs$1.appendFileSync(file, line, { encoding: "utf8" });
453
453
  return true;
454
454
  } catch {
455
455
  return false;
@@ -501,14 +501,14 @@ function isRollingPath(file) {
501
501
  }
502
502
  function pruneOldRollingLogs(dir) {
503
503
  try {
504
- const entries = syncFs.readdirSync(dir, { withFileTypes: true });
504
+ const entries = fs$1.readdirSync(dir, { withFileTypes: true });
505
505
  const cutoff = Date.now() - MAX_LOG_AGE_MS;
506
506
  for (const entry of entries) {
507
507
  if (!entry.isFile()) continue;
508
508
  if (!entry.name.startsWith(`${LOG_PREFIX}-`) || !entry.name.endsWith(LOG_SUFFIX)) continue;
509
509
  const fullPath = path.join(dir, entry.name);
510
510
  try {
511
- if (syncFs.statSync(fullPath).mtimeMs < cutoff) syncFs.rmSync(fullPath, { force: true });
511
+ if (fs$1.statSync(fullPath).mtimeMs < cutoff) fs$1.rmSync(fullPath, { force: true });
512
512
  } catch {}
513
513
  }
514
514
  } catch {}
@@ -600,14 +600,14 @@ function isPlainObject$2(value) {
600
600
  //#endregion
601
601
  //#region src/utils.ts
602
602
  async function ensureDir(dir) {
603
- await syncFs.promises.mkdir(dir, { recursive: true });
603
+ await fs$1.promises.mkdir(dir, { recursive: true });
604
604
  }
605
605
  /**
606
606
  * Check if a file or directory exists at the given path.
607
607
  */
608
608
  async function pathExists$1(targetPath) {
609
609
  try {
610
- await syncFs.promises.access(targetPath);
610
+ await fs$1.promises.access(targetPath);
611
611
  return true;
612
612
  } catch {
613
613
  return false;
@@ -690,7 +690,7 @@ function readLidReverseMapping(lid, opts) {
690
690
  for (const dir of mappingDirs) {
691
691
  const mappingPath = path.join(dir, mappingFilename);
692
692
  try {
693
- const data = syncFs.readFileSync(mappingPath, "utf8");
693
+ const data = fs$1.readFileSync(mappingPath, "utf8");
694
694
  const phone = JSON.parse(data);
695
695
  if (phone === null || phone === void 0) continue;
696
696
  return normalizeE164(String(phone));
@@ -775,7 +775,7 @@ function resolveConfigDir(env = process.env, homedir = os.homedir) {
775
775
  if (override) return resolveUserPath(override);
776
776
  const newDir = path.join(resolveRequiredHomeDir(env, homedir), ".fased");
777
777
  try {
778
- if (syncFs.existsSync(newDir)) return newDir;
778
+ if (fs$1.existsSync(newDir)) return newDir;
779
779
  } catch {}
780
780
  return newDir;
781
781
  }
@@ -2962,7 +2962,7 @@ function resolveTelegramToken(cfg, opts = {}) {
2962
2962
  const accountCfg = resolveAccountCfg(accountId !== DEFAULT_ACCOUNT_ID ? accountId : DEFAULT_ACCOUNT_ID);
2963
2963
  const accountTokenFile = accountCfg?.tokenFile?.trim();
2964
2964
  if (accountTokenFile) {
2965
- if (!syncFs.existsSync(accountTokenFile)) {
2965
+ if (!fs$1.existsSync(accountTokenFile)) {
2966
2966
  opts.logMissingFile?.(`channels.telegram.accounts.${accountId}.tokenFile not found: ${accountTokenFile}`);
2967
2967
  return {
2968
2968
  token: "",
@@ -2970,7 +2970,7 @@ function resolveTelegramToken(cfg, opts = {}) {
2970
2970
  };
2971
2971
  }
2972
2972
  try {
2973
- const token = syncFs.readFileSync(accountTokenFile, "utf-8").trim();
2973
+ const token = fs$1.readFileSync(accountTokenFile, "utf-8").trim();
2974
2974
  if (token) return {
2975
2975
  token,
2976
2976
  source: "tokenFile"
@@ -2995,7 +2995,7 @@ function resolveTelegramToken(cfg, opts = {}) {
2995
2995
  const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
2996
2996
  const tokenFile = telegramCfg?.tokenFile?.trim();
2997
2997
  if (tokenFile && allowEnv) {
2998
- if (!syncFs.existsSync(tokenFile)) {
2998
+ if (!fs$1.existsSync(tokenFile)) {
2999
2999
  opts.logMissingFile?.(`channels.telegram.tokenFile not found: ${tokenFile}`);
3000
3000
  return {
3001
3001
  token: "",
@@ -3003,7 +3003,7 @@ function resolveTelegramToken(cfg, opts = {}) {
3003
3003
  };
3004
3004
  }
3005
3005
  try {
3006
- const token = syncFs.readFileSync(tokenFile, "utf-8").trim();
3006
+ const token = fs$1.readFileSync(tokenFile, "utf-8").trim();
3007
3007
  if (token) return {
3008
3008
  token,
3009
3009
  source: "tokenFile"
@@ -3177,7 +3177,7 @@ function resolveHintCliInvocation(argv = process.argv) {
3177
3177
  if (!argv1) return fallback;
3178
3178
  if (path.basename(argv1).trim() !== "run-node.mjs") return fallback;
3179
3179
  const localRunner = path.resolve(process.cwd(), "scripts", "run-node.mjs");
3180
- if (!syncFs.existsSync(localRunner)) return fallback;
3180
+ if (!fs$1.existsSync(localRunner)) return fallback;
3181
3181
  return "node scripts/run-node.mjs";
3182
3182
  }
3183
3183
  function formatCliCommand(command, env = process.env) {
@@ -3389,7 +3389,7 @@ function readAuthStoreLidReverseMapping(lid, opts) {
3389
3389
  for (const dir of dirs) {
3390
3390
  const mappingPath = path.join(dir, mappingFilename);
3391
3391
  try {
3392
- const data = syncFs.readFileSync(mappingPath, "utf8");
3392
+ const data = fs$1.readFileSync(mappingPath, "utf8");
3393
3393
  const phone = JSON.parse(data);
3394
3394
  if (phone !== null && phone !== void 0) return normalizeAuthStoreE164(String(phone));
3395
3395
  } catch {}
@@ -3415,7 +3415,7 @@ function resolveWebCredsBackupPath(authDir) {
3415
3415
  }
3416
3416
  function hasWebCredsSync(authDir) {
3417
3417
  try {
3418
- const stats = syncFs.statSync(resolveWebCredsPath(authDir));
3418
+ const stats = fs$1.statSync(resolveWebCredsPath(authDir));
3419
3419
  return stats.isFile() && stats.size > 1;
3420
3420
  } catch {
3421
3421
  return false;
@@ -3423,10 +3423,10 @@ function hasWebCredsSync(authDir) {
3423
3423
  }
3424
3424
  function readCredsJsonRaw(filePath) {
3425
3425
  try {
3426
- if (!syncFs.existsSync(filePath)) return null;
3427
- const stats = syncFs.statSync(filePath);
3426
+ if (!fs$1.existsSync(filePath)) return null;
3427
+ const stats = fs$1.statSync(filePath);
3428
3428
  if (!stats.isFile() || stats.size <= 1) return null;
3429
- return syncFs.readFileSync(filePath, "utf-8");
3429
+ return fs$1.readFileSync(filePath, "utf-8");
3430
3430
  } catch {
3431
3431
  return null;
3432
3432
  }
@@ -3444,9 +3444,9 @@ function maybeRestoreCredsFromBackup(authDir) {
3444
3444
  const backupRaw = readCredsJsonRaw(backupPath);
3445
3445
  if (!backupRaw) return;
3446
3446
  JSON.parse(backupRaw);
3447
- syncFs.copyFileSync(backupPath, credsPath);
3447
+ fs$1.copyFileSync(backupPath, credsPath);
3448
3448
  try {
3449
- syncFs.chmodSync(credsPath, 384);
3449
+ fs$1.chmodSync(credsPath, 384);
3450
3450
  } catch {}
3451
3451
  logger.warn({ credsPath }, "restored corrupted WhatsApp creds.json from backup");
3452
3452
  } catch {}
@@ -3502,11 +3502,11 @@ async function logoutWeb(params) {
3502
3502
  function readWebSelfId(authDir = resolveDefaultWebAuthDir()) {
3503
3503
  try {
3504
3504
  const credsPath = resolveWebCredsPath(resolveAuthStoreUserPath(authDir));
3505
- if (!syncFs.existsSync(credsPath)) return {
3505
+ if (!fs$1.existsSync(credsPath)) return {
3506
3506
  e164: null,
3507
3507
  jid: null
3508
3508
  };
3509
- const raw = syncFs.readFileSync(credsPath, "utf-8");
3509
+ const raw = fs$1.readFileSync(credsPath, "utf-8");
3510
3510
  const jid = JSON.parse(raw)?.me?.id ?? null;
3511
3511
  return {
3512
3512
  e164: jid ? jidToE164ForAuthStore(jid, { authDir }) : null,
@@ -3525,7 +3525,7 @@ function readWebSelfId(authDir = resolveDefaultWebAuthDir()) {
3525
3525
  */
3526
3526
  function getWebAuthAgeMs(authDir = resolveDefaultWebAuthDir()) {
3527
3527
  try {
3528
- const stats = syncFs.statSync(resolveWebCredsPath(resolveAuthStoreUserPath(authDir)));
3528
+ const stats = fs$1.statSync(resolveWebCredsPath(resolveAuthStoreUserPath(authDir)));
3529
3529
  return Date.now() - stats.mtimeMs;
3530
3530
  } catch {
3531
3531
  return null;
@@ -3557,7 +3557,7 @@ function listWhatsAppAuthDirs(cfg) {
3557
3557
  accountId
3558
3558
  }).authDir);
3559
3559
  try {
3560
- const entries = syncFs.readdirSync(whatsappDir, { withFileTypes: true });
3560
+ const entries = fs$1.readdirSync(whatsappDir, { withFileTypes: true });
3561
3561
  for (const entry of entries) {
3562
3562
  if (!entry.isDirectory()) continue;
3563
3563
  authDirs.add(path.join(whatsappDir, entry.name));
@@ -3579,7 +3579,7 @@ function resolveLegacyAuthDir() {
3579
3579
  }
3580
3580
  function legacyAuthExists(authDir) {
3581
3581
  try {
3582
- return syncFs.existsSync(path.join(authDir, "creds.json"));
3582
+ return fs$1.existsSync(path.join(authDir, "creds.json"));
3583
3583
  } catch {
3584
3584
  return false;
3585
3585
  }
@@ -4951,7 +4951,7 @@ function shouldBlockWorkspaceDotEnvKey(key) {
4951
4951
  function readDotEnvFile(params) {
4952
4952
  let content;
4953
4953
  try {
4954
- content = syncFs.readFileSync(params.filePath, "utf8");
4954
+ content = fs$1.readFileSync(params.filePath, "utf8");
4955
4955
  } catch (error) {
4956
4956
  if (!params.quiet) {
4957
4957
  if ((error && typeof error === "object" && "code" in error ? String(error.code) : void 0) !== "ENOENT") console.warn(`[dotenv] Failed to read ${params.filePath}: ${String(error)}`);
@@ -5069,7 +5069,7 @@ function resolveTimeoutMs(timeoutMs) {
5069
5069
  function readEtcShells() {
5070
5070
  if (cachedEtcShells !== void 0) return cachedEtcShells;
5071
5071
  try {
5072
- const entries = syncFs.readFileSync("/etc/shells", "utf8").split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#") && path.isAbsolute(line));
5072
+ const entries = fs$1.readFileSync("/etc/shells", "utf8").split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#") && path.isAbsolute(line));
5073
5073
  cachedEtcShells = new Set(entries);
5074
5074
  } catch {
5075
5075
  cachedEtcShells = null;
@@ -5945,7 +5945,7 @@ function resolveBoundaryPathLexicalSync(params) {
5945
5945
  lexicalCursor = path.join(lexicalCursor, segment);
5946
5946
  let stat;
5947
5947
  try {
5948
- stat = syncFs.lstatSync(lexicalCursor);
5948
+ stat = fs$1.lstatSync(lexicalCursor);
5949
5949
  } catch (error) {
5950
5950
  if (isNotFoundPathError(error)) {
5951
5951
  const missingSuffix = segments.slice(idx);
@@ -6051,15 +6051,15 @@ function resolvePathViaExistingAncestorSync(targetPath) {
6051
6051
  const normalized = path.resolve(targetPath);
6052
6052
  let cursor = normalized;
6053
6053
  const missingSuffix = [];
6054
- while (!isFilesystemRoot(cursor) && !syncFs.existsSync(cursor)) {
6054
+ while (!isFilesystemRoot(cursor) && !fs$1.existsSync(cursor)) {
6055
6055
  missingSuffix.unshift(path.basename(cursor));
6056
6056
  const parent = path.dirname(cursor);
6057
6057
  if (parent === cursor) break;
6058
6058
  cursor = parent;
6059
6059
  }
6060
- if (!syncFs.existsSync(cursor)) return normalized;
6060
+ if (!fs$1.existsSync(cursor)) return normalized;
6061
6061
  try {
6062
- const resolvedAncestor = path.resolve(syncFs.realpathSync(cursor));
6062
+ const resolvedAncestor = path.resolve(fs$1.realpathSync(cursor));
6063
6063
  if (missingSuffix.length === 0) return resolvedAncestor;
6064
6064
  return path.resolve(resolvedAncestor, ...missingSuffix);
6065
6065
  } catch {
@@ -6084,7 +6084,7 @@ function getPathKindSync(absolutePath, preserveFinalSymlink) {
6084
6084
  try {
6085
6085
  return {
6086
6086
  exists: true,
6087
- kind: toResolvedKind(preserveFinalSymlink ? syncFs.lstatSync(absolutePath) : syncFs.statSync(absolutePath))
6087
+ kind: toResolvedKind(preserveFinalSymlink ? fs$1.lstatSync(absolutePath) : fs$1.statSync(absolutePath))
6088
6088
  };
6089
6089
  } catch (error) {
6090
6090
  if (isNotFoundPathError(error)) return {
@@ -6144,10 +6144,10 @@ async function resolveSymlinkHopPath(symlinkPath) {
6144
6144
  }
6145
6145
  function resolveSymlinkHopPathSync(symlinkPath) {
6146
6146
  try {
6147
- return path.resolve(syncFs.realpathSync(symlinkPath));
6147
+ return path.resolve(fs$1.realpathSync(symlinkPath));
6148
6148
  } catch (error) {
6149
6149
  if (!isNotFoundPathError(error)) throw error;
6150
- const linkTarget = syncFs.readlinkSync(symlinkPath);
6150
+ const linkTarget = fs$1.readlinkSync(symlinkPath);
6151
6151
  return resolvePathViaExistingAncestorSync(path.resolve(path.dirname(symlinkPath), linkTarget));
6152
6152
  }
6153
6153
  }
@@ -6173,7 +6173,7 @@ function sameFileIdentity(left, right) {
6173
6173
  return sameFileIdentity$1(left, right);
6174
6174
  }
6175
6175
  function openVerifiedFileSync(params) {
6176
- const ioFs = params.ioFs ?? syncFs;
6176
+ const ioFs = params.ioFs ?? fs$1;
6177
6177
  const openReadFlags = ioFs.constants.O_RDONLY | (typeof ioFs.constants.O_NOFOLLOW === "number" ? ioFs.constants.O_NOFOLLOW : 0);
6178
6178
  let fd = null;
6179
6179
  try {
@@ -6245,7 +6245,7 @@ function canUseBoundaryFileOpen(ioFs) {
6245
6245
  return typeof ioFs.openSync === "function" && typeof ioFs.closeSync === "function" && typeof ioFs.fstatSync === "function" && typeof ioFs.lstatSync === "function" && typeof ioFs.realpathSync === "function" && typeof ioFs.readFileSync === "function" && typeof ioFs.constants === "object" && ioFs.constants !== null;
6246
6246
  }
6247
6247
  function openBoundaryFileSync(params) {
6248
- const ioFs = params.ioFs ?? syncFs;
6248
+ const ioFs = params.ioFs ?? fs$1;
6249
6249
  const absolutePath = path.resolve(params.absolutePath);
6250
6250
  let resolvedPath;
6251
6251
  let rootRealPath;
@@ -6444,7 +6444,7 @@ function normalizeChannelConfigs(value) {
6444
6444
  function resolvePluginManifestPath(rootDir) {
6445
6445
  for (const filename of PLUGIN_MANIFEST_FILENAMES) {
6446
6446
  const candidate = path.join(rootDir, filename);
6447
- if (syncFs.existsSync(candidate)) return candidate;
6447
+ if (fs$1.existsSync(candidate)) return candidate;
6448
6448
  }
6449
6449
  return path.join(rootDir, PLUGIN_MANIFEST_FILENAME);
6450
6450
  }
@@ -6469,7 +6469,7 @@ function loadPluginManifest(rootDir) {
6469
6469
  }
6470
6470
  let raw;
6471
6471
  try {
6472
- raw = JSON5.parse(syncFs.readFileSync(opened.fd, "utf-8"));
6472
+ raw = JSON5.parse(fs$1.readFileSync(opened.fd, "utf-8"));
6473
6473
  } catch (err) {
6474
6474
  return {
6475
6475
  ok: false,
@@ -6477,7 +6477,7 @@ function loadPluginManifest(rootDir) {
6477
6477
  manifestPath
6478
6478
  };
6479
6479
  } finally {
6480
- syncFs.closeSync(opened.fd);
6480
+ fs$1.closeSync(opened.fd);
6481
6481
  }
6482
6482
  if (!isRecord$4(raw)) return {
6483
6483
  ok: false,
@@ -10670,7 +10670,7 @@ async function readPackageName(dir) {
10670
10670
  }
10671
10671
  function readPackageNameSync(dir) {
10672
10672
  try {
10673
- const raw = syncFs.readFileSync(path.join(dir, "package.json"), "utf-8");
10673
+ const raw = fs$1.readFileSync(path.join(dir, "package.json"), "utf-8");
10674
10674
  const parsed = JSON.parse(raw);
10675
10675
  return typeof parsed.name === "string" ? parsed.name : null;
10676
10676
  } catch {
@@ -10704,7 +10704,7 @@ function candidateDirsFromArgv1(argv1) {
10704
10704
  const normalized = path.resolve(argv1);
10705
10705
  const candidates = [path.dirname(normalized)];
10706
10706
  try {
10707
- const resolved = syncFs.realpathSync(normalized);
10707
+ const resolved = fs$1.realpathSync(normalized);
10708
10708
  if (resolved !== normalized) candidates.push(path.dirname(resolved));
10709
10709
  } catch {}
10710
10710
  const parts = normalized.split(path.sep);
@@ -10742,11 +10742,11 @@ function buildCandidates(opts) {
10742
10742
  //#region src/plugins/bundled-dir.ts
10743
10743
  function looksLikeBundledPluginsDir(dir) {
10744
10744
  try {
10745
- const entries = syncFs.readdirSync(dir, { withFileTypes: true });
10745
+ const entries = fs$1.readdirSync(dir, { withFileTypes: true });
10746
10746
  for (const entry of entries) {
10747
10747
  if (!entry.isDirectory()) continue;
10748
10748
  const pluginRoot = path.join(dir, entry.name);
10749
- if (syncFs.existsSync(path.join(pluginRoot, "fased.plugin.json"))) return true;
10749
+ if (fs$1.existsSync(path.join(pluginRoot, "fased.plugin.json"))) return true;
10750
10750
  }
10751
10751
  } catch {
10752
10752
  return false;
@@ -10792,7 +10792,7 @@ function safeRealpathSync$1(targetPath, cache) {
10792
10792
  const cached = cache?.get(targetPath);
10793
10793
  if (cached) return cached;
10794
10794
  try {
10795
- const resolved = syncFs.realpathSync(targetPath);
10795
+ const resolved = fs$1.realpathSync(targetPath);
10796
10796
  cache?.set(targetPath, resolved);
10797
10797
  return resolved;
10798
10798
  } catch {
@@ -10801,7 +10801,7 @@ function safeRealpathSync$1(targetPath, cache) {
10801
10801
  }
10802
10802
  function safeStatSync(targetPath) {
10803
10803
  try {
10804
- return syncFs.statSync(targetPath);
10804
+ return fs$1.statSync(targetPath);
10805
10805
  } catch {
10806
10806
  return null;
10807
10807
  }
@@ -10929,12 +10929,12 @@ function readPackageManifest(dir) {
10929
10929
  });
10930
10930
  if (!opened.ok) return null;
10931
10931
  try {
10932
- const raw = syncFs.readFileSync(opened.fd, "utf-8");
10932
+ const raw = fs$1.readFileSync(opened.fd, "utf-8");
10933
10933
  return JSON.parse(raw);
10934
10934
  } catch {
10935
10935
  return null;
10936
10936
  } finally {
10937
- syncFs.closeSync(opened.fd);
10937
+ fs$1.closeSync(opened.fd);
10938
10938
  }
10939
10939
  }
10940
10940
  function normalizePackageEntry(entry) {
@@ -10960,7 +10960,7 @@ function inferLegacyPluginManifestExtensions(manifest, packageDir) {
10960
10960
  seen.add(normalized);
10961
10961
  const resolved = path.resolve(packageDir, normalized);
10962
10962
  if (!isPathInside(packageDir, resolved)) continue;
10963
- if (syncFs.existsSync(resolved) && isExtensionFile(resolved)) entries.push(normalized);
10963
+ if (fs$1.existsSync(resolved) && isExtensionFile(resolved)) entries.push(normalized);
10964
10964
  }
10965
10965
  return entries;
10966
10966
  }
@@ -11018,14 +11018,14 @@ function resolvePackageEntrySource(params) {
11018
11018
  return null;
11019
11019
  }
11020
11020
  const safeSource = opened.path;
11021
- syncFs.closeSync(opened.fd);
11021
+ fs$1.closeSync(opened.fd);
11022
11022
  return safeSource;
11023
11023
  }
11024
11024
  function discoverInDirectory(params) {
11025
- if (!syncFs.existsSync(params.dir)) return;
11025
+ if (!fs$1.existsSync(params.dir)) return;
11026
11026
  let entries = [];
11027
11027
  try {
11028
- entries = syncFs.readdirSync(params.dir, { withFileTypes: true });
11028
+ entries = fs$1.readdirSync(params.dir, { withFileTypes: true });
11029
11029
  } catch (err) {
11030
11030
  params.diagnostics.push({
11031
11031
  level: "warn",
@@ -11088,7 +11088,7 @@ function discoverInDirectory(params) {
11088
11088
  "index.js",
11089
11089
  "index.mjs",
11090
11090
  "index.cjs"
11091
- ].map((candidate) => path.join(fullPath, candidate)).find((candidate) => syncFs.existsSync(candidate));
11091
+ ].map((candidate) => path.join(fullPath, candidate)).find((candidate) => fs$1.existsSync(candidate));
11092
11092
  if (indexFile && isExtensionFile(indexFile)) addCandidate({
11093
11093
  candidates: params.candidates,
11094
11094
  diagnostics: params.diagnostics,
@@ -11106,7 +11106,7 @@ function discoverInDirectory(params) {
11106
11106
  }
11107
11107
  function discoverFromPath(params) {
11108
11108
  const resolved = resolveUserPath(params.rawPath);
11109
- if (!syncFs.existsSync(resolved)) {
11109
+ if (!fs$1.existsSync(resolved)) {
11110
11110
  params.diagnostics.push({
11111
11111
  level: "error",
11112
11112
  message: `plugin path not found: ${resolved}`,
@@ -11114,7 +11114,7 @@ function discoverFromPath(params) {
11114
11114
  });
11115
11115
  return;
11116
11116
  }
11117
- const stat = syncFs.statSync(resolved);
11117
+ const stat = fs$1.statSync(resolved);
11118
11118
  if (stat.isFile()) {
11119
11119
  if (!isExtensionFile(resolved)) {
11120
11120
  params.diagnostics.push({
@@ -11174,7 +11174,7 @@ function discoverFromPath(params) {
11174
11174
  "index.js",
11175
11175
  "index.mjs",
11176
11176
  "index.cjs"
11177
- ].map((candidate) => path.join(resolved, candidate)).find((candidate) => syncFs.existsSync(candidate));
11177
+ ].map((candidate) => path.join(resolved, candidate)).find((candidate) => fs$1.existsSync(candidate));
11178
11178
  if (indexFile && isExtensionFile(indexFile)) {
11179
11179
  addCandidate({
11180
11180
  candidates: params.candidates,
@@ -11359,7 +11359,7 @@ function buildCacheKey(params) {
11359
11359
  }
11360
11360
  function safeStatMtimeMs(filePath) {
11361
11361
  try {
11362
- return syncFs.statSync(filePath).mtimeMs;
11362
+ return fs$1.statSync(filePath).mtimeMs;
11363
11363
  } catch {
11364
11364
  return null;
11365
11365
  }
@@ -11629,7 +11629,7 @@ function resolveProviderIdForAuth(provider, params) {
11629
11629
  function isZombieProcess(pid) {
11630
11630
  if (process.platform !== "linux") return false;
11631
11631
  try {
11632
- return syncFs.readFileSync(`/proc/${pid}/status`, "utf8").match(/^State:\s+(\S)/m)?.[1] === "Z";
11632
+ return fs$1.readFileSync(`/proc/${pid}/status`, "utf8").match(/^State:\s+(\S)/m)?.[1] === "Z";
11633
11633
  } catch {
11634
11634
  return false;
11635
11635
  }
@@ -11869,7 +11869,7 @@ function resolveAuthStorePathForDisplay(agentDir) {
11869
11869
  return pathname.startsWith("~") ? pathname : resolveUserPath(pathname);
11870
11870
  }
11871
11871
  function ensureAuthStoreFile(pathname) {
11872
- if (syncFs.existsSync(pathname)) return;
11872
+ if (fs$1.existsSync(pathname)) return;
11873
11873
  saveJsonFile(pathname, {
11874
11874
  version: AUTH_STORE_VERSION,
11875
11875
  profiles: {}
@@ -12131,7 +12131,7 @@ function loadAuthProfileStoreForAgent(agentDir, options) {
12131
12131
  if (shouldWrite && legacy !== null) {
12132
12132
  const legacyPath = resolveLegacyAuthStorePath(agentDir);
12133
12133
  try {
12134
- syncFs.unlinkSync(legacyPath);
12134
+ fs$1.unlinkSync(legacyPath);
12135
12135
  } catch (err) {
12136
12136
  if (err?.code !== "ENOENT") log$10.warn("failed to delete legacy auth.json after migration", {
12137
12137
  err,
@@ -18502,7 +18502,7 @@ function resolveActiveTalkProviderConfig(talk) {
18502
18502
  };
18503
18503
  }
18504
18504
  function readTalkApiKeyFromProfile(deps = {}) {
18505
- const fsImpl = deps.fs ?? syncFs;
18505
+ const fsImpl = deps.fs ?? fs$1;
18506
18506
  const osImpl = deps.os ?? os;
18507
18507
  const pathImpl = deps.path ?? path;
18508
18508
  const home = osImpl.homedir();
@@ -19230,7 +19230,7 @@ var IncludeProcessor = class IncludeProcessor {
19230
19230
  const normalized = path.normalize(resolved);
19231
19231
  if (!isPathInside$1(this.rootDir, normalized)) throw new ConfigIncludeError(`Include path escapes config directory: ${includePath} (root: ${this.rootDir})`, includePath);
19232
19232
  try {
19233
- const real = syncFs.realpathSync(normalized);
19233
+ const real = fs$1.realpathSync(normalized);
19234
19234
  if (!isPathInside$1(this.rootRealDir, real)) throw new ConfigIncludeError(`Include path resolves outside config directory (symlink): ${includePath} (root: ${this.rootDir})`, includePath);
19235
19235
  } catch (err) {
19236
19236
  if (err instanceof ConfigIncludeError) throw err;
@@ -19272,13 +19272,13 @@ var IncludeProcessor = class IncludeProcessor {
19272
19272
  };
19273
19273
  function safeRealpath(target) {
19274
19274
  try {
19275
- return syncFs.realpathSync(target);
19275
+ return fs$1.realpathSync(target);
19276
19276
  } catch {
19277
19277
  return target;
19278
19278
  }
19279
19279
  }
19280
19280
  function readConfigIncludeFileWithGuards(params) {
19281
- const ioFs = params.ioFs ?? syncFs;
19281
+ const ioFs = params.ioFs ?? fs$1;
19282
19282
  const maxBytes = params.maxBytes ?? MAX_INCLUDE_FILE_BYTES;
19283
19283
  if (!canUseBoundaryFileOpen(ioFs)) return ioFs.readFileSync(params.resolvedPath, "utf-8");
19284
19284
  const opened = openBoundaryFileSync({
@@ -19301,7 +19301,7 @@ function readConfigIncludeFileWithGuards(params) {
19301
19301
  }
19302
19302
  }
19303
19303
  const defaultResolver = {
19304
- readFile: (p) => syncFs.readFileSync(p, "utf-8"),
19304
+ readFile: (p) => fs$1.readFileSync(p, "utf-8"),
19305
19305
  readFileWithGuards: ({ includePath, resolvedPath, rootRealDir }) => readConfigIncludeFileWithGuards({
19306
19306
  includePath,
19307
19307
  resolvedPath,
@@ -21342,8 +21342,8 @@ const DEFAULT_SAFE_BINS = [
21342
21342
  ];
21343
21343
  function isExecutableFile(filePath) {
21344
21344
  try {
21345
- if (!syncFs.statSync(filePath).isFile()) return false;
21346
- if (process.platform !== "win32") syncFs.accessSync(filePath, syncFs.constants.X_OK);
21345
+ if (!fs$1.statSync(filePath).isFile()) return false;
21346
+ if (process.platform !== "win32") fs$1.accessSync(filePath, fs$1.constants.X_OK);
21347
21347
  return true;
21348
21348
  } catch {
21349
21349
  return false;
@@ -21387,7 +21387,7 @@ function normalizeMatchTarget(value) {
21387
21387
  }
21388
21388
  function tryRealpath(value) {
21389
21389
  try {
21390
- return syncFs.realpathSync(value);
21390
+ return fs$1.realpathSync(value);
21391
21391
  } catch {
21392
21392
  return null;
21393
21393
  }
@@ -22268,7 +22268,7 @@ function listWritableExplicitTrustedSafeBinDirs(entries) {
22268
22268
  for (const dir of resolved) {
22269
22269
  let stat;
22270
22270
  try {
22271
- stat = syncFs.statSync(dir);
22271
+ stat = fs$1.statSync(dir);
22272
22272
  } catch {
22273
22273
  continue;
22274
22274
  }
@@ -27572,7 +27572,7 @@ function resolveConfigPathForDeps(deps) {
27572
27572
  }
27573
27573
  function normalizeDeps(overrides = {}) {
27574
27574
  return {
27575
- fs: overrides.fs ?? syncFs,
27575
+ fs: overrides.fs ?? fs$1,
27576
27576
  json5: overrides.json5 ?? JSON5,
27577
27577
  env: overrides.env ?? process.env,
27578
27578
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
@@ -28290,7 +28290,7 @@ function resolveStructuralSessionFallbackPath(candidateAbsPath, expectedAgentId)
28290
28290
  }
28291
28291
  function safeRealpathSync(filePath) {
28292
28292
  try {
28293
- return syncFs.realpathSync(filePath);
28293
+ return fs$1.realpathSync(filePath);
28294
28294
  } catch {
28295
28295
  return;
28296
28296
  }
@@ -28628,7 +28628,7 @@ function releaseAllLocksSync() {
28628
28628
  if (typeof held.handle.close === "function") held.handle.close().catch(() => {});
28629
28629
  } catch {}
28630
28630
  try {
28631
- syncFs.rmSync(held.lockPath, { force: true });
28631
+ fs$1.rmSync(held.lockPath, { force: true });
28632
28632
  } catch {}
28633
28633
  HELD_LOCKS.delete(sessionFile);
28634
28634
  }
@@ -29047,14 +29047,14 @@ function resolveSessionTranscriptCandidates(sessionId, storePath, sessionFile, a
29047
29047
  function canonicalizePathForComparison$1(filePath) {
29048
29048
  const resolved = path.resolve(filePath);
29049
29049
  try {
29050
- return syncFs.realpathSync(resolved);
29050
+ return fs$1.realpathSync(resolved);
29051
29051
  } catch {
29052
29052
  return resolved;
29053
29053
  }
29054
29054
  }
29055
29055
  function archiveFileOnDisk(filePath, reason) {
29056
29056
  const archived = `${filePath}.${reason}.${formatSessionArchiveTimestamp()}`;
29057
- syncFs.renameSync(filePath, archived);
29057
+ fs$1.renameSync(filePath, archived);
29058
29058
  return archived;
29059
29059
  }
29060
29060
  /**
@@ -29070,7 +29070,7 @@ function archiveSessionTranscripts(opts) {
29070
29070
  const relative = path.relative(storeDir, candidatePath);
29071
29071
  if (!relative || relative.startsWith("..") || path.isAbsolute(relative)) continue;
29072
29072
  }
29073
- if (!syncFs.existsSync(candidatePath)) continue;
29073
+ if (!fs$1.existsSync(candidatePath)) continue;
29074
29074
  try {
29075
29075
  archived.push(archiveFileOnDisk(candidatePath, opts.reason));
29076
29076
  } catch {}
@@ -29088,15 +29088,15 @@ async function cleanupArchivedSessionTranscripts(opts) {
29088
29088
  let removed = 0;
29089
29089
  let scanned = 0;
29090
29090
  for (const dir of directories) {
29091
- const entries = await syncFs.promises.readdir(dir).catch(() => []);
29091
+ const entries = await fs$1.promises.readdir(dir).catch(() => []);
29092
29092
  for (const entry of entries) {
29093
29093
  const timestamp = parseSessionArchiveTimestamp(entry, reason);
29094
29094
  if (timestamp == null) continue;
29095
29095
  scanned += 1;
29096
29096
  if (now - timestamp <= opts.olderThanMs) continue;
29097
29097
  const fullPath = path.join(dir, entry);
29098
- if (!(await syncFs.promises.stat(fullPath).catch(() => null))?.isFile()) continue;
29099
- await syncFs.promises.rm(fullPath).catch(() => void 0);
29098
+ if (!(await fs$1.promises.stat(fullPath).catch(() => null))?.isFile()) continue;
29099
+ await fs$1.promises.rm(fullPath).catch(() => void 0);
29100
29100
  removed += 1;
29101
29101
  }
29102
29102
  }
@@ -29131,14 +29131,14 @@ function capArrayByJsonBytes(items, maxBytes) {
29131
29131
  }
29132
29132
  const MAX_LINES_TO_SCAN = 10;
29133
29133
  function readSessionTitleFieldsFromTranscript(sessionId, storePath, sessionFile, agentId, opts) {
29134
- const filePath = resolveSessionTranscriptCandidates(sessionId, storePath, sessionFile, agentId).find((p) => syncFs.existsSync(p));
29134
+ const filePath = resolveSessionTranscriptCandidates(sessionId, storePath, sessionFile, agentId).find((p) => fs$1.existsSync(p));
29135
29135
  if (!filePath) return {
29136
29136
  firstUserMessage: null,
29137
29137
  lastMessagePreview: null
29138
29138
  };
29139
29139
  let stat;
29140
29140
  try {
29141
- stat = syncFs.statSync(filePath);
29141
+ stat = fs$1.statSync(filePath);
29142
29142
  } catch {
29143
29143
  return {
29144
29144
  firstUserMessage: null,
@@ -29158,7 +29158,7 @@ function readSessionTitleFieldsFromTranscript(sessionId, storePath, sessionFile,
29158
29158
  }
29159
29159
  let fd = null;
29160
29160
  try {
29161
- fd = syncFs.openSync(filePath, "r");
29161
+ fd = fs$1.openSync(filePath, "r");
29162
29162
  const size = stat.size;
29163
29163
  let firstUserMessage = null;
29164
29164
  try {
@@ -29185,7 +29185,7 @@ function readSessionTitleFieldsFromTranscript(sessionId, storePath, sessionFile,
29185
29185
  };
29186
29186
  } finally {
29187
29187
  if (fd !== null) try {
29188
- syncFs.closeSync(fd);
29188
+ fs$1.closeSync(fd);
29189
29189
  } catch {}
29190
29190
  }
29191
29191
  }
@@ -29203,7 +29203,7 @@ function extractTextFromContent(content) {
29203
29203
  }
29204
29204
  function readTranscriptHeadChunk(fd, maxBytes = 8192) {
29205
29205
  const buf = Buffer.alloc(maxBytes);
29206
- const bytesRead = syncFs.readSync(fd, buf, 0, buf.length, 0);
29206
+ const bytesRead = fs$1.readSync(fd, buf, 0, buf.length, 0);
29207
29207
  if (bytesRead <= 0) return null;
29208
29208
  return buf.toString("utf-8", 0, bytesRead);
29209
29209
  }
@@ -29227,7 +29227,7 @@ function readLastMessagePreviewFromOpenTranscript(params) {
29227
29227
  const readStart = Math.max(0, params.size - LAST_MSG_MAX_BYTES);
29228
29228
  const readLen = Math.min(params.size, LAST_MSG_MAX_BYTES);
29229
29229
  const buf = Buffer.alloc(readLen);
29230
- syncFs.readSync(params.fd, buf, 0, readLen, readStart);
29230
+ fs$1.readSync(params.fd, buf, 0, readLen, readStart);
29231
29231
  const tailLines = buf.toString("utf-8").split(/\r?\n/).filter((l) => l.trim()).slice(-LAST_MSG_MAX_LINES);
29232
29232
  for (let i = tailLines.length - 1; i >= 0; i--) {
29233
29233
  const line = tailLines[i];
@@ -29343,7 +29343,7 @@ function isCacheEnabled(ttlMs) {
29343
29343
  }
29344
29344
  function getFileMtimeMs(filePath) {
29345
29345
  try {
29346
- return syncFs.statSync(filePath).mtimeMs;
29346
+ return fs$1.statSync(filePath).mtimeMs;
29347
29347
  } catch {
29348
29348
  return;
29349
29349
  }
@@ -29358,7 +29358,7 @@ const NOOP_LOGGER = {
29358
29358
  function canonicalizePathForComparison(filePath) {
29359
29359
  const resolved = path.resolve(filePath);
29360
29360
  try {
29361
- return syncFs.realpathSync(resolved);
29361
+ return fs$1.realpathSync(resolved);
29362
29362
  } catch {
29363
29363
  return resolved;
29364
29364
  }
@@ -29416,12 +29416,12 @@ function resolveReferencedSessionTranscriptPaths(params) {
29416
29416
  return referenced;
29417
29417
  }
29418
29418
  async function readSessionsDirFiles(sessionsDir) {
29419
- const dirEntries = await syncFs.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
29419
+ const dirEntries = await fs$1.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
29420
29420
  const files = [];
29421
29421
  for (const dirent of dirEntries) {
29422
29422
  if (!dirent.isFile()) continue;
29423
29423
  const filePath = path.join(sessionsDir, dirent.name);
29424
- const stat = await syncFs.promises.stat(filePath).catch(() => null);
29424
+ const stat = await fs$1.promises.stat(filePath).catch(() => null);
29425
29425
  if (!stat?.isFile()) continue;
29426
29426
  files.push({
29427
29427
  path: filePath,
@@ -29434,9 +29434,9 @@ async function readSessionsDirFiles(sessionsDir) {
29434
29434
  return files;
29435
29435
  }
29436
29436
  async function removeFileIfExists(filePath) {
29437
- const stat = await syncFs.promises.stat(filePath).catch(() => null);
29437
+ const stat = await fs$1.promises.stat(filePath).catch(() => null);
29438
29438
  if (!stat?.isFile()) return 0;
29439
- await syncFs.promises.rm(filePath, { force: true }).catch(() => void 0);
29439
+ await fs$1.promises.rm(filePath, { force: true }).catch(() => void 0);
29440
29440
  return stat.size;
29441
29441
  }
29442
29442
  async function removeFileForBudget(params) {
@@ -29710,7 +29710,7 @@ function loadSessionStore(storePath, opts = {}) {
29710
29710
  const maxReadAttempts = process.platform === "win32" ? 3 : 1;
29711
29711
  const retryBuf = maxReadAttempts > 1 ? new Int32Array(new SharedArrayBuffer(4)) : void 0;
29712
29712
  for (let attempt = 0; attempt < maxReadAttempts; attempt++) try {
29713
- const raw = syncFs.readFileSync(storePath, "utf-8");
29713
+ const raw = fs$1.readFileSync(storePath, "utf-8");
29714
29714
  if (raw.length === 0 && attempt < maxReadAttempts - 1) {
29715
29715
  Atomics.wait(retryBuf, 0, 0, 50);
29716
29716
  continue;
@@ -29913,7 +29913,7 @@ function capEntryCount(store, overrideMax, opts = {}) {
29913
29913
  }
29914
29914
  async function getSessionFileSize(storePath) {
29915
29915
  try {
29916
- return (await syncFs.promises.stat(storePath)).size;
29916
+ return (await fs$1.promises.stat(storePath)).size;
29917
29917
  } catch {
29918
29918
  return null;
29919
29919
  }
@@ -29930,7 +29930,7 @@ async function rotateSessionFile(storePath, overrideBytes) {
29930
29930
  if (fileSize <= maxBytes) return false;
29931
29931
  const backupPath = `${storePath}.bak.${Date.now()}`;
29932
29932
  try {
29933
- await syncFs.promises.rename(storePath, backupPath);
29933
+ await fs$1.promises.rename(storePath, backupPath);
29934
29934
  log$2.info("rotated session store file", {
29935
29935
  backupPath: path.basename(backupPath),
29936
29936
  sizeBytes: fileSize
@@ -29941,11 +29941,11 @@ async function rotateSessionFile(storePath, overrideBytes) {
29941
29941
  try {
29942
29942
  const dir = path.dirname(storePath);
29943
29943
  const baseName = path.basename(storePath);
29944
- const backups = (await syncFs.promises.readdir(dir)).filter((f) => f.startsWith(`${baseName}.bak.`)).toSorted().toReversed();
29944
+ const backups = (await fs$1.promises.readdir(dir)).filter((f) => f.startsWith(`${baseName}.bak.`)).toSorted().toReversed();
29945
29945
  const maxBackups = 3;
29946
29946
  if (backups.length > maxBackups) {
29947
29947
  const toDelete = backups.slice(maxBackups);
29948
- for (const old of toDelete) await syncFs.promises.unlink(path.join(dir, old)).catch(() => void 0);
29948
+ for (const old of toDelete) await fs$1.promises.unlink(path.join(dir, old)).catch(() => void 0);
29949
29949
  log$2.info("cleaned up old session store backups", { deleted: toDelete.length });
29950
29950
  }
29951
29951
  } catch {}
@@ -30050,14 +30050,14 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
30050
30050
  });
30051
30051
  }
30052
30052
  }
30053
- await syncFs.promises.mkdir(path.dirname(storePath), { recursive: true });
30053
+ await fs$1.promises.mkdir(path.dirname(storePath), { recursive: true });
30054
30054
  const json = JSON.stringify(store, null, 2);
30055
30055
  if (process.platform === "win32") {
30056
30056
  const tmp = `${storePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
30057
30057
  try {
30058
- await syncFs.promises.writeFile(tmp, json, "utf-8");
30058
+ await fs$1.promises.writeFile(tmp, json, "utf-8");
30059
30059
  for (let i = 0; i < 5; i++) try {
30060
- await syncFs.promises.rename(tmp, storePath);
30060
+ await fs$1.promises.rename(tmp, storePath);
30061
30061
  break;
30062
30062
  } catch {
30063
30063
  if (i < 4) await new Promise((r) => setTimeout(r, 50 * (i + 1)));
@@ -30067,27 +30067,27 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
30067
30067
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) === "ENOENT") return;
30068
30068
  throw err;
30069
30069
  } finally {
30070
- await syncFs.promises.rm(tmp, { force: true }).catch(() => void 0);
30070
+ await fs$1.promises.rm(tmp, { force: true }).catch(() => void 0);
30071
30071
  }
30072
30072
  return;
30073
30073
  }
30074
30074
  const tmp = `${storePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
30075
30075
  try {
30076
- await syncFs.promises.writeFile(tmp, json, {
30076
+ await fs$1.promises.writeFile(tmp, json, {
30077
30077
  mode: 384,
30078
30078
  encoding: "utf-8"
30079
30079
  });
30080
- await syncFs.promises.rename(tmp, storePath);
30081
- await syncFs.promises.chmod(storePath, 384);
30080
+ await fs$1.promises.rename(tmp, storePath);
30081
+ await fs$1.promises.chmod(storePath, 384);
30082
30082
  } catch (err) {
30083
30083
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) === "ENOENT") {
30084
30084
  try {
30085
- await syncFs.promises.mkdir(path.dirname(storePath), { recursive: true });
30086
- await syncFs.promises.writeFile(storePath, json, {
30085
+ await fs$1.promises.mkdir(path.dirname(storePath), { recursive: true });
30086
+ await fs$1.promises.writeFile(storePath, json, {
30087
30087
  mode: 384,
30088
30088
  encoding: "utf-8"
30089
30089
  });
30090
- await syncFs.promises.chmod(storePath, 384);
30090
+ await fs$1.promises.chmod(storePath, 384);
30091
30091
  } catch (err2) {
30092
30092
  if ((err2 && typeof err2 === "object" && "code" in err2 ? String(err2.code) : null) === "ENOENT") return;
30093
30093
  throw err2;
@@ -30096,7 +30096,7 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
30096
30096
  }
30097
30097
  throw err;
30098
30098
  } finally {
30099
- await syncFs.promises.rm(tmp, { force: true });
30099
+ await fs$1.promises.rm(tmp, { force: true });
30100
30100
  }
30101
30101
  }
30102
30102
  async function saveSessionStore(storePath, store, opts) {
@@ -30440,8 +30440,8 @@ async function resolveSessionTranscriptFile(params) {
30440
30440
  });
30441
30441
  }
30442
30442
  async function ensureSessionHeader(params) {
30443
- if (syncFs.existsSync(params.sessionFile)) return;
30444
- await syncFs.promises.mkdir(path.dirname(params.sessionFile), { recursive: true });
30443
+ if (fs$1.existsSync(params.sessionFile)) return;
30444
+ await fs$1.promises.mkdir(path.dirname(params.sessionFile), { recursive: true });
30445
30445
  const header = {
30446
30446
  type: "session",
30447
30447
  version: CURRENT_SESSION_VERSION,
@@ -30449,7 +30449,7 @@ async function ensureSessionHeader(params) {
30449
30449
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
30450
30450
  cwd: process.cwd()
30451
30451
  };
30452
- await syncFs.promises.writeFile(params.sessionFile, `${JSON.stringify(header)}\n`, {
30452
+ await fs$1.promises.writeFile(params.sessionFile, `${JSON.stringify(header)}\n`, {
30453
30453
  encoding: "utf-8",
30454
30454
  mode: 384
30455
30455
  });
@@ -30850,7 +30850,7 @@ async function loadContextCache() {
30850
30850
  await ensureFasedModelsJson(cfg);
30851
30851
  } catch {}
30852
30852
  try {
30853
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-DD55ZBCk.js");
30853
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-C34IWfDn.js");
30854
30854
  const agentDir = resolveFasedAgentDir();
30855
30855
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
30856
30856
  applyDiscoveredContextWindows({
@@ -31011,7 +31011,7 @@ function isCombinedSessionStoreCacheFresh(entry) {
31011
31011
  }
31012
31012
  function readSessionStoreSignature(storePath) {
31013
31013
  try {
31014
- const stat = syncFs.statSync(storePath);
31014
+ const stat = fs$1.statSync(storePath);
31015
31015
  return {
31016
31016
  storePath,
31017
31017
  exists: true,
@@ -31093,7 +31093,7 @@ function listExistingAgentIdsFromDisk() {
31093
31093
  const root = resolveStateDir();
31094
31094
  const agentsDir = path.join(root, "agents");
31095
31095
  try {
31096
- return syncFs.readdirSync(agentsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => normalizeAgentId(entry.name)).filter(Boolean);
31096
+ return fs$1.readdirSync(agentsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => normalizeAgentId(entry.name)).filter(Boolean);
31097
31097
  } catch {
31098
31098
  return [];
31099
31099
  }
@@ -32612,14 +32612,14 @@ async function readWorkspaceFileWithGuards(params) {
32612
32612
  const identity = workspaceFileIdentity(opened.stat, opened.path);
32613
32613
  const cached = workspaceFileCache.get(params.filePath);
32614
32614
  if (cached && cached.identity === identity) {
32615
- syncFs.closeSync(opened.fd);
32615
+ fs$1.closeSync(opened.fd);
32616
32616
  return {
32617
32617
  ok: true,
32618
32618
  content: cached.content
32619
32619
  };
32620
32620
  }
32621
32621
  try {
32622
- const content = syncFs.readFileSync(opened.fd, "utf-8");
32622
+ const content = fs$1.readFileSync(opened.fd, "utf-8");
32623
32623
  workspaceFileCache.set(params.filePath, {
32624
32624
  content,
32625
32625
  identity
@@ -32636,7 +32636,7 @@ async function readWorkspaceFileWithGuards(params) {
32636
32636
  error
32637
32637
  };
32638
32638
  } finally {
32639
- syncFs.closeSync(opened.fd);
32639
+ fs$1.closeSync(opened.fd);
32640
32640
  }
32641
32641
  }
32642
32642
  function stripFrontMatter(content) {