@fased/fased 0.1.62 → 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 +32 -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/agents/auth-profiles/store.js +267 -31
- package/dist/agents/bash-tools.exec.js +10 -4
- package/dist/agents/current-model-catalog.js +3 -3
- 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/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-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/skills/env-overrides.js +38 -28
- package/dist/agents/skills/trust.js +93 -0
- package/dist/agents/skills/workspace.js +128 -0
- package/dist/agents/skills-clawhub.js +36 -11
- package/dist/agents/skills-marketplace-scan.js +49 -0
- 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/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/session-reset-model.js +4 -4
- package/dist/brand.js +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/channel-web.js +2 -2
- package/dist/cli/gateway-cli/run.js +8 -0
- 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/update-cli/update-command.js +260 -11
- package/dist/commands/auth-choice.apply.api-providers.js +3 -3
- package/dist/commands/doctor-config-flow.js +1 -1
- package/dist/commands/doctor-legacy-config.js +2 -13
- 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 +32 -8
- 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/wallet.js +568 -1911
- package/dist/config/config.js +2 -2
- package/dist/config/io.js +64 -2
- package/dist/config/schema.help.js +8 -7
- package/dist/config/schema.labels.js +5 -4
- package/dist/config/zod-schema.agent-runtime.js +1 -0
- package/dist/config/zod-schema.js +5 -0
- package/dist/control-ui/assets/{app-DLil9VO1.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-DdE_NIXo.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/daemon/systemd-system.js +56 -50
- 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 +5 -2
- 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/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/mutating-admin-rpc-rate-limit.js +5 -0
- package/dist/gateway/security-path.js +1 -1
- package/dist/gateway/server-http.js +1084 -1205
- package/dist/gateway/server-methods/models.js +1 -1
- package/dist/gateway/server-methods/secrets.js +40 -0
- 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/sessions-patch.js +3 -5
- package/dist/index.js +4 -2
- package/dist/infra/fasedhub.js +64 -1
- package/dist/infra/local-source-paired-update.js +538 -0
- package/dist/infra/restart.js +41 -10
- package/dist/infra/update-runner.js +96 -0
- package/dist/light-update-status.js +11 -11
- package/dist/memory/backend-config.js +2 -1
- package/dist/memory/session-files.js +16 -2
- 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-Bwi2Oq03.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-DzT4L4Ty.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-BrkmtFxB.js → config-schema-BOT7kHb6.js} +6779 -3696
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +6 -6
- 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 +21 -39
- package/dist/plugin-sdk/index.js +29 -29
- 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-M_ta2lMc.js → monitor-BCFDaqJ-.js} +31 -31
- package/dist/plugin-sdk/{monitor-wYVncM9w.js → monitor-BgbjRiPM.js} +32 -32
- package/dist/plugin-sdk/{openresponses-http-B2GmeSt4.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-B3bHYGaw.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-CxE1mfzj.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 +6 -6
- package/dist/plugin-sdk/slack.js +9 -9
- package/dist/plugin-sdk/{sticker-cache-CGzGWu00.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-DaEcYQ8r.js → telegram-actions-CC_qN4v0.js} +30 -30
- package/dist/plugin-sdk/telegram.d.ts +6 -6
- 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-vcJrC_uv.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-DFAW-n1J.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-CInY-lCv.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 +13 -13
- package/dist/plugin-sdk/whatsapp.js +12 -12
- package/dist/plugin-sdk/{wsl-C4DGFkOd.js → wsl-J-HscWxS.js} +3 -3
- package/dist/plugin-sdk/{zod-schema.providers-core-BEbNizPe.d.ts → zod-schema.providers-core-CIzCjXH9.d.ts} +61 -61
- package/dist/providers/refresh.js +1 -1
- package/dist/providers/registry.js +1 -1
- package/dist/secrets/apply.js +1 -1
- package/dist/secrets/runtime.js +1 -1
- 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 +380 -105
- 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 +17 -28
- package/dist/wallet/wallet-atomic-state.js +53 -0
- package/dist/wallet/wallet-canary.js +0 -1
- package/dist/wallet/wallet-inbound-events.js +16 -11
- package/dist/wallet/wallet-policy-simulation.js +1 -1
- package/dist/wallet/wallet-policy.js +90 -36
- package/dist/wallet/wallet-provider-capabilities.js +28 -4
- package/dist/wallet/wallet-provider-registry.js +57 -44
- package/dist/wallet/wallet-provider-resolver.js +62 -63
- package/dist/wallet/wallet-runtime-config.js +28 -41
- package/dist/wallet/wallet-secrets-store.js +22 -0
- package/dist/wallet/wallet-send-approvals.js +1891 -589
- package/dist/wallet/wallet-send-execution-ledger.js +292 -0
- package/dist/wallet/wallet-settlement-links.js +14 -13
- 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/auto-reply/heartbeat-runner.js +1 -1
- package/dist/web/auto-reply/monitor.js +2 -2
- package/dist/wizard/host-security-capability.js +14 -23
- package/dist/wizard/onboarding.finalize.js +63 -184
- package/dist/wizard/onboarding.host-security.js +117 -1367
- package/dist/wizard/onboarding.js +172 -217
- package/dist/wizard/onboarding.wallet.js +232 -785
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +2 -2
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/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 +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/install.sh +4955 -0
- package/package.json +23 -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 +183 -108
- 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-CS6zsYEE.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
|
@@ -2,6 +2,7 @@ import { CONFIG_DIR, resolveUserPath } from "../../utils.js";
|
|
|
2
2
|
import { createSubsystemLogger } from "../../logging/subsystem.js";
|
|
3
3
|
import { normalizeSkillFilter } from "./filter.js";
|
|
4
4
|
import { resolveEffectiveAgentSkillFilter } from "./agent-filter.js";
|
|
5
|
+
import { isMarketplaceSkillDir, marketplaceSkillIdsFromEntries } from "./trust.js";
|
|
5
6
|
import { resolveSandboxPath } from "../sandbox-paths.js";
|
|
6
7
|
import { parseFrontmatter, resolveFasedAgentMetadata, resolveSkillInvocationPolicy, resolveSkillKey } from "./frontmatter.js";
|
|
7
8
|
import { shouldIncludeSkill } from "./config.js";
|
|
@@ -17,6 +18,7 @@ import { formatSkillsForPrompt, loadSkillsFromDir } from "@mariozechner/pi-codin
|
|
|
17
18
|
const fsp = syncFs.promises;
|
|
18
19
|
const skillsLogger = createSubsystemLogger("skills");
|
|
19
20
|
const skillCommandDebugOnce = new Set();
|
|
21
|
+
const CLAUDE_BUNDLE_MANIFEST_MAX_BYTES = 64 * 1024;
|
|
20
22
|
/**
|
|
21
23
|
* Replace the user's home directory prefix with `~` in skill file paths
|
|
22
24
|
* to reduce system prompt token usage. Models understand `~` expansion,
|
|
@@ -392,6 +394,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
|
|
|
392
394
|
})),
|
|
393
395
|
...skillFilter === undefined ? {} : { skillFilter },
|
|
394
396
|
resolvedSkills,
|
|
397
|
+
marketplaceSkillIds: marketplaceSkillIdsFromEntries(eligible),
|
|
395
398
|
version: opts?.snapshotVersion
|
|
396
399
|
};
|
|
397
400
|
}
|
|
@@ -407,6 +410,116 @@ function resolveEffectiveSkillFilter(opts) {
|
|
|
407
410
|
}
|
|
408
411
|
return undefined;
|
|
409
412
|
}
|
|
413
|
+
function isExplicitlyEnabledClaudeBundle(pluginId, config) {
|
|
414
|
+
const plugins = config?.plugins;
|
|
415
|
+
if (plugins?.enabled === false || plugins?.deny?.includes(pluginId)) {
|
|
416
|
+
return false;
|
|
417
|
+
}
|
|
418
|
+
if (plugins?.allow?.length && !plugins.allow.includes(pluginId)) {
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
return plugins?.entries?.[pluginId]?.enabled === true;
|
|
422
|
+
}
|
|
423
|
+
function stripMarkdownFrontmatter(content) {
|
|
424
|
+
const normalized = content.replace(/\r\n?/gu, "\n");
|
|
425
|
+
if (!normalized.startsWith("---\n")) {
|
|
426
|
+
return normalized.trim();
|
|
427
|
+
}
|
|
428
|
+
const end = normalized.indexOf("\n---", 4);
|
|
429
|
+
if (end < 0) {
|
|
430
|
+
return "";
|
|
431
|
+
}
|
|
432
|
+
return normalized.slice(end + 4).replace(/^\n/u, "").trim();
|
|
433
|
+
}
|
|
434
|
+
function listImmediateDirectories(root) {
|
|
435
|
+
try {
|
|
436
|
+
return syncFs.readdirSync(root, { withFileTypes: true }).filter((entry) => entry.isDirectory() && !entry.isSymbolicLink()).map((entry) => path.join(root, entry.name));
|
|
437
|
+
} catch {
|
|
438
|
+
return [];
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
function loadClaudeBundleCommandSpecs(params) {
|
|
442
|
+
const roots = [
|
|
443
|
+
...listImmediateDirectories(path.join(CONFIG_DIR, "extensions")),
|
|
444
|
+
...listImmediateDirectories(path.join(params.workspaceDir, ".fased", "extensions")),
|
|
445
|
+
...(params.config?.plugins?.load?.paths ?? []).map((entry) => resolveUserPath(entry))
|
|
446
|
+
];
|
|
447
|
+
const seen = new Set();
|
|
448
|
+
const specs = [];
|
|
449
|
+
for (const unresolvedRoot of roots) {
|
|
450
|
+
let root;
|
|
451
|
+
try {
|
|
452
|
+
const stat = syncFs.lstatSync(unresolvedRoot);
|
|
453
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
456
|
+
root = syncFs.realpathSync(unresolvedRoot);
|
|
457
|
+
} catch {
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
460
|
+
if (seen.has(root) || isMarketplaceSkillDir(root)) {
|
|
461
|
+
continue;
|
|
462
|
+
}
|
|
463
|
+
seen.add(root);
|
|
464
|
+
const manifestPath = path.join(root, ".claude-plugin", "plugin.json");
|
|
465
|
+
let pluginId = "";
|
|
466
|
+
try {
|
|
467
|
+
const stat = syncFs.lstatSync(manifestPath);
|
|
468
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size <= 0 || stat.size > CLAUDE_BUNDLE_MANIFEST_MAX_BYTES) {
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
471
|
+
const manifest = JSON.parse(syncFs.readFileSync(manifestPath, "utf8"));
|
|
472
|
+
pluginId = typeof manifest.name === "string" ? manifest.name.trim() : "";
|
|
473
|
+
} catch {
|
|
474
|
+
continue;
|
|
475
|
+
}
|
|
476
|
+
if (!pluginId || !isExplicitlyEnabledClaudeBundle(pluginId, params.config)) {
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
const commandsDir = path.join(root, "commands");
|
|
480
|
+
let entries;
|
|
481
|
+
try {
|
|
482
|
+
const stat = syncFs.lstatSync(commandsDir);
|
|
483
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
484
|
+
continue;
|
|
485
|
+
}
|
|
486
|
+
entries = syncFs.readdirSync(commandsDir, { withFileTypes: true });
|
|
487
|
+
} catch {
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
for (const entry of entries.filter((candidate) => candidate.isFile() && !candidate.isSymbolicLink()).toSorted((left, right) => left.name.localeCompare(right.name)).slice(0, params.maxCandidates)) {
|
|
491
|
+
if (path.extname(entry.name).toLowerCase() !== ".md") {
|
|
492
|
+
continue;
|
|
493
|
+
}
|
|
494
|
+
const filePath = path.join(commandsDir, entry.name);
|
|
495
|
+
let content;
|
|
496
|
+
try {
|
|
497
|
+
const stat = syncFs.lstatSync(filePath);
|
|
498
|
+
if (stat.size <= 0 || stat.size > params.maxFileBytes) {
|
|
499
|
+
continue;
|
|
500
|
+
}
|
|
501
|
+
content = syncFs.readFileSync(filePath, "utf8");
|
|
502
|
+
} catch {
|
|
503
|
+
continue;
|
|
504
|
+
}
|
|
505
|
+
const frontmatter = parseFrontmatter(content);
|
|
506
|
+
const skillName = frontmatter.name?.trim();
|
|
507
|
+
const description = frontmatter.description?.trim();
|
|
508
|
+
const promptTemplate = stripMarkdownFrontmatter(content);
|
|
509
|
+
if (!skillName || !description || !promptTemplate) {
|
|
510
|
+
continue;
|
|
511
|
+
}
|
|
512
|
+
specs.push({
|
|
513
|
+
name: sanitizeSkillCommandName(skillName),
|
|
514
|
+
skillName,
|
|
515
|
+
description: description.length > SKILL_COMMAND_DESCRIPTION_MAX_LENGTH ? `${description.slice(0, SKILL_COMMAND_DESCRIPTION_MAX_LENGTH - 1)}…` : description,
|
|
516
|
+
promptTemplate,
|
|
517
|
+
sourceFilePath: filePath
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
return specs;
|
|
522
|
+
}
|
|
410
523
|
function resolveWorkspaceSkillPromptState(workspaceDir, opts) {
|
|
411
524
|
const skillEntries = opts?.entries ?? loadSkillEntries(workspaceDir, opts);
|
|
412
525
|
const eligible = filterSkillEntries(skillEntries, opts?.config, resolveEffectiveSkillFilter(opts), opts?.eligibility);
|
|
@@ -599,9 +712,24 @@ function buildWorkspaceSkillCommandSpecs(workspaceDir, opts) {
|
|
|
599
712
|
name: unique,
|
|
600
713
|
skillName: rawName,
|
|
601
714
|
description,
|
|
715
|
+
sourceFilePath: entry.skill.filePath,
|
|
602
716
|
...dispatch ? { dispatch } : {}
|
|
603
717
|
});
|
|
604
718
|
}
|
|
719
|
+
const limits = resolveSkillsLimits(opts?.config);
|
|
720
|
+
for (const bundleCommand of loadClaudeBundleCommandSpecs({
|
|
721
|
+
workspaceDir,
|
|
722
|
+
config: opts?.config,
|
|
723
|
+
maxCandidates: limits.maxCandidatesPerRoot,
|
|
724
|
+
maxFileBytes: limits.maxSkillFileBytes
|
|
725
|
+
})) {
|
|
726
|
+
const unique = resolveUniqueSkillCommandName(bundleCommand.name, used);
|
|
727
|
+
used.add(unique.toLowerCase());
|
|
728
|
+
specs.push({
|
|
729
|
+
...bundleCommand,
|
|
730
|
+
name: unique
|
|
731
|
+
});
|
|
732
|
+
}
|
|
605
733
|
return specs;
|
|
606
734
|
}
|
|
607
735
|
|
|
@@ -163,9 +163,17 @@ async function resolveInstallVersion(params) {
|
|
|
163
163
|
if (!resolvedVersion) {
|
|
164
164
|
throw new Error(`Skill "${params.slug}" has no installable version.`);
|
|
165
165
|
}
|
|
166
|
+
const versionMetadataMatches = detail.latestVersion?.version === resolvedVersion;
|
|
167
|
+
const expectedIntegrity = versionMetadataMatches ? detail.latestVersion?.integrity : undefined;
|
|
168
|
+
const expectedSha256 = versionMetadataMatches ? detail.latestVersion?.sha256 : undefined;
|
|
169
|
+
if (!expectedIntegrity && !expectedSha256) {
|
|
170
|
+
throw new Error(`Skill "${params.slug}"@${resolvedVersion} has no registry-published archive digest; refusing an unverifiable install.`);
|
|
171
|
+
}
|
|
166
172
|
return {
|
|
167
173
|
detail,
|
|
168
|
-
version: resolvedVersion
|
|
174
|
+
version: resolvedVersion,
|
|
175
|
+
expectedIntegrity,
|
|
176
|
+
expectedSha256
|
|
169
177
|
};
|
|
170
178
|
}
|
|
171
179
|
async function installExtractedSkill(params) {
|
|
@@ -259,10 +267,10 @@ function buildMarketplaceUpdateReview(params) {
|
|
|
259
267
|
message: finding.message
|
|
260
268
|
}));
|
|
261
269
|
const reasons = [];
|
|
262
|
-
if (params.
|
|
270
|
+
if (params.permissions.risky && permissionDigestChanged) {
|
|
263
271
|
reasons.push("requested permissions changed");
|
|
264
272
|
}
|
|
265
|
-
if (
|
|
273
|
+
if (addedScanFindings.length > 0) {
|
|
266
274
|
reasons.push("archive scan added reviewable findings");
|
|
267
275
|
}
|
|
268
276
|
return {
|
|
@@ -278,7 +286,7 @@ function buildMarketplaceUpdateReview(params) {
|
|
|
278
286
|
}
|
|
279
287
|
function assertUpdateReviewAllowed(params) {
|
|
280
288
|
if (params.review.approvalRequired && params.allowPermissionChanges !== true) {
|
|
281
|
-
throw new Error(`ClawHub skill update requires permission review (${params.review.reasons.join(", ")}); rerun with explicit permission-change approval.`);
|
|
289
|
+
throw new Error(`ClawHub skill install or update requires permission review (${params.review.reasons.join(", ")}); rerun with explicit permission-change approval.`);
|
|
282
290
|
}
|
|
283
291
|
}
|
|
284
292
|
async function performClawHubSkillInstall(params) {
|
|
@@ -289,7 +297,7 @@ async function performClawHubSkillInstall(params) {
|
|
|
289
297
|
allowRegistries: params.allowRegistries,
|
|
290
298
|
allowTrackedLegacyOrigin: params.force && Boolean(params.previousOrigin)
|
|
291
299
|
});
|
|
292
|
-
const { detail, version } = await resolveInstallVersion({
|
|
300
|
+
const { detail, version, expectedIntegrity, expectedSha256 } = await resolveInstallVersion({
|
|
293
301
|
slug: params.slug,
|
|
294
302
|
version: params.version,
|
|
295
303
|
baseUrl: params.baseUrl
|
|
@@ -305,12 +313,15 @@ async function performClawHubSkillInstall(params) {
|
|
|
305
313
|
const archive = await downloadClawHubSkillArchive({
|
|
306
314
|
slug: params.slug,
|
|
307
315
|
version,
|
|
308
|
-
baseUrl: params.baseUrl
|
|
316
|
+
baseUrl: params.baseUrl,
|
|
317
|
+
expectedIntegrity,
|
|
318
|
+
expectedSha256
|
|
309
319
|
});
|
|
310
320
|
try {
|
|
311
321
|
let extractedPermissions = null;
|
|
312
322
|
let archiveScan = null;
|
|
313
323
|
let updateReview = null;
|
|
324
|
+
let contentSha256 = null;
|
|
314
325
|
const install = await withExtractedArchiveRoot({
|
|
315
326
|
archivePath: archive.archivePath,
|
|
316
327
|
tempDirPrefix: "fased-skill-clawhub-",
|
|
@@ -327,6 +338,7 @@ async function performClawHubSkillInstall(params) {
|
|
|
327
338
|
}
|
|
328
339
|
params.logger?.info?.(`Marketplace archive scan for ${params.slug}: ${formatArchiveScanFindings(scan)}`);
|
|
329
340
|
const inspection = await inspectSkillMarketplaceManifest(rootDir);
|
|
341
|
+
contentSha256 = await computeSkillFingerprint(rootDir);
|
|
330
342
|
extractedPermissions = inspection.permissions;
|
|
331
343
|
updateReview = buildMarketplaceUpdateReview({
|
|
332
344
|
previousOrigin: params.previousOrigin,
|
|
@@ -360,6 +372,9 @@ async function performClawHubSkillInstall(params) {
|
|
|
360
372
|
if (!updateReview) {
|
|
361
373
|
throw new Error("failed to review marketplace skill update");
|
|
362
374
|
}
|
|
375
|
+
if (!contentSha256) {
|
|
376
|
+
throw new Error("failed to fingerprint marketplace skill content");
|
|
377
|
+
}
|
|
363
378
|
const installedAt = Date.now();
|
|
364
379
|
await writeClawHubSkillOrigin(install.targetDir, {
|
|
365
380
|
version: 1,
|
|
@@ -367,6 +382,9 @@ async function performClawHubSkillInstall(params) {
|
|
|
367
382
|
slug: params.slug,
|
|
368
383
|
installedVersion: version,
|
|
369
384
|
installedAt,
|
|
385
|
+
archiveSha256: archive.sha256,
|
|
386
|
+
archiveIntegrityVerified: archive.integrityVerified,
|
|
387
|
+
contentSha256,
|
|
370
388
|
permissions: extractedPermissions,
|
|
371
389
|
installScan: archiveScan,
|
|
372
390
|
lastUpdateReview: updateReview
|
|
@@ -374,7 +392,10 @@ async function performClawHubSkillInstall(params) {
|
|
|
374
392
|
const lock = await readClawHubSkillsLockfile(params.workspaceDir);
|
|
375
393
|
lock.skills[params.slug] = {
|
|
376
394
|
version,
|
|
377
|
-
installedAt
|
|
395
|
+
installedAt,
|
|
396
|
+
archiveSha256: archive.sha256,
|
|
397
|
+
archiveIntegrityVerified: archive.integrityVerified,
|
|
398
|
+
contentSha256
|
|
378
399
|
};
|
|
379
400
|
await writeClawHubSkillsLockfile(params.workspaceDir, lock);
|
|
380
401
|
return {
|
|
@@ -432,7 +453,7 @@ async function previewTrackedSkillUpdateFromClawHub(params) {
|
|
|
432
453
|
allowRegistries: params.allowRegistries,
|
|
433
454
|
allowTrackedLegacyOrigin: Boolean(params.previousOrigin)
|
|
434
455
|
});
|
|
435
|
-
const { version } = await resolveInstallVersion({
|
|
456
|
+
const { version, expectedIntegrity, expectedSha256 } = await resolveInstallVersion({
|
|
436
457
|
slug: params.slug,
|
|
437
458
|
baseUrl: params.baseUrl
|
|
438
459
|
});
|
|
@@ -440,7 +461,9 @@ async function previewTrackedSkillUpdateFromClawHub(params) {
|
|
|
440
461
|
const archive = await downloadClawHubSkillArchive({
|
|
441
462
|
slug: params.slug,
|
|
442
463
|
version,
|
|
443
|
-
baseUrl: params.baseUrl
|
|
464
|
+
baseUrl: params.baseUrl,
|
|
465
|
+
expectedIntegrity,
|
|
466
|
+
expectedSha256
|
|
444
467
|
});
|
|
445
468
|
try {
|
|
446
469
|
const targetDir = resolveSkillInstallDir(params.workspaceDir, params.slug);
|
|
@@ -505,7 +528,7 @@ async function previewSkillInstallFromClawHub(params) {
|
|
|
505
528
|
registry,
|
|
506
529
|
allowRegistries: params.allowRegistries
|
|
507
530
|
});
|
|
508
|
-
const { detail, version } = await resolveInstallVersion({
|
|
531
|
+
const { detail, version, expectedIntegrity, expectedSha256 } = await resolveInstallVersion({
|
|
509
532
|
slug,
|
|
510
533
|
version: params.version,
|
|
511
534
|
baseUrl: params.baseUrl
|
|
@@ -521,7 +544,9 @@ async function previewSkillInstallFromClawHub(params) {
|
|
|
521
544
|
const archive = await downloadClawHubSkillArchive({
|
|
522
545
|
slug,
|
|
523
546
|
version,
|
|
524
|
-
baseUrl: params.baseUrl
|
|
547
|
+
baseUrl: params.baseUrl,
|
|
548
|
+
expectedIntegrity,
|
|
549
|
+
expectedSha256
|
|
525
550
|
});
|
|
526
551
|
try {
|
|
527
552
|
let permissions = null;
|
|
@@ -76,6 +76,25 @@ const SUSPICIOUS_SCRIPT_EXTENSIONS = new Set([
|
|
|
76
76
|
".sh",
|
|
77
77
|
".zsh"
|
|
78
78
|
]);
|
|
79
|
+
const REVIEWABLE_CODE_EXTENSIONS = new Set([
|
|
80
|
+
".cjs",
|
|
81
|
+
".go",
|
|
82
|
+
".js",
|
|
83
|
+
".jsx",
|
|
84
|
+
".mjs",
|
|
85
|
+
".py",
|
|
86
|
+
".rb",
|
|
87
|
+
".rs",
|
|
88
|
+
".ts",
|
|
89
|
+
".tsx"
|
|
90
|
+
]);
|
|
91
|
+
const MARKDOWN_EXTENSIONS = new Set([".md", ".mdx"]);
|
|
92
|
+
const MARKDOWN_INSTRUCTION_RISKS = [
|
|
93
|
+
/ignore\s+(?:all\s+)?(?:previous|prior|system|developer)\s+instructions?/iu,
|
|
94
|
+
/(?:upload|send|exfiltrat|leak)[^\n]{0,80}(?:secret|credential|token|private\s+key|seed\s+phrase)/iu,
|
|
95
|
+
/(?:\.ssh|\.aws|\.gnupg|\.env|process\.env|private\s+key|seed\s+phrase)/iu,
|
|
96
|
+
/curl\s+[^\n|]{0,160}\|\s*(?:ba)?sh/iu
|
|
97
|
+
];
|
|
79
98
|
const DEPENDENCY_MANIFEST_FILE_NAMES = new Set([
|
|
80
99
|
"Cargo.toml",
|
|
81
100
|
"Gemfile",
|
|
@@ -132,6 +151,13 @@ function inspectMarketplaceFilePath(params) {
|
|
|
132
151
|
path: params.path,
|
|
133
152
|
message: `skill archive contains script file "${basename}"`
|
|
134
153
|
});
|
|
154
|
+
} else if (REVIEWABLE_CODE_EXTENSIONS.has(ext)) {
|
|
155
|
+
addFinding(params.findings, {
|
|
156
|
+
severity: "warn",
|
|
157
|
+
code: "executable_source_file",
|
|
158
|
+
path: params.path,
|
|
159
|
+
message: `skill archive contains executable source file "${basename}"; review it before granting tools`
|
|
160
|
+
});
|
|
135
161
|
}
|
|
136
162
|
if (DEPENDENCY_MANIFEST_FILE_NAMES.has(basename)) {
|
|
137
163
|
addFinding(params.findings, {
|
|
@@ -142,6 +168,22 @@ function inspectMarketplaceFilePath(params) {
|
|
|
142
168
|
});
|
|
143
169
|
}
|
|
144
170
|
}
|
|
171
|
+
async function inspectMarketplaceMarkdown(params) {
|
|
172
|
+
const fullPath = path.join(params.rootDir, params.relativePath);
|
|
173
|
+
const stat = await fs.stat(fullPath);
|
|
174
|
+
if (stat.size > MAX_FILE_BYTES) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const content = await fs.readFile(fullPath, "utf8");
|
|
178
|
+
if (MARKDOWN_INSTRUCTION_RISKS.some((pattern) => pattern.test(content))) {
|
|
179
|
+
addFinding(params.findings, {
|
|
180
|
+
severity: "warn",
|
|
181
|
+
code: "instruction_risk",
|
|
182
|
+
path: toPosix(params.relativePath),
|
|
183
|
+
message: "skill instructions reference prompt overrides, secrets, sensitive paths, or shell-pipe execution; manual review is required"
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
145
187
|
async function inspectMarketplaceSourceCode(params) {
|
|
146
188
|
try {
|
|
147
189
|
const summary = await scanDirectoryWithSummary(params.rootDir, {
|
|
@@ -289,6 +331,13 @@ async function scanSkillMarketplaceArchive(rootDir) {
|
|
|
289
331
|
path: posixPath,
|
|
290
332
|
findings
|
|
291
333
|
});
|
|
334
|
+
if (MARKDOWN_EXTENSIONS.has(path.posix.extname(entry.name.toLowerCase()))) {
|
|
335
|
+
await inspectMarketplaceMarkdown({
|
|
336
|
+
rootDir,
|
|
337
|
+
relativePath,
|
|
338
|
+
findings
|
|
339
|
+
});
|
|
340
|
+
}
|
|
292
341
|
}
|
|
293
342
|
}
|
|
294
343
|
await inspectMarketplaceSourceCode({
|
|
@@ -417,7 +417,7 @@ function createMarketplaceSearchTool(params) {
|
|
|
417
417
|
orders: orders.filter((entry) => {
|
|
418
418
|
const paymentStatus = entry.order.paymentIntent?.status;
|
|
419
419
|
const settlementStatus = entry.order.settlement?.status;
|
|
420
|
-
return paymentStatus === "verified" || settlementStatus === "settled" ||
|
|
420
|
+
return paymentStatus === "verified" || settlementStatus === "settled" || settlementStatus === "verified";
|
|
421
421
|
})
|
|
422
422
|
});
|
|
423
423
|
}
|
|
@@ -447,7 +447,7 @@ For scheduled or conditional automation, create a scheduled task whose isolated
|
|
|
447
447
|
});
|
|
448
448
|
}
|
|
449
449
|
case "capital_init": return jsonResult(await callGateway("sat.initMinerCapital", gatewayOpts, { authority: readStringParam(params, "authority") }));
|
|
450
|
-
case "reserve_top_up": return jsonResult(await callGateway("sat.
|
|
450
|
+
case "reserve_top_up": return jsonResult(await callGateway("sat.topUpRegistryReserve", gatewayOpts, { targetBalanceLamports: 0 }));
|
|
451
451
|
case "deposit_capital": return jsonResult(await callGateway("sat.depositMinerCapital", gatewayOpts, { lamports: parseLamportsInput(params) }));
|
|
452
452
|
case "withdraw_capital": return jsonResult(await callGateway("sat.withdrawMinerCapital", gatewayOpts, { lamports: parseLamportsInput(params) }));
|
|
453
453
|
case "set_commit": return jsonResult(await callGateway("sat.setActiveCommit", gatewayOpts, {
|
|
@@ -119,7 +119,7 @@ async function resolveModelOverride(params) {
|
|
|
119
119
|
throw new Error(`Unrecognized model "${raw}".`);
|
|
120
120
|
}
|
|
121
121
|
const key = modelKey(resolved.ref.provider, resolved.ref.model);
|
|
122
|
-
if (allowed.
|
|
122
|
+
if (!allowed.allowAny && !allowed.allowedKeys.has(key)) {
|
|
123
123
|
throw new Error(`Model "${key}" is not allowed.`);
|
|
124
124
|
}
|
|
125
125
|
const isDefault = resolved.ref.provider === configDefault.provider && resolved.ref.model === configDefault.model;
|