@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.
- package/config/capability-catalog.json +12 -0
- package/dist/acp/client.js +2 -2
- package/dist/acp/secret-file.js +2 -2
- package/dist/agents/agent-scope.js +2 -2
- package/dist/agents/apply-patch.js +8 -8
- package/dist/agents/auth-profiles/paths.js +2 -2
- package/dist/agents/auth-profiles/store.js +2 -2
- package/dist/agents/authenticated-model-catalog.js +28 -0
- package/dist/agents/bash-tools.exec-host-node.js +1 -1
- package/dist/agents/bash-tools.exec.js +1 -1
- package/dist/agents/bash-tools.shared.js +2 -2
- package/dist/agents/cli-credentials.js +4 -4
- package/dist/agents/copilot-dynamic-headers.js +37 -0
- package/dist/agents/current-model-catalog.js +9 -13
- package/dist/agents/docs-path.js +3 -3
- package/dist/agents/embedded-pi-mcp.js +4 -4
- package/dist/agents/identity-avatar.js +3 -3
- package/dist/agents/identity-file.js +2 -2
- package/dist/agents/model-catalog-normalized.js +1 -0
- package/dist/agents/model-catalog-source.js +2 -2
- package/dist/agents/model-catalog.js +1 -1
- package/dist/agents/model-metadata.js +58 -9
- package/dist/agents/openai-codex-app-server.js +499 -0
- package/dist/agents/pi-embedded-runner/compact.js +3 -3
- package/dist/agents/pi-embedded-runner/extra-params.js +168 -79
- package/dist/agents/pi-embedded-runner/model.js +62 -1
- package/dist/agents/pi-embedded-runner/moonshot-stream-wrappers.js +46 -0
- package/dist/agents/pi-embedded-runner/openai-stream-wrappers.js +221 -0
- package/dist/agents/pi-embedded-runner/run/attempt.js +6 -4
- package/dist/agents/pi-embedded-runner/run.js +5 -2
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/agents/pi-embedded-runner.js +1 -1
- package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
- package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
- package/dist/agents/pi-model-discovery.js +6 -6
- package/dist/agents/pi-project-settings.js +3 -3
- package/dist/agents/pi-tools.js +2 -2
- package/dist/agents/sandbox/fs-bridge.js +2 -2
- package/dist/agents/session-dirs.js +4 -4
- package/dist/agents/session-write-lock.js +13 -13
- package/dist/agents/shell-utils.js +5 -5
- package/dist/agents/skills/bundled-dir.js +4 -4
- package/dist/agents/skills/local-loader.js +6 -6
- package/dist/agents/skills/plugin-skills.js +2 -2
- package/dist/agents/skills/workspace.js +13 -13
- package/dist/agents/skills-install-download.js +7 -7
- package/dist/agents/skills-install-plan.js +2 -2
- package/dist/agents/skills-install.js +2 -2
- package/dist/agents/skills-status.js +2 -2
- package/dist/agents/subagent-depth.js +2 -2
- package/dist/agents/system-prompt-params.js +2 -2
- package/dist/agents/tools/discord-actions-messaging.js +1 -1
- package/dist/agents/tools/message-tool.js +1 -1
- package/dist/agents/tools/session-status-tool.js +3 -3
- package/dist/agents/tools/slack-actions.js +1 -1
- package/dist/agents/tools/tts-tool.js +1 -1
- package/dist/agents/workspace.js +22 -22
- package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
- package/dist/auto-reply/reply/agent-runner.js +2 -2
- package/dist/auto-reply/reply/commands-export-session.js +7 -7
- package/dist/auto-reply/reply/commands-models.js +1 -1
- package/dist/auto-reply/reply/directive-handling.impl.js +4 -1
- package/dist/auto-reply/reply/dispatch-acp.js +1 -1
- package/dist/auto-reply/reply/dispatch-from-config.js +1 -1
- package/dist/auto-reply/reply/get-reply-run.js +20 -2
- package/dist/auto-reply/reply/model-selection.js +1 -1
- package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
- package/dist/auto-reply/reply/post-compaction-context.js +3 -3
- package/dist/auto-reply/reply/session-reset-model.js +1 -1
- package/dist/auto-reply/reply/session.js +3 -3
- package/dist/auto-reply/skill-commands.js +3 -3
- package/dist/auto-reply/status.js +7 -7
- package/dist/auto-reply/thinking.js +1 -1
- package/dist/brand.js +1 -1
- package/dist/browser/cdp.helpers.js +2 -2
- package/dist/browser/chrome.executables.js +3 -3
- package/dist/browser/chrome.js +5 -5
- package/dist/browser/chrome.profile-decoration.js +6 -6
- package/dist/browser/extension-relay.js +7 -7
- package/dist/browser/profiles-service.js +2 -2
- package/dist/browser/server-context.js +2 -2
- package/dist/browser/trash.js +4 -4
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/server.js +4 -4
- package/dist/capabilities/catalog.js +3 -3
- package/dist/channels/plugins/catalog.js +3 -3
- package/dist/cli/browser-cli-extension.js +6 -6
- package/dist/cli/command-format.js +2 -2
- package/dist/cli/cron-cli/register.cron-add.js +1 -1
- package/dist/cli/cron-cli/register.cron-simple.js +2 -2
- package/dist/cli/dns-cli.js +9 -9
- package/dist/cli/gateway-cli/dev.js +5 -5
- package/dist/cli/gateway-cli/run.js +2 -2
- package/dist/cli/hooks-cli.js +5 -5
- package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
- package/dist/cli/memory-cli.js +7 -7
- package/dist/cli/nodes-media-utils.js +2 -2
- package/dist/cli/plugins-cli.js +2 -2
- package/dist/cli/program/register.agent.js +1 -1
- package/dist/cli/providers-cli.js +3 -2
- package/dist/cli/secrets-cli.js +3 -3
- package/dist/cli/windows-argv.js +2 -2
- package/dist/commands/agent.js +22 -3
- package/dist/commands/auth-choice.apply.api-providers.js +3 -8
- package/dist/commands/auth-choice.apply.openai.js +13 -7
- package/dist/commands/auth-choice.model-check.js +1 -2
- package/dist/commands/configure.gateway-auth.js +14 -16
- package/dist/commands/dashboard-link.js +3 -3
- package/dist/commands/doctor-config-flow.js +1 -1
- package/dist/commands/doctor-install.js +5 -5
- package/dist/commands/doctor-memory-search.js +2 -2
- package/dist/commands/doctor-platform-notes.js +2 -2
- package/dist/commands/doctor-sandbox.js +2 -2
- package/dist/commands/doctor-state-integrity.js +23 -23
- package/dist/commands/doctor-workspace.js +3 -3
- package/dist/commands/doctor.js +3 -3
- package/dist/commands/hosted-dashboard-probe.js +3 -3
- package/dist/commands/managed-up.js +2 -2
- package/dist/commands/model-picker.js +27 -8
- package/dist/commands/models/list.probe.js +1 -1
- package/dist/commands/models/list.registry.js +13 -17
- package/dist/commands/models/list.status-command.js +2 -2
- package/dist/commands/onboard-auth.config-core.js +1 -1
- package/dist/commands/onboard-auth.config-litellm.js +21 -21
- package/dist/commands/onboard-auth.credentials.js +3 -4
- package/dist/commands/onboard-auth.js +0 -1
- package/dist/commands/onboarding/plugin-install.js +2 -2
- package/dist/commands/openai-codex-model-default.js +28 -5
- package/dist/commands/sessions-cleanup.js +2 -2
- package/dist/commands/signal-install.js +6 -6
- package/dist/commands/status-all/channels.js +2 -2
- package/dist/commands/wallet.js +47 -47
- package/dist/config/cache-utils.js +2 -2
- package/dist/config/includes.js +5 -5
- package/dist/config/io.js +2 -2
- package/dist/config/paths.js +3 -3
- package/dist/config/sat-runtime-ids.js +3 -3
- package/dist/config/sessions/disk-budget.js +6 -6
- package/dist/config/sessions/paths.js +2 -2
- package/dist/config/sessions/store.js +17 -17
- package/dist/config/sessions/transcript.js +4 -4
- package/dist/config/talk.js +2 -2
- package/dist/config/zod-schema.agent-defaults.js +6 -2
- package/dist/config/zod-schema.agent-runtime.js +6 -2
- package/dist/config/zod-schema.core.js +6 -2
- package/dist/control-ui/assets/{app-BKlu6OKz.js → app-D7TXyNRi.js} +1548 -1540
- package/dist/control-ui/assets/chat-model-ref-Djkv93yn.js +2 -0
- package/dist/control-ui/assets/{index-nrFcGMv-.js → index-BmSBom-w.js} +3 -3
- package/dist/control-ui/assets/{providers-BQFrRqym.js → providers-Cc89iMdx.js} +5 -5
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/version.json +1 -0
- package/dist/cron/isolated-agent/run.js +6 -2
- package/dist/cron/service/jobs.js +11 -1
- package/dist/cron/service/store.js +2 -2
- package/dist/cron/store.js +6 -6
- package/dist/daemon/systemd-system.js +5 -5
- package/dist/discord/monitor/gateway-plugin.js +2 -2
- package/dist/discord/monitor/thread-bindings.state.js +2 -2
- package/dist/discord/voice/manager.js +1 -1
- package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
- package/dist/gateway/client.js +4 -4
- package/dist/gateway/control-ui-boot-check.js +6 -6
- package/dist/gateway/control-ui-login.js +7 -7
- package/dist/gateway/control-ui.js +11 -9
- package/dist/gateway/hooks-mapping.js +4 -4
- package/dist/gateway/protocol/schema/agents-models-skills.js +66 -4
- package/dist/gateway/server-discovery.js +2 -2
- package/dist/gateway/server-http.js +4 -4
- package/dist/gateway/server-methods/chat.js +3 -3
- package/dist/gateway/server-methods/models.js +8 -8
- package/dist/gateway/server-methods/sessions.js +8 -8
- package/dist/gateway/server-methods/tts.js +2 -2
- package/dist/gateway/server-methods/usage.js +2 -2
- package/dist/gateway/server-model-catalog.js +3 -0
- package/dist/gateway/server.impl.js +3 -3
- package/dist/gateway/session-compaction-checkpoints.js +4 -4
- package/dist/gateway/session-utils.fs.js +24 -24
- package/dist/gateway/session-utils.js +6 -6
- package/dist/gateway/sessions-patch.js +27 -24
- package/dist/hooks/bundled-dir.js +4 -4
- package/dist/hooks/gmail-setup-utils.js +6 -6
- package/dist/hooks/import-url.js +2 -2
- package/dist/hooks/loader.js +4 -4
- package/dist/hooks/workspace.js +7 -7
- package/dist/infra/archive.js +17 -17
- package/dist/infra/boundary-file-read.js +2 -2
- package/dist/infra/boundary-path.js +15 -15
- package/dist/infra/brew.js +2 -2
- package/dist/infra/control-ui-assets.js +14 -14
- package/dist/infra/device-auth-store.js +8 -8
- package/dist/infra/device-identity.js +8 -8
- package/dist/infra/dotenv.js +2 -2
- package/dist/infra/exec-approvals.js +8 -8
- package/dist/infra/exec-command-resolution.js +4 -4
- package/dist/infra/exec-safe-bin-trust.js +2 -2
- package/dist/infra/fased-root.js +5 -5
- package/dist/infra/fs-safe.js +14 -14
- package/dist/infra/gateway-lock.js +11 -11
- package/dist/infra/git-commit.js +5 -5
- package/dist/infra/git-root.js +4 -4
- package/dist/infra/hosted-runtime-artifact.js +3 -3
- package/dist/infra/is-main.js +2 -2
- package/dist/infra/json-file.js +7 -7
- package/dist/infra/outbound/delivery-queue.js +16 -16
- package/dist/infra/path-env.js +3 -3
- package/dist/infra/ports-lsof.js +4 -4
- package/dist/infra/provider-usage.auth.js +3 -3
- package/dist/infra/safe-open-sync.js +2 -2
- package/dist/infra/session-cost-usage.js +9 -9
- package/dist/infra/shell-env.js +2 -2
- package/dist/infra/state-migrations.fs.js +6 -6
- package/dist/infra/state-migrations.js +23 -23
- package/dist/infra/tmp-fased-dir.js +6 -6
- package/dist/infra/update-runner.js +31 -3
- package/dist/infra/widearea-dns.js +3 -3
- package/dist/infra/wsl.js +2 -2
- package/dist/light-update-status.js +1 -1
- package/dist/line/accounts.js +2 -2
- package/dist/line/download.js +2 -2
- package/dist/logging/config.js +3 -3
- package/dist/logging/logger.js +7 -7
- package/dist/managed/federation.js +3 -3
- package/dist/managed/tunnel.js +3 -3
- package/dist/media/store.js +13 -13
- package/dist/media-understanding/runner.js +3 -3
- package/dist/memory/embeddings.js +2 -2
- package/dist/memory/internal.js +10 -10
- package/dist/memory/inventory.js +19 -2
- package/dist/memory/manager-sync-ops.js +7 -7
- package/dist/memory/repair-executor.js +17 -17
- package/dist/node-host/invoke-system-run-plan.js +8 -8
- package/dist/node-host/invoke.js +2 -2
- package/dist/node-host/runner.js +3 -3
- package/dist/pairing/pairing-store.js +3 -3
- package/dist/plugin-sdk/{accounts-DW9OS5Ll.js → accounts-DzWlKv1U.js} +1 -1
- package/dist/plugin-sdk/{actions-DQUXohRr.js → actions-BplQVLL6.js} +4 -4
- package/dist/plugin-sdk/{active-listener-BZQWZPF7.js → active-listener-x4MLhYUw.js} +1 -1
- package/dist/plugin-sdk/{allow-list-BYeKk0Sy.js → allow-list-DyAxs4yw.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-t4mmHsI2.js → audio-preflight-G8h3Sn8_.js} +43 -47
- package/dist/plugin-sdk/{audit-BZk_6Buw.js → audit-CWknklvI.js} +1 -1
- package/dist/plugin-sdk/{channel-access-CN5HiWdb.js → channel-access-a9Dnfw7-.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-B7Kkvx9K.js → channel-access-configure-CD4QDN5E.js} +1 -1
- package/dist/plugin-sdk/{channel-adapters.discord-IOZP8Cv5.js → channel-adapters.discord-BS4S4Svh.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
- package/dist/plugin-sdk/channel-plugin-common.js +4 -4
- package/dist/plugin-sdk/{chunk-B2ffJ-LR.js → chunk-B8EZkwiT.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-jOdkyP53.js → chunk-items-CEPklxGe.js} +1 -1
- package/dist/plugin-sdk/command-status.d.ts +2 -2
- package/dist/plugin-sdk/command-status.js +43 -47
- package/dist/plugin-sdk/{commands-registry-BWb4NcfW.js → commands-registry-BfEa4tFA.js} +2 -2
- package/dist/plugin-sdk/{common-C4XrB73N.js → common-CbfckC19.js} +1 -1
- package/dist/plugin-sdk/{config-rySyVtKs.js → config-Bt5GhnA-.js} +105 -73
- package/dist/plugin-sdk/{config-schema-BaybPPrJ.js → config-schema-B9DKr6J5.js} +96239 -81587
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/device-pair.js +2 -3
- package/dist/plugin-sdk/{diagnostic-Dfn1iERm.js → diagnostic-DLL_zekv.js} +3 -3
- package/dist/plugin-sdk/{directory-live-DatqU-eS.js → directory-live-CSuYxdwk.js} +1 -1
- package/dist/plugin-sdk/{directory-live-ClwN5KKq.js → directory-live-Dw7ZgC9_.js} +1 -1
- package/dist/plugin-sdk/discord.d.ts +5 -5
- package/dist/plugin-sdk/discord.js +31 -32
- package/dist/plugin-sdk/{draft-stream-controls-D4Tb_iS_.js → draft-stream-controls-BqchW1vi.js} +1 -1
- package/dist/plugin-sdk/{fetch-guard-BuYrl6q2.js → fetch-guard-CeG6u6ld.js} +1 -1
- package/dist/plugin-sdk/{filesystem-manager-B9DDPgfU.js → filesystem-manager-BGGGrkiN.js} +2 -2
- package/dist/plugin-sdk/{fs-safe-BG-VzVkL.js → fs-safe-xBqok6yR.js} +1 -1
- package/dist/plugin-sdk/{group-mentions-DLOOve8d.d.ts → group-mentions-BHRff6j8.d.ts} +1 -1
- package/dist/plugin-sdk/{guilds-BeT3iHHJ.js → guilds-CDhRIX57.js} +1 -1
- package/dist/plugin-sdk/{handle-action-CGF-Qnp0.js → handle-action-DbzZFYnG.js} +24 -25
- package/dist/plugin-sdk/{helpers-DgRMfCnT.js → helpers-CluGKuIV.js} +1 -1
- package/dist/plugin-sdk/{image-ops-CcBfoMLW.js → image-ops-CUaLtIFj.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +8 -8
- package/dist/plugin-sdk/index.js +47 -51
- package/dist/plugin-sdk/json-store.js +6 -6
- package/dist/plugin-sdk/{login-DpDQyM7r.js → login-DJuHYDiK.js} +3 -3
- package/dist/plugin-sdk/{login-qr-COaSAPY5.js → login-qr-CbHL5ayf.js} +3 -3
- package/dist/plugin-sdk/{manager-Cqz30lA3.js → manager-oHAvZCT3.js} +7 -7
- package/dist/plugin-sdk/{markdown-tables-BOG5sSQQ.js → markdown-tables-Mkx7k92Y.js} +1 -1
- package/dist/plugin-sdk/{media-Bu-nJpPs.js → media-CA8sTmVE.js} +4 -4
- package/dist/plugin-sdk/{monitor-II_NIq3G.js → monitor-CZrN9pev.js} +51 -55
- package/dist/plugin-sdk/{monitor-DL6oEVo8.js → monitor-CmwGqNyV.js} +61 -65
- package/dist/plugin-sdk/{openresponses-http-vkHBBpGY.js → openresponses-http-CWOd4war.js} +43 -47
- package/dist/plugin-sdk/{optional-runtime-dependency-DEojVNfv.js → optional-runtime-dependency-DKmk9PZa.js} +1 -1
- package/dist/plugin-sdk/{outbound-mf2y6KuY.js → outbound-0oN9IfNw.js} +9 -9
- package/dist/plugin-sdk/{outbound-attachment-ivAHpWnn.js → outbound-attachment-DdVkqUzE.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-CvJ6Qa1Q.d.ts → pairing-message-BMkkS038.d.ts} +2 -2
- package/dist/plugin-sdk/{pairing-message-CqYG12t-.js → pairing-message-ClqhfCUk.js} +1 -1
- package/dist/plugin-sdk/{pairing-store-D-21Sphe.js → pairing-store-B01mCSct.js} +2 -2
- package/dist/plugin-sdk/{pi-model-discovery-B6gD1clF.js → pi-model-discovery-Buz0JC1Y.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-3yDxS3ro.js → pi-model-discovery-runtime-DuwuoteY.js} +2 -2
- package/dist/plugin-sdk/{probe-Cyb-DGA3.js → probe--7xtfzMm.js} +3 -3
- package/dist/plugin-sdk/{probe-Dlk0Jxpw.js → probe-BFroeK3g.js} +1 -1
- package/dist/plugin-sdk/{probe-D8JAILir.js → probe-l_whvGLY.js} +1 -1
- package/dist/plugin-sdk/{resolve-channels-zEnvugag.js → probe-xY3Ky0Tx.js} +3 -4
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
- package/dist/plugin-sdk/{pw-ai-CMplwiwf.js → pw-ai-B0domrii.js} +6 -8
- package/dist/plugin-sdk/{qmd-manager-DCUE21Kj.js → qmd-manager-CFFeM4Fl.js} +3 -3
- package/dist/plugin-sdk/{query-expansion-Zr9qQixm.js → query-expansion-CAI2kKLQ.js} +1 -1
- package/dist/plugin-sdk/{replies-wiI4veI7.js → replies-1macZ1mZ.js} +4 -4
- package/dist/plugin-sdk/{resolve-channels-ChWKWtA9.js → resolve-channels-87LZrFk_.js} +2 -2
- package/dist/plugin-sdk/resolve-channels-CwB2_019.js +4 -0
- package/dist/plugin-sdk/{resolve-outbound-target-bm9RUK5q.js → resolve-outbound-target-BdH6LUoW.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-ekGNc6os.js → resolve-route-CkNIKKEW.js} +1 -1
- package/dist/plugin-sdk/{resolve-users-BTvjQuui.js → resolve-users-Cxb5wpAQ.js} +1 -1
- package/dist/plugin-sdk/{resolve-users-CTzoruIZ.js → resolve-users-V6dHh_2B.js} +2 -2
- package/dist/plugin-sdk/{retry-policy-BvlC2SPh.js → retry-policy-9ybIh4Fq.js} +1 -1
- package/dist/plugin-sdk/{runtime-ClSakPxR.js → runtime-Dy420wBu.js} +3 -3
- package/dist/plugin-sdk/{runtime-dependency-yAWxH4El.js → runtime-dependency-CIw9t7-k.js} +123 -15
- package/dist/plugin-sdk/{sandbox-paths-lj7_EVuA.js → sandbox-paths-w64tYl0v.js} +1 -1
- package/dist/plugin-sdk/sat-runtime.d.ts +3 -3
- package/dist/plugin-sdk/sat-runtime.js +44 -10
- package/dist/plugin-sdk/{send-D264hFVb.js → send-2VcOMTN5.js} +9 -9
- package/dist/plugin-sdk/{send-CgyS75Av.js → send-BQUtCJFW.js} +10 -10
- package/dist/plugin-sdk/{send-D58yEeH4.js → send-DPJIIYAs.js} +6 -6
- package/dist/plugin-sdk/{send-C7x6gzSl.js → send-Dqes9tdU.js} +13 -13
- package/dist/plugin-sdk/{send-DrAtUGLM.js → send-J4JWKP62.js} +8 -8
- package/dist/plugin-sdk/{session-DyMtb5YQ.js → session-C_n2S5ub.js} +3 -3
- package/dist/plugin-sdk/{skill-commands-Q80wCyry.js → skill-commands-B7wx9ax8.js} +102 -102
- package/dist/plugin-sdk/{slack-C-I6q3NB.js → slack-BouRQG-W.js} +64 -68
- package/dist/plugin-sdk/{slack-actions-dGE_t_Un.js → slack-actions-CasHVtiq.js} +20 -21
- package/dist/plugin-sdk/slack.d.ts +5 -5
- package/dist/plugin-sdk/slack.js +13 -13
- package/dist/plugin-sdk/{ssrf-BZG8Ztod.js → ssrf-fG4UHKBw.js} +180 -2
- package/dist/plugin-sdk/{sticker-cache-DCrDTYIi.js → sticker-cache-BvGEUas3.js} +3 -3
- package/dist/plugin-sdk/{tables-0mhUOh5v.js → tables-CjlQJV4r.js} +2 -2
- package/dist/plugin-sdk/{device-pairing-D2Yq-_U6.js → tailscale-status-DwpNdO3Z.js} +104 -2
- package/dist/plugin-sdk/{targets-znKHngSk.js → targets-QfP164Dh.js} +2 -2
- package/dist/plugin-sdk/{telegram-actions-GBYY8-x9.js → telegram-actions-CwYjV6Db.js} +48 -52
- package/dist/plugin-sdk/telegram.d.ts +5 -5
- package/dist/plugin-sdk/telegram.js +11 -11
- package/dist/plugin-sdk/{thread-bindings.lifecycle-ClzPBK70.js → thread-bindings.lifecycle-DU4iX_Jr.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-Ha01nmrq.js → thread-bindings.state-BgYWFjNF.js} +2 -2
- package/dist/plugin-sdk/{tmp-fased-dir-C_xfeEN9.d.ts → tmp-fased-dir-BdFQvrvw.d.ts} +2 -2
- package/dist/plugin-sdk/{types-DV5TNhMK.d.ts → types-BYDL6dQj.d.ts} +2 -2
- package/dist/plugin-sdk/{types-BI2njxWJ.d.ts → types-CLIvQaVg.d.ts} +39 -5
- package/dist/plugin-sdk/{types-CBCtqtMn.d.ts → types-DyhXnYUr.d.ts} +1 -1
- package/dist/plugin-sdk/{types.plugin-CvUiB3Kh.d.ts → types.plugin-_fbu40Re.d.ts} +8 -5
- package/dist/plugin-sdk/{web-CJMfhGFY.js → web-D0yENDve.js} +52 -56
- package/dist/plugin-sdk/{whatsapp-actions-0ZbGo5ZV.js → whatsapp-actions-BT2nPLyo.js} +18 -19
- package/dist/plugin-sdk/{whatsapp-heartbeat-DGTsuvQ8.js → whatsapp-heartbeat-CiABSZ6G.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +5 -5
- package/dist/plugin-sdk/whatsapp.js +14 -14
- package/dist/plugin-sdk/{wsl-D5jDUlms.js → wsl-B_ojyEtC.js} +53 -53
- package/dist/plugins/bundled-dir.js +3 -3
- package/dist/plugins/discovery.js +11 -11
- package/dist/plugins/loader.js +13 -13
- package/dist/plugins/manifest-registry.js +2 -2
- package/dist/plugins/manifest.js +4 -4
- package/dist/plugins/path-safety.js +3 -3
- package/dist/plugins/runtime/index.js +1 -1
- package/dist/plugins/status-cache.js +9 -9
- package/dist/plugins/update.js +3 -3
- package/dist/plugins/web-search-install-catalog.js +3 -3
- package/dist/providers/github-copilot-model-discovery.js +51 -0
- package/dist/providers/litellm-models.js +1 -1
- package/dist/providers/openai-codex-model-discovery.js +166 -0
- package/dist/providers/refresh.js +311 -67
- package/dist/providers/registry.js +16 -6
- package/dist/providers/runtime-model-catalog.js +250 -0
- package/dist/secrets/apply.js +16 -16
- package/dist/secrets/audit.js +11 -11
- package/dist/secrets/shared.js +9 -9
- package/dist/security/scan-paths.js +2 -2
- package/dist/shared/config-eval.js +2 -2
- package/dist/shared/model-thinking.js +54 -4
- package/dist/shared/pid-alive.js +2 -2
- package/dist/tasks/standing-orders.js +5 -5
- package/dist/tasks/task-flow-registry.js +5 -5
- package/dist/tasks/task-registry.js +5 -5
- package/dist/tasks/workflow-definitions.js +6 -6
- package/dist/telegram/bot-message-context.js +1 -1
- package/dist/telegram/token.js +5 -5
- package/dist/utils.js +5 -5
- package/dist/wallet/local-socket-signer-broker.js +16 -16
- package/dist/wallet/providers/embedded-keystore-adapter.js +5 -5
- package/dist/wallet/providers/local-socket-signer-adapter.js +2 -2
- package/dist/wallet/wallet-approval-auth.js +5 -5
- package/dist/wallet/wallet-audit-log.js +5 -5
- package/dist/wallet/wallet-custody.js +21 -21
- package/dist/wallet/wallet-inbound-events.js +5 -5
- package/dist/wallet/wallet-observability.js +5 -5
- package/dist/wallet/wallet-policy.js +9 -9
- package/dist/wallet/wallet-provider-registry.js +7 -7
- package/dist/wallet/wallet-runtime-config.js +3 -3
- package/dist/wallet/wallet-secrets-store.js +22 -22
- package/dist/wallet/wallet-send-approvals.js +5 -5
- package/dist/wallet/wallet-settlement-links.js +5 -5
- package/dist/web/accounts.js +3 -3
- package/dist/web/auth-store.js +18 -18
- package/dist/web/session.js +4 -4
- package/dist/wizard/host-security-capability.js +2 -2
- package/dist/wizard/onboarding.host-security.js +7 -7
- package/dist/wizard/onboarding.js +31 -13
- package/dist/wizard/onboarding.wallet.js +44 -44
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +2 -2
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +2 -1
- package/dist/control-ui/assets/chat-model-ref-B9sWop67.js +0 -2
- package/dist/plugin-sdk/ip-C70a-YlD.js +0 -181
- package/dist/plugin-sdk/tailscale-status-ClsquRGs.js +0 -104
- package/dist/plugin-sdk/wallet-status-CyovJojz.js +0 -11944
- package/dist/plugin-sdk/ws-CocpWGhl.js +0 -114
- /package/dist/plugin-sdk/{blocks-input-Dcitfh7h.js → blocks-input-Bg-8S2pl.js} +0 -0
- /package/dist/plugin-sdk/{channel-activity-Cg1xRoc2.js → channel-activity-DBDMQ3yI.js} +0 -0
- /package/dist/plugin-sdk/{channel-core-BOkyXXLa.js → channel-core-CFRs8LPy.js} +0 -0
- /package/dist/plugin-sdk/{client-D2N7hqVu.js → client-pI228AVT.js} +0 -0
- /package/dist/plugin-sdk/{command-poll-backoff-NAePk3eL.js → command-poll-backoff-yJU83wEq.js} +0 -0
- /package/dist/plugin-sdk/{date-time-CE3Uer3C.js → date-time-uUevHscU.js} +0 -0
- /package/dist/plugin-sdk/{diagnostic-session-state-HO94DMou.js → diagnostic-session-state-DqgfGYqZ.js} +0 -0
- /package/dist/plugin-sdk/{draft-stream-loop-CKyHn8IX.js → draft-stream-loop-CrOPfV3F.js} +0 -0
- /package/dist/plugin-sdk/{fetch-Cu-ahkie.js → fetch-BtmoPIlf.js} +0 -0
- /package/dist/plugin-sdk/{gateway-registry-DFsoY6C0.js → gateway-registry-DZDsqicG.js} +0 -0
- /package/dist/plugin-sdk/{inbound-context-BFnIdcqI.js → inbound-context-DrAcXE0y.js} +0 -0
- /package/dist/plugin-sdk/{internal-qo16nNU1.js → internal-CG_nHo-2.js} +0 -0
- /package/dist/plugin-sdk/{memory-search-C3C0bD2H.js → memory-search-VFll-AIb.js} +0 -0
- /package/dist/plugin-sdk/{pairing-token-N_6Jbt1L.js → pairing-token-Cs3BRKc0.js} +0 -0
- /package/dist/plugin-sdk/{path-alias-guards-Dg3gU-MA.js → path-alias-guards-BJZD5JMJ.js} +0 -0
- /package/dist/plugin-sdk/{polls-DQrR-qT3.js → polls-DKQXVfJp.js} +0 -0
- /package/dist/plugin-sdk/{proxy-7xs_rsnV.js → proxy-DWpYcsvR.js} +0 -0
- /package/dist/plugin-sdk/{qmd-scope-D1sSG_Rx.js → qmd-scope-CdX34VCV.js} +0 -0
- /package/dist/plugin-sdk/{redact-identifier-Q3tkvxhm.js → redact-identifier-Lt7t3l7S.js} +0 -0
- /package/dist/plugin-sdk/{redact-sensitive-url-dPvnFFsK.js → redact-sensitive-url-g-ukZjwA.js} +0 -0
- /package/dist/plugin-sdk/{render-Bwu_WxwA.js → render-e7fENCYH.js} +0 -0
- /package/dist/plugin-sdk/{reply-prefix-Bqzm6DC1.js → reply-prefix-ClpxvL_w.js} +0 -0
- /package/dist/plugin-sdk/{reply-reference-BkbK_DWT.js → reply-reference-Bqk-7HXE.js} +0 -0
- /package/dist/plugin-sdk/{secure-random-Bl-AVLVb.js → secure-random-BIkG-k4s.js} +0 -0
- /package/dist/plugin-sdk/{shared-clhhbWN3.js → shared-CBgp_GBw.js} +0 -0
- /package/dist/plugin-sdk/{target-errors-C_SVKoEv.js → target-errors-Ckufe179.js} +0 -0
- /package/dist/plugin-sdk/{targets-BDvvnlph.js → targets-CoMJ1ry1.js} +0 -0
- /package/dist/plugin-sdk/{tokens-BvtlOzVP.js → tokens-BbnqfVuu.js} +0 -0
- /package/dist/plugin-sdk/{tool-loop-detection-CWphm1k_.js → tool-loop-detection-Bp8bPJLs.js} +0 -0
- /package/dist/plugin-sdk/{ui-e020ouhJ.js → ui-Be8cLHIS.js} +0 -0
- /package/dist/plugin-sdk/{with-timeout-BYrRAYFV.js → with-timeout-ckWB8rTo.js} +0 -0
|
@@ -6,7 +6,7 @@ import { walletDiagnosticErrorMessage } from "./wallet-redaction.js";
|
|
|
6
6
|
import { resolveWalletProviderId } from "./wallet-provider-resolver.js";
|
|
7
7
|
import { consumeWalletApprovalGrant, resolveWalletApprovalAuthMode } from "./wallet-approval-auth.js";
|
|
8
8
|
import { lockLocalSignerCustody, unlockLocalSignerCustody } from "./local-socket-signer-custody.js";
|
|
9
|
-
import
|
|
9
|
+
import syncFs from "node:fs";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
|
|
12
12
|
|
|
@@ -164,33 +164,33 @@ function resolveCustodyShareStatePath(walletId, env = process.env) {
|
|
|
164
164
|
}
|
|
165
165
|
function locateCustodyStatePath(walletId, env = process.env) {
|
|
166
166
|
const scopedPath = resolveCustodyStatePath(walletId, env);
|
|
167
|
-
if (
|
|
167
|
+
if (syncFs.existsSync(scopedPath)) {
|
|
168
168
|
return scopedPath;
|
|
169
169
|
}
|
|
170
170
|
const legacyPath = resolveLegacyCustodyStatePath(env);
|
|
171
|
-
return
|
|
171
|
+
return syncFs.existsSync(legacyPath) ? legacyPath : scopedPath;
|
|
172
172
|
}
|
|
173
173
|
function locateCustodyShareStatePath(walletId, env = process.env) {
|
|
174
174
|
const scopedPath = resolveCustodyShareStatePath(walletId, env);
|
|
175
|
-
if (
|
|
175
|
+
if (syncFs.existsSync(scopedPath)) {
|
|
176
176
|
return scopedPath;
|
|
177
177
|
}
|
|
178
178
|
const legacyPath = resolveLegacyCustodyShareStatePath(env);
|
|
179
|
-
return
|
|
179
|
+
return syncFs.existsSync(legacyPath) ? legacyPath : scopedPath;
|
|
180
180
|
}
|
|
181
181
|
function listCustodyStateTargets(env = process.env) {
|
|
182
182
|
const walletPaths = ensureWalletStateDir(env);
|
|
183
183
|
const custodyRoot = path.join(walletPaths.rootDir, "custody");
|
|
184
184
|
const targets = new Set();
|
|
185
|
-
if (
|
|
186
|
-
for (const entry of
|
|
185
|
+
if (syncFs.existsSync(custodyRoot)) {
|
|
186
|
+
for (const entry of syncFs.readdirSync(custodyRoot, { withFileTypes: true })) {
|
|
187
187
|
if (entry.isDirectory() && entry.name.trim()) {
|
|
188
188
|
targets.add(entry.name.trim());
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
const out = [...targets];
|
|
193
|
-
if (
|
|
193
|
+
if (syncFs.existsSync(resolveLegacyCustodyStatePath(env)) || out.length === 0) {
|
|
194
194
|
out.push(undefined);
|
|
195
195
|
}
|
|
196
196
|
return out;
|
|
@@ -525,11 +525,11 @@ function resolveWalletCustodyScope(params) {
|
|
|
525
525
|
}
|
|
526
526
|
function loadShareState(walletId, env = process.env) {
|
|
527
527
|
const filePath = locateCustodyShareStatePath(walletId, env);
|
|
528
|
-
if (!
|
|
528
|
+
if (!syncFs.existsSync(filePath)) {
|
|
529
529
|
return null;
|
|
530
530
|
}
|
|
531
531
|
try {
|
|
532
|
-
const parsed = JSON.parse(
|
|
532
|
+
const parsed = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
|
|
533
533
|
if (parsed.version === 1 && parsed.scheme === "xor-3of3-v1" && typeof parsed.secretBytes === "number" && parsed.secretBytes > 0 && typeof parsed.hotShare === "string" && typeof parsed.coldShare === "string" && typeof parsed.deviceShareHash === "string" && typeof parsed.secretChecksum === "string" && typeof parsed.createdAt === "string" && typeof parsed.updatedAt === "string") {
|
|
534
534
|
const hot = decodeBase64Share(parsed.hotShare);
|
|
535
535
|
const cold = decodeBase64Share(parsed.coldShare);
|
|
@@ -596,16 +596,16 @@ function loadShareState(walletId, env = process.env) {
|
|
|
596
596
|
}
|
|
597
597
|
function saveShareState(state, walletId, env = process.env) {
|
|
598
598
|
const filePath = resolveCustodyShareStatePath(walletId, env);
|
|
599
|
-
|
|
599
|
+
syncFs.mkdirSync(path.dirname(filePath), {
|
|
600
600
|
recursive: true,
|
|
601
601
|
mode: 448
|
|
602
602
|
});
|
|
603
|
-
|
|
603
|
+
syncFs.writeFileSync(filePath, `${JSON.stringify(state, null, 2)}\n`, {
|
|
604
604
|
encoding: "utf8",
|
|
605
605
|
mode: 384
|
|
606
606
|
});
|
|
607
607
|
try {
|
|
608
|
-
|
|
608
|
+
syncFs.chmodSync(filePath, 384);
|
|
609
609
|
} catch {}
|
|
610
610
|
}
|
|
611
611
|
function deleteWalletCustodyCeremony(params) {
|
|
@@ -620,11 +620,11 @@ function deleteWalletCustodyCeremony(params) {
|
|
|
620
620
|
role: "vault"
|
|
621
621
|
};
|
|
622
622
|
const statePath = locateCustodyShareStatePath(scope.walletId, env);
|
|
623
|
-
const existed =
|
|
623
|
+
const existed = syncFs.existsSync(statePath);
|
|
624
624
|
if (existed) {
|
|
625
|
-
|
|
625
|
+
syncFs.rmSync(statePath, { force: true });
|
|
626
626
|
try {
|
|
627
|
-
|
|
627
|
+
syncFs.rmdirSync(path.dirname(statePath));
|
|
628
628
|
} catch {}
|
|
629
629
|
}
|
|
630
630
|
return {
|
|
@@ -1015,14 +1015,14 @@ function revokeWalletCustodyDevice(params) {
|
|
|
1015
1015
|
}
|
|
1016
1016
|
function loadState(walletId, env = process.env) {
|
|
1017
1017
|
const filePath = locateCustodyStatePath(walletId, env);
|
|
1018
|
-
if (!
|
|
1018
|
+
if (!syncFs.existsSync(filePath)) {
|
|
1019
1019
|
return {
|
|
1020
1020
|
version: 1,
|
|
1021
1021
|
unlockSessions: []
|
|
1022
1022
|
};
|
|
1023
1023
|
}
|
|
1024
1024
|
try {
|
|
1025
|
-
const parsed = JSON.parse(
|
|
1025
|
+
const parsed = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
|
|
1026
1026
|
if (parsed.version !== 1 || !Array.isArray(parsed.unlockSessions)) {
|
|
1027
1027
|
return {
|
|
1028
1028
|
version: 1,
|
|
@@ -1065,16 +1065,16 @@ function loadState(walletId, env = process.env) {
|
|
|
1065
1065
|
}
|
|
1066
1066
|
function saveState(state, walletId, env = process.env) {
|
|
1067
1067
|
const filePath = resolveCustodyStatePath(walletId, env);
|
|
1068
|
-
|
|
1068
|
+
syncFs.mkdirSync(path.dirname(filePath), {
|
|
1069
1069
|
recursive: true,
|
|
1070
1070
|
mode: 448
|
|
1071
1071
|
});
|
|
1072
|
-
|
|
1072
|
+
syncFs.writeFileSync(filePath, `${JSON.stringify(state, null, 2)}\n`, {
|
|
1073
1073
|
encoding: "utf8",
|
|
1074
1074
|
mode: 384
|
|
1075
1075
|
});
|
|
1076
1076
|
try {
|
|
1077
|
-
|
|
1077
|
+
syncFs.chmodSync(filePath, 384);
|
|
1078
1078
|
} catch {}
|
|
1079
1079
|
}
|
|
1080
1080
|
function pruneState(state) {
|
|
@@ -4,7 +4,7 @@ import { buildWalletProviderCapabilityMatrix, providerSupportsChainOperation } f
|
|
|
4
4
|
import { walletDiagnosticErrorString } from "./wallet-redaction.js";
|
|
5
5
|
import { createWalletProviderAdapter, resolveWalletProviderId } from "./wallet-provider-resolver.js";
|
|
6
6
|
import { appendWalletAuditEntry, readWalletAuditEntries } from "./wallet-audit-log.js";
|
|
7
|
-
import
|
|
7
|
+
import syncFs from "node:fs";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import { randomBytes } from "node:crypto";
|
|
10
10
|
|
|
@@ -174,11 +174,11 @@ function normalizeLedger(raw) {
|
|
|
174
174
|
}
|
|
175
175
|
function readLedger(env = process.env) {
|
|
176
176
|
const filePath = inboundLedgerPath(env);
|
|
177
|
-
if (!
|
|
177
|
+
if (!syncFs.existsSync(filePath)) {
|
|
178
178
|
return defaultLedger();
|
|
179
179
|
}
|
|
180
180
|
try {
|
|
181
|
-
const parsed = JSON.parse(
|
|
181
|
+
const parsed = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
|
|
182
182
|
return normalizeLedger(parsed);
|
|
183
183
|
} catch {
|
|
184
184
|
return defaultLedger();
|
|
@@ -191,12 +191,12 @@ function writeLedger(ledger, env = process.env) {
|
|
|
191
191
|
version: 1,
|
|
192
192
|
updatedAt: nowIso()
|
|
193
193
|
};
|
|
194
|
-
|
|
194
|
+
syncFs.writeFileSync(filePath, `${JSON.stringify(payload, null, 2)}\n`, {
|
|
195
195
|
encoding: "utf8",
|
|
196
196
|
mode: 384
|
|
197
197
|
});
|
|
198
198
|
try {
|
|
199
|
-
|
|
199
|
+
syncFs.chmodSync(filePath, 384);
|
|
200
200
|
} catch {}
|
|
201
201
|
}
|
|
202
202
|
function findWalletById(env, walletId) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ensureWalletStateDir } from "./wallet-runtime-config.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
|
|
4
4
|
//#region src/wallet/wallet-observability.ts
|
|
5
5
|
const OBSERVABILITY_FILENAME = "observability.v1.json";
|
|
@@ -37,11 +37,11 @@ function sanitizeBucket(input) {
|
|
|
37
37
|
}
|
|
38
38
|
function readSnapshot(env) {
|
|
39
39
|
const file = observabilityPath(env);
|
|
40
|
-
if (!
|
|
40
|
+
if (!syncFs.existsSync(file)) {
|
|
41
41
|
return makeDefaultSnapshot();
|
|
42
42
|
}
|
|
43
43
|
try {
|
|
44
|
-
const parsed = JSON.parse(
|
|
44
|
+
const parsed = JSON.parse(syncFs.readFileSync(file, "utf8"));
|
|
45
45
|
if (parsed?.version !== 1) {
|
|
46
46
|
return makeDefaultSnapshot();
|
|
47
47
|
}
|
|
@@ -60,12 +60,12 @@ function readSnapshot(env) {
|
|
|
60
60
|
}
|
|
61
61
|
function writeSnapshot(env, snapshot) {
|
|
62
62
|
const file = observabilityPath(env);
|
|
63
|
-
|
|
63
|
+
syncFs.writeFileSync(file, `${JSON.stringify(snapshot, null, 2)}\n`, {
|
|
64
64
|
mode: 384,
|
|
65
65
|
encoding: "utf8"
|
|
66
66
|
});
|
|
67
67
|
try {
|
|
68
|
-
|
|
68
|
+
syncFs.chmodSync(file, 384);
|
|
69
69
|
} catch {}
|
|
70
70
|
}
|
|
71
71
|
function incrementWalletObservabilityCounter(params) {
|
|
@@ -2,7 +2,7 @@ import { ensureWalletStateDir, resolveWalletRuntimeConfig } from "./wallet-runti
|
|
|
2
2
|
import { readWalletProviderRegistry, resolveWalletUserRole } from "./wallet-provider-registry.js";
|
|
3
3
|
import { assertValidSolanaAddress } from "./solana-address.js";
|
|
4
4
|
import { tryResolveSatRuntimeIds } from "../config/sat-runtime-ids.js";
|
|
5
|
-
import
|
|
5
|
+
import syncFs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
|
8
8
|
//#region src/wallet/wallet-policy.ts
|
|
@@ -51,11 +51,11 @@ function normalizeWalletUsageBucket(raw) {
|
|
|
51
51
|
}
|
|
52
52
|
function loadLedger(paths) {
|
|
53
53
|
const fallback = defaultWalletUsageLedger();
|
|
54
|
-
if (!
|
|
54
|
+
if (!syncFs.existsSync(paths.dailyUsagePath)) {
|
|
55
55
|
return fallback;
|
|
56
56
|
}
|
|
57
57
|
try {
|
|
58
|
-
const raw =
|
|
58
|
+
const raw = syncFs.readFileSync(paths.dailyUsagePath, "utf8");
|
|
59
59
|
const parsed = JSON.parse(raw);
|
|
60
60
|
if (parsed && parsed.version === 2 && typeof parsed.date === "string") {
|
|
61
61
|
const walletsRaw = parsed.wallets && typeof parsed.wallets === "object" && !Array.isArray(parsed.wallets) ? parsed.wallets : {};
|
|
@@ -87,9 +87,9 @@ function loadLedger(paths) {
|
|
|
87
87
|
return fallback;
|
|
88
88
|
}
|
|
89
89
|
function writeLedger(paths, ledger) {
|
|
90
|
-
|
|
90
|
+
syncFs.writeFileSync(paths.dailyUsagePath, `${JSON.stringify(ledger, null, 2)}\n`, { mode: 384 });
|
|
91
91
|
try {
|
|
92
|
-
|
|
92
|
+
syncFs.chmodSync(paths.dailyUsagePath, 384);
|
|
93
93
|
} catch {}
|
|
94
94
|
}
|
|
95
95
|
function resolveWalletUsageBucket(ledger, walletId) {
|
|
@@ -344,11 +344,11 @@ function readWalletPolicyState(env = process.env) {
|
|
|
344
344
|
updatedAt: nowIso(),
|
|
345
345
|
wallets: {}
|
|
346
346
|
};
|
|
347
|
-
if (!
|
|
347
|
+
if (!syncFs.existsSync(statePath)) {
|
|
348
348
|
return fallback;
|
|
349
349
|
}
|
|
350
350
|
try {
|
|
351
|
-
const raw =
|
|
351
|
+
const raw = syncFs.readFileSync(statePath, "utf8");
|
|
352
352
|
const parsed = JSON.parse(raw);
|
|
353
353
|
if (parsed.version !== 1) {
|
|
354
354
|
return fallback;
|
|
@@ -374,9 +374,9 @@ function readWalletPolicyState(env = process.env) {
|
|
|
374
374
|
function writeWalletPolicyState(state, env = process.env) {
|
|
375
375
|
const paths = ensureWalletStateDir(env);
|
|
376
376
|
const statePath = resolveWalletPolicyStatePath(paths);
|
|
377
|
-
|
|
377
|
+
syncFs.writeFileSync(statePath, `${JSON.stringify(state, null, 2)}\n`, { mode: 384 });
|
|
378
378
|
try {
|
|
379
|
-
|
|
379
|
+
syncFs.chmodSync(statePath, 384);
|
|
380
380
|
} catch {}
|
|
381
381
|
}
|
|
382
382
|
function buildResolvedPolicyFromDefaults(defaults) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths.js";
|
|
2
2
|
import { ensureWalletStateDir } from "./wallet-runtime-config.js";
|
|
3
|
-
import
|
|
3
|
+
import syncFs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { randomBytes } from "node:crypto";
|
|
6
6
|
|
|
@@ -159,12 +159,12 @@ function buildMiningDeleteBlockedMessage(details) {
|
|
|
159
159
|
}
|
|
160
160
|
function readSatMiningRuntimeDeletionDetails(walletId, env) {
|
|
161
161
|
const runtimeStorePath = path.join(resolveStateDir(env), "sat-mining", "wallets", normalizeSatWalletStateKey(walletId), "runtime-store.json");
|
|
162
|
-
if (!
|
|
162
|
+
if (!syncFs.existsSync(runtimeStorePath)) {
|
|
163
163
|
return null;
|
|
164
164
|
}
|
|
165
165
|
let parsed;
|
|
166
166
|
try {
|
|
167
|
-
parsed = JSON.parse(
|
|
167
|
+
parsed = JSON.parse(syncFs.readFileSync(runtimeStorePath, "utf8"));
|
|
168
168
|
} catch {
|
|
169
169
|
return null;
|
|
170
170
|
}
|
|
@@ -383,11 +383,11 @@ function normalizeRegistry(raw) {
|
|
|
383
383
|
}
|
|
384
384
|
function readWalletProviderRegistry(env = process.env) {
|
|
385
385
|
const file = registryPath(env);
|
|
386
|
-
if (!
|
|
386
|
+
if (!syncFs.existsSync(file)) {
|
|
387
387
|
return makeDefaultRegistry();
|
|
388
388
|
}
|
|
389
389
|
try {
|
|
390
|
-
const parsed = JSON.parse(
|
|
390
|
+
const parsed = JSON.parse(syncFs.readFileSync(file, "utf8"));
|
|
391
391
|
const normalized = normalizeRegistry(parsed);
|
|
392
392
|
if (normalized.changed) {
|
|
393
393
|
writeWalletProviderRegistry(normalized.registry, env);
|
|
@@ -404,12 +404,12 @@ function writeWalletProviderRegistry(registry, env = process.env) {
|
|
|
404
404
|
version: 1,
|
|
405
405
|
updatedAt: nowIso()
|
|
406
406
|
};
|
|
407
|
-
|
|
407
|
+
syncFs.writeFileSync(file, `${JSON.stringify(payload, null, 2)}\n`, {
|
|
408
408
|
encoding: "utf8",
|
|
409
409
|
mode: REGISTRY_FILE_MODE
|
|
410
410
|
});
|
|
411
411
|
try {
|
|
412
|
-
|
|
412
|
+
syncFs.chmodSync(file, REGISTRY_FILE_MODE);
|
|
413
413
|
} catch {}
|
|
414
414
|
}
|
|
415
415
|
function setWalletProviderEnabled(params) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
|
|
5
5
|
//#region src/wallet/wallet-runtime-config.ts
|
|
@@ -94,12 +94,12 @@ function resolveWalletStatePaths(env = process.env) {
|
|
|
94
94
|
}
|
|
95
95
|
function ensureWalletStateDir(env = process.env) {
|
|
96
96
|
const paths = resolveWalletStatePaths(env);
|
|
97
|
-
|
|
97
|
+
syncFs.mkdirSync(paths.rootDir, {
|
|
98
98
|
recursive: true,
|
|
99
99
|
mode: 448
|
|
100
100
|
});
|
|
101
101
|
try {
|
|
102
|
-
|
|
102
|
+
syncFs.chmodSync(paths.rootDir, 448);
|
|
103
103
|
} catch {}
|
|
104
104
|
return paths;
|
|
105
105
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { createCipheriv, createDecipheriv, randomBytes } from "node:crypto";
|
|
5
5
|
|
|
@@ -12,12 +12,12 @@ const WALLET_RPC_SECRET_FILENAME = "wallet-rpc.v1.enc.json";
|
|
|
12
12
|
const MASTER_KEY_FILENAME = "master.key";
|
|
13
13
|
function ensureSecretsDir(env = process.env) {
|
|
14
14
|
const dir = path.join(resolveStateDir(env), "secrets");
|
|
15
|
-
|
|
15
|
+
syncFs.mkdirSync(dir, {
|
|
16
16
|
recursive: true,
|
|
17
17
|
mode: SECRETS_DIR_MODE
|
|
18
18
|
});
|
|
19
19
|
try {
|
|
20
|
-
|
|
20
|
+
syncFs.chmodSync(dir, SECRETS_DIR_MODE);
|
|
21
21
|
} catch {}
|
|
22
22
|
return dir;
|
|
23
23
|
}
|
|
@@ -37,20 +37,20 @@ function resolveWalletProviderSecretPath(providerId, env = process.env) {
|
|
|
37
37
|
}
|
|
38
38
|
function readOrCreateMasterKey(env = process.env) {
|
|
39
39
|
const keyPath = resolveMasterKeyPath(env);
|
|
40
|
-
if (
|
|
41
|
-
const raw =
|
|
40
|
+
if (syncFs.existsSync(keyPath)) {
|
|
41
|
+
const raw = syncFs.readFileSync(keyPath, "utf8").trim();
|
|
42
42
|
const parsed = Buffer.from(raw, "hex");
|
|
43
43
|
if (parsed.length === MASTER_KEY_BYTES) {
|
|
44
44
|
return parsed;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
const key = randomBytes(MASTER_KEY_BYTES);
|
|
48
|
-
|
|
48
|
+
syncFs.writeFileSync(keyPath, `${key.toString("hex")}\n`, {
|
|
49
49
|
mode: SECRET_FILE_MODE,
|
|
50
50
|
encoding: "utf8"
|
|
51
51
|
});
|
|
52
52
|
try {
|
|
53
|
-
|
|
53
|
+
syncFs.chmodSync(keyPath, SECRET_FILE_MODE);
|
|
54
54
|
} catch {}
|
|
55
55
|
return key;
|
|
56
56
|
}
|
|
@@ -197,12 +197,12 @@ function saveWalletRpcSecret(input, env = process.env) {
|
|
|
197
197
|
};
|
|
198
198
|
const encrypted = encryptPayload(record, env);
|
|
199
199
|
const secretPath = resolveWalletRpcSecretPath(env, input.providerId);
|
|
200
|
-
|
|
200
|
+
syncFs.writeFileSync(secretPath, `${JSON.stringify(encrypted, null, 2)}\n`, {
|
|
201
201
|
mode: SECRET_FILE_MODE,
|
|
202
202
|
encoding: "utf8"
|
|
203
203
|
});
|
|
204
204
|
try {
|
|
205
|
-
|
|
205
|
+
syncFs.chmodSync(secretPath, SECRET_FILE_MODE);
|
|
206
206
|
} catch {}
|
|
207
207
|
return record;
|
|
208
208
|
}
|
|
@@ -230,23 +230,23 @@ function saveWalletProviderSecret(input, env = process.env) {
|
|
|
230
230
|
};
|
|
231
231
|
const encrypted = encryptProviderPayload(record, env);
|
|
232
232
|
const secretPath = resolveWalletProviderSecretPath(providerId, env);
|
|
233
|
-
|
|
233
|
+
syncFs.writeFileSync(secretPath, `${JSON.stringify(encrypted, null, 2)}\n`, {
|
|
234
234
|
mode: SECRET_FILE_MODE,
|
|
235
235
|
encoding: "utf8"
|
|
236
236
|
});
|
|
237
237
|
try {
|
|
238
|
-
|
|
238
|
+
syncFs.chmodSync(secretPath, SECRET_FILE_MODE);
|
|
239
239
|
} catch {}
|
|
240
240
|
return record;
|
|
241
241
|
}
|
|
242
242
|
function loadWalletRpcSecret(env = process.env, options) {
|
|
243
243
|
const candidatePaths = options?.providerId ? [resolveWalletRpcSecretPath(env, options.providerId), resolveWalletRpcSecretPath(env)] : [resolveWalletRpcSecretPath(env)];
|
|
244
244
|
for (const secretPath of candidatePaths) {
|
|
245
|
-
if (!
|
|
245
|
+
if (!syncFs.existsSync(secretPath)) {
|
|
246
246
|
continue;
|
|
247
247
|
}
|
|
248
248
|
try {
|
|
249
|
-
const parsed = JSON.parse(
|
|
249
|
+
const parsed = JSON.parse(syncFs.readFileSync(secretPath, "utf8"));
|
|
250
250
|
const decrypted = decryptPayload(parsed, env);
|
|
251
251
|
if (decrypted) {
|
|
252
252
|
return decrypted;
|
|
@@ -257,11 +257,11 @@ function loadWalletRpcSecret(env = process.env, options) {
|
|
|
257
257
|
}
|
|
258
258
|
function loadWalletProviderSecret(providerId, env = process.env) {
|
|
259
259
|
const secretPath = resolveWalletProviderSecretPath(providerId, env);
|
|
260
|
-
if (!
|
|
260
|
+
if (!syncFs.existsSync(secretPath)) {
|
|
261
261
|
return null;
|
|
262
262
|
}
|
|
263
263
|
try {
|
|
264
|
-
const parsed = JSON.parse(
|
|
264
|
+
const parsed = JSON.parse(syncFs.readFileSync(secretPath, "utf8"));
|
|
265
265
|
const value = decryptProviderPayload(parsed, env);
|
|
266
266
|
if (!value || value.providerId !== providerId) {
|
|
267
267
|
return null;
|
|
@@ -274,13 +274,13 @@ function loadWalletProviderSecret(providerId, env = process.env) {
|
|
|
274
274
|
function deleteWalletRpcSecret(env = process.env) {
|
|
275
275
|
const dir = ensureSecretsDir(env);
|
|
276
276
|
const legacyPath = resolveWalletRpcSecretPath(env);
|
|
277
|
-
const candidatePaths = [legacyPath, ...
|
|
277
|
+
const candidatePaths = [legacyPath, ...syncFs.readdirSync(dir, { withFileTypes: true }).filter((entry) => entry.isFile() && /^wallet-rpc-[a-z0-9-]+\.v1\.enc\.json$/i.test(entry.name)).map((entry) => path.join(dir, entry.name))];
|
|
278
278
|
const removedPaths = [];
|
|
279
279
|
for (const secretPath of candidatePaths) {
|
|
280
|
-
if (!
|
|
280
|
+
if (!syncFs.existsSync(secretPath)) {
|
|
281
281
|
continue;
|
|
282
282
|
}
|
|
283
|
-
|
|
283
|
+
syncFs.rmSync(secretPath, { force: true });
|
|
284
284
|
removedPaths.push(secretPath);
|
|
285
285
|
}
|
|
286
286
|
return {
|
|
@@ -291,13 +291,13 @@ function deleteWalletRpcSecret(env = process.env) {
|
|
|
291
291
|
}
|
|
292
292
|
function deleteWalletRpcSecretForProvider(providerId, env = process.env) {
|
|
293
293
|
const secretPath = resolveWalletRpcSecretPath(env, providerId);
|
|
294
|
-
if (!
|
|
294
|
+
if (!syncFs.existsSync(secretPath)) {
|
|
295
295
|
return {
|
|
296
296
|
removed: false,
|
|
297
297
|
path: secretPath
|
|
298
298
|
};
|
|
299
299
|
}
|
|
300
|
-
|
|
300
|
+
syncFs.rmSync(secretPath, { force: true });
|
|
301
301
|
return {
|
|
302
302
|
removed: true,
|
|
303
303
|
path: secretPath
|
|
@@ -305,13 +305,13 @@ function deleteWalletRpcSecretForProvider(providerId, env = process.env) {
|
|
|
305
305
|
}
|
|
306
306
|
function deleteWalletProviderSecret(providerId, env = process.env) {
|
|
307
307
|
const secretPath = resolveWalletProviderSecretPath(providerId, env);
|
|
308
|
-
if (!
|
|
308
|
+
if (!syncFs.existsSync(secretPath)) {
|
|
309
309
|
return {
|
|
310
310
|
removed: false,
|
|
311
311
|
path: secretPath
|
|
312
312
|
};
|
|
313
313
|
}
|
|
314
|
-
|
|
314
|
+
syncFs.rmSync(secretPath, { force: true });
|
|
315
315
|
return {
|
|
316
316
|
removed: true,
|
|
317
317
|
path: secretPath
|
|
@@ -16,7 +16,7 @@ import { enforceWalletCustodyForAutonomousSend, withWalletCustodySigningMaterial
|
|
|
16
16
|
import { simulateWalletPolicy } from "./wallet-policy-simulation.js";
|
|
17
17
|
import { getWalletSettlementLinkByRequestId, markWalletSettlementLinkOutcome, upsertWalletSettlementLink } from "./wallet-settlement-links.js";
|
|
18
18
|
import { syncWalletApprovalTask, walletApprovalTaskId } from "./wallet-task-ledger.js";
|
|
19
|
-
import
|
|
19
|
+
import syncFs from "node:fs";
|
|
20
20
|
import { randomBytes } from "node:crypto";
|
|
21
21
|
import { setTimeout } from "node:timers/promises";
|
|
22
22
|
|
|
@@ -316,14 +316,14 @@ async function executeWalletSendWithRetry(params) {
|
|
|
316
316
|
}
|
|
317
317
|
function loadFile(env = process.env) {
|
|
318
318
|
const paths = ensureWalletStateDir(env);
|
|
319
|
-
if (!
|
|
319
|
+
if (!syncFs.existsSync(paths.sendApprovalsPath)) {
|
|
320
320
|
return {
|
|
321
321
|
version: 1,
|
|
322
322
|
requests: []
|
|
323
323
|
};
|
|
324
324
|
}
|
|
325
325
|
try {
|
|
326
|
-
const parsed = JSON.parse(
|
|
326
|
+
const parsed = JSON.parse(syncFs.readFileSync(paths.sendApprovalsPath, "utf8"));
|
|
327
327
|
if (parsed?.version === 1 && Array.isArray(parsed.requests)) {
|
|
328
328
|
return {
|
|
329
329
|
version: 1,
|
|
@@ -338,12 +338,12 @@ function loadFile(env = process.env) {
|
|
|
338
338
|
}
|
|
339
339
|
function saveFile(file, env = process.env) {
|
|
340
340
|
const paths = ensureWalletStateDir(env);
|
|
341
|
-
|
|
341
|
+
syncFs.writeFileSync(paths.sendApprovalsPath, `${JSON.stringify(file, null, 2)}\n`, {
|
|
342
342
|
encoding: "utf8",
|
|
343
343
|
mode: 384
|
|
344
344
|
});
|
|
345
345
|
try {
|
|
346
|
-
|
|
346
|
+
syncFs.chmodSync(paths.sendApprovalsPath, 384);
|
|
347
347
|
} catch {}
|
|
348
348
|
}
|
|
349
349
|
function markExpired(file) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ensureWalletStateDir } from "./wallet-runtime-config.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
|
|
5
5
|
//#region src/wallet/wallet-settlement-links.ts
|
|
@@ -8,14 +8,14 @@ function linksFilePath(env = process.env) {
|
|
|
8
8
|
}
|
|
9
9
|
function loadFile(env = process.env) {
|
|
10
10
|
const filePath = linksFilePath(env);
|
|
11
|
-
if (!
|
|
11
|
+
if (!syncFs.existsSync(filePath)) {
|
|
12
12
|
return {
|
|
13
13
|
version: 1,
|
|
14
14
|
links: []
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
try {
|
|
18
|
-
const parsed = JSON.parse(
|
|
18
|
+
const parsed = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
|
|
19
19
|
if (parsed?.version === 1 && Array.isArray(parsed.links)) {
|
|
20
20
|
return {
|
|
21
21
|
version: 1,
|
|
@@ -30,12 +30,12 @@ function loadFile(env = process.env) {
|
|
|
30
30
|
}
|
|
31
31
|
function saveFile(file, env = process.env) {
|
|
32
32
|
const filePath = linksFilePath(env);
|
|
33
|
-
|
|
33
|
+
syncFs.writeFileSync(filePath, `${JSON.stringify(file, null, 2)}\n`, {
|
|
34
34
|
encoding: "utf8",
|
|
35
35
|
mode: 384
|
|
36
36
|
});
|
|
37
37
|
try {
|
|
38
|
-
|
|
38
|
+
syncFs.chmodSync(filePath, 384);
|
|
39
39
|
} catch {}
|
|
40
40
|
}
|
|
41
41
|
function upsertWalletSettlementLink(params) {
|
package/dist/web/accounts.js
CHANGED
|
@@ -5,7 +5,7 @@ import "../routing/session-key.js";
|
|
|
5
5
|
import { resolveAccountEntry } from "../routing/account-lookup.js";
|
|
6
6
|
import { createAccountListHelpers } from "../channels/plugins/account-helpers.js";
|
|
7
7
|
import { hasWebCredsSync } from "./auth-store.js";
|
|
8
|
-
import
|
|
8
|
+
import syncFs from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
|
|
11
11
|
//#region src/web/accounts.ts
|
|
@@ -24,7 +24,7 @@ function listWhatsAppAuthDirs(cfg) {
|
|
|
24
24
|
}).authDir);
|
|
25
25
|
}
|
|
26
26
|
try {
|
|
27
|
-
const entries =
|
|
27
|
+
const entries = syncFs.readdirSync(whatsappDir, { withFileTypes: true });
|
|
28
28
|
for (const entry of entries) {
|
|
29
29
|
if (!entry.isDirectory()) {
|
|
30
30
|
continue;
|
|
@@ -48,7 +48,7 @@ function resolveLegacyAuthDir() {
|
|
|
48
48
|
}
|
|
49
49
|
function legacyAuthExists(authDir) {
|
|
50
50
|
try {
|
|
51
|
-
return
|
|
51
|
+
return syncFs.existsSync(path.join(authDir, "creds.json"));
|
|
52
52
|
} catch {
|
|
53
53
|
return false;
|
|
54
54
|
}
|