@fased/fased 0.1.56 → 0.1.57
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/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/bash-tools.shared.js +2 -2
- package/dist/agents/cli-credentials.js +4 -4
- 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-snapshot.js +124 -0
- package/dist/agents/openai-codex-app-server.js +35 -10
- package/dist/agents/openai-codex-runtime-component.js +39 -0
- package/dist/agents/pi-embedded-runner/compact.js +1 -1
- package/dist/agents/pi-embedded-runner/extra-params.js +28 -16
- package/dist/agents/pi-embedded-runner/run/attempt.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/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/session-status-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/post-compaction-audit.js +3 -3
- package/dist/auto-reply/reply/post-compaction-context.js +3 -3
- 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/capabilities/install.js +43 -0
- 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/components-cli.js +9 -31
- 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 +6 -6
- 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 +5 -5
- package/dist/cli/secrets-cli.js +3 -3
- package/dist/cli/update-cli/update-command.js +50 -12
- package/dist/cli/windows-argv.js +2 -2
- package/dist/commands/agent.js +1 -1
- package/dist/commands/auth-choice.apply.openai.js +9 -0
- package/dist/commands/auth-choice.apply.plugin-provider.js +1 -1
- package/dist/commands/dashboard-link.js +3 -3
- 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/managed-up.js +2 -2
- package/dist/commands/onboard-auth.credentials.js +3 -3
- package/dist/commands/onboard-channels.js +1 -1
- package/dist/commands/onboarding/plugin-install.js +4 -4
- 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/control-ui/assets/{app-D7TXyNRi.js → app-DltSyY4Y.js} +1689 -1689
- package/dist/control-ui/assets/{index-BmSBom-w.js → index-D5JlBp7f.js} +3 -3
- 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 +5 -5
- package/dist/discord/monitor/thread-bindings.state.js +2 -2
- package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
- 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/hooks-mapping.js +4 -4
- package/dist/gateway/protocol/schema/agents-models-skills.js +43 -1
- 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/hooks.js +1 -1
- package/dist/gateway/server-methods/models.js +12 -5
- package/dist/gateway/server-methods/plugins-marketplace.js +3 -3
- package/dist/gateway/server-methods/services.js +1 -1
- package/dist/gateway/server-methods/sessions.js +7 -7
- package/dist/gateway/server-methods/usage.js +2 -2
- 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 +1 -1
- 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/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/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/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-DzWlKv1U.js → accounts-CmMwe9Dt.js} +1 -1
- package/dist/plugin-sdk/{actions-BplQVLL6.js → actions-DYViFQiX.js} +2 -2
- package/dist/plugin-sdk/{active-listener-x4MLhYUw.js → active-listener-DVbpcisf.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-BbgPlhtw.js → agent-scope-CCjfjKoO.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-G8h3Sn8_.js → audio-preflight-D-Mfay8i.js} +31 -31
- package/dist/plugin-sdk/{audit-CWknklvI.js → audit-JImYFOzJ.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-CD4QDN5E.js → channel-access-configure-B_qYjml8.js} +1 -1
- package/dist/plugin-sdk/{channel-access-a9Dnfw7-.js → channel-access-cxCK2mci.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
- package/dist/plugin-sdk/channel-plugin-common.js +5 -5
- package/dist/plugin-sdk/{chunk-B8EZkwiT.js → chunk-CF8nvZNj.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-CEPklxGe.js → chunk-items-yLFoO571.js} +1 -1
- package/dist/plugin-sdk/command-status.js +31 -31
- package/dist/plugin-sdk/{commands-registry-BfEa4tFA.js → commands-registry-CK4KmMG0.js} +2 -2
- package/dist/plugin-sdk/{common-CbfckC19.js → common-Cky4hpqr.js} +1 -1
- package/dist/plugin-sdk/{config-Bt5GhnA-.js → config-Dbxj_jUP.js} +1125 -3
- package/dist/plugin-sdk/{config-schema-B9DKr6J5.js → config-schema-aKPMn6ML.js} +1749 -1387
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +4 -4
- package/dist/plugin-sdk/discord.js +22 -22
- package/dist/plugin-sdk/{filesystem-manager-BGGGrkiN.js → filesystem-manager-ZoHU8oA7.js} +2 -2
- package/dist/plugin-sdk/{fs-safe-xBqok6yR.js → fs-safe-g4g7GT02.js} +2 -2
- package/dist/plugin-sdk/{handle-action-DbzZFYnG.js → handle-action-BSNDD2Vc.js} +17 -17
- package/dist/plugin-sdk/{helpers-CluGKuIV.js → helpers-CDo2XBSr.js} +1 -1
- package/dist/plugin-sdk/{image-ops-CUaLtIFj.js → image-ops-DbeBxbn4.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +15 -15
- package/dist/plugin-sdk/index.js +33 -33
- package/dist/plugin-sdk/json-store.js +6 -6
- package/dist/plugin-sdk/{login-DJuHYDiK.js → login-CWXvFTd8.js} +3 -3
- package/dist/plugin-sdk/{login-qr-CbHL5ayf.js → login-qr-CJB2zjmM.js} +4 -4
- package/dist/plugin-sdk/{manager-oHAvZCT3.js → manager-CbiFFLKS.js} +4 -4
- package/dist/plugin-sdk/{markdown-tables-Mkx7k92Y.js → markdown-tables-Bskt9r8i.js} +1 -1
- package/dist/plugin-sdk/{media-CA8sTmVE.js → media-B3aAg5rh.js} +4 -4
- package/dist/plugin-sdk/{memory-search-VFll-AIb.js → memory-search-DTjIMw8J.js} +1 -1
- package/dist/plugin-sdk/{monitor-CZrN9pev.js → monitor-BJs6z7AT.js} +35 -35
- package/dist/plugin-sdk/{monitor-CmwGqNyV.js → monitor-BYGbTI5V.js} +36 -36
- package/dist/plugin-sdk/{openresponses-http-CWOd4war.js → openresponses-http-BGCl2dS2.js} +31 -31
- package/dist/plugin-sdk/{optional-runtime-dependency-DKmk9PZa.js → optional-runtime-dependency-BlTVkcAg.js} +1 -1
- package/dist/plugin-sdk/{outbound-0oN9IfNw.js → outbound-CIemga5_.js} +6 -6
- package/dist/plugin-sdk/{outbound-attachment-DdVkqUzE.js → outbound-attachment-2RckWqrk.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-BMkkS038.d.ts → pairing-message-C403mq4K.d.ts} +1 -1
- package/dist/plugin-sdk/{pairing-message-ClqhfCUk.js → pairing-message-r-VQfhFB.js} +1 -1
- package/dist/plugin-sdk/{pairing-store-B01mCSct.js → pairing-store-uPnLfGgB.js} +2 -2
- package/dist/plugin-sdk/{path-alias-guards-BJZD5JMJ.js → path-alias-guards-DjgDArrp.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-Buz0JC1Y.js → pi-model-discovery-BpEilAym.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-DuwuoteY.js → pi-model-discovery-runtime-DwNdFaz-.js} +3 -3
- package/dist/plugin-sdk/{probe--7xtfzMm.js → probe-CJb5uR8B.js} +1 -1
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
- package/dist/plugin-sdk/{pw-ai-B0domrii.js → pw-ai-H7UgunQQ.js} +6 -6
- package/dist/plugin-sdk/{qmd-manager-CFFeM4Fl.js → qmd-manager-DSyx77KY.js} +1 -1
- package/dist/plugin-sdk/{replies-1macZ1mZ.js → replies-CKMwkH4G.js} +2 -2
- package/dist/plugin-sdk/{reply-prefix-ClpxvL_w.js → reply-prefix-CeVw7Mn2.js} +1 -1
- package/dist/plugin-sdk/{probe-xY3Ky0Tx.js → resolve-channels-_-nV-EK2.js} +3 -2
- package/dist/plugin-sdk/{resolve-outbound-target-BdH6LUoW.js → resolve-outbound-target-B68fSoGi.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-CkNIKKEW.js → resolve-route-B8fOfihG.js} +2 -2
- package/dist/plugin-sdk/{retry-policy-9ybIh4Fq.js → retry-policy-B6GQldxB.js} +1 -1
- package/dist/plugin-sdk/{runtime-dependency-CIw9t7-k.js → runtime-dependency-DlqVSsSs.js} +4 -4
- package/dist/plugin-sdk/{runtime-Dy420wBu.js → runtime-nVJl3PlS.js} +4 -4
- package/dist/plugin-sdk/{sandbox-paths-w64tYl0v.js → sandbox-paths-Dx2lUqCu.js} +2 -2
- package/dist/plugin-sdk/sat-runtime.d.ts +2 -2
- package/dist/plugin-sdk/sat-runtime.js +31 -31
- package/dist/plugin-sdk/{send-BQUtCJFW.js → send-BCJ4hi3t.js} +8 -8
- package/dist/plugin-sdk/{send-DPJIIYAs.js → send-BHokB4TR.js} +6 -6
- package/dist/plugin-sdk/{send-2VcOMTN5.js → send-CPK_HlYW.js} +5 -5
- package/dist/plugin-sdk/{send-J4JWKP62.js → send-D3DQOg2a.js} +6 -6
- package/dist/plugin-sdk/{send-Dqes9tdU.js → send-hSu1HWms.js} +7 -7
- package/dist/plugin-sdk/{session-C_n2S5ub.js → session-DQ4Dr-mf.js} +2 -2
- package/dist/plugin-sdk/{skill-commands-B7wx9ax8.js → skill-commands-CmdoKLh_.js} +4 -4
- package/dist/plugin-sdk/{slack-BouRQG-W.js → slack-B70NHpMF.js} +47 -47
- package/dist/plugin-sdk/{slack-actions-CasHVtiq.js → slack-actions-fSmP981b.js} +14 -14
- package/dist/plugin-sdk/slack.d.ts +4 -4
- package/dist/plugin-sdk/slack.js +12 -12
- package/dist/plugin-sdk/{sticker-cache-BvGEUas3.js → sticker-cache-B4dG2sKU.js} +3 -3
- package/dist/plugin-sdk/{tables-CjlQJV4r.js → tables-EX4Hy-a-.js} +1 -1
- package/dist/plugin-sdk/{targets-QfP164Dh.js → targets-BeGUCGWK.js} +1 -1
- package/dist/plugin-sdk/{telegram-actions-CwYjV6Db.js → telegram-actions-CM8SJgc9.js} +34 -34
- package/dist/plugin-sdk/telegram.d.ts +4 -4
- package/dist/plugin-sdk/telegram.js +9 -9
- package/dist/plugin-sdk/{thread-bindings.lifecycle-DU4iX_Jr.js → thread-bindings.lifecycle-tHK_1mvp.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-BgYWFjNF.js → thread-bindings.state-D7xG1GHu.js} +2 -2
- package/dist/plugin-sdk/{tmp-fased-dir-BdFQvrvw.d.ts → tmp-fased-dir-Ouj58axY.d.ts} +1 -1
- package/dist/plugin-sdk/{types-BYDL6dQj.d.ts → types-B4hj6HgR.d.ts} +1 -1
- package/dist/plugin-sdk/{types-CLIvQaVg.d.ts → types-dWZFX1fk.d.ts} +2 -2
- package/dist/plugin-sdk/{web-D0yENDve.js → web-BFolfZ3i.js} +36 -36
- package/dist/plugin-sdk/{whatsapp-actions-BT2nPLyo.js → whatsapp-actions-CYmleHCz.js} +16 -16
- package/dist/plugin-sdk/{whatsapp-heartbeat-CiABSZ6G.js → whatsapp-heartbeat-BEwm4GK3.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +9 -9
- package/dist/plugin-sdk/whatsapp.js +13 -13
- package/dist/plugin-sdk/{wsl-B_ojyEtC.js → wsl-BtMDzMv5.js} +3 -3
- package/dist/plugin-sdk/{zod-schema.providers-core-CIzCjXH9.d.ts → zod-schema.providers-core-FaYR6KdD.d.ts} +61 -61
- package/dist/plugins/bundled-dir.js +3 -3
- package/dist/plugins/discovery.js +11 -11
- package/dist/plugins/lifecycle.js +1 -1
- package/dist/plugins/loader.js +13 -13
- package/dist/plugins/manifest-registry.js +28 -2
- package/dist/plugins/manifest.js +6 -4
- package/dist/plugins/marketplace.js +1 -1
- package/dist/plugins/path-safety.js +3 -3
- package/dist/plugins/status-cache.js +9 -9
- package/dist/plugins/update.js +4 -4
- package/dist/plugins/web-search-install-catalog.js +3 -3
- package/dist/providers/openai-codex-model-discovery.js +11 -1
- package/dist/providers/runtime-model-catalog.js +2 -2
- 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/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/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.finalize.js +1 -1
- package/dist/wizard/onboarding.host-security.js +7 -7
- package/dist/wizard/onboarding.js +7 -7
- 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 +6 -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 +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +6 -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 +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/plugin-sdk/resolve-channels-CwB2_019.js +0 -4
- /package/dist/plugin-sdk/{resolve-users-Cxb5wpAQ.js → resolve-users-DN9VQBwv.js} +0 -0
|
@@ -5,7 +5,7 @@ import { loadPluginManifest } from "./manifest.js";
|
|
|
5
5
|
import { safeRealpathSync } from "./path-safety.js";
|
|
6
6
|
import { discoverFasedAgentPlugins } from "./discovery.js";
|
|
7
7
|
import { checkMinHostVersion } from "./min-host-version.js";
|
|
8
|
-
import
|
|
8
|
+
import fs from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
|
|
11
11
|
//#region src/plugins/manifest-registry.ts
|
|
@@ -18,6 +18,12 @@ const PLUGIN_ORIGIN_RANK = {
|
|
|
18
18
|
const registryCache = new Map();
|
|
19
19
|
const DEFAULT_MANIFEST_CACHE_MS = 200;
|
|
20
20
|
const LEGACY_REMOVED_PLUGIN_IDS = new Set();
|
|
21
|
+
function isRuntimeOnlyComponent(params) {
|
|
22
|
+
if (params.manifest.runtimeOnly === true) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return params.manifest.id === "openai-runtime" && params.candidate.packageName === "@fased/openai-runtime";
|
|
26
|
+
}
|
|
21
27
|
function clearPluginManifestRegistryCache() {
|
|
22
28
|
registryCache.clear();
|
|
23
29
|
}
|
|
@@ -49,7 +55,7 @@ function buildCacheKey(params) {
|
|
|
49
55
|
}
|
|
50
56
|
function safeStatMtimeMs(filePath) {
|
|
51
57
|
try {
|
|
52
|
-
return
|
|
58
|
+
return fs.statSync(filePath).mtimeMs;
|
|
53
59
|
} catch {
|
|
54
60
|
return null;
|
|
55
61
|
}
|
|
@@ -91,6 +97,7 @@ function buildRecord(params) {
|
|
|
91
97
|
});
|
|
92
98
|
return {
|
|
93
99
|
id: params.manifest.id,
|
|
100
|
+
runtimeOnly: isRuntimeOnlyComponent(params) ? true : undefined,
|
|
94
101
|
name: normalizeManifestLabel(params.manifest.name) ?? params.candidate.packageName,
|
|
95
102
|
description: normalizeManifestLabel(params.manifest.description) ?? params.candidate.packageDescription,
|
|
96
103
|
version: normalizeManifestLabel(params.manifest.version) ?? params.candidate.packageVersion,
|
|
@@ -213,6 +220,25 @@ function loadPluginManifestRegistry(params) {
|
|
|
213
220
|
}
|
|
214
221
|
continue;
|
|
215
222
|
}
|
|
223
|
+
if (isRuntimeOnlyComponent({
|
|
224
|
+
manifest,
|
|
225
|
+
candidate
|
|
226
|
+
}) && records[existing.recordIndex]?.runtimeOnly === true) {
|
|
227
|
+
if (PLUGIN_ORIGIN_RANK[candidate.origin] < PLUGIN_ORIGIN_RANK[existing.candidate.origin]) {
|
|
228
|
+
records[existing.recordIndex] = buildRecord({
|
|
229
|
+
manifest,
|
|
230
|
+
candidate,
|
|
231
|
+
manifestPath: manifestRes.manifestPath,
|
|
232
|
+
schemaCacheKey,
|
|
233
|
+
configSchema
|
|
234
|
+
});
|
|
235
|
+
seenIds.set(manifest.id, {
|
|
236
|
+
candidate,
|
|
237
|
+
recordIndex: existing.recordIndex
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
216
242
|
diagnostics.push({
|
|
217
243
|
level: "warn",
|
|
218
244
|
pluginId: manifest.id,
|
package/dist/plugins/manifest.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isRecord } from "../utils.js";
|
|
2
2
|
import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
|
3
3
|
import { MANIFEST_KEY } from "../project.js";
|
|
4
|
-
import
|
|
4
|
+
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import JSON5 from "json5";
|
|
7
7
|
|
|
@@ -169,7 +169,7 @@ function normalizeChannelConfigs(value) {
|
|
|
169
169
|
function resolvePluginManifestPath(rootDir) {
|
|
170
170
|
for (const filename of PLUGIN_MANIFEST_FILENAMES) {
|
|
171
171
|
const candidate = path.join(rootDir, filename);
|
|
172
|
-
if (
|
|
172
|
+
if (fs.existsSync(candidate)) {
|
|
173
173
|
return candidate;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
@@ -198,7 +198,7 @@ function loadPluginManifest(rootDir) {
|
|
|
198
198
|
}
|
|
199
199
|
let raw;
|
|
200
200
|
try {
|
|
201
|
-
raw = JSON5.parse(
|
|
201
|
+
raw = JSON5.parse(fs.readFileSync(opened.fd, "utf-8"));
|
|
202
202
|
} catch (err) {
|
|
203
203
|
return {
|
|
204
204
|
ok: false,
|
|
@@ -206,7 +206,7 @@ function loadPluginManifest(rootDir) {
|
|
|
206
206
|
manifestPath
|
|
207
207
|
};
|
|
208
208
|
} finally {
|
|
209
|
-
|
|
209
|
+
fs.closeSync(opened.fd);
|
|
210
210
|
}
|
|
211
211
|
if (!isRecord(raw)) {
|
|
212
212
|
return {
|
|
@@ -232,6 +232,7 @@ function loadPluginManifest(rootDir) {
|
|
|
232
232
|
};
|
|
233
233
|
}
|
|
234
234
|
const enabledByDefault = raw.enabledByDefault === true;
|
|
235
|
+
const runtimeOnly = raw.runtimeOnly === true;
|
|
235
236
|
const legacyPluginIds = normalizeStringList(raw.legacyPluginIds);
|
|
236
237
|
const autoEnableWhenConfiguredProviders = normalizeStringList(raw.autoEnableWhenConfiguredProviders);
|
|
237
238
|
const kind = typeof raw.kind === "string" ? raw.kind : undefined;
|
|
@@ -256,6 +257,7 @@ function loadPluginManifest(rootDir) {
|
|
|
256
257
|
manifest: {
|
|
257
258
|
id,
|
|
258
259
|
configSchema,
|
|
260
|
+
...runtimeOnly ? { runtimeOnly: true } : {},
|
|
259
261
|
...enabledByDefault ? { enabledByDefault } : {},
|
|
260
262
|
...legacyPluginIds.length > 0 ? { legacyPluginIds } : {},
|
|
261
263
|
...autoEnableWhenConfiguredProviders.length > 0 ? { autoEnableWhenConfiguredProviders } : {},
|
|
@@ -2,9 +2,9 @@ import { PLUGIN_ADMIN_RPC_ACTION_METHODS, isPluginRuntimeSessionReadAllowed, nor
|
|
|
2
2
|
import { loadPluginManifestRegistry } from "./manifest-registry.js";
|
|
3
3
|
import { loadConfig } from "../config/io.js";
|
|
4
4
|
import "../config/config.js";
|
|
5
|
-
import { listChannelPluginCatalogEntries } from "../channels/plugins/catalog.js";
|
|
6
5
|
import { resolveBundledPluginSources } from "./bundled-sources.js";
|
|
7
6
|
import { buildPluginLifecycleReport } from "./lifecycle.js";
|
|
7
|
+
import { listChannelPluginCatalogEntries } from "../channels/plugins/catalog.js";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
|
|
10
10
|
//#region src/plugins/marketplace.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isPathInside as isPathInside$1 } from "../infra/path-guards.js";
|
|
2
|
-
import
|
|
2
|
+
import fs from "node:fs";
|
|
3
3
|
|
|
4
4
|
//#region src/plugins/path-safety.ts
|
|
5
5
|
function isPathInside(baseDir, targetPath) {
|
|
@@ -11,7 +11,7 @@ function safeRealpathSync(targetPath, cache) {
|
|
|
11
11
|
return cached;
|
|
12
12
|
}
|
|
13
13
|
try {
|
|
14
|
-
const resolved =
|
|
14
|
+
const resolved = fs.realpathSync(targetPath);
|
|
15
15
|
cache?.set(targetPath, resolved);
|
|
16
16
|
return resolved;
|
|
17
17
|
} catch {
|
|
@@ -20,7 +20,7 @@ function safeRealpathSync(targetPath, cache) {
|
|
|
20
20
|
}
|
|
21
21
|
function safeStatSync(targetPath) {
|
|
22
22
|
try {
|
|
23
|
-
return
|
|
23
|
+
return fs.statSync(targetPath);
|
|
24
24
|
} catch {
|
|
25
25
|
return null;
|
|
26
26
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "node:fs";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
@@ -7,7 +7,7 @@ import { createHash } from "node:crypto";
|
|
|
7
7
|
const CACHE_SCHEMA_VERSION = 2;
|
|
8
8
|
function statMtimeMs(filePath) {
|
|
9
9
|
try {
|
|
10
|
-
return
|
|
10
|
+
return fs.statSync(filePath).mtimeMs;
|
|
11
11
|
} catch {
|
|
12
12
|
return null;
|
|
13
13
|
}
|
|
@@ -23,7 +23,7 @@ function canonicalize(value) {
|
|
|
23
23
|
}
|
|
24
24
|
function configFingerprint(configPath) {
|
|
25
25
|
try {
|
|
26
|
-
const parsed = JSON.parse(
|
|
26
|
+
const parsed = JSON.parse(fs.readFileSync(configPath, "utf8"));
|
|
27
27
|
return createHash("sha256").update(JSON.stringify(canonicalize({ plugins: parsed.plugins }))).digest("hex");
|
|
28
28
|
} catch {
|
|
29
29
|
return createHash("sha256").update("missing-config").digest("hex");
|
|
@@ -41,9 +41,9 @@ function readCurrentPackageVersion(argv1) {
|
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
43
43
|
try {
|
|
44
|
-
const entry =
|
|
44
|
+
const entry = fs.realpathSync(argv1);
|
|
45
45
|
const packagePath = path.join(path.dirname(entry), "package.json");
|
|
46
|
-
const parsed = JSON.parse(
|
|
46
|
+
const parsed = JSON.parse(fs.readFileSync(packagePath, "utf8"));
|
|
47
47
|
return typeof parsed.version === "string" ? parsed.version : null;
|
|
48
48
|
} catch {
|
|
49
49
|
return null;
|
|
@@ -53,7 +53,7 @@ function readValidPluginStatusCache(params) {
|
|
|
53
53
|
const cachePath = params.cachePath ?? resolvePluginStatusCachePath();
|
|
54
54
|
const configPath = params.configPath ?? resolvePluginStatusConfigPath();
|
|
55
55
|
try {
|
|
56
|
-
const parsed = JSON.parse(
|
|
56
|
+
const parsed = JSON.parse(fs.readFileSync(cachePath, "utf8"));
|
|
57
57
|
if (parsed.schemaVersion !== CACHE_SCHEMA_VERSION || parsed.packageVersion !== params.packageVersion || parsed.configPath !== configPath || parsed.configFingerprint !== configFingerprint(configPath) || !Array.isArray(parsed.plugins) || !Array.isArray(parsed.diagnostics)) {
|
|
58
58
|
return null;
|
|
59
59
|
}
|
|
@@ -96,16 +96,16 @@ function writePluginStatusCache(params) {
|
|
|
96
96
|
source: diagnostic.source
|
|
97
97
|
}))
|
|
98
98
|
};
|
|
99
|
-
|
|
99
|
+
fs.mkdirSync(path.dirname(cachePath), {
|
|
100
100
|
recursive: true,
|
|
101
101
|
mode: 448
|
|
102
102
|
});
|
|
103
103
|
const temporaryPath = `${cachePath}.tmp-${process.pid}`;
|
|
104
|
-
|
|
104
|
+
fs.writeFileSync(temporaryPath, `${JSON.stringify(cache)}\n`, {
|
|
105
105
|
encoding: "utf8",
|
|
106
106
|
mode: 384
|
|
107
107
|
});
|
|
108
|
-
|
|
108
|
+
fs.renameSync(temporaryPath, cachePath);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
//#endregion
|
package/dist/plugins/update.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { resolveUserPath } from "../utils.js";
|
|
2
2
|
import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
|
3
3
|
import { installPluginFromNpmSpec, resolvePluginInstallDir } from "./install.js";
|
|
4
|
-
import { resolveBundledPluginSources } from "./bundled-sources.js";
|
|
5
4
|
import { buildNpmResolutionInstallFields, recordPluginInstall } from "./installs.js";
|
|
6
|
-
import
|
|
5
|
+
import { resolveBundledPluginSources } from "./bundled-sources.js";
|
|
6
|
+
import fs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
|
|
9
9
|
//#region src/plugins/update.ts
|
|
@@ -86,14 +86,14 @@ async function readInstalledPackageVersion(dir, opts) {
|
|
|
86
86
|
return undefined;
|
|
87
87
|
}
|
|
88
88
|
try {
|
|
89
|
-
const raw =
|
|
89
|
+
const raw = fs.readFileSync(opened.fd, "utf-8");
|
|
90
90
|
const parsed = JSON.parse(raw);
|
|
91
91
|
return typeof parsed.version === "string" ? parsed.version : undefined;
|
|
92
92
|
} catch (err) {
|
|
93
93
|
opts?.logger?.warn?.(`Could not inspect installed package for "${opts.pluginId ?? path.basename(dir)}": package.json is unreadable (${formatUpdateError(err)}). Continuing update with unknown current version.`);
|
|
94
94
|
return undefined;
|
|
95
95
|
} finally {
|
|
96
|
-
|
|
96
|
+
fs.closeSync(opened.fd);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
function pathsEqual(left, right) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CONFIG_DIR, isRecord, resolveUserPath } from "../utils.js";
|
|
2
2
|
import { resolveFasedAgentPackageRootSync } from "../infra/fased-root.js";
|
|
3
3
|
import { enablePluginInConfig } from "./enable.js";
|
|
4
|
-
import
|
|
4
|
+
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
|
|
7
7
|
//#region src/plugins/web-search-install-catalog.ts
|
|
@@ -48,11 +48,11 @@ function parseCatalogEntries(raw) {
|
|
|
48
48
|
function loadCatalogEntriesFromPaths(paths) {
|
|
49
49
|
const entries = [];
|
|
50
50
|
for (const resolved of paths) {
|
|
51
|
-
if (!
|
|
51
|
+
if (!fs.existsSync(resolved)) {
|
|
52
52
|
continue;
|
|
53
53
|
}
|
|
54
54
|
try {
|
|
55
|
-
const payload = JSON.parse(
|
|
55
|
+
const payload = JSON.parse(fs.readFileSync(resolved, "utf-8"));
|
|
56
56
|
entries.push(...parseCatalogEntries(payload));
|
|
57
57
|
} catch {}
|
|
58
58
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { normalizeThinkLevel } from "../shared/model-thinking.js";
|
|
2
2
|
import { listProfilesForProvider } from "../agents/auth-profiles/profiles.js";
|
|
3
|
+
import { writeConfigFile } from "../config/io.js";
|
|
4
|
+
import "../config/config.js";
|
|
3
5
|
import { resolveApiKeyForProfile } from "../agents/auth-profiles/oauth.js";
|
|
4
6
|
import "../agents/auth-profiles.js";
|
|
5
7
|
import { listOpenAICodexAppServerModels } from "../agents/openai-codex-app-server.js";
|
|
8
|
+
import { ensureOpenAICodexRuntimeComponent } from "../agents/openai-codex-runtime-component.js";
|
|
6
9
|
|
|
7
10
|
//#region src/providers/openai-codex-model-discovery.ts
|
|
8
11
|
const OPENAI_CODEX_MODELS_URL = "https://chatgpt.com/backend-api/codex/models";
|
|
@@ -138,7 +141,14 @@ async function discoverOpenAICodexModels(params) {
|
|
|
138
141
|
throw new Error("OpenAI sign-in token does not contain a ChatGPT account ID");
|
|
139
142
|
}
|
|
140
143
|
if (!params.fetchImpl) {
|
|
141
|
-
|
|
144
|
+
const runtime = await (params.ensureRuntime ?? ensureOpenAICodexRuntimeComponent)({ config: params.cfg });
|
|
145
|
+
if (runtime.installed) {
|
|
146
|
+
await writeConfigFile(runtime.config);
|
|
147
|
+
}
|
|
148
|
+
return parseAppServerModels(await (params.listAppServerModels ?? listOpenAICodexAppServerModels)({
|
|
149
|
+
token: resolved.apiKey,
|
|
150
|
+
executable: runtime.executable
|
|
151
|
+
}));
|
|
142
152
|
}
|
|
143
153
|
const url = new URL(OPENAI_CODEX_MODELS_URL);
|
|
144
154
|
url.searchParams.set("client_version", OPENAI_CODEX_CATALOG_CLIENT_VERSION);
|
|
@@ -34,8 +34,7 @@ function credentialRoutesForProvider(store, route) {
|
|
|
34
34
|
if (!profileProvider) {
|
|
35
35
|
continue;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
if (profileProvider !== normalizedRoute && profileManifest?.id !== manifest?.id) {
|
|
37
|
+
if (profileProvider !== normalizedRoute) {
|
|
39
38
|
continue;
|
|
40
39
|
}
|
|
41
40
|
const authMode = authModeForProfileType(profile.type);
|
|
@@ -245,6 +244,7 @@ function filterCatalogToAuthoritativeAvailability(catalog, store) {
|
|
|
245
244
|
return models;
|
|
246
245
|
});
|
|
247
246
|
}
|
|
247
|
+
const testing = { credentialRoutesForProvider };
|
|
248
248
|
|
|
249
249
|
//#endregion
|
|
250
250
|
export { applyRuntimeProviderModelDiscovery, filterCatalogToAuthoritativeAvailability, resetRuntimeProviderModelCatalogCache };
|
package/dist/secrets/apply.js
CHANGED
|
@@ -12,7 +12,7 @@ import { listKnownSecretEnvVarNames } from "./provider-env-vars.js";
|
|
|
12
12
|
import { createSecretsConfigIO } from "./config-io.js";
|
|
13
13
|
import { normalizeSecretsPlanOptions, resolveValidatedTargetPathSegments } from "./plan.js";
|
|
14
14
|
import { prepareSecretsRuntimeSnapshot } from "./runtime.js";
|
|
15
|
-
import
|
|
15
|
+
import fs from "node:fs";
|
|
16
16
|
import os from "node:os";
|
|
17
17
|
import path from "node:path";
|
|
18
18
|
import { isDeepStrictEqual } from "node:util";
|
|
@@ -125,8 +125,8 @@ function collectAuthStorePaths(config, stateDir) {
|
|
|
125
125
|
const paths = new Set();
|
|
126
126
|
paths.add(path.join(resolveUserPath(stateDir), "agents", "main", "agent", "auth-profiles.json"));
|
|
127
127
|
const agentsRoot = path.join(resolveUserPath(stateDir), "agents");
|
|
128
|
-
if (
|
|
129
|
-
for (const entry of
|
|
128
|
+
if (fs.existsSync(agentsRoot)) {
|
|
129
|
+
for (const entry of fs.readdirSync(agentsRoot, { withFileTypes: true })) {
|
|
130
130
|
if (!entry.isDirectory()) {
|
|
131
131
|
continue;
|
|
132
132
|
}
|
|
@@ -146,15 +146,15 @@ function collectAuthStorePaths(config, stateDir) {
|
|
|
146
146
|
function collectAuthJsonPaths(stateDir) {
|
|
147
147
|
const out = [];
|
|
148
148
|
const agentsRoot = path.join(resolveUserPath(stateDir), "agents");
|
|
149
|
-
if (!
|
|
149
|
+
if (!fs.existsSync(agentsRoot)) {
|
|
150
150
|
return out;
|
|
151
151
|
}
|
|
152
|
-
for (const entry of
|
|
152
|
+
for (const entry of fs.readdirSync(agentsRoot, { withFileTypes: true })) {
|
|
153
153
|
if (!entry.isDirectory()) {
|
|
154
154
|
continue;
|
|
155
155
|
}
|
|
156
156
|
const candidate = path.join(agentsRoot, entry.name, "agent", "auth.json");
|
|
157
|
-
if (
|
|
157
|
+
if (fs.existsSync(candidate)) {
|
|
158
158
|
out.push(candidate);
|
|
159
159
|
}
|
|
160
160
|
}
|
|
@@ -249,10 +249,10 @@ async function projectPlanState(params) {
|
|
|
249
249
|
const authStoreByPath = new Map();
|
|
250
250
|
if (options.scrubAuthProfilesForProviderTargets && providerTargets.size > 0) {
|
|
251
251
|
for (const authStorePath of collectAuthStorePaths(nextConfig, stateDir)) {
|
|
252
|
-
if (!
|
|
252
|
+
if (!fs.existsSync(authStorePath)) {
|
|
253
253
|
continue;
|
|
254
254
|
}
|
|
255
|
-
const raw =
|
|
255
|
+
const raw = fs.readFileSync(authStorePath, "utf8");
|
|
256
256
|
const parsed = JSON.parse(raw);
|
|
257
257
|
if (!isRecord(parsed) || !isRecord(parsed.profiles)) {
|
|
258
258
|
continue;
|
|
@@ -308,7 +308,7 @@ async function projectPlanState(params) {
|
|
|
308
308
|
const authJsonByPath = new Map();
|
|
309
309
|
if (options.scrubLegacyAuthJson) {
|
|
310
310
|
for (const authJsonPath of collectAuthJsonPaths(stateDir)) {
|
|
311
|
-
const raw =
|
|
311
|
+
const raw = fs.readFileSync(authJsonPath, "utf8");
|
|
312
312
|
const parsed = JSON.parse(raw);
|
|
313
313
|
if (!isRecord(parsed)) {
|
|
314
314
|
continue;
|
|
@@ -333,8 +333,8 @@ async function projectPlanState(params) {
|
|
|
333
333
|
const envRawByPath = new Map();
|
|
334
334
|
if (options.scrubEnv && scrubbedValues.size > 0) {
|
|
335
335
|
const envPath = path.join(resolveConfigDir(params.env, os.homedir), ".env");
|
|
336
|
-
if (
|
|
337
|
-
const current =
|
|
336
|
+
if (fs.existsSync(envPath)) {
|
|
337
|
+
const current = fs.readFileSync(envPath, "utf8");
|
|
338
338
|
const scrubbed = scrubEnvRaw(current, scrubbedValues, new Set(listKnownSecretEnvVarNames()));
|
|
339
339
|
if (scrubbed.removed > 0 && scrubbed.nextRaw !== current) {
|
|
340
340
|
envRawByPath.set(envPath, scrubbed.nextRaw);
|
|
@@ -387,24 +387,24 @@ async function projectPlanState(params) {
|
|
|
387
387
|
};
|
|
388
388
|
}
|
|
389
389
|
function captureFileSnapshot(pathname) {
|
|
390
|
-
if (!
|
|
390
|
+
if (!fs.existsSync(pathname)) {
|
|
391
391
|
return {
|
|
392
392
|
existed: false,
|
|
393
393
|
content: "",
|
|
394
394
|
mode: 384
|
|
395
395
|
};
|
|
396
396
|
}
|
|
397
|
-
const stat =
|
|
397
|
+
const stat = fs.statSync(pathname);
|
|
398
398
|
return {
|
|
399
399
|
existed: true,
|
|
400
|
-
content:
|
|
400
|
+
content: fs.readFileSync(pathname, "utf8"),
|
|
401
401
|
mode: stat.mode & 511
|
|
402
402
|
};
|
|
403
403
|
}
|
|
404
404
|
function restoreFileSnapshot(pathname, snapshot) {
|
|
405
405
|
if (!snapshot.existed) {
|
|
406
|
-
if (
|
|
407
|
-
|
|
406
|
+
if (fs.existsSync(pathname)) {
|
|
407
|
+
fs.rmSync(pathname, { force: true });
|
|
408
408
|
}
|
|
409
409
|
return;
|
|
410
410
|
}
|
package/dist/secrets/audit.js
CHANGED
|
@@ -10,7 +10,7 @@ import { resolveSecretRefValue, resolveSecretRefValues } from "./resolve.js";
|
|
|
10
10
|
import { normalizeProviderId } from "../agents/model-selection.js";
|
|
11
11
|
import { listKnownSecretEnvVarNames } from "./provider-env-vars.js";
|
|
12
12
|
import { createSecretsConfigIO } from "./config-io.js";
|
|
13
|
-
import
|
|
13
|
+
import fs from "node:fs";
|
|
14
14
|
import os from "node:os";
|
|
15
15
|
import path from "node:path";
|
|
16
16
|
|
|
@@ -51,12 +51,12 @@ function parseEnvValue(raw) {
|
|
|
51
51
|
return trimmed;
|
|
52
52
|
}
|
|
53
53
|
function collectEnvPlaintext(params) {
|
|
54
|
-
if (!
|
|
54
|
+
if (!fs.existsSync(params.envPath)) {
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
params.collector.filesScanned.add(params.envPath);
|
|
58
58
|
const knownKeys = new Set(listKnownSecretEnvVarNames());
|
|
59
|
-
const raw =
|
|
59
|
+
const raw = fs.readFileSync(params.envPath, "utf8");
|
|
60
60
|
const lines = raw.split(/\r?\n/);
|
|
61
61
|
for (const line of lines) {
|
|
62
62
|
const match = line.match(/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);
|
|
@@ -81,11 +81,11 @@ function collectEnvPlaintext(params) {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
function readJsonObject(filePath) {
|
|
84
|
-
if (!
|
|
84
|
+
if (!fs.existsSync(filePath)) {
|
|
85
85
|
return { value: null };
|
|
86
86
|
}
|
|
87
87
|
try {
|
|
88
|
-
const raw =
|
|
88
|
+
const raw = fs.readFileSync(filePath, "utf8");
|
|
89
89
|
const parsed = JSON.parse(raw);
|
|
90
90
|
if (!isRecord(parsed)) {
|
|
91
91
|
return { value: null };
|
|
@@ -196,8 +196,8 @@ function collectAuthStorePaths(config, stateDir) {
|
|
|
196
196
|
const paths = new Set();
|
|
197
197
|
paths.add(path.join(resolveUserPath(stateDir), "agents", "main", "agent", "auth-profiles.json"));
|
|
198
198
|
const agentsRoot = path.join(resolveUserPath(stateDir), "agents");
|
|
199
|
-
if (
|
|
200
|
-
for (const entry of
|
|
199
|
+
if (fs.existsSync(agentsRoot)) {
|
|
200
|
+
for (const entry of fs.readdirSync(agentsRoot, { withFileTypes: true })) {
|
|
201
201
|
if (!entry.isDirectory()) {
|
|
202
202
|
continue;
|
|
203
203
|
}
|
|
@@ -215,7 +215,7 @@ function collectAuthStorePaths(config, stateDir) {
|
|
|
215
215
|
return [...paths];
|
|
216
216
|
}
|
|
217
217
|
function collectAuthStoreSecrets(params) {
|
|
218
|
-
if (!
|
|
218
|
+
if (!fs.existsSync(params.authStorePath)) {
|
|
219
219
|
return;
|
|
220
220
|
}
|
|
221
221
|
params.collector.filesScanned.add(params.authStorePath);
|
|
@@ -315,15 +315,15 @@ function collectAuthStoreSecrets(params) {
|
|
|
315
315
|
}
|
|
316
316
|
function collectAuthJsonResidue(params) {
|
|
317
317
|
const agentsRoot = path.join(resolveUserPath(params.stateDir), "agents");
|
|
318
|
-
if (!
|
|
318
|
+
if (!fs.existsSync(agentsRoot)) {
|
|
319
319
|
return;
|
|
320
320
|
}
|
|
321
|
-
for (const entry of
|
|
321
|
+
for (const entry of fs.readdirSync(agentsRoot, { withFileTypes: true })) {
|
|
322
322
|
if (!entry.isDirectory()) {
|
|
323
323
|
continue;
|
|
324
324
|
}
|
|
325
325
|
const authJsonPath = path.join(agentsRoot, entry.name, "agent", "auth.json");
|
|
326
|
-
if (!
|
|
326
|
+
if (!fs.existsSync(authJsonPath)) {
|
|
327
327
|
continue;
|
|
328
328
|
}
|
|
329
329
|
params.collector.filesScanned.add(authJsonPath);
|
package/dist/secrets/shared.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
|
|
4
4
|
//#region src/secrets/shared.ts
|
|
@@ -15,28 +15,28 @@ function normalizePositiveInt(value, fallback) {
|
|
|
15
15
|
return Math.max(1, Math.floor(fallback));
|
|
16
16
|
}
|
|
17
17
|
function ensureDirForFile(filePath) {
|
|
18
|
-
|
|
18
|
+
fs.mkdirSync(path.dirname(filePath), {
|
|
19
19
|
recursive: true,
|
|
20
20
|
mode: 448
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
function writeJsonFileSecure(pathname, value) {
|
|
24
24
|
ensureDirForFile(pathname);
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
fs.writeFileSync(pathname, `${JSON.stringify(value, null, 2)}\n`, "utf8");
|
|
26
|
+
fs.chmodSync(pathname, 384);
|
|
27
27
|
}
|
|
28
28
|
function readTextFileIfExists(pathname) {
|
|
29
|
-
if (!
|
|
29
|
+
if (!fs.existsSync(pathname)) {
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
|
-
return
|
|
32
|
+
return fs.readFileSync(pathname, "utf8");
|
|
33
33
|
}
|
|
34
34
|
function writeTextFileAtomic(pathname, value, mode = 384) {
|
|
35
35
|
ensureDirForFile(pathname);
|
|
36
36
|
const tempPath = `${pathname}.tmp-${process.pid}-${Date.now()}`;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
fs.writeFileSync(tempPath, value, "utf8");
|
|
38
|
+
fs.chmodSync(tempPath, mode);
|
|
39
|
+
fs.renameSync(tempPath, pathname);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
|
|
4
4
|
//#region src/security/scan-paths.ts
|
|
@@ -10,7 +10,7 @@ function isPathInside(basePath, candidatePath) {
|
|
|
10
10
|
}
|
|
11
11
|
function safeRealpathSync(filePath) {
|
|
12
12
|
try {
|
|
13
|
-
return
|
|
13
|
+
return fs.realpathSync(filePath);
|
|
14
14
|
} catch {
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
|
|
4
4
|
//#region src/shared/config-eval.ts
|
|
@@ -133,7 +133,7 @@ function hasBinary(bin) {
|
|
|
133
133
|
for (const ext of extensions) {
|
|
134
134
|
const candidate = path.join(part, bin + ext);
|
|
135
135
|
try {
|
|
136
|
-
|
|
136
|
+
fs.accessSync(candidate, fs.constants.X_OK);
|
|
137
137
|
hasBinaryCache.set(bin, true);
|
|
138
138
|
return true;
|
|
139
139
|
} catch {}
|
package/dist/shared/pid-alive.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "node:fs";
|
|
2
2
|
|
|
3
3
|
//#region src/shared/pid-alive.ts
|
|
4
4
|
/**
|
|
@@ -10,7 +10,7 @@ function isZombieProcess(pid) {
|
|
|
10
10
|
return false;
|
|
11
11
|
}
|
|
12
12
|
try {
|
|
13
|
-
const status =
|
|
13
|
+
const status = fs.readFileSync(`/proc/${pid}/status`, "utf8");
|
|
14
14
|
const stateMatch = status.match(/^State:\s+(\S)/m);
|
|
15
15
|
return stateMatch?.[1] === "Z";
|
|
16
16
|
} catch {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths.js";
|
|
2
2
|
import { createTaskRecord } from "./task-registry.js";
|
|
3
|
-
import
|
|
3
|
+
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
|
6
6
|
|
|
@@ -69,7 +69,7 @@ function loadStore(filePath = resolveStandingOrdersPath()) {
|
|
|
69
69
|
return cachedStore;
|
|
70
70
|
}
|
|
71
71
|
try {
|
|
72
|
-
cachedStore = sanitizeStore(JSON.parse(
|
|
72
|
+
cachedStore = sanitizeStore(JSON.parse(fs.readFileSync(filePath, "utf8")));
|
|
73
73
|
} catch {
|
|
74
74
|
cachedStore = defaultStore();
|
|
75
75
|
}
|
|
@@ -77,10 +77,10 @@ function loadStore(filePath = resolveStandingOrdersPath()) {
|
|
|
77
77
|
return cachedStore;
|
|
78
78
|
}
|
|
79
79
|
function saveStore(store, filePath = resolveStandingOrdersPath()) {
|
|
80
|
-
|
|
80
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
81
81
|
const tmpPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
fs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
|
|
83
|
+
fs.renameSync(tmpPath, filePath);
|
|
84
84
|
cachedStore = store;
|
|
85
85
|
loadedPath = filePath;
|
|
86
86
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths.js";
|
|
2
2
|
import { resolveAgentIdFromSessionKey } from "../routing/session-key.js";
|
|
3
3
|
import { findTaskRecord, markTaskTerminal, updateTaskRecord } from "./task-registry.js";
|
|
4
|
-
import
|
|
4
|
+
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
|
|
7
7
|
//#region src/tasks/task-flow-registry.ts
|
|
@@ -85,7 +85,7 @@ function loadStore(filePath = resolveTaskFlowRegistryPath()) {
|
|
|
85
85
|
return cachedStore;
|
|
86
86
|
}
|
|
87
87
|
try {
|
|
88
|
-
cachedStore = sanitizeStore(JSON.parse(
|
|
88
|
+
cachedStore = sanitizeStore(JSON.parse(fs.readFileSync(filePath, "utf8")));
|
|
89
89
|
} catch {
|
|
90
90
|
cachedStore = defaultStore();
|
|
91
91
|
}
|
|
@@ -93,10 +93,10 @@ function loadStore(filePath = resolveTaskFlowRegistryPath()) {
|
|
|
93
93
|
return cachedStore;
|
|
94
94
|
}
|
|
95
95
|
function saveStore(store, filePath = resolveTaskFlowRegistryPath()) {
|
|
96
|
-
|
|
96
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
97
97
|
const tmpPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
fs.writeFileSync(tmpPath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
|
|
99
|
+
fs.renameSync(tmpPath, filePath);
|
|
100
100
|
cachedStore = store;
|
|
101
101
|
loadedPath = filePath;
|
|
102
102
|
}
|