@fased/fased 0.1.54 → 0.1.56

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 (465) hide show
  1. package/config/capability-catalog.json +12 -0
  2. package/dist/acp/client.js +2 -2
  3. package/dist/acp/secret-file.js +2 -2
  4. package/dist/agents/agent-scope.js +2 -2
  5. package/dist/agents/apply-patch.js +8 -8
  6. package/dist/agents/auth-profiles/paths.js +2 -2
  7. package/dist/agents/auth-profiles/store.js +2 -2
  8. package/dist/agents/authenticated-model-catalog.js +28 -0
  9. package/dist/agents/bash-tools.exec-host-node.js +1 -1
  10. package/dist/agents/bash-tools.exec.js +1 -1
  11. package/dist/agents/bash-tools.shared.js +2 -2
  12. package/dist/agents/cli-credentials.js +4 -4
  13. package/dist/agents/copilot-dynamic-headers.js +37 -0
  14. package/dist/agents/current-model-catalog.js +9 -13
  15. package/dist/agents/docs-path.js +3 -3
  16. package/dist/agents/embedded-pi-mcp.js +4 -4
  17. package/dist/agents/identity-avatar.js +3 -3
  18. package/dist/agents/identity-file.js +2 -2
  19. package/dist/agents/model-catalog-normalized.js +1 -0
  20. package/dist/agents/model-catalog-source.js +2 -2
  21. package/dist/agents/model-catalog.js +1 -1
  22. package/dist/agents/model-metadata.js +58 -9
  23. package/dist/agents/openai-codex-app-server.js +499 -0
  24. package/dist/agents/pi-embedded-runner/compact.js +3 -3
  25. package/dist/agents/pi-embedded-runner/extra-params.js +168 -79
  26. package/dist/agents/pi-embedded-runner/model.js +62 -1
  27. package/dist/agents/pi-embedded-runner/moonshot-stream-wrappers.js +46 -0
  28. package/dist/agents/pi-embedded-runner/openai-stream-wrappers.js +221 -0
  29. package/dist/agents/pi-embedded-runner/run/attempt.js +6 -4
  30. package/dist/agents/pi-embedded-runner/run.js +5 -2
  31. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  32. package/dist/agents/pi-embedded-runner.js +1 -1
  33. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  34. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  35. package/dist/agents/pi-model-discovery.js +6 -6
  36. package/dist/agents/pi-project-settings.js +3 -3
  37. package/dist/agents/pi-tools.js +2 -2
  38. package/dist/agents/sandbox/fs-bridge.js +2 -2
  39. package/dist/agents/session-dirs.js +4 -4
  40. package/dist/agents/session-write-lock.js +13 -13
  41. package/dist/agents/shell-utils.js +5 -5
  42. package/dist/agents/skills/bundled-dir.js +4 -4
  43. package/dist/agents/skills/local-loader.js +6 -6
  44. package/dist/agents/skills/plugin-skills.js +2 -2
  45. package/dist/agents/skills/workspace.js +13 -13
  46. package/dist/agents/skills-install-download.js +7 -7
  47. package/dist/agents/skills-install-plan.js +2 -2
  48. package/dist/agents/skills-install.js +2 -2
  49. package/dist/agents/skills-status.js +2 -2
  50. package/dist/agents/subagent-depth.js +2 -2
  51. package/dist/agents/system-prompt-params.js +2 -2
  52. package/dist/agents/tools/discord-actions-messaging.js +1 -1
  53. package/dist/agents/tools/message-tool.js +1 -1
  54. package/dist/agents/tools/session-status-tool.js +3 -3
  55. package/dist/agents/tools/slack-actions.js +1 -1
  56. package/dist/agents/tools/tts-tool.js +1 -1
  57. package/dist/agents/workspace.js +22 -22
  58. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  59. package/dist/auto-reply/reply/agent-runner.js +2 -2
  60. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  61. package/dist/auto-reply/reply/commands-models.js +1 -1
  62. package/dist/auto-reply/reply/directive-handling.impl.js +4 -1
  63. package/dist/auto-reply/reply/dispatch-acp.js +1 -1
  64. package/dist/auto-reply/reply/dispatch-from-config.js +1 -1
  65. package/dist/auto-reply/reply/get-reply-run.js +20 -2
  66. package/dist/auto-reply/reply/model-selection.js +1 -1
  67. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  68. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  69. package/dist/auto-reply/reply/session-reset-model.js +1 -1
  70. package/dist/auto-reply/reply/session.js +3 -3
  71. package/dist/auto-reply/skill-commands.js +3 -3
  72. package/dist/auto-reply/status.js +7 -7
  73. package/dist/auto-reply/thinking.js +1 -1
  74. package/dist/brand.js +1 -1
  75. package/dist/browser/cdp.helpers.js +2 -2
  76. package/dist/browser/chrome.executables.js +3 -3
  77. package/dist/browser/chrome.js +5 -5
  78. package/dist/browser/chrome.profile-decoration.js +6 -6
  79. package/dist/browser/extension-relay.js +7 -7
  80. package/dist/browser/profiles-service.js +2 -2
  81. package/dist/browser/server-context.js +2 -2
  82. package/dist/browser/trash.js +4 -4
  83. package/dist/build-info.json +3 -3
  84. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  85. package/dist/canvas-host/server.js +4 -4
  86. package/dist/capabilities/catalog.js +3 -3
  87. package/dist/channels/plugins/catalog.js +3 -3
  88. package/dist/cli/browser-cli-extension.js +6 -6
  89. package/dist/cli/command-format.js +2 -2
  90. package/dist/cli/cron-cli/register.cron-add.js +1 -1
  91. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  92. package/dist/cli/dns-cli.js +9 -9
  93. package/dist/cli/gateway-cli/dev.js +5 -5
  94. package/dist/cli/gateway-cli/run.js +2 -2
  95. package/dist/cli/hooks-cli.js +5 -5
  96. package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
  97. package/dist/cli/memory-cli.js +7 -7
  98. package/dist/cli/nodes-media-utils.js +2 -2
  99. package/dist/cli/plugins-cli.js +2 -2
  100. package/dist/cli/program/register.agent.js +1 -1
  101. package/dist/cli/providers-cli.js +3 -2
  102. package/dist/cli/secrets-cli.js +3 -3
  103. package/dist/cli/windows-argv.js +2 -2
  104. package/dist/commands/agent.js +22 -3
  105. package/dist/commands/auth-choice.apply.api-providers.js +3 -8
  106. package/dist/commands/auth-choice.apply.openai.js +13 -7
  107. package/dist/commands/auth-choice.model-check.js +1 -2
  108. package/dist/commands/configure.gateway-auth.js +14 -16
  109. package/dist/commands/dashboard-link.js +3 -3
  110. package/dist/commands/doctor-config-flow.js +1 -1
  111. package/dist/commands/doctor-install.js +5 -5
  112. package/dist/commands/doctor-memory-search.js +2 -2
  113. package/dist/commands/doctor-platform-notes.js +2 -2
  114. package/dist/commands/doctor-sandbox.js +2 -2
  115. package/dist/commands/doctor-state-integrity.js +23 -23
  116. package/dist/commands/doctor-workspace.js +3 -3
  117. package/dist/commands/doctor.js +3 -3
  118. package/dist/commands/hosted-dashboard-probe.js +3 -3
  119. package/dist/commands/managed-up.js +2 -2
  120. package/dist/commands/model-picker.js +27 -8
  121. package/dist/commands/models/list.probe.js +1 -1
  122. package/dist/commands/models/list.registry.js +13 -17
  123. package/dist/commands/models/list.status-command.js +2 -2
  124. package/dist/commands/onboard-auth.config-core.js +1 -1
  125. package/dist/commands/onboard-auth.config-litellm.js +21 -21
  126. package/dist/commands/onboard-auth.credentials.js +3 -4
  127. package/dist/commands/onboard-auth.js +0 -1
  128. package/dist/commands/onboarding/plugin-install.js +2 -2
  129. package/dist/commands/openai-codex-model-default.js +28 -5
  130. package/dist/commands/sessions-cleanup.js +2 -2
  131. package/dist/commands/signal-install.js +6 -6
  132. package/dist/commands/status-all/channels.js +2 -2
  133. package/dist/commands/wallet.js +47 -47
  134. package/dist/config/cache-utils.js +2 -2
  135. package/dist/config/includes.js +5 -5
  136. package/dist/config/io.js +2 -2
  137. package/dist/config/paths.js +3 -3
  138. package/dist/config/sat-runtime-ids.js +3 -3
  139. package/dist/config/sessions/disk-budget.js +6 -6
  140. package/dist/config/sessions/paths.js +2 -2
  141. package/dist/config/sessions/store.js +17 -17
  142. package/dist/config/sessions/transcript.js +4 -4
  143. package/dist/config/talk.js +2 -2
  144. package/dist/config/zod-schema.agent-defaults.js +6 -2
  145. package/dist/config/zod-schema.agent-runtime.js +6 -2
  146. package/dist/config/zod-schema.core.js +6 -2
  147. package/dist/control-ui/assets/{app-BKlu6OKz.js → app-D7TXyNRi.js} +1548 -1540
  148. package/dist/control-ui/assets/chat-model-ref-Djkv93yn.js +2 -0
  149. package/dist/control-ui/assets/{index-nrFcGMv-.js → index-BmSBom-w.js} +3 -3
  150. package/dist/control-ui/assets/{providers-BQFrRqym.js → providers-Cc89iMdx.js} +5 -5
  151. package/dist/control-ui/index.html +1 -1
  152. package/dist/control-ui/version.json +1 -0
  153. package/dist/cron/isolated-agent/run.js +6 -2
  154. package/dist/cron/service/jobs.js +11 -1
  155. package/dist/cron/service/store.js +2 -2
  156. package/dist/cron/store.js +6 -6
  157. package/dist/daemon/systemd-system.js +5 -5
  158. package/dist/discord/monitor/gateway-plugin.js +2 -2
  159. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  160. package/dist/discord/voice/manager.js +1 -1
  161. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  162. package/dist/gateway/client.js +4 -4
  163. package/dist/gateway/control-ui-boot-check.js +6 -6
  164. package/dist/gateway/control-ui-login.js +7 -7
  165. package/dist/gateway/control-ui.js +11 -9
  166. package/dist/gateway/hooks-mapping.js +4 -4
  167. package/dist/gateway/protocol/schema/agents-models-skills.js +66 -4
  168. package/dist/gateway/server-discovery.js +2 -2
  169. package/dist/gateway/server-http.js +4 -4
  170. package/dist/gateway/server-methods/chat.js +3 -3
  171. package/dist/gateway/server-methods/models.js +8 -8
  172. package/dist/gateway/server-methods/sessions.js +8 -8
  173. package/dist/gateway/server-methods/tts.js +2 -2
  174. package/dist/gateway/server-methods/usage.js +2 -2
  175. package/dist/gateway/server-model-catalog.js +3 -0
  176. package/dist/gateway/server.impl.js +3 -3
  177. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  178. package/dist/gateway/session-utils.fs.js +24 -24
  179. package/dist/gateway/session-utils.js +6 -6
  180. package/dist/gateway/sessions-patch.js +27 -24
  181. package/dist/hooks/bundled-dir.js +4 -4
  182. package/dist/hooks/gmail-setup-utils.js +6 -6
  183. package/dist/hooks/import-url.js +2 -2
  184. package/dist/hooks/loader.js +4 -4
  185. package/dist/hooks/workspace.js +7 -7
  186. package/dist/infra/archive.js +17 -17
  187. package/dist/infra/boundary-file-read.js +2 -2
  188. package/dist/infra/boundary-path.js +15 -15
  189. package/dist/infra/brew.js +2 -2
  190. package/dist/infra/control-ui-assets.js +14 -14
  191. package/dist/infra/device-auth-store.js +8 -8
  192. package/dist/infra/device-identity.js +8 -8
  193. package/dist/infra/dotenv.js +2 -2
  194. package/dist/infra/exec-approvals.js +8 -8
  195. package/dist/infra/exec-command-resolution.js +4 -4
  196. package/dist/infra/exec-safe-bin-trust.js +2 -2
  197. package/dist/infra/fased-root.js +5 -5
  198. package/dist/infra/fs-safe.js +14 -14
  199. package/dist/infra/gateway-lock.js +11 -11
  200. package/dist/infra/git-commit.js +5 -5
  201. package/dist/infra/git-root.js +4 -4
  202. package/dist/infra/hosted-runtime-artifact.js +3 -3
  203. package/dist/infra/is-main.js +2 -2
  204. package/dist/infra/json-file.js +7 -7
  205. package/dist/infra/outbound/delivery-queue.js +16 -16
  206. package/dist/infra/path-env.js +3 -3
  207. package/dist/infra/ports-lsof.js +4 -4
  208. package/dist/infra/provider-usage.auth.js +3 -3
  209. package/dist/infra/safe-open-sync.js +2 -2
  210. package/dist/infra/session-cost-usage.js +9 -9
  211. package/dist/infra/shell-env.js +2 -2
  212. package/dist/infra/state-migrations.fs.js +6 -6
  213. package/dist/infra/state-migrations.js +23 -23
  214. package/dist/infra/tmp-fased-dir.js +6 -6
  215. package/dist/infra/update-runner.js +31 -3
  216. package/dist/infra/widearea-dns.js +3 -3
  217. package/dist/infra/wsl.js +2 -2
  218. package/dist/light-update-status.js +1 -1
  219. package/dist/line/accounts.js +2 -2
  220. package/dist/line/download.js +2 -2
  221. package/dist/logging/config.js +3 -3
  222. package/dist/logging/logger.js +7 -7
  223. package/dist/managed/federation.js +3 -3
  224. package/dist/managed/tunnel.js +3 -3
  225. package/dist/media/store.js +13 -13
  226. package/dist/media-understanding/runner.js +3 -3
  227. package/dist/memory/embeddings.js +2 -2
  228. package/dist/memory/internal.js +10 -10
  229. package/dist/memory/inventory.js +19 -2
  230. package/dist/memory/manager-sync-ops.js +7 -7
  231. package/dist/memory/repair-executor.js +17 -17
  232. package/dist/node-host/invoke-system-run-plan.js +8 -8
  233. package/dist/node-host/invoke.js +2 -2
  234. package/dist/node-host/runner.js +3 -3
  235. package/dist/pairing/pairing-store.js +3 -3
  236. package/dist/plugin-sdk/{accounts-DW9OS5Ll.js → accounts-DzWlKv1U.js} +1 -1
  237. package/dist/plugin-sdk/{actions-DQUXohRr.js → actions-BplQVLL6.js} +4 -4
  238. package/dist/plugin-sdk/{active-listener-BZQWZPF7.js → active-listener-x4MLhYUw.js} +1 -1
  239. package/dist/plugin-sdk/{allow-list-BYeKk0Sy.js → allow-list-DyAxs4yw.js} +1 -1
  240. package/dist/plugin-sdk/{audio-preflight-t4mmHsI2.js → audio-preflight-G8h3Sn8_.js} +43 -47
  241. package/dist/plugin-sdk/{audit-BZk_6Buw.js → audit-CWknklvI.js} +1 -1
  242. package/dist/plugin-sdk/{channel-access-CN5HiWdb.js → channel-access-a9Dnfw7-.js} +1 -1
  243. package/dist/plugin-sdk/{channel-access-configure-B7Kkvx9K.js → channel-access-configure-CD4QDN5E.js} +1 -1
  244. package/dist/plugin-sdk/{channel-adapters.discord-IOZP8Cv5.js → channel-adapters.discord-BS4S4Svh.js} +1 -1
  245. package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
  246. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  247. package/dist/plugin-sdk/{chunk-B2ffJ-LR.js → chunk-B8EZkwiT.js} +1 -1
  248. package/dist/plugin-sdk/{chunk-items-jOdkyP53.js → chunk-items-CEPklxGe.js} +1 -1
  249. package/dist/plugin-sdk/command-status.d.ts +2 -2
  250. package/dist/plugin-sdk/command-status.js +43 -47
  251. package/dist/plugin-sdk/{commands-registry-BWb4NcfW.js → commands-registry-BfEa4tFA.js} +2 -2
  252. package/dist/plugin-sdk/{common-C4XrB73N.js → common-CbfckC19.js} +1 -1
  253. package/dist/plugin-sdk/{config-rySyVtKs.js → config-Bt5GhnA-.js} +105 -73
  254. package/dist/plugin-sdk/{config-schema-BaybPPrJ.js → config-schema-B9DKr6J5.js} +96239 -81587
  255. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  256. package/dist/plugin-sdk/device-pair.js +2 -3
  257. package/dist/plugin-sdk/{diagnostic-Dfn1iERm.js → diagnostic-DLL_zekv.js} +3 -3
  258. package/dist/plugin-sdk/{directory-live-DatqU-eS.js → directory-live-CSuYxdwk.js} +1 -1
  259. package/dist/plugin-sdk/{directory-live-ClwN5KKq.js → directory-live-Dw7ZgC9_.js} +1 -1
  260. package/dist/plugin-sdk/discord.d.ts +5 -5
  261. package/dist/plugin-sdk/discord.js +31 -32
  262. package/dist/plugin-sdk/{draft-stream-controls-D4Tb_iS_.js → draft-stream-controls-BqchW1vi.js} +1 -1
  263. package/dist/plugin-sdk/{fetch-guard-BuYrl6q2.js → fetch-guard-CeG6u6ld.js} +1 -1
  264. package/dist/plugin-sdk/{filesystem-manager-B9DDPgfU.js → filesystem-manager-BGGGrkiN.js} +2 -2
  265. package/dist/plugin-sdk/{fs-safe-BG-VzVkL.js → fs-safe-xBqok6yR.js} +1 -1
  266. package/dist/plugin-sdk/{group-mentions-DLOOve8d.d.ts → group-mentions-BHRff6j8.d.ts} +1 -1
  267. package/dist/plugin-sdk/{guilds-BeT3iHHJ.js → guilds-CDhRIX57.js} +1 -1
  268. package/dist/plugin-sdk/{handle-action-CGF-Qnp0.js → handle-action-DbzZFYnG.js} +24 -25
  269. package/dist/plugin-sdk/{helpers-DgRMfCnT.js → helpers-CluGKuIV.js} +1 -1
  270. package/dist/plugin-sdk/{image-ops-CcBfoMLW.js → image-ops-CUaLtIFj.js} +1 -1
  271. package/dist/plugin-sdk/index.d.ts +8 -8
  272. package/dist/plugin-sdk/index.js +47 -51
  273. package/dist/plugin-sdk/json-store.js +6 -6
  274. package/dist/plugin-sdk/{login-DpDQyM7r.js → login-DJuHYDiK.js} +3 -3
  275. package/dist/plugin-sdk/{login-qr-COaSAPY5.js → login-qr-CbHL5ayf.js} +3 -3
  276. package/dist/plugin-sdk/{manager-Cqz30lA3.js → manager-oHAvZCT3.js} +7 -7
  277. package/dist/plugin-sdk/{markdown-tables-BOG5sSQQ.js → markdown-tables-Mkx7k92Y.js} +1 -1
  278. package/dist/plugin-sdk/{media-Bu-nJpPs.js → media-CA8sTmVE.js} +4 -4
  279. package/dist/plugin-sdk/{monitor-II_NIq3G.js → monitor-CZrN9pev.js} +51 -55
  280. package/dist/plugin-sdk/{monitor-DL6oEVo8.js → monitor-CmwGqNyV.js} +61 -65
  281. package/dist/plugin-sdk/{openresponses-http-vkHBBpGY.js → openresponses-http-CWOd4war.js} +43 -47
  282. package/dist/plugin-sdk/{optional-runtime-dependency-DEojVNfv.js → optional-runtime-dependency-DKmk9PZa.js} +1 -1
  283. package/dist/plugin-sdk/{outbound-mf2y6KuY.js → outbound-0oN9IfNw.js} +9 -9
  284. package/dist/plugin-sdk/{outbound-attachment-ivAHpWnn.js → outbound-attachment-DdVkqUzE.js} +2 -2
  285. package/dist/plugin-sdk/{pairing-message-CvJ6Qa1Q.d.ts → pairing-message-BMkkS038.d.ts} +2 -2
  286. package/dist/plugin-sdk/{pairing-message-CqYG12t-.js → pairing-message-ClqhfCUk.js} +1 -1
  287. package/dist/plugin-sdk/{pairing-store-D-21Sphe.js → pairing-store-B01mCSct.js} +2 -2
  288. package/dist/plugin-sdk/{pi-model-discovery-B6gD1clF.js → pi-model-discovery-Buz0JC1Y.js} +1 -1
  289. package/dist/plugin-sdk/{pi-model-discovery-runtime-3yDxS3ro.js → pi-model-discovery-runtime-DuwuoteY.js} +2 -2
  290. package/dist/plugin-sdk/{probe-Cyb-DGA3.js → probe--7xtfzMm.js} +3 -3
  291. package/dist/plugin-sdk/{probe-Dlk0Jxpw.js → probe-BFroeK3g.js} +1 -1
  292. package/dist/plugin-sdk/{probe-D8JAILir.js → probe-l_whvGLY.js} +1 -1
  293. package/dist/plugin-sdk/{resolve-channels-zEnvugag.js → probe-xY3Ky0Tx.js} +3 -4
  294. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  295. package/dist/plugin-sdk/{pw-ai-CMplwiwf.js → pw-ai-B0domrii.js} +6 -8
  296. package/dist/plugin-sdk/{qmd-manager-DCUE21Kj.js → qmd-manager-CFFeM4Fl.js} +3 -3
  297. package/dist/plugin-sdk/{query-expansion-Zr9qQixm.js → query-expansion-CAI2kKLQ.js} +1 -1
  298. package/dist/plugin-sdk/{replies-wiI4veI7.js → replies-1macZ1mZ.js} +4 -4
  299. package/dist/plugin-sdk/{resolve-channels-ChWKWtA9.js → resolve-channels-87LZrFk_.js} +2 -2
  300. package/dist/plugin-sdk/resolve-channels-CwB2_019.js +4 -0
  301. package/dist/plugin-sdk/{resolve-outbound-target-bm9RUK5q.js → resolve-outbound-target-BdH6LUoW.js} +2 -2
  302. package/dist/plugin-sdk/{resolve-route-ekGNc6os.js → resolve-route-CkNIKKEW.js} +1 -1
  303. package/dist/plugin-sdk/{resolve-users-BTvjQuui.js → resolve-users-Cxb5wpAQ.js} +1 -1
  304. package/dist/plugin-sdk/{resolve-users-CTzoruIZ.js → resolve-users-V6dHh_2B.js} +2 -2
  305. package/dist/plugin-sdk/{retry-policy-BvlC2SPh.js → retry-policy-9ybIh4Fq.js} +1 -1
  306. package/dist/plugin-sdk/{runtime-ClSakPxR.js → runtime-Dy420wBu.js} +3 -3
  307. package/dist/plugin-sdk/{runtime-dependency-yAWxH4El.js → runtime-dependency-CIw9t7-k.js} +123 -15
  308. package/dist/plugin-sdk/{sandbox-paths-lj7_EVuA.js → sandbox-paths-w64tYl0v.js} +1 -1
  309. package/dist/plugin-sdk/sat-runtime.d.ts +3 -3
  310. package/dist/plugin-sdk/sat-runtime.js +44 -10
  311. package/dist/plugin-sdk/{send-D264hFVb.js → send-2VcOMTN5.js} +9 -9
  312. package/dist/plugin-sdk/{send-CgyS75Av.js → send-BQUtCJFW.js} +10 -10
  313. package/dist/plugin-sdk/{send-D58yEeH4.js → send-DPJIIYAs.js} +6 -6
  314. package/dist/plugin-sdk/{send-C7x6gzSl.js → send-Dqes9tdU.js} +13 -13
  315. package/dist/plugin-sdk/{send-DrAtUGLM.js → send-J4JWKP62.js} +8 -8
  316. package/dist/plugin-sdk/{session-DyMtb5YQ.js → session-C_n2S5ub.js} +3 -3
  317. package/dist/plugin-sdk/{skill-commands-Q80wCyry.js → skill-commands-B7wx9ax8.js} +102 -102
  318. package/dist/plugin-sdk/{slack-C-I6q3NB.js → slack-BouRQG-W.js} +64 -68
  319. package/dist/plugin-sdk/{slack-actions-dGE_t_Un.js → slack-actions-CasHVtiq.js} +20 -21
  320. package/dist/plugin-sdk/slack.d.ts +5 -5
  321. package/dist/plugin-sdk/slack.js +13 -13
  322. package/dist/plugin-sdk/{ssrf-BZG8Ztod.js → ssrf-fG4UHKBw.js} +180 -2
  323. package/dist/plugin-sdk/{sticker-cache-DCrDTYIi.js → sticker-cache-BvGEUas3.js} +3 -3
  324. package/dist/plugin-sdk/{tables-0mhUOh5v.js → tables-CjlQJV4r.js} +2 -2
  325. package/dist/plugin-sdk/{device-pairing-D2Yq-_U6.js → tailscale-status-DwpNdO3Z.js} +104 -2
  326. package/dist/plugin-sdk/{targets-znKHngSk.js → targets-QfP164Dh.js} +2 -2
  327. package/dist/plugin-sdk/{telegram-actions-GBYY8-x9.js → telegram-actions-CwYjV6Db.js} +48 -52
  328. package/dist/plugin-sdk/telegram.d.ts +5 -5
  329. package/dist/plugin-sdk/telegram.js +11 -11
  330. package/dist/plugin-sdk/{thread-bindings.lifecycle-ClzPBK70.js → thread-bindings.lifecycle-DU4iX_Jr.js} +3 -3
  331. package/dist/plugin-sdk/{thread-bindings.state-Ha01nmrq.js → thread-bindings.state-BgYWFjNF.js} +2 -2
  332. package/dist/plugin-sdk/{tmp-fased-dir-C_xfeEN9.d.ts → tmp-fased-dir-BdFQvrvw.d.ts} +2 -2
  333. package/dist/plugin-sdk/{types-DV5TNhMK.d.ts → types-BYDL6dQj.d.ts} +2 -2
  334. package/dist/plugin-sdk/{types-BI2njxWJ.d.ts → types-CLIvQaVg.d.ts} +39 -5
  335. package/dist/plugin-sdk/{types-CBCtqtMn.d.ts → types-DyhXnYUr.d.ts} +1 -1
  336. package/dist/plugin-sdk/{types.plugin-CvUiB3Kh.d.ts → types.plugin-_fbu40Re.d.ts} +8 -5
  337. package/dist/plugin-sdk/{web-CJMfhGFY.js → web-D0yENDve.js} +52 -56
  338. package/dist/plugin-sdk/{whatsapp-actions-0ZbGo5ZV.js → whatsapp-actions-BT2nPLyo.js} +18 -19
  339. package/dist/plugin-sdk/{whatsapp-heartbeat-DGTsuvQ8.js → whatsapp-heartbeat-CiABSZ6G.js} +2 -2
  340. package/dist/plugin-sdk/whatsapp.d.ts +5 -5
  341. package/dist/plugin-sdk/whatsapp.js +14 -14
  342. package/dist/plugin-sdk/{wsl-D5jDUlms.js → wsl-B_ojyEtC.js} +53 -53
  343. package/dist/plugins/bundled-dir.js +3 -3
  344. package/dist/plugins/discovery.js +11 -11
  345. package/dist/plugins/loader.js +13 -13
  346. package/dist/plugins/manifest-registry.js +2 -2
  347. package/dist/plugins/manifest.js +4 -4
  348. package/dist/plugins/path-safety.js +3 -3
  349. package/dist/plugins/runtime/index.js +1 -1
  350. package/dist/plugins/status-cache.js +9 -9
  351. package/dist/plugins/update.js +3 -3
  352. package/dist/plugins/web-search-install-catalog.js +3 -3
  353. package/dist/providers/github-copilot-model-discovery.js +51 -0
  354. package/dist/providers/litellm-models.js +1 -1
  355. package/dist/providers/openai-codex-model-discovery.js +166 -0
  356. package/dist/providers/refresh.js +311 -67
  357. package/dist/providers/registry.js +16 -6
  358. package/dist/providers/runtime-model-catalog.js +250 -0
  359. package/dist/secrets/apply.js +16 -16
  360. package/dist/secrets/audit.js +11 -11
  361. package/dist/secrets/shared.js +9 -9
  362. package/dist/security/scan-paths.js +2 -2
  363. package/dist/shared/config-eval.js +2 -2
  364. package/dist/shared/model-thinking.js +54 -4
  365. package/dist/shared/pid-alive.js +2 -2
  366. package/dist/tasks/standing-orders.js +5 -5
  367. package/dist/tasks/task-flow-registry.js +5 -5
  368. package/dist/tasks/task-registry.js +5 -5
  369. package/dist/tasks/workflow-definitions.js +6 -6
  370. package/dist/telegram/bot-message-context.js +1 -1
  371. package/dist/telegram/token.js +5 -5
  372. package/dist/utils.js +5 -5
  373. package/dist/wallet/local-socket-signer-broker.js +16 -16
  374. package/dist/wallet/providers/embedded-keystore-adapter.js +5 -5
  375. package/dist/wallet/providers/local-socket-signer-adapter.js +2 -2
  376. package/dist/wallet/wallet-approval-auth.js +5 -5
  377. package/dist/wallet/wallet-audit-log.js +5 -5
  378. package/dist/wallet/wallet-custody.js +21 -21
  379. package/dist/wallet/wallet-inbound-events.js +5 -5
  380. package/dist/wallet/wallet-observability.js +5 -5
  381. package/dist/wallet/wallet-policy.js +9 -9
  382. package/dist/wallet/wallet-provider-registry.js +7 -7
  383. package/dist/wallet/wallet-runtime-config.js +3 -3
  384. package/dist/wallet/wallet-secrets-store.js +22 -22
  385. package/dist/wallet/wallet-send-approvals.js +5 -5
  386. package/dist/wallet/wallet-settlement-links.js +5 -5
  387. package/dist/web/accounts.js +3 -3
  388. package/dist/web/auth-store.js +18 -18
  389. package/dist/web/session.js +4 -4
  390. package/dist/wizard/host-security-capability.js +2 -2
  391. package/dist/wizard/onboarding.host-security.js +7 -7
  392. package/dist/wizard/onboarding.js +31 -13
  393. package/dist/wizard/onboarding.wallet.js +44 -44
  394. package/extensions/acpx/package.json +1 -1
  395. package/extensions/bluebubbles/package.json +1 -1
  396. package/extensions/copilot-proxy/package.json +1 -1
  397. package/extensions/diagnostics-otel/package.json +1 -1
  398. package/extensions/fased-federation/package.json +1 -1
  399. package/extensions/google-gemini-cli-auth/package.json +1 -1
  400. package/extensions/imessage/package.json +1 -1
  401. package/extensions/irc/package.json +1 -1
  402. package/extensions/line/package.json +1 -1
  403. package/extensions/llm-task/package.json +1 -1
  404. package/extensions/lobster/package.json +1 -1
  405. package/extensions/matrix/CHANGELOG.md +12 -0
  406. package/extensions/matrix/package.json +1 -1
  407. package/extensions/mattermost/package.json +1 -1
  408. package/extensions/memory-core/package.json +2 -2
  409. package/extensions/memory-lancedb/package.json +1 -1
  410. package/extensions/minimax-portal-auth/package.json +1 -1
  411. package/extensions/msteams/CHANGELOG.md +12 -0
  412. package/extensions/msteams/package.json +1 -1
  413. package/extensions/nextcloud-talk/package.json +1 -1
  414. package/extensions/nostr/CHANGELOG.md +12 -0
  415. package/extensions/nostr/package.json +1 -1
  416. package/extensions/open-prose/package.json +1 -1
  417. package/extensions/sat-mining/package.json +1 -1
  418. package/extensions/signal/package.json +1 -1
  419. package/extensions/synology-chat/package.json +1 -1
  420. package/extensions/tlon/package.json +1 -1
  421. package/extensions/twitch/CHANGELOG.md +12 -0
  422. package/extensions/twitch/package.json +1 -1
  423. package/extensions/voice-call/CHANGELOG.md +12 -0
  424. package/extensions/voice-call/package.json +1 -1
  425. package/extensions/zalo/CHANGELOG.md +12 -0
  426. package/extensions/zalo/package.json +1 -1
  427. package/extensions/zalouser/CHANGELOG.md +12 -0
  428. package/extensions/zalouser/package.json +1 -1
  429. package/package.json +2 -1
  430. package/dist/control-ui/assets/chat-model-ref-B9sWop67.js +0 -2
  431. package/dist/plugin-sdk/ip-C70a-YlD.js +0 -181
  432. package/dist/plugin-sdk/tailscale-status-ClsquRGs.js +0 -104
  433. package/dist/plugin-sdk/wallet-status-CyovJojz.js +0 -11944
  434. package/dist/plugin-sdk/ws-CocpWGhl.js +0 -114
  435. /package/dist/plugin-sdk/{blocks-input-Dcitfh7h.js → blocks-input-Bg-8S2pl.js} +0 -0
  436. /package/dist/plugin-sdk/{channel-activity-Cg1xRoc2.js → channel-activity-DBDMQ3yI.js} +0 -0
  437. /package/dist/plugin-sdk/{channel-core-BOkyXXLa.js → channel-core-CFRs8LPy.js} +0 -0
  438. /package/dist/plugin-sdk/{client-D2N7hqVu.js → client-pI228AVT.js} +0 -0
  439. /package/dist/plugin-sdk/{command-poll-backoff-NAePk3eL.js → command-poll-backoff-yJU83wEq.js} +0 -0
  440. /package/dist/plugin-sdk/{date-time-CE3Uer3C.js → date-time-uUevHscU.js} +0 -0
  441. /package/dist/plugin-sdk/{diagnostic-session-state-HO94DMou.js → diagnostic-session-state-DqgfGYqZ.js} +0 -0
  442. /package/dist/plugin-sdk/{draft-stream-loop-CKyHn8IX.js → draft-stream-loop-CrOPfV3F.js} +0 -0
  443. /package/dist/plugin-sdk/{fetch-Cu-ahkie.js → fetch-BtmoPIlf.js} +0 -0
  444. /package/dist/plugin-sdk/{gateway-registry-DFsoY6C0.js → gateway-registry-DZDsqicG.js} +0 -0
  445. /package/dist/plugin-sdk/{inbound-context-BFnIdcqI.js → inbound-context-DrAcXE0y.js} +0 -0
  446. /package/dist/plugin-sdk/{internal-qo16nNU1.js → internal-CG_nHo-2.js} +0 -0
  447. /package/dist/plugin-sdk/{memory-search-C3C0bD2H.js → memory-search-VFll-AIb.js} +0 -0
  448. /package/dist/plugin-sdk/{pairing-token-N_6Jbt1L.js → pairing-token-Cs3BRKc0.js} +0 -0
  449. /package/dist/plugin-sdk/{path-alias-guards-Dg3gU-MA.js → path-alias-guards-BJZD5JMJ.js} +0 -0
  450. /package/dist/plugin-sdk/{polls-DQrR-qT3.js → polls-DKQXVfJp.js} +0 -0
  451. /package/dist/plugin-sdk/{proxy-7xs_rsnV.js → proxy-DWpYcsvR.js} +0 -0
  452. /package/dist/plugin-sdk/{qmd-scope-D1sSG_Rx.js → qmd-scope-CdX34VCV.js} +0 -0
  453. /package/dist/plugin-sdk/{redact-identifier-Q3tkvxhm.js → redact-identifier-Lt7t3l7S.js} +0 -0
  454. /package/dist/plugin-sdk/{redact-sensitive-url-dPvnFFsK.js → redact-sensitive-url-g-ukZjwA.js} +0 -0
  455. /package/dist/plugin-sdk/{render-Bwu_WxwA.js → render-e7fENCYH.js} +0 -0
  456. /package/dist/plugin-sdk/{reply-prefix-Bqzm6DC1.js → reply-prefix-ClpxvL_w.js} +0 -0
  457. /package/dist/plugin-sdk/{reply-reference-BkbK_DWT.js → reply-reference-Bqk-7HXE.js} +0 -0
  458. /package/dist/plugin-sdk/{secure-random-Bl-AVLVb.js → secure-random-BIkG-k4s.js} +0 -0
  459. /package/dist/plugin-sdk/{shared-clhhbWN3.js → shared-CBgp_GBw.js} +0 -0
  460. /package/dist/plugin-sdk/{target-errors-C_SVKoEv.js → target-errors-Ckufe179.js} +0 -0
  461. /package/dist/plugin-sdk/{targets-BDvvnlph.js → targets-CoMJ1ry1.js} +0 -0
  462. /package/dist/plugin-sdk/{tokens-BvtlOzVP.js → tokens-BbnqfVuu.js} +0 -0
  463. /package/dist/plugin-sdk/{tool-loop-detection-CWphm1k_.js → tool-loop-detection-Bp8bPJLs.js} +0 -0
  464. /package/dist/plugin-sdk/{ui-e020ouhJ.js → ui-Be8cLHIS.js} +0 -0
  465. /package/dist/plugin-sdk/{with-timeout-BYrRAYFV.js → with-timeout-ckWB8rTo.js} +0 -0
