@fased/fased 0.1.65 → 0.1.67

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 (900) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +0 -0
  3. package/README.md +4 -0
  4. package/assets/avatar-placeholder.svg +0 -0
  5. package/assets/chrome-extension/README.md +0 -0
  6. package/assets/chrome-extension/background-utils.js +0 -0
  7. package/assets/chrome-extension/background.js +0 -0
  8. package/assets/chrome-extension/icons/icon128.png +0 -0
  9. package/assets/chrome-extension/icons/icon16.png +0 -0
  10. package/assets/chrome-extension/icons/icon32.png +0 -0
  11. package/assets/chrome-extension/icons/icon48.png +0 -0
  12. package/assets/chrome-extension/manifest.json +0 -0
  13. package/assets/chrome-extension/options-validation.js +0 -0
  14. package/assets/chrome-extension/options.html +0 -0
  15. package/assets/chrome-extension/options.js +0 -0
  16. package/config/official-external-plugin-catalog.json +0 -0
  17. package/config/sat-runtime.env +0 -0
  18. package/dist/acp/client.js +2 -2
  19. package/dist/acp/secret-file.js +2 -2
  20. package/dist/agents/agent-scope.js +2 -2
  21. package/dist/agents/apply-patch.js +8 -8
  22. package/dist/agents/auth-profiles/paths.js +2 -2
  23. package/dist/agents/auth-profiles/store.js +4 -4
  24. package/dist/agents/bash-tools.shared.js +2 -2
  25. package/dist/agents/cli-credentials.js +4 -4
  26. package/dist/agents/docs-path.js +3 -3
  27. package/dist/agents/embedded-pi-mcp.js +4 -4
  28. package/dist/agents/identity-avatar.js +3 -3
  29. package/dist/agents/identity-file.js +2 -2
  30. package/dist/agents/openai-codex-app-server.js +5 -5
  31. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  32. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  33. package/dist/agents/pi-model-discovery.js +6 -6
  34. package/dist/agents/pi-project-settings.js +3 -3
  35. package/dist/agents/sandbox/fs-bridge.js +2 -2
  36. package/dist/agents/session-dirs.js +4 -4
  37. package/dist/agents/session-write-lock.js +13 -13
  38. package/dist/agents/shell-utils.js +5 -5
  39. package/dist/agents/skills/bundled-dir.js +4 -4
  40. package/dist/agents/skills/local-loader.js +6 -6
  41. package/dist/agents/skills/plugin-skills.js +2 -2
  42. package/dist/agents/skills/trust.js +6 -6
  43. package/dist/agents/skills/workspace.js +22 -22
  44. package/dist/agents/skills-install-download.js +7 -7
  45. package/dist/agents/skills-install-plan.js +2 -2
  46. package/dist/agents/skills-install.js +2 -2
  47. package/dist/agents/skills-status.js +2 -2
  48. package/dist/agents/subagent-depth.js +2 -2
  49. package/dist/agents/system-prompt-params.js +2 -2
  50. package/dist/agents/workspace.js +22 -22
  51. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  52. package/dist/auto-reply/reply/agent-runner.js +2 -2
  53. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  54. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  55. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  56. package/dist/auto-reply/reply/session.js +3 -3
  57. package/dist/auto-reply/skill-commands.js +3 -3
  58. package/dist/auto-reply/status.js +6 -6
  59. package/dist/brand.js +1 -1
  60. package/dist/browser/chrome.executables.js +3 -3
  61. package/dist/browser/chrome.js +3 -3
  62. package/dist/browser/chrome.profile-decoration.js +6 -6
  63. package/dist/browser/profiles-service.js +2 -2
  64. package/dist/browser/server-context.js +2 -2
  65. package/dist/browser/trash.js +4 -4
  66. package/dist/build-info.json +3 -3
  67. package/dist/bundled/boot-md/HOOK.md +0 -0
  68. package/dist/bundled/bootstrap-extra-files/HOOK.md +0 -0
  69. package/dist/bundled/command-logger/HOOK.md +0 -0
  70. package/dist/bundled/session-memory/HOOK.md +0 -0
  71. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  72. package/dist/canvas-host/a2ui/index.html +0 -0
  73. package/dist/canvas-host/server.js +4 -4
  74. package/dist/capabilities/catalog.js +3 -3
  75. package/dist/channels/plugins/catalog.js +3 -3
  76. package/dist/cli/browser-cli-extension.js +6 -6
  77. package/dist/cli/command-format.js +2 -2
  78. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  79. package/dist/cli/dns-cli.js +9 -9
  80. package/dist/cli/gateway-cli/dev.js +5 -5
  81. package/dist/cli/gateway-cli/run.js +2 -2
  82. package/dist/cli/hooks-cli.js +5 -5
  83. package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
  84. package/dist/cli/memory-cli.js +7 -7
  85. package/dist/cli/nodes-media-utils.js +2 -2
  86. package/dist/cli/plugins-cli.js +2 -2
  87. package/dist/cli/secrets-cli.js +3 -3
  88. package/dist/cli/windows-argv.js +2 -2
  89. package/dist/commands/dashboard-link.js +3 -3
  90. package/dist/commands/doctor-install.js +5 -5
  91. package/dist/commands/doctor-memory-search.js +2 -2
  92. package/dist/commands/doctor-platform-notes.js +2 -2
  93. package/dist/commands/doctor-sandbox.js +2 -2
  94. package/dist/commands/doctor-state-integrity.js +23 -23
  95. package/dist/commands/doctor-workspace.js +3 -3
  96. package/dist/commands/doctor.js +3 -3
  97. package/dist/commands/managed-up.js +2 -2
  98. package/dist/commands/onboard-auth.credentials.js +3 -3
  99. package/dist/commands/onboard.js +0 -8
  100. package/dist/commands/onboarding/plugin-install.js +2 -2
  101. package/dist/commands/sessions-cleanup.js +2 -2
  102. package/dist/commands/signal-install.js +6 -6
  103. package/dist/commands/status-all/channels.js +2 -2
  104. package/dist/commands/wallet.js +10 -10
  105. package/dist/config/cache-utils.js +2 -2
  106. package/dist/config/includes.js +5 -5
  107. package/dist/config/io.js +2 -2
  108. package/dist/config/paths.js +3 -3
  109. package/dist/config/sat-runtime-ids.js +3 -3
  110. package/dist/config/sessions/disk-budget.js +6 -6
  111. package/dist/config/sessions/paths.js +2 -2
  112. package/dist/config/sessions/store.js +17 -17
  113. package/dist/config/sessions/transcript.js +4 -4
  114. package/dist/config/talk.js +2 -2
  115. package/dist/control-ui/apple-touch-icon.png +0 -0
  116. package/dist/control-ui/assets/{app-MaQnPa5G.js → app-De8gTtZU.js} +5 -5
  117. package/dist/control-ui/assets/{index-D4YMr1fA.js → index-DYYBRBOS.js} +3 -3
  118. package/dist/control-ui/assets/{mining-qMYs4aD-.js → mining-Dg-3ll0F.js} +70 -70
  119. package/dist/control-ui/boot-watchdog.js +0 -0
  120. package/dist/control-ui/fased-logo.svg +0 -0
  121. package/dist/control-ui/favicon-32.png +0 -0
  122. package/dist/control-ui/favicon.ico +0 -0
  123. package/dist/control-ui/favicon.svg +0 -0
  124. package/dist/control-ui/index.html +1 -1
  125. package/dist/control-ui/manifest.webmanifest +0 -0
  126. package/dist/control-ui/version.json +1 -1
  127. package/dist/cron/service/store.js +2 -2
  128. package/dist/cron/store.js +6 -6
  129. package/dist/daemon/systemd-system.js +5 -5
  130. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  131. package/dist/export-html/template.css +0 -0
  132. package/dist/export-html/template.html +0 -0
  133. package/dist/export-html/template.js +0 -0
  134. package/dist/export-html/vendor/highlight.min.js +0 -0
  135. package/dist/export-html/vendor/marked.min.js +0 -0
  136. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  137. package/dist/extensions/sat-mining/src/solana-submit.js +191 -47
  138. package/dist/extensions/sat-mining/src/submission-ledger.js +23 -3
  139. package/dist/federation/marketplace-delivery-outbox.js +5 -5
  140. package/dist/federation/marketplace-settlement-ledger.js +4 -4
  141. package/dist/gateway/a2a-task-store.js +22 -22
  142. package/dist/gateway/control-ui-boot-check.js +6 -6
  143. package/dist/gateway/control-ui-login.js +7 -7
  144. package/dist/gateway/control-ui.js +9 -9
  145. package/dist/gateway/federation-marketplace-run-store.js +14 -14
  146. package/dist/gateway/hooks-mapping.js +4 -4
  147. package/dist/gateway/server-discovery.js +2 -2
  148. package/dist/gateway/server-http.js +4 -4
  149. package/dist/gateway/server-methods/chat.js +3 -3
  150. package/dist/gateway/server-methods/sessions.js +6 -6
  151. package/dist/gateway/server-methods/usage.js +2 -2
  152. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  153. package/dist/gateway/session-utils.fs.js +24 -24
  154. package/dist/gateway/session-utils.js +6 -6
  155. package/dist/hooks/bundled-dir.js +4 -4
  156. package/dist/hooks/gmail-setup-utils.js +6 -6
  157. package/dist/hooks/import-url.js +2 -2
  158. package/dist/hooks/loader.js +4 -4
  159. package/dist/hooks/workspace.js +7 -7
  160. package/dist/infra/archive.js +17 -17
  161. package/dist/infra/boundary-file-read.js +2 -2
  162. package/dist/infra/boundary-path.js +15 -15
  163. package/dist/infra/brew.js +2 -2
  164. package/dist/infra/control-ui-assets.js +14 -14
  165. package/dist/infra/device-auth-store.js +8 -8
  166. package/dist/infra/device-identity.js +8 -8
  167. package/dist/infra/dotenv.js +2 -2
  168. package/dist/infra/exec-approvals.js +8 -8
  169. package/dist/infra/exec-command-resolution.js +4 -4
  170. package/dist/infra/exec-safe-bin-trust.js +2 -2
  171. package/dist/infra/fased-root.js +5 -5
  172. package/dist/infra/fs-safe.js +14 -14
  173. package/dist/infra/gateway-lock.js +11 -11
  174. package/dist/infra/git-commit.js +5 -5
  175. package/dist/infra/git-root.js +4 -4
  176. package/dist/infra/hosted-runtime-artifact.js +3 -3
  177. package/dist/infra/is-main.js +2 -2
  178. package/dist/infra/json-file.js +7 -7
  179. package/dist/infra/managed-runtime-bootstrap.js +6 -6
  180. package/dist/infra/outbound/delivery-queue.js +16 -16
  181. package/dist/infra/path-env.js +3 -3
  182. package/dist/infra/ports-lsof.js +4 -4
  183. package/dist/infra/provider-usage.auth.js +3 -3
  184. package/dist/infra/runtime-guard.js +16 -0
  185. package/dist/infra/safe-open-sync.js +2 -2
  186. package/dist/infra/session-cost-usage.js +9 -9
  187. package/dist/infra/shell-env.js +2 -2
  188. package/dist/infra/state-migrations.fs.js +6 -6
  189. package/dist/infra/state-migrations.js +23 -23
  190. package/dist/infra/tmp-fased-dir.js +6 -6
  191. package/dist/infra/widearea-dns.js +3 -3
  192. package/dist/infra/wsl.js +2 -2
  193. package/dist/line/accounts.js +2 -2
  194. package/dist/line/download.js +2 -2
  195. package/dist/logging/config.js +3 -3
  196. package/dist/logging/logger.js +7 -7
  197. package/dist/managed/federation.js +3 -3
  198. package/dist/managed/tunnel.js +3 -3
  199. package/dist/media/store.js +13 -13
  200. package/dist/media-understanding/runner.js +3 -3
  201. package/dist/memory/embeddings.js +2 -2
  202. package/dist/memory/internal.js +10 -10
  203. package/dist/memory/manager-sync-ops.js +7 -7
  204. package/dist/memory/repair-executor.js +17 -17
  205. package/dist/node-host/invoke-system-run-plan.js +8 -8
  206. package/dist/node-host/invoke.js +2 -2
  207. package/dist/node-host/runner.js +3 -3
  208. package/dist/pairing/pairing-store.js +3 -3
  209. package/dist/plugin-sdk/{audio-preflight-I4IngVlJ.js → audio-preflight-Dq_rJtqH.js} +2 -2
  210. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  211. package/dist/plugin-sdk/{chunk-items-DLQ6_lLK.js → chunk-items-Dunoq4Er.js} +1 -1
  212. package/dist/plugin-sdk/command-status.js +2 -2
  213. package/dist/plugin-sdk/{config-schema-D_8FVI1C.js → config-schema--vl89M7d.js} +52 -17
  214. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  215. package/dist/plugin-sdk/discord.d.ts +4 -4
  216. package/dist/plugin-sdk/file-lock.js +10 -10
  217. package/dist/plugin-sdk/index.d.ts +15 -15
  218. package/dist/plugin-sdk/index.js +2 -2
  219. package/dist/plugin-sdk/json-store.js +6 -6
  220. package/dist/plugin-sdk/{monitor-Bb6x1KAG.js → monitor-CV1sr0p2.js} +6 -6
  221. package/dist/plugin-sdk/{monitor-B4KF4Kpo.js → monitor-DrTy_4CL.js} +4 -4
  222. package/dist/plugin-sdk/{openresponses-http-DCTO8JkL.js → openresponses-http-BAjgURZa.js} +2 -2
  223. package/dist/plugin-sdk/{pairing-message-DHPDFZbC.d.ts → pairing-message-BjIJYVvp.d.ts} +1 -1
  224. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  225. package/dist/plugin-sdk/{pw-ai-natjh3rm.js → pw-ai-DlxqX6Es.js} +1 -1
  226. package/dist/plugin-sdk/{runtime-dependency-DczkvPxn.js → runtime-dependency-nup8niQL.js} +9 -9
  227. package/dist/plugin-sdk/sat-runtime.d.ts +53 -2
  228. package/dist/plugin-sdk/sat-runtime.js +2 -2
  229. package/dist/plugin-sdk/{slack-BHmvqgjH.js → slack-DSC6T2KW.js} +4 -4
  230. package/dist/plugin-sdk/slack.d.ts +4 -4
  231. package/dist/plugin-sdk/{sticker-cache-By5AcorL.js → sticker-cache-C0l_5IKg.js} +2 -2
  232. package/dist/plugin-sdk/{telegram-actions-DGnBz1YT.js → telegram-actions-BwGBIVDE.js} +3 -3
  233. package/dist/plugin-sdk/telegram.d.ts +4 -4
  234. package/dist/plugin-sdk/{tmp-fased-dir-EJGTmL1Q.d.ts → tmp-fased-dir-DXnGKKgi.d.ts} +1 -1
  235. package/dist/plugin-sdk/{types-BdwdFCD6.d.ts → types-Cegc86EP.d.ts} +2 -2
  236. package/dist/plugin-sdk/{types-BrCpYMxn.d.ts → types-eG9aYqXF.d.ts} +1 -1
  237. package/dist/plugin-sdk/{web-DUJwrTYs.js → web-C_AH5PyB.js} +2 -2
  238. package/dist/plugin-sdk/whatsapp.d.ts +9 -9
  239. package/dist/plugin-sdk/{zod-schema.providers-core-CIzCjXH9.d.ts → zod-schema.providers-core-FaYR6KdD.d.ts} +61 -61
  240. package/dist/plugins/bundled-dir.js +3 -3
  241. package/dist/plugins/discovery.js +11 -11
  242. package/dist/plugins/loader.js +13 -13
  243. package/dist/plugins/manifest-registry.js +2 -2
  244. package/dist/plugins/manifest.js +4 -4
  245. package/dist/plugins/path-safety.js +3 -3
  246. package/dist/plugins/status-cache.js +9 -9
  247. package/dist/plugins/update.js +3 -3
  248. package/dist/plugins/web-search-install-catalog.js +3 -3
  249. package/dist/secrets/apply.js +16 -16
  250. package/dist/secrets/audit.js +11 -11
  251. package/dist/secrets/shared.js +9 -9
  252. package/dist/security/scan-paths.js +2 -2
  253. package/dist/shared/config-eval.js +2 -2
  254. package/dist/shared/pid-alive.js +2 -2
  255. package/dist/tasks/standing-orders.js +5 -5
  256. package/dist/tasks/task-flow-registry.js +5 -5
  257. package/dist/tasks/task-registry.js +5 -5
  258. package/dist/tasks/workflow-definitions.js +6 -6
  259. package/dist/telegram/token.js +5 -5
  260. package/dist/utils.js +5 -5
  261. package/dist/wallet/external-submission-ledger.js +14 -14
  262. package/dist/wallet/local-socket-signer-protocol.js +35 -1
  263. package/dist/wallet/providers/local-socket-signer-adapter.js +3 -2
  264. package/dist/wallet/signer-network-admin.js +9 -3
  265. package/dist/wallet/solana-network-discovery.js +113 -0
  266. package/dist/wallet/turnkey-reviewed-state.js +14 -14
  267. package/dist/wallet/wallet-approval-auth.js +3 -3
  268. package/dist/wallet/wallet-atomic-state.js +12 -12
  269. package/dist/wallet/wallet-audit-log.js +5 -5
  270. package/dist/wallet/wallet-inbound-events.js +3 -3
  271. package/dist/wallet/wallet-observability.js +5 -5
  272. package/dist/wallet/wallet-policy.js +5 -5
  273. package/dist/wallet/wallet-provider-registry.js +7 -7
  274. package/dist/wallet/wallet-runtime-config.js +3 -3
  275. package/dist/wallet/wallet-secrets-store.js +22 -22
  276. package/dist/wallet/wallet-send-approvals.js +21 -21
  277. package/dist/wallet/wallet-send-execution-ledger.js +3 -3
  278. package/dist/wallet/wallet-settlement-links.js +3 -3
  279. package/dist/wallet/wallet-standard-review.js +14 -14
  280. package/dist/web/accounts.js +3 -3
  281. package/dist/web/auth-store.js +18 -18
  282. package/dist/web/session.js +4 -4
  283. package/dist/wizard/host-security-capability.js +3 -3
  284. package/dist/wizard/onboarding.host-security.js +3 -3
  285. package/dist/wizard/onboarding.js +17 -15
  286. package/dist/wizard/onboarding.wallet.js +27 -27
  287. package/docs/reference/templates/AGENTS.dev.md +0 -0
  288. package/docs/reference/templates/AGENTS.md +0 -0
  289. package/docs/reference/templates/BOOT.md +0 -0
  290. package/docs/reference/templates/BOOTSTRAP.md +0 -0
  291. package/docs/reference/templates/HEARTBEAT.md +0 -0
  292. package/docs/reference/templates/IDENTITY.dev.md +0 -0
  293. package/docs/reference/templates/IDENTITY.md +0 -0
  294. package/docs/reference/templates/SOUL.dev.md +0 -0
  295. package/docs/reference/templates/SOUL.md +0 -0
  296. package/docs/reference/templates/TOOLS.dev.md +0 -0
  297. package/docs/reference/templates/TOOLS.md +0 -0
  298. package/docs/reference/templates/USER.dev.md +0 -0
  299. package/docs/reference/templates/USER.md +0 -0
  300. package/extensions/acpx/fased.plugin.json +0 -0
  301. package/extensions/acpx/package.json +1 -1
  302. package/extensions/acpx/skills/acp-router/SKILL.md +0 -0
  303. package/extensions/acpx/src/config.ts +0 -0
  304. package/extensions/acpx/src/ensure.ts +0 -0
  305. package/extensions/acpx/src/mcp-readonly-tool-registry.ts +0 -0
  306. package/extensions/acpx/src/mcp-status-adapter.ts +0 -0
  307. package/extensions/acpx/src/runtime-internals/events.ts +0 -0
  308. package/extensions/acpx/src/runtime-internals/process.ts +0 -0
  309. package/extensions/acpx/src/runtime-internals/shared.ts +0 -0
  310. package/extensions/acpx/src/runtime.ts +0 -0
  311. package/extensions/acpx/src/service.ts +0 -0
  312. package/extensions/bluebubbles/README.md +0 -0
  313. package/extensions/bluebubbles/fased.plugin.json +0 -0
  314. package/extensions/bluebubbles/package.json +1 -1
  315. package/extensions/bluebubbles/src/account-resolve.ts +0 -0
  316. package/extensions/bluebubbles/src/accounts.ts +0 -0
  317. package/extensions/bluebubbles/src/actions.ts +0 -0
  318. package/extensions/bluebubbles/src/attachments.ts +0 -0
  319. package/extensions/bluebubbles/src/channel.ts +0 -0
  320. package/extensions/bluebubbles/src/chat.ts +0 -0
  321. package/extensions/bluebubbles/src/config-schema.ts +0 -0
  322. package/extensions/bluebubbles/src/history.ts +0 -0
  323. package/extensions/bluebubbles/src/media-send.ts +0 -0
  324. package/extensions/bluebubbles/src/monitor-normalize.ts +0 -0
  325. package/extensions/bluebubbles/src/monitor-processing.ts +0 -0
  326. package/extensions/bluebubbles/src/monitor-reply-cache.ts +0 -0
  327. package/extensions/bluebubbles/src/monitor-shared.ts +0 -0
  328. package/extensions/bluebubbles/src/monitor.ts +0 -0
  329. package/extensions/bluebubbles/src/multipart.ts +0 -0
  330. package/extensions/bluebubbles/src/onboarding.ts +0 -0
  331. package/extensions/bluebubbles/src/probe.ts +0 -0
  332. package/extensions/bluebubbles/src/reactions.ts +0 -0
  333. package/extensions/bluebubbles/src/request-url.ts +0 -0
  334. package/extensions/bluebubbles/src/runtime.ts +0 -0
  335. package/extensions/bluebubbles/src/send-helpers.ts +0 -0
  336. package/extensions/bluebubbles/src/send.ts +0 -0
  337. package/extensions/bluebubbles/src/targets.ts +0 -0
  338. package/extensions/bluebubbles/src/test-mocks.ts +0 -0
  339. package/extensions/bluebubbles/src/types.ts +0 -0
  340. package/extensions/copilot-proxy/README.md +0 -0
  341. package/extensions/copilot-proxy/fased.plugin.json +0 -0
  342. package/extensions/copilot-proxy/package.json +1 -1
  343. package/extensions/device-pair/fased.plugin.json +0 -0
  344. package/extensions/diagnostics-otel/fased.plugin.json +0 -0
  345. package/extensions/diagnostics-otel/package.json +1 -1
  346. package/extensions/diagnostics-otel/src/service.ts +0 -0
  347. package/extensions/fased-federation/README.md +0 -0
  348. package/extensions/fased-federation/fased.plugin.json +0 -0
  349. package/extensions/fased-federation/package.json +1 -1
  350. package/extensions/google-gemini-cli-auth/README.md +0 -0
  351. package/extensions/google-gemini-cli-auth/fased.plugin.json +0 -0
  352. package/extensions/google-gemini-cli-auth/oauth.ts +0 -0
  353. package/extensions/google-gemini-cli-auth/package.json +1 -1
  354. package/extensions/imessage/fased.plugin.json +0 -0
  355. package/extensions/imessage/package.json +1 -1
  356. package/extensions/imessage/src/channel.ts +0 -0
  357. package/extensions/imessage/src/runtime.ts +0 -0
  358. package/extensions/irc/fased.plugin.json +0 -0
  359. package/extensions/irc/package.json +1 -1
  360. package/extensions/irc/src/accounts.ts +0 -0
  361. package/extensions/irc/src/channel.ts +0 -0
  362. package/extensions/irc/src/client.ts +0 -0
  363. package/extensions/irc/src/config-schema.ts +0 -0
  364. package/extensions/irc/src/connect-options.ts +0 -0
  365. package/extensions/irc/src/control-chars.ts +0 -0
  366. package/extensions/irc/src/inbound.ts +0 -0
  367. package/extensions/irc/src/monitor.ts +0 -0
  368. package/extensions/irc/src/normalize.ts +0 -0
  369. package/extensions/irc/src/onboarding.ts +0 -0
  370. package/extensions/irc/src/policy.ts +0 -0
  371. package/extensions/irc/src/probe.ts +0 -0
  372. package/extensions/irc/src/protocol.ts +0 -0
  373. package/extensions/irc/src/runtime.ts +0 -0
  374. package/extensions/irc/src/send.ts +0 -0
  375. package/extensions/irc/src/types.ts +0 -0
  376. package/extensions/line/fased.plugin.json +0 -0
  377. package/extensions/line/package.json +1 -1
  378. package/extensions/line/src/card-command.ts +0 -0
  379. package/extensions/line/src/channel.ts +0 -0
  380. package/extensions/line/src/runtime.ts +0 -0
  381. package/extensions/llm-task/README.md +0 -0
  382. package/extensions/llm-task/fased.plugin.json +0 -0
  383. package/extensions/llm-task/package.json +1 -1
  384. package/extensions/lobster/README.md +0 -0
  385. package/extensions/lobster/SKILL.md +0 -0
  386. package/extensions/lobster/fased.plugin.json +0 -0
  387. package/extensions/lobster/package.json +1 -1
  388. package/extensions/lobster/src/test-helpers.ts +0 -0
  389. package/extensions/lobster/src/windows-spawn.ts +0 -0
  390. package/extensions/matrix/CHANGELOG.md +12 -0
  391. package/extensions/matrix/fased.plugin.json +0 -0
  392. package/extensions/matrix/package.json +1 -1
  393. package/extensions/matrix/src/actions.ts +0 -0
  394. package/extensions/matrix/src/channel.ts +0 -0
  395. package/extensions/matrix/src/config-schema.ts +0 -0
  396. package/extensions/matrix/src/directory-live.ts +0 -0
  397. package/extensions/matrix/src/group-mentions.ts +0 -0
  398. package/extensions/matrix/src/matrix/accounts.ts +0 -0
  399. package/extensions/matrix/src/matrix/actions/client.ts +0 -0
  400. package/extensions/matrix/src/matrix/actions/limits.ts +0 -0
  401. package/extensions/matrix/src/matrix/actions/messages.ts +0 -0
  402. package/extensions/matrix/src/matrix/actions/pins.ts +0 -0
  403. package/extensions/matrix/src/matrix/actions/reactions.ts +0 -0
  404. package/extensions/matrix/src/matrix/actions/room.ts +0 -0
  405. package/extensions/matrix/src/matrix/actions/summary.ts +0 -0
  406. package/extensions/matrix/src/matrix/actions/types.ts +0 -0
  407. package/extensions/matrix/src/matrix/actions.ts +0 -0
  408. package/extensions/matrix/src/matrix/active-client.ts +0 -0
  409. package/extensions/matrix/src/matrix/client/config.ts +0 -0
  410. package/extensions/matrix/src/matrix/client/create-client.ts +0 -0
  411. package/extensions/matrix/src/matrix/client/logging.ts +0 -0
  412. package/extensions/matrix/src/matrix/client/runtime.ts +0 -0
  413. package/extensions/matrix/src/matrix/client/shared.ts +0 -0
  414. package/extensions/matrix/src/matrix/client/storage.ts +0 -0
  415. package/extensions/matrix/src/matrix/client/types.ts +0 -0
  416. package/extensions/matrix/src/matrix/client-bootstrap.ts +0 -0
  417. package/extensions/matrix/src/matrix/client.ts +0 -0
  418. package/extensions/matrix/src/matrix/credentials.ts +0 -0
  419. package/extensions/matrix/src/matrix/deps.ts +0 -0
  420. package/extensions/matrix/src/matrix/format.ts +0 -0
  421. package/extensions/matrix/src/matrix/monitor/access-policy.ts +0 -0
  422. package/extensions/matrix/src/matrix/monitor/allowlist.ts +0 -0
  423. package/extensions/matrix/src/matrix/monitor/auto-join.ts +0 -0
  424. package/extensions/matrix/src/matrix/monitor/direct.ts +0 -0
  425. package/extensions/matrix/src/matrix/monitor/events.ts +0 -0
  426. package/extensions/matrix/src/matrix/monitor/handler.ts +0 -0
  427. package/extensions/matrix/src/matrix/monitor/inbound-body.ts +0 -0
  428. package/extensions/matrix/src/matrix/monitor/location.ts +0 -0
  429. package/extensions/matrix/src/matrix/monitor/media.ts +0 -0
  430. package/extensions/matrix/src/matrix/monitor/mentions.ts +0 -0
  431. package/extensions/matrix/src/matrix/monitor/replies.ts +0 -0
  432. package/extensions/matrix/src/matrix/monitor/room-info.ts +0 -0
  433. package/extensions/matrix/src/matrix/monitor/rooms.ts +0 -0
  434. package/extensions/matrix/src/matrix/monitor/threads.ts +0 -0
  435. package/extensions/matrix/src/matrix/monitor/types.ts +0 -0
  436. package/extensions/matrix/src/matrix/poll-types.ts +0 -0
  437. package/extensions/matrix/src/matrix/probe.ts +0 -0
  438. package/extensions/matrix/src/matrix/send/client.ts +0 -0
  439. package/extensions/matrix/src/matrix/send/formatting.ts +0 -0
  440. package/extensions/matrix/src/matrix/send/media.ts +0 -0
  441. package/extensions/matrix/src/matrix/send/targets.ts +0 -0
  442. package/extensions/matrix/src/matrix/send/types.ts +0 -0
  443. package/extensions/matrix/src/matrix/send-queue.ts +0 -0
  444. package/extensions/matrix/src/matrix/send.ts +0 -0
  445. package/extensions/matrix/src/onboarding.ts +0 -0
  446. package/extensions/matrix/src/outbound.ts +0 -0
  447. package/extensions/matrix/src/resolve-targets.ts +0 -0
  448. package/extensions/matrix/src/runtime.ts +0 -0
  449. package/extensions/matrix/src/tool-actions.ts +0 -0
  450. package/extensions/matrix/src/types.ts +0 -0
  451. package/extensions/mattermost/fased.plugin.json +0 -0
  452. package/extensions/mattermost/package.json +1 -1
  453. package/extensions/mattermost/src/channel.ts +0 -0
  454. package/extensions/mattermost/src/config-schema.ts +0 -0
  455. package/extensions/mattermost/src/group-mentions.ts +0 -0
  456. package/extensions/mattermost/src/mattermost/accounts.ts +0 -0
  457. package/extensions/mattermost/src/mattermost/client.ts +0 -0
  458. package/extensions/mattermost/src/mattermost/monitor-auth.ts +0 -0
  459. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -0
  460. package/extensions/mattermost/src/mattermost/monitor-onchar.ts +0 -0
  461. package/extensions/mattermost/src/mattermost/monitor-websocket.ts +0 -0
  462. package/extensions/mattermost/src/mattermost/monitor.ts +0 -0
  463. package/extensions/mattermost/src/mattermost/probe.ts +0 -0
  464. package/extensions/mattermost/src/mattermost/reactions.test-helpers.ts +0 -0
  465. package/extensions/mattermost/src/mattermost/reactions.ts +0 -0
  466. package/extensions/mattermost/src/mattermost/reconnect.ts +0 -0
  467. package/extensions/mattermost/src/mattermost/send.ts +0 -0
  468. package/extensions/mattermost/src/normalize.ts +0 -0
  469. package/extensions/mattermost/src/onboarding-helpers.ts +0 -0
  470. package/extensions/mattermost/src/onboarding.ts +0 -0
  471. package/extensions/mattermost/src/runtime.ts +0 -0
  472. package/extensions/mattermost/src/types.ts +0 -0
  473. package/extensions/memory-core/fased.plugin.json +0 -0
  474. package/extensions/memory-core/package.json +2 -2
  475. package/extensions/memory-lancedb/config.ts +0 -0
  476. package/extensions/memory-lancedb/fased.plugin.json +0 -0
  477. package/extensions/memory-lancedb/package.json +1 -1
  478. package/extensions/minimax-portal-auth/README.md +0 -0
  479. package/extensions/minimax-portal-auth/fased.plugin.json +0 -0
  480. package/extensions/minimax-portal-auth/oauth.ts +0 -0
  481. package/extensions/minimax-portal-auth/package.json +1 -1
  482. package/extensions/msteams/CHANGELOG.md +12 -0
  483. package/extensions/msteams/fased.plugin.json +0 -0
  484. package/extensions/msteams/package.json +1 -1
  485. package/extensions/msteams/src/attachments/download.ts +0 -0
  486. package/extensions/msteams/src/attachments/graph.ts +0 -0
  487. package/extensions/msteams/src/attachments/html.ts +0 -0
  488. package/extensions/msteams/src/attachments/payload.ts +0 -0
  489. package/extensions/msteams/src/attachments/remote-media.ts +0 -0
  490. package/extensions/msteams/src/attachments/shared.ts +0 -0
  491. package/extensions/msteams/src/attachments/types.ts +0 -0
  492. package/extensions/msteams/src/attachments.ts +0 -0
  493. package/extensions/msteams/src/channel.ts +0 -0
  494. package/extensions/msteams/src/conversation-store-fs.ts +0 -0
  495. package/extensions/msteams/src/conversation-store-memory.ts +0 -0
  496. package/extensions/msteams/src/conversation-store.ts +0 -0
  497. package/extensions/msteams/src/directory-live.ts +0 -0
  498. package/extensions/msteams/src/errors.ts +0 -0
  499. package/extensions/msteams/src/file-consent-helpers.ts +0 -0
  500. package/extensions/msteams/src/file-consent.ts +0 -0
  501. package/extensions/msteams/src/file-lock.ts +0 -0
  502. package/extensions/msteams/src/graph-chat.ts +0 -0
  503. package/extensions/msteams/src/graph-upload.ts +0 -0
  504. package/extensions/msteams/src/graph-users.ts +0 -0
  505. package/extensions/msteams/src/graph.ts +0 -0
  506. package/extensions/msteams/src/inbound.ts +0 -0
  507. package/extensions/msteams/src/media-helpers.ts +0 -0
  508. package/extensions/msteams/src/mentions.ts +0 -0
  509. package/extensions/msteams/src/messenger.ts +0 -0
  510. package/extensions/msteams/src/monitor-handler/inbound-media.ts +0 -0
  511. package/extensions/msteams/src/monitor-handler/message-handler.ts +0 -0
  512. package/extensions/msteams/src/monitor-handler.ts +0 -0
  513. package/extensions/msteams/src/monitor-types.ts +0 -0
  514. package/extensions/msteams/src/monitor.ts +0 -0
  515. package/extensions/msteams/src/onboarding.ts +0 -0
  516. package/extensions/msteams/src/outbound.ts +0 -0
  517. package/extensions/msteams/src/pending-uploads.ts +0 -0
  518. package/extensions/msteams/src/policy.ts +0 -0
  519. package/extensions/msteams/src/polls-store-memory.ts +0 -0
  520. package/extensions/msteams/src/polls.ts +0 -0
  521. package/extensions/msteams/src/probe.ts +0 -0
  522. package/extensions/msteams/src/reply-dispatcher.ts +0 -0
  523. package/extensions/msteams/src/resolve-allowlist.ts +0 -0
  524. package/extensions/msteams/src/runtime.ts +0 -0
  525. package/extensions/msteams/src/sdk-types.ts +0 -0
  526. package/extensions/msteams/src/sdk.ts +0 -0
  527. package/extensions/msteams/src/send-context.ts +0 -0
  528. package/extensions/msteams/src/send.ts +0 -0
  529. package/extensions/msteams/src/sent-message-cache.ts +0 -0
  530. package/extensions/msteams/src/storage.ts +0 -0
  531. package/extensions/msteams/src/store-fs.ts +0 -0
  532. package/extensions/msteams/src/test-runtime.ts +0 -0
  533. package/extensions/msteams/src/token-response.ts +0 -0
  534. package/extensions/msteams/src/token.ts +0 -0
  535. package/extensions/nextcloud-talk/fased.plugin.json +0 -0
  536. package/extensions/nextcloud-talk/package.json +1 -1
  537. package/extensions/nextcloud-talk/src/accounts.ts +0 -0
  538. package/extensions/nextcloud-talk/src/config-schema.ts +0 -0
  539. package/extensions/nextcloud-talk/src/format.ts +0 -0
  540. package/extensions/nextcloud-talk/src/inbound.ts +0 -0
  541. package/extensions/nextcloud-talk/src/monitor.ts +0 -0
  542. package/extensions/nextcloud-talk/src/normalize.ts +0 -0
  543. package/extensions/nextcloud-talk/src/onboarding.ts +0 -0
  544. package/extensions/nextcloud-talk/src/policy.ts +0 -0
  545. package/extensions/nextcloud-talk/src/replay-guard.ts +0 -0
  546. package/extensions/nextcloud-talk/src/room-info.ts +0 -0
  547. package/extensions/nextcloud-talk/src/runtime.ts +0 -0
  548. package/extensions/nextcloud-talk/src/send.ts +0 -0
  549. package/extensions/nextcloud-talk/src/signature.ts +0 -0
  550. package/extensions/nextcloud-talk/src/types.ts +0 -0
  551. package/extensions/nostr/CHANGELOG.md +12 -0
  552. package/extensions/nostr/README.md +0 -0
  553. package/extensions/nostr/fased.plugin.json +0 -0
  554. package/extensions/nostr/package.json +1 -1
  555. package/extensions/nostr/src/channel.ts +0 -0
  556. package/extensions/nostr/src/config-schema.ts +0 -0
  557. package/extensions/nostr/src/metrics.ts +0 -0
  558. package/extensions/nostr/src/nostr-bus.ts +0 -0
  559. package/extensions/nostr/src/nostr-profile-http.ts +0 -0
  560. package/extensions/nostr/src/nostr-profile-import.ts +0 -0
  561. package/extensions/nostr/src/nostr-profile.ts +0 -0
  562. package/extensions/nostr/src/nostr-state-store.ts +0 -0
  563. package/extensions/nostr/src/onboarding.ts +0 -0
  564. package/extensions/nostr/src/runtime.ts +0 -0
  565. package/extensions/nostr/src/seen-tracker.ts +0 -0
  566. package/extensions/nostr/src/types.ts +0 -0
  567. package/extensions/nostr/test/setup.ts +0 -0
  568. package/extensions/open-prose/README.md +0 -0
  569. package/extensions/open-prose/fased.plugin.json +0 -0
  570. package/extensions/open-prose/package.json +1 -1
  571. package/extensions/open-prose/skills/prose/LICENSE +0 -0
  572. package/extensions/open-prose/skills/prose/SKILL.md +0 -0
  573. package/extensions/open-prose/skills/prose/alt-borges.md +0 -0
  574. package/extensions/open-prose/skills/prose/alts/arabian-nights.md +0 -0
  575. package/extensions/open-prose/skills/prose/alts/borges.md +0 -0
  576. package/extensions/open-prose/skills/prose/alts/folk.md +0 -0
  577. package/extensions/open-prose/skills/prose/alts/homer.md +0 -0
  578. package/extensions/open-prose/skills/prose/alts/kafka.md +0 -0
  579. package/extensions/open-prose/skills/prose/compiler.md +0 -0
  580. package/extensions/open-prose/skills/prose/examples/01-hello-world.prose +0 -0
  581. package/extensions/open-prose/skills/prose/examples/02-research-and-summarize.prose +0 -0
  582. package/extensions/open-prose/skills/prose/examples/03-code-review.prose +0 -0
  583. package/extensions/open-prose/skills/prose/examples/04-write-and-refine.prose +0 -0
  584. package/extensions/open-prose/skills/prose/examples/05-debug-issue.prose +0 -0
  585. package/extensions/open-prose/skills/prose/examples/06-explain-codebase.prose +0 -0
  586. package/extensions/open-prose/skills/prose/examples/07-refactor.prose +0 -0
  587. package/extensions/open-prose/skills/prose/examples/08-blog-post.prose +0 -0
  588. package/extensions/open-prose/skills/prose/examples/09-research-with-agents.prose +0 -0
  589. package/extensions/open-prose/skills/prose/examples/10-code-review-agents.prose +0 -0
  590. package/extensions/open-prose/skills/prose/examples/11-skills-and-imports.prose +0 -0
  591. package/extensions/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +0 -0
  592. package/extensions/open-prose/skills/prose/examples/13-variables-and-context.prose +0 -0
  593. package/extensions/open-prose/skills/prose/examples/14-composition-blocks.prose +0 -0
  594. package/extensions/open-prose/skills/prose/examples/15-inline-sequences.prose +0 -0
  595. package/extensions/open-prose/skills/prose/examples/16-parallel-reviews.prose +0 -0
  596. package/extensions/open-prose/skills/prose/examples/17-parallel-research.prose +0 -0
  597. package/extensions/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +0 -0
  598. package/extensions/open-prose/skills/prose/examples/19-advanced-parallel.prose +0 -0
  599. package/extensions/open-prose/skills/prose/examples/20-fixed-loops.prose +0 -0
  600. package/extensions/open-prose/skills/prose/examples/21-pipeline-operations.prose +0 -0
  601. package/extensions/open-prose/skills/prose/examples/22-error-handling.prose +0 -0
  602. package/extensions/open-prose/skills/prose/examples/23-retry-with-backoff.prose +0 -0
  603. package/extensions/open-prose/skills/prose/examples/24-choice-blocks.prose +0 -0
  604. package/extensions/open-prose/skills/prose/examples/25-conditionals.prose +0 -0
  605. package/extensions/open-prose/skills/prose/examples/26-parameterized-blocks.prose +0 -0
  606. package/extensions/open-prose/skills/prose/examples/27-string-interpolation.prose +0 -0
  607. package/extensions/open-prose/skills/prose/examples/28-automated-pr-review.prose +0 -0
  608. package/extensions/open-prose/skills/prose/examples/28-gas-town.prose +0 -0
  609. package/extensions/open-prose/skills/prose/examples/29-captains-chair.prose +0 -0
  610. package/extensions/open-prose/skills/prose/examples/30-captains-chair-simple.prose +0 -0
  611. package/extensions/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +0 -0
  612. package/extensions/open-prose/skills/prose/examples/33-pr-review-autofix.prose +0 -0
  613. package/extensions/open-prose/skills/prose/examples/34-content-pipeline.prose +0 -0
  614. package/extensions/open-prose/skills/prose/examples/35-feature-factory.prose +0 -0
  615. package/extensions/open-prose/skills/prose/examples/36-bug-hunter.prose +0 -0
  616. package/extensions/open-prose/skills/prose/examples/37-the-forge.prose +0 -0
  617. package/extensions/open-prose/skills/prose/examples/38-skill-scan.prose +0 -0
  618. package/extensions/open-prose/skills/prose/examples/39-architect-by-simulation.prose +0 -0
  619. package/extensions/open-prose/skills/prose/examples/40-rlm-self-refine.prose +0 -0
  620. package/extensions/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +0 -0
  621. package/extensions/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +0 -0
  622. package/extensions/open-prose/skills/prose/examples/43-rlm-pairwise.prose +0 -0
  623. package/extensions/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +0 -0
  624. package/extensions/open-prose/skills/prose/examples/45-plugin-release.prose +0 -0
  625. package/extensions/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +0 -0
  626. package/extensions/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +0 -0
  627. package/extensions/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +0 -0
  628. package/extensions/open-prose/skills/prose/examples/47-language-self-improvement.prose +0 -0
  629. package/extensions/open-prose/skills/prose/examples/48-habit-miner.prose +0 -0
  630. package/extensions/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +0 -0
  631. package/extensions/open-prose/skills/prose/examples/README.md +0 -0
  632. package/extensions/open-prose/skills/prose/examples/roadmap/README.md +0 -0
  633. package/extensions/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +0 -0
  634. package/extensions/open-prose/skills/prose/examples/roadmap/parallel-review.prose +0 -0
  635. package/extensions/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +0 -0
  636. package/extensions/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +0 -0
  637. package/extensions/open-prose/skills/prose/guidance/antipatterns.md +0 -0
  638. package/extensions/open-prose/skills/prose/guidance/patterns.md +0 -0
  639. package/extensions/open-prose/skills/prose/guidance/system-prompt.md +0 -0
  640. package/extensions/open-prose/skills/prose/help.md +0 -0
  641. package/extensions/open-prose/skills/prose/lib/README.md +0 -0
  642. package/extensions/open-prose/skills/prose/lib/calibrator.prose +0 -0
  643. package/extensions/open-prose/skills/prose/lib/cost-analyzer.prose +0 -0
  644. package/extensions/open-prose/skills/prose/lib/error-forensics.prose +0 -0
  645. package/extensions/open-prose/skills/prose/lib/inspector.prose +0 -0
  646. package/extensions/open-prose/skills/prose/lib/profiler.prose +0 -0
  647. package/extensions/open-prose/skills/prose/lib/program-improver.prose +0 -0
  648. package/extensions/open-prose/skills/prose/lib/project-memory.prose +0 -0
  649. package/extensions/open-prose/skills/prose/lib/user-memory.prose +0 -0
  650. package/extensions/open-prose/skills/prose/lib/vm-improver.prose +0 -0
  651. package/extensions/open-prose/skills/prose/primitives/session.md +0 -0
  652. package/extensions/open-prose/skills/prose/prose.md +0 -0
  653. package/extensions/open-prose/skills/prose/state/filesystem.md +0 -0
  654. package/extensions/open-prose/skills/prose/state/in-context.md +0 -0
  655. package/extensions/open-prose/skills/prose/state/postgres.md +0 -0
  656. package/extensions/open-prose/skills/prose/state/sqlite.md +0 -0
  657. package/extensions/phone-control/fased.plugin.json +0 -0
  658. package/extensions/qwen-portal-auth/README.md +0 -0
  659. package/extensions/qwen-portal-auth/fased.plugin.json +0 -0
  660. package/extensions/qwen-portal-auth/oauth.ts +0 -0
  661. package/extensions/sat-mining/fased.plugin.json +0 -0
  662. package/extensions/sat-mining/index.ts +21 -10
  663. package/extensions/sat-mining/package.json +1 -1
  664. package/extensions/sat-mining/skills/sat-mining/SKILL.md +0 -0
  665. package/extensions/sat-mining/src/auto-planner.ts +0 -0
  666. package/extensions/sat-mining/src/chain-time.ts +0 -0
  667. package/extensions/sat-mining/src/dispute-review.ts +0 -0
  668. package/extensions/sat-mining/src/hash-spec.ts +0 -0
  669. package/extensions/sat-mining/src/planner-analytics.ts +0 -0
  670. package/extensions/sat-mining/src/planner-outcomes.ts +0 -0
  671. package/extensions/sat-mining/src/planner-policy-eval.ts +0 -0
  672. package/extensions/sat-mining/src/planner-policy.ts +0 -0
  673. package/extensions/sat-mining/src/replay.ts +0 -0
  674. package/extensions/sat-mining/src/service-read-timeout.ts +0 -0
  675. package/extensions/sat-mining/src/solana-submit.ts +281 -47
  676. package/extensions/sat-mining/src/strategy-base.ts +0 -0
  677. package/extensions/sat-mining/src/strategy-engine.ts +0 -0
  678. package/extensions/sat-mining/src/strategy-validate.ts +0 -0
  679. package/extensions/sat-mining/src/submission-ledger.ts +18 -3
  680. package/extensions/shared/resolve-target-test-helpers.ts +0 -0
  681. package/extensions/signal/fased.plugin.json +0 -0
  682. package/extensions/signal/package.json +1 -1
  683. package/extensions/signal/src/channel.ts +0 -0
  684. package/extensions/signal/src/runtime.ts +0 -0
  685. package/extensions/synology-chat/fased.plugin.json +0 -0
  686. package/extensions/synology-chat/package.json +1 -1
  687. package/extensions/synology-chat/src/accounts.ts +0 -0
  688. package/extensions/synology-chat/src/channel.ts +0 -0
  689. package/extensions/synology-chat/src/client.ts +0 -0
  690. package/extensions/synology-chat/src/runtime.ts +0 -0
  691. package/extensions/synology-chat/src/security.ts +0 -0
  692. package/extensions/synology-chat/src/types.ts +0 -0
  693. package/extensions/synology-chat/src/webhook-handler.ts +0 -0
  694. package/extensions/talk-voice/fased.plugin.json +0 -0
  695. package/extensions/thread-ownership/fased.plugin.json +0 -0
  696. package/extensions/tlon/README.md +0 -0
  697. package/extensions/tlon/fased.plugin.json +0 -0
  698. package/extensions/tlon/package.json +1 -1
  699. package/extensions/tlon/src/account-fields.ts +0 -0
  700. package/extensions/tlon/src/channel.ts +0 -0
  701. package/extensions/tlon/src/config-schema.ts +0 -0
  702. package/extensions/tlon/src/monitor/discovery.ts +0 -0
  703. package/extensions/tlon/src/monitor/history.ts +0 -0
  704. package/extensions/tlon/src/monitor/processed-messages.ts +0 -0
  705. package/extensions/tlon/src/monitor/utils.ts +0 -0
  706. package/extensions/tlon/src/onboarding.ts +0 -0
  707. package/extensions/tlon/src/runtime.ts +0 -0
  708. package/extensions/tlon/src/targets.ts +0 -0
  709. package/extensions/tlon/src/types.ts +0 -0
  710. package/extensions/tlon/src/urbit/auth.ts +0 -0
  711. package/extensions/tlon/src/urbit/base-url.ts +0 -0
  712. package/extensions/tlon/src/urbit/channel-client.ts +0 -0
  713. package/extensions/tlon/src/urbit/channel-ops.ts +0 -0
  714. package/extensions/tlon/src/urbit/context.ts +0 -0
  715. package/extensions/tlon/src/urbit/errors.ts +0 -0
  716. package/extensions/tlon/src/urbit/fetch.ts +0 -0
  717. package/extensions/tlon/src/urbit/send.ts +0 -0
  718. package/extensions/tlon/src/urbit/sse-client.ts +0 -0
  719. package/extensions/twitch/CHANGELOG.md +12 -0
  720. package/extensions/twitch/README.md +0 -0
  721. package/extensions/twitch/fased.plugin.json +0 -0
  722. package/extensions/twitch/package.json +1 -1
  723. package/extensions/twitch/src/access-control.ts +0 -0
  724. package/extensions/twitch/src/actions.ts +0 -0
  725. package/extensions/twitch/src/client-manager-registry.ts +0 -0
  726. package/extensions/twitch/src/config-schema.ts +0 -0
  727. package/extensions/twitch/src/config.ts +0 -0
  728. package/extensions/twitch/src/monitor.ts +0 -0
  729. package/extensions/twitch/src/onboarding.ts +0 -0
  730. package/extensions/twitch/src/outbound.ts +0 -0
  731. package/extensions/twitch/src/probe.ts +0 -0
  732. package/extensions/twitch/src/resolver.ts +0 -0
  733. package/extensions/twitch/src/runtime.ts +0 -0
  734. package/extensions/twitch/src/send.ts +0 -0
  735. package/extensions/twitch/src/status.ts +0 -0
  736. package/extensions/twitch/src/test-fixtures.ts +0 -0
  737. package/extensions/twitch/src/twitch-client.ts +0 -0
  738. package/extensions/twitch/src/utils/markdown.ts +0 -0
  739. package/extensions/twitch/src/utils/twitch.ts +0 -0
  740. package/extensions/twitch/test/setup.ts +0 -0
  741. package/extensions/voice-call/CHANGELOG.md +12 -0
  742. package/extensions/voice-call/README.md +0 -0
  743. package/extensions/voice-call/fased.plugin.json +0 -0
  744. package/extensions/voice-call/package.json +1 -1
  745. package/extensions/voice-call/src/allowlist.ts +0 -0
  746. package/extensions/voice-call/src/cli.ts +0 -0
  747. package/extensions/voice-call/src/core-bridge.ts +0 -0
  748. package/extensions/voice-call/src/http-headers.ts +0 -0
  749. package/extensions/voice-call/src/manager/context.ts +0 -0
  750. package/extensions/voice-call/src/manager/events.ts +0 -0
  751. package/extensions/voice-call/src/manager/lookup.ts +0 -0
  752. package/extensions/voice-call/src/manager/outbound.ts +0 -0
  753. package/extensions/voice-call/src/manager/state.ts +0 -0
  754. package/extensions/voice-call/src/manager/store.ts +0 -0
  755. package/extensions/voice-call/src/manager/timers.ts +0 -0
  756. package/extensions/voice-call/src/manager/twiml.ts +0 -0
  757. package/extensions/voice-call/src/manager.ts +0 -0
  758. package/extensions/voice-call/src/media-stream.ts +0 -0
  759. package/extensions/voice-call/src/providers/base.ts +0 -0
  760. package/extensions/voice-call/src/providers/mock.ts +0 -0
  761. package/extensions/voice-call/src/providers/plivo.ts +0 -0
  762. package/extensions/voice-call/src/providers/shared/guarded-json-api.ts +0 -0
  763. package/extensions/voice-call/src/providers/stt-openai-realtime.ts +0 -0
  764. package/extensions/voice-call/src/providers/telnyx.ts +0 -0
  765. package/extensions/voice-call/src/providers/tts-openai.ts +0 -0
  766. package/extensions/voice-call/src/providers/twilio/api.ts +0 -0
  767. package/extensions/voice-call/src/providers/twilio/webhook.ts +0 -0
  768. package/extensions/voice-call/src/providers/twilio.ts +0 -0
  769. package/extensions/voice-call/src/response-generator.ts +0 -0
  770. package/extensions/voice-call/src/runtime.ts +0 -0
  771. package/extensions/voice-call/src/telephony-audio.ts +0 -0
  772. package/extensions/voice-call/src/telephony-tts.ts +0 -0
  773. package/extensions/voice-call/src/tunnel.ts +0 -0
  774. package/extensions/voice-call/src/types.ts +0 -0
  775. package/extensions/voice-call/src/utils.ts +0 -0
  776. package/extensions/voice-call/src/voice-mapping.ts +0 -0
  777. package/extensions/voice-call/src/webhook/stale-call-reaper.ts +0 -0
  778. package/extensions/voice-call/src/webhook-security.ts +0 -0
  779. package/extensions/zalo/CHANGELOG.md +12 -0
  780. package/extensions/zalo/README.md +0 -0
  781. package/extensions/zalo/fased.plugin.json +0 -0
  782. package/extensions/zalo/package.json +1 -1
  783. package/extensions/zalo/src/accounts.ts +0 -0
  784. package/extensions/zalo/src/actions.ts +0 -0
  785. package/extensions/zalo/src/api.ts +0 -0
  786. package/extensions/zalo/src/channel.ts +0 -0
  787. package/extensions/zalo/src/config-schema.ts +0 -0
  788. package/extensions/zalo/src/group-access.ts +0 -0
  789. package/extensions/zalo/src/monitor.ts +0 -0
  790. package/extensions/zalo/src/monitor.webhook.ts +0 -0
  791. package/extensions/zalo/src/onboarding.ts +0 -0
  792. package/extensions/zalo/src/probe.ts +0 -0
  793. package/extensions/zalo/src/proxy.ts +0 -0
  794. package/extensions/zalo/src/runtime.ts +0 -0
  795. package/extensions/zalo/src/send.ts +0 -0
  796. package/extensions/zalo/src/status-issues.ts +0 -0
  797. package/extensions/zalo/src/token.ts +0 -0
  798. package/extensions/zalo/src/types.ts +0 -0
  799. package/extensions/zalouser/CHANGELOG.md +12 -0
  800. package/extensions/zalouser/README.md +0 -0
  801. package/extensions/zalouser/fased.plugin.json +0 -0
  802. package/extensions/zalouser/package.json +1 -1
  803. package/extensions/zalouser/src/accounts.ts +0 -0
  804. package/extensions/zalouser/src/channel.ts +0 -0
  805. package/extensions/zalouser/src/config-schema.ts +0 -0
  806. package/extensions/zalouser/src/monitor.ts +0 -0
  807. package/extensions/zalouser/src/onboarding.ts +0 -0
  808. package/extensions/zalouser/src/probe.ts +0 -0
  809. package/extensions/zalouser/src/runtime.ts +0 -0
  810. package/extensions/zalouser/src/send.ts +0 -0
  811. package/extensions/zalouser/src/status-issues.ts +0 -0
  812. package/extensions/zalouser/src/tool.ts +0 -0
  813. package/extensions/zalouser/src/types.ts +0 -0
  814. package/extensions/zalouser/src/zca.ts +0 -0
  815. package/fased.mjs +14 -1
  816. package/install.sh +9 -6
  817. package/package.json +5 -1
  818. package/scripts/fased-launcher-runtime.mjs +0 -0
  819. package/scripts/fased-signer-network-hosting.sh +18 -7
  820. package/scripts/run-node.mjs +0 -0
  821. package/shared/sat-hash-v1.json +0 -0
  822. package/skills/1password/SKILL.md +0 -0
  823. package/skills/1password/references/cli-examples.md +0 -0
  824. package/skills/1password/references/get-started.md +0 -0
  825. package/skills/apple-notes/SKILL.md +0 -0
  826. package/skills/apple-reminders/SKILL.md +0 -0
  827. package/skills/bear-notes/SKILL.md +0 -0
  828. package/skills/blogwatcher/SKILL.md +0 -0
  829. package/skills/blucli/SKILL.md +0 -0
  830. package/skills/bluebubbles/SKILL.md +0 -0
  831. package/skills/camsnap/SKILL.md +0 -0
  832. package/skills/canvas/SKILL.md +0 -0
  833. package/skills/clawhub/SKILL.md +0 -0
  834. package/skills/coding-agent/SKILL.md +0 -0
  835. package/skills/diagram-maker/SKILL.md +0 -0
  836. package/skills/diagram-maker/references/excalidraw-patterns.md +0 -0
  837. package/skills/diagram-maker/references/svg-template.md +0 -0
  838. package/skills/discord/SKILL.md +0 -0
  839. package/skills/eightctl/SKILL.md +0 -0
  840. package/skills/food-order/SKILL.md +0 -0
  841. package/skills/gemini/SKILL.md +0 -0
  842. package/skills/gh-issues/SKILL.md +0 -0
  843. package/skills/gifgrep/SKILL.md +0 -0
  844. package/skills/github/SKILL.md +0 -0
  845. package/skills/gog/SKILL.md +0 -0
  846. package/skills/goplaces/SKILL.md +0 -0
  847. package/skills/healthcheck/SKILL.md +0 -0
  848. package/skills/himalaya/SKILL.md +0 -0
  849. package/skills/himalaya/references/configuration.md +0 -0
  850. package/skills/himalaya/references/message-composition.md +0 -0
  851. package/skills/imsg/SKILL.md +0 -0
  852. package/skills/mcporter/SKILL.md +0 -0
  853. package/skills/model-usage/SKILL.md +0 -0
  854. package/skills/model-usage/references/codexbar-cli.md +0 -0
  855. package/skills/model-usage/scripts/model_usage.py +0 -0
  856. package/skills/model-usage/scripts/test_model_usage.py +0 -0
  857. package/skills/nano-banana-pro/SKILL.md +0 -0
  858. package/skills/nano-pdf/SKILL.md +0 -0
  859. package/skills/node-connect/SKILL.md +0 -0
  860. package/skills/node-inspect-debugger/SKILL.md +0 -0
  861. package/skills/notion/SKILL.md +0 -0
  862. package/skills/obsidian/SKILL.md +0 -0
  863. package/skills/openai-image-gen/SKILL.md +0 -0
  864. package/skills/openai-image-gen/scripts/gen.py +0 -0
  865. package/skills/openai-image-gen/scripts/test_gen.py +0 -0
  866. package/skills/openai-whisper/SKILL.md +0 -0
  867. package/skills/openai-whisper-api/SKILL.md +0 -0
  868. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -0
  869. package/skills/opencode/SKILL.md +0 -0
  870. package/skills/openhue/SKILL.md +0 -0
  871. package/skills/oracle/SKILL.md +0 -0
  872. package/skills/ordercli/SKILL.md +0 -0
  873. package/skills/peekaboo/SKILL.md +0 -0
  874. package/skills/python-debugpy/SKILL.md +0 -0
  875. package/skills/sag/SKILL.md +0 -0
  876. package/skills/session-logs/SKILL.md +0 -0
  877. package/skills/sherpa-onnx-tts/SKILL.md +0 -0
  878. package/skills/skill-creator/SKILL.md +0 -0
  879. package/skills/skill-creator/license.txt +0 -0
  880. package/skills/skill-creator/scripts/init_skill.py +0 -0
  881. package/skills/skill-creator/scripts/package_skill.py +0 -0
  882. package/skills/skill-creator/scripts/quick_validate.py +0 -0
  883. package/skills/skill-creator/scripts/test_package_skill.py +0 -0
  884. package/skills/skill-creator/scripts/test_quick_validate.py +0 -0
  885. package/skills/skill-workshop/SKILL.md +0 -0
  886. package/skills/slack/SKILL.md +0 -0
  887. package/skills/songsee/SKILL.md +0 -0
  888. package/skills/sonoscli/SKILL.md +0 -0
  889. package/skills/spotify-player/SKILL.md +0 -0
  890. package/skills/summarize/SKILL.md +0 -0
  891. package/skills/things-mac/SKILL.md +0 -0
  892. package/skills/tmux/SKILL.md +0 -0
  893. package/skills/trello/SKILL.md +0 -0
  894. package/skills/video-frames/SKILL.md +0 -0
  895. package/skills/video-frames/scripts/frame.sh +0 -0
  896. package/skills/voice-call/SKILL.md +0 -0
  897. package/skills/wacli/SKILL.md +0 -0
  898. package/skills/wallet-actions/SKILL.md +0 -0
  899. package/skills/weather/SKILL.md +0 -0
  900. package/skills/xurl/SKILL.md +0 -0
