@fased/fased 0.1.56 → 0.1.57

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 (359) hide show
  1. package/dist/acp/client.js +2 -2
  2. package/dist/acp/secret-file.js +2 -2
  3. package/dist/agents/agent-scope.js +2 -2
  4. package/dist/agents/apply-patch.js +8 -8
  5. package/dist/agents/auth-profiles/paths.js +2 -2
  6. package/dist/agents/auth-profiles/store.js +2 -2
  7. package/dist/agents/bash-tools.shared.js +2 -2
  8. package/dist/agents/cli-credentials.js +4 -4
  9. package/dist/agents/docs-path.js +3 -3
  10. package/dist/agents/embedded-pi-mcp.js +4 -4
  11. package/dist/agents/identity-avatar.js +3 -3
  12. package/dist/agents/identity-file.js +2 -2
  13. package/dist/agents/model-catalog-snapshot.js +124 -0
  14. package/dist/agents/openai-codex-app-server.js +35 -10
  15. package/dist/agents/openai-codex-runtime-component.js +39 -0
  16. package/dist/agents/pi-embedded-runner/compact.js +1 -1
  17. package/dist/agents/pi-embedded-runner/extra-params.js +28 -16
  18. package/dist/agents/pi-embedded-runner/run/attempt.js +1 -1
  19. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  20. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  21. package/dist/agents/pi-model-discovery.js +6 -6
  22. package/dist/agents/pi-project-settings.js +3 -3
  23. package/dist/agents/sandbox/fs-bridge.js +2 -2
  24. package/dist/agents/session-dirs.js +4 -4
  25. package/dist/agents/session-write-lock.js +13 -13
  26. package/dist/agents/shell-utils.js +5 -5
  27. package/dist/agents/skills/bundled-dir.js +4 -4
  28. package/dist/agents/skills/local-loader.js +6 -6
  29. package/dist/agents/skills/plugin-skills.js +2 -2
  30. package/dist/agents/skills/workspace.js +13 -13
  31. package/dist/agents/skills-install-download.js +7 -7
  32. package/dist/agents/skills-install-plan.js +2 -2
  33. package/dist/agents/skills-install.js +2 -2
  34. package/dist/agents/skills-status.js +2 -2
  35. package/dist/agents/subagent-depth.js +2 -2
  36. package/dist/agents/system-prompt-params.js +2 -2
  37. package/dist/agents/tools/session-status-tool.js +1 -1
  38. package/dist/agents/workspace.js +22 -22
  39. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  40. package/dist/auto-reply/reply/agent-runner.js +2 -2
  41. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  42. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  43. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  44. package/dist/auto-reply/reply/session.js +3 -3
  45. package/dist/auto-reply/skill-commands.js +3 -3
  46. package/dist/auto-reply/status.js +6 -6
  47. package/dist/brand.js +1 -1
  48. package/dist/browser/chrome.executables.js +3 -3
  49. package/dist/browser/chrome.js +3 -3
  50. package/dist/browser/chrome.profile-decoration.js +6 -6
  51. package/dist/browser/profiles-service.js +2 -2
  52. package/dist/browser/server-context.js +2 -2
  53. package/dist/browser/trash.js +4 -4
  54. package/dist/build-info.json +3 -3
  55. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  56. package/dist/canvas-host/server.js +4 -4
  57. package/dist/capabilities/catalog.js +3 -3
  58. package/dist/capabilities/install.js +43 -0
  59. package/dist/channels/plugins/catalog.js +3 -3
  60. package/dist/cli/browser-cli-extension.js +6 -6
  61. package/dist/cli/command-format.js +2 -2
  62. package/dist/cli/components-cli.js +9 -31
  63. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  64. package/dist/cli/dns-cli.js +9 -9
  65. package/dist/cli/gateway-cli/dev.js +5 -5
  66. package/dist/cli/gateway-cli/run.js +2 -2
  67. package/dist/cli/hooks-cli.js +6 -6
  68. package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
  69. package/dist/cli/memory-cli.js +7 -7
  70. package/dist/cli/nodes-media-utils.js +2 -2
  71. package/dist/cli/plugins-cli.js +5 -5
  72. package/dist/cli/secrets-cli.js +3 -3
  73. package/dist/cli/update-cli/update-command.js +50 -12
  74. package/dist/cli/windows-argv.js +2 -2
  75. package/dist/commands/agent.js +1 -1
  76. package/dist/commands/auth-choice.apply.openai.js +9 -0
  77. package/dist/commands/auth-choice.apply.plugin-provider.js +1 -1
  78. package/dist/commands/dashboard-link.js +3 -3
  79. package/dist/commands/doctor-install.js +5 -5
  80. package/dist/commands/doctor-memory-search.js +2 -2
  81. package/dist/commands/doctor-platform-notes.js +2 -2
  82. package/dist/commands/doctor-sandbox.js +2 -2
  83. package/dist/commands/doctor-state-integrity.js +23 -23
  84. package/dist/commands/doctor-workspace.js +3 -3
  85. package/dist/commands/doctor.js +3 -3
  86. package/dist/commands/managed-up.js +2 -2
  87. package/dist/commands/onboard-auth.credentials.js +3 -3
  88. package/dist/commands/onboard-channels.js +1 -1
  89. package/dist/commands/onboarding/plugin-install.js +4 -4
  90. package/dist/commands/sessions-cleanup.js +2 -2
  91. package/dist/commands/signal-install.js +6 -6
  92. package/dist/commands/status-all/channels.js +2 -2
  93. package/dist/commands/wallet.js +47 -47
  94. package/dist/config/cache-utils.js +2 -2
  95. package/dist/config/includes.js +5 -5
  96. package/dist/config/io.js +2 -2
  97. package/dist/config/paths.js +3 -3
  98. package/dist/config/sat-runtime-ids.js +3 -3
  99. package/dist/config/sessions/disk-budget.js +6 -6
  100. package/dist/config/sessions/paths.js +2 -2
  101. package/dist/config/sessions/store.js +17 -17
  102. package/dist/config/sessions/transcript.js +4 -4
  103. package/dist/config/talk.js +2 -2
  104. package/dist/control-ui/assets/{app-D7TXyNRi.js → app-DltSyY4Y.js} +1689 -1689
  105. package/dist/control-ui/assets/{index-BmSBom-w.js → index-D5JlBp7f.js} +3 -3
  106. package/dist/control-ui/index.html +1 -1
  107. package/dist/control-ui/version.json +1 -1
  108. package/dist/cron/service/store.js +2 -2
  109. package/dist/cron/store.js +6 -6
  110. package/dist/daemon/systemd-system.js +5 -5
  111. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  112. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  113. package/dist/gateway/control-ui-boot-check.js +6 -6
  114. package/dist/gateway/control-ui-login.js +7 -7
  115. package/dist/gateway/control-ui.js +9 -9
  116. package/dist/gateway/hooks-mapping.js +4 -4
  117. package/dist/gateway/protocol/schema/agents-models-skills.js +43 -1
  118. package/dist/gateway/server-discovery.js +2 -2
  119. package/dist/gateway/server-http.js +4 -4
  120. package/dist/gateway/server-methods/chat.js +3 -3
  121. package/dist/gateway/server-methods/hooks.js +1 -1
  122. package/dist/gateway/server-methods/models.js +12 -5
  123. package/dist/gateway/server-methods/plugins-marketplace.js +3 -3
  124. package/dist/gateway/server-methods/services.js +1 -1
  125. package/dist/gateway/server-methods/sessions.js +7 -7
  126. package/dist/gateway/server-methods/usage.js +2 -2
  127. package/dist/gateway/server.impl.js +3 -3
  128. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  129. package/dist/gateway/session-utils.fs.js +24 -24
  130. package/dist/gateway/session-utils.js +6 -6
  131. package/dist/gateway/sessions-patch.js +1 -1
  132. package/dist/hooks/bundled-dir.js +4 -4
  133. package/dist/hooks/gmail-setup-utils.js +6 -6
  134. package/dist/hooks/import-url.js +2 -2
  135. package/dist/hooks/loader.js +4 -4
  136. package/dist/hooks/workspace.js +7 -7
  137. package/dist/infra/archive.js +17 -17
  138. package/dist/infra/boundary-file-read.js +2 -2
  139. package/dist/infra/boundary-path.js +15 -15
  140. package/dist/infra/brew.js +2 -2
  141. package/dist/infra/control-ui-assets.js +14 -14
  142. package/dist/infra/device-auth-store.js +8 -8
  143. package/dist/infra/device-identity.js +8 -8
  144. package/dist/infra/dotenv.js +2 -2
  145. package/dist/infra/exec-approvals.js +8 -8
  146. package/dist/infra/exec-command-resolution.js +4 -4
  147. package/dist/infra/exec-safe-bin-trust.js +2 -2
  148. package/dist/infra/fased-root.js +5 -5
  149. package/dist/infra/fs-safe.js +14 -14
  150. package/dist/infra/gateway-lock.js +11 -11
  151. package/dist/infra/git-commit.js +5 -5
  152. package/dist/infra/git-root.js +4 -4
  153. package/dist/infra/hosted-runtime-artifact.js +3 -3
  154. package/dist/infra/is-main.js +2 -2
  155. package/dist/infra/json-file.js +7 -7
  156. package/dist/infra/outbound/delivery-queue.js +16 -16
  157. package/dist/infra/path-env.js +3 -3
  158. package/dist/infra/ports-lsof.js +4 -4
  159. package/dist/infra/provider-usage.auth.js +3 -3
  160. package/dist/infra/safe-open-sync.js +2 -2
  161. package/dist/infra/session-cost-usage.js +9 -9
  162. package/dist/infra/shell-env.js +2 -2
  163. package/dist/infra/state-migrations.fs.js +6 -6
  164. package/dist/infra/state-migrations.js +23 -23
  165. package/dist/infra/tmp-fased-dir.js +6 -6
  166. package/dist/infra/widearea-dns.js +3 -3
  167. package/dist/infra/wsl.js +2 -2
  168. package/dist/light-update-status.js +11 -11
  169. package/dist/line/accounts.js +2 -2
  170. package/dist/line/download.js +2 -2
  171. package/dist/logging/config.js +3 -3
  172. package/dist/logging/logger.js +7 -7
  173. package/dist/managed/federation.js +3 -3
  174. package/dist/managed/tunnel.js +3 -3
  175. package/dist/media/store.js +13 -13
  176. package/dist/media-understanding/runner.js +3 -3
  177. package/dist/memory/embeddings.js +2 -2
  178. package/dist/memory/internal.js +10 -10
  179. package/dist/memory/manager-sync-ops.js +7 -7
  180. package/dist/memory/repair-executor.js +17 -17
  181. package/dist/node-host/invoke-system-run-plan.js +8 -8
  182. package/dist/node-host/invoke.js +2 -2
  183. package/dist/node-host/runner.js +3 -3
  184. package/dist/pairing/pairing-store.js +3 -3
  185. package/dist/plugin-sdk/{accounts-DzWlKv1U.js → accounts-CmMwe9Dt.js} +1 -1
  186. package/dist/plugin-sdk/{actions-BplQVLL6.js → actions-DYViFQiX.js} +2 -2
  187. package/dist/plugin-sdk/{active-listener-x4MLhYUw.js → active-listener-DVbpcisf.js} +1 -1
  188. package/dist/plugin-sdk/{agent-scope-BbgPlhtw.js → agent-scope-CCjfjKoO.js} +1 -1
  189. package/dist/plugin-sdk/{audio-preflight-G8h3Sn8_.js → audio-preflight-D-Mfay8i.js} +31 -31
  190. package/dist/plugin-sdk/{audit-CWknklvI.js → audit-JImYFOzJ.js} +1 -1
  191. package/dist/plugin-sdk/{channel-access-configure-CD4QDN5E.js → channel-access-configure-B_qYjml8.js} +1 -1
  192. package/dist/plugin-sdk/{channel-access-a9Dnfw7-.js → channel-access-cxCK2mci.js} +1 -1
  193. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  194. package/dist/plugin-sdk/channel-plugin-common.js +5 -5
  195. package/dist/plugin-sdk/{chunk-B8EZkwiT.js → chunk-CF8nvZNj.js} +1 -1
  196. package/dist/plugin-sdk/{chunk-items-CEPklxGe.js → chunk-items-yLFoO571.js} +1 -1
  197. package/dist/plugin-sdk/command-status.js +31 -31
  198. package/dist/plugin-sdk/{commands-registry-BfEa4tFA.js → commands-registry-CK4KmMG0.js} +2 -2
  199. package/dist/plugin-sdk/{common-CbfckC19.js → common-Cky4hpqr.js} +1 -1
  200. package/dist/plugin-sdk/{config-Bt5GhnA-.js → config-Dbxj_jUP.js} +1125 -3
  201. package/dist/plugin-sdk/{config-schema-B9DKr6J5.js → config-schema-aKPMn6ML.js} +1749 -1387
  202. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  203. package/dist/plugin-sdk/discord.d.ts +4 -4
  204. package/dist/plugin-sdk/discord.js +22 -22
  205. package/dist/plugin-sdk/{filesystem-manager-BGGGrkiN.js → filesystem-manager-ZoHU8oA7.js} +2 -2
  206. package/dist/plugin-sdk/{fs-safe-xBqok6yR.js → fs-safe-g4g7GT02.js} +2 -2
  207. package/dist/plugin-sdk/{handle-action-DbzZFYnG.js → handle-action-BSNDD2Vc.js} +17 -17
  208. package/dist/plugin-sdk/{helpers-CluGKuIV.js → helpers-CDo2XBSr.js} +1 -1
  209. package/dist/plugin-sdk/{image-ops-CUaLtIFj.js → image-ops-DbeBxbn4.js} +1 -1
  210. package/dist/plugin-sdk/index.d.ts +15 -15
  211. package/dist/plugin-sdk/index.js +33 -33
  212. package/dist/plugin-sdk/json-store.js +6 -6
  213. package/dist/plugin-sdk/{login-DJuHYDiK.js → login-CWXvFTd8.js} +3 -3
  214. package/dist/plugin-sdk/{login-qr-CbHL5ayf.js → login-qr-CJB2zjmM.js} +4 -4
  215. package/dist/plugin-sdk/{manager-oHAvZCT3.js → manager-CbiFFLKS.js} +4 -4
  216. package/dist/plugin-sdk/{markdown-tables-Mkx7k92Y.js → markdown-tables-Bskt9r8i.js} +1 -1
  217. package/dist/plugin-sdk/{media-CA8sTmVE.js → media-B3aAg5rh.js} +4 -4
  218. package/dist/plugin-sdk/{memory-search-VFll-AIb.js → memory-search-DTjIMw8J.js} +1 -1
  219. package/dist/plugin-sdk/{monitor-CZrN9pev.js → monitor-BJs6z7AT.js} +35 -35
  220. package/dist/plugin-sdk/{monitor-CmwGqNyV.js → monitor-BYGbTI5V.js} +36 -36
  221. package/dist/plugin-sdk/{openresponses-http-CWOd4war.js → openresponses-http-BGCl2dS2.js} +31 -31
  222. package/dist/plugin-sdk/{optional-runtime-dependency-DKmk9PZa.js → optional-runtime-dependency-BlTVkcAg.js} +1 -1
  223. package/dist/plugin-sdk/{outbound-0oN9IfNw.js → outbound-CIemga5_.js} +6 -6
  224. package/dist/plugin-sdk/{outbound-attachment-DdVkqUzE.js → outbound-attachment-2RckWqrk.js} +2 -2
  225. package/dist/plugin-sdk/{pairing-message-BMkkS038.d.ts → pairing-message-C403mq4K.d.ts} +1 -1
  226. package/dist/plugin-sdk/{pairing-message-ClqhfCUk.js → pairing-message-r-VQfhFB.js} +1 -1
  227. package/dist/plugin-sdk/{pairing-store-B01mCSct.js → pairing-store-uPnLfGgB.js} +2 -2
  228. package/dist/plugin-sdk/{path-alias-guards-BJZD5JMJ.js → path-alias-guards-DjgDArrp.js} +1 -1
  229. package/dist/plugin-sdk/{pi-model-discovery-Buz0JC1Y.js → pi-model-discovery-BpEilAym.js} +1 -1
  230. package/dist/plugin-sdk/{pi-model-discovery-runtime-DuwuoteY.js → pi-model-discovery-runtime-DwNdFaz-.js} +3 -3
  231. package/dist/plugin-sdk/{probe--7xtfzMm.js → probe-CJb5uR8B.js} +1 -1
  232. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  233. package/dist/plugin-sdk/{pw-ai-B0domrii.js → pw-ai-H7UgunQQ.js} +6 -6
  234. package/dist/plugin-sdk/{qmd-manager-CFFeM4Fl.js → qmd-manager-DSyx77KY.js} +1 -1
  235. package/dist/plugin-sdk/{replies-1macZ1mZ.js → replies-CKMwkH4G.js} +2 -2
  236. package/dist/plugin-sdk/{reply-prefix-ClpxvL_w.js → reply-prefix-CeVw7Mn2.js} +1 -1
  237. package/dist/plugin-sdk/{probe-xY3Ky0Tx.js → resolve-channels-_-nV-EK2.js} +3 -2
  238. package/dist/plugin-sdk/{resolve-outbound-target-BdH6LUoW.js → resolve-outbound-target-B68fSoGi.js} +1 -1
  239. package/dist/plugin-sdk/{resolve-route-CkNIKKEW.js → resolve-route-B8fOfihG.js} +2 -2
  240. package/dist/plugin-sdk/{retry-policy-9ybIh4Fq.js → retry-policy-B6GQldxB.js} +1 -1
  241. package/dist/plugin-sdk/{runtime-dependency-CIw9t7-k.js → runtime-dependency-DlqVSsSs.js} +4 -4
  242. package/dist/plugin-sdk/{runtime-Dy420wBu.js → runtime-nVJl3PlS.js} +4 -4
  243. package/dist/plugin-sdk/{sandbox-paths-w64tYl0v.js → sandbox-paths-Dx2lUqCu.js} +2 -2
  244. package/dist/plugin-sdk/sat-runtime.d.ts +2 -2
  245. package/dist/plugin-sdk/sat-runtime.js +31 -31
  246. package/dist/plugin-sdk/{send-BQUtCJFW.js → send-BCJ4hi3t.js} +8 -8
  247. package/dist/plugin-sdk/{send-DPJIIYAs.js → send-BHokB4TR.js} +6 -6
  248. package/dist/plugin-sdk/{send-2VcOMTN5.js → send-CPK_HlYW.js} +5 -5
  249. package/dist/plugin-sdk/{send-J4JWKP62.js → send-D3DQOg2a.js} +6 -6
  250. package/dist/plugin-sdk/{send-Dqes9tdU.js → send-hSu1HWms.js} +7 -7
  251. package/dist/plugin-sdk/{session-C_n2S5ub.js → session-DQ4Dr-mf.js} +2 -2
  252. package/dist/plugin-sdk/{skill-commands-B7wx9ax8.js → skill-commands-CmdoKLh_.js} +4 -4
  253. package/dist/plugin-sdk/{slack-BouRQG-W.js → slack-B70NHpMF.js} +47 -47
  254. package/dist/plugin-sdk/{slack-actions-CasHVtiq.js → slack-actions-fSmP981b.js} +14 -14
  255. package/dist/plugin-sdk/slack.d.ts +4 -4
  256. package/dist/plugin-sdk/slack.js +12 -12
  257. package/dist/plugin-sdk/{sticker-cache-BvGEUas3.js → sticker-cache-B4dG2sKU.js} +3 -3
  258. package/dist/plugin-sdk/{tables-CjlQJV4r.js → tables-EX4Hy-a-.js} +1 -1
  259. package/dist/plugin-sdk/{targets-QfP164Dh.js → targets-BeGUCGWK.js} +1 -1
  260. package/dist/plugin-sdk/{telegram-actions-CwYjV6Db.js → telegram-actions-CM8SJgc9.js} +34 -34
  261. package/dist/plugin-sdk/telegram.d.ts +4 -4
  262. package/dist/plugin-sdk/telegram.js +9 -9
  263. package/dist/plugin-sdk/{thread-bindings.lifecycle-DU4iX_Jr.js → thread-bindings.lifecycle-tHK_1mvp.js} +3 -3
  264. package/dist/plugin-sdk/{thread-bindings.state-BgYWFjNF.js → thread-bindings.state-D7xG1GHu.js} +2 -2
  265. package/dist/plugin-sdk/{tmp-fased-dir-BdFQvrvw.d.ts → tmp-fased-dir-Ouj58axY.d.ts} +1 -1
  266. package/dist/plugin-sdk/{types-BYDL6dQj.d.ts → types-B4hj6HgR.d.ts} +1 -1
  267. package/dist/plugin-sdk/{types-CLIvQaVg.d.ts → types-dWZFX1fk.d.ts} +2 -2
  268. package/dist/plugin-sdk/{web-D0yENDve.js → web-BFolfZ3i.js} +36 -36
  269. package/dist/plugin-sdk/{whatsapp-actions-BT2nPLyo.js → whatsapp-actions-CYmleHCz.js} +16 -16
  270. package/dist/plugin-sdk/{whatsapp-heartbeat-CiABSZ6G.js → whatsapp-heartbeat-BEwm4GK3.js} +2 -2
  271. package/dist/plugin-sdk/whatsapp.d.ts +9 -9
  272. package/dist/plugin-sdk/whatsapp.js +13 -13
  273. package/dist/plugin-sdk/{wsl-B_ojyEtC.js → wsl-BtMDzMv5.js} +3 -3
  274. package/dist/plugin-sdk/{zod-schema.providers-core-CIzCjXH9.d.ts → zod-schema.providers-core-FaYR6KdD.d.ts} +61 -61
  275. package/dist/plugins/bundled-dir.js +3 -3
  276. package/dist/plugins/discovery.js +11 -11
  277. package/dist/plugins/lifecycle.js +1 -1
  278. package/dist/plugins/loader.js +13 -13
  279. package/dist/plugins/manifest-registry.js +28 -2
  280. package/dist/plugins/manifest.js +6 -4
  281. package/dist/plugins/marketplace.js +1 -1
  282. package/dist/plugins/path-safety.js +3 -3
  283. package/dist/plugins/status-cache.js +9 -9
  284. package/dist/plugins/update.js +4 -4
  285. package/dist/plugins/web-search-install-catalog.js +3 -3
  286. package/dist/providers/openai-codex-model-discovery.js +11 -1
  287. package/dist/providers/runtime-model-catalog.js +2 -2
  288. package/dist/secrets/apply.js +16 -16
  289. package/dist/secrets/audit.js +11 -11
  290. package/dist/secrets/shared.js +9 -9
  291. package/dist/security/scan-paths.js +2 -2
  292. package/dist/shared/config-eval.js +2 -2
  293. package/dist/shared/pid-alive.js +2 -2
  294. package/dist/tasks/standing-orders.js +5 -5
  295. package/dist/tasks/task-flow-registry.js +5 -5
  296. package/dist/tasks/task-registry.js +5 -5
  297. package/dist/tasks/workflow-definitions.js +6 -6
  298. package/dist/telegram/token.js +5 -5
  299. package/dist/utils.js +5 -5
  300. package/dist/wallet/local-socket-signer-broker.js +16 -16
  301. package/dist/wallet/providers/embedded-keystore-adapter.js +5 -5
  302. package/dist/wallet/providers/local-socket-signer-adapter.js +2 -2
  303. package/dist/wallet/wallet-approval-auth.js +5 -5
  304. package/dist/wallet/wallet-audit-log.js +5 -5
  305. package/dist/wallet/wallet-custody.js +21 -21
  306. package/dist/wallet/wallet-inbound-events.js +5 -5
  307. package/dist/wallet/wallet-observability.js +5 -5
  308. package/dist/wallet/wallet-policy.js +9 -9
  309. package/dist/wallet/wallet-provider-registry.js +7 -7
  310. package/dist/wallet/wallet-runtime-config.js +3 -3
  311. package/dist/wallet/wallet-secrets-store.js +22 -22
  312. package/dist/wallet/wallet-send-approvals.js +5 -5
  313. package/dist/wallet/wallet-settlement-links.js +5 -5
  314. package/dist/web/accounts.js +3 -3
  315. package/dist/web/auth-store.js +18 -18
  316. package/dist/web/session.js +4 -4
  317. package/dist/wizard/host-security-capability.js +2 -2
  318. package/dist/wizard/onboarding.finalize.js +1 -1
  319. package/dist/wizard/onboarding.host-security.js +7 -7
  320. package/dist/wizard/onboarding.js +7 -7
  321. package/dist/wizard/onboarding.wallet.js +44 -44
  322. package/extensions/acpx/package.json +1 -1
  323. package/extensions/bluebubbles/package.json +1 -1
  324. package/extensions/copilot-proxy/package.json +1 -1
  325. package/extensions/diagnostics-otel/package.json +1 -1
  326. package/extensions/fased-federation/package.json +1 -1
  327. package/extensions/google-gemini-cli-auth/package.json +1 -1
  328. package/extensions/imessage/package.json +1 -1
  329. package/extensions/irc/package.json +1 -1
  330. package/extensions/line/package.json +1 -1
  331. package/extensions/llm-task/package.json +1 -1
  332. package/extensions/lobster/package.json +1 -1
  333. package/extensions/matrix/CHANGELOG.md +6 -0
  334. package/extensions/matrix/package.json +1 -1
  335. package/extensions/mattermost/package.json +1 -1
  336. package/extensions/memory-core/package.json +2 -2
  337. package/extensions/memory-lancedb/package.json +1 -1
  338. package/extensions/minimax-portal-auth/package.json +1 -1
  339. package/extensions/msteams/CHANGELOG.md +6 -0
  340. package/extensions/msteams/package.json +1 -1
  341. package/extensions/nextcloud-talk/package.json +1 -1
  342. package/extensions/nostr/CHANGELOG.md +6 -0
  343. package/extensions/nostr/package.json +1 -1
  344. package/extensions/open-prose/package.json +1 -1
  345. package/extensions/sat-mining/package.json +1 -1
  346. package/extensions/signal/package.json +1 -1
  347. package/extensions/synology-chat/package.json +1 -1
  348. package/extensions/tlon/package.json +1 -1
  349. package/extensions/twitch/CHANGELOG.md +6 -0
  350. package/extensions/twitch/package.json +1 -1
  351. package/extensions/voice-call/CHANGELOG.md +6 -0
  352. package/extensions/voice-call/package.json +1 -1
  353. package/extensions/zalo/CHANGELOG.md +6 -0
  354. package/extensions/zalo/package.json +1 -1
  355. package/extensions/zalouser/CHANGELOG.md +6 -0
  356. package/extensions/zalouser/package.json +1 -1
  357. package/package.json +1 -1
  358. package/dist/plugin-sdk/resolve-channels-CwB2_019.js +0 -4
  359. /package/dist/plugin-sdk/{resolve-users-Cxb5wpAQ.js → resolve-users-DN9VQBwv.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId as normalizeAccountId$1 } from "../routing/account-id.js";
