@fased/fased 0.1.61 → 0.1.64

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 (514) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +38 -30
  3. package/config/dependency-ownership.json +1 -1
  4. package/config/signer-policies/README.md +49 -0
  5. package/config/signer-policies/agent.json.template +32 -0
  6. package/config/signer-policies/mining.json.template +69 -0
  7. package/config/signer-policies/network.json.template +5 -0
  8. package/config/signer-policies/vault.json.template +70 -0
  9. package/config/signer-protocol-v2.json +76 -0
  10. package/config/typescript-noemit-baseline.json +680 -0
  11. package/dist/acp/client.js +2 -2
  12. package/dist/acp/secret-file.js +2 -2
  13. package/dist/agents/agent-scope.js +2 -2
  14. package/dist/agents/apply-patch.js +8 -8
  15. package/dist/agents/auth-profiles/paths.js +2 -2
  16. package/dist/agents/auth-profiles/store.js +269 -33
  17. package/dist/agents/bash-tools.exec.js +10 -4
  18. package/dist/agents/bash-tools.shared.js +2 -2
  19. package/dist/agents/cli-credentials.js +4 -4
  20. package/dist/agents/current-model-catalog.js +3 -3
  21. package/dist/agents/docs-path.js +3 -3
  22. package/dist/agents/embedded-pi-mcp.js +4 -4
  23. package/dist/agents/identity-avatar.js +3 -3
  24. package/dist/agents/identity-file.js +2 -2
  25. package/dist/agents/memory-search.js +7 -1
  26. package/dist/agents/model-catalog-access.js +1 -2
  27. package/dist/agents/model-catalog-snapshot.js +1 -1
  28. package/dist/agents/model-catalog-source.js +1 -1
  29. package/dist/agents/model-metadata.js +1 -1
  30. package/dist/agents/model-selection.js +2 -28
  31. package/dist/agents/models-config.providers.js +6 -6
  32. package/dist/agents/openai-codex-app-server.js +5 -5
  33. package/dist/agents/pi-embedded-runner/compact.js +15 -7
  34. package/dist/agents/pi-embedded-runner/model.js +1 -1
  35. package/dist/agents/pi-embedded-runner/run/attempt.js +24 -13
  36. package/dist/agents/pi-embedded-runner/run.js +2 -0
  37. package/dist/agents/pi-embedded-runner/tool-split.js +40 -2
  38. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  39. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  40. package/dist/agents/pi-model-discovery.js +6 -6
  41. package/dist/agents/pi-project-settings.js +3 -3
  42. package/dist/agents/pi-tool-definition-adapter.js +16 -1
  43. package/dist/agents/pi-tools.js +2 -1
  44. package/dist/agents/sandbox/config.js +1 -1
  45. package/dist/agents/sandbox/context.js +27 -2
  46. package/dist/agents/sandbox/fs-bridge.js +2 -2
  47. package/dist/agents/session-dirs.js +4 -4
  48. package/dist/agents/session-write-lock.js +13 -13
  49. package/dist/agents/shell-utils.js +5 -5
  50. package/dist/agents/skills/bundled-dir.js +4 -4
  51. package/dist/agents/skills/env-overrides.js +38 -28
  52. package/dist/agents/skills/local-loader.js +6 -6
  53. package/dist/agents/skills/plugin-skills.js +2 -2
  54. package/dist/agents/skills/trust.js +93 -0
  55. package/dist/agents/skills/workspace.js +141 -13
  56. package/dist/agents/skills-clawhub.js +36 -11
  57. package/dist/agents/skills-install-download.js +7 -7
  58. package/dist/agents/skills-install-plan.js +2 -2
  59. package/dist/agents/skills-install.js +2 -2
  60. package/dist/agents/skills-marketplace-scan.js +49 -0
  61. package/dist/agents/skills-status.js +2 -2
  62. package/dist/agents/subagent-depth.js +2 -2
  63. package/dist/agents/system-prompt-params.js +2 -2
  64. package/dist/agents/tools/marketplace-offer-draft-tool.js +1 -1
  65. package/dist/agents/tools/mining-tool.js +1 -1
  66. package/dist/agents/tools/session-status-tool.js +1 -1
  67. package/dist/agents/tools/wallet-action-tool.js +172 -36
  68. package/dist/agents/tools/wallet-skill-policy.js +65 -23
  69. package/dist/agents/tools/wallet-tool.js +7 -11
  70. package/dist/agents/workspace.js +22 -22
  71. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  72. package/dist/auto-reply/reply/agent-runner.js +2 -2
  73. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  74. package/dist/auto-reply/reply/directive-handling.fast-lane.js +2 -1
  75. package/dist/auto-reply/reply/directive-handling.impl.js +2 -1
  76. package/dist/auto-reply/reply/directive-handling.model.js +2 -1
  77. package/dist/auto-reply/reply/directive-handling.persist.js +2 -2
  78. package/dist/auto-reply/reply/get-reply-directives-apply.js +2 -0
  79. package/dist/auto-reply/reply/get-reply-inline-actions.js +25 -1
  80. package/dist/auto-reply/reply/model-selection.js +7 -4
  81. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  82. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  83. package/dist/auto-reply/reply/session-reset-model.js +4 -4
  84. package/dist/auto-reply/reply/session.js +3 -3
  85. package/dist/auto-reply/skill-commands.js +3 -3
  86. package/dist/auto-reply/status.js +6 -6
  87. package/dist/brand.js +1 -1
  88. package/dist/browser/chrome.executables.js +3 -3
  89. package/dist/browser/chrome.js +3 -3
  90. package/dist/browser/chrome.profile-decoration.js +6 -6
  91. package/dist/browser/profiles-service.js +2 -2
  92. package/dist/browser/server-context.js +2 -2
  93. package/dist/browser/trash.js +4 -4
  94. package/dist/build-info.json +3 -3
  95. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  96. package/dist/canvas-host/server.js +4 -4
  97. package/dist/capabilities/catalog.js +3 -3
  98. package/dist/channel-web.js +2 -2
  99. package/dist/channels/plugins/catalog.js +3 -3
  100. package/dist/cli/browser-cli-extension.js +6 -6
  101. package/dist/cli/command-format.js +2 -2
  102. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  103. package/dist/cli/dns-cli.js +9 -9
  104. package/dist/cli/gateway-cli/dev.js +5 -5
  105. package/dist/cli/gateway-cli/run.js +10 -2
  106. package/dist/cli/hooks-cli.js +5 -5
  107. package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
  108. package/dist/cli/memory-cli.js +7 -7
  109. package/dist/cli/nodes-media-utils.js +2 -2
  110. package/dist/cli/plugins-cli.js +2 -2
  111. package/dist/cli/program/command-registry.js +1 -1
  112. package/dist/cli/program/register.onboard.js +2 -3
  113. package/dist/cli/program/register.wallet.js +16 -123
  114. package/dist/cli/providers-cli.js +1 -1
  115. package/dist/cli/sat-cli.js +129 -2
  116. package/dist/cli/secrets-cli.js +3 -3
  117. package/dist/cli/update-cli/update-command.js +260 -11
  118. package/dist/cli/windows-argv.js +2 -2
  119. package/dist/commands/auth-choice.apply.api-providers.js +3 -3
  120. package/dist/commands/dashboard-link.js +3 -3
  121. package/dist/commands/doctor-config-flow.js +1 -1
  122. package/dist/commands/doctor-install.js +5 -5
  123. package/dist/commands/doctor-legacy-config.js +2 -13
  124. package/dist/commands/doctor-memory-search.js +2 -2
  125. package/dist/commands/doctor-platform-notes.js +2 -2
  126. package/dist/commands/doctor-sandbox.js +2 -2
  127. package/dist/commands/doctor-state-integrity.js +23 -23
  128. package/dist/commands/doctor-workspace.js +3 -3
  129. package/dist/commands/doctor.js +3 -3
  130. package/dist/commands/managed-up.js +2 -2
  131. package/dist/commands/model-picker.js +6 -6
  132. package/dist/commands/models/auth.js +1 -1
  133. package/dist/commands/onboard-auth.config-gateways.js +1 -1
  134. package/dist/commands/onboard-auth.credentials.js +35 -11
  135. package/dist/commands/onboard-non-interactive/local/wallet-config.js +28 -27
  136. package/dist/commands/onboard-non-interactive/local.js +5 -1
  137. package/dist/commands/onboarding/plugin-install.js +2 -2
  138. package/dist/commands/sessions-cleanup.js +2 -2
  139. package/dist/commands/signal-install.js +6 -6
  140. package/dist/commands/status-all/channels.js +2 -2
  141. package/dist/commands/wallet.js +570 -1913
  142. package/dist/config/cache-utils.js +2 -2
  143. package/dist/config/config.js +2 -2
  144. package/dist/config/includes.js +5 -5
  145. package/dist/config/io.js +66 -4
  146. package/dist/config/paths.js +3 -3
  147. package/dist/config/sat-runtime-ids.js +3 -3
  148. package/dist/config/schema.help.js +8 -7
  149. package/dist/config/schema.labels.js +5 -4
  150. package/dist/config/sessions/disk-budget.js +6 -6
  151. package/dist/config/sessions/paths.js +2 -2
  152. package/dist/config/sessions/store.js +17 -17
  153. package/dist/config/sessions/transcript.js +4 -4
  154. package/dist/config/talk.js +2 -2
  155. package/dist/config/zod-schema.agent-runtime.js +1 -0
  156. package/dist/config/zod-schema.js +5 -0
  157. package/dist/control-ui/assets/{app-BXA4gPvN.js → app-bR-fO5ty.js} +1511 -1555
  158. package/dist/control-ui/assets/{config-CU5Zi8Dh.js → config-LeImukCW.js} +10 -10
  159. package/dist/control-ui/assets/{federation-D10Q4eP_.js → federation-DgA9e-Pn.js} +364 -422
  160. package/dist/control-ui/assets/{index-D2QbJhVg.js → index-ckCxHwjy.js} +3 -3
  161. package/dist/control-ui/assets/{mining-BdhMn18r.js → mining-BgHFh0ei.js} +134 -114
  162. package/dist/control-ui/assets/mining-commit-DFpB_4JN.js +2 -0
  163. package/dist/control-ui/assets/{open-external-url-DwSiwMPl.js → open-external-url-ulF1B-sA.js} +3 -3
  164. package/dist/control-ui/assets/{providers-QMn4w2_f.js → providers-CIx9fxc6.js} +2 -2
  165. package/dist/control-ui/assets/{wallet-C2g294QT.js → wallet-DvStR_AT.js} +259 -377
  166. package/dist/control-ui/index.html +1 -1
  167. package/dist/control-ui/version.json +1 -1
  168. package/dist/cron/service/store.js +2 -2
  169. package/dist/cron/store.js +6 -6
  170. package/dist/daemon/systemd-system.js +60 -54
  171. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  172. package/dist/extensions/sat-mining/src/protocol-contract.js +43 -3
  173. package/dist/extensions/sat-mining/src/rpc-read.js +235 -67
  174. package/dist/extensions/sat-mining/src/sat-bond-layout.js +14 -11
  175. package/dist/extensions/sat-mining/src/signer-codec-manifest.js +406 -0
  176. package/dist/extensions/sat-mining/src/solana-submit.js +1038 -397
  177. package/dist/extensions/sat-mining/src/submission-ledger.js +349 -0
  178. package/dist/federation/auto-connect.js +98 -8
  179. package/dist/federation/marketplace-capability-adapter.js +33 -7
  180. package/dist/federation/marketplace-delivery-outbox.js +196 -0
  181. package/dist/federation/marketplace-delivery.js +351 -215
  182. package/dist/federation/marketplace-direct-payment.js +272 -141
  183. package/dist/federation/marketplace-escrow.js +607 -249
  184. package/dist/federation/marketplace-settlement-ledger.js +352 -0
  185. package/dist/federation/offers.js +9 -7
  186. package/dist/federation/peer-auth-v2.js +529 -0
  187. package/dist/gateway/a2a-http.js +425 -96
  188. package/dist/gateway/a2a-settlement.js +259 -153
  189. package/dist/gateway/a2a-task-store.js +524 -0
  190. package/dist/gateway/auth.js +38 -2
  191. package/dist/gateway/config-reload.js +46 -33
  192. package/dist/gateway/control-ui-boot-check.js +6 -6
  193. package/dist/gateway/control-ui-login.js +7 -7
  194. package/dist/gateway/control-ui.js +9 -9
  195. package/dist/gateway/durable-capacity.js +31 -0
  196. package/dist/gateway/federation-http.js +540 -135
  197. package/dist/gateway/federation-marketplace-run-store.js +397 -0
  198. package/dist/gateway/federation-marketplace.js +535 -230
  199. package/dist/gateway/hooks-mapping.js +4 -4
  200. package/dist/gateway/mutating-admin-rpc-rate-limit.js +5 -0
  201. package/dist/gateway/security-path.js +1 -1
  202. package/dist/gateway/server-discovery.js +2 -2
  203. package/dist/gateway/server-http.js +1088 -1209
  204. package/dist/gateway/server-methods/chat.js +3 -3
  205. package/dist/gateway/server-methods/models.js +1 -1
  206. package/dist/gateway/server-methods/secrets.js +40 -0
  207. package/dist/gateway/server-methods/sessions.js +6 -6
  208. package/dist/gateway/server-methods/usage.js +2 -2
  209. package/dist/gateway/server-methods.js +1 -2
  210. package/dist/gateway/server-reload-handlers.js +196 -66
  211. package/dist/gateway/server-runtime-config.js +1 -1
  212. package/dist/gateway/server-secrets-runtime.js +288 -0
  213. package/dist/gateway/server.impl.js +73 -42
  214. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  215. package/dist/gateway/session-utils.fs.js +24 -24
  216. package/dist/gateway/session-utils.js +6 -6
  217. package/dist/gateway/sessions-patch.js +3 -5
  218. package/dist/hooks/bundled-dir.js +4 -4
  219. package/dist/hooks/gmail-setup-utils.js +6 -6
  220. package/dist/hooks/import-url.js +2 -2
  221. package/dist/hooks/loader.js +4 -4
  222. package/dist/hooks/workspace.js +7 -7
  223. package/dist/index.js +4 -2
  224. package/dist/infra/archive.js +17 -17
  225. package/dist/infra/boundary-file-read.js +2 -2
  226. package/dist/infra/boundary-path.js +15 -15
  227. package/dist/infra/brew.js +2 -2
  228. package/dist/infra/control-ui-assets.js +14 -14
  229. package/dist/infra/device-auth-store.js +8 -8
  230. package/dist/infra/device-identity.js +8 -8
  231. package/dist/infra/dotenv.js +2 -2
  232. package/dist/infra/exec-approvals.js +8 -8
  233. package/dist/infra/exec-command-resolution.js +4 -4
  234. package/dist/infra/exec-safe-bin-trust.js +2 -2
  235. package/dist/infra/fased-root.js +5 -5
  236. package/dist/infra/fasedhub.js +64 -1
  237. package/dist/infra/fs-safe.js +14 -14
  238. package/dist/infra/gateway-lock.js +11 -11
  239. package/dist/infra/git-commit.js +5 -5
  240. package/dist/infra/git-root.js +4 -4
  241. package/dist/infra/hosted-runtime-artifact.js +3 -3
  242. package/dist/infra/is-main.js +2 -2
  243. package/dist/infra/json-file.js +7 -7
  244. package/dist/infra/local-source-paired-update.js +538 -0
  245. package/dist/infra/managed-runtime-bootstrap.js +6 -6
  246. package/dist/infra/outbound/delivery-queue.js +16 -16
  247. package/dist/infra/path-env.js +3 -3
  248. package/dist/infra/ports-lsof.js +4 -4
  249. package/dist/infra/provider-usage.auth.js +3 -3
  250. package/dist/infra/restart.js +41 -10
  251. package/dist/infra/safe-open-sync.js +2 -2
  252. package/dist/infra/session-cost-usage.js +9 -9
  253. package/dist/infra/shell-env.js +2 -2
  254. package/dist/infra/state-migrations.fs.js +6 -6
  255. package/dist/infra/state-migrations.js +23 -23
  256. package/dist/infra/tmp-fased-dir.js +6 -6
  257. package/dist/infra/update-runner.js +96 -0
  258. package/dist/infra/widearea-dns.js +3 -3
  259. package/dist/infra/wsl.js +2 -2
  260. package/dist/light-update-status.js +11 -11
  261. package/dist/line/accounts.js +2 -2
  262. package/dist/line/download.js +2 -2
  263. package/dist/logging/config.js +3 -3
  264. package/dist/logging/logger.js +7 -7
  265. package/dist/managed/federation.js +3 -3
  266. package/dist/managed/tunnel.js +3 -3
  267. package/dist/media/store.js +13 -13
  268. package/dist/media-understanding/runner.js +3 -3
  269. package/dist/memory/backend-config.js +2 -1
  270. package/dist/memory/embeddings.js +2 -2
  271. package/dist/memory/internal.js +10 -10
  272. package/dist/memory/manager-sync-ops.js +7 -7
  273. package/dist/memory/repair-executor.js +17 -17
  274. package/dist/memory/session-files.js +16 -2
  275. package/dist/node-host/invoke-system-run-plan.js +8 -8
  276. package/dist/node-host/invoke.js +2 -2
  277. package/dist/node-host/runner.js +3 -3
  278. package/dist/pairing/pairing-store.js +3 -3
  279. package/dist/plugin-sdk/{accounts-DxblobYM.js → accounts-Brn3-uWN.js} +1 -1
  280. package/dist/plugin-sdk/{actions-D4UNimWa.js → actions-DRu135h0.js} +2 -2
  281. package/dist/plugin-sdk/{active-listener-CFuy106s.js → active-listener-B_NMtgPL.js} +1 -1
  282. package/dist/plugin-sdk/{audio-preflight-Bv0hUOWL.js → audio-preflight-BYxAt775.js} +27 -27
  283. package/dist/plugin-sdk/{audit-Cs0K7LBp.js → audit-C5d2z5U1.js} +1 -1
  284. package/dist/plugin-sdk/{channel-access-D5aHoTY8.js → channel-access-CcFRdRPO.js} +1 -1
  285. package/dist/plugin-sdk/{channel-access-configure-Dvch9mMQ.js → channel-access-configure-DaI5wevh.js} +1 -1
  286. package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
  287. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  288. package/dist/plugin-sdk/{chunk-B0FUGc5A.js → chunk-CyoyqpbG.js} +1 -1
  289. package/dist/plugin-sdk/{chunk-items-Bk--NU3E.js → chunk-items-DIRHG2gJ.js} +1 -1
  290. package/dist/plugin-sdk/command-status.d.ts +2 -2
  291. package/dist/plugin-sdk/command-status.js +27 -27
  292. package/dist/plugin-sdk/{commands-registry-DmDRhRAU.js → commands-registry-BfqdEWdF.js} +2 -2
  293. package/dist/plugin-sdk/{common-CfUOowOp.js → common-HCcXU-NR.js} +1 -1
  294. package/dist/plugin-sdk/{config-mxULv0fQ.js → config-DlWVeLFB.js} +7113 -6877
  295. package/dist/plugin-sdk/{config-schema-CGW6J3Pv.js → config-schema-BOT7kHb6.js} +6779 -3696
  296. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  297. package/dist/plugin-sdk/discord.d.ts +5 -5
  298. package/dist/plugin-sdk/discord.js +19 -19
  299. package/dist/plugin-sdk/file-lock.js +35 -4
  300. package/dist/plugin-sdk/{filesystem-manager-ZoHU8oA7.js → filesystem-manager-DoI8IBNF.js} +1 -1
  301. package/dist/plugin-sdk/{group-mentions-BHRff6j8.d.ts → group-mentions-q3hUTCt7.d.ts} +1 -1
  302. package/dist/plugin-sdk/{handle-action-DbVCF9HZ.js → handle-action-hvwapMKg.js} +13 -13
  303. package/dist/plugin-sdk/{helpers-BXbdgs5H.js → helpers-DMBU4oTo.js} +1 -1
  304. package/dist/plugin-sdk/{image-ops-D7jPxaph.js → image-ops-DQi0n_Tt.js} +1 -1
  305. package/dist/plugin-sdk/index.d.ts +9 -27
  306. package/dist/plugin-sdk/index.js +29 -29
  307. package/dist/plugin-sdk/json-store.js +6 -6
  308. package/dist/plugin-sdk/{login-BRxww6nv.js → login-Ca583Okc.js} +3 -3
  309. package/dist/plugin-sdk/{login-qr-DJXsk9XH.js → login-qr-CGciBSNP.js} +3 -3
  310. package/dist/plugin-sdk/{manager-Y2S_5IlI.js → manager-BegWxNYX.js} +4 -4
  311. package/dist/plugin-sdk/{markdown-tables-DHLFQqaF.js → markdown-tables-DCOXEUfZ.js} +1 -1
  312. package/dist/plugin-sdk/{media-Czo4carg.js → media-CAdQF5TG.js} +47 -47
  313. package/dist/plugin-sdk/{memory-search-DTjIMw8J.js → memory-search-CrFPOeTH.js} +4 -1
  314. package/dist/plugin-sdk/{monitor-B9Cmt_Je.js → monitor-BCFDaqJ-.js} +31 -31
  315. package/dist/plugin-sdk/{monitor-B71iwAgC.js → monitor-BgbjRiPM.js} +32 -32
  316. package/dist/plugin-sdk/{openresponses-http-Du4GMmwo.js → openresponses-http-DFf87SMM.js} +27 -27
  317. package/dist/plugin-sdk/{optional-runtime-dependency-DdMbxS24.js → optional-runtime-dependency-0dznm3ZO.js} +1 -1
  318. package/dist/plugin-sdk/{outbound-Db8mRN6P.js → outbound-BgVDdHxx.js} +6 -6
  319. package/dist/plugin-sdk/{outbound-attachment-BqFjcypb.js → outbound-attachment-QqTnIhZL.js} +2 -2
  320. package/dist/plugin-sdk/{pairing-message-BMkkS038.d.ts → pairing-message-CS-9BHug.d.ts} +2 -2
  321. package/dist/plugin-sdk/{pairing-message-B3GC_7CD.js → pairing-message-D0CoLHRJ.js} +1 -1
  322. package/dist/plugin-sdk/{pairing-store-CQikgIbw.js → pairing-store-BChahgI2.js} +2 -2
  323. package/dist/plugin-sdk/{pi-model-discovery-CY3m5zJP.js → pi-model-discovery-BX_JLcEJ.js} +1 -1
  324. package/dist/plugin-sdk/{pi-model-discovery-runtime-DSh1T2pn.js → pi-model-discovery-runtime-DxTMz_XF.js} +2 -2
  325. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  326. package/dist/plugin-sdk/{pw-ai-AFUqn-tQ.js → pw-ai-natjh3rm.js} +3 -3
  327. package/dist/plugin-sdk/{qmd-manager-DSyx77KY.js → qmd-manager-CgRaTxUq.js} +1 -1
  328. package/dist/plugin-sdk/{query-expansion-CAI2kKLQ.js → query-expansion-BG3FgzF7.js} +14 -3
  329. package/dist/plugin-sdk/{replies-Fzh9PhXl.js → replies-ChYo5ZQM.js} +2 -2
  330. package/dist/plugin-sdk/{resolve-outbound-target-KpF3co6T.js → resolve-outbound-target-D-KGgHJZ.js} +1 -1
  331. package/dist/plugin-sdk/{resolve-route-CDl74O19.js → resolve-route-C8tvQm8Z.js} +1 -1
  332. package/dist/plugin-sdk/{retry-policy-D4uiqUOG.js → retry-policy-C6SjKjQA.js} +1 -1
  333. package/dist/plugin-sdk/{runtime-Bb6KRnCC.js → runtime-2B9_WKoI.js} +8 -3
  334. package/dist/plugin-sdk/{runtime-dependency-DLDmB94f.js → runtime-dependency-DczkvPxn.js} +2 -2
  335. package/dist/plugin-sdk/sat-runtime.d.ts +549 -309
  336. package/dist/plugin-sdk/sat-runtime.js +29 -29
  337. package/dist/plugin-sdk/{send-C4k4JuJN.js → send-B6KkGKZD.js} +6 -6
  338. package/dist/plugin-sdk/{send-D-uDKGIq.js → send-CFzGKJXo.js} +6 -6
  339. package/dist/plugin-sdk/{send-Du8ykP1k.js → send-DCO441U7.js} +8 -8
  340. package/dist/plugin-sdk/{send-5nFktR1n.js → send-gDoGA-7e.js} +5 -5
  341. package/dist/plugin-sdk/{send-Bfzf11VY.js → send-q9HXrSwK.js} +7 -7
  342. package/dist/plugin-sdk/{session-CS-Td9EM.js → session-DHD4ZKyG.js} +2 -2
  343. package/dist/plugin-sdk/{skill-commands-CFAlXWHk.js → skill-commands-FKEPLS7T.js} +201 -26
  344. package/dist/plugin-sdk/{slack-D_bbE6Yd.js → slack-BUTt8cxK.js} +39 -39
  345. package/dist/plugin-sdk/{slack-actions-BcMkNv1Z.js → slack-actions-DhbMcp8M.js} +11 -11
  346. package/dist/plugin-sdk/slack.d.ts +5 -5
  347. package/dist/plugin-sdk/slack.js +9 -9
  348. package/dist/plugin-sdk/{sticker-cache-Dqo9nRhi.js → sticker-cache-D0wHVqjt.js} +3 -3
  349. package/dist/plugin-sdk/{tables-bFXyRpkx.js → tables-B3jr0Pvq.js} +1 -1
  350. package/dist/plugin-sdk/{targets-DH7a9lKB.js → targets-CtSbTxYX.js} +1 -1
  351. package/dist/plugin-sdk/{telegram-actions-Cnag7JTH.js → telegram-actions-CC_qN4v0.js} +30 -30
  352. package/dist/plugin-sdk/telegram.d.ts +5 -5
  353. package/dist/plugin-sdk/telegram.js +8 -8
  354. package/dist/plugin-sdk/{thread-bindings.lifecycle-CgOvvdw8.js → thread-bindings.lifecycle-QbkNl-m6.js} +3 -3
  355. package/dist/plugin-sdk/{thread-bindings.state-CQpk44Hq.js → thread-bindings.state-D9hg_M1c.js} +2 -2
  356. package/dist/plugin-sdk/tmp-fased-dir-xOTGlzBE.d.ts +486 -0
  357. package/dist/plugin-sdk/{types-CLIvQaVg.d.ts → types-C3avNytw.d.ts} +3 -4
  358. package/dist/plugin-sdk/{types-DyhXnYUr.d.ts → types-D0kDG8l0.d.ts} +3 -2
  359. package/dist/plugin-sdk/{types-BYDL6dQj.d.ts → types-DWfbSAaM.d.ts} +2 -2
  360. package/dist/plugin-sdk/{types.plugin-_fbu40Re.d.ts → types.plugin-BcSBq42x.d.ts} +8 -3
  361. package/dist/plugin-sdk/{web-BInKQkc4.js → web-BXsJ1vqe.js} +32 -32
  362. package/dist/plugin-sdk/{whatsapp-actions-BtSc2CBv.js → whatsapp-actions-Bj_rOncr.js} +13 -13
  363. package/dist/plugin-sdk/{whatsapp-heartbeat-Bg9TuYzl.js → whatsapp-heartbeat-B1WHkJIg.js} +2 -2
  364. package/dist/plugin-sdk/whatsapp.d.ts +5 -5
  365. package/dist/plugin-sdk/whatsapp.js +12 -12
  366. package/dist/plugin-sdk/{wsl-C4DGFkOd.js → wsl-J-HscWxS.js} +3 -3
  367. package/dist/plugins/bundled-dir.js +3 -3
  368. package/dist/plugins/discovery.js +11 -11
  369. package/dist/plugins/loader.js +13 -13
  370. package/dist/plugins/manifest-registry.js +2 -2
  371. package/dist/plugins/manifest.js +4 -4
  372. package/dist/plugins/path-safety.js +3 -3
  373. package/dist/plugins/status-cache.js +9 -9
  374. package/dist/plugins/update.js +3 -3
  375. package/dist/plugins/web-search-install-catalog.js +3 -3
  376. package/dist/providers/refresh.js +1 -1
  377. package/dist/providers/registry.js +1 -1
  378. package/dist/secrets/apply.js +17 -17
  379. package/dist/secrets/audit.js +11 -11
  380. package/dist/secrets/runtime.js +1 -1
  381. package/dist/secrets/shared.js +9 -9
  382. package/dist/security/scan-paths.js +2 -2
  383. package/dist/shared/config-eval.js +2 -2
  384. package/dist/shared/pid-alive.js +2 -2
  385. package/dist/tasks/standing-orders.js +5 -5
  386. package/dist/tasks/task-flow-registry.js +5 -5
  387. package/dist/tasks/task-registry.js +5 -5
  388. package/dist/tasks/workflow-definitions.js +6 -6
  389. package/dist/telegram/token.js +5 -5
  390. package/dist/utils.js +5 -5
  391. package/dist/wallet/external-submission-ledger.js +376 -0
  392. package/dist/wallet/legacy-embedded-keystore.js +40 -0
  393. package/dist/wallet/local-socket-signer-archive.js +30 -0
  394. package/dist/wallet/local-socket-signer-lifecycle.js +97 -0
  395. package/dist/wallet/local-socket-signer-policy.js +166 -0
  396. package/dist/wallet/local-socket-signer-protocol.js +561 -118
  397. package/dist/wallet/native-signer-wallet-id.js +25 -0
  398. package/dist/wallet/providers/alchemy-adapter.js +3 -0
  399. package/dist/wallet/providers/local-socket-signer-adapter.js +382 -107
  400. package/dist/wallet/providers/turnkey-adapter.js +292 -34
  401. package/dist/wallet/providers/wallet-standard-adapter.js +100 -0
  402. package/dist/wallet/signer-network-admin.js +184 -0
  403. package/dist/wallet/signer-protocol-v2.generated.js +90 -0
  404. package/dist/wallet/solana-bond-signing.js +157 -69
  405. package/dist/wallet/solana-reviewed-transaction.js +375 -0
  406. package/dist/wallet/solana-swap.js +520 -64
  407. package/dist/wallet/solana-transaction-inspection.js +106 -4
  408. package/dist/wallet/solana-trigger.js +658 -320
  409. package/dist/wallet/turnkey-reviewed-state.js +370 -0
  410. package/dist/wallet/wallet-approval-auth.js +20 -31
  411. package/dist/wallet/wallet-atomic-state.js +53 -0
  412. package/dist/wallet/wallet-audit-log.js +5 -5
  413. package/dist/wallet/wallet-canary.js +0 -1
  414. package/dist/wallet/wallet-inbound-events.js +19 -14
  415. package/dist/wallet/wallet-observability.js +5 -5
  416. package/dist/wallet/wallet-policy-simulation.js +1 -1
  417. package/dist/wallet/wallet-policy.js +95 -41
  418. package/dist/wallet/wallet-provider-capabilities.js +28 -4
  419. package/dist/wallet/wallet-provider-registry.js +64 -51
  420. package/dist/wallet/wallet-provider-resolver.js +62 -63
  421. package/dist/wallet/wallet-runtime-config.js +31 -44
  422. package/dist/wallet/wallet-secrets-store.js +44 -22
  423. package/dist/wallet/wallet-send-approvals.js +1894 -592
  424. package/dist/wallet/wallet-send-execution-ledger.js +292 -0
  425. package/dist/wallet/wallet-settlement-links.js +17 -16
  426. package/dist/wallet/wallet-standard-review.js +353 -0
  427. package/dist/wallet/wallet-status.js +0 -9
  428. package/dist/wallet/wallet-task-ledger.js +16 -2
  429. package/dist/web/accounts.js +3 -3
  430. package/dist/web/auth-store.js +18 -18
  431. package/dist/web/auto-reply/heartbeat-runner.js +1 -1
  432. package/dist/web/auto-reply/monitor.js +2 -2
  433. package/dist/web/session.js +4 -4
  434. package/dist/wizard/host-security-capability.js +15 -24
  435. package/dist/wizard/onboarding.finalize.js +63 -184
  436. package/dist/wizard/onboarding.host-security.js +118 -1368
  437. package/dist/wizard/onboarding.js +180 -242
  438. package/dist/wizard/onboarding.wallet.js +323 -829
  439. package/extensions/acpx/package.json +1 -1
  440. package/extensions/bluebubbles/package.json +1 -1
  441. package/extensions/copilot-proxy/package.json +1 -1
  442. package/extensions/diagnostics-otel/package.json +1 -1
  443. package/extensions/fased-federation/package.json +1 -1
  444. package/extensions/google-gemini-cli-auth/package.json +1 -1
  445. package/extensions/imessage/package.json +1 -1
  446. package/extensions/irc/package.json +1 -1
  447. package/extensions/line/package.json +1 -1
  448. package/extensions/llm-task/package.json +1 -1
  449. package/extensions/lobster/package.json +1 -1
  450. package/extensions/matrix/CHANGELOG.md +18 -0
  451. package/extensions/matrix/package.json +1 -1
  452. package/extensions/mattermost/package.json +1 -1
  453. package/extensions/memory-core/package.json +2 -2
  454. package/extensions/memory-lancedb/package.json +1 -1
  455. package/extensions/minimax-portal-auth/package.json +1 -1
  456. package/extensions/msteams/CHANGELOG.md +18 -0
  457. package/extensions/msteams/package.json +1 -1
  458. package/extensions/nextcloud-talk/package.json +1 -1
  459. package/extensions/nostr/CHANGELOG.md +18 -0
  460. package/extensions/nostr/package.json +1 -1
  461. package/extensions/open-prose/package.json +1 -1
  462. package/extensions/sat-mining/index.ts +498 -153
  463. package/extensions/sat-mining/package.json +1 -1
  464. package/extensions/sat-mining/signer-codec-schema.v1.json +374 -0
  465. package/extensions/sat-mining/src/audit-store.ts +50 -5
  466. package/extensions/sat-mining/src/claim-service.ts +85 -14
  467. package/extensions/sat-mining/src/config.ts +9 -0
  468. package/extensions/sat-mining/src/cycle-progress.ts +16 -8
  469. package/extensions/sat-mining/src/epoch-service.ts +9 -5
  470. package/extensions/sat-mining/src/gateway-runner.ts +21 -1
  471. package/extensions/sat-mining/src/protocol-contract.ts +45 -1
  472. package/extensions/sat-mining/src/recovery-service.ts +312 -0
  473. package/extensions/sat-mining/src/round-watcher.ts +391 -81
  474. package/extensions/sat-mining/src/rpc-read.ts +330 -89
  475. package/extensions/sat-mining/src/runtime.ts +14 -0
  476. package/extensions/sat-mining/src/sat-bond-layout.ts +6 -0
  477. package/extensions/sat-mining/src/signer-codec-manifest.ts +429 -0
  478. package/extensions/sat-mining/src/solana-submit.ts +1199 -428
  479. package/extensions/sat-mining/src/submission-ledger.ts +433 -0
  480. package/extensions/signal/package.json +1 -1
  481. package/extensions/synology-chat/package.json +1 -1
  482. package/extensions/tlon/package.json +1 -1
  483. package/extensions/twitch/CHANGELOG.md +18 -0
  484. package/extensions/twitch/package.json +1 -1
  485. package/extensions/voice-call/CHANGELOG.md +18 -0
  486. package/extensions/voice-call/package.json +1 -1
  487. package/extensions/zalo/CHANGELOG.md +18 -0
  488. package/extensions/zalo/package.json +1 -1
  489. package/extensions/zalouser/CHANGELOG.md +18 -0
  490. package/extensions/zalouser/package.json +1 -1
  491. package/install.sh +4955 -0
  492. package/package.json +24 -5
  493. package/scripts/fased-host-updater.mjs +1421 -0
  494. package/scripts/fased-host-updaterctl.mjs +186 -0
  495. package/scripts/fased-managed-service.sh +36 -0
  496. package/scripts/fased-managed-updater.mjs +3065 -156
  497. package/scripts/fased-signer-enroll-hosting.sh +275 -0
  498. package/scripts/fased-signer-network-hosting.sh +143 -0
  499. package/scripts/fased-signer-owner-policy.mjs +1430 -0
  500. package/scripts/fased-signer-policy-hosting.sh +50 -0
  501. package/scripts/fased-signer-policy-local.sh +26 -0
  502. package/scripts/hosted-release-manifest.mjs +185 -0
  503. package/scripts/install-fased-signerd.sh +217 -0
  504. package/scripts/install-managed-runtime.mjs +212 -10
  505. package/scripts/managed-runtime-layout.mjs +75 -3
  506. package/scripts/migrate-hosted-signer-v2.mjs +58 -0
  507. package/scripts/start-managed.sh +169 -360
  508. package/dist/control-ui/assets/mining-commit-R-6nu87p.js +0 -2
  509. package/dist/plugin-sdk/tmp-fased-dir-BdFQvrvw.d.ts +0 -77
  510. package/dist/wallet/local-socket-signer-broker.js +0 -224
  511. package/dist/wallet/local-socket-signer-custody.js +0 -42
  512. package/dist/wallet/providers/embedded-keystore-adapter.js +0 -402
  513. package/dist/wallet/providers/privy-adapter.js +0 -80
  514. package/dist/wallet/wallet-custody.js +0 -1836