@@ -8,7 +8,7 @@ import { canonicalizeMainSessionAlias } from "../config/sessions/main-session.js
8
8
  import { saveSessionStore } from "../config/sessions/store.js";
9
9
  import "../config/sessions.js";
10
10
  import { ensureDir, existsDir, fileExists, isLegacyWhatsAppAuthFile, readSessionStoreJson5, safeReadDir } from "./state-migrations.fs.js";
11
- import fs from "node:fs";
11
+ import syncFs from "node:fs";
12
12
  import os from "node:os";
13
13
  import path from "node:path";
14
14
 
@@ -241,7 +241,7 @@ function removeDirIfEmpty(dir) {
241
241
  return;
242
242
  }
243
243
  try {
244
- fs.rmdirSync(dir);
244
+ syncFs.rmdirSync(dir);
245
245
  } catch {}
246
246
  }
247
247
  function resetAutoMigrateLegacyStateForTest() {
@@ -255,7 +255,7 @@ function resetAutoMigrateLegacyStateDirForTest() {
255
255
  }
256
256
  function resolveSymlinkTarget(linkPath) {
257
257
  try {
258
- const target = fs.readlinkSync(linkPath);
258
+ const target = syncFs.readlinkSync(linkPath);
259
259
  return path.resolve(path.dirname(linkPath), target);
260
260
  } catch {
261
261
  return null;
@@ -266,7 +266,7 @@ function formatStateDirMigration(legacyDir, targetDir) {
266
266
  }
267
267
  function isDirPath(filePath) {
268
268
  try {
269
- return fs.statSync(filePath).isDirectory();
269
+ return syncFs.statSync(filePath).isDirectory();
270
270
  } catch {
271
271
  return false;
272
272
  }
@@ -274,7 +274,7 @@ function isDirPath(filePath) {
274
274
  function isLegacyTreeSymlinkMirror(currentDir, realTargetDir) {
275
275
  let entries;
276
276
  try {
277
- entries = fs.readdirSync(currentDir, { withFileTypes: true });
277
+ entries = syncFs.readdirSync(currentDir, { withFileTypes: true });
278
278
  } catch {
279
279
  return false;
280
280
  }
@@ -285,7 +285,7 @@ function isLegacyTreeSymlinkMirror(currentDir, realTargetDir) {
285
285
  const entryPath = path.join(currentDir, entry.name);
286
286
  let stat;
287
287
  try {
288
- stat = fs.lstatSync(entryPath);
288
+ stat = syncFs.lstatSync(entryPath);
289
289
  } catch {
290
290
  return false;
291
291
  }
@@ -296,7 +296,7 @@ function isLegacyTreeSymlinkMirror(currentDir, realTargetDir) {
296
296
  }
297
297
  let resolvedRealTarget;
298
298
  try {
299
- resolvedRealTarget = fs.realpathSync(resolvedTarget);
299
+ resolvedRealTarget = syncFs.realpathSync(resolvedTarget);
300
300
  } catch {
301
301
  return false;
302
302
  }
@@ -318,7 +318,7 @@ function isLegacyTreeSymlinkMirror(currentDir, realTargetDir) {
318
318
  function isLegacyDirSymlinkMirror(legacyDir, targetDir) {
319
319
  let realTargetDir;
320
320
  try {
321
- realTargetDir = fs.realpathSync(targetDir);
321
+ realTargetDir = syncFs.realpathSync(targetDir);
322
322
  } catch {
323
323
  return false;
324
324
  }
@@ -348,7 +348,7 @@ async function autoMigrateLegacyStateDir(params) {
348
348
  const legacyDirs = resolveLegacyStateDirs(homedir);
349
349
  let legacyDir = legacyDirs.find((dir) => {
350
350
  try {
351
- return fs.existsSync(dir);
351
+ return syncFs.existsSync(dir);
352
352
  } catch {
353
353
  return false;
354
354
  }
@@ -357,7 +357,7 @@ async function autoMigrateLegacyStateDir(params) {
357
357
  const changes = [];
358
358
  let legacyStat = null;
359
359
  try {
360
- legacyStat = legacyDir ? fs.lstatSync(legacyDir) : null;
360
+ legacyStat = legacyDir ? syncFs.lstatSync(legacyDir) : null;
361
361
  } catch {
362
362
  legacyStat = null;
363
363
  }
@@ -401,7 +401,7 @@ async function autoMigrateLegacyStateDir(params) {
401
401
  if (legacyDirs.some((dir) => path.resolve(dir) === path.resolve(legacyTarget))) {
402
402
  legacyDir = legacyTarget;
403
403
  try {
404
- legacyStat = fs.lstatSync(legacyDir);
404
+ legacyStat = syncFs.lstatSync(legacyDir);
405
405
  } catch {
406
406
  legacyStat = null;
407
407
  }
@@ -464,7 +464,7 @@ async function autoMigrateLegacyStateDir(params) {
464
464
  if (!legacyDir) {
465
465
  throw new Error("Legacy state dir not found");
466
466
  }
467
- fs.renameSync(legacyDir, targetDir);
467
+ syncFs.renameSync(legacyDir, targetDir);
468
468
  } catch (err) {
469
469
  warnings.push(`Failed to move legacy state dir (${legacyDir ?? "unknown"} → ${targetDir}): ${String(err)}`);
470
470
  return {
@@ -478,7 +478,7 @@ async function autoMigrateLegacyStateDir(params) {
478
478
  if (!legacyDir) {
479
479
  throw new Error("Legacy state dir not found");
480
480
  }
481
- fs.symlinkSync(targetDir, legacyDir, "dir");
481
+ syncFs.symlinkSync(targetDir, legacyDir, "dir");
482
482
  changes.push(formatStateDirMigration(legacyDir, targetDir));
483
483
  } catch (err) {
484
484
  try {
@@ -486,7 +486,7 @@ async function autoMigrateLegacyStateDir(params) {
486
486
  if (!legacyDir) {
487
487
  throw new Error("Legacy state dir not found", { cause: err });
488
488
  }
489
- fs.symlinkSync(targetDir, legacyDir, "junction");
489
+ syncFs.symlinkSync(targetDir, legacyDir, "junction");
490
490
  changes.push(formatStateDirMigration(legacyDir, targetDir));
491
491
  } else {
492
492
  throw err;
@@ -496,7 +496,7 @@ async function autoMigrateLegacyStateDir(params) {
496
496
  if (!legacyDir) {
497
497
  throw new Error("Legacy state dir not found", { cause: fallbackErr });
498
498
  }
499
- fs.renameSync(targetDir, legacyDir);
499
+ syncFs.renameSync(targetDir, legacyDir);
500
500
  warnings.push(`State dir migration rolled back (failed to link legacy path): ${String(fallbackErr)}`);
501
501
  return {
502
502
  migrated: false,
@@ -682,7 +682,7 @@ async function migrateLegacySessions(detected, now) {
682
682
  continue;
683
683
  }
684
684
  try {
685
- fs.renameSync(from, to);
685
+ syncFs.renameSync(from, to);
686
686
  changes.push(`Moved ${entry.name} → agents/${detected.targetAgentId}/sessions`);
687
687
  } catch (err) {
688
688
  warnings.push(`Failed moving ${from}: ${String(err)}`);
@@ -691,7 +691,7 @@ async function migrateLegacySessions(detected, now) {
691
691
  if (legacyParsed.ok) {
692
692
  try {
693
693
  if (fileExists(detected.sessions.legacyStorePath)) {
694
- fs.rmSync(detected.sessions.legacyStorePath, { force: true });
694
+ syncFs.rmSync(detected.sessions.legacyStorePath, { force: true });
695
695
  }
696
696
  } catch {}
697
697
  }
@@ -700,7 +700,7 @@ async function migrateLegacySessions(detected, now) {
700
700
  if (legacyLeft.length > 0) {
701
701
  const backupDir = `${detected.sessions.legacyDir}.legacy-${now()}`;
702
702
  try {
703
- fs.renameSync(detected.sessions.legacyDir, backupDir);
703
+ syncFs.renameSync(detected.sessions.legacyDir, backupDir);
704
704
  warnings.push(`Left legacy sessions at ${backupDir}`);
705
705
  } catch {}
706
706
  }
@@ -723,11 +723,11 @@ async function migrateLegacyAgentDir(detected, now) {
723
723
  for (const entry of entries) {
724
724
  const from = path.join(detected.agentDir.legacyDir, entry.name);
725
725
  const to = path.join(detected.agentDir.targetDir, entry.name);
726
- if (fs.existsSync(to)) {
726
+ if (syncFs.existsSync(to)) {
727
727
  continue;
728
728
  }
729
729
  try {
730
- fs.renameSync(from, to);
730
+ syncFs.renameSync(from, to);
731
731
  changes.push(`Moved agent file ${entry.name} → agents/${detected.targetAgentId}/agent`);
732
732
  } catch (err) {
733
733
  warnings.push(`Failed moving ${from}: ${String(err)}`);
@@ -737,7 +737,7 @@ async function migrateLegacyAgentDir(detected, now) {
737
737
  if (!emptyDirOrMissing(detected.agentDir.legacyDir)) {
738
738
  const backupDir = path.join(detected.stateDir, "agents", detected.targetAgentId, `agent.legacy-${now()}`);
739
739
  try {
740
- fs.renameSync(detected.agentDir.legacyDir, backupDir);
740
+ syncFs.renameSync(detected.agentDir.legacyDir, backupDir);
741
741
  warnings.push(`Left legacy agent dir at ${backupDir}`);
742
742
  } catch (err) {
743
743
  warnings.push(`Failed relocating legacy agent dir: ${String(err)}`);
@@ -775,7 +775,7 @@ async function migrateLegacyWhatsAppAuth(detected) {
775
775
  continue;
776
776
  }
777
777
  try {
778
- fs.renameSync(from, to);
778
+ syncFs.renameSync(from, to);
779
779
  changes.push(`Moved WhatsApp auth ${entry.name} → whatsapp/default`);
780
780
  } catch (err) {
781
781
  warnings.push(`Failed moving ${from}: ${String(err)}`);
@@ -799,7 +799,7 @@ async function migrateLegacyTelegramPairingAllowFrom(detected) {
799
799
  const targetPath = detected.pairingAllowFrom.targetTelegramPath;
800
800
  try {
801
801
  ensureDir(path.dirname(targetPath));
802
- fs.copyFileSync(legacyPath, targetPath);
802
+ syncFs.copyFileSync(legacyPath, targetPath);
803
803
  changes.push(`Copied Telegram pairing allowFrom → ${targetPath}`);
804
804
  } catch (err) {
805
805
  warnings.push(`Failed migrating Telegram pairing allowFrom (${legacyPath}): ${String(err)}`);
@@ -1,18 +1,18 @@
1
- import fs from "node:fs";
1
+ import syncFs from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/infra/tmp-fased-dir.ts
6
6
  const POSIX_FASED_TMP_DIR = "/tmp/fased";
7
- const TMP_DIR_ACCESS_MODE = fs.constants.W_OK | fs.constants.X_OK;
7
+ const TMP_DIR_ACCESS_MODE = syncFs.constants.W_OK | syncFs.constants.X_OK;
8
8
  function isNodeErrorWithCode(err, code) {
9
9
  return typeof err === "object" && err !== null && "code" in err && err.code === code;
10
10
  }
11
11
  function resolvePreferredFasedAgentTmpDir(options = {}) {
12
- const accessSync = options.accessSync ?? fs.accessSync;
13
- const chmodSync = options.chmodSync ?? fs.chmodSync;
14
- const lstatSync = options.lstatSync ?? fs.lstatSync;
15
- const mkdirSync = options.mkdirSync ?? fs.mkdirSync;
12
+ const accessSync = options.accessSync ?? syncFs.accessSync;
13
+ const chmodSync = options.chmodSync ?? syncFs.chmodSync;
14
+ const lstatSync = options.lstatSync ?? syncFs.lstatSync;
15
+ const mkdirSync = options.mkdirSync ?? syncFs.mkdirSync;
16
16
  const warn = options.warn ?? ((message) => console.warn(message));
17
17
  const getuid = options.getuid ?? (() => {
18
18
  try {
@@ -13,6 +13,17 @@ import fs from "node:fs/promises";
13
13
  import * as tar from "tar";
14
14
 
15
15
  //#region src/infra/update-runner.ts
16
+ async function readControlUiBuildVersion(root) {
17
+ try {
18
+ const parsed = JSON.parse(await fs.readFile(path.join(root, "dist", "control-ui", "version.json"), "utf8"));
19
+ return typeof parsed.version === "string" && parsed.version.trim() ? parsed.version.trim() : null;
20
+ } catch {
21
+ return null;
22
+ }
23
+ }
24
+ async function controlUiBuildMatches(root, expectedVersion) {
25
+ return compareSemverStrings(await readControlUiBuildVersion(root), expectedVersion) === 0;
26
+ }
16
27
  async function readHostedRuntimeMetadata(root) {
17
28
  try {
18
29
  const parsed = JSON.parse(await fs.readFile(path.join(root, ".fased-hosted-runtime.json"), "utf8"));
@@ -435,6 +446,22 @@ async function runHostedArtifactUpdate(params) {
435
446
  reason: "artifact version mismatch"
436
447
  };
437
448
  }
449
+ if (!await controlUiBuildMatches(artifactRoot, params.expectedVersion)) {
450
+ steps.push({
451
+ name: "artifact UI version check",
452
+ command: `verify dashboard build v${params.expectedVersion}`,
453
+ cwd: artifactRoot,
454
+ durationMs: 0,
455
+ exitCode: 1,
456
+ stderrTail: `expected dashboard v${params.expectedVersion}, found ${await readControlUiBuildVersion(artifactRoot) ?? "unknown"}`
457
+ });
458
+ return {
459
+ kind: "error",
460
+ steps,
461
+ reason: "artifact dashboard version mismatch",
462
+ afterVersion: await readPackageVersion(params.pkgRoot)
463
+ };
464
+ }
438
465
  const dependenciesChanged = runtimeDependencyMetaChanged(params.beforeMeta, artifactMeta);
439
466
  steps.push({
440
467
  name: "artifact dependency check",
@@ -756,7 +783,7 @@ async function runHostedLayeredArtifactUpdate(params) {
756
783
  }
757
784
  await fs.symlink(dependencyModules, path.join(artifactRoot, "node_modules"), "dir");
758
785
  const artifactVersion = await readPackageVersion(artifactRoot);
759
- const runtimeShapeReady = compareSemverStrings(artifactVersion, params.expectedVersion) === 0 && await pathExists(path.join(artifactRoot, "fased.mjs")) && await pathExists(path.join(artifactRoot, "node_modules"));
786
+ const runtimeShapeReady = compareSemverStrings(artifactVersion, params.expectedVersion) === 0 && await pathExists(path.join(artifactRoot, "fased.mjs")) && await pathExists(path.join(artifactRoot, "node_modules")) && await controlUiBuildMatches(artifactRoot, params.expectedVersion);
760
787
  if (!runtimeShapeReady) {
761
788
  return {
762
789
  kind: "error",
@@ -903,12 +930,13 @@ async function runHostedReleaseArtifactUpdate(params) {
903
930
  }
904
931
  const artifactRoot = path.join(extractDir, "package");
905
932
  const artifactVersion = await readPackageVersion(artifactRoot);
906
- const runtimeShapeReady = compareSemverStrings(artifactVersion, params.expectedVersion) === 0 && await pathExists(path.join(artifactRoot, "fased.mjs")) && await pathExists(path.join(artifactRoot, "node_modules"));
933
+ const controlUiVersion = await readControlUiBuildVersion(artifactRoot);
934
+ const runtimeShapeReady = compareSemverStrings(artifactVersion, params.expectedVersion) === 0 && await pathExists(path.join(artifactRoot, "fased.mjs")) && await pathExists(path.join(artifactRoot, "node_modules")) && compareSemverStrings(controlUiVersion, params.expectedVersion) === 0;
907
935
  const verifyCommand = `verify checksummed v${params.expectedVersion} runtime shape`;
908
936
  const verifyInfo = startProgress("hosted artifact verify", verifyCommand, artifactRoot);
909
937
  const verifyStarted = Date.now();
910
938
  const runtimeReady = runtimeShapeReady;
911
- const verifyFailure = !runtimeShapeReady ? `expected complete v${params.expectedVersion}, found ${artifactVersion ?? "unknown"}` : "hosted runtime shape verification failed";
939
+ const verifyFailure = !runtimeShapeReady ? `expected complete v${params.expectedVersion}, found runtime ${artifactVersion ?? "unknown"} and dashboard ${controlUiVersion ?? "unknown"}` : "hosted runtime shape verification failed";
912
940
  completeProgress(verifyInfo, {
913
941
  name: "hosted artifact verify",
914
942
  command: verifyCommand,
@@ -1,5 +1,5 @@
1
1
  import { CONFIG_DIR, ensureDir } from "../utils.js";
2
- import fs from "node:fs";
2
+ import syncFs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
5
 
@@ -126,7 +126,7 @@ async function writeWideAreaGatewayZone(opts) {
126
126
  await ensureDir(path.dirname(zonePath));
127
127
  const existing = (() => {
128
128
  try {
129
- return fs.readFileSync(zonePath, "utf-8");
129
+ return syncFs.readFileSync(zonePath, "utf-8");
130
130
  } catch {
131
131
  return null;
132
132
  }
@@ -149,7 +149,7 @@ async function writeWideAreaGatewayZone(opts) {
149
149
  ...opts,
150
150
  serial
151
151
  });
152
- fs.writeFileSync(zonePath, next, "utf-8");
152
+ syncFs.writeFileSync(zonePath, next, "utf-8");
153
153
  return {
154
154
  zonePath,
155
155
  changed: true
package/dist/infra/wsl.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { readFileSync } from "node:fs";
2
- import fs$1 from "node:fs/promises";
2
+ import fs from "node:fs/promises";
3
3
 
4
4
  //#region src/infra/wsl.ts
5
5
  let wslCached = null;
@@ -50,7 +50,7 @@ async function isWSL() {
50
50
  return wslCached;
51
51
  }
52
52
  try {
53
- const release = await fs$1.readFile("/proc/sys/kernel/osrelease", "utf8");
53
+ const release = await fs.readFile("/proc/sys/kernel/osrelease", "utf8");
54
54
  wslCached = release.toLowerCase().includes("microsoft") || release.toLowerCase().includes("wsl");
55
55
  } catch {
56
56
  wslCached = false;