2
2
  import { resolveAccountEntry } from "../routing/account-lookup.js";
3
- import syncFs from "node:fs";
3
+ import fs from "node:fs";
4
4
 
5
5
  //#region src/line/accounts.ts
6
6
  function readFileIfExists(filePath) {
@@ -8,7 +8,7 @@ function readFileIfExists(filePath) {
8
8
  return undefined;
9
9
  }
10
10
  try {
11
- return syncFs.readFileSync(filePath, "utf-8").trim();
11
+ return fs.readFileSync(filePath, "utf-8").trim();
12
12
  } catch {
13
13
  return undefined;
14
14
  }
@@ -1,7 +1,7 @@
1
1
  import { logVerbose } from "../globals.js";
2
2
  import { buildRandomTempFilePath } from "../plugin-sdk/temp-path.js";
3
3
  import { formatLineIdForLog } from "./logging.js";
4
- import syncFs from "node:fs";
4
+ import fs from "node:fs";
5
5
  import { messagingApi } from "@line/bot-sdk";
6
6
 
7
7
  //#region src/line/download.ts
@@ -24,7 +24,7 @@ async function downloadLineMedia(messageId, channelAccessToken, maxBytes = 10 *
24
24
  prefix: "line-media",
25
25
  extension: ext
26
26
  });
