@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
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { LITELLM_BASE_URL, LITELLM_DEFAULT_MODEL_ID
|
|
2
|
-
import { applyAgentDefaultModelPrimary, applyProviderConfigWithDefaultModel } from "./onboard-auth.config-shared.js";
|
|
1
|
+
import { LITELLM_BASE_URL, LITELLM_DEFAULT_MODEL_ID } from "../providers/litellm-models.js";
|
|
3
2
|
|
|
4
3
|
//#region src/commands/onboard-auth.config-litellm.ts
|
|
5
|
-
function buildLitellmModelDefinition() {
|
|
6
|
-
return buildLitellmModelDefinition$1(LITELLM_MODEL_CATALOG[0]);
|
|
7
|
-
}
|
|
8
4
|
function applyLitellmProviderConfig(cfg) {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
...models[LITELLM_DEFAULT_MODEL_REF],
|
|
12
|
-
alias: models[LITELLM_DEFAULT_MODEL_REF]?.alias ?? "LiteLLM proxy default"
|
|
13
|
-
};
|
|
14
|
-
const defaultModel = buildLitellmModelDefinition();
|
|
15
|
-
const existingProvider = cfg.models?.providers?.litellm;
|
|
5
|
+
const providers = { ...cfg.models?.providers };
|
|
6
|
+
const existingProvider = providers.litellm;
|
|
16
7
|
const resolvedBaseUrl = typeof existingProvider?.baseUrl === "string" ? existingProvider.baseUrl.trim() : "";
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
api: "openai-completions",
|
|
8
|
+
providers.litellm = {
|
|
9
|
+
...existingProvider,
|
|
10
|
+
...typeof existingProvider?.apiKey === "string" && existingProvider.apiKey.trim() ? { apiKey: existingProvider.apiKey.trim() } : {},
|
|
21
11
|
baseUrl: resolvedBaseUrl || LITELLM_BASE_URL,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
api: "openai-completions",
|
|
13
|
+
request: {
|
|
14
|
+
...existingProvider?.request,
|
|
15
|
+
allowPrivateNetwork: true
|
|
16
|
+
},
|
|
17
|
+
models: existingProvider?.models ?? []
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
...cfg,
|
|
21
|
+
models: {
|
|
22
|
+
mode: cfg.models?.mode ?? "merge",
|
|
23
|
+
providers
|
|
24
|
+
}
|
|
25
|
+
};
|
|
25
26
|
}
|
|
26
27
|
function applyLitellmConfig(cfg) {
|
|
27
|
-
|
|
28
|
-
return applyAgentDefaultModelPrimary(next, LITELLM_DEFAULT_MODEL_REF);
|
|
28
|
+
return applyLitellmProviderConfig(cfg);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
//#endregion
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths.js";
|
|
2
2
|
import { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/cloudflare-ai-gateway-shared.js";
|
|
3
3
|
import { HUGGINGFACE_DEFAULT_MODEL_REF } from "../providers/huggingface-models.js";
|
|
4
|
-
import { LITELLM_DEFAULT_MODEL_REF } from "../providers/litellm-models.js";
|
|
5
4
|
import { TOGETHER_DEFAULT_MODEL_REF } from "../providers/together-models.js";
|
|
6
5
|
import { VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/vercel-ai-gateway-models.js";
|
|
7
6
|
import "../providers/registry.js";
|
|
@@ -12,7 +11,7 @@ import { upsertAuthProfile } from "../agents/auth-profiles/profiles.js";
|
|
|
12
11
|
import "../agents/auth-profiles.js";
|
|
13
12
|
import { PROVIDER_ENV_VARS } from "../secrets/provider-env-vars.js";
|
|
14
13
|
import { MISTRAL_DEFAULT_MODEL_REF, XAI_DEFAULT_MODEL_REF } from "./onboard-auth.models.js";
|
|
15
|
-
import
|
|
14
|
+
import syncFs from "node:fs";
|
|
16
15
|
import path from "node:path";
|
|
17
16
|
|
|
18
17
|
//#region src/commands/onboard-auth.credentials.ts
|
|
@@ -75,7 +74,7 @@ function buildApiKeyCredential(provider, input, metadata, options) {
|
|
|
75
74
|
/** Resolve real path, returning null if the target doesn't exist. */
|
|
76
75
|
function safeRealpathSync(dir) {
|
|
77
76
|
try {
|
|
78
|
-
return
|
|
77
|
+
return syncFs.realpathSync(path.resolve(dir));
|
|
79
78
|
} catch {
|
|
80
79
|
return null;
|
|
81
80
|
}
|
|
@@ -88,7 +87,7 @@ function resolveSiblingAgentDirs(primaryAgentDir) {
|
|
|
88
87
|
const agentsRoot = looksLikeStandardLayout ? candidateAgentsRoot : path.join(resolveStateDir(), "agents");
|
|
89
88
|
const entries = (() => {
|
|
90
89
|
try {
|
|
91
|
-
return
|
|
90
|
+
return syncFs.readdirSync(agentsRoot, { withFileTypes: true });
|
|
92
91
|
} catch {
|
|
93
92
|
return [];
|
|
94
93
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/cloudflare-ai-gateway-shared.js";
|
|
2
2
|
import { HUGGINGFACE_DEFAULT_MODEL_REF } from "../providers/huggingface-models.js";
|
|
3
|
-
import { LITELLM_DEFAULT_MODEL_REF } from "../providers/litellm-models.js";
|
|
4
3
|
import { SYNTHETIC_DEFAULT_MODEL_ID, SYNTHETIC_DEFAULT_MODEL_REF } from "../providers/synthetic-models.js";
|
|
5
4
|
import { TOGETHER_DEFAULT_MODEL_REF } from "../providers/together-models.js";
|
|
6
5
|
import { VENICE_DEFAULT_MODEL_ID, VENICE_DEFAULT_MODEL_REF } from "../providers/venice-models.js";
|
|
@@ -7,7 +7,7 @@ import { createPluginLoaderLogger } from "../../plugins/logger.js";
|
|
|
7
7
|
import { resolveChannelPluginExpectedPluginIds } from "../../channels/plugins/catalog.js";
|
|
8
8
|
import { buildNpmResolutionInstallFields } from "../../plugins/installs.js";
|
|
9
9
|
import { finalizeInstalledPluginConfig } from "../../plugins/lifecycle.js";
|
|
10
|
-
import
|
|
10
|
+
import syncFs from "node:fs";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
|
|
13
13
|
//#region src/commands/onboarding/plugin-install.ts
|
|
@@ -29,7 +29,7 @@ function resolveLocalPath(entry, workspaceDir) {
|
|
|
29
29
|
candidates.add(path.resolve(packageRoot, raw));
|
|
30
30
|
}
|
|
31
31
|
for (const candidate of candidates) {
|
|
32
|
-
if (
|
|
32
|
+
if (syncFs.existsSync(candidate)) {
|
|
33
33
|
return candidate;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -1,5 +1,28 @@
|
|
|
1
|
+
import { DEFAULT_PROVIDER } from "../agents/defaults.js";
|
|
2
|
+
import { ensureAuthProfileStore } from "../agents/auth-profiles/store.js";
|
|
3
|
+
import "../agents/auth-profiles.js";
|
|
4
|
+
import { resolveAuthenticatedModelCatalog } from "../agents/authenticated-model-catalog.js";
|
|
5
|
+
import { loadModelCatalog } from "../agents/model-catalog.js";
|
|
6
|
+
|
|
1
7
|
//#region src/commands/openai-codex-model-default.ts
|
|
2
|
-
const OPENAI_CODEX_DEFAULT_MODEL = "openai-codex/gpt-5.
|
|
8
|
+
const OPENAI_CODEX_DEFAULT_MODEL = "openai-codex/gpt-5.5";
|
|
9
|
+
async function discoverOpenAICodexDefaultModel(params) {
|
|
10
|
+
const catalog = await loadModelCatalog({
|
|
11
|
+
config: params.config,
|
|
12
|
+
useCache: false,
|
|
13
|
+
includeMetadata: true
|
|
14
|
+
});
|
|
15
|
+
const store = ensureAuthProfileStore(params.agentDir, { allowKeychainPrompt: false });
|
|
16
|
+
const authenticated = await resolveAuthenticatedModelCatalog({
|
|
17
|
+
cfg: params.config,
|
|
18
|
+
store,
|
|
19
|
+
catalog,
|
|
20
|
+
defaultProvider: DEFAULT_PROVIDER,
|
|
21
|
+
agentDir: params.agentDir
|
|
22
|
+
});
|
|
23
|
+
const model = authenticated.usableCatalog.filter((entry) => entry.provider === "openai-codex").toSorted((left, right) => (left.metadata?.recommendationRank ?? Number.MAX_SAFE_INTEGER) - (right.metadata?.recommendationRank ?? Number.MAX_SAFE_INTEGER) || left.name.localeCompare(right.name))[0];
|
|
24
|
+
return model ? `${model.provider}/${model.id}` : undefined;
|
|
25
|
+
}
|
|
3
26
|
function shouldSetOpenAICodexModel(model) {
|
|
4
27
|
const trimmed = model?.trim();
|
|
5
28
|
if (!trimmed) {
|
|
@@ -23,7 +46,7 @@ function resolvePrimaryModel(model) {
|
|
|
23
46
|
}
|
|
24
47
|
return undefined;
|
|
25
48
|
}
|
|
26
|
-
function applyOpenAICodexModelDefault(cfg) {
|
|
49
|
+
function applyOpenAICodexModelDefault(cfg, model = OPENAI_CODEX_DEFAULT_MODEL) {
|
|
27
50
|
const current = resolvePrimaryModel(cfg.agents?.defaults?.model);
|
|
28
51
|
if (!shouldSetOpenAICodexModel(current)) {
|
|
29
52
|
return {
|
|
@@ -40,8 +63,8 @@ function applyOpenAICodexModelDefault(cfg) {
|
|
|
40
63
|
...cfg.agents?.defaults,
|
|
41
64
|
model: cfg.agents?.defaults?.model && typeof cfg.agents.defaults.model === "object" ? {
|
|
42
65
|
...cfg.agents.defaults.model,
|
|
43
|
-
primary:
|
|
44
|
-
} : { primary:
|
|
66
|
+
primary: model
|
|
67
|
+
} : { primary: model }
|
|
45
68
|
}
|
|
46
69
|
}
|
|
47
70
|
},
|
|
@@ -50,4 +73,4 @@ function applyOpenAICodexModelDefault(cfg) {
|
|
|
50
73
|
}
|
|
51
74
|
|
|
52
75
|
//#endregion
|
|
53
|
-
export { OPENAI_CODEX_DEFAULT_MODEL, applyOpenAICodexModelDefault };
|
|
76
|
+
export { OPENAI_CODEX_DEFAULT_MODEL, applyOpenAICodexModelDefault, discoverOpenAICodexDefaultModel };
|
|
@@ -7,7 +7,7 @@ import { capEntryCount, loadSessionStore, pruneStaleEntries, resolveMaintenanceC
|
|
|
7
7
|
import "../config/sessions.js";
|
|
8
8
|
import { resolveSessionStoreTargets } from "./session-store-targets.js";
|
|
9
9
|
import { SESSION_AGE_PAD, SESSION_KEY_PAD, SESSION_MODEL_PAD, formatSessionAgeCell, formatSessionFlagsCell, formatSessionKeyCell, formatSessionModelCell, resolveSessionDisplayDefaults, resolveSessionDisplayModel, toSessionDisplayRows } from "./sessions-table.js";
|
|
10
|
-
import
|
|
10
|
+
import syncFs from "node:fs";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/sessions-cleanup.ts
|
|
13
13
|
const ACTION_PAD = 12;
|
|
@@ -65,7 +65,7 @@ function pruneMissingTranscriptEntries(params) {
|
|
|
65
65
|
continue;
|
|
66
66
|
}
|
|
67
67
|
const transcriptPath = resolveSessionFilePath(entry.sessionId, entry, sessionPathOpts);
|
|
68
|
-
if (!
|
|
68
|
+
if (!syncFs.existsSync(transcriptPath)) {
|
|
69
69
|
delete params.store[key];
|
|
70
70
|
removed += 1;
|
|
71
71
|
params.onPruned?.(key);
|
|
@@ -5,7 +5,7 @@ import { resolveBrewExecutable } from "../infra/brew.js";
|
|
|
5
5
|
import { createWriteStream } from "node:fs";
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
8
|
-
import fs
|
|
8
|
+
import fs from "node:fs/promises";
|
|
9
9
|
import { pipeline } from "node:stream/promises";
|
|
10
10
|
import { request } from "node:https";
|
|
11
11
|
|
|
@@ -79,7 +79,7 @@ async function findSignalCliBinary(root) {
|
|
|
79
79
|
if (depth > 3) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
const entries = await fs
|
|
82
|
+
const entries = await fs.readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
83
83
|
for (const entry of entries) {
|
|
84
84
|
const full = path.join(dir, entry.name);
|
|
85
85
|
if (entry.isDirectory()) {
|
|
@@ -103,7 +103,7 @@ async function resolveBrewSignalCliPath(brewExe) {
|
|
|
103
103
|
const prefix = result.stdout.trim();
|
|
104
104
|
const candidate = path.join(prefix, "bin", "signal-cli");
|
|
105
105
|
try {
|
|
106
|
-
await fs
|
|
106
|
+
await fs.access(candidate);
|
|
107
107
|
return candidate;
|
|
108
108
|
} catch {
|
|
109
109
|
return findSignalCliBinary(prefix);
|
|
@@ -172,12 +172,12 @@ async function installSignalCliFromRelease(runtime) {
|
|
|
172
172
|
error: "No compatible release asset found for this platform."
|
|
173
173
|
};
|
|
174
174
|
}
|
|
175
|
-
const tmpDir = await fs
|
|
175
|
+
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "fased-signal-"));
|
|
176
176
|
const archivePath = path.join(tmpDir, asset.name);
|
|
177
177
|
runtime.log(`Downloading signal-cli ${version} (${asset.name})…`);
|
|
178
178
|
await downloadToFile(asset.browser_download_url, archivePath);
|
|
179
179
|
const installRoot = path.join(CONFIG_DIR, "tools", "signal-cli", version);
|
|
180
|
-
await fs
|
|
180
|
+
await fs.mkdir(installRoot, { recursive: true });
|
|
181
181
|
if (!looksLikeArchive(asset.name.toLowerCase())) {
|
|
182
182
|
return {
|
|
183
183
|
ok: false,
|
|
@@ -200,7 +200,7 @@ async function installSignalCliFromRelease(runtime) {
|
|
|
200
200
|
error: `signal-cli binary not found after extracting ${asset.name}`
|
|
201
201
|
};
|
|
202
202
|
}
|
|
203
|
-
await fs
|
|
203
|
+
await fs.chmod(cliPath, 493).catch(() => {});
|
|
204
204
|
return {
|
|
205
205
|
ok: true,
|
|
206
206
|
cliPath,
|
|
@@ -4,7 +4,7 @@ import { formatTimeAgo } from "../../infra/format-time/format-relative.js";
|
|
|
4
4
|
import { resolveChannelDefaultAccountId } from "../../channels/plugins/helpers.js";
|
|
5
5
|
import { buildChannelAccountSnapshot, formatChannelAllowFrom } from "../../channels/account-summary.js";
|
|
6
6
|
import "./format.js";
|
|
7
|
-
import
|
|
7
|
+
import syncFs from "node:fs";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/status-all/channels.ts
|
|
10
10
|
const asRecord = (value) => value && typeof value === "object" ? value : {};
|
|
@@ -27,7 +27,7 @@ function existsSyncMaybe(p) {
|
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
29
|
try {
|
|
30
|
-
return
|
|
30
|
+
return syncFs.existsSync(path);
|
|
31
31
|
} catch {
|
|
32
32
|
return null;
|
|
33
33
|
}
|
package/dist/commands/wallet.js
CHANGED
|
@@ -15,7 +15,7 @@ import { startLocalSocketSignerBroker } from "../wallet/local-socket-signer-brok
|
|
|
15
15
|
import { listWalletInboundEvents, pollWalletInboundEvents, reconcileWalletInboundEvents } from "../wallet/wallet-inbound-events.js";
|
|
16
16
|
import { buildWalletCanaryReport, runWalletProviderCanaryReport } from "../wallet/wallet-canary.js";
|
|
17
17
|
import { resolveSignerdBinaryPath, restartLocalSocketSigner } from "../wizard/onboarding.wallet.js";
|
|
18
|
-
import
|
|
18
|
+
import syncFs from "node:fs";
|
|
19
19
|
import path from "node:path";
|
|
20
20
|
import { createCipheriv, createDecipheriv, createPrivateKey, createPublicKey, randomBytes, scryptSync } from "node:crypto";
|
|
21
21
|
import { createInterface } from "node:readline/promises";
|
|
@@ -676,12 +676,12 @@ function resolveKeystorePassphrase(optionsPassphrase, env) {
|
|
|
676
676
|
return optionsPassphrase.trim();
|
|
677
677
|
}
|
|
678
678
|
const file = String(env.FASED_WALLET_PASSPHRASE_FILE ?? "").trim();
|
|
679
|
-
if (file &&
|
|
680
|
-
return
|
|
679
|
+
if (file && syncFs.existsSync(file)) {
|
|
680
|
+
return syncFs.readFileSync(file, "utf8").trim();
|
|
681
681
|
}
|
|
682
682
|
const managedFile = path.join(resolveLocalSignerMaterialRootDir(env), "passphrase");
|
|
683
|
-
if (
|
|
684
|
-
return
|
|
683
|
+
if (syncFs.existsSync(managedFile)) {
|
|
684
|
+
return syncFs.readFileSync(managedFile, "utf8").trim();
|
|
685
685
|
}
|
|
686
686
|
return String(env.FASED_WALLET_PASSPHRASE ?? "").trim();
|
|
687
687
|
}
|
|
@@ -697,7 +697,7 @@ function resolveLocalSignerPassphraseSource(env) {
|
|
|
697
697
|
const candidates = [configuredFile ? path.resolve(configuredFile) : "", path.join(resolveLocalSignerMaterialRootDir(env), "passphrase")].filter(Boolean);
|
|
698
698
|
for (const candidate of candidates) {
|
|
699
699
|
try {
|
|
700
|
-
const value =
|
|
700
|
+
const value = syncFs.readFileSync(candidate, "utf8").trim();
|
|
701
701
|
if (value) {
|
|
702
702
|
return {
|
|
703
703
|
kind: "file",
|
|
@@ -775,16 +775,16 @@ function ensureLocalSignerPassphraseFileForCustodyDisable(params) {
|
|
|
775
775
|
};
|
|
776
776
|
}
|
|
777
777
|
function writePassphraseFile(filePath, passphrase) {
|
|
778
|
-
|
|
778
|
+
syncFs.mkdirSync(path.dirname(filePath), {
|
|
779
779
|
recursive: true,
|
|
780
780
|
mode: 448
|
|
781
781
|
});
|
|
782
|
-
|
|
782
|
+
syncFs.writeFileSync(filePath, `${passphrase}\n`, {
|
|
783
783
|
encoding: "utf8",
|
|
784
784
|
mode: 384
|
|
785
785
|
});
|
|
786
786
|
try {
|
|
787
|
-
|
|
787
|
+
syncFs.chmodSync(filePath, 384);
|
|
788
788
|
} catch {}
|
|
789
789
|
}
|
|
790
790
|
function walletIdsMatchForEnvSuffix(left, right) {
|
|
@@ -824,7 +824,7 @@ function collectLocalSignerKeystoreTargets(cfg, env) {
|
|
|
824
824
|
return;
|
|
825
825
|
}
|
|
826
826
|
const resolved = path.resolve(candidate);
|
|
827
|
-
if (!
|
|
827
|
+
if (!syncFs.existsSync(resolved)) {
|
|
828
828
|
return;
|
|
829
829
|
}
|
|
830
830
|
const existing = targets.get(resolved);
|
|
@@ -851,8 +851,8 @@ function collectLocalSignerKeystoreTargets(cfg, env) {
|
|
|
851
851
|
addTarget("solana", value, key.slice("FASED_WALLET_SOLANA_KEYSTORE_PATH__".length).toLowerCase());
|
|
852
852
|
}
|
|
853
853
|
}
|
|
854
|
-
if (
|
|
855
|
-
for (const entry of
|
|
854
|
+
if (syncFs.existsSync(materialRoot)) {
|
|
855
|
+
for (const entry of syncFs.readdirSync(materialRoot, { withFileTypes: true })) {
|
|
856
856
|
if (!entry.isFile()) {
|
|
857
857
|
continue;
|
|
858
858
|
}
|
|
@@ -872,7 +872,7 @@ function collectLocalSignerKeystoreTargets(cfg, env) {
|
|
|
872
872
|
return [...targets.values()].toSorted((left, right) => left.label.localeCompare(right.label));
|
|
873
873
|
}
|
|
874
874
|
async function reencryptLocalSignerKeystore(params) {
|
|
875
|
-
const raw =
|
|
875
|
+
const raw = syncFs.readFileSync(params.target.path, "utf8");
|
|
876
876
|
const detected = detectEmbeddedKeystoreType(raw);
|
|
877
877
|
if (detected === "solana-envelope") {
|
|
878
878
|
const envelope = parseSolanaKeystoreEnvelope(raw);
|
|
@@ -885,7 +885,7 @@ async function reencryptLocalSignerKeystore(params) {
|
|
|
885
885
|
passphrase: params.newPassphrase,
|
|
886
886
|
publicKey: envelope.publicKey
|
|
887
887
|
});
|
|
888
|
-
|
|
888
|
+
syncFs.writeFileSync(params.target.path, `${JSON.stringify(nextEnvelope, null, 2)}\n`, {
|
|
889
889
|
encoding: "utf8",
|
|
890
890
|
mode: 384
|
|
891
891
|
});
|
|
@@ -906,13 +906,13 @@ function removeLocalSignerPassphraseFileIfManaged(env) {
|
|
|
906
906
|
const resolved = path.resolve(configured);
|
|
907
907
|
const materialRoot = resolveLocalSignerMaterialRootDir(env);
|
|
908
908
|
const withinMaterialRoot = resolved === materialRoot || resolved.startsWith(`${materialRoot}${path.sep}`);
|
|
909
|
-
if (!withinMaterialRoot || !
|
|
909
|
+
if (!withinMaterialRoot || !syncFs.existsSync(resolved)) {
|
|
910
910
|
return {
|
|
911
911
|
removed: false,
|
|
912
912
|
path: resolved
|
|
913
913
|
};
|
|
914
914
|
}
|
|
915
|
-
|
|
915
|
+
syncFs.rmSync(resolved, { force: true });
|
|
916
916
|
return {
|
|
917
917
|
removed: true,
|
|
918
918
|
path: resolved
|
|
@@ -950,11 +950,11 @@ function writeLocalSignerEnvFile(cfg, env) {
|
|
|
950
950
|
"",
|
|
951
951
|
`"${signerBinPath}" --socket "\${FASED_WALLET_LOCAL_SIGNER_BACKEND_SOCKET:-$FASED_WALLET_LOCAL_SIGNER_SOCKET}"`
|
|
952
952
|
];
|
|
953
|
-
|
|
953
|
+
syncFs.mkdirSync(path.dirname(signerEnvPath), {
|
|
954
954
|
recursive: true,
|
|
955
955
|
mode: 448
|
|
956
956
|
});
|
|
957
|
-
|
|
957
|
+
syncFs.writeFileSync(signerEnvPath, `${signerEnvLines.join("\n")}\n`, {
|
|
958
958
|
encoding: "utf8",
|
|
959
959
|
mode: 384
|
|
960
960
|
});
|
|
@@ -1052,11 +1052,11 @@ async function configureLocalSignerMode(runtime, options, env) {
|
|
|
1052
1052
|
"",
|
|
1053
1053
|
`"${signerBinPath}" --socket "\${FASED_WALLET_LOCAL_SIGNER_BACKEND_SOCKET:-$FASED_WALLET_LOCAL_SIGNER_SOCKET}"`
|
|
1054
1054
|
];
|
|
1055
|
-
|
|
1055
|
+
syncFs.mkdirSync(path.dirname(signerEnvPath), {
|
|
1056
1056
|
recursive: true,
|
|
1057
1057
|
mode: 448
|
|
1058
1058
|
});
|
|
1059
|
-
|
|
1059
|
+
syncFs.writeFileSync(signerEnvPath, `${signerEnvLines.join("\n")}\n`, {
|
|
1060
1060
|
encoding: "utf8",
|
|
1061
1061
|
mode: 384
|
|
1062
1062
|
});
|
|
@@ -1500,10 +1500,10 @@ async function walletKeystoreInitCommand(runtime = defaultRuntime, options = {})
|
|
|
1500
1500
|
}
|
|
1501
1501
|
const chain = options.chain ?? "solana";
|
|
1502
1502
|
const outPath = resolveEmbeddedKeystorePathForChain(env, chain, options.out, options.walletId);
|
|
1503
|
-
if (
|
|
1503
|
+
if (syncFs.existsSync(outPath) && !options.force) {
|
|
1504
1504
|
throw new Error(`Keystore already exists: ${outPath}`);
|
|
1505
1505
|
}
|
|
1506
|
-
|
|
1506
|
+
syncFs.mkdirSync(path.dirname(outPath), {
|
|
1507
1507
|
recursive: true,
|
|
1508
1508
|
mode: 448
|
|
1509
1509
|
});
|
|
@@ -1518,14 +1518,14 @@ async function walletKeystoreInitCommand(runtime = defaultRuntime, options = {})
|
|
|
1518
1518
|
passphrase,
|
|
1519
1519
|
publicKey
|
|
1520
1520
|
});
|
|
1521
|
-
|
|
1521
|
+
syncFs.writeFileSync(outPath, `${JSON.stringify(envelope, null, 2)}\n`, {
|
|
1522
1522
|
encoding: "utf8",
|
|
1523
1523
|
mode: 384
|
|
1524
1524
|
});
|
|
1525
1525
|
addressOut = publicKey;
|
|
1526
1526
|
privateKeyOut = Buffer.from(secretKey).toString("base64");
|
|
1527
1527
|
try {
|
|
1528
|
-
|
|
1528
|
+
syncFs.chmodSync(outPath, 384);
|
|
1529
1529
|
} catch {}
|
|
1530
1530
|
const cfg = options.skipProviderConfig ? ensureWalletMaterialConfig(loadConfig(), {
|
|
1531
1531
|
keystorePath: outPath,
|
|
@@ -1600,10 +1600,10 @@ async function walletKeystoreImportCommand(runtime = defaultRuntime, options = {
|
|
|
1600
1600
|
throw new Error("Missing private key. Pass --private-key or set FASED_WALLET_PRIVATE_KEY.");
|
|
1601
1601
|
}
|
|
1602
1602
|
const outPath = resolveEmbeddedKeystorePathForChain(env, chain, options.out, options.walletId);
|
|
1603
|
-
if (
|
|
1603
|
+
if (syncFs.existsSync(outPath) && !options.force) {
|
|
1604
1604
|
throw new Error(`Keystore already exists: ${outPath}`);
|
|
1605
1605
|
}
|
|
1606
|
-
|
|
1606
|
+
syncFs.mkdirSync(path.dirname(outPath), {
|
|
1607
1607
|
recursive: true,
|
|
1608
1608
|
mode: 448
|
|
1609
1609
|
});
|
|
@@ -1615,13 +1615,13 @@ async function walletKeystoreImportCommand(runtime = defaultRuntime, options = {
|
|
|
1615
1615
|
passphrase,
|
|
1616
1616
|
publicKey
|
|
1617
1617
|
});
|
|
1618
|
-
|
|
1618
|
+
syncFs.writeFileSync(outPath, `${JSON.stringify(envelope, null, 2)}\n`, {
|
|
1619
1619
|
encoding: "utf8",
|
|
1620
1620
|
mode: 384
|
|
1621
1621
|
});
|
|
1622
1622
|
addressOut = publicKey;
|
|
1623
1623
|
try {
|
|
1624
|
-
|
|
1624
|
+
syncFs.chmodSync(outPath, 384);
|
|
1625
1625
|
} catch {}
|
|
1626
1626
|
const cfg = options.skipProviderConfig ? ensureWalletMaterialConfig(loadConfig(), {
|
|
1627
1627
|
keystorePath: outPath,
|
|
@@ -1683,7 +1683,7 @@ async function walletKeystoreStatusCommand(runtime = defaultRuntime, options = {
|
|
|
1683
1683
|
const cfg = loadConfig();
|
|
1684
1684
|
const chain = options.chain ?? "solana";
|
|
1685
1685
|
const keystorePath = resolveEmbeddedKeystorePathForChain(env, chain, cfg.wallet?.keystore?.path, options.walletId);
|
|
1686
|
-
const exists =
|
|
1686
|
+
const exists = syncFs.existsSync(keystorePath);
|
|
1687
1687
|
const providerId = cfg.wallet?.provider?.id;
|
|
1688
1688
|
let address;
|
|
1689
1689
|
let unlocked = false;
|
|
@@ -1691,7 +1691,7 @@ async function walletKeystoreStatusCommand(runtime = defaultRuntime, options = {
|
|
|
1691
1691
|
let detectedType = "missing";
|
|
1692
1692
|
if (exists) {
|
|
1693
1693
|
const passphrase = resolveKeystorePassphrase(undefined, env);
|
|
1694
|
-
const raw =
|
|
1694
|
+
const raw = syncFs.readFileSync(keystorePath, "utf8");
|
|
1695
1695
|
detectedType = detectEmbeddedKeystoreType(raw);
|
|
1696
1696
|
if (passphrase) {
|
|
1697
1697
|
try {
|
|
@@ -1756,14 +1756,14 @@ async function walletKeystoreValidateCommand(runtime = defaultRuntime, options =
|
|
|
1756
1756
|
};
|
|
1757
1757
|
let raw = "";
|
|
1758
1758
|
let detectedType = "missing";
|
|
1759
|
-
if (!
|
|
1759
|
+
if (!syncFs.existsSync(keystorePath)) {
|
|
1760
1760
|
result.checks.push({
|
|
1761
1761
|
id: "keystore.exists",
|
|
1762
1762
|
ok: false,
|
|
1763
1763
|
message: `missing: ${keystorePath}`
|
|
1764
1764
|
});
|
|
1765
1765
|
} else {
|
|
1766
|
-
raw =
|
|
1766
|
+
raw = syncFs.readFileSync(keystorePath, "utf8");
|
|
1767
1767
|
detectedType = detectEmbeddedKeystoreType(raw);
|
|
1768
1768
|
result.checks.push({
|
|
1769
1769
|
id: "keystore.exists",
|
|
@@ -1865,7 +1865,7 @@ async function walletKeystoreValidateCommand(runtime = defaultRuntime, options =
|
|
|
1865
1865
|
async function walletKeystorePassphraseInitCommand(runtime = defaultRuntime, options = {}) {
|
|
1866
1866
|
const env = process.env ?? process.env;
|
|
1867
1867
|
const outPath = resolvePassphraseFilePath(env, options.out);
|
|
1868
|
-
if (
|
|
1868
|
+
if (syncFs.existsSync(outPath) && !options.force) {
|
|
1869
1869
|
throw new Error(`Passphrase file already exists: ${outPath} (use --force to overwrite)`);
|
|
1870
1870
|
}
|
|
1871
1871
|
const bytes = typeof options.length === "number" && Number.isFinite(options.length) && options.length >= 16 ? Math.floor(options.length) : 24;
|
|
@@ -1887,15 +1887,15 @@ async function walletKeystorePassphraseRotateCommand(runtime = defaultRuntime, o
|
|
|
1887
1887
|
const cfg = loadConfig();
|
|
1888
1888
|
const keystorePath = resolveEmbeddedKeystorePath(env, cfg.wallet?.keystore?.path);
|
|
1889
1889
|
const passphraseFile = resolvePassphraseFilePath(env, options.file);
|
|
1890
|
-
if (!
|
|
1890
|
+
if (!syncFs.existsSync(keystorePath)) {
|
|
1891
1891
|
throw new Error(`Keystore missing: ${keystorePath}`);
|
|
1892
1892
|
}
|
|
1893
|
-
const oldPassphrase = (options.oldPassphrase ?? (
|
|
1893
|
+
const oldPassphrase = (options.oldPassphrase ?? (syncFs.existsSync(passphraseFile) ? syncFs.readFileSync(passphraseFile, "utf8") : "")).trim() || String(env.FASED_WALLET_PASSPHRASE ?? "").trim();
|
|
1894
1894
|
if (!oldPassphrase) {
|
|
1895
1895
|
throw new Error("Missing old passphrase. Provide --old-passphrase or configure passphrase file/env.");
|
|
1896
1896
|
}
|
|
1897
1897
|
const newPassphrase = (options.newPassphrase ?? "").trim() || randomBytes(24).toString("base64url");
|
|
1898
|
-
const raw =
|
|
1898
|
+
const raw = syncFs.readFileSync(keystorePath, "utf8");
|
|
1899
1899
|
const detected = detectEmbeddedKeystoreType(raw);
|
|
1900
1900
|
if (detected === "solana-envelope") {
|
|
1901
1901
|
const envelope = parseSolanaKeystoreEnvelope(raw);
|
|
@@ -1908,7 +1908,7 @@ async function walletKeystorePassphraseRotateCommand(runtime = defaultRuntime, o
|
|
|
1908
1908
|
passphrase: newPassphrase,
|
|
1909
1909
|
publicKey: envelope.publicKey
|
|
1910
1910
|
});
|
|
1911
|
-
|
|
1911
|
+
syncFs.writeFileSync(keystorePath, `${JSON.stringify(nextEnvelope, null, 2)}\n`, {
|
|
1912
1912
|
encoding: "utf8",
|
|
1913
1913
|
mode: 384
|
|
1914
1914
|
});
|
|
@@ -1933,10 +1933,10 @@ async function walletKeystoreExportCommand(runtime = defaultRuntime, options = {
|
|
|
1933
1933
|
const env = process.env ?? process.env;
|
|
1934
1934
|
const cfg = loadConfig();
|
|
1935
1935
|
const keystorePath = resolveEmbeddedKeystorePath(env, cfg.wallet?.keystore?.path);
|
|
1936
|
-
if (!
|
|
1936
|
+
if (!syncFs.existsSync(keystorePath)) {
|
|
1937
1937
|
throw new Error(`Keystore missing: ${keystorePath}`);
|
|
1938
1938
|
}
|
|
1939
|
-
const raw =
|
|
1939
|
+
const raw = syncFs.readFileSync(keystorePath, "utf8");
|
|
1940
1940
|
const detected = detectEmbeddedKeystoreType(raw);
|
|
1941
1941
|
const outPath = options.out?.trim() ? path.resolve(options.out.trim()) : undefined;
|
|
1942
1942
|
const payload = {
|
|
@@ -1949,11 +1949,11 @@ async function walletKeystoreExportCommand(runtime = defaultRuntime, options = {
|
|
|
1949
1949
|
payload.keystore = raw;
|
|
1950
1950
|
}
|
|
1951
1951
|
if (outPath) {
|
|
1952
|
-
|
|
1952
|
+
syncFs.mkdirSync(path.dirname(outPath), {
|
|
1953
1953
|
recursive: true,
|
|
1954
1954
|
mode: 448
|
|
1955
1955
|
});
|
|
1956
|
-
|
|
1956
|
+
syncFs.writeFileSync(outPath, raw, {
|
|
1957
1957
|
encoding: "utf8",
|
|
1958
1958
|
mode: 384
|
|
1959
1959
|
});
|
|
@@ -2139,7 +2139,7 @@ async function collectWalletSignerDoctorReport(env = process.env, options = {})
|
|
|
2139
2139
|
const isNotFoundError = (err) => err?.code === "ENOENT";
|
|
2140
2140
|
if (isLocalSigner) {
|
|
2141
2141
|
try {
|
|
2142
|
-
const st =
|
|
2142
|
+
const st = syncFs.statSync(socketPath);
|
|
2143
2143
|
push("socket.exists", st.isSocket?.() ?? true, socketPath);
|
|
2144
2144
|
try {
|
|
2145
2145
|
const mode = st.mode & 511;
|
|
@@ -2149,7 +2149,7 @@ async function collectWalletSignerDoctorReport(env = process.env, options = {})
|
|
|
2149
2149
|
push("socket.exists", localSignerSetupPending && isNotFoundError(err), localSignerSetupPending && isNotFoundError(err) ? "Configure" : String(err));
|
|
2150
2150
|
}
|
|
2151
2151
|
try {
|
|
2152
|
-
const pidRaw =
|
|
2152
|
+
const pidRaw = syncFs.readFileSync(pidPath, "utf8").trim();
|
|
2153
2153
|
const pid = Number.parseInt(pidRaw, 10);
|
|
2154
2154
|
if (Number.isFinite(pid) && pid > 1) {
|
|
2155
2155
|
try {
|
|
@@ -2165,7 +2165,7 @@ async function collectWalletSignerDoctorReport(env = process.env, options = {})
|
|
|
2165
2165
|
push("pid.alive", localSignerSetupPending && isNotFoundError(err), localSignerSetupPending && isNotFoundError(err) ? "Configure" : String(err));
|
|
2166
2166
|
}
|
|
2167
2167
|
try {
|
|
2168
|
-
const st =
|
|
2168
|
+
const st = syncFs.statSync(auditPath);
|
|
2169
2169
|
push("audit.exists", true, `bytes=${st.size}`);
|
|
2170
2170
|
} catch (err) {
|
|
2171
2171
|
push("audit.exists", localSignerSetupPending && isNotFoundError(err), localSignerSetupPending && isNotFoundError(err) ? "Configure" : String(err));
|
|
@@ -2193,14 +2193,14 @@ async function collectWalletSignerDoctorReport(env = process.env, options = {})
|
|
|
2193
2193
|
return "";
|
|
2194
2194
|
}
|
|
2195
2195
|
try {
|
|
2196
|
-
return
|
|
2196
|
+
return syncFs.readFileSync(p, "utf8").trim();
|
|
2197
2197
|
} catch {
|
|
2198
2198
|
return "";
|
|
2199
2199
|
}
|
|
2200
2200
|
})();
|
|
2201
2201
|
const inspectKeystore = (label, keystorePath) => {
|
|
2202
2202
|
try {
|
|
2203
|
-
const raw =
|
|
2203
|
+
const raw = syncFs.readFileSync(keystorePath, "utf8");
|
|
2204
2204
|
const kind = detectEmbeddedKeystoreType(raw);
|
|
2205
2205
|
if (kind === "unknown") {
|
|
2206
2206
|
push(`keystore.file.${label}`, false, `${keystorePath} type=unknown (expected fased-solana-keypair envelope)`);
|
|
@@ -2257,7 +2257,7 @@ async function collectWalletSignerDoctorReport(env = process.env, options = {})
|
|
|
2257
2257
|
return true;
|
|
2258
2258
|
}
|
|
2259
2259
|
const defaultPath = resolveEmbeddedKeystorePathForChain(effectiveEnv, "solana");
|
|
2260
|
-
if (
|
|
2260
|
+
if (syncFs.existsSync(defaultPath)) {
|
|
2261
2261
|
return true;
|
|
2262
2262
|
}
|
|
2263
2263
|
if (providerDefaultWallet?.addresses?.solana) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import syncFs from "node:fs";
|
|
2
2
|
|
|
3
3
|
//#region src/config/cache-utils.ts
|
|
4
4
|
function resolveCacheTtlMs(params) {
|
|
@@ -16,7 +16,7 @@ function isCacheEnabled(ttlMs) {
|
|
|
16
16
|
}
|
|
17
17
|
function getFileMtimeMs(filePath) {
|
|
18
18
|
try {
|
|
19
|
-
return
|
|
19
|
+
return syncFs.statSync(filePath).mtimeMs;
|
|
20
20
|
} catch {
|
|
21
21
|
return undefined;
|
|
22
22
|
}
|
package/dist/config/includes.js
CHANGED
|
@@ -4,7 +4,7 @@ import { isBlockedObjectKey } from "../infra/prototype-keys.js";
|
|
|
4
4
|
import { canUseBoundaryFileOpen, openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
|
5
5
|
import { isPathInside } from "../security/scan-paths.js";
|
|
6
6
|
import "./prototype-keys.js";
|
|
7
|
-
import
|
|
7
|
+
import syncFs from "node:fs";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import JSON5 from "json5";
|
|
10
10
|
|
|
@@ -130,7 +130,7 @@ var IncludeProcessor = class IncludeProcessor {
|
|
|
130
130
|
throw new ConfigIncludeError(`Include path escapes config directory: ${includePath} (root: ${this.rootDir})`, includePath);
|
|
131
131
|
}
|
|
132
132
|
try {
|
|
133
|
-
const real =
|
|
133
|
+
const real = syncFs.realpathSync(normalized);
|
|
134
134
|
if (!isPathInside(this.rootRealDir, real)) {
|
|
135
135
|
throw new ConfigIncludeError(`Include path resolves outside config directory (symlink): ${includePath} (root: ${this.rootDir})`, includePath);
|
|
136
136
|
}
|
|
@@ -184,13 +184,13 @@ var IncludeProcessor = class IncludeProcessor {
|
|
|
184
184
|
};
|
|
185
185
|
function safeRealpath(target) {
|
|
186
186
|
try {
|
|
187
|
-
return
|
|
187
|
+
return syncFs.realpathSync(target);
|
|
188
188
|
} catch {
|
|
189
189
|
return target;
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
function readConfigIncludeFileWithGuards(params) {
|
|
193
|
-
const ioFs = params.ioFs ??
|
|
193
|
+
const ioFs = params.ioFs ?? syncFs;
|
|
194
194
|
const maxBytes = params.maxBytes ?? MAX_INCLUDE_FILE_BYTES;
|
|
195
195
|
if (!canUseBoundaryFileOpen(ioFs)) {
|
|
196
196
|
return ioFs.readFileSync(params.resolvedPath, "utf-8");
|
|
@@ -217,7 +217,7 @@ function readConfigIncludeFileWithGuards(params) {
|
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
219
|
const defaultResolver = {
|
|
220
|
-
readFile: (p) =>
|
|
220
|
+
readFile: (p) => syncFs.readFileSync(p, "utf-8"),
|
|
221
221
|
readFileWithGuards: ({ includePath, resolvedPath, rootRealDir }) => readConfigIncludeFileWithGuards({
|
|
222
222
|
includePath,
|
|
223
223
|
resolvedPath,
|