@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import syncFs from "node:fs";
|
|
2
2
|
|
|
3
3
|
//#region src/config/cache-utils.ts
|
|
4
4
|
function resolveCacheTtlMs(params) {
|
|
@@ -16,7 +16,7 @@ function isCacheEnabled(ttlMs) {
|
|
|
16
16
|
}
|
|
17
17
|
function getFileMtimeMs(filePath) {
|
|
18
18
|
try {
|
|
19
|
-
return
|
|
19
|
+
return syncFs.statSync(filePath).mtimeMs;
|
|
20
20
|
} catch {
|
|
21
21
|
return undefined;
|
|
22
22
|
}
|
package/dist/config/config.js
CHANGED
|
@@ -4,9 +4,9 @@ import { applyConfigOverrides, getConfigOverrides, resetConfigOverrides, setConf
|
|
|
4
4
|
import { MODEL_APIS } from "./types.models.js";
|
|
5
5
|
import { FasedAgentSchema } from "./zod-schema.js";
|
|
6
6
|
import { validateConfigObject, validateConfigObjectRaw, validateConfigObjectRawWithPlugins, validateConfigObjectWithPlugins } from "./validation.js";
|
|
7
|
-
import { clearConfigCache, clearRuntimeConfigSnapshot, createConfigIO, getRuntimeConfigSnapshot, loadConfig, parseConfigJson5, readConfigFileSnapshot, readConfigFileSnapshotForWrite, resolveConfigSnapshotHash, setRuntimeConfigSnapshot, writeConfigFile } from "./io.js";
|
|
7
|
+
import { clearConfigCache, clearRuntimeConfigSnapshot, createConfigIO, getRuntimeConfigSnapshot, loadConfig, parseConfigJson5, readConfigFileSnapshot, readConfigFileSnapshotForWrite, resolveConfigSnapshotHash, setRuntimeConfigSnapshot, updateConfigFile, writeConfigFile } from "./io.js";
|
|
8
8
|
import { migrateLegacyConfig } from "./legacy-migrate.js";
|
|
9
9
|
import { TOOLS_BY_SENDER_KEY_TYPES, parseToolsBySenderTypedKey } from "./types.tools.js";
|
|
10
10
|
import "./types.js";
|
|
11
11
|
|
|
12
|
-
export { CONFIG_PATH, DEFAULT_GATEWAY_PORT, DEFAULT_SECRET_PROVIDER_ALIAS, FasedAgentSchema, MODEL_APIS, STATE_DIR, TOOLS_BY_SENDER_KEY_TYPES, applyConfigOverrides, assertSecretInputResolved, clearConfigCache, clearRuntimeConfigSnapshot, coerceSecretRef, createConfigIO, getConfigOverrides, getRuntimeConfigSnapshot, isNixMode, isSecretRef, loadConfig, migrateLegacyConfig, parseConfigJson5, parseEnvTemplateSecretRef, parseToolsBySenderTypedKey, readConfigFileSnapshot, readConfigFileSnapshotForWrite, resetConfigOverrides, resolveCanonicalConfigPath, resolveConfigPath, resolveConfigPathCandidate, resolveConfigSnapshotHash, resolveDefaultConfigCandidates, resolveGatewayLockDir, resolveGatewayPort, resolveIsNixMode, resolveLegacyStateDir, resolveLegacyStateDirs, resolveNewStateDir, resolveOAuthDir, resolveOAuthPath, resolveStateDir, setConfigOverride, setRuntimeConfigSnapshot, unsetConfigOverride, validateConfigObject, validateConfigObjectRaw, validateConfigObjectRawWithPlugins, validateConfigObjectWithPlugins, writeConfigFile };
|
|
12
|
+
export { CONFIG_PATH, DEFAULT_GATEWAY_PORT, DEFAULT_SECRET_PROVIDER_ALIAS, FasedAgentSchema, MODEL_APIS, STATE_DIR, TOOLS_BY_SENDER_KEY_TYPES, applyConfigOverrides, assertSecretInputResolved, clearConfigCache, clearRuntimeConfigSnapshot, coerceSecretRef, createConfigIO, getConfigOverrides, getRuntimeConfigSnapshot, isNixMode, isSecretRef, loadConfig, migrateLegacyConfig, parseConfigJson5, parseEnvTemplateSecretRef, parseToolsBySenderTypedKey, readConfigFileSnapshot, readConfigFileSnapshotForWrite, resetConfigOverrides, resolveCanonicalConfigPath, resolveConfigPath, resolveConfigPathCandidate, resolveConfigSnapshotHash, resolveDefaultConfigCandidates, resolveGatewayLockDir, resolveGatewayPort, resolveIsNixMode, resolveLegacyStateDir, resolveLegacyStateDirs, resolveNewStateDir, resolveOAuthDir, resolveOAuthPath, resolveStateDir, setConfigOverride, setRuntimeConfigSnapshot, unsetConfigOverride, updateConfigFile, validateConfigObject, validateConfigObjectRaw, validateConfigObjectRawWithPlugins, validateConfigObjectWithPlugins, writeConfigFile };
|
package/dist/config/includes.js
CHANGED
|
@@ -4,7 +4,7 @@ import { isBlockedObjectKey } from "../infra/prototype-keys.js";
|
|
|
4
4
|
import { canUseBoundaryFileOpen, openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
|
5
5
|
import { isPathInside } from "../security/scan-paths.js";
|
|
6
6
|
import "./prototype-keys.js";
|
|
7
|
-
import
|
|
7
|
+
import syncFs from "node:fs";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import JSON5 from "json5";
|
|
10
10
|
|
|
@@ -130,7 +130,7 @@ var IncludeProcessor = class IncludeProcessor {
|
|
|
130
130
|
throw new ConfigIncludeError(`Include path escapes config directory: ${includePath} (root: ${this.rootDir})`, includePath);
|
|
131
131
|
}
|
|
132
132
|
try {
|
|
133
|
-
const real =
|
|
133
|
+
const real = syncFs.realpathSync(normalized);
|
|
134
134
|
if (!isPathInside(this.rootRealDir, real)) {
|
|
135
135
|
throw new ConfigIncludeError(`Include path resolves outside config directory (symlink): ${includePath} (root: ${this.rootDir})`, includePath);
|
|
136
136
|
}
|
|
@@ -184,13 +184,13 @@ var IncludeProcessor = class IncludeProcessor {
|
|
|
184
184
|
};
|
|
185
185
|
function safeRealpath(target) {
|
|
186
186
|
try {
|
|
187
|
-
return
|
|
187
|
+
return syncFs.realpathSync(target);
|
|
188
188
|
} catch {
|
|
189
189
|
return target;
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
function readConfigIncludeFileWithGuards(params) {
|
|
193
|
-
const ioFs = params.ioFs ??
|
|
193
|
+
const ioFs = params.ioFs ?? syncFs;
|
|
194
194
|
const maxBytes = params.maxBytes ?? MAX_INCLUDE_FILE_BYTES;
|
|
195
195
|
if (!canUseBoundaryFileOpen(ioFs)) {
|
|
196
196
|
return ioFs.readFileSync(params.resolvedPath, "utf-8");
|
|
@@ -217,7 +217,7 @@ function readConfigIncludeFileWithGuards(params) {
|
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
219
|
const defaultResolver = {
|
|
220
|
-
readFile: (p) =>
|
|
220
|
+
readFile: (p) => syncFs.readFileSync(p, "utf-8"),
|
|
221
221
|
readFileWithGuards: ({ includePath, resolvedPath, rootRealDir }) => readConfigIncludeFileWithGuards({
|
|
222
222
|
includePath,
|
|
223
223
|
resolvedPath,
|
package/dist/config/io.js
CHANGED
|
@@ -2,6 +2,8 @@ import { resolveRequiredHomeDir } from "../infra/home-dir.js";
|
|
|
2
2
|
import { resolveConfigPath, resolveDefaultConfigCandidates, resolveStateDir } from "./paths.js";
|
|
3
3
|
import { isBlockedObjectKey } from "../infra/prototype-keys.js";
|
|
4
4
|
import { VERSION } from "../version.js";
|
|
5
|
+
import { withFileLock } from "../plugin-sdk/file-lock.js";
|
|
6
|
+
import "../infra/file-lock.js";
|
|
5
7
|
import { ensureOwnerDisplaySecret } from "../agents/owner-display.js";
|
|
6
8
|
import { loadDotEnv } from "../infra/dotenv.js";
|
|
7
9
|
import { loadShellEnvFallback, resolveShellEnvFallbackTimeoutMs, shouldDeferShellEnvFallback, shouldEnableShellEnvFallback } from "../infra/shell-env.js";
|
|
@@ -22,7 +24,7 @@ import { repairInstalledPluginAllowlist } from "./plugins-allowlist.js";
|
|
|
22
24
|
import { applyConfigOverrides } from "./runtime-overrides.js";
|
|
23
25
|
import { validateConfigObjectRawWithPlugins, validateConfigObjectWithPlugins } from "./validation.js";
|
|
24
26
|
import { compareFasedAgentVersions } from "./version.js";
|
|
25
|
-
import
|
|
27
|
+
import syncFs from "node:fs";
|
|
26
28
|
import os from "node:os";
|
|
27
29
|
import path from "node:path";
|
|
28
30
|
import JSON5 from "json5";
|
|
@@ -71,6 +73,36 @@ function pruneLegacyRemovedPlugins(cfg) {
|
|
|
71
73
|
const OPEN_DM_POLICY_ALLOW_FROM_RE = /^(?<policyPath>[a-z0-9_.-]+)\s*=\s*"open"\s+requires\s+(?<allowPath>[a-z0-9_.-]+)(?:\s+\(or\s+[a-z0-9_.-]+\))?\s+to include "\*"$/i;
|
|
72
74
|
const CONFIG_AUDIT_LOG_FILENAME = "config-audit.jsonl";
|
|
73
75
|
const loggedInvalidConfigs = new Set();
|
|
76
|
+
const CONFIG_WRITE_QUEUES = new Map();
|
|
77
|
+
async function inConfigWriteQueue(configPath, fn) {
|
|
78
|
+
const previous = CONFIG_WRITE_QUEUES.get(configPath) ?? Promise.resolve();
|
|
79
|
+
let release;
|
|
80
|
+
const current = new Promise((resolve) => {
|
|
81
|
+
release = resolve;
|
|
82
|
+
});
|
|
83
|
+
CONFIG_WRITE_QUEUES.set(configPath, current);
|
|
84
|
+
await previous.catch(() => undefined);
|
|
85
|
+
try {
|
|
86
|
+
return await fn();
|
|
87
|
+
} finally {
|
|
88
|
+
release?.();
|
|
89
|
+
if (CONFIG_WRITE_QUEUES.get(configPath) === current) {
|
|
90
|
+
CONFIG_WRITE_QUEUES.delete(configPath);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async function withConfigWriteLock(configPath, fn) {
|
|
95
|
+
return await inConfigWriteQueue(configPath, async () => await withFileLock(configPath, {
|
|
96
|
+
retries: {
|
|
97
|
+
retries: 160,
|
|
98
|
+
factor: 1.08,
|
|
99
|
+
minTimeout: 10,
|
|
100
|
+
maxTimeout: 250,
|
|
101
|
+
randomize: true
|
|
102
|
+
},
|
|
103
|
+
stale: 12e4
|
|
104
|
+
}, fn));
|
|
105
|
+
}
|
|
74
106
|
function hashConfigRaw(raw) {
|
|
75
107
|
return crypto.createHash("sha256").update(raw ?? "").digest("hex");
|
|
76
108
|
}
|
|
@@ -477,7 +509,7 @@ function resolveConfigPathForDeps(deps) {
|
|
|
477
509
|
}
|
|
478
510
|
function normalizeDeps(overrides = {}) {
|
|
479
511
|
return {
|
|
480
|
-
fs: overrides.fs ??
|
|
512
|
+
fs: overrides.fs ?? syncFs,
|
|
481
513
|
json5: overrides.json5 ?? JSON5,
|
|
482
514
|
env: overrides.env ?? process.env,
|
|
483
515
|
homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
|
|
@@ -857,7 +889,7 @@ function createConfigIO(overrides = {}) {
|
|
|
857
889
|
}
|
|
858
890
|
};
|
|
859
891
|
}
|
|
860
|
-
async function
|
|
892
|
+
async function writeConfigFileUnlocked(cfg, options = {}) {
|
|
861
893
|
clearConfigCache();
|
|
862
894
|
let persistCandidate = cfg;
|
|
863
895
|
const { snapshot } = await readConfigFileSnapshotInternal();
|
|
@@ -1047,11 +1079,38 @@ function createConfigIO(overrides = {}) {
|
|
|
1047
1079
|
throw err;
|
|
1048
1080
|
}
|
|
1049
1081
|
}
|
|
1082
|
+
async function writeConfigFile(cfg, options = {}) {
|
|
1083
|
+
await withConfigWriteLock(configPath, async () => {
|
|
1084
|
+
await writeConfigFileUnlocked(cfg, options);
|
|
1085
|
+
});
|
|
1086
|
+
}
|
|
1087
|
+
async function updateConfigFile(mutator) {
|
|
1088
|
+
return await withConfigWriteLock(configPath, async () => {
|
|
1089
|
+
const read = await readConfigFileSnapshotInternal();
|
|
1090
|
+
if (!read.snapshot.valid) {
|
|
1091
|
+
throw new Error("Config update transaction refused an invalid config snapshot");
|
|
1092
|
+
}
|
|
1093
|
+
const decision = await mutator(structuredClone(read.snapshot.config), read.snapshot);
|
|
1094
|
+
const shouldWrite = decision.write !== false;
|
|
1095
|
+
if (shouldWrite) {
|
|
1096
|
+
await writeConfigFileUnlocked(decision.config, {
|
|
1097
|
+
envSnapshotForRestore: read.envSnapshotForRestore,
|
|
1098
|
+
expectedConfigPath: configPath
|
|
1099
|
+
});
|
|
1100
|
+
}
|
|
1101
|
+
return {
|
|
1102
|
+
config: shouldWrite ? decision.config : read.snapshot.config,
|
|
1103
|
+
result: decision.result,
|
|
1104
|
+
written: shouldWrite
|
|
1105
|
+
};
|
|
1106
|
+
});
|
|
1107
|
+
}
|
|
1050
1108
|
return {
|
|
1051
1109
|
configPath,
|
|
1052
1110
|
loadConfig,
|
|
1053
1111
|
readConfigFileSnapshot,
|
|
1054
1112
|
readConfigFileSnapshotForWrite,
|
|
1113
|
+
updateConfigFile,
|
|
1055
1114
|
writeConfigFile
|
|
1056
1115
|
};
|
|
1057
1116
|
}
|
|
@@ -1145,6 +1204,9 @@ async function writeConfigFile(cfg, options = {}) {
|
|
|
1145
1204
|
unsetPaths: options.unsetPaths
|
|
1146
1205
|
});
|
|
1147
1206
|
}
|
|
1207
|
+
async function updateConfigFile(mutator) {
|
|
1208
|
+
return await createConfigIO().updateConfigFile(mutator);
|
|
1209
|
+
}
|
|
1148
1210
|
|
|
1149
1211
|
//#endregion
|
|
1150
|
-
export { clearConfigCache, clearRuntimeConfigSnapshot, createConfigIO, getRuntimeConfigSnapshot, loadConfig, parseConfigJson5, readConfigFileSnapshot, readConfigFileSnapshotForWrite, resolveConfigSnapshotHash, setRuntimeConfigSnapshot, writeConfigFile };
|
|
1212
|
+
export { clearConfigCache, clearRuntimeConfigSnapshot, createConfigIO, getRuntimeConfigSnapshot, loadConfig, parseConfigJson5, readConfigFileSnapshot, readConfigFileSnapshotForWrite, resolveConfigSnapshotHash, setRuntimeConfigSnapshot, updateConfigFile, writeConfigFile };
|
package/dist/config/paths.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expandHomePrefix, resolveRequiredHomeDir } from "../infra/home-dir.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
|
|
@@ -86,7 +86,7 @@ function resolveConfigPathCandidate(env = process.env, homedir = envHomedir(env)
|
|
|
86
86
|
const candidates = resolveDefaultConfigCandidates(env, homedir);
|
|
87
87
|
const existing = candidates.find((candidate) => {
|
|
88
88
|
try {
|
|
89
|
-
return
|
|
89
|
+
return syncFs.existsSync(candidate);
|
|
90
90
|
} catch {
|
|
91
91
|
return false;
|
|
92
92
|
}
|
|
@@ -108,7 +108,7 @@ function resolveConfigPath(env = process.env, stateDir = resolveStateDir(env, en
|
|
|
108
108
|
const candidates = [path.join(stateDir, CONFIG_FILENAME)];
|
|
109
109
|
const existing = candidates.find((candidate) => {
|
|
110
110
|
try {
|
|
111
|
-
return
|
|
111
|
+
return syncFs.existsSync(candidate);
|
|
112
112
|
} catch {
|
|
113
113
|
return false;
|
|
114
114
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import syncFs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
|
|
4
4
|
//#region src/config/sat-runtime-ids.ts
|
|
@@ -63,7 +63,7 @@ function resolveSatRuntimeDefaultsFile(env = process.env) {
|
|
|
63
63
|
path.resolve(import.meta.dirname, "..", "..", "..", "config", "sat-runtime.env")
|
|
64
64
|
];
|
|
65
65
|
for (const candidate of candidates) {
|
|
66
|
-
if (candidate &&
|
|
66
|
+
if (candidate && syncFs.existsSync(candidate)) {
|
|
67
67
|
return candidate;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -82,7 +82,7 @@ function loadSatRuntimeDefaults(env = process.env) {
|
|
|
82
82
|
if (!file) {
|
|
83
83
|
return null;
|
|
84
84
|
}
|
|
85
|
-
const parsed = parseEnvFile(
|
|
85
|
+
const parsed = parseEnvFile(syncFs.readFileSync(file, "utf8"));
|
|
86
86
|
if (!parsed.programId || !parsed.bondProgramId || !parsed.mintAddress || !parsed.mintProgramId) {
|
|
87
87
|
return null;
|
|
88
88
|
}
|
|
@@ -178,6 +178,7 @@ const FIELD_HELP_BASE = {
|
|
|
178
178
|
"agents.defaults.memorySearch.remote.baseUrl": "Custom base URL for remote embeddings (OpenAI-compatible proxies or Gemini overrides).",
|
|
179
179
|
"agents.defaults.memorySearch.remote.apiKey": "Custom API key for the remote embedding provider.",
|
|
180
180
|
"agents.defaults.memorySearch.remote.headers": "Extra headers for remote embeddings (merged; remote overrides OpenAI headers).",
|
|
181
|
+
"agents.defaults.memorySearch.remote.allowSessionContent": "Explicitly allow sanitized session transcript text to leave this host for remote embedding. Default: false.",
|
|
181
182
|
"agents.defaults.memorySearch.remote.batch.enabled": "Enable batch API for memory embeddings (OpenAI/Gemini; default: true).",
|
|
182
183
|
"agents.defaults.memorySearch.remote.batch.wait": "Wait for batch completion when indexing (default: true).",
|
|
183
184
|
"agents.defaults.memorySearch.remote.batch.concurrency": "Max concurrent embedding batch jobs for memory indexing (default: 2).",
|
|
@@ -219,15 +220,15 @@ const FIELD_HELP_BASE = {
|
|
|
219
220
|
"memory.qmd.limits.timeoutMs": "Per-query timeout for QMD searches (default: 4000).",
|
|
220
221
|
"memory.qmd.scope": "Session/channel scope for QMD recall (same syntax as session.sendPolicy; default: direct-only). Use match.rawKeyPrefix to match full agent-prefixed session keys.",
|
|
221
222
|
wallet: "Wallet subsystem configuration.",
|
|
222
|
-
"wallet.provider.id": "Wallet backend provider id
|
|
223
|
+
"wallet.provider.id": "Wallet backend provider id. Local, WSL2, macOS, and Hosting use \"local-socket-signer\"; Wallet Standard and Turnkey remain supported. Legacy \"embedded-keystore\" values are migration-only and fail closed.",
|
|
223
224
|
"wallet.execution.mode": "Wallet send execution mode (\"manual\" queues approvals; \"autonomous\" executes immediately when policy allows).",
|
|
224
225
|
"wallet.approvalAuth.mode": "Approval auth mode for sensitive wallet actions (\"none\" or \"webauthn\").",
|
|
225
226
|
"wallet.approvalAuth.challengeTtlSeconds": "Wallet WebAuthn challenge TTL in seconds (default: 300).",
|
|
226
227
|
"wallet.approvalAuth.grantTtlSeconds": "Wallet approval grant TTL in seconds (default: 120).",
|
|
227
|
-
"wallet.keystore.enabled": "
|
|
228
|
-
"wallet.keystore.path": "
|
|
229
|
-
"wallet.keystore.chainSupport": "
|
|
230
|
-
"wallet.keystore.autoLockSeconds": "
|
|
228
|
+
"wallet.keystore.enabled": "Retired legacy field. Embedded keystores are migration-only and fail closed.",
|
|
229
|
+
"wallet.keystore.path": "Retired legacy path retained only so the native signer migration can be performed explicitly.",
|
|
230
|
+
"wallet.keystore.chainSupport": "Retired legacy field; production wallet keys are signer/provider-owned.",
|
|
231
|
+
"wallet.keystore.autoLockSeconds": "Retired legacy embedded-keystore field.",
|
|
231
232
|
"wallet.runtime.enabled": "Enable wallet runtime compatibility settings (provider-agnostic replacement for legacy wallet runtime config).",
|
|
232
233
|
"wallet.runtime.mode": "Wallet runtime mode (\"managed\" or \"external\").",
|
|
233
234
|
"wallet.runtime.runtime": "Wallet runtime source (\"external-docker\" or \"external-custom\").",
|
|
@@ -241,8 +242,8 @@ const FIELD_HELP_BASE = {
|
|
|
241
242
|
"wallet.runtime.install.enabled": "Whether onboarding/install flows should record wallet runtime install metadata.",
|
|
242
243
|
"wallet.runtime.install.version": "Installed wallet runtime version recorded by onboarding/install flows.",
|
|
243
244
|
"wallet.runtime.policy.directSigning": "Allow background/agent wallet execution from wallet tooling (must be paired with caps/allowlists). Manual reviewed sends are separate.",
|
|
244
|
-
"wallet.runtime.policy.capsEnabled": "Enable wallet spend cap enforcement. When false, role,
|
|
245
|
-
"wallet.runtime.policy.solana.allowPrograms": "
|
|
245
|
+
"wallet.runtime.policy.capsEnabled": "Enable wallet spend cap enforcement. When false, role, signer policy, allowlist, and audit gates still apply, but SOL/token cap comparisons are skipped.",
|
|
246
|
+
"wallet.runtime.policy.solana.allowPrograms": "Explicit Solana program/token allowlist. Empty denies program and token execution; Agent market swaps also require every inspected Jupiter route program.",
|
|
246
247
|
"wallet.runtime.policy.solana.tokenCaps": "Per-mint SPL token caps for token sends, token-input swaps, and token-input limit orders. Keys are mint addresses; values are base-unit maxPerTx/maxDaily strings.",
|
|
247
248
|
"wallet.runtime.policy.solana.maxPerTx": "Maximum Solana value allowed per transaction (base unit string; e.g. lamports).",
|
|
248
249
|
"wallet.runtime.policy.solana.maxDaily": "Maximum cumulative Solana value allowed per UTC day (base unit string).",
|
|
@@ -194,6 +194,7 @@ const FIELD_LABELS_BASE = {
|
|
|
194
194
|
"agents.defaults.memorySearch.remote.baseUrl": "Remote Embedding Base URL",
|
|
195
195
|
"agents.defaults.memorySearch.remote.apiKey": "Remote Embedding API Key",
|
|
196
196
|
"agents.defaults.memorySearch.remote.headers": "Remote Embedding Headers",
|
|
197
|
+
"agents.defaults.memorySearch.remote.allowSessionContent": "Allow Session Content in Remote Embeddings",
|
|
197
198
|
"models.providers.*.request.allowPrivateNetwork": "Allow Private Model Network",
|
|
198
199
|
"agents.defaults.memorySearch.remote.batch.concurrency": "Remote Batch Concurrency",
|
|
199
200
|
"agents.defaults.memorySearch.model": "Memory Search Model",
|
|
@@ -249,10 +250,10 @@ const FIELD_LABELS_BASE = {
|
|
|
249
250
|
"wallet.approvalAuth.mode": "Wallet Approval Auth Mode",
|
|
250
251
|
"wallet.approvalAuth.challengeTtlSeconds": "Wallet Approval Challenge TTL (sec)",
|
|
251
252
|
"wallet.approvalAuth.grantTtlSeconds": "Wallet Approval Grant TTL (sec)",
|
|
252
|
-
"wallet.keystore.enabled": "
|
|
253
|
-
"wallet.keystore.path": "
|
|
254
|
-
"wallet.keystore.chainSupport": "
|
|
255
|
-
"wallet.keystore.autoLockSeconds": "
|
|
253
|
+
"wallet.keystore.enabled": "Legacy Keystore (Retired)",
|
|
254
|
+
"wallet.keystore.path": "Legacy Keystore Migration Path",
|
|
255
|
+
"wallet.keystore.chainSupport": "Legacy Keystore Chains",
|
|
256
|
+
"wallet.keystore.autoLockSeconds": "Legacy Keystore Auto Lock (Retired)",
|
|
256
257
|
"wallet.runtime.enabled": "Wallet Runtime Enabled",
|
|
257
258
|
"wallet.runtime.mode": "Wallet Runtime Mode",
|
|
258
259
|
"wallet.runtime.runtime": "Wallet Runtime Kind",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isPrimarySessionTranscriptFileName, isSessionArchiveArtifactName } from "./artifacts.js";
|
|
2
2
|
import { resolveSessionFilePath } from "./paths.js";
|
|
3
|
-
import
|
|
3
|
+
import syncFs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
|
|
6
6
|
//#region src/config/sessions/disk-budget.ts
|
|
@@ -11,7 +11,7 @@ const NOOP_LOGGER = {
|
|
|
11
11
|
function canonicalizePathForComparison(filePath) {
|
|
12
12
|
const resolved = path.resolve(filePath);
|
|
13
13
|
try {
|
|
14
|
-
return
|
|
14
|
+
return syncFs.realpathSync(resolved);
|
|
15
15
|
} catch {
|
|
16
16
|
return resolved;
|
|
17
17
|
}
|
|
@@ -83,14 +83,14 @@ function resolveReferencedSessionTranscriptPaths(params) {
|
|
|
83
83
|
return referenced;
|
|
84
84
|
}
|
|
85
85
|
async function readSessionsDirFiles(sessionsDir) {
|
|
86
|
-
const dirEntries = await
|
|
86
|
+
const dirEntries = await syncFs.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
|
|
87
87
|
const files = [];
|
|
88
88
|
for (const dirent of dirEntries) {
|
|
89
89
|
if (!dirent.isFile()) {
|
|
90
90
|
continue;
|
|
91
91
|
}
|
|
92
92
|
const filePath = path.join(sessionsDir, dirent.name);
|
|
93
|
-
const stat = await
|
|
93
|
+
const stat = await syncFs.promises.stat(filePath).catch(() => null);
|
|
94
94
|
if (!stat?.isFile()) {
|
|
95
95
|
continue;
|
|
96
96
|
}
|
|
@@ -105,11 +105,11 @@ async function readSessionsDirFiles(sessionsDir) {
|
|
|
105
105
|
return files;
|
|
106
106
|
}
|
|
107
107
|
async function removeFileIfExists(filePath) {
|
|
108
|
-
const stat = await
|
|
108
|
+
const stat = await syncFs.promises.stat(filePath).catch(() => null);
|
|
109
109
|
if (!stat?.isFile()) {
|
|
110
110
|
return 0;
|
|
111
111
|
}
|
|
112
|
-
await
|
|
112
|
+
await syncFs.promises.rm(filePath, { force: true }).catch(() => undefined);
|
|
113
113
|
return stat.size;
|
|
114
114
|
}
|
|
115
115
|
async function removeFileForBudget(params) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { expandHomePrefix, resolveRequiredHomeDir } from "../../infra/home-dir.js";
|
|
2
2
|
import { resolveStateDir } from "../paths.js";
|
|
3
3
|
import { DEFAULT_AGENT_ID, normalizeAgentId } from "../../routing/session-key.js";
|
|
4
|
-
import
|
|
4
|
+
import syncFs from "node:fs";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
|
@@ -112,7 +112,7 @@ function resolveStructuralSessionFallbackPath(candidateAbsPath, expectedAgentId)
|
|
|
112
112
|
}
|
|
113
113
|
function safeRealpathSync(filePath) {
|
|
114
114
|
try {
|
|
115
|
-
return
|
|
115
|
+
return syncFs.realpathSync(filePath);
|
|
116
116
|
} catch {
|
|
117
117
|
return undefined;
|
|
118
118
|
}
|
|
@@ -10,7 +10,7 @@ import { archiveSessionTranscripts, cleanupArchivedSessionTranscripts } from "..
|
|
|
10
10
|
import { deliveryContextFromSession, mergeDeliveryContext, normalizeDeliveryContext, normalizeSessionDeliveryFields } from "../../utils/delivery-context.js";
|
|
11
11
|
import { getFileMtimeMs, isCacheEnabled, resolveCacheTtlMs } from "../cache-utils.js";
|
|
12
12
|
import { enforceSessionDiskBudget } from "./disk-budget.js";
|
|
13
|
-
import
|
|
13
|
+
import syncFs from "node:fs";
|
|
14
14
|
import path from "node:path";
|
|
15
15
|
import crypto from "node:crypto";
|
|
16
16
|
|
|
@@ -155,7 +155,7 @@ function loadSessionStore(storePath, opts = {}) {
|
|
|
155
155
|
const retryBuf = maxReadAttempts > 1 ? new Int32Array(new SharedArrayBuffer(4)) : undefined;
|
|
156
156
|
for (let attempt = 0; attempt < maxReadAttempts; attempt++) {
|
|
157
157
|
try {
|
|
158
|
-
const raw =
|
|
158
|
+
const raw = syncFs.readFileSync(storePath, "utf-8");
|
|
159
159
|
if (raw.length === 0 && attempt < maxReadAttempts - 1) {
|
|
160
160
|
Atomics.wait(retryBuf, 0, 0, 50);
|
|
161
161
|
continue;
|
|
@@ -406,7 +406,7 @@ function capEntryCount(store, overrideMax, opts = {}) {
|
|
|
406
406
|
}
|
|
407
407
|
async function getSessionFileSize(storePath) {
|
|
408
408
|
try {
|
|
409
|
-
const stat = await
|
|
409
|
+
const stat = await syncFs.promises.stat(storePath);
|
|
410
410
|
return stat.size;
|
|
411
411
|
} catch {
|
|
412
412
|
return null;
|
|
@@ -428,7 +428,7 @@ async function rotateSessionFile(storePath, overrideBytes) {
|
|
|
428
428
|
}
|
|
429
429
|
const backupPath = `${storePath}.bak.${Date.now()}`;
|
|
430
430
|
try {
|
|
431
|
-
await
|
|
431
|
+
await syncFs.promises.rename(storePath, backupPath);
|
|
432
432
|
log.info("rotated session store file", {
|
|
433
433
|
backupPath: path.basename(backupPath),
|
|
434
434
|
sizeBytes: fileSize
|
|
@@ -439,13 +439,13 @@ async function rotateSessionFile(storePath, overrideBytes) {
|
|
|
439
439
|
try {
|
|
440
440
|
const dir = path.dirname(storePath);
|
|
441
441
|
const baseName = path.basename(storePath);
|
|
442
|
-
const files = await
|
|
442
|
+
const files = await syncFs.promises.readdir(dir);
|
|
443
443
|
const backups = files.filter((f) => f.startsWith(`${baseName}.bak.`)).toSorted().toReversed();
|
|
444
444
|
const maxBackups = 3;
|
|
445
445
|
if (backups.length > maxBackups) {
|
|
446
446
|
const toDelete = backups.slice(maxBackups);
|
|
447
447
|
for (const old of toDelete) {
|
|
448
|
-
await
|
|
448
|
+
await syncFs.promises.unlink(path.join(dir, old)).catch(() => undefined);
|
|
449
449
|
}
|
|
450
450
|
log.info("cleaned up old session store backups", { deleted: toDelete.length });
|
|
451
451
|
}
|
|
@@ -561,15 +561,15 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
|
|
|
561
561
|
});
|
|
562
562
|
}
|
|
563
563
|
}
|
|
564
|
-
await
|
|
564
|
+
await syncFs.promises.mkdir(path.dirname(storePath), { recursive: true });
|
|
565
565
|
const json = JSON.stringify(store, null, 2);
|
|
566
566
|
if (process.platform === "win32") {
|
|
567
567
|
const tmp = `${storePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
568
568
|
try {
|
|
569
|
-
await
|
|
569
|
+
await syncFs.promises.writeFile(tmp, json, "utf-8");
|
|
570
570
|
for (let i = 0; i < 5; i++) {
|
|
571
571
|
try {
|
|
572
|
-
await
|
|
572
|
+
await syncFs.promises.rename(tmp, storePath);
|
|
573
573
|
break;
|
|
574
574
|
} catch {
|
|
575
575
|
if (i < 4) {
|
|
@@ -587,28 +587,28 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
|
|
|
587
587
|
}
|
|
588
588
|
throw err;
|
|
589
589
|
} finally {
|
|
590
|
-
await
|
|
590
|
+
await syncFs.promises.rm(tmp, { force: true }).catch(() => undefined);
|
|
591
591
|
}
|
|
592
592
|
return;
|
|
593
593
|
}
|
|
594
594
|
const tmp = `${storePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
595
595
|
try {
|
|
596
|
-
await
|
|
596
|
+
await syncFs.promises.writeFile(tmp, json, {
|
|
597
597
|
mode: 384,
|
|
598
598
|
encoding: "utf-8"
|
|
599
599
|
});
|
|
600
|
-
await
|
|
601
|
-
await
|
|
600
|
+
await syncFs.promises.rename(tmp, storePath);
|
|
601
|
+
await syncFs.promises.chmod(storePath, 384);
|
|
602
602
|
} catch (err) {
|
|
603
603
|
const code = err && typeof err === "object" && "code" in err ? String(err.code) : null;
|
|
604
604
|
if (code === "ENOENT") {
|
|
605
605
|
try {
|
|
606
|
-
await
|
|
607
|
-
await
|
|
606
|
+
await syncFs.promises.mkdir(path.dirname(storePath), { recursive: true });
|
|
607
|
+
await syncFs.promises.writeFile(storePath, json, {
|
|
608
608
|
mode: 384,
|
|
609
609
|
encoding: "utf-8"
|
|
610
610
|
});
|
|
611
|
-
await
|
|
611
|
+
await syncFs.promises.chmod(storePath, 384);
|
|
612
612
|
} catch (err2) {
|
|
613
613
|
const code2 = err2 && typeof err2 === "object" && "code" in err2 ? String(err2.code) : null;
|
|
614
614
|
if (code2 === "ENOENT") {
|
|
@@ -620,7 +620,7 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
|
|
|
620
620
|
}
|
|
621
621
|
throw err;
|
|
622
622
|
} finally {
|
|
623
|
-
await
|
|
623
|
+
await syncFs.promises.rm(tmp, { force: true });
|
|
624
624
|
}
|
|
625
625
|
}
|
|
626
626
|
async function saveSessionStore(storePath, store, opts) {
|
|
@@ -2,7 +2,7 @@ import { resolveDefaultSessionStorePath, resolveSessionTranscriptPathInDir } fro
|
|
|
2
2
|
import { loadSessionStore } from "./store.js";
|
|
3
3
|
import { emitSessionTranscriptUpdate } from "../../sessions/transcript-events.js";
|
|
4
4
|
import { resolveAndPersistSessionFile } from "./session-file.js";
|
|
5
|
-
import
|
|
5
|
+
import syncFs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
|
|
8
8
|
|
|
@@ -65,11 +65,11 @@ async function resolveSessionTranscriptFile(params) {
|
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
67
|
function ensureSessionTranscriptHeader(params) {
|
|
68
|
-
if (
|
|
68
|
+
if (syncFs.existsSync(params.sessionFile)) {
|
|
69
69
|
return { created: false };
|
|
70
70
|
}
|
|
71
71
|
try {
|
|
72
|
-
|
|
72
|
+
syncFs.mkdirSync(path.dirname(params.sessionFile), { recursive: true });
|
|
73
73
|
const header = {
|
|
74
74
|
type: "session",
|
|
75
75
|
version: CURRENT_SESSION_VERSION,
|
|
@@ -77,7 +77,7 @@ function ensureSessionTranscriptHeader(params) {
|
|
|
77
77
|
timestamp: new Date().toISOString(),
|
|
78
78
|
cwd: process.cwd()
|
|
79
79
|
};
|
|
80
|
-
|
|
80
|
+
syncFs.writeFileSync(params.sessionFile, `${JSON.stringify(header)}\n`, {
|
|
81
81
|
encoding: "utf-8",
|
|
82
82
|
mode: 384
|
|
83
83
|
});
|
package/dist/config/talk.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { coerceSecretRef } from "./types.secrets.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
|
|
@@ -254,7 +254,7 @@ function buildTalkConfigResponse(value) {
|
|
|
254
254
|
return Object.keys(payload).length > 0 ? payload : undefined;
|
|
255
255
|
}
|
|
256
256
|
function readTalkApiKeyFromProfile(deps = {}) {
|
|
257
|
-
const fsImpl = deps.fs ??
|
|
257
|
+
const fsImpl = deps.fs ?? syncFs;
|
|
258
258
|
const osImpl = deps.os ?? os;
|
|
259
259
|
const pathImpl = deps.path ?? path;
|
|
260
260
|
const home = osImpl.homedir();
|
|
@@ -458,6 +458,7 @@ const MemorySearchSchema = z.object({
|
|
|
458
458
|
baseUrl: z.string().optional(),
|
|
459
459
|
apiKey: z.string().optional().register(sensitive),
|
|
460
460
|
headers: z.record(z.string(), z.string()).optional(),
|
|
461
|
+
allowSessionContent: z.boolean().optional(),
|
|
461
462
|
batch: z.object({
|
|
462
463
|
enabled: z.boolean().optional(),
|
|
463
464
|
wait: z.boolean().optional(),
|
|
@@ -522,6 +522,10 @@ const FederationMarketplaceOrderSchema = z.object({
|
|
|
522
522
|
sellerSyncError: z.string().optional(),
|
|
523
523
|
sellerSyncedAt: z.string().optional(),
|
|
524
524
|
sellerAcceptedAt: z.string().optional(),
|
|
525
|
+
peerNodeId: z.string().optional(),
|
|
526
|
+
peerRemoteOrderId: z.string().optional(),
|
|
527
|
+
peerRequestDigest: z.string().optional(),
|
|
528
|
+
peerDeliveryDigest: z.string().optional(),
|
|
525
529
|
serviceKind: z.string().optional(),
|
|
526
530
|
title: z.string().optional(),
|
|
527
531
|
pricing: FederationOfferPricingSchema,
|
|
@@ -555,6 +559,7 @@ const WalletSchema = z.object({
|
|
|
555
559
|
z.literal("local-socket-signer"),
|
|
556
560
|
z.literal("alchemy"),
|
|
557
561
|
z.literal("turnkey"),
|
|
562
|
+
z.literal("wallet-standard"),
|
|
558
563
|
z.literal("privy")
|
|
559
564
|
]).optional() }).strict().optional(),
|
|
560
565
|
execution: z.object({ mode: z.union([z.literal("manual"), z.literal("autonomous")]).optional() }).strict().optional(),
|