@fased/fased 0.1.61 → 0.1.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/README.md +38 -30
- package/config/dependency-ownership.json +1 -1
- package/config/signer-policies/README.md +49 -0
- package/config/signer-policies/agent.json.template +32 -0
- package/config/signer-policies/mining.json.template +69 -0
- package/config/signer-policies/network.json.template +5 -0
- package/config/signer-policies/vault.json.template +70 -0
- package/config/signer-protocol-v2.json +76 -0
- package/config/typescript-noemit-baseline.json +680 -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 +269 -33
- package/dist/agents/bash-tools.exec.js +10 -4
- package/dist/agents/bash-tools.shared.js +2 -2
- package/dist/agents/cli-credentials.js +4 -4
- package/dist/agents/current-model-catalog.js +3 -3
- 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/memory-search.js +7 -1
- package/dist/agents/model-catalog-access.js +1 -2
- package/dist/agents/model-catalog-snapshot.js +1 -1
- package/dist/agents/model-catalog-source.js +1 -1
- package/dist/agents/model-metadata.js +1 -1
- package/dist/agents/model-selection.js +2 -28
- package/dist/agents/models-config.providers.js +6 -6
- package/dist/agents/openai-codex-app-server.js +5 -5
- package/dist/agents/pi-embedded-runner/compact.js +15 -7
- package/dist/agents/pi-embedded-runner/model.js +1 -1
- package/dist/agents/pi-embedded-runner/run/attempt.js +24 -13
- package/dist/agents/pi-embedded-runner/run.js +2 -0
- package/dist/agents/pi-embedded-runner/tool-split.js +40 -2
- 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-tool-definition-adapter.js +16 -1
- package/dist/agents/pi-tools.js +2 -1
- package/dist/agents/sandbox/config.js +1 -1
- package/dist/agents/sandbox/context.js +27 -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/env-overrides.js +38 -28
- package/dist/agents/skills/local-loader.js +6 -6
- package/dist/agents/skills/plugin-skills.js +2 -2
- package/dist/agents/skills/trust.js +93 -0
- package/dist/agents/skills/workspace.js +141 -13
- package/dist/agents/skills-clawhub.js +36 -11
- 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-marketplace-scan.js +49 -0
- 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/marketplace-offer-draft-tool.js +1 -1
- package/dist/agents/tools/mining-tool.js +1 -1
- package/dist/agents/tools/session-status-tool.js +1 -1
- package/dist/agents/tools/wallet-action-tool.js +172 -36
- package/dist/agents/tools/wallet-skill-policy.js +65 -23
- package/dist/agents/tools/wallet-tool.js +7 -11
- 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/directive-handling.fast-lane.js +2 -1
- package/dist/auto-reply/reply/directive-handling.impl.js +2 -1
- package/dist/auto-reply/reply/directive-handling.model.js +2 -1
- package/dist/auto-reply/reply/directive-handling.persist.js +2 -2
- package/dist/auto-reply/reply/get-reply-directives-apply.js +2 -0
- package/dist/auto-reply/reply/get-reply-inline-actions.js +25 -1
- package/dist/auto-reply/reply/model-selection.js +7 -4
- 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 +4 -4
- package/dist/auto-reply/reply/session.js +3 -3
- package/dist/auto-reply/skill-commands.js +3 -3
- package/dist/auto-reply/status.js +6 -6
- package/dist/brand.js +1 -1
- package/dist/browser/chrome.executables.js +3 -3
- package/dist/browser/chrome.js +3 -3
- package/dist/browser/chrome.profile-decoration.js +6 -6
- 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/channel-web.js +2 -2
- 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-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 +10 -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/command-registry.js +1 -1
- package/dist/cli/program/register.onboard.js +2 -3
- package/dist/cli/program/register.wallet.js +16 -123
- package/dist/cli/providers-cli.js +1 -1
- package/dist/cli/sat-cli.js +129 -2
- package/dist/cli/secrets-cli.js +3 -3
- package/dist/cli/update-cli/update-command.js +260 -11
- package/dist/cli/windows-argv.js +2 -2
- package/dist/commands/auth-choice.apply.api-providers.js +3 -3
- 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-legacy-config.js +2 -13
- 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/managed-up.js +2 -2
- package/dist/commands/model-picker.js +6 -6
- package/dist/commands/models/auth.js +1 -1
- package/dist/commands/onboard-auth.config-gateways.js +1 -1
- package/dist/commands/onboard-auth.credentials.js +35 -11
- package/dist/commands/onboard-non-interactive/local/wallet-config.js +28 -27
- package/dist/commands/onboard-non-interactive/local.js +5 -1
- package/dist/commands/onboarding/plugin-install.js +2 -2
- 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 +570 -1913
- package/dist/config/cache-utils.js +2 -2
- package/dist/config/config.js +2 -2
- package/dist/config/includes.js +5 -5
- package/dist/config/io.js +66 -4
- package/dist/config/paths.js +3 -3
- package/dist/config/sat-runtime-ids.js +3 -3
- package/dist/config/schema.help.js +8 -7
- package/dist/config/schema.labels.js +5 -4
- 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-runtime.js +1 -0
- package/dist/config/zod-schema.js +5 -0
- package/dist/control-ui/assets/{app-BXA4gPvN.js → app-bR-fO5ty.js} +1511 -1555
- package/dist/control-ui/assets/{config-CU5Zi8Dh.js → config-LeImukCW.js} +10 -10
- package/dist/control-ui/assets/{federation-D10Q4eP_.js → federation-DgA9e-Pn.js} +364 -422
- package/dist/control-ui/assets/{index-D2QbJhVg.js → index-ckCxHwjy.js} +3 -3
- package/dist/control-ui/assets/{mining-BdhMn18r.js → mining-BgHFh0ei.js} +134 -114
- package/dist/control-ui/assets/mining-commit-DFpB_4JN.js +2 -0
- package/dist/control-ui/assets/{open-external-url-DwSiwMPl.js → open-external-url-ulF1B-sA.js} +3 -3
- package/dist/control-ui/assets/{providers-QMn4w2_f.js → providers-CIx9fxc6.js} +2 -2
- package/dist/control-ui/assets/{wallet-C2g294QT.js → wallet-DvStR_AT.js} +259 -377
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/version.json +1 -1
- package/dist/cron/service/store.js +2 -2
- package/dist/cron/store.js +6 -6
- package/dist/daemon/systemd-system.js +60 -54
- package/dist/discord/monitor/thread-bindings.state.js +2 -2
- package/dist/extensions/sat-mining/src/protocol-contract.js +43 -3
- package/dist/extensions/sat-mining/src/rpc-read.js +235 -67
- package/dist/extensions/sat-mining/src/sat-bond-layout.js +14 -11
- package/dist/extensions/sat-mining/src/signer-codec-manifest.js +406 -0
- package/dist/extensions/sat-mining/src/solana-submit.js +1038 -397
- package/dist/extensions/sat-mining/src/submission-ledger.js +349 -0
- package/dist/federation/auto-connect.js +98 -8
- package/dist/federation/marketplace-capability-adapter.js +33 -7
- package/dist/federation/marketplace-delivery-outbox.js +196 -0
- package/dist/federation/marketplace-delivery.js +351 -215
- package/dist/federation/marketplace-direct-payment.js +272 -141
- package/dist/federation/marketplace-escrow.js +607 -249
- package/dist/federation/marketplace-settlement-ledger.js +352 -0
- package/dist/federation/offers.js +9 -7
- package/dist/federation/peer-auth-v2.js +529 -0
- package/dist/gateway/a2a-http.js +425 -96
- package/dist/gateway/a2a-settlement.js +259 -153
- package/dist/gateway/a2a-task-store.js +524 -0
- package/dist/gateway/auth.js +38 -2
- package/dist/gateway/config-reload.js +46 -33
- 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 +9 -9
- package/dist/gateway/durable-capacity.js +31 -0
- package/dist/gateway/federation-http.js +540 -135
- package/dist/gateway/federation-marketplace-run-store.js +397 -0
- package/dist/gateway/federation-marketplace.js +535 -230
- package/dist/gateway/hooks-mapping.js +4 -4
- package/dist/gateway/mutating-admin-rpc-rate-limit.js +5 -0
- package/dist/gateway/security-path.js +1 -1
- package/dist/gateway/server-discovery.js +2 -2
- package/dist/gateway/server-http.js +1088 -1209
- package/dist/gateway/server-methods/chat.js +3 -3
- package/dist/gateway/server-methods/models.js +1 -1
- package/dist/gateway/server-methods/secrets.js +40 -0
- package/dist/gateway/server-methods/sessions.js +6 -6
- package/dist/gateway/server-methods/usage.js +2 -2
- package/dist/gateway/server-methods.js +1 -2
- package/dist/gateway/server-reload-handlers.js +196 -66
- package/dist/gateway/server-runtime-config.js +1 -1
- package/dist/gateway/server-secrets-runtime.js +288 -0
- package/dist/gateway/server.impl.js +73 -42
- 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 +3 -5
- 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/index.js +4 -2
- 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/fasedhub.js +64 -1
- 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/local-source-paired-update.js +538 -0
- package/dist/infra/managed-runtime-bootstrap.js +6 -6
- 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/restart.js +41 -10
- 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 +96 -0
- package/dist/infra/widearea-dns.js +3 -3
- package/dist/infra/wsl.js +2 -2
- package/dist/light-update-status.js +11 -11
- 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/backend-config.js +2 -1
- package/dist/memory/embeddings.js +2 -2
- package/dist/memory/internal.js +10 -10
- package/dist/memory/manager-sync-ops.js +7 -7
- package/dist/memory/repair-executor.js +17 -17
- package/dist/memory/session-files.js +16 -2
- 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-DxblobYM.js → accounts-Brn3-uWN.js} +1 -1
- package/dist/plugin-sdk/{actions-D4UNimWa.js → actions-DRu135h0.js} +2 -2
- package/dist/plugin-sdk/{active-listener-CFuy106s.js → active-listener-B_NMtgPL.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-Bv0hUOWL.js → audio-preflight-BYxAt775.js} +27 -27
- package/dist/plugin-sdk/{audit-Cs0K7LBp.js → audit-C5d2z5U1.js} +1 -1
- package/dist/plugin-sdk/{channel-access-D5aHoTY8.js → channel-access-CcFRdRPO.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-Dvch9mMQ.js → channel-access-configure-DaI5wevh.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-B0FUGc5A.js → chunk-CyoyqpbG.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-Bk--NU3E.js → chunk-items-DIRHG2gJ.js} +1 -1
- package/dist/plugin-sdk/command-status.d.ts +2 -2
- package/dist/plugin-sdk/command-status.js +27 -27
- package/dist/plugin-sdk/{commands-registry-DmDRhRAU.js → commands-registry-BfqdEWdF.js} +2 -2
- package/dist/plugin-sdk/{common-CfUOowOp.js → common-HCcXU-NR.js} +1 -1
- package/dist/plugin-sdk/{config-mxULv0fQ.js → config-DlWVeLFB.js} +7113 -6877
- package/dist/plugin-sdk/{config-schema-CGW6J3Pv.js → config-schema-BOT7kHb6.js} +6779 -3696
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +5 -5
- package/dist/plugin-sdk/discord.js +19 -19
- package/dist/plugin-sdk/file-lock.js +35 -4
- package/dist/plugin-sdk/{filesystem-manager-ZoHU8oA7.js → filesystem-manager-DoI8IBNF.js} +1 -1
- package/dist/plugin-sdk/{group-mentions-BHRff6j8.d.ts → group-mentions-q3hUTCt7.d.ts} +1 -1
- package/dist/plugin-sdk/{handle-action-DbVCF9HZ.js → handle-action-hvwapMKg.js} +13 -13
- package/dist/plugin-sdk/{helpers-BXbdgs5H.js → helpers-DMBU4oTo.js} +1 -1
- package/dist/plugin-sdk/{image-ops-D7jPxaph.js → image-ops-DQi0n_Tt.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +9 -27
- package/dist/plugin-sdk/index.js +29 -29
- package/dist/plugin-sdk/json-store.js +6 -6
- package/dist/plugin-sdk/{login-BRxww6nv.js → login-Ca583Okc.js} +3 -3
- package/dist/plugin-sdk/{login-qr-DJXsk9XH.js → login-qr-CGciBSNP.js} +3 -3
- package/dist/plugin-sdk/{manager-Y2S_5IlI.js → manager-BegWxNYX.js} +4 -4
- package/dist/plugin-sdk/{markdown-tables-DHLFQqaF.js → markdown-tables-DCOXEUfZ.js} +1 -1
- package/dist/plugin-sdk/{media-Czo4carg.js → media-CAdQF5TG.js} +47 -47
- package/dist/plugin-sdk/{memory-search-DTjIMw8J.js → memory-search-CrFPOeTH.js} +4 -1
- package/dist/plugin-sdk/{monitor-B9Cmt_Je.js → monitor-BCFDaqJ-.js} +31 -31
- package/dist/plugin-sdk/{monitor-B71iwAgC.js → monitor-BgbjRiPM.js} +32 -32
- package/dist/plugin-sdk/{openresponses-http-Du4GMmwo.js → openresponses-http-DFf87SMM.js} +27 -27
- package/dist/plugin-sdk/{optional-runtime-dependency-DdMbxS24.js → optional-runtime-dependency-0dznm3ZO.js} +1 -1
- package/dist/plugin-sdk/{outbound-Db8mRN6P.js → outbound-BgVDdHxx.js} +6 -6
- package/dist/plugin-sdk/{outbound-attachment-BqFjcypb.js → outbound-attachment-QqTnIhZL.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-BMkkS038.d.ts → pairing-message-CS-9BHug.d.ts} +2 -2
- package/dist/plugin-sdk/{pairing-message-B3GC_7CD.js → pairing-message-D0CoLHRJ.js} +1 -1
- package/dist/plugin-sdk/{pairing-store-CQikgIbw.js → pairing-store-BChahgI2.js} +2 -2
- package/dist/plugin-sdk/{pi-model-discovery-CY3m5zJP.js → pi-model-discovery-BX_JLcEJ.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-DSh1T2pn.js → pi-model-discovery-runtime-DxTMz_XF.js} +2 -2
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
- package/dist/plugin-sdk/{pw-ai-AFUqn-tQ.js → pw-ai-natjh3rm.js} +3 -3
- package/dist/plugin-sdk/{qmd-manager-DSyx77KY.js → qmd-manager-CgRaTxUq.js} +1 -1
- package/dist/plugin-sdk/{query-expansion-CAI2kKLQ.js → query-expansion-BG3FgzF7.js} +14 -3
- package/dist/plugin-sdk/{replies-Fzh9PhXl.js → replies-ChYo5ZQM.js} +2 -2
- package/dist/plugin-sdk/{resolve-outbound-target-KpF3co6T.js → resolve-outbound-target-D-KGgHJZ.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-CDl74O19.js → resolve-route-C8tvQm8Z.js} +1 -1
- package/dist/plugin-sdk/{retry-policy-D4uiqUOG.js → retry-policy-C6SjKjQA.js} +1 -1
- package/dist/plugin-sdk/{runtime-Bb6KRnCC.js → runtime-2B9_WKoI.js} +8 -3
- package/dist/plugin-sdk/{runtime-dependency-DLDmB94f.js → runtime-dependency-DczkvPxn.js} +2 -2
- package/dist/plugin-sdk/sat-runtime.d.ts +549 -309
- package/dist/plugin-sdk/sat-runtime.js +29 -29
- package/dist/plugin-sdk/{send-C4k4JuJN.js → send-B6KkGKZD.js} +6 -6
- package/dist/plugin-sdk/{send-D-uDKGIq.js → send-CFzGKJXo.js} +6 -6
- package/dist/plugin-sdk/{send-Du8ykP1k.js → send-DCO441U7.js} +8 -8
- package/dist/plugin-sdk/{send-5nFktR1n.js → send-gDoGA-7e.js} +5 -5
- package/dist/plugin-sdk/{send-Bfzf11VY.js → send-q9HXrSwK.js} +7 -7
- package/dist/plugin-sdk/{session-CS-Td9EM.js → session-DHD4ZKyG.js} +2 -2
- package/dist/plugin-sdk/{skill-commands-CFAlXWHk.js → skill-commands-FKEPLS7T.js} +201 -26
- package/dist/plugin-sdk/{slack-D_bbE6Yd.js → slack-BUTt8cxK.js} +39 -39
- package/dist/plugin-sdk/{slack-actions-BcMkNv1Z.js → slack-actions-DhbMcp8M.js} +11 -11
- package/dist/plugin-sdk/slack.d.ts +5 -5
- package/dist/plugin-sdk/slack.js +9 -9
- package/dist/plugin-sdk/{sticker-cache-Dqo9nRhi.js → sticker-cache-D0wHVqjt.js} +3 -3
- package/dist/plugin-sdk/{tables-bFXyRpkx.js → tables-B3jr0Pvq.js} +1 -1
- package/dist/plugin-sdk/{targets-DH7a9lKB.js → targets-CtSbTxYX.js} +1 -1
- package/dist/plugin-sdk/{telegram-actions-Cnag7JTH.js → telegram-actions-CC_qN4v0.js} +30 -30
- package/dist/plugin-sdk/telegram.d.ts +5 -5
- package/dist/plugin-sdk/telegram.js +8 -8
- package/dist/plugin-sdk/{thread-bindings.lifecycle-CgOvvdw8.js → thread-bindings.lifecycle-QbkNl-m6.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-CQpk44Hq.js → thread-bindings.state-D9hg_M1c.js} +2 -2
- package/dist/plugin-sdk/tmp-fased-dir-xOTGlzBE.d.ts +486 -0
- package/dist/plugin-sdk/{types-CLIvQaVg.d.ts → types-C3avNytw.d.ts} +3 -4
- package/dist/plugin-sdk/{types-DyhXnYUr.d.ts → types-D0kDG8l0.d.ts} +3 -2
- package/dist/plugin-sdk/{types-BYDL6dQj.d.ts → types-DWfbSAaM.d.ts} +2 -2
- package/dist/plugin-sdk/{types.plugin-_fbu40Re.d.ts → types.plugin-BcSBq42x.d.ts} +8 -3
- package/dist/plugin-sdk/{web-BInKQkc4.js → web-BXsJ1vqe.js} +32 -32
- package/dist/plugin-sdk/{whatsapp-actions-BtSc2CBv.js → whatsapp-actions-Bj_rOncr.js} +13 -13
- package/dist/plugin-sdk/{whatsapp-heartbeat-Bg9TuYzl.js → whatsapp-heartbeat-B1WHkJIg.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +5 -5
- package/dist/plugin-sdk/whatsapp.js +12 -12
- package/dist/plugin-sdk/{wsl-C4DGFkOd.js → wsl-J-HscWxS.js} +3 -3
- 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/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/refresh.js +1 -1
- package/dist/providers/registry.js +1 -1
- package/dist/secrets/apply.js +17 -17
- package/dist/secrets/audit.js +11 -11
- package/dist/secrets/runtime.js +1 -1
- 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/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/token.js +5 -5
- package/dist/utils.js +5 -5
- package/dist/wallet/external-submission-ledger.js +376 -0
- package/dist/wallet/legacy-embedded-keystore.js +40 -0
- package/dist/wallet/local-socket-signer-archive.js +30 -0
- package/dist/wallet/local-socket-signer-lifecycle.js +97 -0
- package/dist/wallet/local-socket-signer-policy.js +166 -0
- package/dist/wallet/local-socket-signer-protocol.js +561 -118
- package/dist/wallet/native-signer-wallet-id.js +25 -0
- package/dist/wallet/providers/alchemy-adapter.js +3 -0
- package/dist/wallet/providers/local-socket-signer-adapter.js +382 -107
- package/dist/wallet/providers/turnkey-adapter.js +292 -34
- package/dist/wallet/providers/wallet-standard-adapter.js +100 -0
- package/dist/wallet/signer-network-admin.js +184 -0
- package/dist/wallet/signer-protocol-v2.generated.js +90 -0
- package/dist/wallet/solana-bond-signing.js +157 -69
- package/dist/wallet/solana-reviewed-transaction.js +375 -0
- package/dist/wallet/solana-swap.js +520 -64
- package/dist/wallet/solana-transaction-inspection.js +106 -4
- package/dist/wallet/solana-trigger.js +658 -320
- package/dist/wallet/turnkey-reviewed-state.js +370 -0
- package/dist/wallet/wallet-approval-auth.js +20 -31
- package/dist/wallet/wallet-atomic-state.js +53 -0
- package/dist/wallet/wallet-audit-log.js +5 -5
- package/dist/wallet/wallet-canary.js +0 -1
- package/dist/wallet/wallet-inbound-events.js +19 -14
- package/dist/wallet/wallet-observability.js +5 -5
- package/dist/wallet/wallet-policy-simulation.js +1 -1
- package/dist/wallet/wallet-policy.js +95 -41
- package/dist/wallet/wallet-provider-capabilities.js +28 -4
- package/dist/wallet/wallet-provider-registry.js +64 -51
- package/dist/wallet/wallet-provider-resolver.js +62 -63
- package/dist/wallet/wallet-runtime-config.js +31 -44
- package/dist/wallet/wallet-secrets-store.js +44 -22
- package/dist/wallet/wallet-send-approvals.js +1894 -592
- package/dist/wallet/wallet-send-execution-ledger.js +292 -0
- package/dist/wallet/wallet-settlement-links.js +17 -16
- package/dist/wallet/wallet-standard-review.js +353 -0
- package/dist/wallet/wallet-status.js +0 -9
- package/dist/wallet/wallet-task-ledger.js +16 -2
- package/dist/web/accounts.js +3 -3
- package/dist/web/auth-store.js +18 -18
- package/dist/web/auto-reply/heartbeat-runner.js +1 -1
- package/dist/web/auto-reply/monitor.js +2 -2
- package/dist/web/session.js +4 -4
- package/dist/wizard/host-security-capability.js +15 -24
- package/dist/wizard/onboarding.finalize.js +63 -184
- package/dist/wizard/onboarding.host-security.js +118 -1368
- package/dist/wizard/onboarding.js +180 -242
- package/dist/wizard/onboarding.wallet.js +323 -829
- 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 +18 -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 +18 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +18 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/index.ts +498 -153
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/sat-mining/signer-codec-schema.v1.json +374 -0
- package/extensions/sat-mining/src/audit-store.ts +50 -5
- package/extensions/sat-mining/src/claim-service.ts +85 -14
- package/extensions/sat-mining/src/config.ts +9 -0
- package/extensions/sat-mining/src/cycle-progress.ts +16 -8
- package/extensions/sat-mining/src/epoch-service.ts +9 -5
- package/extensions/sat-mining/src/gateway-runner.ts +21 -1
- package/extensions/sat-mining/src/protocol-contract.ts +45 -1
- package/extensions/sat-mining/src/recovery-service.ts +312 -0
- package/extensions/sat-mining/src/round-watcher.ts +391 -81
- package/extensions/sat-mining/src/rpc-read.ts +330 -89
- package/extensions/sat-mining/src/runtime.ts +14 -0
- package/extensions/sat-mining/src/sat-bond-layout.ts +6 -0
- package/extensions/sat-mining/src/signer-codec-manifest.ts +429 -0
- package/extensions/sat-mining/src/solana-submit.ts +1199 -428
- package/extensions/sat-mining/src/submission-ledger.ts +433 -0
- 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 +18 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +18 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +18 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +18 -0
- package/extensions/zalouser/package.json +1 -1
- package/install.sh +4955 -0
- package/package.json +24 -5
- package/scripts/fased-host-updater.mjs +1421 -0
- package/scripts/fased-host-updaterctl.mjs +186 -0
- package/scripts/fased-managed-service.sh +36 -0
- package/scripts/fased-managed-updater.mjs +3065 -156
- package/scripts/fased-signer-enroll-hosting.sh +275 -0
- package/scripts/fased-signer-network-hosting.sh +143 -0
- package/scripts/fased-signer-owner-policy.mjs +1430 -0
- package/scripts/fased-signer-policy-hosting.sh +50 -0
- package/scripts/fased-signer-policy-local.sh +26 -0
- package/scripts/hosted-release-manifest.mjs +185 -0
- package/scripts/install-fased-signerd.sh +217 -0
- package/scripts/install-managed-runtime.mjs +212 -10
- package/scripts/managed-runtime-layout.mjs +75 -3
- package/scripts/migrate-hosted-signer-v2.mjs +58 -0
- package/scripts/start-managed.sh +169 -360
- package/dist/control-ui/assets/mining-commit-R-6nu87p.js +0 -2
- package/dist/plugin-sdk/tmp-fased-dir-BdFQvrvw.d.ts +0 -77
- package/dist/wallet/local-socket-signer-broker.js +0 -224
- package/dist/wallet/local-socket-signer-custody.js +0 -42
- package/dist/wallet/providers/embedded-keystore-adapter.js +0 -402
- package/dist/wallet/providers/privy-adapter.js +0 -80
- package/dist/wallet/wallet-custody.js +0 -1836
package/dist/acp/client.js
CHANGED
|
@@ -2,7 +2,7 @@ import { isKnownCoreToolId } from "../agents/tool-catalog.js";
|
|
|
2
2
|
import { DANGEROUS_ACP_TOOLS } from "../security/dangerous-tools.js";
|
|
3
3
|
import { ensureFasedAgentCliOnPath } from "../infra/path-env.js";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
-
import
|
|
5
|
+
import syncFs from "node:fs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { spawn } from "node:child_process";
|
|
@@ -269,7 +269,7 @@ function resolveSelfEntryPath() {
|
|
|
269
269
|
try {
|
|
270
270
|
const here = fileURLToPath(import.meta.url);
|
|
271
271
|
const candidate = path.resolve(path.dirname(here), "..", "entry.js");
|
|
272
|
-
if (
|
|
272
|
+
if (syncFs.existsSync(candidate)) {
|
|
273
273
|
return candidate;
|
|
274
274
|
}
|
|
275
275
|
} catch {}
|
package/dist/acp/secret-file.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveUserPath } from "../utils.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
|
|
4
4
|
//#region src/acp/secret-file.ts
|
|
5
5
|
function readSecretFromFile(filePath, label) {
|
|
@@ -9,7 +9,7 @@ function readSecretFromFile(filePath, label) {
|
|
|
9
9
|
}
|
|
10
10
|
let raw = "";
|
|
11
11
|
try {
|
|
12
|
-
raw =
|
|
12
|
+
raw = syncFs.readFileSync(resolvedPath, "utf8");
|
|
13
13
|
} catch (err) {
|
|
14
14
|
throw new Error(`Failed to read ${label} file at ${resolvedPath}: ${String(err)}`, { cause: err });
|
|
15
15
|
}
|
|
@@ -6,7 +6,7 @@ import { parseAgentSessionKey } from "../sessions/session-key-utils.js";
|
|
|
6
6
|
import { DEFAULT_AGENT_ID, normalizeAgentId, resolveAgentIdFromSessionKey } from "../routing/session-key.js";
|
|
7
7
|
import { resolveEffectiveAgentSkillFilter } from "./skills/agent-filter.js";
|
|
8
8
|
import { resolveDefaultAgentWorkspaceDir } from "./workspace.js";
|
|
9
|
-
import
|
|
9
|
+
import syncFs from "node:fs";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
|
|
12
12
|
//#region src/agents/agent-scope.ts
|
|
@@ -245,7 +245,7 @@ function normalizePathForComparison(input) {
|
|
|
245
245
|
const resolved = path.resolve(stripNullBytes(resolveUserPath(input)));
|
|
246
246
|
let normalized = resolved;
|
|
247
247
|
try {
|
|
248
|
-
normalized =
|
|
248
|
+
normalized = syncFs.realpathSync.native(resolved);
|
|
249
249
|
} catch {}
|
|
250
250
|
if (process.platform === "win32") {
|
|
251
251
|
return normalized.toLowerCase();
|
|
@@ -3,9 +3,9 @@ import { PATH_ALIAS_POLICIES } from "../infra/path-alias-guards.js";
|
|
|
3
3
|
import { writeFileWithinRoot } from "../infra/fs-safe.js";
|
|
4
4
|
import { applyUpdateHunk } from "./apply-patch-update.js";
|
|
5
5
|
import { assertSandboxPath, resolveSandboxInputPath } from "./sandbox-paths.js";
|
|
6
|
-
import
|
|
6
|
+
import syncFs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
|
-
import fs
|
|
8
|
+
import fs from "node:fs/promises";
|
|
9
9
|
import { Type } from "@sinclair/typebox";
|
|
10
10
|
|
|
11
11
|
//#region src/agents/apply-patch.ts
|
|
@@ -159,7 +159,7 @@ function resolvePatchFileOps(options) {
|
|
|
159
159
|
return {
|
|
160
160
|
readFile: async (filePath) => {
|
|
161
161
|
if (!workspaceOnly) {
|
|
162
|
-
return await fs
|
|
162
|
+
return await fs.readFile(filePath, "utf8");
|
|
163
163
|
}
|
|
164
164
|
const opened = await openBoundaryFile({
|
|
165
165
|
absolutePath: filePath,
|
|
@@ -168,14 +168,14 @@ function resolvePatchFileOps(options) {
|
|
|
168
168
|
});
|
|
169
169
|
assertBoundaryRead(opened, filePath);
|
|
170
170
|
try {
|
|
171
|
-
return
|
|
171
|
+
return syncFs.readFileSync(opened.fd, "utf8");
|
|
172
172
|
} finally {
|
|
173
|
-
|
|
173
|
+
syncFs.closeSync(opened.fd);
|
|
174
174
|
}
|
|
175
175
|
},
|
|
176
176
|
writeFile: async (filePath, content) => {
|
|
177
177
|
if (!workspaceOnly) {
|
|
178
|
-
await fs
|
|
178
|
+
await fs.writeFile(filePath, content, "utf8");
|
|
179
179
|
return;
|
|
180
180
|
}
|
|
181
181
|
const relative = toRelativeWorkspacePath(options.cwd, filePath);
|
|
@@ -186,8 +186,8 @@ function resolvePatchFileOps(options) {
|
|
|
186
186
|
encoding: "utf8"
|
|
187
187
|
});
|
|
188
188
|
},
|
|
189
|
-
remove: (filePath) => fs
|
|
190
|
-
mkdirp: (dir) => fs
|
|
189
|
+
remove: (filePath) => fs.rm(filePath),
|
|
190
|
+
mkdirp: (dir) => fs.mkdir(dir, { recursive: true }).then(() => {})
|
|
191
191
|
};
|
|
192
192
|
}
|
|
193
193
|
async function ensureDir(filePath, ops) {
|
|
@@ -2,7 +2,7 @@ import { resolveUserPath } from "../../utils.js";
|
|
|
2
2
|
import { saveJsonFile } from "../../infra/json-file.js";
|
|
3
3
|
import { AUTH_PROFILE_FILENAME, AUTH_STORE_VERSION, LEGACY_AUTH_FILENAME } from "./constants.js";
|
|
4
4
|
import { resolveFasedAgentAgentDir } from "../agent-paths.js";
|
|
5
|
-
import
|
|
5
|
+
import syncFs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
|
8
8
|
//#region src/agents/auth-profiles/paths.ts
|
|
@@ -19,7 +19,7 @@ function resolveAuthStorePathForDisplay(agentDir) {
|
|
|
19
19
|
return pathname.startsWith("~") ? pathname : resolveUserPath(pathname);
|
|
20
20
|
}
|
|
21
21
|
function ensureAuthStoreFile(pathname) {
|
|
22
|
-
if (
|
|
22
|
+
if (syncFs.existsSync(pathname)) {
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
const payload = {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { resolveOAuthPath } from "../../config/paths.js";
|
|
2
|
+
import { coerceSecretRef, isSecretRef } from "../../config/types.secrets.js";
|
|
2
3
|
import { loadJsonFile, saveJsonFile } from "../../infra/json-file.js";
|
|
3
4
|
import { AUTH_STORE_LOCK_OPTIONS, AUTH_STORE_VERSION, log } from "./constants.js";
|
|
4
5
|
import { withFileLock } from "../../plugin-sdk/file-lock.js";
|
|
5
6
|
import "../../infra/file-lock.js";
|
|
6
7
|
import { syncExternalCliCredentials } from "./external-cli-sync.js";
|
|
7
8
|
import { ensureAuthStoreFile, resolveAuthStorePath, resolveLegacyAuthStorePath } from "./paths.js";
|
|
8
|
-
import
|
|
9
|
+
import syncFs from "node:fs";
|
|
9
10
|
|
|
10
11
|
//#region src/agents/auth-profiles/store.ts
|
|
11
12
|
const AUTH_PROFILE_TYPES = new Set([
|
|
@@ -13,6 +14,18 @@ const AUTH_PROFILE_TYPES = new Set([
|
|
|
13
14
|
"oauth",
|
|
14
15
|
"token"
|
|
15
16
|
]);
|
|
17
|
+
const AUTH_PROFILE_FAILURE_REASONS = new Set([
|
|
18
|
+
"auth",
|
|
19
|
+
"auth_permanent",
|
|
20
|
+
"format",
|
|
21
|
+
"rate_limit",
|
|
22
|
+
"overloaded",
|
|
23
|
+
"billing",
|
|
24
|
+
"timeout",
|
|
25
|
+
"model_not_found",
|
|
26
|
+
"session_expired",
|
|
27
|
+
"unknown"
|
|
28
|
+
]);
|
|
16
29
|
const runtimeAuthStoreSnapshots = new Map();
|
|
17
30
|
function resolveRuntimeStoreKey(agentDir) {
|
|
18
31
|
return resolveAuthStorePath(agentDir);
|
|
@@ -89,8 +102,78 @@ function normalizeRawCredentialEntry(raw) {
|
|
|
89
102
|
}
|
|
90
103
|
return entry;
|
|
91
104
|
}
|
|
92
|
-
function
|
|
93
|
-
|
|
105
|
+
function isRecord(value) {
|
|
106
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
107
|
+
}
|
|
108
|
+
function isUsableString(value) {
|
|
109
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
110
|
+
}
|
|
111
|
+
function isOptionalString(value) {
|
|
112
|
+
return value === undefined || typeof value === "string";
|
|
113
|
+
}
|
|
114
|
+
function isOptionalFiniteNumber(value) {
|
|
115
|
+
return value === undefined || typeof value === "number" && Number.isFinite(value);
|
|
116
|
+
}
|
|
117
|
+
function isValidStringMetadata(value) {
|
|
118
|
+
return value === undefined || isRecord(value) && Object.values(value).every((entry) => typeof entry === "string");
|
|
119
|
+
}
|
|
120
|
+
function isSupportedStoredSecretRef(value) {
|
|
121
|
+
if (isSecretRef(value)) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
if (!isRecord(value)) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
const keys = Object.keys(value).toSorted();
|
|
128
|
+
return keys.length === 2 && keys[0] === "id" && keys[1] === "source" && coerceSecretRef(value) !== null;
|
|
129
|
+
}
|
|
130
|
+
function hasValidSecretMaterial(params) {
|
|
131
|
+
const valueIsValid = isUsableString(params.value) || isSupportedStoredSecretRef(params.value);
|
|
132
|
+
const refIsValid = isSupportedStoredSecretRef(params.ref);
|
|
133
|
+
return valueIsValid || refIsValid;
|
|
134
|
+
}
|
|
135
|
+
function isValidCredentialShape(entry, type) {
|
|
136
|
+
if (!isOptionalString(entry.email)) {
|
|
137
|
+
return "invalid_shape";
|
|
138
|
+
}
|
|
139
|
+
if (type === "api_key") {
|
|
140
|
+
if (entry.key !== undefined && typeof entry.key !== "string" && !isSupportedStoredSecretRef(entry.key) || entry.keyRef !== undefined && !isSupportedStoredSecretRef(entry.keyRef) || !isValidStringMetadata(entry.metadata)) {
|
|
141
|
+
return "invalid_shape";
|
|
142
|
+
}
|
|
143
|
+
return hasValidSecretMaterial({
|
|
144
|
+
value: entry.key,
|
|
145
|
+
ref: entry.keyRef
|
|
146
|
+
}) ? null : "missing_material";
|
|
147
|
+
}
|
|
148
|
+
if (type === "token") {
|
|
149
|
+
if (entry.token !== undefined && typeof entry.token !== "string" && !isSupportedStoredSecretRef(entry.token) || entry.tokenRef !== undefined && !isSupportedStoredSecretRef(entry.tokenRef) || !isOptionalFiniteNumber(entry.expires)) {
|
|
150
|
+
return "invalid_shape";
|
|
151
|
+
}
|
|
152
|
+
return hasValidSecretMaterial({
|
|
153
|
+
value: entry.token,
|
|
154
|
+
ref: entry.tokenRef
|
|
155
|
+
}) ? null : "missing_material";
|
|
156
|
+
}
|
|
157
|
+
if (!isUsableString(entry.access) || !isUsableString(entry.refresh) || typeof entry.expires !== "number" || !Number.isFinite(entry.expires)) {
|
|
158
|
+
return "missing_material";
|
|
159
|
+
}
|
|
160
|
+
for (const field of [
|
|
161
|
+
"clientId",
|
|
162
|
+
"enterpriseUrl",
|
|
163
|
+
"projectId",
|
|
164
|
+
"accountId"
|
|
165
|
+
]) {
|
|
166
|
+
if (!isOptionalString(entry[field])) {
|
|
167
|
+
return "invalid_shape";
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (entry.availableModelIds !== undefined && (!Array.isArray(entry.availableModelIds) || !entry.availableModelIds.every((modelId) => isUsableString(modelId)))) {
|
|
171
|
+
return "invalid_shape";
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
function parseCredentialEntry(raw, fallbackProvider, options) {
|
|
176
|
+
if (!isRecord(raw)) {
|
|
94
177
|
return {
|
|
95
178
|
ok: false,
|
|
96
179
|
reason: "non_object"
|
|
@@ -110,10 +193,21 @@ function parseCredentialEntry(raw, fallbackProvider) {
|
|
|
110
193
|
reason: "missing_provider"
|
|
111
194
|
};
|
|
112
195
|
}
|
|
196
|
+
const type = typed.type;
|
|
197
|
+
if (options?.strict) {
|
|
198
|
+
const invalidReason = isValidCredentialShape(typed, type);
|
|
199
|
+
if (invalidReason) {
|
|
200
|
+
return {
|
|
201
|
+
ok: false,
|
|
202
|
+
reason: invalidReason
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
113
206
|
return {
|
|
114
207
|
ok: true,
|
|
115
208
|
credential: {
|
|
116
209
|
...typed,
|
|
210
|
+
type,
|
|
117
211
|
provider
|
|
118
212
|
}
|
|
119
213
|
};
|
|
@@ -133,8 +227,8 @@ function warnRejectedCredentialEntries(source, rejected) {
|
|
|
133
227
|
keys: rejected.slice(0, 10).map((entry) => entry.key)
|
|
134
228
|
});
|
|
135
229
|
}
|
|
136
|
-
function coerceLegacyStore(raw) {
|
|
137
|
-
if (!raw
|
|
230
|
+
function coerceLegacyStore(raw, options) {
|
|
231
|
+
if (!isRecord(raw)) {
|
|
138
232
|
return null;
|
|
139
233
|
}
|
|
140
234
|
const record = raw;
|
|
@@ -144,7 +238,7 @@ function coerceLegacyStore(raw) {
|
|
|
144
238
|
const entries = {};
|
|
145
239
|
const rejected = [];
|
|
146
240
|
for (const [key, value] of Object.entries(record)) {
|
|
147
|
-
const parsed = parseCredentialEntry(value, key);
|
|
241
|
+
const parsed = parseCredentialEntry(value, key, { strict: options?.rejectInvalidEntries === true });
|
|
148
242
|
if (!parsed.ok) {
|
|
149
243
|
rejected.push({
|
|
150
244
|
key,
|
|
@@ -154,22 +248,96 @@ function coerceLegacyStore(raw) {
|
|
|
154
248
|
}
|
|
155
249
|
entries[key] = parsed.credential;
|
|
156
250
|
}
|
|
251
|
+
if (options?.rejectInvalidEntries && rejected.length > 0) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
157
254
|
warnRejectedCredentialEntries("auth.json", rejected);
|
|
158
|
-
return Object.keys(entries).length > 0 ? entries : null;
|
|
255
|
+
return Object.keys(entries).length > 0 || options?.rejectInvalidEntries ? entries : null;
|
|
256
|
+
}
|
|
257
|
+
function isValidProfileOrder(value) {
|
|
258
|
+
if (value === undefined) {
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
if (!isRecord(value)) {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
return Object.entries(value).every(([provider, profileIds]) => isUsableString(provider) && Array.isArray(profileIds) && profileIds.every((profileId) => isUsableString(profileId)));
|
|
265
|
+
}
|
|
266
|
+
function isValidLastGood(value) {
|
|
267
|
+
if (value === undefined) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
if (!isRecord(value)) {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
return Object.entries(value).every(([provider, profileId]) => isUsableString(provider) && isUsableString(profileId));
|
|
159
274
|
}
|
|
160
|
-
function
|
|
161
|
-
if (
|
|
275
|
+
function isValidFailureCounts(value) {
|
|
276
|
+
if (value === undefined) {
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
if (!isRecord(value)) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
return Object.entries(value).every(([reason, count]) => AUTH_PROFILE_FAILURE_REASONS.has(reason) && typeof count === "number" && Number.isFinite(count) && Number.isInteger(count) && count >= 0);
|
|
283
|
+
}
|
|
284
|
+
function isValidUsageStats(value) {
|
|
285
|
+
if (value === undefined) {
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
if (!isRecord(value)) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
return Object.entries(value).every(([profileId, stats]) => {
|
|
292
|
+
if (!isUsableString(profileId) || !isRecord(stats)) {
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
for (const field of [
|
|
296
|
+
"lastUsed",
|
|
297
|
+
"cooldownUntil",
|
|
298
|
+
"disabledUntil",
|
|
299
|
+
"lastFailureAt"
|
|
300
|
+
]) {
|
|
301
|
+
if (!isOptionalFiniteNumber(stats[field])) {
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (stats.errorCount !== undefined && (typeof stats.errorCount !== "number" || !Number.isFinite(stats.errorCount) || !Number.isInteger(stats.errorCount) || stats.errorCount < 0)) {
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
for (const field of ["disabledReason", "cooldownReason"]) {
|
|
309
|
+
if (stats[field] !== undefined && (typeof stats[field] !== "string" || !AUTH_PROFILE_FAILURE_REASONS.has(stats[field]))) {
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (!isOptionalString(stats.cooldownModel) || !isValidFailureCounts(stats.failureCounts)) {
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
return true;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
function hasValidStoreMetadata(record) {
|
|
320
|
+
return (record.version === undefined || typeof record.version === "number" && Number.isFinite(record.version) && Number.isInteger(record.version) && record.version >= 1 && record.version <= AUTH_STORE_VERSION) && isValidProfileOrder(record.order) && isValidLastGood(record.lastGood) && isValidUsageStats(record.usageStats);
|
|
321
|
+
}
|
|
322
|
+
function coerceAuthStore(raw, options) {
|
|
323
|
+
if (!isRecord(raw)) {
|
|
162
324
|
return null;
|
|
163
325
|
}
|
|
164
326
|
const record = raw;
|
|
165
|
-
if (!record.profiles
|
|
327
|
+
if (!isRecord(record.profiles)) {
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
if (options?.rejectInvalidEntries && !hasValidStoreMetadata(record)) {
|
|
166
331
|
return null;
|
|
167
332
|
}
|
|
168
333
|
const profiles = record.profiles;
|
|
169
334
|
const normalized = {};
|
|
170
335
|
const rejected = [];
|
|
171
336
|
for (const [key, value] of Object.entries(profiles)) {
|
|
172
|
-
const parsed = parseCredentialEntry(value)
|
|
337
|
+
const parsed = !options?.rejectInvalidEntries || isUsableString(key) ? parseCredentialEntry(value, undefined, { strict: options?.rejectInvalidEntries === true }) : {
|
|
338
|
+
ok: false,
|
|
339
|
+
reason: "invalid_shape"
|
|
340
|
+
};
|
|
173
341
|
if (!parsed.ok) {
|
|
174
342
|
rejected.push({
|
|
175
343
|
key,
|
|
@@ -179,8 +347,11 @@ function coerceAuthStore(raw) {
|
|
|
179
347
|
}
|
|
180
348
|
normalized[key] = parsed.credential;
|
|
181
349
|
}
|
|
350
|
+
if (options?.rejectInvalidEntries && rejected.length > 0) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
182
353
|
warnRejectedCredentialEntries("auth-profiles.json", rejected);
|
|
183
|
-
const order = record.order && typeof record.order === "object" ? Object.entries(record.order).reduce((acc, [provider, value]) => {
|
|
354
|
+
const order = options?.rejectInvalidEntries ? record.order : record.order && typeof record.order === "object" ? Object.entries(record.order).reduce((acc, [provider, value]) => {
|
|
184
355
|
if (!Array.isArray(value)) {
|
|
185
356
|
return acc;
|
|
186
357
|
}
|
|
@@ -229,27 +400,68 @@ function mergeAuthProfileStores(base, override) {
|
|
|
229
400
|
usageStats: mergeRecord(base.usageStats, override.usageStats)
|
|
230
401
|
};
|
|
231
402
|
}
|
|
232
|
-
function
|
|
403
|
+
function readJsonFileForAuthRuntime(params) {
|
|
404
|
+
if (!params.strict) {
|
|
405
|
+
return loadJsonFile(params.pathname);
|
|
406
|
+
}
|
|
407
|
+
if (!syncFs.existsSync(params.pathname)) {
|
|
408
|
+
return undefined;
|
|
409
|
+
}
|
|
410
|
+
try {
|
|
411
|
+
return JSON.parse(syncFs.readFileSync(params.pathname, "utf8"));
|
|
412
|
+
} catch {
|
|
413
|
+
throw new Error(`${params.label} is unreadable or contains invalid JSON.`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
function mergeOAuthFileIntoStore(store, strict = false) {
|
|
233
417
|
const oauthPath = resolveOAuthPath();
|
|
234
|
-
const oauthRaw =
|
|
235
|
-
|
|
418
|
+
const oauthRaw = readJsonFileForAuthRuntime({
|
|
419
|
+
pathname: oauthPath,
|
|
420
|
+
label: "OAuth credential store",
|
|
421
|
+
strict
|
|
422
|
+
});
|
|
423
|
+
if (oauthRaw === undefined) {
|
|
424
|
+
return false;
|
|
425
|
+
}
|
|
426
|
+
if (!oauthRaw || typeof oauthRaw !== "object" || Array.isArray(oauthRaw)) {
|
|
427
|
+
if (strict) {
|
|
428
|
+
throw new Error("OAuth credential store has an invalid structure.");
|
|
429
|
+
}
|
|
236
430
|
return false;
|
|
237
431
|
}
|
|
238
432
|
const oauthEntries = oauthRaw;
|
|
239
433
|
let mutated = false;
|
|
240
|
-
for (const [provider,
|
|
241
|
-
if (!
|
|
434
|
+
for (const [provider, rawCreds] of Object.entries(oauthEntries)) {
|
|
435
|
+
if (!isRecord(rawCreds)) {
|
|
436
|
+
if (strict) {
|
|
437
|
+
throw new Error("OAuth credential store has an invalid credential entry.");
|
|
438
|
+
}
|
|
242
439
|
continue;
|
|
243
440
|
}
|
|
441
|
+
const creds = rawCreds;
|
|
442
|
+
let credential;
|
|
443
|
+
if (strict) {
|
|
444
|
+
const parsed = parseCredentialEntry({
|
|
445
|
+
...creds,
|
|
446
|
+
type: "oauth",
|
|
447
|
+
provider
|
|
448
|
+
}, undefined, { strict: true });
|
|
449
|
+
if (!parsed.ok) {
|
|
450
|
+
throw new Error("OAuth credential store has an invalid credential entry.");
|
|
451
|
+
}
|
|
452
|
+
credential = parsed.credential;
|
|
453
|
+
} else {
|
|
454
|
+
credential = {
|
|
455
|
+
...creds,
|
|
456
|
+
type: "oauth",
|
|
457
|
+
provider
|
|
458
|
+
};
|
|
459
|
+
}
|
|
244
460
|
const profileId = `${provider}:default`;
|
|
245
461
|
if (store.profiles[profileId]) {
|
|
246
462
|
continue;
|
|
247
463
|
}
|
|
248
|
-
store.profiles[profileId] =
|
|
249
|
-
type: "oauth",
|
|
250
|
-
provider,
|
|
251
|
-
...creds
|
|
252
|
-
};
|
|
464
|
+
store.profiles[profileId] = credential;
|
|
253
465
|
mutated = true;
|
|
254
466
|
}
|
|
255
467
|
return mutated;
|
|
@@ -261,8 +473,10 @@ function applyLegacyStore(store, legacy) {
|
|
|
261
473
|
store.profiles[profileId] = {
|
|
262
474
|
type: "api_key",
|
|
263
475
|
provider: String(cred.provider ?? provider),
|
|
264
|
-
key: cred.key,
|
|
265
|
-
...cred.
|
|
476
|
+
...cred.key !== undefined ? { key: cred.key } : {},
|
|
477
|
+
...cred.keyRef ? { keyRef: cred.keyRef } : {},
|
|
478
|
+
...cred.email ? { email: cred.email } : {},
|
|
479
|
+
...cred.metadata ? { metadata: cred.metadata } : {}
|
|
266
480
|
};
|
|
267
481
|
continue;
|
|
268
482
|
}
|
|
@@ -270,7 +484,8 @@ function applyLegacyStore(store, legacy) {
|
|
|
270
484
|
store.profiles[profileId] = {
|
|
271
485
|
type: "token",
|
|
272
486
|
provider: String(cred.provider ?? provider),
|
|
273
|
-
token: cred.token,
|
|
487
|
+
...cred.token !== undefined ? { token: cred.token } : {},
|
|
488
|
+
...cred.tokenRef ? { tokenRef: cred.tokenRef } : {},
|
|
274
489
|
...typeof cred.expires === "number" ? { expires: cred.expires } : {},
|
|
275
490
|
...cred.email ? { email: cred.email } : {}
|
|
276
491
|
};
|
|
@@ -289,9 +504,20 @@ function applyLegacyStore(store, legacy) {
|
|
|
289
504
|
};
|
|
290
505
|
}
|
|
291
506
|
}
|
|
292
|
-
function loadCoercedStore(authPath) {
|
|
293
|
-
const raw =
|
|
294
|
-
|
|
507
|
+
function loadCoercedStore(authPath, strict = false) {
|
|
508
|
+
const raw = readJsonFileForAuthRuntime({
|
|
509
|
+
pathname: authPath,
|
|
510
|
+
label: "Auth profile store",
|
|
511
|
+
strict
|
|
512
|
+
});
|
|
513
|
+
if (raw === undefined) {
|
|
514
|
+
return null;
|
|
515
|
+
}
|
|
516
|
+
const store = coerceAuthStore(raw, { rejectInvalidEntries: strict });
|
|
517
|
+
if (!store && strict) {
|
|
518
|
+
throw new Error("Auth profile store has an invalid structure or credential entry.");
|
|
519
|
+
}
|
|
520
|
+
return store;
|
|
295
521
|
}
|
|
296
522
|
function loadAuthProfileStore() {
|
|
297
523
|
const authPath = resolveAuthStorePath();
|
|
@@ -323,8 +549,9 @@ function loadAuthProfileStore() {
|
|
|
323
549
|
}
|
|
324
550
|
function loadAuthProfileStoreForAgent(agentDir, options) {
|
|
325
551
|
const readOnly = options?.readOnly === true;
|
|
552
|
+
const strict = options?.strict === true;
|
|
326
553
|
const authPath = resolveAuthStorePath(agentDir);
|
|
327
|
-
const asStore = loadCoercedStore(authPath);
|
|
554
|
+
const asStore = loadCoercedStore(authPath, strict);
|
|
328
555
|
if (asStore) {
|
|
329
556
|
const synced = shouldSyncExternalCliCredentials(options) ? syncExternalCliCredentials(asStore) : false;
|
|
330
557
|
if (synced && !readOnly) {
|
|
@@ -342,8 +569,16 @@ function loadAuthProfileStoreForAgent(agentDir, options) {
|
|
|
342
569
|
return mainStore;
|
|
343
570
|
}
|
|
344
571
|
}
|
|
345
|
-
const
|
|
346
|
-
const
|
|
572
|
+
const legacyPath = resolveLegacyAuthStorePath(agentDir);
|
|
573
|
+
const legacyRaw = readJsonFileForAuthRuntime({
|
|
574
|
+
pathname: legacyPath,
|
|
575
|
+
label: "Legacy auth profile store",
|
|
576
|
+
strict
|
|
577
|
+
});
|
|
578
|
+
const legacy = coerceLegacyStore(legacyRaw, { rejectInvalidEntries: strict });
|
|
579
|
+
if (legacyRaw !== undefined && !legacy && strict) {
|
|
580
|
+
throw new Error("Legacy auth profile store has an invalid structure or credential entry.");
|
|
581
|
+
}
|
|
347
582
|
const store = {
|
|
348
583
|
version: AUTH_STORE_VERSION,
|
|
349
584
|
profiles: {}
|
|
@@ -351,7 +586,7 @@ function loadAuthProfileStoreForAgent(agentDir, options) {
|
|
|
351
586
|
if (legacy) {
|
|
352
587
|
applyLegacyStore(store, legacy);
|
|
353
588
|
}
|
|
354
|
-
const mergedOAuth = mergeOAuthFileIntoStore(store);
|
|
589
|
+
const mergedOAuth = mergeOAuthFileIntoStore(store, strict);
|
|
355
590
|
const syncedCli = shouldSyncExternalCliCredentials(options) ? syncExternalCliCredentials(store) : false;
|
|
356
591
|
const forceReadOnly = process.env.FASED_AUTH_STORE_READONLY === "1";
|
|
357
592
|
const shouldWrite = !readOnly && !forceReadOnly && (legacy !== null || mergedOAuth || syncedCli);
|
|
@@ -361,7 +596,7 @@ function loadAuthProfileStoreForAgent(agentDir, options) {
|
|
|
361
596
|
if (shouldWrite && legacy !== null) {
|
|
362
597
|
const legacyPath = resolveLegacyAuthStorePath(agentDir);
|
|
363
598
|
try {
|
|
364
|
-
|
|
599
|
+
syncFs.unlinkSync(legacyPath);
|
|
365
600
|
} catch (err) {
|
|
366
601
|
if (err?.code !== "ENOENT") {
|
|
367
602
|
log.warn("failed to delete legacy auth.json after migration", {
|
|
@@ -389,6 +624,7 @@ function loadAuthProfileStoreForRuntime(agentDir, options) {
|
|
|
389
624
|
function loadAuthProfileStoreForSecretsRuntime(agentDir) {
|
|
390
625
|
return loadAuthProfileStoreForRuntime(agentDir, {
|
|
391
626
|
readOnly: true,
|
|
627
|
+
strict: true,
|
|
392
628
|
allowKeychainPrompt: false
|
|
393
629
|
});
|
|
394
630
|
}
|
|
@@ -11,6 +11,7 @@ import { buildSandboxEnv, clampWithDefault, coerceEnv, readEnvInt, resolveSandbo
|
|
|
11
11
|
import { DEFAULT_MAX_OUTPUT, DEFAULT_PATH, DEFAULT_PENDING_MAX_OUTPUT, applyShellPath, execSchema, normalizeExecAsk, normalizeExecSecurity, normalizeExecTarget, resolveApprovalRunningNoticeMs, resolveExecTarget, runExecProcess, sanitizeHostBaseEnv, validateHostEnv } from "./bash-tools.exec-runtime.js";
|
|
12
12
|
import { processGatewayAllowlist } from "./bash-tools.exec-host-gateway.js";
|
|
13
13
|
import { executeNodeHostCommand } from "./bash-tools.exec-host-node.js";
|
|
14
|
+
import { getActiveSkillEnvOverrides } from "./skills/env-overrides.js";
|
|
14
15
|
import path from "node:path";
|
|
15
16
|
|
|
16
17
|
//#region src/agents/bash-tools.exec.ts
|
|
@@ -260,16 +261,21 @@ function createExecTool(defaults) {
|
|
|
260
261
|
}
|
|
261
262
|
const inheritedBaseEnv = coerceEnv(process.env);
|
|
262
263
|
const baseEnv = host === "sandbox" ? inheritedBaseEnv : sanitizeHostBaseEnv(inheritedBaseEnv);
|
|
264
|
+
const trustedSkillEnv = { ...getActiveSkillEnvOverrides() };
|
|
263
265
|
if (host !== "sandbox" && params.env) {
|
|
264
266
|
validateHostEnv(params.env);
|
|
265
267
|
}
|
|
266
|
-
const mergedEnv =
|
|
268
|
+
const mergedEnv = {
|
|
267
269
|
...baseEnv,
|
|
268
|
-
...params.env
|
|
269
|
-
|
|
270
|
+
...params.env,
|
|
271
|
+
...trustedSkillEnv
|
|
272
|
+
};
|
|
270
273
|
const env = sandbox ? buildSandboxEnv({
|
|
271
274
|
defaultPath: DEFAULT_PATH,
|
|
272
|
-
paramsEnv:
|
|
275
|
+
paramsEnv: {
|
|
276
|
+
...params.env,
|
|
277
|
+
...trustedSkillEnv
|
|
278
|
+
},
|
|
273
279
|
sandboxEnv: sandbox.env,
|
|
274
280
|
containerWorkdir: containerWorkdir ?? sandbox.containerWorkdir
|
|
275
281
|
}) : mergedEnv;
|
|
@@ -3,7 +3,7 @@ import { assertSandboxPath } from "./sandbox-paths.js";
|
|
|
3
3
|
import { existsSync, statSync } from "node:fs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
import fs
|
|
6
|
+
import fs from "node:fs/promises";
|
|
7
7
|
|
|
8
8
|
//#region src/agents/bash-tools.shared.ts
|
|
9
9
|
const CHUNK_LIMIT = 8 * 1024;
|
|
@@ -67,7 +67,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
67
67
|
cwd: process.cwd(),
|
|
68
68
|
root: params.sandbox.workspaceDir
|
|
69
69
|
});
|
|
70
|
-
const stats = await fs
|
|
70
|
+
const stats = await fs.stat(resolved.resolved);
|
|
71
71
|
if (!stats.isDirectory()) {
|
|
72
72
|
throw new Error("workdir is not a directory");
|
|
73
73
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolveUserPath } from "../utils.js";
|
|
2
2
|
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
3
3
|
import { loadJsonFile, saveJsonFile } from "../infra/json-file.js";
|
|
4
|
-
import
|
|
4
|
+
import syncFs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { execFileSync, execSync } from "node:child_process";
|
|
7
7
|
import { createHash } from "node:crypto";
|
|
@@ -61,7 +61,7 @@ function resolveCodexHomePath() {
|
|
|
61
61
|
const configured = process.env.CODEX_HOME;
|
|
62
62
|
const home = configured ? resolveUserPath(configured) : resolveUserPath("~/.codex");
|
|
63
63
|
try {
|
|
64
|
-
return
|
|
64
|
+
return syncFs.realpathSync.native(home);
|
|
65
65
|
} catch {
|
|
66
66
|
return home;
|
|
67
67
|
}
|
|
@@ -264,7 +264,7 @@ function writeClaudeCliKeychainCredentials(newCredentials, options) {
|
|
|
264
264
|
}
|
|
265
265
|
function writeClaudeCliFileCredentials(newCredentials, options) {
|
|
266
266
|
const credPath = resolveClaudeCliCredentialsPath(options?.homeDir);
|
|
267
|
-
if (!
|
|
267
|
+
if (!syncFs.existsSync(credPath)) {
|
|
268
268
|
return false;
|
|
269
269
|
}
|
|
270
270
|
try {
|
|
@@ -331,7 +331,7 @@ function readCodexCliCredentials(options) {
|
|
|
331
331
|
}
|
|
332
332
|
let expires;
|
|
333
333
|
try {
|
|
334
|
-
const stat =
|
|
334
|
+
const stat = syncFs.statSync(authPath);
|
|
335
335
|
expires = stat.mtimeMs + 60 * 60 * 1e3;
|
|
336
336
|
} catch {
|
|
337
337
|
expires = Date.now() + 60 * 60 * 1e3;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { XIAOMI_BASE_URL, XIAOMI_MODEL_CATALOG } from "../providers/xiaomi-models.js";
|
|
2
|
+
import { BYTEPLUS_BASE_URL, BYTEPLUS_CODING_BASE_URL, BYTEPLUS_CODING_MODEL_CATALOG, BYTEPLUS_MODEL_CATALOG, buildBytePlusModelDefinition } from "./byteplus-models.js";
|
|
1
3
|
import { CLOUDFLARE_AI_GATEWAY_MODEL_CATALOG, buildCloudflareAiGatewayModelDefinition } from "../providers/cloudflare-ai-gateway-shared.js";
|
|
4
|
+
import "./cloudflare-ai-gateway.js";
|
|
2
5
|
import { HUGGINGFACE_BASE_URL, HUGGINGFACE_MODEL_CATALOG, buildHuggingfaceModelDefinition } from "../providers/huggingface-models.js";
|
|
3
6
|
import { SYNTHETIC_BASE_URL, SYNTHETIC_MODEL_CATALOG, buildSyntheticModelDefinition } from "../providers/synthetic-models.js";
|
|
4
7
|
import { TOGETHER_BASE_URL, TOGETHER_MODEL_CATALOG, buildTogetherModelDefinition } from "../providers/together-models.js";
|
|
5
8
|
import { VENICE_BASE_URL, VENICE_MODEL_CATALOG, buildVeniceModelDefinition } from "../providers/venice-models.js";
|
|
6
9
|
import { VERCEL_AI_GATEWAY_MODEL_IDS, buildVercelAiGatewayModelDefinition } from "../providers/vercel-ai-gateway-models.js";
|
|
7
|
-
import { XIAOMI_BASE_URL, XIAOMI_MODEL_CATALOG } from "../providers/xiaomi-models.js";
|
|
8
|
-
import { BYTEPLUS_BASE_URL, BYTEPLUS_CODING_BASE_URL, BYTEPLUS_CODING_MODEL_CATALOG, BYTEPLUS_MODEL_CATALOG, buildBytePlusModelDefinition } from "./byteplus-models.js";
|
|
9
|
-
import "./cloudflare-ai-gateway.js";
|
|
10
10
|
import { buildCopilotModelDefinition, buildCopilotProxyModelDefinition, getDefaultCopilotModelIds, getDefaultCopilotProxyModelIds } from "../providers/github-copilot-models.js";
|
|
11
11
|
import { CHUTES_BASE_URL, CHUTES_MODEL_CATALOG, buildChutesModelDefinition } from "./chutes-models.js";
|
|
12
12
|
import { DOUBAO_BASE_URL, DOUBAO_CODING_BASE_URL, DOUBAO_CODING_MODEL_CATALOG, DOUBAO_MODEL_CATALOG, buildDoubaoModelDefinition } from "./doubao-models.js";
|