@@ -1,7 +1,7 @@
1
1
  import { CONFIG_DIR, isRecord, resolveUserPath } from "../utils.js";
2
2
  import { resolveFasedAgentPackageRootSync } from "../infra/fased-root.js";
3
3
  import { enablePluginInConfig } from "./enable.js";
4
- import fs from "node:fs";
4
+ import syncFs from "node:fs";
5
5
  import path from "node:path";
6
6
 
7
7
  //#region src/plugins/web-search-install-catalog.ts
@@ -48,11 +48,11 @@ function parseCatalogEntries(raw) {
48
48
  function loadCatalogEntriesFromPaths(paths) {
49
49
  const entries = [];
50
50
  for (const resolved of paths) {
51
- if (!fs.existsSync(resolved)) {
51
+ if (!syncFs.existsSync(resolved)) {
52
52
  continue;
53
53
  }
54
54
  try {
55
- const payload = JSON.parse(fs.readFileSync(resolved, "utf-8"));
55
+ const payload = JSON.parse(syncFs.readFileSync(resolved, "utf-8"));
56
56
  entries.push(...parseCatalogEntries(payload));
57
57
  } catch {}
58
58
  }
@@ -1,4 +1,5 @@
1
1
  import { BASE_THINKING_LEVELS } from "../shared/model-thinking.js";
2
+ import { XIAOMI_MODEL_IDS } from "./xiaomi-models.js";
2
3
  import { CLOUDFLARE_AI_GATEWAY_MODEL_IDS, CLOUDFLARE_AI_GATEWAY_PROVIDER_BRAND_ID, CLOUDFLARE_AI_GATEWAY_ROUTE_ID } from "./cloudflare-ai-gateway-shared.js";
3
4
  import { HUGGINGFACE_MODEL_IDS } from "./huggingface-models.js";
4
5
  import { OPENCODE_ZEN_MODEL_IDS } from "./opencode-zen-shared.js";
@@ -6,7 +7,6 @@ import { SYNTHETIC_MODEL_IDS } from "./synthetic-models.js";
6
7
  import { TOGETHER_MODEL_IDS } from "./together-models.js";
7
8
  import { VENICE_MODEL_IDS } from "./venice-models.js";
8
9
  import { VERCEL_AI_GATEWAY_MODEL_IDS } from "./vercel-ai-gateway-models.js";
9
- import { XIAOMI_MODEL_IDS } from "./xiaomi-models.js";
10
10
  import { LITELLM_BASE_URL } from "./litellm-models.js";
11
11
  import { ANTHROPIC_MODEL_IDS, ANTHROPIC_PROVIDER_BRAND_ID, ANTHROPIC_ROUTE_ID, BYTEPLUS_CODING_MODEL_IDS, BYTEPLUS_CODING_ROUTE_ID, BYTEPLUS_MODEL_IDS, BYTEPLUS_PLAN_ROUTE_ID, BYTEPLUS_PROVIDER_BRAND_ID, BYTEPLUS_ROUTE_ID, CHUTES_MODEL_IDS, CHUTES_PROVIDER_BRAND_ID, CHUTES_ROUTE_ID, COPILOT_PROVIDER_BRAND_ID, COPILOT_PROXY_MODEL_IDS, COPILOT_PROXY_ROUTE_ID, CUSTOM_PROVIDER_BRAND_ID, CUSTOM_PROVIDER_ROUTE_ID, GITHUB_COPILOT_ROUTE_ID, GOOGLE_API_ROUTE_ID, GOOGLE_GEMINI_CLI_ROUTE_ID, GOOGLE_GEMINI_MODEL_IDS, GOOGLE_PROVIDER_BRAND_ID, HUGGINGFACE_PROVIDER_BRAND_ID, HUGGINGFACE_ROUTE_ID, KIMI_CODING_MODEL_IDS, KIMI_CODING_ROUTE_ID, LITELLM_PROVIDER_BRAND_ID, LITELLM_ROUTE_ID, LMSTUDIO_PROVIDER_BRAND_ID, LMSTUDIO_ROUTE_ID, MINIMAX_API_ROUTE_ID, MINIMAX_CN_ROUTE_ID, MINIMAX_MODEL_IDS, MINIMAX_PORTAL_ROUTE_ID, MINIMAX_PROVIDER_BRAND_ID, MISTRAL_MODEL_IDS, MISTRAL_PROVIDER_BRAND_ID, MISTRAL_ROUTE_ID, MOONSHOT_MODEL_IDS, MOONSHOT_PROVIDER_BRAND_ID, MOONSHOT_ROUTE_ID, OLLAMA_PROVIDER_BRAND_ID, OLLAMA_ROUTE_ID, OPENAI_API_MODEL_IDS, OPENAI_API_ROUTE_ID, OPENAI_CODEX_ROUTE_ID, OPENAI_PROVIDER_BRAND_ID, OPENAI_SIGN_IN_MODEL_IDS, OPENCODE_ZEN_PROVIDER_BRAND_ID, OPENCODE_ZEN_ROUTE_ID, OPENROUTER_MODEL_IDS, OPENROUTER_PROVIDER_BRAND_ID, OPENROUTER_ROUTE_ID, QIANFAN_MODEL_IDS, QIANFAN_PROVIDER_BRAND_ID, QIANFAN_ROUTE_ID, QWEN_API_MODEL_IDS, QWEN_API_ROUTE_ID, QWEN_CODING_PLAN_MODEL_IDS, QWEN_CODING_PLAN_ROUTE_ID, QWEN_PROVIDER_BRAND_ID, SYNTHETIC_PROVIDER_BRAND_ID, SYNTHETIC_ROUTE_ID, TOGETHER_PROVIDER_BRAND_ID, TOGETHER_ROUTE_ID, VENICE_PROVIDER_BRAND_ID, VENICE_ROUTE_ID, VERCEL_AI_GATEWAY_PROVIDER_BRAND_ID, VERCEL_AI_GATEWAY_ROUTE_ID, VLLM_PROVIDER_BRAND_ID, VLLM_ROUTE_ID, VOLCENGINE_CODING_MODEL_IDS, VOLCENGINE_CODING_ROUTE_ID, VOLCENGINE_MODEL_IDS, VOLCENGINE_PLAN_ROUTE_ID, VOLCENGINE_PROVIDER_BRAND_ID, VOLCENGINE_ROUTE_ID, XAI_MODEL_IDS, XAI_PROVIDER_BRAND_ID, XAI_ROUTE_ID, XIAOMI_PROVIDER_BRAND_ID, XIAOMI_ROUTE_ID, ZAI_MODEL_IDS, ZAI_PROVIDER_BRAND_ID, ZAI_ROUTE_ID, listProviderBrandManifests, lookupProviderManifestModelCapability, resolveProviderRouteModelCapability } from "./registry.js";
12
12
  import { readFile } from "node:fs/promises";
@@ -1,4 +1,5 @@
1
1
  import { BASE_THINKING_LEVELS, XHIGH_THINKING_LEVELS, resolveModelThinkingCapability } from "../shared/model-thinking.js";
2
+ import { XIAOMI_MODEL_IDS, buildXiaomiModelCapabilityOverrides } from "./xiaomi-models.js";
2
3
  import { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_ID, CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, CLOUDFLARE_AI_GATEWAY_MODEL_CATALOG, CLOUDFLARE_AI_GATEWAY_MODEL_IDS, CLOUDFLARE_AI_GATEWAY_MODEL_REFS, CLOUDFLARE_AI_GATEWAY_PROVIDER_BRAND_ID, CLOUDFLARE_AI_GATEWAY_ROUTE_ID, buildCloudflareAiGatewayModelCapabilityOverrides, resolveCloudflareAiGatewayBaseUrl } from "./cloudflare-ai-gateway-shared.js";
3
4
  import { HUGGINGFACE_DEFAULT_MODEL_ID, HUGGINGFACE_DEFAULT_MODEL_REF, HUGGINGFACE_MODEL_IDS, HUGGINGFACE_MODEL_REFS, buildHuggingfaceModelCapabilityOverrides } from "./huggingface-models.js";
4
5
  import { OPENCODE_ZEN_DEFAULT_MODEL, OPENCODE_ZEN_DEFAULT_MODEL_REF, OPENCODE_ZEN_MODEL_IDS, OPENCODE_ZEN_MODEL_REFS, buildOpencodeZenModelCapabilityOverrides } from "./opencode-zen-shared.js";
@@ -6,7 +7,6 @@ import { SYNTHETIC_MODEL_IDS, buildSyntheticModelCapabilityOverrides } from "./s
6
7
  import { TOGETHER_DEFAULT_MODEL_ID, TOGETHER_DEFAULT_MODEL_REF, TOGETHER_MODEL_IDS, TOGETHER_MODEL_REFS, buildTogetherModelCapabilityOverrides } from "./together-models.js";
7
8
  import { VENICE_DEFAULT_MODEL_ID, VENICE_DEFAULT_MODEL_REF, VENICE_MODEL_IDS, VENICE_MODEL_REFS, buildVeniceModelCapabilityOverrides } from "./venice-models.js";
8
9
  import { VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, VERCEL_AI_GATEWAY_MODEL_IDS, VERCEL_AI_GATEWAY_MODEL_REFS, buildVercelAiGatewayModelCapabilityOverrides } from "./vercel-ai-gateway-models.js";
9
- import { XIAOMI_MODEL_IDS, buildXiaomiModelCapabilityOverrides } from "./xiaomi-models.js";
10
10
  import { LITELLM_BASE_URL, LITELLM_DEFAULT_MODEL_ID, LITELLM_MODEL_IDS, LITELLM_MODEL_REFS } from "./litellm-models.js";
11
11
 
12
12
  //#region src/providers/registry.ts
@@ -8,11 +8,11 @@ import { isNonEmptyString, isRecord, writeTextFileAtomic } from "./shared.js";
8
8
  import { resolveSecretRefValue } from "./resolve.js";
9
9
  import "../agents/auth-profiles.js";
10
10
  import { normalizeProviderId } from "../agents/model-selection.js";
11
+ import { prepareSecretsRuntimeSnapshot } from "./runtime.js";
11
12
  import { listKnownSecretEnvVarNames } from "./provider-env-vars.js";
12
13
  import { createSecretsConfigIO } from "./config-io.js";
13
14
  import { normalizeSecretsPlanOptions, resolveValidatedTargetPathSegments } from "./plan.js";
14
- import { prepareSecretsRuntimeSnapshot } from "./runtime.js";
15
- import fs from "node:fs";
15
+ import syncFs from "node:fs";
16
16
  import os from "node:os";
17
17
  import path from "node:path";
18
18
  import { isDeepStrictEqual } from "node:util";
@@ -125,8 +125,8 @@ function collectAuthStorePaths(config, stateDir) {
125
125
  const paths = new Set();
126
126
  paths.add(path.join(resolveUserPath(stateDir), "agents", "main", "agent", "auth-profiles.json"));
127
127
  const agentsRoot = path.join(resolveUserPath(stateDir), "agents");
128
- if (fs.existsSync(agentsRoot)) {
129
- for (const entry of fs.readdirSync(agentsRoot, { withFileTypes: true })) {
128
+ if (syncFs.existsSync(agentsRoot)) {
129
+ for (const entry of syncFs.readdirSync(agentsRoot, { withFileTypes: true })) {
130
130
  if (!entry.isDirectory()) {
131
131
  continue;
132
132
  }
@@ -146,15 +146,15 @@ function collectAuthStorePaths(config, stateDir) {
146
146
  function collectAuthJsonPaths(stateDir) {
147
147
  const out = [];
148
148
  const agentsRoot = path.join(resolveUserPath(stateDir), "agents");
149
- if (!fs.existsSync(agentsRoot)) {
149
+ if (!syncFs.existsSync(agentsRoot)) {
150
150
  return out;
151
151
  }
152
- for (const entry of fs.readdirSync(agentsRoot, { withFileTypes: true })) {
152
+ for (const entry of syncFs.readdirSync(agentsRoot, { withFileTypes: true })) {
153
153
  if (!entry.isDirectory()) {
154
154
  continue;
155
155
  }
156
156
  const candidate = path.join(agentsRoot, entry.name, "agent", "auth.json");
157
- if (fs.existsSync(candidate)) {
157
+ if (syncFs.existsSync(candidate)) {
158
158
  out.push(candidate);
159
159
  }
160
160
  }
@@ -249,10 +249,10 @@ async function projectPlanState(params) {
249
249
  const authStoreByPath = new Map();
250
250
  if (options.scrubAuthProfilesForProviderTargets && providerTargets.size > 0) {
251
251
  for (const authStorePath of collectAuthStorePaths(nextConfig, stateDir)) {
252
- if (!fs.existsSync(authStorePath)) {
252
+ if (!syncFs.existsSync(authStorePath)) {
253
253
  continue;
254
254
  }
255
- const raw = fs.readFileSync(authStorePath, "utf8");
255
+ const raw = syncFs.readFileSync(authStorePath, "utf8");
256
256
  const parsed = JSON.parse(raw);
257
257
  if (!isRecord(parsed) || !isRecord(parsed.profiles)) {
258
258
  continue;
@@ -308,7 +308,7 @@ async function projectPlanState(params) {
308
308
  const authJsonByPath = new Map();
309
309
  if (options.scrubLegacyAuthJson) {
310
310
  for (const authJsonPath of collectAuthJsonPaths(stateDir)) {
311
- const raw = fs.readFileSync(authJsonPath, "utf8");
311
+ const raw = syncFs.readFileSync(authJsonPath, "utf8");
312
312
  const parsed = JSON.parse(raw);
313
313
  if (!isRecord(parsed)) {
314
314
  continue;
@@ -333,8 +333,8 @@ async function projectPlanState(params) {
333
333
  const envRawByPath = new Map();
334
334
  if (options.scrubEnv && scrubbedValues.size > 0) {
335
335
  const envPath = path.join(resolveConfigDir(params.env, os.homedir), ".env");
336
- if (fs.existsSync(envPath)) {
337
- const current = fs.readFileSync(envPath, "utf8");
336
+ if (syncFs.existsSync(envPath)) {
337
+ const current = syncFs.readFileSync(envPath, "utf8");
338
338
  const scrubbed = scrubEnvRaw(current, scrubbedValues, new Set(listKnownSecretEnvVarNames()));
339
339
  if (scrubbed.removed > 0 && scrubbed.nextRaw !== current) {
340
340
  envRawByPath.set(envPath, scrubbed.nextRaw);
@@ -387,24 +387,24 @@ async function projectPlanState(params) {
387
387
  };
388
388
  }
389
389
  function captureFileSnapshot(pathname) {
390
- if (!fs.existsSync(pathname)) {
390
+ if (!syncFs.existsSync(pathname)) {
391
391
  return {
392
392
  existed: false,
393
393
  content: "",
394
394
  mode: 384
395
395
  };
396
396
  }
397
- const stat = fs.statSync(pathname);
397
+ const stat = syncFs.statSync(pathname);
398
398
  return {
399
399
  existed: true,
400
- content: fs.readFileSync(pathname, "utf8"),
400
+ content: syncFs.readFileSync(pathname, "utf8"),
401
401
  mode: stat.mode & 511
402
402
  };
403
403
  }
404
404
  function restoreFileSnapshot(pathname, snapshot) {
405
405
  if (!snapshot.existed) {
406
- if (fs.existsSync(pathname)) {
407
- fs.rmSync(pathname, { force: true });
406
+ if (syncFs.existsSync(pathname)) {
407
+ syncFs.rmSync(pathname, { force: true });
408
408
  }
409
409
  return;
410
410
  }
@@ -10,7 +10,7 @@ import { resolveSecretRefValue, resolveSecretRefValues } from "./resolve.js";
10
10
  import { normalizeProviderId } from "../agents/model-selection.js";
11
11
  import { listKnownSecretEnvVarNames } from "./provider-env-vars.js";
12
12
  import { createSecretsConfigIO } from "./config-io.js";
13
- import fs from "node:fs";
13
+ import syncFs from "node:fs";
14
14
  import os from "node:os";
15
15
  import path from "node:path";
16
16
 
@@ -51,12 +51,12 @@ function parseEnvValue(raw) {
51
51
  return trimmed;
52
52
  }
53
53
  function collectEnvPlaintext(params) {
54
- if (!fs.existsSync(params.envPath)) {
54
+ if (!syncFs.existsSync(params.envPath)) {
55
55
  return;
56
56
  }
57
57
  params.collector.filesScanned.add(params.envPath);
58
58
  const knownKeys = new Set(listKnownSecretEnvVarNames());
59
- const raw = fs.readFileSync(params.envPath, "utf8");
59
+ const raw = syncFs.readFileSync(params.envPath, "utf8");
60
60
  const lines = raw.split(/\r?\n/);
61
61
  for (const line of lines) {
62
62
  const match = line.match(/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);
@@ -81,11 +81,11 @@ function collectEnvPlaintext(params) {
81
81
  }
82
82
  }
83
83
  function readJsonObject(filePath) {
84
- if (!fs.existsSync(filePath)) {
84
+ if (!syncFs.existsSync(filePath)) {
85
85
  return { value: null };
86
86
  }
87
87
  try {
88
- const raw = fs.readFileSync(filePath, "utf8");
88
+ const raw = syncFs.readFileSync(filePath, "utf8");
89
89
  const parsed = JSON.parse(raw);
90
90
  if (!isRecord(parsed)) {
91
91
  return { value: null };
@@ -196,8 +196,8 @@ function collectAuthStorePaths(config, stateDir) {
196
196
  const paths = new Set();
197
197
  paths.add(path.join(resolveUserPath(stateDir), "agents", "main", "agent", "auth-profiles.json"));
198
198
  const agentsRoot = path.join(resolveUserPath(stateDir), "agents");
199
- if (fs.existsSync(agentsRoot)) {
200
- for (const entry of fs.readdirSync(agentsRoot, { withFileTypes: true })) {
199
+ if (syncFs.existsSync(agentsRoot)) {
200
+ for (const entry of syncFs.readdirSync(agentsRoot, { withFileTypes: true })) {
201
201
  if (!entry.isDirectory()) {
202
202
  continue;
203
203
  }
@@ -215,7 +215,7 @@ function collectAuthStorePaths(config, stateDir) {
215
215
  return [...paths];
216
216
  }
217
217
  function collectAuthStoreSecrets(params) {
218
- if (!fs.existsSync(params.authStorePath)) {
218
+ if (!syncFs.existsSync(params.authStorePath)) {
219
219
  return;
220
220
  }
221
221
  params.collector.filesScanned.add(params.authStorePath);
@@ -315,15 +315,15 @@ function collectAuthStoreSecrets(params) {
315
315
  }
316
316
  function collectAuthJsonResidue(params) {
317
317
  const agentsRoot = path.join(resolveUserPath(params.stateDir), "agents");
318
- if (!fs.existsSync(agentsRoot)) {
318
+ if (!syncFs.existsSync(agentsRoot)) {
319
319
  return;
320
320
  }
321
- for (const entry of fs.readdirSync(agentsRoot, { withFileTypes: true })) {
321
+ for (const entry of syncFs.readdirSync(agentsRoot, { withFileTypes: true })) {
322
322
  if (!entry.isDirectory()) {
323
323
  continue;
324
324
  }
325
325
  const authJsonPath = path.join(agentsRoot, entry.name, "agent", "auth.json");
326
- if (!fs.existsSync(authJsonPath)) {
326
+ if (!syncFs.existsSync(authJsonPath)) {
327
327
  continue;
328
328
  }
329
329
  params.collector.filesScanned.add(authJsonPath);
@@ -292,4 +292,4 @@ function clearSecretsRuntimeSnapshot() {
292
292
  }
293
293
 
294
294
  //#endregion
295
- export { prepareSecretsRuntimeSnapshot };
295
+ export { activateSecretsRuntimeSnapshot, clearSecretsRuntimeSnapshot, getActiveSecretsRuntimeSnapshot, prepareSecretsRuntimeSnapshot };
@@ -1,4 +1,4 @@
1
- import fs from "node:fs";
1
+ import syncFs from "node:fs";
2
2
  import path from "node:path";
3
3
 
4
4
  //#region src/secrets/shared.ts
@@ -15,28 +15,28 @@ function normalizePositiveInt(value, fallback) {
15
15
  return Math.max(1, Math.floor(fallback));
16
16
  }
17
17
  function ensureDirForFile(filePath) {
18
- fs.mkdirSync(path.dirname(filePath), {
18
+ syncFs.mkdirSync(path.dirname(filePath), {
19
19
  recursive: true,
20
20
  mode: 448
21
21
  });
22
22
  }
23
23
  function writeJsonFileSecure(pathname, value) {
24
24
  ensureDirForFile(pathname);
25
- fs.writeFileSync(pathname, `${JSON.stringify(value, null, 2)}\n`, "utf8");
26
- fs.chmodSync(pathname, 384);
25
+ syncFs.writeFileSync(pathname, `${JSON.stringify(value, null, 2)}\n`, "utf8");
26
+ syncFs.chmodSync(pathname, 384);
27
27
  }
28
28
  function readTextFileIfExists(pathname) {
29
- if (!fs.existsSync(pathname)) {
29
+ if (!syncFs.existsSync(pathname)) {
30
30
  return null;
31
31
  }
32
- return fs.readFileSync(pathname, "utf8");
32
+ return syncFs.readFileSync(pathname, "utf8");
33
33
  }
34
34
  function writeTextFileAtomic(pathname, value, mode = 384) {
35
35
  ensureDirForFile(pathname);
36
36
  const tempPath = `${pathname}.tmp-${process.pid}-${Date.now()}`;
37
- fs.writeFileSync(tempPath, value, "utf8");
38
- fs.chmodSync(tempPath, mode);
39
- fs.renameSync(tempPath, pathname);
37
+ syncFs.writeFileSync(tempPath, value, "utf8");
38
+ syncFs.chmodSync(tempPath, mode);
39
+ syncFs.renameSync(tempPath, pathname);
40
40
  }
41
41
 
42
42
  //#endregion
@@ -1,4 +1,4 @@
1
- import fs from "node:fs";
1
+ import syncFs from "node:fs";
2
2
  import path from "node:path";
3
3
 
4
4
  //#region src/security/scan-paths.ts
@@ -10,7 +10,7 @@ function isPathInside(basePath, candidatePath) {
10
10
  }
11
11
  function safeRealpathSync(filePath) {
12
12
  try {
13
- return fs.realpathSync(filePath);
13
+ return syncFs.realpathSync(filePath);
14
14
  } catch {
15
15
  return null;
16
16
  }
@@ -1,4 +1,4 @@
1
- import fs from "node:fs";
1
+ import syncFs from "node:fs";
2
2
  import path from "node:path";
3
3
 
4
4
  //#region src/shared/config-eval.ts
@@ -133,7 +133,7 @@ function hasBinary(bin) {
133
133
  for (const ext of extensions) {
134
134
  const candidate = path.join(part, bin + ext);
135
135
  try {
136
- fs.accessSync(candidate, fs.constants.X_OK);
136
+ syncFs.accessSync(candidate, syncFs.constants.X_OK);
137
137
  hasBinaryCache.set(bin, true);
138
138
  return true;
139
139
  } catch {}
@@ -1,4 +1,4 @@
1
- import fs from "node:fs";
1
+ import syncFs from "node:fs";
2
2
 
3
3
  //#region src/shared/pid-alive.ts
4
4
  /**
@@ -10,7 +10,7 @@ function isZombieProcess(pid) {
10
10
  return false;
11
11
  }
12
12
  try {
13
- const status = fs.readFileSync(`/proc/${pid}/status`, "utf8");
13
+ const status = syncFs.readFileSync(`/proc/${pid}/status`, "utf8");
14
14
  const stateMatch = status.match(/^State:\s+(\S)/m);
15
15
  return stateMatch?.[1] === "Z";
16
16
  } catch {
@@ -1,6 +1,6 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
2
  import { createTaskRecord } from "./task-registry.js";
3
- import fs from "node:fs";
3
+ import syncFs from "node:fs";
4
4
  import path from "node:path";
5
5
  import { randomUUID } from "node:crypto";
6
6
 
@@ -69,7 +69,7 @@ function loadStore(filePath = resolveStandingOrdersPath()) {
69
69
  return cachedStore;
70
70
  }
71
71
  try {
72
- cachedStore = sanitizeStore(JSON.parse(fs.readFileSync(filePath, "utf8")));
72
+ cachedStore = sanitizeStore(JSON.parse(syncFs.readFileSync(filePath, "utf8")));
73
73
  } catch {
74
74
  cachedStore = defaultStore();
75
75
  }
@@ -77,10 +77,10 @@ function loadStore(filePath = resolveStandingOrdersPath()) {
77
77
  return cachedStore;
78
78
  }
79
79
  function saveStore(store, filePath = resolveStandingOrdersPath()) {
80
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
80
+ syncFs.mkdirSync(path.dirname(filePath), { recursive: true });
81
81
  const tmpPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
82
- fs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
83
- fs.renameSync(tmpPath, filePath);
82
+ syncFs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
83
+ syncFs.renameSync(tmpPath, filePath);
84
84
  cachedStore = store;
85
85
  loadedPath = filePath;
86
86
  }
@@ -1,7 +1,7 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
2
  import { resolveAgentIdFromSessionKey } from "../routing/session-key.js";
3
3
  import { findTaskRecord, markTaskTerminal, updateTaskRecord } from "./task-registry.js";
4
- import fs from "node:fs";
4
+ import syncFs from "node:fs";
5
5
  import path from "node:path";
6
6
 
7
7
  //#region src/tasks/task-flow-registry.ts
@@ -85,7 +85,7 @@ function loadStore(filePath = resolveTaskFlowRegistryPath()) {
85
85
  return cachedStore;
86
86
  }
87
87
  try {
88
- cachedStore = sanitizeStore(JSON.parse(fs.readFileSync(filePath, "utf8")));
88
+ cachedStore = sanitizeStore(JSON.parse(syncFs.readFileSync(filePath, "utf8")));
89
89
  } catch {
90
90
  cachedStore = defaultStore();
91
91
  }
@@ -93,10 +93,10 @@ function loadStore(filePath = resolveTaskFlowRegistryPath()) {
93
93
  return cachedStore;
94
94
  }
95
95
  function saveStore(store, filePath = resolveTaskFlowRegistryPath()) {
96
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
96
+ syncFs.mkdirSync(path.dirname(filePath), { recursive: true });
97
97
  const tmpPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
98
- fs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
99
- fs.renameSync(tmpPath, filePath);
98
+ syncFs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
99
+ syncFs.renameSync(tmpPath, filePath);
100
100
  cachedStore = store;
101
101
  loadedPath = filePath;
102
102
  }
@@ -1,6 +1,6 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
2
  import { resolveAgentIdFromSessionKey } from "../routing/session-key.js";
3
- import fs from "node:fs";
3
+ import syncFs from "node:fs";
4
4
  import path from "node:path";
5
5
 
6
6
  //#region src/tasks/task-registry.ts
@@ -41,7 +41,7 @@ function loadStore(filePath = resolveTaskRegistryPath()) {
41
41
  return cachedStore;
42
42
  }
43
43
  try {
44
- const raw = fs.readFileSync(filePath, "utf8");
44
+ const raw = syncFs.readFileSync(filePath, "utf8");
45
45
  cachedStore = sanitizeStore(JSON.parse(raw));
46
46
  } catch {
47
47
  cachedStore = defaultStore();
@@ -50,10 +50,10 @@ function loadStore(filePath = resolveTaskRegistryPath()) {
50
50
  return cachedStore;
51
51
  }
52
52
  function saveStore(store, filePath = resolveTaskRegistryPath()) {
53
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
53
+ syncFs.mkdirSync(path.dirname(filePath), { recursive: true });
54
54
  const tmpPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
55
- fs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
56
- fs.renameSync(tmpPath, filePath);
55
+ syncFs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
56
+ syncFs.renameSync(tmpPath, filePath);
57
57
  cachedStore = store;
58
58
  loadedPath = filePath;
59
59
  }
@@ -1,7 +1,7 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
2
  import { normalizeTaskWorkflowGraphInput } from "./workflow-graph.js";
3
3
  import { normalizeSimpleTaskWorkflowInput } from "./workflow.js";
4
- import fs from "node:fs";
4
+ import syncFs from "node:fs";
5
5
  import path from "node:path";
6
6
  import { randomUUID } from "node:crypto";
7
7
 
@@ -154,7 +154,7 @@ function auditTaskWorkflowDefinitions(params) {
154
154
  const filePath = params?.filePath ?? resolveTaskWorkflowDefinitionsPath();
155
155
  let raw;
156
156
  try {
157
- raw = JSON.parse(fs.readFileSync(filePath, "utf8"));
157
+ raw = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
158
158
  } catch (err) {
159
159
  if (err.code === "ENOENT") {
160
160
  return { findings: [] };
@@ -197,7 +197,7 @@ function loadStore(filePath = resolveTaskWorkflowDefinitionsPath()) {
197
197
  return cachedStore;
198
198
  }
199
199
  try {
200
- cachedStore = sanitizeStore(JSON.parse(fs.readFileSync(filePath, "utf8")));
200
+ cachedStore = sanitizeStore(JSON.parse(syncFs.readFileSync(filePath, "utf8")));
201
201
  } catch {
202
202
  cachedStore = defaultStore();
203
203
  }
@@ -205,10 +205,10 @@ function loadStore(filePath = resolveTaskWorkflowDefinitionsPath()) {
205
205
  return cachedStore;
206
206
  }
207
207
  function saveStore(store, filePath = resolveTaskWorkflowDefinitionsPath()) {
208
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
208
+ syncFs.mkdirSync(path.dirname(filePath), { recursive: true });
209
209
  const tmpPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
210
- fs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
211
- fs.renameSync(tmpPath, filePath);
210
+ syncFs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
211
+ syncFs.renameSync(tmpPath, filePath);
212
212
  cachedStore = store;
213
213
  loadedPath = filePath;
214
214
  }
@@ -1,6 +1,6 @@
1
1
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../routing/account-id.js";
2
2
  import "../routing/session-key.js";
3
- import fs from "node:fs";
3
+ import syncFs from "node:fs";
4
4
 
5
5
  //#region src/telegram/token.ts
6
6
  function resolveTelegramToken(cfg, opts = {}) {
@@ -21,7 +21,7 @@ function resolveTelegramToken(cfg, opts = {}) {
21
21
  const accountCfg = resolveAccountCfg(accountId !== DEFAULT_ACCOUNT_ID ? accountId : DEFAULT_ACCOUNT_ID);
22
22
  const accountTokenFile = accountCfg?.tokenFile?.trim();
23
23
  if (accountTokenFile) {
24
- if (!fs.existsSync(accountTokenFile)) {
24
+ if (!syncFs.existsSync(accountTokenFile)) {
25
25
  opts.logMissingFile?.(`channels.telegram.accounts.${accountId}.tokenFile not found: ${accountTokenFile}`);
26
26
  return {
27
27
  token: "",
@@ -29,7 +29,7 @@ function resolveTelegramToken(cfg, opts = {}) {
29
29
  };
30
30
  }
31
31
  try {
32
- const token = fs.readFileSync(accountTokenFile, "utf-8").trim();
32
+ const token = syncFs.readFileSync(accountTokenFile, "utf-8").trim();
33
33
  if (token) {
34
34
  return {
35
35
  token,
@@ -58,7 +58,7 @@ function resolveTelegramToken(cfg, opts = {}) {
58
58
  const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
59
59
  const tokenFile = telegramCfg?.tokenFile?.trim();
60
60
  if (tokenFile && allowEnv) {
61
- if (!fs.existsSync(tokenFile)) {
61
+ if (!syncFs.existsSync(tokenFile)) {
62
62
  opts.logMissingFile?.(`channels.telegram.tokenFile not found: ${tokenFile}`);
63
63
  return {
64
64
  token: "",
@@ -66,7 +66,7 @@ function resolveTelegramToken(cfg, opts = {}) {
66
66
  };
67
67
  }
68
68
  try {
69
- const token = fs.readFileSync(tokenFile, "utf-8").trim();
69
+ const token = syncFs.readFileSync(tokenFile, "utf-8").trim();
70
70
  if (token) {
71
71
  return {
72
72
  token,
package/dist/utils.js CHANGED
@@ -2,20 +2,20 @@ import { expandHomePrefix, resolveEffectiveHomeDir, resolveRequiredHomeDir } fro
2
2
  import { resolveOAuthDir } from "./config/paths.js";
3
3
  import { logVerbose, shouldLogVerbose } from "./globals.js";
4
4
  import { isPlainObject } from "./infra/plain-object.js";
5
- import fs from "node:fs";
5
+ import syncFs from "node:fs";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
8
8
 
9
9
  //#region src/utils.ts
10
10
  async function ensureDir(dir) {
11
- await fs.promises.mkdir(dir, { recursive: true });
11
+ await syncFs.promises.mkdir(dir, { recursive: true });
12
12
  }
13
13
  /**
14
14
  * Check if a file or directory exists at the given path.
15
15
  */
16
16
  async function pathExists(targetPath) {
17
17
  try {
18
- await fs.promises.access(targetPath);
18
+ await syncFs.promises.access(targetPath);
19
19
  return true;
20
20
  } catch {
21
21
  return false;
@@ -129,7 +129,7 @@ function readLidReverseMapping(lid, opts) {
129
129
  for (const dir of mappingDirs) {
130
130
  const mappingPath = path.join(dir, mappingFilename);
131
131
  try {
132
- const data = fs.readFileSync(mappingPath, "utf8");
132
+ const data = syncFs.readFileSync(mappingPath, "utf8");
133
133
  const phone = JSON.parse(data);
134
134
  if (phone === null || phone === undefined) {
135
135
  continue;
@@ -250,7 +250,7 @@ function resolveConfigDir(env = process.env, homedir = os.homedir) {
250
250
  }
251
251
  const newDir = path.join(resolveRequiredHomeDir(env, homedir), ".fased");
252
252
  try {
253
- const hasNew = fs.existsSync(newDir);
253
+ const hasNew = syncFs.existsSync(newDir);
254
254
  if (hasNew) {
255
255
  return newDir;
256
256
  }