@fased/fased 0.1.49 → 0.1.51

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 (337) hide show
  1. package/dist/acp/client.js +2 -2
  2. package/dist/acp/secret-file.js +2 -2
  3. package/dist/agents/agent-scope.js +2 -2
  4. package/dist/agents/apply-patch.js +8 -8
  5. package/dist/agents/auth-profiles/paths.js +2 -2
  6. package/dist/agents/auth-profiles/store.js +2 -2
  7. package/dist/agents/bash-tools.shared.js +2 -2
  8. package/dist/agents/cli-credentials.js +4 -4
  9. package/dist/agents/current-model-catalog.js +45 -0
  10. package/dist/agents/docs-path.js +3 -3
  11. package/dist/agents/embedded-pi-mcp.js +4 -4
  12. package/dist/agents/identity-avatar.js +3 -3
  13. package/dist/agents/identity-file.js +2 -2
  14. package/dist/agents/model-catalog-source.js +28 -3
  15. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  16. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  17. package/dist/agents/pi-model-discovery.js +6 -6
  18. package/dist/agents/pi-project-settings.js +3 -3
  19. package/dist/agents/provider-id.js +1 -1
  20. package/dist/agents/sandbox/fs-bridge.js +2 -2
  21. package/dist/agents/session-dirs.js +4 -4
  22. package/dist/agents/session-write-lock.js +13 -13
  23. package/dist/agents/shell-utils.js +5 -5
  24. package/dist/agents/skills/bundled-dir.js +4 -4
  25. package/dist/agents/skills/local-loader.js +6 -6
  26. package/dist/agents/skills/plugin-skills.js +2 -2
  27. package/dist/agents/skills/workspace.js +13 -13
  28. package/dist/agents/skills-install-download.js +7 -7
  29. package/dist/agents/skills-install-plan.js +2 -2
  30. package/dist/agents/skills-install.js +2 -2
  31. package/dist/agents/skills-status.js +2 -2
  32. package/dist/agents/subagent-depth.js +2 -2
  33. package/dist/agents/system-prompt-params.js +2 -2
  34. package/dist/agents/workspace.js +22 -22
  35. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  36. package/dist/auto-reply/reply/agent-runner.js +2 -2
  37. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  38. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  39. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  40. package/dist/auto-reply/reply/session.js +3 -3
  41. package/dist/auto-reply/skill-commands.js +3 -3
  42. package/dist/auto-reply/status.js +6 -6
  43. package/dist/brand.js +1 -1
  44. package/dist/browser/chrome.executables.js +3 -3
  45. package/dist/browser/chrome.js +3 -3
  46. package/dist/browser/chrome.profile-decoration.js +6 -6
  47. package/dist/browser/profiles-service.js +2 -2
  48. package/dist/browser/server-context.js +2 -2
  49. package/dist/browser/trash.js +4 -4
  50. package/dist/build-info.json +3 -3
  51. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  52. package/dist/canvas-host/server.js +4 -4
  53. package/dist/capabilities/catalog.js +3 -3
  54. package/dist/channels/plugins/catalog.js +3 -3
  55. package/dist/cli/browser-cli-extension.js +6 -6
  56. package/dist/cli/command-format.js +2 -2
  57. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  58. package/dist/cli/dns-cli.js +9 -9
  59. package/dist/cli/gateway-cli/dev.js +5 -5
  60. package/dist/cli/gateway-cli/run.js +2 -2
  61. package/dist/cli/hooks-cli.js +5 -5
  62. package/dist/cli/lightweight/gateway-runtime-probe.js +50 -0
  63. package/dist/cli/memory-cli.js +7 -7
  64. package/dist/cli/nodes-media-utils.js +2 -2
  65. package/dist/cli/plugins-cli.js +2 -2
  66. package/dist/cli/secrets-cli.js +3 -3
  67. package/dist/cli/update-cli/update-command.js +120 -0
  68. package/dist/cli/windows-argv.js +2 -2
  69. package/dist/commands/dashboard-link.js +3 -3
  70. package/dist/commands/doctor-install.js +5 -5
  71. package/dist/commands/doctor-memory-search.js +2 -2
  72. package/dist/commands/doctor-platform-notes.js +2 -2
  73. package/dist/commands/doctor-sandbox.js +2 -2
  74. package/dist/commands/doctor-state-integrity.js +23 -23
  75. package/dist/commands/doctor-workspace.js +3 -3
  76. package/dist/commands/doctor.js +3 -3
  77. package/dist/commands/managed-up.js +2 -2
  78. package/dist/commands/onboard-auth.credentials.js +3 -3
  79. package/dist/commands/onboarding/plugin-install.js +2 -2
  80. package/dist/commands/sessions-cleanup.js +2 -2
  81. package/dist/commands/signal-install.js +6 -6
  82. package/dist/commands/status-all/channels.js +2 -2
  83. package/dist/commands/wallet.js +47 -47
  84. package/dist/config/cache-utils.js +2 -2
  85. package/dist/config/includes.js +5 -5
  86. package/dist/config/io.js +2 -2
  87. package/dist/config/paths.js +3 -3
  88. package/dist/config/sat-runtime-ids.js +3 -3
  89. package/dist/config/sessions/disk-budget.js +6 -6
  90. package/dist/config/sessions/paths.js +2 -2
  91. package/dist/config/sessions/store.js +17 -17
  92. package/dist/config/sessions/transcript.js +4 -4
  93. package/dist/config/talk.js +2 -2
  94. package/dist/control-ui/assets/{app-6iCry787.js → app-wJm5kuje.js} +4 -4
  95. package/dist/control-ui/assets/{chat-model-ref-C6CFR-GR.js → chat-model-ref-Cs2TTOtF.js} +2 -2
  96. package/dist/control-ui/assets/{index-CNFgocD9.js → index-vTDTf5Zv.js} +3 -3
  97. package/dist/control-ui/assets/{providers-WTJ1kMKy.js → providers-C0DEXi8e.js} +2 -2
  98. package/dist/control-ui/index.html +1 -1
  99. package/dist/cron/service/store.js +2 -2
  100. package/dist/cron/store.js +6 -6
  101. package/dist/daemon/systemd-system.js +5 -5
  102. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  103. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  104. package/dist/gateway/control-ui-boot-check.js +6 -6
  105. package/dist/gateway/control-ui-login.js +7 -7
  106. package/dist/gateway/control-ui.js +9 -9
  107. package/dist/gateway/hooks-mapping.js +4 -4
  108. package/dist/gateway/probe-payload.js +14 -0
  109. package/dist/gateway/probe.js +8 -4
  110. package/dist/gateway/server-discovery.js +2 -2
  111. package/dist/gateway/server-http-lazy.js +2 -4
  112. package/dist/gateway/server-http.js +6 -8
  113. package/dist/gateway/server-methods/chat.js +3 -3
  114. package/dist/gateway/server-methods/models.js +3 -2
  115. package/dist/gateway/server-methods/sessions.js +6 -6
  116. package/dist/gateway/server-methods/usage.js +2 -2
  117. package/dist/gateway/server.impl.js +3 -3
  118. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  119. package/dist/gateway/session-utils.fs.js +24 -24
  120. package/dist/gateway/session-utils.js +6 -6
  121. package/dist/hooks/bundled-dir.js +4 -4
  122. package/dist/hooks/gmail-setup-utils.js +6 -6
  123. package/dist/hooks/import-url.js +2 -2
  124. package/dist/hooks/loader.js +4 -4
  125. package/dist/hooks/workspace.js +7 -7
  126. package/dist/infra/archive.js +17 -17
  127. package/dist/infra/boundary-file-read.js +2 -2
  128. package/dist/infra/boundary-path.js +15 -15
  129. package/dist/infra/brew.js +2 -2
  130. package/dist/infra/control-ui-assets.js +14 -14
  131. package/dist/infra/device-auth-store.js +8 -8
  132. package/dist/infra/device-identity.js +8 -8
  133. package/dist/infra/dotenv.js +2 -2
  134. package/dist/infra/exec-approvals.js +8 -8
  135. package/dist/infra/exec-command-resolution.js +4 -4
  136. package/dist/infra/exec-safe-bin-trust.js +2 -2
  137. package/dist/infra/fased-root.js +5 -5
  138. package/dist/infra/fs-safe.js +14 -14
  139. package/dist/infra/gateway-lock.js +11 -11
  140. package/dist/infra/git-commit.js +5 -5
  141. package/dist/infra/git-root.js +4 -4
  142. package/dist/infra/hosted-runtime-artifact.js +3 -3
  143. package/dist/infra/is-main.js +2 -2
  144. package/dist/infra/json-file.js +7 -7
  145. package/dist/infra/outbound/delivery-queue.js +16 -16
  146. package/dist/infra/path-env.js +3 -3
  147. package/dist/infra/ports-lsof.js +4 -4
  148. package/dist/infra/provider-usage.auth.js +3 -3
  149. package/dist/infra/safe-open-sync.js +2 -2
  150. package/dist/infra/session-cost-usage.js +9 -9
  151. package/dist/infra/shell-env.js +2 -2
  152. package/dist/infra/state-migrations.fs.js +6 -6
  153. package/dist/infra/state-migrations.js +23 -23
  154. package/dist/infra/tmp-fased-dir.js +6 -6
  155. package/dist/infra/widearea-dns.js +3 -3
  156. package/dist/infra/wsl.js +2 -2
  157. package/dist/light-update-precheck.js +1 -1
  158. package/dist/light-update-status.js +1 -1
  159. package/dist/line/accounts.js +2 -2
  160. package/dist/line/download.js +2 -2
  161. package/dist/logging/config.js +3 -3
  162. package/dist/logging/logger.js +7 -7
  163. package/dist/managed/federation.js +3 -3
  164. package/dist/managed/tunnel.js +3 -3
  165. package/dist/media/store.js +13 -13
  166. package/dist/media-understanding/runner.js +3 -3
  167. package/dist/memory/embeddings.js +2 -2
  168. package/dist/memory/internal.js +10 -10
  169. package/dist/memory/manager-sync-ops.js +7 -7
  170. package/dist/memory/repair-executor.js +17 -17
  171. package/dist/node-host/invoke-system-run-plan.js +8 -8
  172. package/dist/node-host/invoke.js +2 -2
  173. package/dist/node-host/runner.js +3 -3
  174. package/dist/pairing/pairing-store.js +3 -3
  175. package/dist/plugin-sdk/{accounts-B5fY9hZy.js → accounts-BfdIB9Ud.js} +1 -1
  176. package/dist/plugin-sdk/{actions-D-9SsSEy.js → actions-DHN_x97P.js} +2 -2
  177. package/dist/plugin-sdk/{active-listener-BH7rDR47.js → active-listener-CIP_Ht8d.js} +1 -1
  178. package/dist/plugin-sdk/{audio-preflight-4faayz5S.js → audio-preflight-CKGhXtyV.js} +26 -26
  179. package/dist/plugin-sdk/{audit-BQfsboqd.js → audit-Cmg38KPG.js} +1 -1
  180. package/dist/plugin-sdk/{channel-access-CDZ-cJPq.js → channel-access-JHDguu4T.js} +1 -1
  181. package/dist/plugin-sdk/{channel-access-configure-DlpuhlH6.js → channel-access-configure-B8mwKp-Z.js} +1 -1
  182. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  183. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  184. package/dist/plugin-sdk/{chunk-items-Cyc4Kl6A.js → chunk-items-iKdlZyWZ.js} +1 -1
  185. package/dist/plugin-sdk/{chunk-CZuCyS7k.js → chunk-oJRyTNTL.js} +1 -1
  186. package/dist/plugin-sdk/command-status.js +26 -26
  187. package/dist/plugin-sdk/{commands-registry-COIbIjGO.js → commands-registry-Cjo7OjIf.js} +2 -2
  188. package/dist/plugin-sdk/{common-LMHJe8KW.js → common-Dx4sUa9f.js} +1 -1
  189. package/dist/plugin-sdk/{config-ZMbTT0kM.js → config-DdS0zHiU.js} +79 -3
  190. package/dist/plugin-sdk/{config-schema-Cku0a8Tm.js → config-schema-BJQEjMPz.js} +2001 -449
  191. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  192. package/dist/plugin-sdk/discord.d.ts +4 -4
  193. package/dist/plugin-sdk/discord.js +19 -19
  194. package/dist/plugin-sdk/{handle-action-C8ZZfORB.js → handle-action-wR0x9b0c.js} +13 -13
  195. package/dist/plugin-sdk/{helpers-vfzH9tBn.js → helpers-DkauqZNP.js} +1 -1
  196. package/dist/plugin-sdk/{image-ops-BnOmQA5d.js → image-ops-DmSjpAeh.js} +1 -1
  197. package/dist/plugin-sdk/index.d.ts +18 -18
  198. package/dist/plugin-sdk/index.js +28 -28
  199. package/dist/plugin-sdk/json-store.js +6 -6
  200. package/dist/plugin-sdk/{login-C73Wpiw8.js → login-DB9LIbi8.js} +3 -3
  201. package/dist/plugin-sdk/{login-qr-CRKHA7i8.js → login-qr-CDhMa-c7.js} +3 -3
  202. package/dist/plugin-sdk/{manager-CHYhpKHn.js → manager-DGZsMQWR.js} +2 -2
  203. package/dist/plugin-sdk/{markdown-tables-B84dPWNG.js → markdown-tables-BX7JXDUV.js} +1 -1
  204. package/dist/plugin-sdk/{media-4daDcNER.js → media-DyzsScOp.js} +2 -2
  205. package/dist/plugin-sdk/{monitor-DJhU-J5u.js → monitor-B91PZ2mD.js} +31 -31
  206. package/dist/plugin-sdk/{monitor-CChc6bQV.js → monitor-BH9rTJFq.js} +30 -30
  207. package/dist/plugin-sdk/{openresponses-http-Dvyczr35.js → openresponses-http-CmBLZ9bH.js} +26 -26
  208. package/dist/plugin-sdk/{optional-runtime-dependency-BFpqaCzp.js → optional-runtime-dependency-DaMkPVe_.js} +1 -1
  209. package/dist/plugin-sdk/{outbound-C1xBxfNb.js → outbound-X-m2mBZn.js} +6 -6
  210. package/dist/plugin-sdk/{outbound-attachment-DvcxPP7b.js → outbound-attachment-M0NCUSG-.js} +2 -2
  211. package/dist/plugin-sdk/{pairing-message-DWXHX-jt.d.ts → pairing-message-BaQiXKLE.d.ts} +1 -1
  212. package/dist/plugin-sdk/{pairing-message-DpYT614h.js → pairing-message-hnmpJlW2.js} +1 -1
  213. package/dist/plugin-sdk/{pairing-store-CprpGco9.js → pairing-store-DyghUm9G.js} +2 -2
  214. package/dist/plugin-sdk/{pi-model-discovery-BQ6fFRBA.js → pi-model-discovery-ReorOh7W.js} +1 -1
  215. package/dist/plugin-sdk/{pi-model-discovery-runtime-BF_89lVj.js → pi-model-discovery-runtime-C-CHZo03.js} +2 -2
  216. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  217. package/dist/plugin-sdk/{pw-ai-xgpIbHOr.js → pw-ai-D_gli3_r.js} +3 -3
  218. package/dist/plugin-sdk/{replies-AzJ6U6Ut.js → replies-Djyehmcu.js} +2 -2
  219. package/dist/plugin-sdk/{resolve-outbound-target-COo_TR7B.js → resolve-outbound-target-Chznq8rS.js} +1 -1
  220. package/dist/plugin-sdk/{resolve-route-CZFzHOIe.js → resolve-route-Ce08Fx-G.js} +1 -1
  221. package/dist/plugin-sdk/{retry-policy-BSdqqXsI.js → retry-policy-eS25atAo.js} +1 -1
  222. package/dist/plugin-sdk/{runtime-CeoGffDi.js → runtime-Cv3gX3Wc.js} +3 -3
  223. package/dist/plugin-sdk/{runtime-dependency-Cvbs0GXf.js → runtime-dependency-p_iKbESf.js} +2 -2
  224. package/dist/plugin-sdk/sat-runtime.d.ts +2 -2
  225. package/dist/plugin-sdk/sat-runtime.js +5 -5
  226. package/dist/plugin-sdk/{send-B_-UtG9F.js → send-B3RAELvw.js} +6 -6
  227. package/dist/plugin-sdk/{send-C0Q1u7N1.js → send-BuPGxx3-.js} +8 -8
  228. package/dist/plugin-sdk/{send-CGE7OgsA.js → send-C-jaxZJG.js} +5 -5
  229. package/dist/plugin-sdk/{send-DCxAv7bV.js → send-CSob7dn9.js} +6 -6
  230. package/dist/plugin-sdk/{send-DVpCBUuL.js → send-CsLJsIvv.js} +7 -7
  231. package/dist/plugin-sdk/{session-ETYBbhLn.js → session-DKJGakm1.js} +2 -2
  232. package/dist/plugin-sdk/{skill-commands-BQL6TBIv.js → skill-commands-BqpZG5nW.js} +2 -2
  233. package/dist/plugin-sdk/{slack-Bs_4uivd.js → slack-CQqN9uBH.js} +38 -38
  234. package/dist/plugin-sdk/{slack-actions-CBPZkfTS.js → slack-actions-DlbVH5SS.js} +11 -11
  235. package/dist/plugin-sdk/slack.d.ts +4 -4
  236. package/dist/plugin-sdk/slack.js +9 -9
  237. package/dist/plugin-sdk/{sticker-cache-BBZMp-oQ.js → sticker-cache-CDyt2ZMh.js} +3 -3
  238. package/dist/plugin-sdk/{tables-B-G7Bb0l.js → tables-Cij4iAXw.js} +1 -1
  239. package/dist/plugin-sdk/{targets-D8UaoWHd.js → targets-VrYeAmeT.js} +1 -1
  240. package/dist/plugin-sdk/{telegram-actions-BARLx9zc.js → telegram-actions-ZwUBOkwa.js} +29 -29
  241. package/dist/plugin-sdk/telegram.d.ts +4 -4
  242. package/dist/plugin-sdk/telegram.js +8 -8
  243. package/dist/plugin-sdk/{thread-bindings.lifecycle-DwYKCLLq.js → thread-bindings.lifecycle-BWIzwpPM.js} +3 -3
  244. package/dist/plugin-sdk/{thread-bindings.state-BNWfHA0f.js → thread-bindings.state-CpAQrGco.js} +2 -2
  245. package/dist/plugin-sdk/{tmp-fased-dir-Be1wBhVz.d.ts → tmp-fased-dir-DLba1ePP.d.ts} +1 -1
  246. package/dist/plugin-sdk/{types-CXLEOrJX.d.ts → types-CKR2Lvsa.d.ts} +1 -1
  247. package/dist/plugin-sdk/{types-CJGVZX6j.d.ts → types-NR-f-rw-.d.ts} +3 -3
  248. package/dist/plugin-sdk/{wallet-status-Coekn_SJ.js → wallet-status-ClmXigGN.js} +3 -3
  249. package/dist/plugin-sdk/{web-BwolzGVF.js → web-BK2j9z6c.js} +31 -31
  250. package/dist/plugin-sdk/{whatsapp-actions-CSvf6eev.js → whatsapp-actions-CaenMy79.js} +13 -13
  251. package/dist/plugin-sdk/{whatsapp-heartbeat-Bw7OtTe6.js → whatsapp-heartbeat-Cr9K5Sil.js} +2 -2
  252. package/dist/plugin-sdk/whatsapp.d.ts +9 -9
  253. package/dist/plugin-sdk/whatsapp.js +12 -12
  254. package/dist/plugin-sdk/{wsl-By1Mc-oS.js → wsl-D_I-iL4U.js} +3 -3
  255. package/dist/plugin-sdk/{zod-schema.providers-core-TI6sL-6B.d.ts → zod-schema.providers-core-CIzCjXH9.d.ts} +75 -75
  256. package/dist/plugins/bundled-dir.js +3 -3
  257. package/dist/plugins/discovery.js +11 -11
  258. package/dist/plugins/loader.js +13 -13
  259. package/dist/plugins/manifest-registry.js +2 -2
  260. package/dist/plugins/manifest.js +4 -4
  261. package/dist/plugins/path-safety.js +3 -3
  262. package/dist/plugins/status-cache.js +10 -10
  263. package/dist/plugins/update.js +3 -3
  264. package/dist/plugins/web-search-install-catalog.js +3 -3
  265. package/dist/providers/refresh.js +1 -1
  266. package/dist/providers/refreshed-model-capabilities.js +1935 -406
  267. package/dist/providers/registry.js +13 -2
  268. package/dist/secrets/apply.js +16 -16
  269. package/dist/secrets/audit.js +11 -11
  270. package/dist/secrets/shared.js +9 -9
  271. package/dist/security/scan-paths.js +2 -2
  272. package/dist/shared/config-eval.js +2 -2
  273. package/dist/shared/pid-alive.js +2 -2
  274. package/dist/tasks/standing-orders.js +5 -5
  275. package/dist/tasks/task-flow-registry.js +5 -5
  276. package/dist/tasks/task-registry.js +5 -5
  277. package/dist/tasks/workflow-definitions.js +6 -6
  278. package/dist/telegram/token.js +5 -5
  279. package/dist/utils.js +5 -5
  280. package/dist/wallet/local-socket-signer-broker.js +16 -16
  281. package/dist/wallet/providers/embedded-keystore-adapter.js +5 -5
  282. package/dist/wallet/providers/local-socket-signer-adapter.js +2 -2
  283. package/dist/wallet/wallet-approval-auth.js +5 -5
  284. package/dist/wallet/wallet-audit-log.js +5 -5
  285. package/dist/wallet/wallet-custody.js +21 -21
  286. package/dist/wallet/wallet-inbound-events.js +5 -5
  287. package/dist/wallet/wallet-observability.js +5 -5
  288. package/dist/wallet/wallet-policy.js +9 -9
  289. package/dist/wallet/wallet-provider-registry.js +7 -7
  290. package/dist/wallet/wallet-runtime-config.js +3 -3
  291. package/dist/wallet/wallet-secrets-store.js +22 -22
  292. package/dist/wallet/wallet-send-approvals.js +5 -5
  293. package/dist/wallet/wallet-settlement-links.js +5 -5
  294. package/dist/web/accounts.js +3 -3
  295. package/dist/web/auth-store.js +18 -18
  296. package/dist/web/session.js +4 -4
  297. package/dist/wizard/host-security-capability.js +2 -2
  298. package/dist/wizard/onboarding.host-security.js +7 -7
  299. package/dist/wizard/onboarding.js +7 -7
  300. package/dist/wizard/onboarding.wallet.js +44 -44
  301. package/extensions/acpx/package.json +1 -1
  302. package/extensions/bluebubbles/package.json +1 -1
  303. package/extensions/copilot-proxy/package.json +1 -1
  304. package/extensions/diagnostics-otel/package.json +1 -1
  305. package/extensions/fased-federation/package.json +1 -1
  306. package/extensions/google-gemini-cli-auth/package.json +1 -1
  307. package/extensions/imessage/package.json +1 -1
  308. package/extensions/irc/package.json +1 -1
  309. package/extensions/line/package.json +1 -1
  310. package/extensions/llm-task/package.json +1 -1
  311. package/extensions/lobster/package.json +1 -1
  312. package/extensions/matrix/CHANGELOG.md +12 -0
  313. package/extensions/matrix/package.json +1 -1
  314. package/extensions/mattermost/package.json +1 -1
  315. package/extensions/memory-core/package.json +2 -2
  316. package/extensions/memory-lancedb/package.json +1 -1
  317. package/extensions/minimax-portal-auth/package.json +1 -1
  318. package/extensions/msteams/CHANGELOG.md +12 -0
  319. package/extensions/msteams/package.json +1 -1
  320. package/extensions/nextcloud-talk/package.json +1 -1
  321. package/extensions/nostr/CHANGELOG.md +12 -0
  322. package/extensions/nostr/package.json +1 -1
  323. package/extensions/open-prose/package.json +1 -1
  324. package/extensions/sat-mining/package.json +1 -1
  325. package/extensions/signal/package.json +1 -1
  326. package/extensions/synology-chat/package.json +1 -1
  327. package/extensions/tlon/package.json +1 -1
  328. package/extensions/twitch/CHANGELOG.md +12 -0
  329. package/extensions/twitch/package.json +1 -1
  330. package/extensions/voice-call/CHANGELOG.md +12 -0
  331. package/extensions/voice-call/package.json +1 -1
  332. package/extensions/zalo/CHANGELOG.md +12 -0
  333. package/extensions/zalo/package.json +1 -1
  334. package/extensions/zalouser/CHANGELOG.md +12 -0
  335. package/extensions/zalouser/package.json +1 -1
  336. package/package.json +1 -1
  337. package/scripts/start-managed.sh +14 -0