@@ -3,7 +3,7 @@ import { acquireFileLock } from "../plugin-sdk/file-lock.js";
3
3
  import "../infra/file-lock.js";
4
4
  import { ensureWalletStateDir } from "../wallet/wallet-runtime-config.js";
5
5
  import { serializeWalletState, writeWalletStateFileAtomically } from "../wallet/wallet-atomic-state.js";
6
- import syncFs from "node:fs";
6
+ import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import { createHash } from "node:crypto";
9
9
 
@@ -119,11 +119,11 @@ function lockTarget(orderId, env) {
119
119
  }
120
120
  function readEntry(orderId, env) {
121
121
  const filePath = entryPath(orderId, env);
122
- if (!syncFs.existsSync(filePath)) {
122
+ if (!fs.existsSync(filePath)) {
123
123
  return null;
124
124
  }
125
125
  try {
126
- const value = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
126
+ const value = JSON.parse(fs.readFileSync(filePath, "utf8"));
127
127
  if (value.version !== 1 || value.orderId !== orderId || typeof value.phase !== "string" || !PHASES.has(value.phase) || !value.actions || Array.isArray(value.actions) || typeof value.actions !== "object" || typeof value.createdAt !== "string" || typeof value.updatedAt !== "string") {
128
128
  throw new Error("invalid shape");
129
129
  }
@@ -148,7 +148,7 @@ function readEntry(orderId, env) {
148
148
  }
149
149
  }
150
150
  function writeEntry(entry, env) {
151
- syncFs.mkdirSync(stateDirectory(env), {
151
+ fs.mkdirSync(stateDirectory(env), {
152
152
  recursive: true,
153
153
  mode: 448
154
154
  });
@@ -4,7 +4,7 @@ import { acquireFileLock, withFileLock } from "../plugin-sdk/file-lock.js";
4
4
  import "../infra/file-lock.js";
5
5
  import { serializeWalletState, writeWalletStateFileAtomically } from "../wallet/wallet-atomic-state.js";
6
6
  import { emitDurableCapacityWarning } from "./durable-capacity.js";
7
- import syncFs from "node:fs";
7
+ import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
10
10
 
@@ -103,10 +103,10 @@ function paymentReferenceClaimLockPath(env) {
103
103
  return path.join(paymentClaimDirectory(env), ".claims");
104
104
  }
105
105
  function listJsonLedgerFiles(directory) {
106
- if (!syncFs.existsSync(directory)) {
106
+ if (!fs.existsSync(directory)) {
107
107
  return [];
108
108
  }
109
- return syncFs.readdirSync(directory).filter((name) => /^[a-f0-9]{64}\.json$/u.test(name));
109
+ return fs.readdirSync(directory).filter((name) => /^[a-f0-9]{64}\.json$/u.test(name));
110
110
  }
111
111
  function requireJsonLedgerCapacity(directory, maximum, label) {
112
112
  const used = listJsonLedgerFiles(directory).length;
@@ -120,16 +120,16 @@ function pruneExpiredPaymentChallenges(env, nowMs) {
120
120
  for (const name of listJsonLedgerFiles(directory)) {
121
121
  const filePath = path.join(directory, name);
122
122
  try {
123
- const raw = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
123
+ const raw = JSON.parse(fs.readFileSync(filePath, "utf8"));
124
124
  if (!isRecord(raw) || typeof raw.taskId !== "string") {
125
125
  continue;
126
126
  }
127
127
  const challenge = validatePaymentChallenge(raw, raw.taskId);
128
128
  const expiredUnclaimed = challenge.status === "issued" && Date.parse(challenge.expiresAt) < nowMs;
129
129
  const claimedAt = challenge.claimedAt ? Date.parse(challenge.claimedAt) : Number.NaN;
130
- const orphanedClaim = challenge.status === "claimed" && !syncFs.existsSync(taskPath(challenge.taskId, env)) && Number.isFinite(claimedAt) && nowMs - claimedAt > TERMINAL_TASK_RETENTION_MS;
130
+ const orphanedClaim = challenge.status === "claimed" && !fs.existsSync(taskPath(challenge.taskId, env)) && Number.isFinite(claimedAt) && nowMs - claimedAt > TERMINAL_TASK_RETENTION_MS;
131
131
  if (expiredUnclaimed || orphanedClaim) {
132
- syncFs.unlinkSync(filePath);
132
+ fs.unlinkSync(filePath);
133
133
  }
134
134
  } catch {}
135
135
  }
@@ -178,17 +178,17 @@ function normalizeNewAccessToken(value) {
178
178
  }
179
179
  function listDurableRecords(env) {
180
180
  const dir = taskDirectory(env);
181
- if (!syncFs.existsSync(dir)) {
181
+ if (!fs.existsSync(dir)) {
182
182
  return [];
183
183
  }
184
184
  const records = [];
185
- const taskFiles = syncFs.readdirSync(dir).filter((name) => /^[a-f0-9]{64}\.json$/u.test(name));
185
+ const taskFiles = fs.readdirSync(dir).filter((name) => /^[a-f0-9]{64}\.json$/u.test(name));
186
186
  if (taskFiles.length > MAX_TASK_FILES_ON_DISK) {
187
187
  throw new Error("A2A task store exceeds its safe on-disk record limit");
188
188
  }
189
189
  for (const name of taskFiles) {
190
190
  try {
191
- const raw = JSON.parse(syncFs.readFileSync(path.join(dir, name), "utf8"));
191
+ const raw = JSON.parse(fs.readFileSync(path.join(dir, name), "utf8"));
192
192
  if (raw && typeof raw === "object" && typeof raw.taskId === "string") {
193
193
  records.push(validateRecord(raw, raw.taskId));
194
194
  }
@@ -214,7 +214,7 @@ function pruneDurableTasks(env) {
214
214
  const remove = terminal.filter((record, index) => now - Date.parse(record.updatedAt) > TERMINAL_TASK_RETENTION_MS || terminal.length - index > MAX_RETAINED_TASKS);
215
215
  for (const record of remove) {
216
216
  try {
217
- syncFs.unlinkSync(taskPath(record.taskId, env));
217
+ fs.unlinkSync(taskPath(record.taskId, env));
218
218
  } catch {}
219
219
  }
220
220
  }
@@ -225,11 +225,11 @@ function readDurableA2aPaymentChallenge(params) {
225
225
  return null;
226
226
  }
227
227
  const filePath = paymentChallengePath(taskId, env);
228
- if (!syncFs.existsSync(filePath)) {
228
+ if (!fs.existsSync(filePath)) {
229
229
  return null;
230
230
  }
231
231
  try {
232
- return validatePaymentChallenge(JSON.parse(syncFs.readFileSync(filePath, "utf8")), taskId);
232
+ return validatePaymentChallenge(JSON.parse(fs.readFileSync(filePath, "utf8")), taskId);
233
233
  } catch (error) {
234
234
  throw new Error("durable A2A payment challenge is unreadable", { cause: error });
235
235
  }
@@ -245,7 +245,7 @@ async function issueDurableA2aPaymentChallenge(params) {
245
245
  throw new Error("A2A payment challenge amount is invalid");
246
246
  }
247
247
  const filePath = paymentChallengePath(taskId, env);
248
- syncFs.mkdirSync(path.dirname(filePath), {
248
+ fs.mkdirSync(path.dirname(filePath), {
249
249
  recursive: true,
250
250
  mode: 448
251
251
  });
@@ -306,9 +306,9 @@ async function claimDurableA2aPaymentChallenge(params) {
306
306
  if (!challenge || challenge.challengeId !== params.challengeId.trim() || challenge.senderHandle !== params.senderHandle.trim().toLowerCase() || challenge.payerAddress !== params.payerAddress.trim()) {
307
307
  throw new Error("A2A payment challenge identity does not match the verified settlement");
308
308
  }
309
- const challengeFiles = syncFs.existsSync(paymentChallengeDirectory(env)) ? syncFs.readdirSync(paymentChallengeDirectory(env)).filter((name) => /^[a-f0-9]{64}\.json$/u.test(name)) : [];
309
+ const challengeFiles = fs.existsSync(paymentChallengeDirectory(env)) ? fs.readdirSync(paymentChallengeDirectory(env)).filter((name) => /^[a-f0-9]{64}\.json$/u.test(name)) : [];
310
310
  for (const name of challengeFiles) {
311
- const raw = JSON.parse(syncFs.readFileSync(path.join(paymentChallengeDirectory(env), name), "utf8"));
311
+ const raw = JSON.parse(fs.readFileSync(path.join(paymentChallengeDirectory(env), name), "utf8"));
312
312
  if (isRecord(raw) && raw.txRefDigest === txRefDigest && raw.taskId !== taskId) {
313
313
  throw new Error("payment transaction was already claimed by a different A2A task");
314
314
  }
@@ -346,17 +346,17 @@ function readDurableA2aTask(params) {
346
346
  return null;
347
347
  }
348
348
  const filePath = taskPath(taskId, params.env ?? process.env);
349
- if (!syncFs.existsSync(filePath)) {
349
+ if (!fs.existsSync(filePath)) {
350
350
  return null;
351
351
  }
352
352
  try {
353
- return validateRecord(JSON.parse(syncFs.readFileSync(filePath, "utf8")), taskId);
353
+ return validateRecord(JSON.parse(fs.readFileSync(filePath, "utf8")), taskId);
354
354
  } catch (error) {
355
355
  throw new Error("durable A2A task is unreadable; refusing to replace it", { cause: error });
356
356
  }
357
357
  }
358
358
  function writeRecord(record, env) {
359
- syncFs.mkdirSync(taskDirectory(env), {
359
+ fs.mkdirSync(taskDirectory(env), {
360
360
  recursive: true,
361
361
  mode: 448
362
362
  });
@@ -372,15 +372,15 @@ async function claimDurableA2aPaymentReference(params) {
372
372
  const claimPath = paymentClaimPath(txRef, env);
373
373
  await withFileLock(paymentReferenceClaimLockPath(env), LOCK_OPTIONS, async () => {
374
374
  await withFileLock(claimPath, LOCK_OPTIONS, async () => {
375
- if (syncFs.existsSync(claimPath)) {
376
- const existing = JSON.parse(syncFs.readFileSync(claimPath, "utf8"));
375
+ if (fs.existsSync(claimPath)) {
376
+ const existing = JSON.parse(fs.readFileSync(claimPath, "utf8"));
377
377
  if (!isRecord(existing) || existing.taskId !== taskId) {
378
378
  throw new Error("payment transaction was already claimed by a different A2A task");
379
379
  }
380
380
  return;
381
381
  }
382
382
  const claimDir = path.dirname(claimPath);
383
- syncFs.mkdirSync(claimDir, {
383
+ fs.mkdirSync(claimDir, {
384
384
  recursive: true,
385
385
  mode: 448
386
386
  });
@@ -406,7 +406,7 @@ async function reserveDurableA2aTask(params) {
406
406
  input: params.input,
407
407
  marketplacePayment: params.marketplacePayment
408
408
  });
409
- syncFs.mkdirSync(taskDirectory(env), {
409
+ fs.mkdirSync(taskDirectory(env), {
410
410
  recursive: true,
411
411
  mode: 448
412
412
  });
@@ -2,7 +2,7 @@ import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
2
2
  import { isWithinDir } from "../infra/path-safety.js";
3
3
  import { normalizeControlUiBasePath } from "./control-ui-shared.js";
4
4
  import { resolveControlUiRootSync } from "../infra/control-ui-assets.js";
5
- import syncFs from "node:fs";
5
+ import fs from "node:fs";
6
6
  import path from "node:path";
7
7
 
8
8
  //#region src/gateway/control-ui-boot-check.ts
@@ -189,7 +189,7 @@ function readControlUiBootAsset(params) {
189
189
  };
190
190
  }
191
191
  try {
192
- const body = syncFs.readFileSync(safeFile.fd);
192
+ const body = fs.readFileSync(safeFile.fd);
193
193
  return {
194
194
  check: {
195
195
  url: params.url,
@@ -200,7 +200,7 @@ function readControlUiBootAsset(params) {
200
200
  text: body.toString("utf8")
201
201
  };
202
202
  } finally {
203
- syncFs.closeSync(safeFile.fd);
203
+ fs.closeSync(safeFile.fd);
204
204
  }
205
205
  }
206
206
  function resolveBootCheckRoot(rootState) {
@@ -231,7 +231,7 @@ function resolveBootCheckRoot(rootState) {
231
231
  return {
232
232
  ok: true,
233
233
  root,
234
- rootReal: syncFs.realpathSync(root)
234
+ rootReal: fs.realpathSync(root)
235
235
  };
236
236
  } catch (error) {
237
237
  if (isExpectedSafePathError(error)) {
@@ -268,9 +268,9 @@ function resolveControlUiBootCheck(params) {
268
268
  }
269
269
  let html = "";
270
270
  try {
271
- html = syncFs.readFileSync(safeIndex.fd, "utf8");
271
+ html = fs.readFileSync(safeIndex.fd, "utf8");
272
272
  } finally {
273
- syncFs.closeSync(safeIndex.fd);
273
+ fs.closeSync(safeIndex.fd);
274
274
  }
275
275
  const entryJsUrl = extractHtmlScriptAssetUrls(html, indexUrl)[0] ?? null;
276
276
  const entry = entryJsUrl == null ? {
@@ -1,7 +1,7 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
2
  import { safeEqualSecret } from "../security/secret-equal.js";
3
3
  import { isTrustedProxyAddress } from "./net.js";
4
- import syncFs from "node:fs";
4
+ import fs from "node:fs";
5
5
  import path from "node:path";
6
6
  import { createHash, createHmac, randomBytes } from "node:crypto";
7
7
 
@@ -512,10 +512,10 @@ var ControlUiLoginService = class {
512
512
  }
513
513
  readState() {
514
514
  try {
515
- if (!syncFs.existsSync(this.statePath)) {
515
+ if (!fs.existsSync(this.statePath)) {
516
516
  return buildEmptyState();
517
517
  }
518
- const raw = syncFs.readFileSync(this.statePath, "utf8");
518
+ const raw = fs.readFileSync(this.statePath, "utf8");
519
519
  return normalizeState(safeJsonParse(raw));
520
520
  } catch {
521
521
  return buildEmptyState();
@@ -525,13 +525,13 @@ var ControlUiLoginService = class {
525
525
  if (!this.state) {
526
526
  return;
527
527
  }
528
- syncFs.mkdirSync(path.dirname(this.statePath), { recursive: true });
528
+ fs.mkdirSync(path.dirname(this.statePath), { recursive: true });
529
529
  const tmpPath = `${this.statePath}.${process.pid}.${Date.now()}.tmp`;
530
530
  const body = `${JSON.stringify(this.state, null, 2)}\n`;
531
- syncFs.writeFileSync(tmpPath, body, { mode: 384 });
532
- syncFs.renameSync(tmpPath, this.statePath);
531
+ fs.writeFileSync(tmpPath, body, { mode: 384 });
532
+ fs.renameSync(tmpPath, this.statePath);
533
533
  try {
534
- syncFs.chmodSync(this.statePath, 384);
534
+ fs.chmodSync(this.statePath, 384);
535
535
  } catch {}
536
536
  }
537
537
  };
@@ -8,7 +8,7 @@ import { resolveControlUiRootSync } from "../infra/control-ui-assets.js";
8
8
  import { DEFAULT_ASSISTANT_IDENTITY, resolveAssistantIdentity } from "./assistant-identity.js";
9
9
  import { CONTROL_UI_BOOTSTRAP_CONFIG_PATH } from "./control-ui-contract.js";
10
10
  import { buildControlUiCspHeader } from "./control-ui-csp.js";
11
- import syncFs from "node:fs";
11
+ import fs from "node:fs";
12
12
  import path from "node:path";
13
13
 
14
14
  //#region src/gateway/control-ui.ts
@@ -152,10 +152,10 @@ function handleControlUiAvatarRequest(req, res, opts) {
152
152
  res.end();
153
153
  return true;
154
154
  }
155
- serveResolvedFile(res, safeAvatar.path, syncFs.readFileSync(safeAvatar.fd));
155
+ serveResolvedFile(res, safeAvatar.path, fs.readFileSync(safeAvatar.fd));
156
156
  return true;
157
157
  } finally {
158
- syncFs.closeSync(safeAvatar.fd);
158
+ fs.closeSync(safeAvatar.fd);
159
159
  }
160
160
  }
161
161
  function respondNotFound(res) {
@@ -318,7 +318,7 @@ function handleControlUiHttpRequest(req, res, opts) {
318
318
  }
319
319
  const rootReal = (() => {
320
320
  try {
321
- return syncFs.realpathSync(root);
321
+ return fs.realpathSync(root);
322
322
  } catch (error) {
323
323
  if (isExpectedSafePathError(error)) {
324
324
  return null;
@@ -364,13 +364,13 @@ function handleControlUiHttpRequest(req, res, opts) {
364
364
  return true;
365
365
  }
366
366
  if (path.basename(safeFile.path) === "index.html") {
367
- serveResolvedIndexHtml(res, syncFs.readFileSync(safeFile.fd, "utf8"));
367
+ serveResolvedIndexHtml(res, fs.readFileSync(safeFile.fd, "utf8"));
368
368
  return true;
369
369
  }
370
- serveResolvedFile(res, safeFile.path, syncFs.readFileSync(safeFile.fd));
370
+ serveResolvedFile(res, safeFile.path, fs.readFileSync(safeFile.fd));
371
371
  return true;
372
372
  } finally {
373
- syncFs.closeSync(safeFile.fd);
373
+ fs.closeSync(safeFile.fd);
374
374
  }
375
375
  }
376
376
  if (STATIC_ASSET_EXTENSIONS.has(path.extname(fileRel).toLowerCase())) {
@@ -387,10 +387,10 @@ function handleControlUiHttpRequest(req, res, opts) {
387
387
  res.end();
388
388
  return true;
389
389
  }
390
- serveResolvedIndexHtml(res, syncFs.readFileSync(safeIndex.fd, "utf8"));
390
+ serveResolvedIndexHtml(res, fs.readFileSync(safeIndex.fd, "utf8"));
391
391
  return true;
392
392
  } finally {
393
- syncFs.closeSync(safeIndex.fd);
393
+ fs.closeSync(safeIndex.fd);
394
394
  }
395
395
  }
396
396
  respondNotFound(res);
@@ -3,7 +3,7 @@ import { withFileLock } from "../plugin-sdk/file-lock.js";
3
3
  import "../infra/file-lock.js";
4
4
  import { serializeWalletState, writeWalletStateFileAtomically } from "../wallet/wallet-atomic-state.js";
5
5
  import { emitDurableCapacityWarning } from "./durable-capacity.js";
6
- import syncFs from "node:fs";
6
+ import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import { createCipheriv, createDecipheriv, createHash, randomBytes } from "node:crypto";
9
9
 
@@ -118,24 +118,24 @@ function secretKeyPath(env) {
118
118
  }
119
119
  function readOrCreateSecretKey(env) {
120
120
  const filePath = secretKeyPath(env);
121
- syncFs.mkdirSync(path.dirname(filePath), {
121
+ fs.mkdirSync(path.dirname(filePath), {
122
122
  recursive: true,
123
123
  mode: 448
124
124
  });
125
- if (syncFs.existsSync(filePath)) {
126
- const key = Buffer.from(syncFs.readFileSync(filePath, "utf8").trim(), "hex");
125
+ if (fs.existsSync(filePath)) {
126
+ const key = Buffer.from(fs.readFileSync(filePath, "utf8").trim(), "hex");
127
127
  if (key.length !== SECRET_KEY_BYTES) {
128
128
  throw new Error("Marketplace run encryption key is invalid");
129
129
  }
130
130
  return key;
131
131
  }
132
132
  const key = randomBytes(SECRET_KEY_BYTES);
133
- syncFs.writeFileSync(filePath, `${key.toString("hex")}\n`, {
133
+ fs.writeFileSync(filePath, `${key.toString("hex")}\n`, {
134
134
  encoding: "utf8",
135
135
  mode: 384
136
136
  });
137
137
  try {
138
- syncFs.chmodSync(filePath, 384);
138
+ fs.chmodSync(filePath, 384);
139
139
  } catch {}
140
140
  return key;
141
141
  }
@@ -232,11 +232,11 @@ function validateRecord(value, executionIntentId) {
232
232
  }
233
233
  function readRecord(executionIntentId, env) {
234
234
  const filePath = runPath(executionIntentId, env);
235
- if (!syncFs.existsSync(filePath)) {
235
+ if (!fs.existsSync(filePath)) {
236
236
  return null;
237
237
  }
238
238
  try {
239
- const stored = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
239
+ const stored = JSON.parse(fs.readFileSync(filePath, "utf8"));
240
240
  if (isRecord(stored) && isRecord(stored.prepared)) {
241
241
  const prepared = { ...stored.prepared };
242
242
  if (prepared.taskAccessToken === undefined) {
@@ -260,7 +260,7 @@ function readRecord(executionIntentId, env) {
260
260
  }
261
261
  }
262
262
  function writeRecord(record, env) {
263
- syncFs.mkdirSync(runDirectory(env), {
263
+ fs.mkdirSync(runDirectory(env), {
264
264
  recursive: true,
265
265
  mode: 448
266
266
  });
@@ -287,10 +287,10 @@ function writeRecord(record, env) {
287
287
  }
288
288
  function listRunFiles(env) {
289
289
  const dir = runDirectory(env);
290
- if (!syncFs.existsSync(dir)) {
290
+ if (!fs.existsSync(dir)) {
291
291
  return [];
292
292
  }
293
- const files = syncFs.readdirSync(dir).filter((name) => /^[a-f0-9]{64}\.json$/u.test(name));
293
+ const files = fs.readdirSync(dir).filter((name) => /^[a-f0-9]{64}\.json$/u.test(name));
294
294
  emitDurableCapacityWarning("Marketplace run store", files.length, MAX_RUN_FILES_ON_DISK);
295
295
  if (files.length > MAX_RUN_FILES_ON_DISK) {
296
296
  throw new Error("Marketplace run store exceeds its safe on-disk record limit");
@@ -302,7 +302,7 @@ function pruneTerminalRuns(env) {
302
302
  const terminal = listRunFiles(env).map((name) => {
303
303
  const filePath = path.join(runDirectory(env), name);
304
304
  try {
305
- const value = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
305
+ const value = JSON.parse(fs.readFileSync(filePath, "utf8"));
306
306
  if (!isRecord(value) || typeof value.status !== "string" || ![
307
307
  "completed",
308
308
  "failed",
@@ -322,7 +322,7 @@ function pruneTerminalRuns(env) {
322
322
  for (const [index, entry] of terminal.entries()) {
323
323
  if (now - entry.updatedAt > TERMINAL_RETENTION_MS || terminal.length - index > MAX_RETAINED_TERMINAL_RUNS) {
324
324
  try {
325
- syncFs.unlinkSync(entry.filePath);
325
+ fs.unlinkSync(entry.filePath);
326
326
  } catch {}
327
327
  }
328
328
  }
@@ -332,7 +332,7 @@ async function withDurableMarketplaceRun(params) {
332
332
  const executionIntentId = validateExecutionIntentId(params.executionIntentId);
333
333
  const digest = intentDigest(params.intent);
334
334
  const filePath = runPath(executionIntentId, env);
335
- syncFs.mkdirSync(runDirectory(env), {
335
+ fs.mkdirSync(runDirectory(env), {
336
336
  recursive: true,
337
337
  mode: 448
338
338
  });
@@ -1,7 +1,7 @@
1
1
  import { CONFIG_PATH } from "../config/paths.js";
2
2
  import "../config/config.js";
3
3
  import { importFileModule, resolveFunctionModuleExport } from "../hooks/module-loader.js";
4
- import syncFs from "node:fs";
4
+ import fs from "node:fs";
5
5
  import path from "node:path";
6
6
 
7
7
  //#region src/gateway/hooks-mapping.ts
@@ -301,8 +301,8 @@ function escapesBase(baseDir, candidate) {
301
301
  }
302
302
  function safeRealpathSync(candidate) {
303
303
  try {
304
- const nativeRealpath = syncFs.realpathSync.native;
305
- return nativeRealpath ? nativeRealpath(candidate) : syncFs.realpathSync(candidate);
304
+ const nativeRealpath = fs.realpathSync.native;
305
+ return nativeRealpath ? nativeRealpath(candidate) : fs.realpathSync(candidate);
306
306
  } catch {
307
307
  return null;
308
308
  }
@@ -310,7 +310,7 @@ function safeRealpathSync(candidate) {
310
310
  function resolveExistingAncestor(candidate) {
311
311
  let current = path.resolve(candidate);
312
312
  while (true) {
313
- if (syncFs.existsSync(current)) {
313
+ if (fs.existsSync(current)) {
314
314
  return current;
315
315
  }
316
316
  const parent = path.dirname(current);
@@ -1,6 +1,6 @@
1
1
  import { runExec } from "../process/exec.js";
2
2
  import { getTailnetHostname } from "../infra/tailscale.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/gateway/server-discovery.ts
@@ -20,7 +20,7 @@ function resolveBonjourCliPath(opts = {}) {
20
20
  if (envPath) {
21
21
  return envPath;
22
22
  }
23
- const statSync = opts.statSync ?? syncFs.statSync;
23
+ const statSync = opts.statSync ?? fs.statSync;
24
24
  const isFile = (candidate) => {
25
25
  try {
26
26
  return statSync(candidate).isFile();
@@ -57,7 +57,7 @@ import { buildGatewayProbePayload } from "./probe-payload.js";
57
57
  import { canonicalizePathVariant, isPathProtectedByPrefixes } from "./security-path.js";
58
58
  import { handleToolsInvokeHttpRequest } from "./tools-invoke-http.js";
59
59
  import { authorizeGatewayConnect, isDirectLoopbackRequest, isLocalDirectRequest } from "./auth.js";
60
- import syncFs from "node:fs";
60
+ import fs from "node:fs";
61
61
  import path from "node:path";
62
62
  import { createServer } from "node:http";
63
63
  import { createServer as createServer$1 } from "node:https";
@@ -2160,7 +2160,7 @@ async function readLocalFederationStatus(env = process.env, fetchImpl = fetch) {
2160
2160
  const sourcePath = path.join(resolveStateDir(env), "federation", "access-token.json");
2161
2161
  const managed = (env.FASED_GATEWAY_MODE ?? "").trim().toLowerCase() === "managed";
2162
2162
  const configured = resolveConfiguredFederationStatus(env);
2163
- if (!syncFs.existsSync(sourcePath)) {
2163
+ if (!fs.existsSync(sourcePath)) {
2164
2164
  return {
2165
2165
  managed,
2166
2166
  sourcePath,
@@ -2172,7 +2172,7 @@ async function readLocalFederationStatus(env = process.env, fetchImpl = fetch) {
2172
2172
  }
2173
2173
  let rawText = "";
2174
2174
  try {
2175
- rawText = syncFs.readFileSync(sourcePath, "utf-8");
2175
+ rawText = fs.readFileSync(sourcePath, "utf-8");
2176
2176
  } catch {
2177
2177
  return {
2178
2178
  managed,
@@ -2221,7 +2221,7 @@ async function readLocalFederationStatus(env = process.env, fetchImpl = fetch) {
2221
2221
  const lifecycle = Number.isFinite(expiresAtMs) ? expiresAtMs > Date.now() ? "active" : "expired" : "invalid";
2222
2222
  let fileUpdatedAt;
2223
2223
  try {
2224
- fileUpdatedAt = syncFs.statSync(sourcePath).mtime.toISOString();
2224
+ fileUpdatedAt = fs.statSync(sourcePath).mtime.toISOString();
2225
2225
  } catch {
2226
2226
  fileUpdatedAt = undefined;
2227
2227
  }
@@ -30,7 +30,7 @@ import { parseMessageWithAttachments } from "../chat-attachments.js";
30
30
  import { injectTimestamp, timestampOptsFromConfig } from "./agent-timestamp.js";
31
31
  import { normalizeRpcAttachmentsToChatAttachments } from "./attachment-normalize.js";
32
32
  import { appendInjectedAssistantMessageToTranscript } from "./chat-transcript-inject.js";
33
- import syncFs from "node:fs";
33
+ import fs from "node:fs";
34
34
  import path from "node:path";
35
35
 
36
36
  //#region src/gateway/server-methods/chat.ts
@@ -328,7 +328,7 @@ function resolveTranscriptPath(params) {
328
328
  }
329
329
  function transcriptHasIdempotencyKey(transcriptPath, idempotencyKey) {
330
330
  try {
331
- const lines = syncFs.readFileSync(transcriptPath, "utf-8").split(/\r?\n/);
331
+ const lines = fs.readFileSync(transcriptPath, "utf-8").split(/\r?\n/);
332
332
  for (const line of lines) {
333
333
  if (!line.trim()) {
334
334
  continue;
@@ -356,7 +356,7 @@ function appendAssistantTranscriptMessage(params) {
356
356
  error: "transcript path not resolved"
357
357
  };
358
358
  }
359
- if (!syncFs.existsSync(transcriptPath)) {
359
+ if (!fs.existsSync(transcriptPath)) {
360
360
  if (!params.createIfMissing) {
361
361
  return {
362
362
  ok: false,
@@ -30,7 +30,7 @@ import { clearCheckpointBranchIsolationFields } from "../session-compaction-isol
30
30
  import { applySessionsPatchToStore } from "../sessions-patch.js";
31
31
  import { resolveSessionKeyFromResolveParams } from "../sessions-resolve.js";
32
32
  import { assertValidParams } from "./validation.js";
33
- import syncFs from "node:fs";
33
+ import fs from "node:fs";
34
34
  import path from "node:path";
35
35
  import { randomUUID } from "node:crypto";
36
36
  import { SessionManager } from "@mariozechner/pi-coding-agent";
@@ -196,7 +196,7 @@ function resolveCheckpointSnapshotFile(params) {
196
196
  return null;
197
197
  }
198
198
  try {
199
- if (!syncFs.statSync(filePath).isFile()) {
199
+ if (!fs.statSync(filePath).isFile()) {
200
200
  return null;
201
201
  }
202
202
  } catch {
@@ -543,7 +543,7 @@ const sessionsHandlers = {
543
543
  }
544
544
  const cleanupRestoredFile = () => {
545
545
  try {
546
- syncFs.rmSync(sessionFile, { force: true });
546
+ fs.rmSync(sessionFile, { force: true });
547
547
  } catch {}
548
548
  };
549
549
  const cleanupError = await ensureSessionRuntimeCleanup({
@@ -1068,7 +1068,7 @@ const sessionsHandlers = {
1068
1068
  }, undefined);
1069
1069
  return;
1070
1070
  }
1071
- const filePath = resolveSessionTranscriptCandidates(sessionId, storePath, entry?.sessionFile, target.agentId).find((candidate) => syncFs.existsSync(candidate));
1071
+ const filePath = resolveSessionTranscriptCandidates(sessionId, storePath, entry?.sessionFile, target.agentId).find((candidate) => fs.existsSync(candidate));
1072
1072
  if (!filePath) {
1073
1073
  respond(true, {
1074
1074
  ok: true,
@@ -1078,7 +1078,7 @@ const sessionsHandlers = {
1078
1078
  }, undefined);
1079
1079
  return;
1080
1080
  }
1081
- const raw = syncFs.readFileSync(filePath, "utf-8");
1081
+ const raw = fs.readFileSync(filePath, "utf-8");
1082
1082
  const lines = raw.split(/\r?\n/).filter((l) => l.trim().length > 0);
1083
1083
  if (lines.length <= maxLines) {
1084
1084
  respond(true, {
@@ -1096,7 +1096,7 @@ const sessionsHandlers = {
1096
1096
  const archived = archiveFileOnDisk(filePath, "bak");
1097
1097
  const keptLines = lines.slice(-maxLines);
1098
1098
  try {
1099
- syncFs.writeFileSync(filePath, `${keptLines.join("\n")}\n`, "utf-8");
1099
+ fs.writeFileSync(filePath, `${keptLines.join("\n")}\n`, "utf-8");
1100
1100
  } catch (error) {
1101
1101
  if (preCompactionSnapshot) {
1102
1102
  cleanupSessionCompactionSnapshot(preCompactionSnapshot);
@@ -12,7 +12,7 @@ import { readCronRunLogEntriesPageAll } from "../../cron/run-log.js";
12
12
  import { loadCronStore, resolveCronStorePath } from "../../cron/store.js";
13
13
  import { discoverAllSessions, loadCostUsageSummary, loadSessionCostSummary, loadSessionUsageTimeSeries } from "../../infra/session-cost-usage.js";
14
14
  import { buildUsageAggregateTail } from "../../shared/usage-aggregates.js";
15
- import syncFs from "node:fs";
15
+ import fs from "node:fs";
16
16
 
17
17
  //#region src/gateway/server-methods/usage.ts
18
18
  const COST_USAGE_CACHE_TTL_MS = 3e4;
@@ -662,7 +662,7 @@ const usageHandlers = {
662
662
  return;
663
663
  }
664
664
  try {
665
- const stats = syncFs.statSync(sessionFile);
665
+ const stats = fs.statSync(sessionFile);
666
666
  if (stats.isFile()) {
667
667
  mergedEntries.push({
668
668
  key: resolvedStoreKey,
@@ -1,6 +1,6 @@
1
1
  import { isSessionCompactionCheckpointArtifactName } from "../config/sessions/artifacts.js";
2
2
  import "../config/sessions.js";
3
- import syncFs from "node:fs";
3
+ import fs from "node:fs";
4
4
  import path from "node:path";
5
5
  import { randomUUID } from "node:crypto";
6
6
 
@@ -88,7 +88,7 @@ function deleteCheckpointSnapshotIfSafe(filePath, expectedDir) {
88
88
  return;
89
89
  }
90
90
  try {
91
- syncFs.unlinkSync(resolved);
91
+ fs.unlinkSync(resolved);
92
92
  } catch {}
93
93
  }
94
94
  function cleanupSessionCompactionSnapshot(reference) {
@@ -105,7 +105,7 @@ function captureSessionCompactionSnapshot(params) {
105
105
  const resolved = path.resolve(sessionFile);
106
106
  let stat;
107
107
  try {
108
- stat = syncFs.statSync(resolved);
108
+ stat = fs.statSync(resolved);
109
109
  } catch {
110
110
  return null;
111
111
  }
@@ -123,7 +123,7 @@ function captureSessionCompactionSnapshot(params) {
123
123
  const base = path.basename(resolved, ".jsonl");
124
124
  const snapshotFile = path.join(dir, `${base}.checkpoint.${randomUUID()}.jsonl`);
125
125
  try {
126
- syncFs.copyFileSync(resolved, snapshotFile);
126
+ fs.copyFileSync(resolved, snapshotFile);
127
127
  } catch {
128
128
  return null;
129
129
  }