27
- await syncFs.promises.writeFile(filePath, buffer);
27
+ await fs.promises.writeFile(filePath, buffer);
28
28
  logVerbose(`line: downloaded media ${formatLineIdForLog(messageId)} to ${filePath} (${buffer.length} bytes)`);
29
29
  return {
30
30
  path: filePath,
@@ -1,15 +1,15 @@
1
1
  import { resolveConfigPath } from "../config/paths.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
  import JSON5 from "json5";
4
4
 
5
5
  //#region src/logging/config.ts
6
6
  function readLoggingConfig() {
7
7
  const configPath = resolveConfigPath();
8
8
  try {
9
- if (!syncFs.existsSync(configPath)) {
9
+ if (!fs.existsSync(configPath)) {
10
10
  return undefined;
11
11
  }
12
- const raw = syncFs.readFileSync(configPath, "utf-8");
12
+ const raw = fs.readFileSync(configPath, "utf-8");
13
13
  const parsed = JSON5.parse(raw);
14
14
  const logging = parsed?.logging;
15
15
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) {
@@ -4,7 +4,7 @@ import { levelToMinLevel, normalizeLogLevel } from "./levels.js";
4
4
  import { loggingState } from "./state.js";
5
5
  import { resolveEnvLogLevelOverride } from "./env-log-level.js";
6
6
  import { resolveNodeRequireFromMeta } from "./node-require.js";
7
- import syncFs from "node:fs";
7
+ import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import { Logger } from "tslog";
10
10
 
@@ -66,7 +66,7 @@ function isFileLogLevelEnabled(level) {
66
66
  return levelToMinLevel(level) <= levelToMinLevel(settings.level);
67
67
  }
68
68
  function buildLogger(settings) {
69
- syncFs.mkdirSync(path.dirname(settings.file), { recursive: true });
69
+ fs.mkdirSync(path.dirname(settings.file), { recursive: true });
70
70
  if (isRollingPath(settings.file)) {
71
71
  pruneOldRollingLogs(path.dirname(settings.file));
72
72
  }
@@ -119,14 +119,14 @@ function resolveMaxLogFileBytes(raw) {
119
119
  }
120
120
  function getCurrentLogFileBytes(file) {
121
121
  try {
122
- return syncFs.statSync(file).size;
122
+ return fs.statSync(file).size;
123
123
  } catch {
124
124
  return 0;
125
125
  }
126
126
  }
127
127
  function appendLogLine(file, line) {
128
128
  try {
129
- syncFs.appendFileSync(file, line, { encoding: "utf8" });
129
+ fs.appendFileSync(file, line, { encoding: "utf8" });
130
130
  return true;
131
131
  } catch {
132
132
  return false;
@@ -206,7 +206,7 @@ function isRollingPath(file) {
206
206
  }
207
207
  function pruneOldRollingLogs(dir) {
208
208
  try {
209
- const entries = syncFs.readdirSync(dir, { withFileTypes: true });
209
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
210
210
  const cutoff = Date.now() - MAX_LOG_AGE_MS;
211
211
  for (const entry of entries) {
212
212
  if (!entry.isFile()) {
@@ -217,9 +217,9 @@ function pruneOldRollingLogs(dir) {
217
217
  }
218
218
  const fullPath = path.join(dir, entry.name);
219
219
  try {
220
- const stat = syncFs.statSync(fullPath);
220
+ const stat = fs.statSync(fullPath);
221
221
  if (stat.mtimeMs < cutoff) {
222
- syncFs.rmSync(fullPath, { force: true });
222
+ fs.rmSync(fullPath, { force: true });
223
223
  }
224
224
  } catch {}
225
225
  }
@@ -1,5 +1,5 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/managed/federation.ts
@@ -20,7 +20,7 @@ function resolveFederationAccessTokenPath(env = process.env) {
20
20
  }
21
21
  function readManagedFederationTokenSummary(env = process.env) {
22
22
  const tokenPath = resolveFederationAccessTokenPath(env);
23
- if (!syncFs.existsSync(tokenPath)) {
23
+ if (!fs.existsSync(tokenPath)) {
24
24
  return {
25
25
  path: tokenPath,
26
26
  exists: false,
@@ -28,7 +28,7 @@ function readManagedFederationTokenSummary(env = process.env) {
28
28
  };
29
29
  }
30
30
  try {
31
- const payload = JSON.parse(syncFs.readFileSync(tokenPath, "utf8"));
31
+ const payload = JSON.parse(fs.readFileSync(tokenPath, "utf8"));
32
32
  const agentSlug = typeof payload.agentSlug === "string" ? payload.agentSlug : undefined;
33
33
  const publicUrl = resolveManagedFederationPublicUrl({
34
34
  publicUrl: typeof payload.publicUrl === "string" ? payload.publicUrl : undefined,
@@ -1,11 +1,11 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/managed/tunnel.ts
6
6
  function readManagedReservationSummaries(env = process.env) {
7
7
  const stateDir = resolveStateDir(env);
8
- const entries = syncFs.readdirSync(stateDir, { withFileTypes: true });
8
+ const entries = fs.readdirSync(stateDir, { withFileTypes: true });
9
9
  const summaries = [];
10
10
  for (const entry of entries) {
11
11
  if (!entry.isFile() || !entry.name.endsWith(".zrok-reservation")) {
@@ -13,7 +13,7 @@ function readManagedReservationSummaries(env = process.env) {
13
13
  }
14
14
  const filePath = path.join(stateDir, entry.name);
15
15
  try {
16
- const token = syncFs.readFileSync(filePath, "utf8").trim();
16
+ const token = fs.readFileSync(filePath, "utf8").trim();
17
17
  summaries.push({
18
18
  path: filePath,
19
19
  slug: entry.name.slice(0, -".zrok-reservation".length),
@@ -4,7 +4,7 @@ import { detectMime, extensionForMime } from "./mime.js";
4
4
  import { SafeOpenError, readLocalFileSafely } from "../infra/fs-safe.js";
5
5
  import { createWriteStream } from "node:fs";
6
6
  import path from "node:path";
7
- import fs from "node:fs/promises";
7
+ import fs$1 from "node:fs/promises";
8
8
  import crypto from "node:crypto";
9
9
  import { request } from "node:http";
10
10
  import { pipeline } from "node:stream/promises";
@@ -62,7 +62,7 @@ function getMediaDir() {
62
62
  }
63
63
  async function ensureMediaDir() {
64
64
  const mediaDir = resolveMediaDir();
65
- await fs.mkdir(mediaDir, {
65
+ await fs$1.mkdir(mediaDir, {
66
66
  recursive: true,
67
67
  mode: 448
68
68
  });
@@ -70,24 +70,24 @@ async function ensureMediaDir() {
70
70
  }
71
71
  async function cleanOldMedia(ttlMs = DEFAULT_TTL_MS) {
72
72
  const mediaDir = await ensureMediaDir();
73
- const entries = await fs.readdir(mediaDir).catch(() => []);
73
+ const entries = await fs$1.readdir(mediaDir).catch(() => []);
74
74
  const now = Date.now();
75
75
  const removeExpiredFilesInDir = async (dir) => {
76
- const dirEntries = await fs.readdir(dir).catch(() => []);
76
+ const dirEntries = await fs$1.readdir(dir).catch(() => []);
77
77
  await Promise.all(dirEntries.map(async (entry) => {
78
78
  const full = path.join(dir, entry);
79
- const stat = await fs.stat(full).catch(() => null);
79
+ const stat = await fs$1.stat(full).catch(() => null);
80
80
  if (!stat || !stat.isFile()) {
81
81
  return;
82
82
  }
83
83
  if (now - stat.mtimeMs > ttlMs) {
84
- await fs.rm(full).catch(() => {});
84
+ await fs$1.rm(full).catch(() => {});
85
85
  }
86
86
  }));
87
87
  };
88
88
  await Promise.all(entries.map(async (file) => {
89
89
  const full = path.join(mediaDir, file);
90
- const stat = await fs.stat(full).catch(() => null);
90
+ const stat = await fs$1.stat(full).catch(() => null);
91
91
  if (!stat) {
92
92
  return;
93
93
  }
@@ -96,7 +96,7 @@ async function cleanOldMedia(ttlMs = DEFAULT_TTL_MS) {
96
96
  return;
97
97
  }
98
98
  if (stat.isFile() && now - stat.mtimeMs > ttlMs) {
99
- await fs.rm(full).catch(() => {});
99
+ await fs$1.rm(full).catch(() => {});
100
100
  }
101
101
  }));
102
102
  }
@@ -190,7 +190,7 @@ function toSaveMediaSourceError(err) {
190
190
  async function saveMediaSource(source, headers, subdir = "") {
191
191
  const baseDir = resolveMediaDir();
192
192
  const dir = subdir ? path.join(baseDir, subdir) : baseDir;
193
- await fs.mkdir(dir, {
193
+ await fs$1.mkdir(dir, {
194
194
  recursive: true,
195
195
  mode: 448
196
196
  });
@@ -207,7 +207,7 @@ async function saveMediaSource(source, headers, subdir = "") {
207
207
  const ext = extensionForMime(mime) ?? path.extname(new URL(source).pathname);
208
208
  const id = ext ? `${baseId}${ext}` : baseId;
209
209
  const finalDest = path.join(dir, id);
210
- await fs.rename(tempDest, finalDest);
210
+ await fs$1.rename(tempDest, finalDest);
211
211
  return {
212
212
  id,
213
213
  path: finalDest,
@@ -227,7 +227,7 @@ async function saveMediaSource(source, headers, subdir = "") {
227
227
  const ext = extensionForMime(mime) ?? path.extname(source);
228
228
  const id = ext ? `${baseId}${ext}` : baseId;
229
229
  const dest = path.join(dir, id);
230
- await fs.writeFile(dest, buffer, { mode: 384 });
230
+ await fs$1.writeFile(dest, buffer, { mode: 384 });
231
231
  return {
232
232
  id,
233
233
  path: dest,
@@ -246,7 +246,7 @@ async function saveMediaBuffer(buffer, contentType, subdir = "inbound", maxBytes
246
246
  throw new Error(`Media exceeds ${(maxBytes / (1024 * 1024)).toFixed(0)}MB limit`);
247
247
  }
248
248
  const dir = path.join(resolveMediaDir(), subdir);
249
- await fs.mkdir(dir, {
249
+ await fs$1.mkdir(dir, {
250
250
  recursive: true,
251
251
  mode: 448
252
252
  });
@@ -266,7 +266,7 @@ async function saveMediaBuffer(buffer, contentType, subdir = "inbound", maxBytes
266
266
  id = ext ? `${uuid}${ext}` : uuid;
267
267
  }
268
268
  const dest = path.join(dir, id);
269
- await fs.writeFile(dest, buffer, { mode: 384 });
269
+ await fs$1.writeFile(dest, buffer, { mode: 384 });
270
270
  return {
271
271
  id,
272
272
  path: dest,
@@ -16,7 +16,7 @@ import { buildModelDecision, formatDecisionSummary, runCliEntry, runProviderEntr
16
16
  import { constants } from "node:fs";
17
17
  import os from "node:os";
18
18
  import path from "node:path";
19
- import fs from "node:fs/promises";
19
+ import fs$1 from "node:fs/promises";
20
20
 
21
21
  //#region src/media-understanding/runner.ts
22
22
  function buildProviderRegistry(overrides) {
@@ -70,14 +70,14 @@ function candidateBinaryNames(name) {
70
70
  }
71
71
  async function isExecutable(filePath) {
72
72
  try {
73
- const stat = await fs.stat(filePath);
73
+ const stat = await fs$1.stat(filePath);
74
74
  if (!stat.isFile()) {
75
75
  return false;
76
76
  }
77
77
  if (process.platform === "win32") {
78
78
  return true;
79
79
  }
80
- await fs.access(filePath, constants.X_OK);
80
+ await fs$1.access(filePath, constants.X_OK);
81
81
  return true;
82
82
  } catch {
83
83
  return false;
@@ -5,7 +5,7 @@ import { createMistralEmbeddingProvider } from "./embeddings-mistral.js";
5
5
  import { createOpenAiEmbeddingProvider } from "./embeddings-openai.js";
6
6
  import { createVoyageEmbeddingProvider } from "./embeddings-voyage.js";
7
7
  import { importNodeLlamaCpp } from "./node-llama.js";
8
- import syncFs from "node:fs";
8
+ import fs from "node:fs";
9
9
 
10
10
  //#region src/memory/embeddings.ts
11
11
  function sanitizeAndNormalizeEmbedding(vec) {
@@ -33,7 +33,7 @@ function canAutoSelectLocal(options) {
33
33
  }
34
34
  const resolved = resolveUserPath(modelPath);
35
35
  try {
36
- return syncFs.statSync(resolved).isFile();
36
+ return fs.statSync(resolved).isFile();
37
37
  } catch {
38
38
  return false;
39
39
  }
@@ -1,14 +1,14 @@
1
1
  import { runTasksWithConcurrency } from "../utils/run-with-concurrency.js";
2
2
  import { isFileMissingError } from "./fs-utils.js";
3
- import syncFs from "node:fs";
3
+ import fs from "node:fs";
4
4
  import path from "node:path";
5
- import fs from "node:fs/promises";
5
+ import fs$1 from "node:fs/promises";
6
6
  import crypto from "node:crypto";
7
7
 
8
8
  //#region src/memory/internal.ts
9
9
  function ensureDir(dir) {
10
10
  try {
11
- syncFs.mkdirSync(dir, { recursive: true });
11
+ fs.mkdirSync(dir, { recursive: true });
12
12
  } catch {}
13
13
  return dir;
14
14
  }
@@ -34,7 +34,7 @@ function isMemoryPath(relPath) {
34
34
  return normalized.startsWith("memory/");
35
35
  }
36
36
  async function walkDir(dir, files) {
37
- const entries = await fs.readdir(dir, { withFileTypes: true });
37
+ const entries = await fs$1.readdir(dir, { withFileTypes: true });
38
38
  for (const entry of entries) {
39
39
  const full = path.join(dir, entry.name);
40
40
  if (entry.isSymbolicLink()) {
@@ -60,7 +60,7 @@ async function listMemoryFiles(workspaceDir, extraPaths) {
60
60
  const memoryDir = path.join(workspaceDir, "memory");
61
61
  const addMarkdownFile = async (absPath) => {
62
62
  try {
63
- const stat = await fs.lstat(absPath);
63
+ const stat = await fs$1.lstat(absPath);
64
64
  if (stat.isSymbolicLink() || !stat.isFile()) {
65
65
  return;
66
66
  }
@@ -73,7 +73,7 @@ async function listMemoryFiles(workspaceDir, extraPaths) {
73
73
  await addMarkdownFile(memoryFile);
74
74
  await addMarkdownFile(altMemoryFile);
75
75
  try {
76
- const dirStat = await fs.lstat(memoryDir);
76
+ const dirStat = await fs$1.lstat(memoryDir);
77
77
  if (!dirStat.isSymbolicLink() && dirStat.isDirectory()) {
78
78
  await walkDir(memoryDir, result);
79
79
  }
@@ -82,7 +82,7 @@ async function listMemoryFiles(workspaceDir, extraPaths) {
82
82
  if (normalizedExtraPaths.length > 0) {
83
83
  for (const inputPath of normalizedExtraPaths) {
84
84
  try {
85
- const stat = await fs.lstat(inputPath);
85
+ const stat = await fs$1.lstat(inputPath);
86
86
  if (stat.isSymbolicLink()) {
87
87
  continue;
88
88
  }
@@ -104,7 +104,7 @@ async function listMemoryFiles(workspaceDir, extraPaths) {
104
104
  for (const entry of result) {
105
105
  let key = entry;
106
106
  try {
107
- key = await fs.realpath(entry);
107
+ key = await fs$1.realpath(entry);
108
108
  } catch {}
109
109
  if (seen.has(key)) {
110
110
  continue;
@@ -120,7 +120,7 @@ function hashText(value) {
120
120
  async function buildFileEntry(absPath, workspaceDir) {
121
121
  let stat;
122
122
  try {
123
- stat = await fs.stat(absPath);
123
+ stat = await fs$1.stat(absPath);
124
124
  } catch (err) {
125
125
  if (isFileMissingError(err)) {
126
126
  return null;
@@ -129,7 +129,7 @@ async function buildFileEntry(absPath, workspaceDir) {
129
129
  }
130
130
  let content;
131
131
  try {
132
- content = await fs.readFile(absPath, "utf-8");
132
+ content = await fs$1.readFile(absPath, "utf-8");
133
133
  } catch (err) {
134
134
  if (isFileMissingError(err)) {
135
135
  return null;
@@ -14,9 +14,9 @@ import { ensureMemoryIndexSchema } from "./memory-schema.js";
14
14
  import { buildSessionEntry, listSessionFilesForAgent, sessionPathForFile } from "./session-files.js";
15
15
  import { loadSqliteVecExtension } from "./sqlite-vec.js";
16
16
  import { requireNodeSqlite } from "./sqlite.js";
17
- import syncFs from "node:fs";
17
+ import fs from "node:fs";
18
18
  import path from "node:path";
19
- import fs from "node:fs/promises";
19
+ import fs$1 from "node:fs/promises";
20
20
  import { randomUUID } from "node:crypto";
21
21
  import chokidar from "chokidar";
22
22
 
@@ -207,7 +207,7 @@ var MemoryManagerSyncOps = class {
207
207
  const source = `${sourceBase}${suffix}`;
208
208
  const target = `${targetBase}${suffix}`;
209
209
  try {
210
- await fs.rename(source, target);
210
+ await fs$1.rename(source, target);
211
211
  } catch (err) {
212
212
  if (err.code !== "ENOENT") {
213
213
  throw err;
@@ -221,7 +221,7 @@ var MemoryManagerSyncOps = class {
221
221
  "-wal",
222
222
  "-shm"
223
223
  ];
224
- await Promise.all(suffixes.map((suffix) => fs.rm(`${basePath}${suffix}`, { force: true })));
224
+ await Promise.all(suffixes.map((suffix) => fs$1.rm(`${basePath}${suffix}`, { force: true })));
225
225
  }
226
226
  ensureSchema() {
227
227
  const result = ensureMemoryIndexSchema({
@@ -248,7 +248,7 @@ var MemoryManagerSyncOps = class {
248
248
  const additionalPaths = normalizeExtraMemoryPaths(this.workspaceDir, this.settings.extraPaths);
249
249
  for (const entry of additionalPaths) {
250
250
  try {
251
- const stat = syncFs.lstatSync(entry);
251
+ const stat = fs.lstatSync(entry);
252
252
  if (stat.isSymbolicLink()) {
253
253
  continue;
254
254
  }
@@ -342,7 +342,7 @@ var MemoryManagerSyncOps = class {
342
342
  }
343
343
  let stat;
344
344
  try {
345
- stat = await fs.stat(sessionFile);
345
+ stat = await fs$1.stat(sessionFile);
346
346
  } catch {
347
347
  return null;
348
348
  }
@@ -394,7 +394,7 @@ var MemoryManagerSyncOps = class {
394
394
  }
395
395
  let handle;
396
396
  try {
397
- handle = await fs.open(absPath, "r");
397
+ handle = await fs$1.open(absPath, "r");
398
398
  } catch (err) {
399
399
  if (isFileMissingError(err)) {
400
400
  return 0;
@@ -8,9 +8,9 @@ import { evaluateMemoryRepairExecutorGate } from "./repair-executor-gate.js";
8
8
  import { evaluateMemoryRepairExecutionLockAdmission } from "./repair-executor-lock-contract.js";
9
9
  import "./index.js";
10
10
  import { buildMemoryInventory, previewMemoryInventoryRepair } from "./inventory.js";
11
- import syncFs from "node:fs";
11
+ import fs from "node:fs";
12
12
  import path from "node:path";
13
- import fs from "node:fs/promises";
13
+ import fs$1 from "node:fs/promises";
14
14
  import crypto from "node:crypto";
15
15
 
16
16
  //#region src/memory/repair-executor.ts
@@ -389,11 +389,11 @@ async function collectFsPathStates(auditPlan) {
389
389
  }
390
390
  async function inspectPath(pathname) {
391
391
  try {
392
- const stat = await fs.lstat(pathname);
392
+ const stat = await fs$1.lstat(pathname);
393
393
  return {
394
394
  path: pathname,
395
395
  kind: kindFromStats(stat),
396
- ...stat.isSymbolicLink() ? {} : { realPath: await fs.realpath(pathname).catch(() => pathname) },
396
+ ...stat.isSymbolicLink() ? {} : { realPath: await fs$1.realpath(pathname).catch(() => pathname) },
397
397
  ...stat.isFile() ? { linkCount: stat.nlink } : {}
398
398
  };
399
399
  } catch (err) {
@@ -413,11 +413,11 @@ async function inspectPath(pathname) {
413
413
  }
414
414
  async function inspectNode(pathname) {
415
415
  try {
416
- const stat = await fs.lstat(pathname);
416
+ const stat = await fs$1.lstat(pathname);
417
417
  return {
418
418
  path: pathname,
419
419
  kind: kindFromStats(stat),
420
- ...stat.isSymbolicLink() ? {} : { realPath: await fs.realpath(pathname).catch(() => pathname) },
420
+ ...stat.isSymbolicLink() ? {} : { realPath: await fs$1.realpath(pathname).catch(() => pathname) },
421
421
  ...stat.isFile() ? { linkCount: stat.nlink } : {}
422
422
  };
423
423
  } catch {
@@ -454,7 +454,7 @@ function kindFromStats(stat) {
454
454
  async function backupTarget(entry) {
455
455
  const beforeState = await inspectPath(entry.targetPath);
456
456
  if (beforeState.kind === "file") {
457
- await fs.copyFile(entry.targetPath, entry.snapshotPath, syncFs.constants.COPYFILE_EXCL);
457
+ await fs$1.copyFile(entry.targetPath, entry.snapshotPath, fs.constants.COPYFILE_EXCL);
458
458
  return {
459
459
  proposalId: entry.proposalId,
460
460
  action: entry.action,
@@ -504,7 +504,7 @@ async function writeTarget(action, proposalId, targetPath) {
504
504
  message: `target is ${state.kind}`
505
505
  };
506
506
  }
507
- await fs.writeFile(targetPath, "", {
507
+ await fs$1.writeFile(targetPath, "", {
508
508
  flag: "wx",
509
509
  mode: 384
510
510
  });
@@ -537,7 +537,7 @@ async function writeTarget(action, proposalId, targetPath) {
537
537
  message: `target is ${state.kind}`
538
538
  };
539
539
  }
540
- await fs.mkdir(targetPath, {
540
+ await fs$1.mkdir(targetPath, {
541
541
  recursive: false,
542
542
  mode: 448
543
543
  });
@@ -583,12 +583,12 @@ async function rollbackSnapshots(snapshots, steps) {
583
583
  try {
584
584
  if (snapshot.before === "missing") {
585
585
  if (snapshot.action === "create_directory") {
586
- await fs.rmdir(snapshot.targetPath);
586
+ await fs$1.rmdir(snapshot.targetPath);
587
587
  } else {
588
- await fs.unlink(snapshot.targetPath);
588
+ await fs$1.unlink(snapshot.targetPath);
589
589
  }
590
590
  } else if (snapshot.before === "file") {
591
- await fs.copyFile(snapshot.snapshotPath, snapshot.targetPath);
591
+ await fs$1.copyFile(snapshot.snapshotPath, snapshot.targetPath);
592
592
  }
593
593
  steps.push({
594
594
  proposalId: snapshot.proposalId,
@@ -621,7 +621,7 @@ async function rollbackSnapshots(snapshots, steps) {
621
621
  async function readExistingLocks(stateDir) {
622
622
  let entries;
623
623
  try {
624
- entries = await fs.readdir(stateDir);
624
+ entries = await fs$1.readdir(stateDir);
625
625
  } catch {
626
626
  return [];
627
627
  }
@@ -631,7 +631,7 @@ async function readExistingLocks(stateDir) {
631
631
  continue;
632
632
  }
633
633
  try {
634
- const parsed = JSON.parse(await fs.readFile(path.join(stateDir, entry), "utf8"));
634
+ const parsed = JSON.parse(await fs$1.readFile(path.join(stateDir, entry), "utf8"));
635
635
  if (parsed?.kind === "doctor.memory.repair.execution.lock") {
636
636
  locks.push(parsed);
637
637
  }
@@ -642,17 +642,17 @@ async function readExistingLocks(stateDir) {
642
642
  return locks;
643
643
  }
644
644
  async function finishLock(lockPath, record, status) {
645
- await fs.writeFile(lockPath, `${JSON.stringify({
645
+ await fs$1.writeFile(lockPath, `${JSON.stringify({
646
646
  ...record,
647
647
  status,
648
648
  finishedAt: new Date().toISOString()
649
649
  }, null, 2)}\n`, { mode: 384 });
650
650
  }
651
651
  async function writeAuditRecord(pathname, payload) {
652
- await fs.appendFile(pathname, `${JSON.stringify(payload)}\n`, { mode: 384 });
652
+ await fs$1.appendFile(pathname, `${JSON.stringify(payload)}\n`, { mode: 384 });
653
653
  }
654
654
  async function writeJsonFileExclusive(pathname, payload) {
655
- await fs.writeFile(pathname, `${JSON.stringify(payload, null, 2)}\n`, {
655
+ await fs$1.writeFile(pathname, `${JSON.stringify(payload, null, 2)}\n`, {
656
656
  flag: "wx",
657
657
  mode: 384
658
658
  });
@@ -1,6 +1,6 @@
1
1
  import { sameFileIdentity } from "../infra/file-identity.js";
2
2
  import { resolveSystemRunCommand } from "../infra/system-run-command.js";
3
- import syncFs from "node:fs";
3
+ import fs from "node:fs";
4
4
  import path from "node:path";
5
5
 
6
6
  //#region src/node-host/invoke-system-run-plan.ts
@@ -41,7 +41,7 @@ function pathComponentsFromRootSync(targetPath) {
41
41
  }
42
42
  function isWritableByCurrentProcessSync(candidate) {
43
43
  try {
44
- syncFs.accessSync(candidate, syncFs.constants.W_OK);
44
+ fs.accessSync(candidate, fs.constants.W_OK);
45
45
  return true;
46
46
  } catch {
47
47
  return false;
@@ -50,7 +50,7 @@ function isWritableByCurrentProcessSync(candidate) {
50
50
  function hasMutableSymlinkPathComponentSync(targetPath) {
51
51
  for (const component of pathComponentsFromRootSync(targetPath)) {
52
52
  try {
53
- if (!syncFs.lstatSync(component).isSymbolicLink()) {
53
+ if (!fs.lstatSync(component).isSymbolicLink()) {
54
54
  continue;
55
55
  }
56
56
  const parentDir = path.dirname(component);
@@ -79,10 +79,10 @@ function hardenApprovedExecutionPaths(params) {
79
79
  let cwdReal;
80
80
  let cwdRealStat;
81
81
  try {
82
- cwdLstat = syncFs.lstatSync(requestedCwd);
83
- cwdStat = syncFs.statSync(requestedCwd);
84
- cwdReal = syncFs.realpathSync(requestedCwd);
85
- cwdRealStat = syncFs.statSync(cwdReal);
82
+ cwdLstat = fs.lstatSync(requestedCwd);
83
+ cwdStat = fs.statSync(requestedCwd);
84
+ cwdReal = fs.realpathSync(requestedCwd);
85
+ cwdRealStat = fs.statSync(cwdReal);
86
86
  } catch {
87
87
  return {
88
88
  ok: false,
@@ -134,7 +134,7 @@ function hardenApprovedExecutionPaths(params) {
134
134
  const base = hardenedCwd ?? process.cwd();
135
135
  const candidate = path.isAbsolute(rawExecutable) ? rawExecutable : path.resolve(base, rawExecutable);
136
136
  try {
137
- argv[0] = syncFs.realpathSync(candidate);
137
+ argv[0] = fs.realpathSync(candidate);
138
138
  } catch {
139
139
  return {
140
140
  ok: false,
@@ -4,7 +4,7 @@ import { requestExecHostViaSocket } from "../infra/exec-host.js";
4
4
  import { runBrowserProxyCommand } from "./invoke-browser.js";
5
5
  import { buildSystemRunApprovalPlanV2 } from "./invoke-system-run-plan.js";
6
6
  import { handleSystemRunInvoke } from "./invoke-system-run.js";
7
- import syncFs from "node:fs";
7
+ import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import { spawn } from "node:child_process";
10
10
 
@@ -154,7 +154,7 @@ function resolveExecutable(bin, env) {
154
154
  for (const dir of resolveEnvPath(env)) {
155
155
  for (const ext of extensions) {
156
156
  const candidate = path.join(dir, bin + ext);
157
- if (syncFs.existsSync(candidate)) {
157
+ if (fs.existsSync(candidate)) {
158
158
  return candidate;
159
159
  }
160
160
  }
@@ -11,19 +11,19 @@ import { NODE_BROWSER_PROXY_COMMAND, NODE_EXEC_APPROVALS_COMMANDS, NODE_SYSTEM_R
11
11
  import { ensureFasedAgentCliOnPath } from "../infra/path-env.js";
12
12
  import { ensureNodeHostConfig, saveNodeHostConfig } from "./config.js";
13
13
  import { buildNodeInvokeResultParams, coerceNodeInvokePayload, handleInvoke } from "./invoke.js";
14
- import syncFs from "node:fs";
14
+ import fs from "node:fs";
15
15
  import path from "node:path";
16
16
 
17
17
  //#region src/node-host/runner.ts
18
18
  const DEFAULT_NODE_PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
19
19
  function isExecutableFile(filePath) {
20
20
  try {
21
- const stat = syncFs.statSync(filePath);
21
+ const stat = fs.statSync(filePath);
22
22
  if (!stat.isFile()) {
23
23
  return false;
24
24
  }
25
25
  if (process.platform !== "win32") {
26
- syncFs.accessSync(filePath, syncFs.constants.X_OK);
26
+ fs.accessSync(filePath, fs.constants.X_OK);
27
27
  }
28
28
  return true;
29
29
  } catch {