@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,5 +1,5 @@
1
1
  import { resolveFasedAgentPackageRoot } from "../infra/fased-root.js";
2
- import fs from "node:fs";
2
+ import syncFs from "node:fs";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/agents/docs-path.ts
@@ -7,7 +7,7 @@ async function resolveFasedAgentDocsPath(params) {
7
7
  const workspaceDir = params.workspaceDir?.trim();
8
8
  if (workspaceDir) {
9
9
  const workspaceDocs = path.join(workspaceDir, "docs");
10
- if (fs.existsSync(workspaceDocs)) {
10
+ if (syncFs.existsSync(workspaceDocs)) {
11
11
  return workspaceDocs;
12
12
  }
13
13
  }
@@ -20,7 +20,7 @@ async function resolveFasedAgentDocsPath(params) {
20
20
  return null;
21
21
  }
22
22
  const packageDocs = path.join(packageRoot, "docs");
23
- return fs.existsSync(packageDocs) ? packageDocs : null;
23
+ return syncFs.existsSync(packageDocs) ? packageDocs : null;
24
24
  }
25
25
 
26
26
  //#endregion
@@ -1,6 +1,6 @@
1
1
  import { STATE_DIR } from "../config/paths.js";
2
2
  import { isRecord, resolveUserPath } from "../utils.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/agents/embedded-pi-mcp.ts
@@ -66,10 +66,10 @@ function readBundleMcpFile(params) {
66
66
  if (relative.startsWith("..") || path.isAbsolute(relative)) {
67
67
  return {};
68
68
  }
69
- if (!fs.existsSync(filePath)) {
69
+ if (!syncFs.existsSync(filePath)) {
70
70
  return {};
71
71
  }
72
- const raw = JSON.parse(fs.readFileSync(filePath, "utf-8"));
72
+ const raw = JSON.parse(syncFs.readFileSync(filePath, "utf-8"));
73
73
  const servers = extractMcpServerMap(raw);
74
74
  const baseDir = path.dirname(filePath);
75
75
  return Object.fromEntries(Object.entries(servers).map(([serverName, server]) => [serverName, absolutizeBundleMcpServer({
@@ -99,7 +99,7 @@ function loadEnabledBundleMcpConfig(params) {
99
99
  cfg: params.cfg,
100
100
  pluginId
101
101
  })) {
102
- if (!fs.existsSync(rootDir)) {
102
+ if (!syncFs.existsSync(rootDir)) {
103
103
  continue;
104
104
  }
105
105
  for (const fileName of BUNDLE_MCP_FILENAMES) {
@@ -3,7 +3,7 @@ import { resolveAgentWorkspaceDir } from "./agent-scope.js";
3
3
  import { AVATAR_MAX_BYTES, isAvatarDataUrl, isAvatarHttpUrl, isPathWithinRoot, isSupportedLocalAvatarExtension } from "../shared/avatar-policy.js";
4
4
  import { resolveAgentIdentity } from "./identity.js";
5
5
  import { loadAgentIdentityFromWorkspace } from "./identity-file.js";
6
- import fs from "node:fs";
6
+ import syncFs from "node:fs";
7
7
  import path from "node:path";
8
8
 
9
9
  //#region src/agents/identity-avatar.ts
@@ -28,7 +28,7 @@ function resolveAvatarSource(cfg, agentId, opts) {
28
28
  }
29
29
  function resolveExistingPath(value) {
30
30
  try {
31
- return fs.realpathSync(value);
31
+ return syncFs.realpathSync(value);
32
32
  } catch {
33
33
  return path.resolve(value);
34
34
  }
@@ -51,7 +51,7 @@ function resolveLocalAvatarPath(params) {
51
51
  };
52
52
  }
53
53
  try {
54
- const stat = fs.statSync(realPath);
54
+ const stat = syncFs.statSync(realPath);
55
55
  if (!stat.isFile()) {
56
56
  return {
57
57
  ok: false,
@@ -1,5 +1,5 @@
1
1
  import { DEFAULT_IDENTITY_FILENAME } from "./workspace.js";
2
- import fs from "node:fs";
2
+ import syncFs from "node:fs";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/agents/identity-file.ts
@@ -67,7 +67,7 @@ function identityHasValues(identity) {
67
67
  }
68
68
  function loadIdentityFromFile(identityPath) {
69
69
  try {
70
- const content = fs.readFileSync(identityPath, "utf-8");
70
+ const content = syncFs.readFileSync(identityPath, "utf-8");
71
71
  const parsed = parseIdentityMarkdown(content);
72
72
  if (!identityHasValues(parsed)) {
73
73
  return null;
@@ -131,6 +131,7 @@ function mergeConfig(defaults, overrides, agentId) {
131
131
  baseUrl: overrideRemote?.baseUrl ?? defaultRemote?.baseUrl,
132
132
  apiKey: overrideRemote?.apiKey ?? defaultRemote?.apiKey,
133
133
  headers: overrideRemote?.headers ?? defaultRemote?.headers,
134
+ allowSessionContent: overrideRemote?.allowSessionContent ?? defaultRemote?.allowSessionContent ?? false,
134
135
  batch
135
136
  } : undefined;
136
137
  const fallback = overrides?.fallback ?? defaults?.fallback ?? "none";
@@ -146,7 +147,12 @@ function mergeConfig(defaults, overrides, agentId) {
146
147
  modelPath: overrides?.local?.modelPath ?? defaults?.local?.modelPath,
147
148
  modelCacheDir: overrides?.local?.modelCacheDir ?? defaults?.local?.modelCacheDir
148
149
  };
149
- const sources = normalizeSources(overrides?.sources ?? defaults?.sources, sessionMemory);
150
+ const requestedSources = normalizeSources(overrides?.sources ?? defaults?.sources, sessionMemory);
151
+ const usesRemoteEmbedding = provider !== "local" && provider !== "ollama";
152
+ const sources = usesRemoteEmbedding && !remote?.allowSessionContent ? requestedSources.filter((source) => source !== "sessions") : requestedSources;
153
+ if (sources.length === 0) {
154
+ sources.push("memory");
155
+ }
150
156
  const rawPaths = [...defaults?.extraPaths ?? [], ...overrides?.extraPaths ?? []].map((value) => value.trim()).filter(Boolean);
151
157
  const extraPaths = Array.from(new Set(rawPaths));
152
158
  const vector = {
@@ -42,8 +42,7 @@ function buildCredentialScopedAllowedModelSet(params) {
42
42
  cfg: params.cfg,
43
43
  catalog: usableCatalog,
44
44
  defaultProvider: params.defaultProvider,
45
- defaultModel: params.defaultModel,
46
- additionalAllowedProviders: usableProviders
45
+ defaultModel: params.defaultModel
47
46
  });
48
47
  const allowedCatalog = filterModelCatalogByProviders(allowed.allowedCatalog, usableProviders);
49
48
  const allowedKeys = new Set(allowedCatalog.map((entry) => modelKey(entry.provider, entry.id)));
@@ -103,7 +103,7 @@ async function resolveCanonicalModelCatalogSnapshot(params) {
103
103
  ...model,
104
104
  metadata,
105
105
  available: true,
106
- runnable: runnableRefs.size === 0 || runnableRefs.has(modelRef(model)),
106
+ runnable: authenticated.allowAny || runnableRefs.has(modelRef(model)),
107
107
  recommended: metadata.recommended === true,
108
108
  assignedRoles: assignmentsByRef.get(modelRef(model)) ?? []
109
109
  };
@@ -1,5 +1,5 @@
1
- import { isOpenAISignInRuntimeModelSupported, isStandardProviderCatalogEntry, listProviderBrandManifests } from "../providers/registry.js";
2
1
  import { MODEL_APIS } from "../config/types.models.js";
2
+ import { isOpenAISignInRuntimeModelSupported, isStandardProviderCatalogEntry, listProviderBrandManifests } from "../providers/registry.js";
3
3
  import { buildModelCatalogMergeKey, mergeModelCatalogRowsByAuthority, normalizeModelCatalogModelId, normalizeModelCatalogProviderId, normalizeProviderCatalogRows } from "./model-catalog-normalized.js";
4
4
  import { CURRENT_MODEL_PROVIDER_CATALOG, listCurrentModelCatalogRows } from "./current-model-catalog.js";
5
5
  import { deriveModelMetadata } from "./model-metadata.js";
@@ -1,6 +1,6 @@
1
1
  import { resolveModelThinkingCapability } from "../shared/model-thinking.js";
2
- import { getProviderBrandManifestForRoute, lookupProviderManifestModelCapability, providerModelRecommendationRank } from "../providers/registry.js";
3
2
  import { isPrivateNetworkBaseUrl } from "../utils/private-network-url.js";
3
+ import { getProviderBrandManifestForRoute, lookupProviderManifestModelCapability, providerModelRecommendationRank } from "../providers/registry.js";
4
4
  import { lookupRefreshedModelCapability } from "../providers/refreshed-model-capabilities.js";
5
5
 
6
6
  //#region src/agents/model-metadata.ts
@@ -1,7 +1,6 @@
1
1
  import { resolveAgentModelFallbackValues, resolveAgentModelPrimaryValue, toAgentModelListLike } from "../config/model-input.js";
2
2
  import { createSubsystemLogger } from "../logging/subsystem.js";
3
3
  import { resolveAgentConfig, resolveAgentEffectiveModelPrimary } from "./agent-scope.js";
4
- import { isStandardProviderModelRef } from "../providers/registry.js";
5
4
  import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "./defaults.js";
6
5
  import { splitTrailingAuthProfile } from "./model-ref-profile.js";
7
6
  import { normalizeGoogleModelId } from "./models-config.providers.js";
@@ -418,7 +417,6 @@ function buildAllowedModelSet(params) {
418
417
  defaultModel: params.defaultModel
419
418
  });
420
419
  const catalogKeys = new Set(params.catalog.map((entry) => modelKey(entry.provider, entry.id)));
421
- const additionalAllowedProviders = new Set([...params.additionalAllowedProviders ?? []].map((provider) => normalizeProviderId(provider)).filter(Boolean));
422
420
  if (allowAny) {
423
421
  for (const key of defaultKeys) {
424
422
  catalogKeys.add(key);
@@ -449,22 +447,7 @@ function buildAllowedModelSet(params) {
449
447
  for (const key of defaultKeys) {
450
448
  allowedKeys.add(key);
451
449
  }
452
- for (const entry of params.catalog) {
453
- if (additionalAllowedProviders.has(normalizeProviderId(entry.provider))) {
454
- allowedKeys.add(modelKey(entry.provider, entry.id));
455
- }
456
- }
457
450
  const allowedCatalog = [...params.catalog.filter((entry) => allowedKeys.has(modelKey(entry.provider, entry.id))), ...syntheticCatalogEntries.values()];
458
- if (allowedCatalog.length === 0 && allowedKeys.size === 0) {
459
- for (const key of defaultKeys) {
460
- catalogKeys.add(key);
461
- }
462
- return {
463
- allowAny: true,
464
- allowedCatalog: params.catalog,
465
- allowedKeys: catalogKeys
466
- };
467
- }
468
451
  return {
469
452
  allowAny: false,
470
453
  allowedCatalog,
@@ -476,8 +459,7 @@ function getModelRefStatus(params) {
476
459
  cfg: params.cfg,
477
460
  catalog: params.catalog,
478
461
  defaultProvider: params.defaultProvider,
479
- defaultModel: params.defaultModel,
480
- additionalAllowedProviders: params.additionalAllowedProviders
462
+ defaultModel: params.defaultModel
481
463
  });
482
464
  const key = modelKey(params.ref.provider, params.ref.model);
483
465
  return {
@@ -509,17 +491,9 @@ function resolveAllowedModelRef(params) {
509
491
  catalog: params.catalog,
510
492
  ref: resolved.ref,
511
493
  defaultProvider: params.defaultProvider,
512
- defaultModel: params.defaultModel,
513
- additionalAllowedProviders: params.additionalAllowedProviders
494
+ defaultModel: params.defaultModel
514
495
  });
515
496
  if (!status.allowed) {
516
- const additionalAllowedProviders = new Set([...params.additionalAllowedProviders ?? []].map((provider) => normalizeProviderId(provider)));
517
- if (additionalAllowedProviders.has(normalizeProviderId(resolved.ref.provider)) && isStandardProviderModelRef(status.key)) {
518
- return {
519
- ref: resolved.ref,
520
- key: status.key
521
- };
522
- }
523
497
  return { error: `model not allowed: ${status.key}` };
524
498
  }
525
499
  return {
@@ -1,19 +1,19 @@
1
1
  import { createSubsystemLogger } from "../logging/subsystem.js";
2
- import { CLOUDFLARE_AI_GATEWAY_MODEL_CATALOG, buildCloudflareAiGatewayModelDefinition, resolveCloudflareAiGatewayBaseUrl } from "../providers/cloudflare-ai-gateway-shared.js";
3
- import { HUGGINGFACE_BASE_URL, HUGGINGFACE_MODEL_CATALOG, buildHuggingfaceModelDefinition } from "../providers/huggingface-models.js";
4
- import { SYNTHETIC_BASE_URL, SYNTHETIC_MODEL_CATALOG, buildSyntheticModelDefinition } from "../providers/synthetic-models.js";
5
- import { TOGETHER_BASE_URL, TOGETHER_MODEL_CATALOG, buildTogetherModelDefinition } from "../providers/together-models.js";
6
- import { VENICE_BASE_URL } from "../providers/venice-models.js";
7
- import { XIAOMI_BASE_URL as XIAOMI_BASE_URL$1, XIAOMI_DEFAULT_MODEL_ID as XIAOMI_DEFAULT_MODEL_ID$1, XIAOMI_MODEL_IDS, buildXiaomiModelDefinition } from "../providers/xiaomi-models.js";
8
2
  import { coerceSecretRef } from "../config/types.secrets.js";
9
3
  import { DEFAULT_COPILOT_API_BASE_URL, resolveCopilotApiToken } from "../providers/github-copilot-token.js";
4
+ import { XIAOMI_BASE_URL as XIAOMI_BASE_URL$1, XIAOMI_DEFAULT_MODEL_ID as XIAOMI_DEFAULT_MODEL_ID$1, XIAOMI_MODEL_IDS, buildXiaomiModelDefinition } from "../providers/xiaomi-models.js";
10
5
  import { normalizeOptionalSecretInput } from "../utils/normalize-secret-input.js";
11
6
  import { isPrivateNetworkBaseUrl } from "../utils/private-network-url.js";
12
7
  import { ensureAuthProfileStore } from "./auth-profiles/store.js";
13
8
  import { listProfilesForProvider } from "./auth-profiles/profiles.js";
14
9
  import "./auth-profiles.js";
15
10
  import { BYTEPLUS_BASE_URL, BYTEPLUS_CODING_BASE_URL, BYTEPLUS_CODING_MODEL_CATALOG, BYTEPLUS_MODEL_CATALOG, buildBytePlusModelDefinition } from "./byteplus-models.js";
11
+ import { CLOUDFLARE_AI_GATEWAY_MODEL_CATALOG, buildCloudflareAiGatewayModelDefinition, resolveCloudflareAiGatewayBaseUrl } from "../providers/cloudflare-ai-gateway-shared.js";
16
12
  import "./cloudflare-ai-gateway.js";
13
+ import { HUGGINGFACE_BASE_URL, HUGGINGFACE_MODEL_CATALOG, buildHuggingfaceModelDefinition } from "../providers/huggingface-models.js";
14
+ import { SYNTHETIC_BASE_URL, SYNTHETIC_MODEL_CATALOG, buildSyntheticModelDefinition } from "../providers/synthetic-models.js";
15
+ import { TOGETHER_BASE_URL, TOGETHER_MODEL_CATALOG, buildTogetherModelDefinition } from "../providers/together-models.js";
16
+ import { VENICE_BASE_URL } from "../providers/venice-models.js";
17
17
  import { DOUBAO_BASE_URL, DOUBAO_CODING_BASE_URL, DOUBAO_CODING_MODEL_CATALOG, DOUBAO_MODEL_CATALOG, buildDoubaoModelDefinition } from "./doubao-models.js";
18
18
  import { discoverHuggingfaceModels } from "./huggingface-models.js";
19
19
  import "./synthetic-models.js";
@@ -1,6 +1,6 @@
1
1
  import { resolveFasedAgentPackageRootSync } from "../infra/fased-root.js";
2
2
  import { resolvePluginInstallDir } from "../plugins/install.js";
3
- import fs from "node:fs";
3
+ import syncFs from "node:fs";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
6
  import { spawn } from "node:child_process";
@@ -60,17 +60,17 @@ function resolveOpenAICodexExecutable() {
60
60
  const explicitlyConfigured = process.env.FASED_CODEX_BIN?.trim();
61
61
  for (const candidate of codexExecutableCandidates()) {
62
62
  try {
63
- if (!fs.statSync(candidate).isFile()) {
63
+ if (!syncFs.statSync(candidate).isFile()) {
64
64
  continue;
65
65
  }
66
66
  if (explicitlyConfigured && candidate === explicitlyConfigured) {
67
67
  return candidate;
68
68
  }
69
- const resolved = fs.realpathSync(candidate);
69
+ const resolved = syncFs.realpathSync(candidate);
70
70
  let current = path.dirname(resolved);
71
71
  for (let depth = 0; depth < 6; depth += 1) {
72
72
  try {
73
- const parsed = JSON.parse(fs.readFileSync(path.join(current, "package.json"), "utf8"));
73
+ const parsed = JSON.parse(syncFs.readFileSync(path.join(current, "package.json"), "utf8"));
74
74
  if (parsed.name === "@openai/codex") {
75
75
  if (parsed.version === OPENAI_CODEX_APP_SERVER_VERSION) {
76
76
  return candidate;
@@ -90,7 +90,7 @@ function resolveOpenAICodexExecutable() {
90
90
  }
91
91
  function managedCodexHome() {
92
92
  const directory = path.join(stateDir(), "runtime", "openai-codex");
93
- fs.mkdirSync(directory, {
93
+ syncFs.mkdirSync(directory, {
94
94
  recursive: true,
95
95
  mode: 448
96
96
  });
@@ -19,6 +19,7 @@ import { enqueueCommandInLane } from "../../process/command-queue.js";
19
19
  import { resolveSignalReactionLevel } from "../../signal/reaction-level.js";
20
20
  import { resolveTelegramInlineButtonsScope } from "../../telegram/inline-buttons.js";
21
21
  import { resolveTelegramReactionLevel } from "../../telegram/reaction-level.js";
22
+ import { marketplaceSkillIdsFromEntries, marketplaceSkillIdsFromSnapshot } from "../skills/trust.js";
22
23
  import { formatUserTime, resolveUserTimeFormat, resolveUserTimezone } from "../date-time.js";
23
24
  import { buildModelAliasLines } from "../model-alias-lines.js";
24
25
  import { resolveModelForExecution } from "./model.js";
@@ -29,13 +30,13 @@ import { listChannelSupportedActions, resolveChannelMessageToolHints } from "../
29
30
  import { resolveFasedAgentDocsPath } from "../docs-path.js";
30
31
  import { createPreparedEmbeddedPiSettingsManager } from "../pi-project-settings.js";
31
32
  import { detectRuntimeShell } from "../shell-utils.js";
33
+ import { applySkillEnvOverrides, applySkillEnvOverridesFromSnapshot } from "../skills/env-overrides.js";
32
34
  import { createFasedAgentCodingTools } from "../pi-tools.js";
33
35
  import { registerProviderStreamForModel } from "../provider-stream.js";
34
36
  import { repairSessionFileIfNeeded } from "../session-file-repair.js";
35
37
  import { log } from "./logger.js";
36
38
  import { sanitizeToolUseResultPairing } from "../session-transcript-repair.js";
37
39
  import { guardSessionManager } from "../session-tool-result-guard-wrapper.js";
38
- import { applySkillEnvOverrides, applySkillEnvOverridesFromSnapshot } from "../skills/env-overrides.js";
39
40
  import { loadWorkspaceSkillEntries, resolveSkillsPromptForRun } from "../skills/workspace.js";
40
41
  import "../skills.js";
41
42
  import { resolveTranscriptPolicy } from "../transcript-policy.js";
@@ -205,10 +206,14 @@ async function compactEmbeddedPiSessionDirect(params) {
205
206
  }
206
207
  await fs.mkdir(resolvedWorkspace, { recursive: true });
207
208
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
209
+ const sourceSkillEntries = params.skillsSnapshot ? [] : loadWorkspaceSkillEntries(resolvedWorkspace, { config: params.config });
210
+ const marketplaceSkillIds = params.skillsSnapshot ? marketplaceSkillIdsFromSnapshot(params.skillsSnapshot) : marketplaceSkillIdsFromEntries(sourceSkillEntries);
211
+ const hasUntrustedSkillContent = marketplaceSkillIds.length > 0;
208
212
  const sandbox = await resolveSandboxContext({
209
213
  config: params.config,
210
214
  sessionKey: sandboxSessionKey,
211
- workspaceDir: resolvedWorkspace
215
+ workspaceDir: resolvedWorkspace,
216
+ forceUntrustedIsolation: hasUntrustedSkillContent
212
217
  });
213
218
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
214
219
  await fs.mkdir(effectiveWorkspace, { recursive: true });
@@ -224,10 +229,12 @@ async function compactEmbeddedPiSessionDirect(params) {
224
229
  const skillEntries = shouldLoadSkillEntries ? loadWorkspaceSkillEntries(effectiveWorkspace) : [];
225
230
  restoreSkillEnv = params.skillsSnapshot ? applySkillEnvOverridesFromSnapshot({
226
231
  snapshot: params.skillsSnapshot,
227
- config: params.config
232
+ config: params.config,
233
+ excludeMarketplace: true
228
234
  }) : applySkillEnvOverrides({
229
235
  skills: skillEntries ?? [],
230
- config: params.config
236
+ config: params.config,
237
+ excludeMarketplace: true
231
238
  });
232
239
  const skillsPrompt = resolveSkillsPromptForRun({
233
240
  skillsSnapshot: params.skillsSnapshot,
@@ -265,7 +272,8 @@ async function compactEmbeddedPiSessionDirect(params) {
265
272
  modelProvider: model.provider,
266
273
  modelId,
267
274
  modelContextWindowTokens: model.contextWindow,
268
- modelAuthMode: resolveModelAuthMode(model.provider, params.config)
275
+ modelAuthMode: resolveModelAuthMode(model.provider, params.config),
276
+ untrustedSkillContent: hasUntrustedSkillContent
269
277
  });
270
278
  const tools = sanitizeToolsForGoogle({
271
279
  tools: toolsRaw,
@@ -433,7 +441,7 @@ async function compactEmbeddedPiSessionDirect(params) {
433
441
  });
434
442
  await resourceLoader.reload();
435
443
  }
436
- const { builtInTools, customTools } = splitSdkTools({
444
+ const { activeToolNames, customTools } = splitSdkTools({
437
445
  tools,
438
446
  sandboxEnabled: !!sandbox?.enabled
439
447
  });
@@ -452,7 +460,7 @@ async function compactEmbeddedPiSessionDirect(params) {
452
460
  modelRegistry,
453
461
  model,
454
462
  thinkingLevel: mapThinkingLevel(params.thinkLevel),
455
- tools: builtInTools,
463
+ tools: activeToolNames,
456
464
  customTools,
457
465
  sessionManager,
458
466
  settingsManager,
@@ -1,9 +1,9 @@
1
- import { isOpenAISignInRuntimeModelSupported } from "../../providers/registry.js";
2
1
  import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js";
3
2
  import { isPrivateNetworkBaseUrl } from "../../utils/private-network-url.js";
4
3
  import { resolveFasedAgentAgentDir } from "../agent-paths.js";
5
4
  import { ensureAuthProfileStore } from "../auth-profiles/store.js";
6
5
  import "../auth-profiles.js";
6
+ import { isOpenAISignInRuntimeModelSupported } from "../../providers/registry.js";
7
7
  import { normalizeProviderId } from "../model-selection.js";
8
8
  import { discoverAuthStorage, discoverModels } from "../pi-model-discovery.js";
9
9
  import { resolveAuthenticatedModelCatalog } from "../authenticated-model-catalog.js";
@@ -20,6 +20,7 @@ import { resolveTelegramInlineButtonsScope } from "../../../telegram/inline-butt
20
20
  import { resolveTelegramReactionLevel } from "../../../telegram/reaction-level.js";
21
21
  import { MAX_IMAGE_BYTES } from "../../../media/constants.js";
22
22
  import { resolveImageSanitizationLimits } from "../../image-sanitization.js";
23
+ import { marketplaceSkillIdsFromEntries, marketplaceSkillIdsFromSnapshot } from "../../skills/trust.js";
23
24
  import { buildModelAliasLines } from "../../model-alias-lines.js";
24
25
  import "../model.js";
25
26
  import { buildTtsSystemPromptHint } from "../../../tts/tts.js";
@@ -29,6 +30,7 @@ import { listChannelSupportedActions, resolveChannelMessageToolHints } from "../
29
30
  import { resolveFasedAgentDocsPath } from "../../docs-path.js";
30
31
  import { createPreparedEmbeddedPiSettingsManager } from "../../pi-project-settings.js";
31
32
  import { detectRuntimeShell } from "../../shell-utils.js";
33
+ import { applySkillEnvOverrides, applySkillEnvOverridesFromSnapshot } from "../../skills/env-overrides.js";
32
34
  import { isTimeoutError } from "../../failover-error.js";
33
35
  import { resolveSandboxRuntimeStatus } from "../../sandbox/runtime-status.js";
34
36
  import { resolveEffectiveToolFsWorkspaceOnly } from "../../tool-fs-policy.js";
@@ -39,7 +41,6 @@ import { log } from "../logger.js";
39
41
  import { sanitizeToolCallIdsForCloudCodeAssist } from "../../tool-call-id.js";
40
42
  import { sanitizeToolUseResultPairing } from "../../session-transcript-repair.js";
41
43
  import { guardSessionManager } from "../../session-tool-result-guard-wrapper.js";
42
- import { applySkillEnvOverrides, applySkillEnvOverridesFromSnapshot } from "../../skills/env-overrides.js";
43
44
  import { loadWorkspaceSkillEntries, resolveSkillsPromptForRun } from "../../skills/workspace.js";
44
45
  import "../../skills.js";
45
46
  import { resolveTranscriptPolicy } from "../../transcript-policy.js";
@@ -245,10 +246,17 @@ async function runEmbeddedAttempt(params) {
245
246
  log.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
246
247
  await fs.mkdir(resolvedWorkspace, { recursive: true });
247
248
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
249
+ const sourceSkillEntries = params.skillsSnapshot ? [] : loadWorkspaceSkillEntries(resolvedWorkspace, {
250
+ config: params.config,
251
+ agentId: params.agentId
252
+ });
253
+ const marketplaceSkillIds = params.skillsSnapshot ? marketplaceSkillIdsFromSnapshot(params.skillsSnapshot) : marketplaceSkillIdsFromEntries(sourceSkillEntries);
254
+ const hasUntrustedSkillContent = marketplaceSkillIds.length > 0;
248
255
  const sandbox = await resolveSandboxContext({
249
256
  config: params.config,
250
257
  sessionKey: sandboxSessionKey,
251
- workspaceDir: resolvedWorkspace
258
+ workspaceDir: resolvedWorkspace,
259
+ forceUntrustedIsolation: hasUntrustedSkillContent
252
260
  });
253
261
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
254
262
  await fs.mkdir(effectiveWorkspace, { recursive: true });
@@ -260,10 +268,12 @@ async function runEmbeddedAttempt(params) {
260
268
  const skillEntries = shouldLoadSkillEntries ? loadWorkspaceSkillEntries(effectiveWorkspace) : [];
261
269
  restoreSkillEnv = params.skillsSnapshot ? applySkillEnvOverridesFromSnapshot({
262
270
  snapshot: params.skillsSnapshot,
263
- config: params.config
271
+ config: params.config,
272
+ excludeMarketplace: true
264
273
  }) : applySkillEnvOverrides({
265
274
  skills: skillEntries ?? [],
266
- config: params.config
275
+ config: params.config,
276
+ excludeMarketplace: true
267
277
  });
268
278
  const skillsPrompt = resolveSkillsPromptForRun({
269
279
  skillsSnapshot: params.skillsSnapshot,
@@ -333,9 +343,10 @@ async function runEmbeddedAttempt(params) {
333
343
  modelHasVision,
334
344
  requireExplicitMessageTarget: params.requireExplicitMessageTarget ?? isSubagentSessionKey(params.sessionKey),
335
345
  disableMessageTool: params.disableMessageTool,
336
- disabledToolNames: params.disabledToolNames
346
+ disabledToolNames: params.disabledToolNames,
347
+ untrustedSkillContent: hasUntrustedSkillContent
337
348
  });
338
- if (!toolsDisabled) {
349
+ if (!toolsDisabled && !hasUntrustedSkillContent) {
339
350
  bundleMcpRuntime = await createBundleMcpToolRuntime({
340
351
  workspaceDir: effectiveWorkspace,
341
352
  cfg: params.config,
@@ -561,10 +572,6 @@ async function runEmbeddedAttempt(params) {
561
572
  await resourceLoader.reload();
562
573
  }
563
574
  const hookRunner = getGlobalHookRunner();
564
- const { builtInTools, customTools } = splitSdkTools({
565
- tools,
566
- sandboxEnabled: !!sandbox?.enabled
567
- });
568
575
  let clientToolCallDetected = null;
569
576
  const clientToolLoopDetection = resolveToolLoopDetectionConfig({
570
577
  cfg: params.config,
@@ -580,7 +587,11 @@ async function runEmbeddedAttempt(params) {
580
587
  sessionKey: params.sessionKey,
581
588
  loopDetection: clientToolLoopDetection
582
589
  }) : [];
583
- const allCustomTools = [...customTools, ...clientToolDefs];
590
+ const { activeToolNames, customTools } = splitSdkTools({
591
+ tools,
592
+ clientTools: clientToolDefs,
593
+ sandboxEnabled: !!sandbox?.enabled
594
+ });
584
595
  if (params.model.api === "ollama") {
585
596
  registerProviderStreamForModel({
586
597
  model: params.model,
@@ -596,8 +607,8 @@ async function runEmbeddedAttempt(params) {
596
607
  modelRegistry: params.modelRegistry,
597
608
  model: params.model,
598
609
  thinkingLevel: mapThinkingLevel(params.thinkLevel),
599
- tools: builtInTools,
600
- customTools: allCustomTools,
610
+ tools: activeToolNames,
611
+ customTools,
601
612
  sessionManager,
602
613
  settingsManager,
603
614
  resourceLoader
@@ -460,7 +460,9 @@ async function runEmbeddedPiAgent(params) {
460
460
  skillsSnapshot: params.skillsSnapshot,
461
461
  prompt,
462
462
  images: params.images,
463
+ clientTools: params.clientTools,
463
464
  disableTools: params.disableTools,
465
+ disabledToolNames: params.disabledToolNames,
464
466
  provider,
465
467
  modelId,
466
468
  model,
@@ -1,11 +1,49 @@
1
+ import { isKnownCoreToolId } from "../tool-catalog.js";
2
+ import { normalizeToolName } from "../tool-policy-shared.js";
3
+ import "../tool-policy.js";
1
4
  import { toToolDefinitions } from "../pi-tool-definition-adapter.js";
2
5
 
3
6
  //#region src/agents/pi-embedded-runner/tool-split.ts
7
+ const SDK_BUILT_IN_TOOL_NAMES = new Set([
8
+ "read",
9
+ "bash",
10
+ "edit",
11
+ "write",
12
+ "grep",
13
+ "find",
14
+ "ls"
15
+ ].map(normalizeToolName));
16
+ function validateClientToolDefinitions(params) {
17
+ const fasedToolNames = new Set(params.fasedTools.map((tool) => normalizeToolName(tool.name)));
18
+ const clientToolNames = new Set();
19
+ for (const tool of params.clientTools) {
20
+ const name = tool.name;
21
+ const trimmedName = name.trim();
22
+ if (!trimmedName || trimmedName !== name) {
23
+ throw new Error("Client tool names must be non-empty and must not contain outer whitespace");
24
+ }
25
+ const normalizedName = normalizeToolName(name);
26
+ if (SDK_BUILT_IN_TOOL_NAMES.has(normalizedName) || isKnownCoreToolId(normalizedName) || fasedToolNames.has(normalizedName)) {
27
+ throw new Error(`Client tool name "${name}" is reserved by Fased`);
28
+ }
29
+ if (clientToolNames.has(normalizedName)) {
30
+ throw new Error(`Duplicate client tool name: "${name}"`);
31
+ }
32
+ clientToolNames.add(normalizedName);
33
+ }
34
+ }
4
35
  function splitSdkTools(options) {
5
36
  const { tools } = options;
37
+ const fasedTools = toToolDefinitions(tools);
38
+ const clientTools = options.clientTools ?? [];
39
+ validateClientToolDefinitions({
40
+ fasedTools,
41
+ clientTools
42
+ });
43
+ const customTools = [...fasedTools, ...clientTools];
6
44
  return {
7
- builtInTools: [],
8
- customTools: toToolDefinitions(tools)
45
+ activeToolNames: customTools.map((tool) => tool.name),
46
+ customTools
9
47
  };
10
48
  }
11
49
 
@@ -1,6 +1,6 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
2
  import { isTruthyEnvValue } from "../infra/env.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/agents/pi-embedded-subscribe.raw-stream.ts
@@ -14,11 +14,11 @@ function appendRawStream(payload) {
14
14
  if (!rawStreamReady) {
15
15
  rawStreamReady = true;
16
16
  try {
17
- fs.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
17
+ syncFs.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
18
18
  } catch {}
19
19
  }
20
20
  try {
21
- void fs.promises.appendFile(RAW_STREAM_PATH, `${JSON.stringify(payload)}\n`);
21
+ void syncFs.promises.appendFile(RAW_STREAM_PATH, `${JSON.stringify(payload)}\n`);
22
22
  } catch {}
23
23
  }
24
24
 
@@ -3,7 +3,7 @@ import { getCompactionSafeguardRuntime } from "./compaction-safeguard-runtime.js
3
3
  import { extractSections } from "../../auto-reply/reply/post-compaction-context.js";
4
4
  import { BASE_CHUNK_RATIO, MIN_CHUNK_RATIO, SAFETY_MARGIN, SUMMARIZATION_OVERHEAD_TOKENS, computeAdaptiveChunkRatio, estimateMessagesTokens, isOversizedForSummary, pruneHistoryForContextShare, resolveContextWindowTokens, summarizeInStages } from "../compaction.js";
5
5
  import { collectTextContentBlocks } from "../content-blocks.js";
6
- import fs from "node:fs";
6
+ import syncFs from "node:fs";
7
7
  import path from "node:path";
8
8
 
9
9
  //#region src/agents/pi-extensions/compaction-safeguard.ts
@@ -122,10 +122,10 @@ async function readWorkspaceContextForSummary() {
122
122
  const workspaceDir = process.cwd();
123
123
  const agentsPath = path.join(workspaceDir, "AGENTS.md");
124
124
  try {
125
- if (!fs.existsSync(agentsPath)) {
125
+ if (!syncFs.existsSync(agentsPath)) {
126
126
  return "";
127
127
  }
128
- const content = await fs.promises.readFile(agentsPath, "utf-8");
128
+ const content = await syncFs.promises.readFile(agentsPath, "utf-8");
129
129
  const sections = extractSections(content, ["Session Startup", "Red Lines"]);
130
130
  if (sections.length === 0) {
131
131
  return "";
@@ -1,7 +1,7 @@
1
1
  import { ensureAuthProfileStore } from "./auth-profiles/store.js";
2
2
  import "./auth-profiles.js";
3
3
  import { resolvePiCredentialMapFromStore } from "./pi-auth-credentials.js";
4
- import fs from "node:fs";
4
+ import syncFs from "node:fs";
5
5
  import path from "node:path";
6
6
  import * as PiCodingAgent from "@mariozechner/pi-coding-agent";
7
7
 
@@ -25,12 +25,12 @@ function scrubLegacyStaticAuthJsonEntries(pathname) {
25
25
  if (process.env.FASED_AUTH_STORE_READONLY === "1") {
26
26
  return;
27
27
  }
28
- if (!fs.existsSync(pathname)) {
28
+ if (!syncFs.existsSync(pathname)) {
29
29
  return;
30
30
  }
31
31
  let parsed;
32
32
  try {
33
- parsed = JSON.parse(fs.readFileSync(pathname, "utf8"));
33
+ parsed = JSON.parse(syncFs.readFileSync(pathname, "utf8"));
34
34
  } catch {
35
35
  return;
36
36
  }
@@ -52,11 +52,11 @@ function scrubLegacyStaticAuthJsonEntries(pathname) {
52
52
  return;
53
53
  }
54
54
  if (Object.keys(parsed).length === 0) {
55
- fs.rmSync(pathname, { force: true });
55
+ syncFs.rmSync(pathname, { force: true });
56
56
  return;
57
57
  }
58
- fs.writeFileSync(pathname, `${JSON.stringify(parsed, null, 2)}\n`, "utf8");
59
- fs.chmodSync(pathname, 384);
58
+ syncFs.writeFileSync(pathname, `${JSON.stringify(parsed, null, 2)}\n`, "utf8");
59
+ syncFs.chmodSync(pathname, 384);
60
60
  }
61
61
  function createAuthStorage(AuthStorageLike, path, creds) {
62
62
  const withInMemory = AuthStorageLike;