@@ -2,7 +2,7 @@ import { isKnownCoreToolId } from "../agents/tool-catalog.js";
2
2
  import { DANGEROUS_ACP_TOOLS } from "../security/dangerous-tools.js";
3
3
  import { ensureFasedAgentCliOnPath } from "../infra/path-env.js";
4
4
  import { fileURLToPath } from "node:url";
5
- import syncFs from "node:fs";
5
+ import fs from "node:fs";
6
6
  import { homedir } from "node:os";
7
7
  import path from "node:path";
8
8
  import { spawn } from "node:child_process";
@@ -269,7 +269,7 @@ function resolveSelfEntryPath() {
269
269
  try {
270
270
  const here = fileURLToPath(import.meta.url);
271
271
  const candidate = path.resolve(path.dirname(here), "..", "entry.js");
272
- if (syncFs.existsSync(candidate)) {
272
+ if (fs.existsSync(candidate)) {
273
273
  return candidate;
274
274
  }
275
275
  } catch {}
@@ -1,5 +1,5 @@
1
1
  import { resolveUserPath } from "../utils.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
 
4
4
  //#region src/acp/secret-file.ts
5
5
  function readSecretFromFile(filePath, label) {
@@ -9,7 +9,7 @@ function readSecretFromFile(filePath, label) {
9
9
  }
10
10
  let raw = "";
11
11
  try {
12
- raw = syncFs.readFileSync(resolvedPath, "utf8");
12
+ raw = fs.readFileSync(resolvedPath, "utf8");
13
13
  } catch (err) {
14
14
  throw new Error(`Failed to read ${label} file at ${resolvedPath}: ${String(err)}`, { cause: err });
15
15
  }
@@ -6,7 +6,7 @@ import { parseAgentSessionKey } from "../sessions/session-key-utils.js";
6
6
  import { DEFAULT_AGENT_ID, normalizeAgentId, resolveAgentIdFromSessionKey } from "../routing/session-key.js";
7
7
  import { resolveEffectiveAgentSkillFilter } from "./skills/agent-filter.js";
8
8
  import { resolveDefaultAgentWorkspaceDir } from "./workspace.js";
9
- import syncFs from "node:fs";
9
+ import fs from "node:fs";
10
10
  import path from "node:path";
11
11
 
12
12
  //#region src/agents/agent-scope.ts
@@ -245,7 +245,7 @@ function normalizePathForComparison(input) {
245
245
  const resolved = path.resolve(stripNullBytes(resolveUserPath(input)));
246
246
  let normalized = resolved;
247
247
  try {
248
- normalized = syncFs.realpathSync.native(resolved);
248
+ normalized = fs.realpathSync.native(resolved);
249
249
  } catch {}
250
250
  if (process.platform === "win32") {
251
251
  return normalized.toLowerCase();
@@ -3,9 +3,9 @@ import { PATH_ALIAS_POLICIES } from "../infra/path-alias-guards.js";
3
3
  import { writeFileWithinRoot } from "../infra/fs-safe.js";
4
4
  import { applyUpdateHunk } from "./apply-patch-update.js";
5
5
  import { assertSandboxPath, resolveSandboxInputPath } from "./sandbox-paths.js";
6
- import syncFs from "node:fs";
6
+ import fs from "node:fs";
7
7
  import path from "node:path";
8
- import fs from "node:fs/promises";
8
+ import fs$1 from "node:fs/promises";
9
9
  import { Type } from "@sinclair/typebox";
10
10
 
11
11
  //#region src/agents/apply-patch.ts
@@ -159,7 +159,7 @@ function resolvePatchFileOps(options) {
159
159
  return {
160
160
  readFile: async (filePath) => {
161
161
  if (!workspaceOnly) {
162
- return await fs.readFile(filePath, "utf8");
162
+ return await fs$1.readFile(filePath, "utf8");
163
163
  }
164
164
  const opened = await openBoundaryFile({
165
165
  absolutePath: filePath,
@@ -168,14 +168,14 @@ function resolvePatchFileOps(options) {
168
168
  });
169
169
  assertBoundaryRead(opened, filePath);
170
170
  try {
171
- return syncFs.readFileSync(opened.fd, "utf8");
171
+ return fs.readFileSync(opened.fd, "utf8");
172
172
  } finally {
173
- syncFs.closeSync(opened.fd);
173
+ fs.closeSync(opened.fd);
174
174
  }
175
175
  },
176
176
  writeFile: async (filePath, content) => {
177
177
  if (!workspaceOnly) {
178
- await fs.writeFile(filePath, content, "utf8");
178
+ await fs$1.writeFile(filePath, content, "utf8");
179
179
  return;
180
180
  }
181
181
  const relative = toRelativeWorkspacePath(options.cwd, filePath);
@@ -186,8 +186,8 @@ function resolvePatchFileOps(options) {
186
186
  encoding: "utf8"
187
187
  });
188
188
  },
189
- remove: (filePath) => fs.rm(filePath),
190
- mkdirp: (dir) => fs.mkdir(dir, { recursive: true }).then(() => {})
189
+ remove: (filePath) => fs$1.rm(filePath),
190
+ mkdirp: (dir) => fs$1.mkdir(dir, { recursive: true }).then(() => {})
191
191
  };
192
192
  }
193
193
  async function ensureDir(filePath, ops) {
@@ -2,7 +2,7 @@ import { resolveUserPath } from "../../utils.js";
2
2
  import { saveJsonFile } from "../../infra/json-file.js";
3
3
  import { AUTH_PROFILE_FILENAME, AUTH_STORE_VERSION, LEGACY_AUTH_FILENAME } from "./constants.js";
4
4
  import { resolveFasedAgentAgentDir } from "../agent-paths.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/agents/auth-profiles/paths.ts
@@ -19,7 +19,7 @@ function resolveAuthStorePathForDisplay(agentDir) {
19
19
  return pathname.startsWith("~") ? pathname : resolveUserPath(pathname);
20
20
  }
21
21
  function ensureAuthStoreFile(pathname) {
22
- if (syncFs.existsSync(pathname)) {
22
+ if (fs.existsSync(pathname)) {
23
23
  return;
24
24
  }
25
25
  const payload = {
@@ -5,7 +5,7 @@ import { withFileLock } from "../../plugin-sdk/file-lock.js";
5
5
  import "../../infra/file-lock.js";
6
6
  import { syncExternalCliCredentials } from "./external-cli-sync.js";
7
7
  import { ensureAuthStoreFile, resolveAuthStorePath, resolveLegacyAuthStorePath } from "./paths.js";
8
- import syncFs from "node:fs";
8
+ import fs from "node:fs";
9
9
 
10
10
  //#region src/agents/auth-profiles/store.ts
11
11
  const AUTH_PROFILE_TYPES = new Set([
@@ -361,7 +361,7 @@ function loadAuthProfileStoreForAgent(agentDir, options) {
361
361
  if (shouldWrite && legacy !== null) {
362
362
  const legacyPath = resolveLegacyAuthStorePath(agentDir);
363
363
  try {
364
- syncFs.unlinkSync(legacyPath);
364
+ fs.unlinkSync(legacyPath);
365
365
  } catch (err) {
366
366
  if (err?.code !== "ENOENT") {
367
367
  log.warn("failed to delete legacy auth.json after migration", {
@@ -3,7 +3,7 @@ import { assertSandboxPath } from "./sandbox-paths.js";
3
3
  import { existsSync, statSync } from "node:fs";
4
4
  import { homedir } from "node:os";
5
5
  import path from "node:path";
6
- import fs from "node:fs/promises";
6
+ import fs$1 from "node:fs/promises";
7
7
 
8
8
  //#region src/agents/bash-tools.shared.ts
9
9
  const CHUNK_LIMIT = 8 * 1024;
@@ -67,7 +67,7 @@ async function resolveSandboxWorkdir(params) {
67
67
  cwd: process.cwd(),
68
68
  root: params.sandbox.workspaceDir
69
69
  });
70
- const stats = await fs.stat(resolved.resolved);
70
+ const stats = await fs$1.stat(resolved.resolved);
71
71
  if (!stats.isDirectory()) {
72
72
  throw new Error("workdir is not a directory");
73
73
  }
@@ -1,7 +1,7 @@
1
1
  import { resolveUserPath } from "../utils.js";
2
2
  import { createSubsystemLogger } from "../logging/subsystem.js";
3
3
  import { loadJsonFile, saveJsonFile } from "../infra/json-file.js";
4
- import syncFs from "node:fs";
4
+ import fs from "node:fs";
5
5
  import path from "node:path";
6
6
  import { execFileSync, execSync } from "node:child_process";
7
7
  import { createHash } from "node:crypto";
@@ -61,7 +61,7 @@ function resolveCodexHomePath() {
61
61
  const configured = process.env.CODEX_HOME;
62
62
  const home = configured ? resolveUserPath(configured) : resolveUserPath("~/.codex");
63
63
  try {
64
- return syncFs.realpathSync.native(home);
64
+ return fs.realpathSync.native(home);
65
65
  } catch {
66
66
  return home;
67
67
  }
@@ -264,7 +264,7 @@ function writeClaudeCliKeychainCredentials(newCredentials, options) {
264
264
  }
265
265
  function writeClaudeCliFileCredentials(newCredentials, options) {
266
266
  const credPath = resolveClaudeCliCredentialsPath(options?.homeDir);
267
- if (!syncFs.existsSync(credPath)) {
267
+ if (!fs.existsSync(credPath)) {
268
268
  return false;
269
269
  }
270
270
  try {
@@ -331,7 +331,7 @@ function readCodexCliCredentials(options) {
331
331
  }
332
332
  let expires;
333
333
  try {
334
- const stat = syncFs.statSync(authPath);
334
+ const stat = fs.statSync(authPath);
335
335
  expires = stat.mtimeMs + 60 * 60 * 1e3;
336
336
  } catch {
337
337
  expires = Date.now() + 60 * 60 * 1e3;
@@ -40,6 +40,51 @@ function model(params) {
40
40
  };
41
41
  }
42
42
  const OPENAI_MODELS = [
43
+ model({
44
+ id: "gpt-5.6",
45
+ name: "GPT-5.6 Sol",
46
+ reasoning: true,
47
+ input: ["text", "image"],
48
+ contextWindow: 105e4,
49
+ maxTokens: 128e3,
50
+ api: "openai-responses",
51
+ cost: {
52
+ input: 5,
53
+ output: 30,
54
+ cacheRead: .5,
55
+ cacheWrite: 6.25
56
+ }
57
+ }),
58
+ model({
59
+ id: "gpt-5.6-terra",
60
+ name: "GPT-5.6 Terra",
61
+ reasoning: true,
62
+ input: ["text", "image"],
63
+ contextWindow: 105e4,
64
+ maxTokens: 128e3,
65
+ api: "openai-responses",
66
+ cost: {
67
+ input: 2.5,
68
+ output: 15,
69
+ cacheRead: .25,
70
+ cacheWrite: 3.125
71
+ }
72
+ }),
73
+ model({
74
+ id: "gpt-5.6-luna",
75
+ name: "GPT-5.6 Luna",
76
+ reasoning: true,
77
+ input: ["text", "image"],
78
+ contextWindow: 105e4,
79
+ maxTokens: 128e3,
80
+ api: "openai-responses",
81
+ cost: {
82
+ input: 1,
83
+ output: 6,
84
+ cacheRead: .1,
85
+ cacheWrite: 1.25
86
+ }
87
+ }),
43
88
  model({
44
89
  id: "gpt-5.5",
45
90
  name: "GPT-5.5",
@@ -1,5 +1,5 @@
1
1
  import { resolveFasedAgentPackageRoot } from "../infra/fased-root.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/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 (syncFs.existsSync(workspaceDocs)) {
10
+ if (fs.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 syncFs.existsSync(packageDocs) ? packageDocs : null;
23
+ return fs.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 syncFs from "node:fs";
3
+ import fs 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 (!syncFs.existsSync(filePath)) {
69
+ if (!fs.existsSync(filePath)) {
70
70
  return {};
71
71
  }
72
- const raw = JSON.parse(syncFs.readFileSync(filePath, "utf-8"));
72
+ const raw = JSON.parse(fs.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 (!syncFs.existsSync(rootDir)) {
102
+ if (!fs.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 syncFs from "node:fs";
6
+ import fs 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 syncFs.realpathSync(value);
31
+ return fs.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 = syncFs.statSync(realPath);
54
+ const stat = fs.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 syncFs from "node:fs";
2
+ import fs 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 = syncFs.readFileSync(identityPath, "utf-8");
70
+ const content = fs.readFileSync(identityPath, "utf-8");
71
71
  const parsed = parseIdentityMarkdown(content);
72
72
  if (!identityHasValues(parsed)) {
73
73
  return null;
@@ -1,4 +1,4 @@
1
- import { isOpenAISignInRuntimeModelSupported } from "../providers/registry.js";
1
+ import { isOpenAISignInRuntimeModelSupported, isStandardProviderCatalogEntry, listProviderBrandManifests } from "../providers/registry.js";
2
2
  import { MODEL_APIS } from "../config/types.models.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";
@@ -86,11 +86,33 @@ function runtimeCatalogRows(params) {
86
86
  }
87
87
  return rows;
88
88
  }
89
+ function manifestCatalogRows() {
90
+ return listProviderBrandManifests().flatMap((manifest) => manifest.models.recommended.flatMap((ref) => {
91
+ const slash = ref.indexOf("/");
92
+ if (slash <= 0 || slash === ref.length - 1) {
93
+ return [];
94
+ }
95
+ const provider = normalizeModelCatalogProviderId(ref.slice(0, slash));
96
+ const id = normalizeModelCatalogModelId(ref.slice(slash + 1));
97
+ if (!provider || !id) {
98
+ return [];
99
+ }
100
+ return [{
101
+ id,
102
+ name: id,
103
+ provider,
104
+ mergeKey: buildModelCatalogMergeKey(provider, id),
105
+ source: "manifest",
106
+ status: "stable",
107
+ input: ["text"]
108
+ }];
109
+ }));
110
+ }
89
111
  function providerConfigForRow(cfg, row) {
90
112
  return cfg.models?.providers?.[row.provider] ?? CURRENT_MODEL_PROVIDER_CATALOG[row.provider];
91
113
  }
92
114
  function buildFasedModelCatalogRows(params) {
93
- return mergeModelCatalogRowsByAuthority([
115
+ const discoveredRows = mergeModelCatalogRowsByAuthority([
94
116
  ...listCurrentModelCatalogRows(),
95
117
  ...providerPluginCatalogRows(params.providerPluginProviders),
96
118
  ...runtimeCatalogRows({
@@ -99,6 +121,9 @@ function buildFasedModelCatalogRows(params) {
99
121
  }),
100
122
  ...configuredProviderCatalogRows(params.config)
101
123
  ]);
124
+ const discoveredKeys = new Set(discoveredRows.map((row) => row.mergeKey));
125
+ const missingManifestRows = manifestCatalogRows().filter((row) => !discoveredKeys.has(row.mergeKey));
126
+ return mergeModelCatalogRowsByAuthority([...discoveredRows, ...missingManifestRows]);
102
127
  }
103
128
  function buildFasedModelCatalogEntries(params) {
104
129
  return buildFasedModelCatalogRows({
@@ -126,7 +151,7 @@ function buildFasedModelCatalogEntries(params) {
126
151
  model,
127
152
  cfg: params.config,
128
153
  providerConfig,
129
- recommended: row.source === "current-preview"
154
+ recommended: isStandardProviderCatalogEntry(row)
130
155
  }) } : {}
131
156
  };
132
157
  });
@@ -1,6 +1,6 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
2
  import { isTruthyEnvValue } from "../infra/env.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/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
- syncFs.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
17
+ fs.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
18
18
  } catch {}
19
19
  }
20
20
  try {
21
- void syncFs.promises.appendFile(RAW_STREAM_PATH, `${JSON.stringify(payload)}\n`);
21
+ void fs.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 syncFs from "node:fs";
6
+ import fs 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 (!syncFs.existsSync(agentsPath)) {
125
+ if (!fs.existsSync(agentsPath)) {
126
126
  return "";
127
127
  }
128
- const content = await syncFs.promises.readFile(agentsPath, "utf-8");
128
+ const content = await fs.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 syncFs from "node:fs";
4
+ import fs 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 (!syncFs.existsSync(pathname)) {
28
+ if (!fs.existsSync(pathname)) {
29
29
  return;
30
30
  }
31
31
  let parsed;
32
32
  try {
33
- parsed = JSON.parse(syncFs.readFileSync(pathname, "utf8"));
33
+ parsed = JSON.parse(fs.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
- syncFs.rmSync(pathname, { force: true });
55
+ fs.rmSync(pathname, { force: true });
56
56
  return;
57
57
  }
58
- syncFs.writeFileSync(pathname, `${JSON.stringify(parsed, null, 2)}\n`, "utf8");
59
- syncFs.chmodSync(pathname, 384);
58
+ fs.writeFileSync(pathname, `${JSON.stringify(parsed, null, 2)}\n`, "utf8");
59
+ fs.chmodSync(pathname, 384);
60
60
  }
61
61
  function createAuthStorage(AuthStorageLike, path, creds) {
62
62
  const withInMemory = AuthStorageLike;
@@ -1,6 +1,6 @@
1
1
  import { applyMergePatch } from "../config/merge-patch.js";
2
2
  import { applyPiCompactionSettingsFromConfig } from "./pi-settings.js";
3
- import syncFs from "node:fs";
3
+ import fs from "node:fs";
4
4
  import path from "node:path";
5
5
  import { SettingsManager } from "@mariozechner/pi-coding-agent";
6
6
 
@@ -28,7 +28,7 @@ function buildEmbeddedPiSettingsSnapshot(params) {
28
28
  }
29
29
  function readJsonFile(filePath) {
30
30
  try {
31
- const raw = syncFs.readFileSync(filePath, "utf8");
31
+ const raw = fs.readFileSync(filePath, "utf8");
32
32
  const parsed = JSON.parse(raw);
33
33
  return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
34
34
  } catch {
@@ -49,7 +49,7 @@ function loadEnabledBundlePiSettingsSnapshot(params) {
49
49
  const servers = mcp.mcpServers && typeof mcp.mcpServers === "object" && !Array.isArray(mcp.mcpServers) ? mcp.mcpServers : undefined;
50
50
  if (servers) {
51
51
  const resolvedServers = {};
52
- const resolvedRoot = syncFs.realpathSync.native?.(pluginRoot) ?? syncFs.realpathSync(pluginRoot);
52
+ const resolvedRoot = fs.realpathSync.native?.(pluginRoot) ?? fs.realpathSync(pluginRoot);
53
53
  for (const [name, server] of Object.entries(servers)) {
54
54
  if (!server || typeof server !== "object" || Array.isArray(server)) {
55
55
  resolvedServers[name] = server;
@@ -11,7 +11,7 @@ function normalizeProviderId(provider) {
11
11
  return "opencode";
12
12
  }
13
13
  if (normalized === "kimi" || normalized === "kimi-code" || normalized === "kimi-coding") {
14
- return "kimi";
14
+ return "kimi-coding";
15
15
  }
16
16
  if (normalized === "moonshotai" || normalized === "moonshot-ai") {
17
17
  return "moonshot";
@@ -3,7 +3,7 @@ import { PATH_ALIAS_POLICIES } from "../../infra/path-alias-guards.js";
3
3
  import { execDockerRaw } from "./docker.js";
4
4
  import { isPathInsideContainerRoot, normalizeContainerPath } from "./path-utils.js";
5
5
  import { buildSandboxFsMounts, resolveSandboxFsPathWithMounts } from "./fs-paths.js";
6
- import syncFs from "node:fs";
6
+ import fs from "node:fs";
7
7
 
8
8
  //#region src/agents/sandbox/fs-bridge.ts
9
9
  function createSandboxFsBridge(params) {
@@ -160,7 +160,7 @@ var SandboxFsBridgeImpl = class {
160
160
  throw guarded.error instanceof Error ? guarded.error : new Error(`Sandbox boundary checks failed; cannot ${options.action}: ${target.containerPath}`);
161
161
  }
162
162
  } else {
163
- syncFs.closeSync(guarded.fd);
163
+ fs.closeSync(guarded.fd);
164
164
  }
165
165
  const canonicalContainerPath = await this.resolveCanonicalContainerPath({
166
166
  containerPath: target.containerPath,
@@ -1,6 +1,6 @@
1
- import syncFs from "node:fs";
1
+ import fs from "node:fs";
2
2
  import path from "node:path";
3
- import fs from "node:fs/promises";
3
+ import fs$1 from "node:fs/promises";
4
4
 
5
5
  //#region src/agents/session-dirs.ts
6
6
  function mapAgentSessionDirs(agentsDir, entries) {
@@ -9,7 +9,7 @@ function mapAgentSessionDirs(agentsDir, entries) {
9
9
  async function resolveAgentSessionDirsFromAgentsDir(agentsDir) {
10
10
  let entries = [];
11
11
  try {
12
- entries = await fs.readdir(agentsDir, { withFileTypes: true });
12
+ entries = await fs$1.readdir(agentsDir, { withFileTypes: true });
13
13
  } catch (err) {
14
14
  const code = err.code;
15
15
  if (code === "ENOENT") {
@@ -22,7 +22,7 @@ async function resolveAgentSessionDirsFromAgentsDir(agentsDir) {
22
22
  function resolveAgentSessionDirsFromAgentsDirSync(agentsDir) {
23
23
  let entries = [];
24
24
  try {
25
- entries = syncFs.readdirSync(agentsDir, { withFileTypes: true });
25
+ entries = fs.readdirSync(agentsDir, { withFileTypes: true });
26
26
  } catch (err) {
27
27
  const code = err.code;
28
28
  if (code === "ENOENT") {