run402-mcp 4.93.2 → 4.94.0
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/README.md +52 -50
- package/core/dist/config.d.ts +16 -2
- package/core/dist/config.d.ts.map +1 -1
- package/core/dist/config.js +52 -18
- package/core/dist/config.js.map +1 -1
- package/core/dist/control-plane-session.d.ts +29 -14
- package/core/dist/control-plane-session.d.ts.map +1 -1
- package/core/dist/control-plane-session.js +31 -6
- package/core/dist/control-plane-session.js.map +1 -1
- package/core/dist/keystore.js +7 -7
- package/core/dist/keystore.js.map +1 -1
- package/core/dist/profiles.d.ts +3 -3
- package/core/dist/profiles.d.ts.map +1 -1
- package/core/dist/profiles.js +9 -7
- package/core/dist/profiles.js.map +1 -1
- package/core/dist/{allowance-auth.d.ts → wallet-auth.d.ts} +6 -6
- package/core/dist/wallet-auth.d.ts.map +1 -0
- package/{sdk/core-dist/allowance-auth.js → core/dist/wallet-auth.js} +15 -15
- package/core/dist/wallet-auth.js.map +1 -0
- package/core/dist/wallet.d.ts +22 -0
- package/core/dist/wallet.d.ts.map +1 -0
- package/core/dist/{allowance.js → wallet.js} +20 -20
- package/core/dist/wallet.js.map +1 -0
- package/core/dist/{write-auth-session.d.ts → write-approvals.d.ts} +28 -26
- package/core/dist/write-approvals.d.ts.map +1 -0
- package/{sdk/core-dist/write-auth-session.js → core/dist/write-approvals.js} +19 -19
- package/core/dist/write-approvals.js.map +1 -0
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +14 -9
- package/dist/errors.js.map +1 -1
- package/dist/format-bytes.d.ts +2 -0
- package/dist/format-bytes.d.ts.map +1 -0
- package/dist/format-bytes.js +24 -0
- package/dist/format-bytes.js.map +1 -0
- package/dist/index.js +66 -63
- package/dist/index.js.map +1 -1
- package/dist/sdk.js +2 -2
- package/dist/sdk.js.map +1 -1
- package/dist/tool-profiles.d.ts +6 -6
- package/dist/tool-profiles.d.ts.map +1 -1
- package/dist/tool-profiles.js +11 -11
- package/dist/tool-profiles.js.map +1 -1
- package/dist/tools/admin-reactivate-project.js +1 -1
- package/dist/tools/admin-reactivate-project.js.map +1 -1
- package/dist/tools/admin-set-lease-perpetual.js +1 -1
- package/dist/tools/admin-set-lease-perpetual.js.map +1 -1
- package/dist/tools/check-balance.js +4 -4
- package/dist/tools/check-balance.js.map +1 -1
- package/dist/tools/ci.js +1 -1
- package/dist/tools/ci.js.map +1 -1
- package/dist/tools/create-email-organization.js +1 -1
- package/dist/tools/create-email-organization.js.map +1 -1
- package/dist/tools/create-notification-rule.js +3 -3
- package/dist/tools/create-notification-rule.js.map +1 -1
- package/dist/tools/delete-notification-rule.js +2 -2
- package/dist/tools/delete-notification-rule.js.map +1 -1
- package/dist/tools/deploy-events.js +2 -2
- package/dist/tools/deploy-events.js.map +1 -1
- package/dist/tools/deploy-list.js +2 -2
- package/dist/tools/deploy-list.js.map +1 -1
- package/dist/tools/deploy-rehearse.js +2 -2
- package/dist/tools/deploy-rehearse.js.map +1 -1
- package/dist/tools/{deploy-release.d.ts → deploy-releases.d.ts} +9 -9
- package/dist/tools/deploy-releases.d.ts.map +1 -0
- package/dist/tools/{deploy-release.js → deploy-releases.js} +9 -9
- package/dist/tools/deploy-releases.js.map +1 -0
- package/dist/tools/{deploy-diagnose-url.d.ts → deploy-resolve.d.ts} +4 -4
- package/dist/tools/deploy-resolve.d.ts.map +1 -0
- package/dist/tools/{deploy-diagnose-url.js → deploy-resolve.js} +6 -6
- package/dist/tools/deploy-resolve.js.map +1 -0
- package/dist/tools/deploy-resume.js +2 -2
- package/dist/tools/deploy-resume.js.map +1 -1
- package/dist/tools/deploy-site-dir.js +2 -2
- package/dist/tools/deploy-site-dir.js.map +1 -1
- package/dist/tools/deploy-site.js +2 -2
- package/dist/tools/deploy-site.js.map +1 -1
- package/dist/tools/deploy-verify-edge.js +2 -2
- package/dist/tools/deploy-verify-edge.js.map +1 -1
- package/dist/tools/deploy.js +3 -3
- package/dist/tools/deploy.js.map +1 -1
- package/dist/tools/fork-app.js +2 -2
- package/dist/tools/fork-app.js.map +1 -1
- package/dist/tools/generate-image.js +5 -5
- package/dist/tools/generate-image.js.map +1 -1
- package/dist/tools/get-agent-contact-status.js +2 -2
- package/dist/tools/get-agent-contact-status.js.map +1 -1
- package/dist/tools/get-notification-preferences.js +2 -2
- package/dist/tools/get-notification-preferences.js.map +1 -1
- package/dist/tools/get-quote.js +3 -3
- package/dist/tools/get-quote.js.map +1 -1
- package/dist/tools/get-room.d.ts +20 -0
- package/dist/tools/get-room.d.ts.map +1 -0
- package/dist/tools/get-room.js +25 -0
- package/dist/tools/get-room.js.map +1 -0
- package/dist/tools/get-usage.d.ts.map +1 -1
- package/dist/tools/get-usage.js +4 -3
- package/dist/tools/get-usage.js.map +1 -1
- package/dist/tools/init.js +36 -36
- package/dist/tools/init.js.map +1 -1
- package/dist/tools/leave-room.d.ts +22 -0
- package/dist/tools/leave-room.d.ts.map +1 -0
- package/dist/tools/leave-room.js +40 -0
- package/dist/tools/leave-room.js.map +1 -0
- package/dist/tools/lightning-topup.js +1 -1
- package/dist/tools/lightning-topup.js.map +1 -1
- package/dist/tools/lightning-wallet.d.ts +2 -2
- package/dist/tools/lightning-wallet.js +9 -9
- package/dist/tools/lightning-wallet.js.map +1 -1
- package/dist/tools/link-wallet-to-organization.d.ts.map +1 -1
- package/dist/tools/link-wallet-to-organization.js +4 -3
- package/dist/tools/link-wallet-to-organization.js.map +1 -1
- package/dist/tools/list-notification-channels.js +2 -2
- package/dist/tools/list-notification-channels.js.map +1 -1
- package/dist/tools/list-notification-rules.js +2 -2
- package/dist/tools/list-notification-rules.js.map +1 -1
- package/dist/tools/list-notifications.js +2 -2
- package/dist/tools/list-notifications.js.map +1 -1
- package/dist/tools/list-projects.js +1 -1
- package/dist/tools/list-projects.js.map +1 -1
- package/dist/tools/list-rooms.d.ts +18 -0
- package/dist/tools/list-rooms.d.ts.map +1 -0
- package/dist/tools/list-rooms.js +28 -0
- package/dist/tools/list-rooms.js.map +1 -0
- package/dist/tools/list-subdomains.js +1 -1
- package/dist/tools/list-subdomains.js.map +1 -1
- package/dist/tools/orgs.d.ts +4 -4
- package/dist/tools/orgs.d.ts.map +1 -1
- package/dist/tools/orgs.js +28 -7
- package/dist/tools/orgs.js.map +1 -1
- package/dist/tools/provision-signer.js +1 -1
- package/dist/tools/provision-signer.js.map +1 -1
- package/dist/tools/provision.js +3 -3
- package/dist/tools/provision.js.map +1 -1
- package/dist/tools/redeem-voucher.js +5 -5
- package/dist/tools/redeem-voucher.js.map +1 -1
- package/dist/tools/request-faucet.js +9 -9
- package/dist/tools/request-faucet.js.map +1 -1
- package/dist/tools/rotate-webhook-secret.js +2 -2
- package/dist/tools/rotate-webhook-secret.js.map +1 -1
- package/dist/tools/send-feedback.js +3 -3
- package/dist/tools/send-feedback.js.map +1 -1
- package/dist/tools/set-agent-contact.js +2 -2
- package/dist/tools/set-agent-contact.js.map +1 -1
- package/dist/tools/set-notification-preferences.js +3 -3
- package/dist/tools/set-notification-preferences.js.map +1 -1
- package/dist/tools/start-contact-passkey-enrollment.d.ts +9 -0
- package/dist/tools/start-contact-passkey-enrollment.d.ts.map +1 -0
- package/dist/tools/start-contact-passkey-enrollment.js +18 -0
- package/dist/tools/start-contact-passkey-enrollment.js.map +1 -0
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/status.js +17 -16
- package/dist/tools/status.js.map +1 -1
- package/dist/tools/subdomain.d.ts +2 -2
- package/dist/tools/subdomain.d.ts.map +1 -1
- package/dist/tools/subdomain.js +4 -4
- package/dist/tools/subdomain.js.map +1 -1
- package/dist/tools/test-notification.js +2 -2
- package/dist/tools/test-notification.js.map +1 -1
- package/dist/tools/{set-tier.d.ts → tier-set.d.ts} +3 -3
- package/dist/tools/{set-tier.d.ts.map → tier-set.d.ts.map} +1 -1
- package/dist/tools/{set-tier.js → tier-set.js} +14 -8
- package/dist/tools/tier-set.js.map +1 -0
- package/dist/tools/tier-status.d.ts.map +1 -1
- package/dist/tools/tier-status.js +6 -4
- package/dist/tools/tier-status.js.map +1 -1
- package/dist/tools/transfers.d.ts +9 -15
- package/dist/tools/transfers.d.ts.map +1 -1
- package/dist/tools/transfers.js +39 -53
- package/dist/tools/transfers.js.map +1 -1
- package/dist/tools/{app-up.d.ts → up.d.ts} +3 -3
- package/dist/tools/up.d.ts.map +1 -0
- package/dist/tools/{app-up.js → up.js} +6 -6
- package/dist/tools/up.js.map +1 -0
- package/dist/tools/verify-agent-contact-email.js +2 -2
- package/dist/tools/verify-agent-contact-email.js.map +1 -1
- package/dist/tools/wallet-create.d.ts +9 -0
- package/dist/tools/wallet-create.d.ts.map +1 -0
- package/dist/tools/{allowance-create.js → wallet-create.js} +8 -8
- package/dist/tools/wallet-create.js.map +1 -0
- package/dist/tools/wallet-export.d.ts +9 -0
- package/dist/tools/wallet-export.d.ts.map +1 -0
- package/dist/tools/{allowance-export.js → wallet-export.js} +6 -6
- package/dist/tools/wallet-export.js.map +1 -0
- package/dist/tools/wallet-status.d.ts +9 -0
- package/dist/tools/wallet-status.d.ts.map +1 -0
- package/dist/tools/wallet-status.js +33 -0
- package/dist/tools/wallet-status.js.map +1 -0
- package/dist/wallet-auth.d.ts +21 -0
- package/dist/wallet-auth.d.ts.map +1 -0
- package/dist/wallet-auth.js +32 -0
- package/dist/wallet-auth.js.map +1 -0
- package/dist/wallet.d.ts +3 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +2 -0
- package/dist/wallet.js.map +1 -0
- package/package.json +3 -3
- package/sdk/README.md +21 -19
- package/sdk/core-dist/config.d.ts +16 -2
- package/sdk/core-dist/config.js +52 -18
- package/sdk/core-dist/control-plane-session.d.ts +29 -14
- package/sdk/core-dist/control-plane-session.js +31 -6
- package/sdk/core-dist/keystore.js +7 -7
- package/sdk/core-dist/profiles.d.ts +3 -3
- package/sdk/core-dist/profiles.js +9 -7
- package/sdk/core-dist/{allowance-auth.d.ts → wallet-auth.d.ts} +6 -6
- package/{core/dist/allowance-auth.js → sdk/core-dist/wallet-auth.js} +15 -15
- package/sdk/core-dist/wallet.d.ts +22 -0
- package/sdk/core-dist/{allowance.js → wallet.js} +20 -20
- package/sdk/core-dist/{write-auth-session.d.ts → write-approvals.d.ts} +28 -26
- package/{core/dist/write-auth-session.js → sdk/core-dist/write-approvals.js} +19 -19
- package/sdk/dist/actions.d.ts +1 -1
- package/sdk/dist/actions.d.ts.map +1 -1
- package/sdk/dist/control-plane-credentials.d.ts +8 -8
- package/sdk/dist/control-plane-credentials.js +7 -7
- package/sdk/dist/credentials.d.ts +19 -19
- package/sdk/dist/credentials.d.ts.map +1 -1
- package/sdk/dist/credentials.js +1 -1
- package/sdk/dist/errors.d.ts +24 -26
- package/sdk/dist/errors.d.ts.map +1 -1
- package/sdk/dist/errors.js +34 -37
- package/sdk/dist/errors.js.map +1 -1
- package/sdk/dist/index.d.ts +29 -16
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +29 -16
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/kernel.d.ts +1 -1
- package/sdk/dist/kernel.d.ts.map +1 -1
- package/sdk/dist/kernel.js +10 -9
- package/sdk/dist/kernel.js.map +1 -1
- package/sdk/dist/namespaces/admin.d.ts +51 -120
- package/sdk/dist/namespaces/admin.d.ts.map +1 -1
- package/sdk/dist/namespaces/admin.js +41 -45
- package/sdk/dist/namespaces/admin.js.map +1 -1
- package/sdk/dist/namespaces/agent.d.ts +2 -2
- package/sdk/dist/namespaces/agent.d.ts.map +1 -1
- package/sdk/dist/namespaces/agent.js +2 -2
- package/sdk/dist/namespaces/agent.js.map +1 -1
- package/sdk/dist/namespaces/ai.d.ts +1 -1
- package/sdk/dist/namespaces/ai.js +1 -1
- package/sdk/dist/namespaces/billing.d.ts +6 -3
- package/sdk/dist/namespaces/billing.d.ts.map +1 -1
- package/sdk/dist/namespaces/billing.js.map +1 -1
- package/sdk/dist/namespaces/buzz-notifications.types.d.ts +1 -1
- package/sdk/dist/namespaces/buzz.d.ts +2 -2
- package/sdk/dist/namespaces/buzz.d.ts.map +1 -1
- package/sdk/dist/namespaces/buzz.js +2 -2
- package/sdk/dist/namespaces/buzz.js.map +1 -1
- package/sdk/dist/namespaces/buzz.types.d.ts +2 -2
- package/sdk/dist/namespaces/buzz.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/credentials.types.d.ts +1 -1
- package/sdk/dist/namespaces/deploy.d.ts +1 -1
- package/sdk/dist/namespaces/deploy.js +5 -5
- package/sdk/dist/namespaces/deploy.js.map +1 -1
- package/sdk/dist/namespaces/deploy.types.d.ts +4 -4
- package/sdk/dist/namespaces/escalations.d.ts +1 -1
- package/sdk/dist/namespaces/escalations.js +1 -1
- package/sdk/dist/namespaces/escalations.types.d.ts +2 -2
- package/sdk/dist/namespaces/escalations.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/events.types.d.ts +1 -1
- package/sdk/dist/namespaces/functions.d.ts +1 -1
- package/sdk/dist/namespaces/functions.js +1 -1
- package/sdk/dist/namespaces/gitvault.crypto.d.ts +1 -1
- package/sdk/dist/namespaces/gitvault.d.ts +24 -24
- package/sdk/dist/namespaces/gitvault.d.ts.map +1 -1
- package/sdk/dist/namespaces/gitvault.js +109 -109
- package/sdk/dist/namespaces/gitvault.js.map +1 -1
- package/sdk/dist/namespaces/me.d.ts +120 -0
- package/sdk/dist/namespaces/me.d.ts.map +1 -0
- package/sdk/dist/namespaces/me.js +34 -0
- package/sdk/dist/namespaces/me.js.map +1 -0
- package/sdk/dist/namespaces/org.d.ts +108 -6
- package/sdk/dist/namespaces/org.d.ts.map +1 -1
- package/sdk/dist/namespaces/org.js +63 -7
- package/sdk/dist/namespaces/org.js.map +1 -1
- package/sdk/dist/namespaces/org.types.d.ts +29 -9
- package/sdk/dist/namespaces/org.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/pay.js +3 -3
- package/sdk/dist/namespaces/pay.js.map +1 -1
- package/sdk/dist/namespaces/projects.d.ts +9 -9
- package/sdk/dist/namespaces/projects.js +15 -15
- package/sdk/dist/namespaces/projects.js.map +1 -1
- package/sdk/dist/namespaces/projects.types.d.ts +28 -12
- package/sdk/dist/namespaces/projects.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/rooms.d.ts +7 -7
- package/sdk/dist/namespaces/rooms.js +17 -17
- package/sdk/dist/namespaces/rooms.js.map +1 -1
- package/sdk/dist/namespaces/rooms.types.d.ts +9 -9
- package/sdk/dist/namespaces/rooms.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/service.d.ts +1 -1
- package/sdk/dist/namespaces/service.js +1 -1
- package/sdk/dist/namespaces/{operator-session.d.ts → session.d.ts} +135 -51
- package/sdk/dist/namespaces/session.d.ts.map +1 -0
- package/sdk/dist/namespaces/{operator-session.js → session.js} +118 -30
- package/sdk/dist/namespaces/session.js.map +1 -0
- package/sdk/dist/namespaces/subdomains.d.ts +5 -5
- package/sdk/dist/namespaces/subdomains.d.ts.map +1 -1
- package/sdk/dist/namespaces/subdomains.js +6 -6
- package/sdk/dist/namespaces/subdomains.js.map +1 -1
- package/sdk/dist/namespaces/tier.d.ts +43 -20
- package/sdk/dist/namespaces/tier.d.ts.map +1 -1
- package/sdk/dist/namespaces/tier.js +7 -7
- package/sdk/dist/namespaces/tier.js.map +1 -1
- package/sdk/dist/namespaces/transfers.d.ts +74 -71
- package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
- package/sdk/dist/namespaces/transfers.js +31 -38
- package/sdk/dist/namespaces/transfers.js.map +1 -1
- package/sdk/dist/namespaces/vouchers.d.ts +9 -10
- package/sdk/dist/namespaces/vouchers.d.ts.map +1 -1
- package/sdk/dist/namespaces/vouchers.js +4 -5
- package/sdk/dist/namespaces/vouchers.js.map +1 -1
- package/sdk/dist/namespaces/wallets.d.ts +72 -3
- package/sdk/dist/namespaces/wallets.d.ts.map +1 -1
- package/sdk/dist/namespaces/wallets.js +141 -3
- package/sdk/dist/namespaces/wallets.js.map +1 -1
- package/sdk/dist/namespaces/write-approval.d.ts +101 -0
- package/sdk/dist/namespaces/write-approval.d.ts.map +1 -0
- package/sdk/dist/namespaces/write-approval.js +62 -0
- package/sdk/dist/namespaces/write-approval.js.map +1 -0
- package/sdk/dist/node/actions-node.d.ts +3 -3
- package/sdk/dist/node/actions-node.d.ts.map +1 -1
- package/sdk/dist/node/actions-node.js +36 -36
- package/sdk/dist/node/actions-node.js.map +1 -1
- package/sdk/dist/node/{bearer-claim-key.d.ts → bearer-redeem-key.d.ts} +12 -12
- package/sdk/dist/node/bearer-redeem-key.d.ts.map +1 -0
- package/sdk/dist/node/{bearer-claim-key.js → bearer-redeem-key.js} +21 -21
- package/sdk/dist/node/bearer-redeem-key.js.map +1 -0
- package/sdk/dist/node/ci.d.ts +1 -1
- package/sdk/dist/node/ci.d.ts.map +1 -1
- package/sdk/dist/node/ci.js +6 -6
- package/sdk/dist/node/ci.js.map +1 -1
- package/sdk/dist/node/credentials.d.ts +17 -16
- package/sdk/dist/node/credentials.d.ts.map +1 -1
- package/sdk/dist/node/credentials.js +28 -27
- package/sdk/dist/node/credentials.js.map +1 -1
- package/sdk/dist/node/funding-recovery.d.ts +1 -1
- package/sdk/dist/node/funding-recovery.d.ts.map +1 -1
- package/sdk/dist/node/funding-recovery.js +1 -1
- package/sdk/dist/node/funding-recovery.js.map +1 -1
- package/sdk/dist/node/gitvault-apply.d.ts +1 -1
- package/sdk/dist/node/gitvault-apply.d.ts.map +1 -1
- package/sdk/dist/node/gitvault-handoff.d.ts +22 -22
- package/sdk/dist/node/gitvault-handoff.d.ts.map +1 -1
- package/sdk/dist/node/gitvault-handoff.js +45 -45
- package/sdk/dist/node/gitvault-handoff.js.map +1 -1
- package/sdk/dist/node/gitvault-prewarm.js +7 -7
- package/sdk/dist/node/gitvault-prewarm.js.map +1 -1
- package/sdk/dist/node/gitvault-restore.d.ts +1 -1
- package/sdk/dist/node/gitvault-restore.js +1 -1
- package/sdk/dist/node/index.d.ts +16 -16
- package/sdk/dist/node/index.d.ts.map +1 -1
- package/sdk/dist/node/index.js +15 -15
- package/sdk/dist/node/index.js.map +1 -1
- package/sdk/dist/node/org-adopt.d.ts +49 -0
- package/sdk/dist/node/org-adopt.d.ts.map +1 -0
- package/sdk/dist/node/org-adopt.js +77 -0
- package/sdk/dist/node/org-adopt.js.map +1 -0
- package/sdk/dist/node/paid-fetch.d.ts +7 -7
- package/sdk/dist/node/paid-fetch.d.ts.map +1 -1
- package/sdk/dist/node/paid-fetch.js +54 -54
- package/sdk/dist/node/paid-fetch.js.map +1 -1
- package/sdk/dist/node/preflight.d.ts +1 -1
- package/sdk/dist/node/preflight.d.ts.map +1 -1
- package/sdk/dist/node/preflight.js +1 -1
- package/sdk/dist/node/preflight.js.map +1 -1
- package/sdk/dist/node/source-scan.d.ts +1 -1
- package/sdk/dist/node/source-scan.js +2 -2
- package/sdk/dist/node/source-scan.js.map +1 -1
- package/sdk/dist/scoped.d.ts +3 -3
- package/sdk/dist/scoped.d.ts.map +1 -1
- package/sdk/dist/scoped.js +2 -2
- package/sdk/dist/scoped.js.map +1 -1
- package/core/dist/allowance-auth.d.ts.map +0 -1
- package/core/dist/allowance-auth.js.map +0 -1
- package/core/dist/allowance.d.ts +0 -22
- package/core/dist/allowance.d.ts.map +0 -1
- package/core/dist/allowance.js.map +0 -1
- package/core/dist/operator-session.d.ts +0 -80
- package/core/dist/operator-session.d.ts.map +0 -1
- package/core/dist/operator-session.js +0 -154
- package/core/dist/operator-session.js.map +0 -1
- package/core/dist/write-auth-session.d.ts.map +0 -1
- package/core/dist/write-auth-session.js.map +0 -1
- package/dist/allowance-auth.d.ts +0 -21
- package/dist/allowance-auth.d.ts.map +0 -1
- package/dist/allowance-auth.js +0 -32
- package/dist/allowance-auth.js.map +0 -1
- package/dist/allowance.d.ts +0 -3
- package/dist/allowance.d.ts.map +0 -1
- package/dist/allowance.js +0 -2
- package/dist/allowance.js.map +0 -1
- package/dist/tools/allowance-create.d.ts +0 -9
- package/dist/tools/allowance-create.d.ts.map +0 -1
- package/dist/tools/allowance-create.js.map +0 -1
- package/dist/tools/allowance-export.d.ts +0 -9
- package/dist/tools/allowance-export.d.ts.map +0 -1
- package/dist/tools/allowance-export.js.map +0 -1
- package/dist/tools/allowance-status.d.ts +0 -9
- package/dist/tools/allowance-status.d.ts.map +0 -1
- package/dist/tools/allowance-status.js +0 -33
- package/dist/tools/allowance-status.js.map +0 -1
- package/dist/tools/app-up.d.ts.map +0 -1
- package/dist/tools/app-up.js.map +0 -1
- package/dist/tools/deploy-diagnose-url.d.ts.map +0 -1
- package/dist/tools/deploy-diagnose-url.js.map +0 -1
- package/dist/tools/deploy-release.d.ts.map +0 -1
- package/dist/tools/deploy-release.js.map +0 -1
- package/dist/tools/get-operator-status.d.ts +0 -9
- package/dist/tools/get-operator-status.d.ts.map +0 -1
- package/dist/tools/get-operator-status.js +0 -17
- package/dist/tools/get-operator-status.js.map +0 -1
- package/dist/tools/set-tier.js.map +0 -1
- package/dist/tools/start-operator-passkey-enrollment.d.ts +0 -9
- package/dist/tools/start-operator-passkey-enrollment.d.ts.map +0 -1
- package/dist/tools/start-operator-passkey-enrollment.js +0 -18
- package/dist/tools/start-operator-passkey-enrollment.js.map +0 -1
- package/sdk/core-dist/allowance.d.ts +0 -22
- package/sdk/core-dist/operator-session.d.ts +0 -80
- package/sdk/core-dist/operator-session.js +0 -154
- package/sdk/dist/namespaces/allowance.d.ts +0 -79
- package/sdk/dist/namespaces/allowance.d.ts.map +0 -1
- package/sdk/dist/namespaces/allowance.js +0 -149
- package/sdk/dist/namespaces/allowance.js.map +0 -1
- package/sdk/dist/namespaces/operator-session.d.ts.map +0 -1
- package/sdk/dist/namespaces/operator-session.js.map +0 -1
- package/sdk/dist/namespaces/operator.d.ts +0 -359
- package/sdk/dist/namespaces/operator.d.ts.map +0 -1
- package/sdk/dist/namespaces/operator.js +0 -272
- package/sdk/dist/namespaces/operator.js.map +0 -1
- package/sdk/dist/node/bearer-claim-key.d.ts.map +0 -1
- package/sdk/dist/node/bearer-claim-key.js.map +0 -1
- package/sdk/dist/node/operator-claim.d.ts +0 -49
- package/sdk/dist/node/operator-claim.d.ts.map +0 -1
- package/sdk/dist/node/operator-claim.js +0 -77
- package/sdk/dist/node/operator-claim.js.map +0 -1
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ This monorepo ships these interfaces:
|
|
|
35
35
|
| Surface | Use when… |
|
|
36
36
|
|---------|-----------|
|
|
37
37
|
| [`run402` CLI](./cli/) | Terminal, scripts, CI, agent-controlled shells: JSON in, JSON out, exit code on failure |
|
|
38
|
-
| [`@run402/sdk`](./sdk/) | Calling run402 from TypeScript: typed kernel, isomorphic (Node 22 / Deno / Bun / V8 isolates) with a Node entry that auto-loads the local keystore +
|
|
38
|
+
| [`@run402/sdk`](./sdk/) | Calling run402 from TypeScript: typed kernel, isomorphic (Node 22 / Deno / Bun / V8 isolates) with a Node entry that auto-loads the local keystore + wallet + x402 / Lightning fetch |
|
|
39
39
|
| [`run402-mcp`](./src/) | Claude Desktop, Cursor, Cline, Claude Code: core run402 operations as MCP tools |
|
|
40
40
|
| [OpenClaw skill](./openclaw/) | OpenClaw agents (no MCP server required) |
|
|
41
41
|
| [Run402 for Buzz](./buzz/) | Buzz people and agents: install from run402.com, preflight/link one agent's dedicated identities, deploy a contextual demo, then offer human co-ownership through a normal HTTPS/passkey handoff; Buzz remains unchanged |
|
|
@@ -52,14 +52,14 @@ First create the complete `run402.json` and `index.html` from [Your first deploy
|
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
54
|
npm install -g run402@latest
|
|
55
|
-
run402 up --name my-app -y # bootstrap
|
|
55
|
+
run402 up --name my-app -y # bootstrap wallet/tier/project/link, then deploy manifest
|
|
56
56
|
run402 up verify # rerun app HTTP verification without deploying
|
|
57
57
|
run402 up --verify # deploy, then wait for gateway/edge coherence
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
That's a real Postgres database + a deployed static site, paid for autonomously with testnet USDC.
|
|
61
61
|
|
|
62
|
-
Buy from any x402 seller with the same
|
|
62
|
+
Buy from any x402 seller with the same wallet and a default $0.10 ceiling:
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
65
|
run402 pay https://seller.example/translate --method POST \
|
|
@@ -83,7 +83,7 @@ same payer and key. Never replace the key. The SDK and MCP can also re-present
|
|
|
83
83
|
an ambiguous proof while their process remains alive; custom/arbitrary sellers
|
|
84
84
|
remain ambiguous and require reconciliation.
|
|
85
85
|
|
|
86
|
-
Prefer `run402 up` when a repo has `run402.deploy.json` or `app.json`. The CLI stays a thin shim over the Node SDK action runner (`r.actions.run(...)` / `r.up(...)`): it validates the manifest first, then recursively performs only the missing prerequisites. Project resolution is `--project`, `.run402/project.json`, manifest `project_id`, approved creation from `--name`; global active state never selects a deploy target. `--name` is project creation/link metadata only; it is not part of the deploy manifest and never renames an existing project. Use `--check` for local validation and `--plan` for gateway-reviewed intent before applying. Local validation covers every file the manifest references (migration `sql_path`/`sql_file`, function sources and `files`, site paths and `dir()` targets, `assets.put` sources): a missing one fails with `MANIFEST_FILE_MISSING` (`details.missing[]` of `{ field_path, path, kind }`, one `create_file` next action per file) before any gateway call, in every mode and in `deploy
|
|
86
|
+
Prefer `run402 up` when a repo has `run402.deploy.json` or `app.json`. The CLI stays a thin shim over the Node SDK action runner (`r.actions.run(...)` / `r.up(...)`): it validates the manifest first, then recursively performs only the missing prerequisites. Project resolution is `--project`, `.run402/project.json`, manifest `project_id`, approved creation from `--name`; global active state never selects a deploy target. `--name` is project creation/link metadata only; it is not part of the deploy manifest and never renames an existing project. Use `--check` for local validation and `--plan` for gateway-reviewed intent before applying. Local validation covers every file the manifest references (migration `sql_path`/`sql_file`, function sources and `files`, site paths and `dir()` targets, `assets.put` sources): a missing one fails with `MANIFEST_FILE_MISSING` (`details.missing[]` of `{ field_path, path, kind }`, one `create_file` next action per file) before any gateway call, in every mode and in `run402 deploy`. With no manifest in the working directory, `UP_MANIFEST_REQUIRED` looks one directory down and names what it found (`details.nearby_manifests[]`, a read-only `run_in_directory` action for a single candidate, or one unranked `select_application` action for multiple apps); `--manifest <path>` to a missing file is a typed `MANIFEST_NOT_FOUND`.
|
|
87
87
|
|
|
88
88
|
If an app manifest defines `verify.http[]`, `run402 up` verifies those URLs after deploy. Fresh run402 edge sentinel misses are reported as `propagation_pending` rather than permanent failures while the binding is still converging; tune that wait with `--propagation-budget-s` (default 120) or return immediately with `--no-propagation-wait`. `run402 up verify` reruns the same HTTP checks without uploading, deploying, creating projects, or mutating resources.
|
|
89
89
|
|
|
@@ -171,7 +171,7 @@ Use `run402 up` for a complete application with a deploy manifest. The SDK owns
|
|
|
171
171
|
|
|
172
172
|
### Same-origin web routes: static site + function ingress
|
|
173
173
|
|
|
174
|
-
Apply-v1 routes and static public paths are release resources: the release pointer activates after the required deploy stages in `deploy
|
|
174
|
+
Apply-v1 routes and static public paths are release resources: the release pointer activates after the required deploy stages in `run402 deploy`. Applied migrations and external side effects are not rolled back by changing that pointer. Release static asset paths such as `events.html` are distinct from browser-visible public static paths such as `/events`. Use `site.public_paths` for ordinary clean static URLs; keep routes for function ingress and exact, method-aware static aliases.
|
|
175
175
|
|
|
176
176
|
```json
|
|
177
177
|
{
|
|
@@ -221,19 +221,19 @@ Matching is exact or final-prefix-wildcard only. `/admin` and `/admin/` are exac
|
|
|
221
221
|
|
|
222
222
|
Routed functions use the Node 22 Fetch Request -> Response contract: `export default async function handler(req) { ... }`. `req.method` is the browser method, and `req.url` is the full public URL on managed subdomains, hosts, and verified custom domains. Derive OAuth callbacks from it, for example `new URL("/admin/oauth/google/callback", new URL(req.url).origin)`. Append multiple cookies with `headers.append("Set-Cookie", value)`; redirects, cookies, and query strings are preserved. On priced routes, import `getRoutedPaymentContext` from `@run402/functions`, read `const paymentContext = getRoutedPaymentContext(req)`, and key app-side idempotency by `paymentContext.paymentId`. For a receipt-enabled route, return `payment.fulfilled(response)` only after the response represents completed delivery; the helper fails closed outside a settled, current, receipt-enabled routed invocation. The context helper reads gateway-confirmed `x-run402-payment-*` headers and returns `null` for unpriced or direct calls. The raw `run402.routed_http.v1` envelope is internal; do not write route handlers against it.
|
|
223
223
|
|
|
224
|
-
**Recipe: static home page + SPA shell.** A SPA site ships `index.html` as the shell serving every unmatched route (match `spa_fallback`), so by default `GET /` serves the shell too. To serve a real static home page at `/` while keeping the shell for app routes, ship `home.html` at the site root alongside `index.html` and add an exact root static route alias: `"routes": { "replace": [ { "pattern": "/", "target": { "type": "static", "file": "home.html" } } ] }`. Route matching runs before all static resolution (including the implicit `/` -> `index.html` root mapping), and SPA-fallback derivation is independent of the route table, so `GET /` serves `home.html` (`route_static_alias`), unmatched app routes such as `/dashboard` still serve the shell (`spa_fallback`), and named static pages keep serving unchanged (`static_exact`). Expect two non-blocking plan lints: `STATIC_ALIAS_SHADOWS_STATIC_PATH` (warn: the alias overrides what `/` would otherwise serve; accurate and expected here) and `STATIC_ALIAS_DUPLICATE_CANONICAL_URL` (info: `/home.html` stays directly reachable in implicit public-path mode; add `<link rel="canonical">` to `home.html` if duplicate-content SEO matters). Omitting `routes` on later deploys carries the alias forward; `routes.replace` is total, so a pipeline that sends it must include the alias every time. Verify with `run402 deploy resolve --url https://<your-site>/ --method GET` or `
|
|
224
|
+
**Recipe: static home page + SPA shell.** A SPA site ships `index.html` as the shell serving every unmatched route (match `spa_fallback`), so by default `GET /` serves the shell too. To serve a real static home page at `/` while keeping the shell for app routes, ship `home.html` at the site root alongside `index.html` and add an exact root static route alias: `"routes": { "replace": [ { "pattern": "/", "target": { "type": "static", "file": "home.html" } } ] }`. Route matching runs before all static resolution (including the implicit `/` -> `index.html` root mapping), and SPA-fallback derivation is independent of the route table, so `GET /` serves `home.html` (`route_static_alias`), unmatched app routes such as `/dashboard` still serve the shell (`spa_fallback`), and named static pages keep serving unchanged (`static_exact`). Expect two non-blocking plan lints: `STATIC_ALIAS_SHADOWS_STATIC_PATH` (warn: the alias overrides what `/` would otherwise serve; accurate and expected here) and `STATIC_ALIAS_DUPLICATE_CANONICAL_URL` (info: `/home.html` stays directly reachable in implicit public-path mode; add `<link rel="canonical">` to `home.html` if duplicate-content SEO matters). Omitting `routes` on later deploys carries the alias forward; `routes.replace` is total, so a pipeline that sends it must include the alias every time. Verify with `run402 deploy resolve --url https://<your-site>/ --method GET` or `deploy_resolve` and confirm `match: "route_static_alias"` with `target_file: "home.html"`.
|
|
225
225
|
|
|
226
226
|
Avoid routing every static file, broad method lists by default, wildcard static route targets, leading-slash static files, directory shorthand, and one-static-route-target-per-page tables that exhaust route limits. Also watch wildcard function routes that shadow direct public static paths. Warning codes to handle include `STATIC_ALIAS_SHADOWS_STATIC_PATH`, `STATIC_ALIAS_RELATIVE_ASSET_RISK`, `STATIC_ALIAS_DUPLICATE_CANONICAL_URL`, `STATIC_ALIAS_EXTENSIONLESS_NON_HTML`, and `STATIC_ALIAS_TABLE_NEAR_LIMIT`; inspect active routes, `static_public_paths`, and resolve diagnostics to distinguish the route pattern from the backing `asset_path`.
|
|
227
227
|
|
|
228
|
-
|
|
228
|
+
Resolve public URLs with the CLI or its MCP/SDK equivalents:
|
|
229
229
|
|
|
230
230
|
```bash
|
|
231
|
-
run402 deploy
|
|
232
|
-
run402 deploy resolve --
|
|
233
|
-
run402 deploy resolve --
|
|
231
|
+
run402 deploy resolve https://example.com/events --project prj_123 --method GET
|
|
232
|
+
run402 deploy resolve --url https://example.com/events?utm=x#hero --project prj_123 --method GET
|
|
233
|
+
run402 deploy resolve --host example.com --path /events --project prj_123 --method GET
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
-
`
|
|
236
|
+
`deploy_resolve` and `r.project(id).apply.resolve({ url, method: "GET" })` return `would_serve`, `diagnostic_status`, `match`, normalized request data, warnings, full resolution JSON, `edge_propagation`, and next steps. When returned, `asset_path`, `reachability_authority`, and `direct` explain which release asset backs the public URL and whether reachability came from implicit file-path mode, explicit `site.public_paths`, or a route-only static alias. Stable-host diagnostics may also include `authorization_result`, `cas_object` (`sha256`, `exists`, `expected_size`, `actual_size`), hostname-specific `response_variant`, route/static fields such as `allow`, `route_pattern`, `target_type`, `target_name`, and `target_file`, and `edge_propagation` (`settled`, `propagating`, or `sync_pending`). Known `match` literals are `host_missing`, `manifest_missing`, `active_release_missing`, `unsupported_manifest_version`, `path_error`, `none`, `static_exact`, `static_index`, `spa_fallback`, `spa_fallback_missing`, `route_function`, `route_static_alias`, and `route_method_miss`; preserve unknown future strings. Known `authorization_result` values include `authorized`, `not_public`, `not_applicable`, `manifest_missing`, `target_missing`, `active_release_missing`, `unsupported_manifest_version`, `path_error`, `missing_cas_object`, `unfinalized_or_deleting_cas_object`, `size_mismatch`, and `unauthorized_cas_object`. Known `fallback_state` values include `active_release_missing`, `unsupported_manifest_version`, and `negative_cache_hit`; preserve unknown future strings. `result` is the diagnostic body status, not the HTTP status of the SDK call, so host misses can still be successful CLI/MCP/SDK calls with `would_serve: false`. Do not treat resolve/diagnose as a fetch, cache purge, or cache-policy oracle; route method misses should inspect `allow`, CAS authorization/health failures should inspect or redeploy the affected static asset, and fresh host misses should inspect `edge_propagation` or rerun `run402 up verify`. Branch on structured JSON fields such as `cache_class` and preserve unknown cache classes.
|
|
237
237
|
|
|
238
238
|
Release observability exposes stable asset identity and public reachability. Inventories include `release_generation`, `static_manifest_sha256`, nullable `static_manifest_metadata` (`file_count`, `total_bytes`, `cache_classes`, `cache_class_sources`, `spa_fallback`), and `static_public_paths[]` when returned. `site.paths` lists release static assets; `static_public_paths[]` lists browser-visible public paths with `public_path`, `asset_path`, `reachability_authority`, `direct`, cache class, and content type. Plan and release diffs expose `static_assets` counters: unchanged/changed/added/removed, `newly_uploaded_cas_bytes`, `reused_cas_bytes`, `deployment_copy_bytes_eliminated`, `legacy_immutable_warnings`, `previous_immutable_failures`, and `cas_authorization_failures`.
|
|
239
239
|
|
|
@@ -241,7 +241,7 @@ Runtime route failure codes to branch on: `ROUTE_MANIFEST_LOAD_FAILED` (manifest
|
|
|
241
241
|
|
|
242
242
|
### GitHub Actions OIDC deploys: link once, deploy with the same CLI
|
|
243
243
|
|
|
244
|
-
For repo-driven deploys, run402 does not need service keys or
|
|
244
|
+
For repo-driven deploys, run402 does not need service keys or wallet files in GitHub secrets. Run a local link command once:
|
|
245
245
|
|
|
246
246
|
```bash
|
|
247
247
|
run402 ci link github --project prj_... --manifest run402.deploy.json
|
|
@@ -262,10 +262,10 @@ jobs:
|
|
|
262
262
|
steps:
|
|
263
263
|
- uses: actions/checkout@v4
|
|
264
264
|
- name: Deploy to run402
|
|
265
|
-
run: npx --yes run402@3.7.5 deploy
|
|
265
|
+
run: npx --yes run402@3.7.5 deploy --manifest 'run402.deploy.json' --project 'prj_...'
|
|
266
266
|
```
|
|
267
267
|
|
|
268
|
-
CI deploys are intentionally narrow: `site`, `functions`, `database`, absent/current `base`, and route declarations only when the binding has covering `--route-scope` patterns. Without route scopes, CI cannot ship `routes`. Keep secrets, domains, subdomains, checks, non-current base, and broader trust changes in a local
|
|
268
|
+
CI deploys are intentionally narrow: `site`, `functions`, `database`, absent/current `base`, and route declarations only when the binding has covering `--route-scope` patterns. Without route scopes, CI cannot ship `routes`. Keep secrets, domains, subdomains, checks, non-current base, and broader trust changes in a local wallet-backed deploy. If the gateway returns `CI_ROUTE_SCOPE_DENIED`, re-link with exact scopes like `/admin` or final-wildcard scopes like `/api/*`, or deploy locally. Manage bindings with `run402 ci list` and `run402 ci revoke`.
|
|
269
269
|
|
|
270
270
|
### In-function helpers: caller-context vs BYPASSRLS
|
|
271
271
|
|
|
@@ -298,7 +298,7 @@ export default async (req: Request) => {
|
|
|
298
298
|
|
|
299
299
|
`@run402/functions` is auto-bundled into deployed code; install it in your editor for full TypeScript autocomplete (also works at build time for static-site generation with `RUN402_SERVICE_KEY` + `RUN402_PROJECT_ID` set).
|
|
300
300
|
|
|
301
|
-
`ai.generateImage({ prompt, aspect? })` is available inside deployed functions for live app flows such as generated avatars or OG images. It calls the project runtime image endpoint with `RUN402_SERVICE_KEY`, so deployed functions do not need
|
|
301
|
+
`ai.generateImage({ prompt, aspect? })` is available inside deployed functions for live app flows such as generated avatars or OG images. It calls the project runtime image endpoint with `RUN402_SERVICE_KEY`, so deployed functions do not need wallets or x402 signing code. Aspects are `square`, `landscape`, and `portrait`; the result is `{ image, content_type, aspect }` with base64 image bytes. Runtime image generation is billed, rate-limited, and spend-capped against the project organization; public routed functions should authenticate/rate-limit their users before calling it.
|
|
302
302
|
|
|
303
303
|
`assets.put(key, source, opts?)` uploads bytes from inside a deployed function through the same CAS-backed apply substrate as deploy-time assets. It uses `RUN402_SERVICE_KEY`, accepts a string, `Uint8Array`, or `{ content | bytes }`, and returns an SDK-compatible `AssetRef` with mutable and immutable URLs.
|
|
304
304
|
|
|
@@ -328,7 +328,7 @@ git push -u origin main # publishes, encrypted before it l
|
|
|
328
328
|
|
|
329
329
|
`origin` is claimed additively: when the directory has no `origin` yet, the scaffold names ours `origin` — `git push origin main` just works, no side-remote name to remember. An existing `origin` is never touched; the fallback is `run402` instead, and the response says which happened and why. An app that lives inside another repository (a monorepo workspace) is never scaffolded into that repository: the skip carries a `create_nested_repo` next action, and `run402 repos create --nested --project <id>` (or `run402 up --nested`) gives the app root its own nested repository and `run402` remote, appending exactly one line to the enclosing repository's local `.git/info/exclude` and touching nothing else there; `repos create` prints a `git push` next action only for a remote it actually added. The free path is the whole path — no slug, no fee, no ceremony. When you want pretty `run402::<org-slug>/<name>` addresses (clone-by-name, push-to-create), claim an org slug once — the optional named-address upgrade described below.
|
|
330
330
|
|
|
331
|
-
**Named addressing.** `run402::<org-slug>/<name>` works alongside the id-form `run402::<org_id>/<project_id>` in the same slot — pick an org slug once (`run402 org slug <slug>`, owner-only, a small one-time
|
|
331
|
+
**Named addressing.** `run402::<org-slug>/<name>` works alongside the id-form `run402::<org_id>/<project_id>` in the same slot — pick an org slug once (`run402 org slug <slug>`, owner-only, a small one-time fee), and every repo under it is `run402::<slug>/<name>`. Pushing a name that doesn't exist yet **push-to-creates** it: the project and vault are allocated atomically, and a losing concurrent pusher resolves cleanly to the winner's repo instead of erroring — its work is not lost, it just wasn't the creator. The first time a named remote resolves on a checkout, the resolved id is **pinned** into that checkout's local git config — every later push/fetch follows the pin directly, so a later rename of the org slug or repo name never breaks an existing clone. The id-form address needs no pin (a project id never changes) and stays the cold-restart path: an agent that lost its local state but still holds authority on the project can always fall back to `run402::<org_id>/<project_id>`.
|
|
332
332
|
|
|
333
333
|
**One thing to know up front: a vault has a writer set, not a single key.** Every admitted member or handoff recipient opens the vault and pushes under its OWN keystore key (`run402 repos access` lists them). A vault whose only admitted principal is this keystore is exactly as safe as this keystore — see "If you lose the keystore" below, or admit a second principal.
|
|
334
334
|
|
|
@@ -362,13 +362,13 @@ run402 repos fsck --budget 500
|
|
|
362
362
|
git clone run402::<org_id>/<project_id> restored
|
|
363
363
|
```
|
|
364
364
|
|
|
365
|
-
Cloning needs a Run402 principal on this machine — a wallet
|
|
365
|
+
Cloning needs a Run402 principal on this machine — a wallet and a keystore holding an envelope for this vault — this is encrypted git, not a shareable link.
|
|
366
366
|
|
|
367
367
|
A fresh clone installs local `refs/r402/retain/<oid>` refs for every retained deploy-capture tip no branch reaches, so a plain `git fsck` is silent — `git for-each-ref refs/r402/` lists what is retained. Clones made by a client older than this one (or a checkout whose ref write degraded) may still show dangling commits under `git fsck`; harmless, not corruption — one `run402 repos fsck` run installs the missing refs. A retained ref locally pins that history against `git gc` until the vault prunes the capture, at which point the next fetch retracts it.
|
|
368
368
|
|
|
369
369
|
`repos snapshot` is the CAPTURE lane — the protocol deploy ref plus the HEAD target — because a dirty tree captures as a synthetic commit that sits on no branch. Your own branches and tags reach the vault through `git push origin <branch>`.
|
|
370
370
|
|
|
371
|
-
**Allocating a vault does NOT gate the project's deploys.** `gitvault_policy` stays unset until you set it — a vault created by a first `git push` or `repos create` never silently changes how you deploy. A deploy against a vaulted, ungated project proceeds ungated and its result carries a typed `next_actions` entry offering `run402 repos policy required`; every later ungated deploy carries a `warnings[]` entry naming the drift, until the policy is set either way — never a block, never an interactive prompt. Once `gitvault_policy` is `required`, a deploy must present a vaulted capture at commit — `run402 deploy
|
|
371
|
+
**Allocating a vault does NOT gate the project's deploys.** `gitvault_policy` stays unset until you set it — a vault created by a first `git push` or `repos create` never silently changes how you deploy. A deploy against a vaulted, ungated project proceeds ungated and its result carries a typed `next_actions` entry offering `run402 repos policy required`; every later ungated deploy carries a `warnings[]` entry naming the drift, until the policy is set either way — never a block, never an interactive prompt. Once `gitvault_policy` is `required`, a deploy must present a vaulted capture at commit — `run402 deploy` produces one automatically on any machine holding the keystore; un-gate with `run402 repos policy grandfathered --reason "<why>"` (owner + step-up, audited, reversible with `run402 repos policy required`). Vaulting your source is never gated on a deploy, either way. `run402 doctor` reports the policy, whether this machine can satisfy it, and where the keystore lives.
|
|
372
372
|
|
|
373
373
|
Before `snapshot` reports that anything landed, the client compares every finalization receipt against its local expected manifest and reads the admitted head back from storage — a 200 alone is never enough. Maintenance is one verb, `run402 repos gc` — `git gc`'s own two halves (checkpoint publication + prune planning), never described as "exactly `git gc`" since the deletion ceremony is stricter: it plans locally, and submits only when handed both verifier receipts — one from this CLI, one from the independent `r402s-verify` — with `--submit --intent-core <path> --verifier-receipt <path>`; only the control-plane-signed completion says what was deleted.
|
|
374
374
|
|
|
@@ -394,22 +394,22 @@ run402 repos recovery-bundle --out ./bundle.json # the member's no-keystore
|
|
|
394
394
|
run402 repos recover ./mirror-copy --out ./restored --receipt ./recovery-receipt.json --bundle ./bundle.json
|
|
395
395
|
```
|
|
396
396
|
|
|
397
|
-
**Handoff / resume — pass a working tree to another agent, dirty state and all.** `run402 repos handoff` captures the actual working tree — staged, unstaged, and untracked changes, exactly as `git stash push -u` would — and mints a single-use bearer key, `kgh1_…`, printed to stdout exactly once (`--json` still keeps it off stderr; there is no second place to find it if you lose it). Hand that key to another agent — another machine, another session, no shared keystore, no shared
|
|
397
|
+
**Handoff / resume — pass a working tree to another agent, dirty state and all.** `run402 repos handoff` captures the actual working tree — staged, unstaged, and untracked changes, exactly as `git stash push -u` would — and mints a single-use bearer key, `kgh1_…`, printed to stdout exactly once (`--json` still keeps it off stderr; there is no second place to find it if you lose it). Hand that key to another agent — another machine, another session, no shared keystore, no shared wallet — and `run402 repos resume kgh1_…` claims it, clones a fresh checkout, and reapplies the exact dirty state with `git stash apply --index`. The resuming agent also becomes a run402 wallet of its own on the way in: with no active tier, `resume` folds the same cold-start chain `create` does (wallet → faucet → one x402 prototype payment) before the claim; `--no-init` opts out, and the claim never waits on it. A Handoff Note rides alongside (a short JSON summary: what's done, what's in progress, what's failing, next steps) and renders as Markdown by default on `resume`. The key confers real authority — by default the sender's own org role — until it is claimed or its TTL (default 1h, `--ttl <seconds>`) expires; the mint response says so, and the CLI echoes the warning before printing the key. Sensitive untracked files (`.env`, `*.pem`, `*.key`, SSH/AWS/GPG directories, and 18 more patterns) are excluded from capture by default; opt one back in with `--include-sensitive <glob>`.
|
|
398
398
|
|
|
399
399
|
```bash
|
|
400
400
|
run402 repos handoff --note-file handoff.json # captures the working tree, mints the key, prints it ALONE to stdout
|
|
401
|
-
run402 repos resume kgh1_… # on the other machine:
|
|
401
|
+
run402 repos resume kgh1_… # on the other machine: redeem it, clone, restore, print the note
|
|
402
402
|
```
|
|
403
403
|
|
|
404
404
|
Neither verb has an MCP tool — `handoff` mints a bearer secret and `resume` mutates org membership, the same "mutating verbs are CLI-only" reasoning as `create`/`delete` above.
|
|
405
405
|
|
|
406
406
|
**Writers, plural.** A vault admits heads from a SET of writer keys, each a member's own keystore identity (protocol rev 47). `resume` makes the recipient a writer before it returns — `git push` works at once, under the recipient's own key, and the sender's environment can be deleted afterwards. Any member added with `run402 org member add` (developer or above) becomes a writer the same way: the adder's client admits the new key inline when it can, and REFUSES the add (`GITVAULT_WRITER_NOT_ADMITTED`, `request_writer_sync`) when it cannot, so no member is ever left able to read but not push. `run402 repos view` lists `writers[]` and `pending_writers[]`; `run402 repos access sync` admits pending keys on demand; removing a member rides the next epoch rotation and that key can never be re-added. Nobody's seed is ever copied: a writer is admitted by a live writer's signature or by a sender-signed handoff grant the recipient completes with its own key.
|
|
407
407
|
|
|
408
|
-
**Invite / join — bring a second agent into the exact work, dirty tree included, and talk in a shared room.** A Handoff passes the work on; an Invite grows the team. `run402 repos invite` captures the working tree exactly like `handoff` does — the inviter's own worktree, index, branch, refs, and access are all untouched, and it keeps pushing throughout — registers the inviter's own presence in a coordination room (the project's default room, or `--room <key>` for a named org room), mints a single-use bearer key, `kgi1_…`, printed to stdout exactly once, and posts ONE room message naming the checkpoint and the invite id (never the key). Minting requires an ACTIVE writer key, the same as `handoff` (`INVITE_MINT_REQUIRES_WRITER` names `run402 repos access sync` as the fix). Hand that key to another agent and `run402 repos join kgi1_…` pays its own way in — the joining agent folds the SAME cold-start chain `resume` does (
|
|
408
|
+
**Invite / join — bring a second agent into the exact work, dirty tree included, and talk in a shared room.** A Handoff passes the work on; an Invite grows the team. `run402 repos invite` captures the working tree exactly like `handoff` does — the inviter's own worktree, index, branch, refs, and access are all untouched, and it keeps pushing throughout — registers the inviter's own presence in a coordination room (the project's default room, or `--room <key>` for a named org room), mints a single-use bearer key, `kgi1_…`, printed to stdout exactly once, and posts ONE room message naming the checkpoint and the invite id (never the key). Minting requires an ACTIVE writer key, the same as `handoff` (`INVITE_MINT_REQUIRES_WRITER` names `run402 repos access sync` as the fix). Hand that key to another agent and `run402 repos join kgi1_…` pays its own way in — the joining agent folds the SAME cold-start chain `resume` does (wallet → faucet → one x402 prototype payment) before the redemption, so it arrives as a paid-up run402 wallet of its own — clones a fresh checkout, **becomes a writer of the vault under its OWN key before the command returns** (nothing is copied from the inviter), restores the exact dirty state, pins the invite's room locally, registers its own presence, posts ONE arrival message, and reports who invited it (name, labels, whether they're still live), who else is in the room, and the last few messages. Both agents push, interleaved, each signing under its own key. From there `run402 messages wait` is the agent's ear: it blocks until the other side speaks (or a bounded timeout elapses) using the gateway's held read, never errors on silence, and reports who is still live either way. The minted role defaults to `developer` and never exceeds the inviter's own; the Invite Note (same shape as the Handoff Note) rides alongside and renders as Markdown by default on `join`. Taking access back is `run402 org member rm`, which rotates the vault's epoch so the removed key can no longer push while every remaining agent keeps working.
|
|
409
409
|
|
|
410
410
|
```bash
|
|
411
411
|
run402 repos invite --note-file invite.json # captures the working tree, mints the key, prints it ALONE to stdout
|
|
412
|
-
run402 repos join kgi1_… # on the other machine: pay in,
|
|
412
|
+
run402 repos join kgi1_… # on the other machine: pay in, redeem, become a writer, clone, restore
|
|
413
413
|
run402 messages wait # then: block until the other agent speaks (or the timeout elapses)
|
|
414
414
|
```
|
|
415
415
|
|
|
@@ -428,7 +428,7 @@ npm install @run402/sdk
|
|
|
428
428
|
Two entry points:
|
|
429
429
|
|
|
430
430
|
- **`@run402/sdk`**: isomorphic. Bring your own `CredentialsProvider` (a session-token shim, a remote vault, anything that resolves project keys + auth headers). Works in Node 22, Deno, Bun, V8 isolates.
|
|
431
|
-
- **`@run402/sdk/node`**: Node-only convenience. Reads local profile state plus the project-key credential cache (`credentials/project-keys.v1.json`) and signs x402 payments from one deterministic source: an explicit opaque `paymentSigner`, explicit `
|
|
431
|
+
- **`@run402/sdk/node`**: Node-only convenience. Reads local profile state plus the project-key credential cache (`credentials/project-keys.v1.json`) and signs x402 payments from one deterministic source: an explicit opaque `paymentSigner`, explicit `walletPath`, the supplied provider's `readWallet()`, or the default active-profile wallet. Auth and payer may intentionally differ; a selected payment source never falls back to an ambient wallet. `r.paymentPayer()` reports only safe public payer/source provenance. Also exposes `sites.deployDir(...)`, `fileSetFromDir(...)`, typed deploy-manifest helpers (`loadDeployManifest`, `normalizeDeployManifest`), and `resolveRun402TargetProfile()` for app build scripts that need the same Core/Cloud target the CLI uses.
|
|
432
432
|
|
|
433
433
|
```ts
|
|
434
434
|
import { run402 } from "@run402/sdk/node";
|
|
@@ -439,7 +439,7 @@ const result = await r.up({ name: "my-app", manifest: "run402.json" }, { approva
|
|
|
439
439
|
console.log(result);
|
|
440
440
|
```
|
|
441
441
|
|
|
442
|
-
The SDK is organised into focused namespaces: `actions` (Node recursive action runner), `pay` (bounded arbitrary-URL x402 buyer), `projects`, `snapshots`, `branches`, `archives`, `assets`, `cache`, `ci`, `sites`, `functions`, `jobs`, `secrets`, `subdomains`, `domains`, `email` (+ `webhooks`), `auth`, `apps`, `tier`, `billing`, `contracts`, `ai`, `
|
|
442
|
+
The SDK is organised into focused namespaces: `actions` (Node recursive action runner), `pay` (bounded arbitrary-URL x402 buyer), `projects`, `snapshots`, `branches`, `archives`, `assets`, `cache`, `ci`, `sites`, `functions`, `jobs`, `secrets`, `subdomains`, `domains`, `email` (+ `webhooks`), `auth`, `apps`, `tier`, `billing`, `contracts`, `ai`, `wallets` (the local wallet: `status`, `create`, `export`, `faucet`; plus the server label), `service`, `admin`, `session` (a person's sign-in session: `run402 login` loopback and `--device` seams plus the browser surface), `writeApproval` (the passkey write approval behind `run402 approve`), `me` (account overview and status), `wallets` (signed server-side wallet label), `orgs` (org-owned control plane + `r.org(id)` sub-client), `grants` (per-project capability grants), and `identityLinks` (public, protocol-discriminated human/agent Nostr attribution), plus `const project = await r.project(id); await project.apply(spec)` for staged multi-resource writes (release slices + assets slice via `/apply/v1/*`). Every operation throws a typed `Run402Error` subclass on failure: `PaymentRequired`, `PaymentBuyerError`, `ProjectNotFound`, `Unauthorized`, `ApiError`, `NetworkError`, `LocalError`, `Run402DeployError`. `apply()` automatically re-plans safe current-base `BASE_RELEASE_CONFLICT` races and emits `apply.retry` progress events. See [`sdk/README.md`](./sdk/README.md).
|
|
443
443
|
|
|
444
444
|
## Buzz/Nostr identity links
|
|
445
445
|
|
|
@@ -498,7 +498,7 @@ run402 up verify # rerun app HTTP verification without
|
|
|
498
498
|
run402 up --nested -y # app root inside another repo: its own nested repo + encrypted remote
|
|
499
499
|
run402 doctor # { ok, blocking[], warnings[], checks[] }: ok means this agent can ship
|
|
500
500
|
run402 logs --request-id req_abc123 # every function in the project; app output only (--all for the raw stream)
|
|
501
|
-
run402 init # one-shot
|
|
501
|
+
run402 init # one-shot wallet + faucet + tier check
|
|
502
502
|
run402 pay https://seller.example/resource --max-usd 0.05 --require-receipt
|
|
503
503
|
run402 status # organization snapshot (wallet, rail, balances, tier, projects)
|
|
504
504
|
run402 projects provision --name my-app
|
|
@@ -507,9 +507,9 @@ run402 projects validate-expose <id> --file manifest.json
|
|
|
507
507
|
run402 projects apply-expose <id> --file manifest.json
|
|
508
508
|
run402 sites deploy-dir ./dist
|
|
509
509
|
run402 deploy verify op_... --project <id> --wait # confirm gateway/edge release coherence
|
|
510
|
-
run402 deploy
|
|
511
|
-
run402 deploy
|
|
512
|
-
run402
|
|
510
|
+
run402 deploy releases active --project <id> # inspect current-live release inventory
|
|
511
|
+
run402 deploy resolve https://example.com/events --project <id> --method GET
|
|
512
|
+
run402 deploy --manifest app.json --json # deploy only; rehearses automatically when a live release has migrations to protect
|
|
513
513
|
run402 snapshots list prj_...
|
|
514
514
|
run402 branches create prj_... --ttl-days 7 --json
|
|
515
515
|
run402 functions deploy <id> <name> --file fn.ts
|
|
@@ -520,9 +520,9 @@ run402 assets diagnose <url> # inspect live CDN state for a public U
|
|
|
520
520
|
run402 cdn wait-fresh <url> --sha <hex> # poll until a mutable URL serves the new SHA
|
|
521
521
|
```
|
|
522
522
|
|
|
523
|
-
`up` is the only compound CLI command: it calls the SDK action runner, emits `steps[]`, and writes `.run402/project.json` when it needs to remember the workspace project. Against run402 Core it skips Cloud
|
|
523
|
+
`up` is the only compound CLI command: it calls the SDK action runner, emits `steps[]`, and writes `.run402/project.json` when it needs to remember the workspace project. Against run402 Core it skips Cloud wallet/tier prerequisites and fails closed if no Core project is selected.
|
|
524
524
|
|
|
525
|
-
Rehearsal is automatic: a migration-bearing `run402 up` / `run402
|
|
525
|
+
Rehearsal is automatic: a migration-bearing `run402 up` / `run402 deploy` against a project with a live release is rehearsed on a contained branch and committed only on a passing report (`result.deploy.rehearsal`); a first deploy has nothing to protect and commits directly (`reason: "no_live_release"`), and a redeploy whose migrations are all already applied with identical checksums is skipped as `migrations_unchanged`, so a page-only redeploy that still carries its migrations ships in seconds. `--no-rehearse` skips it. ADVANCED: `run402 deploy rehearse [<plan_id>] [--manifest <path>]` rehearses without committing — from a persisted plan, or from the manifest in the current directory (plan, upload, rehearse). Manual restore points live under `run402 snapshots create|list|get|restore|delete`; restore is a two-step plan/confirm flow. Branch projects live under `run402 branches create|list|renew|delete`, default to a 7-day TTL, use sandboxed email by default, and are marked noindex; a parent with no live release yields an empty branch.
|
|
526
526
|
|
|
527
527
|
Your HTML never needs a pasted key: every Run402 host serves `/_run402/config.js` (`window.RUN402 = { project_id, api_base, anon_key }`) for the project it resolves to. `run402 up` also names this principal when it has none — `RUN402_AGENT_NAME` if your runtime declares one (it overrides an existing name), else a detected client (`claude-code`, `codex`, `cursor`, `grok`; `RUN402_CLIENT=<name>` declares a client with no marker of its own, checked first); when nothing is known nothing is written — so promotion credit names you; set it any time with `run402 org whoami --set-name <name>`. `result.identity` always reports `detected` (the client seen this run) and `detection: { applied, reason }`, where `name_already_set` means a client was detected but the principal already had a name. `projects provision` never touches git; `up` scaffolds a `run402` remote on the app root only, and an app root inside another repository is skipped with a `create_nested_repo` next action unless you pass `--nested`, which makes it its own nested repository (one line appended to the enclosing repository's local `.git/info/exclude`, nothing else touched).
|
|
528
528
|
|
|
@@ -559,7 +559,7 @@ RUN402_MCP_PROFILE=buyer npx -y run402-mcp
|
|
|
559
559
|
| *(unset — default)* | 198 | ~43,200 |
|
|
560
560
|
| `buyer` | **8** | **~740** |
|
|
561
561
|
|
|
562
|
-
The eight: `generate_image` · `init` · `check_balance` · `
|
|
562
|
+
The eight: `generate_image` · `init` · `check_balance` · `wallet_status` · `lightning_wallet` · `wallet_export` · `request_faucet` · `redeem_voucher` — enough to bootstrap a wallet, fund it (from the faucet or a promo code), check it, and buy. **Local, so it can actually pay:** an x402 payment needs a signing key, so a wallet-less remote server cannot make one.
|
|
563
563
|
|
|
564
564
|
Default is unchanged when the variable is unset. An unknown profile name **exits 1** with the known-profile list rather than silently serving the full surface or nothing.
|
|
565
565
|
|
|
@@ -657,13 +657,13 @@ The full MCP surface: every tool is a thin shim over an SDK call.
|
|
|
657
657
|
|------|-------------|
|
|
658
658
|
| `deploy_site` | Deploy a static site from inline file bytes. |
|
|
659
659
|
| `deploy_site_dir` | Deploy a static site from a local directory. Routes through the unified apply primitive (CAS-backed); only uploads bytes the gateway doesn't have. |
|
|
660
|
-
| `
|
|
660
|
+
| `add_subdomain` | Claim `<name>.run402.com` (idempotent; binds the live release unless `release_id` / `deployment_id` is given; reassigns to latest deploy on subsequent deploys). |
|
|
661
661
|
| `list_subdomains` / `delete_subdomain` | Manage subdomains. |
|
|
662
662
|
| `domains_ensure` / `domains_get` / `domains_list` / `domains_check` | Manage project-scoped web/email ProjectDomain desired state and health checks. |
|
|
663
663
|
| `domains_apply` / `domains_repair` / `domains_test_receive` / `domains_activate` / `domains_disconnect` | Apply safe provider actions, repair run402-owned routing, verify inbound receive, activate mailbox addresses, or disconnect a domain. |
|
|
664
664
|
| `deploy` / `deploy_resume` / `deploy_rehearse` / `deploy_list` / `deploy_events` / `deploy_verify_edge` | Apply (rehearsal is automatic when a live release has migrations to protect), resume, ADVANCED-rehearse a persisted plan on a contained branch, list, inspect deploy operations, and verify gateway/edge coherence. |
|
|
665
|
-
| `
|
|
666
|
-
| `
|
|
665
|
+
| `deploy_releases_get` / `deploy_releases_active` / `deploy_releases_diff` | Inspect release inventory and release-to-release diffs without starting a new deploy mutation. |
|
|
666
|
+
| `deploy_resolve` | Deploy resolver diagnostics for a public URL. Params: `project_id`, either `url` or `host`/`path`, optional `method`; returns `would_serve`, `diagnostic_status`, `match`, warnings, next steps, and fenced JSON. |
|
|
667
667
|
|
|
668
668
|
### Snapshots & branches
|
|
669
669
|
|
|
@@ -743,7 +743,7 @@ The full MCP surface: every tool is a thin shim over an SDK call.
|
|
|
743
743
|
|
|
744
744
|
| Tool | Description |
|
|
745
745
|
|------|-------------|
|
|
746
|
-
| `
|
|
746
|
+
| `tier_set` | Set the tier: start / renew / upgrade the lease (auto-detects action). x402 or MPP payment. |
|
|
747
747
|
| `tier_status` | Current tier, lease expiry, usage, and function authoring caps when returned. |
|
|
748
748
|
| `get_quote` | Tier pricing (free, no auth). |
|
|
749
749
|
| `create_email_organization` / `link_wallet_to_organization` | Email-based organizations; hybrid Stripe + x402. |
|
|
@@ -766,17 +766,17 @@ The full MCP surface: every tool is a thin shim over an SDK call.
|
|
|
766
766
|
| `drain_signer` | Drain native balance (works on suspended signers, the safety valve). |
|
|
767
767
|
| `delete_signer` | Schedule KMS key deletion (refused if balance ≥ dust). |
|
|
768
768
|
|
|
769
|
-
###
|
|
769
|
+
### Wallet & organization
|
|
770
770
|
|
|
771
771
|
| Tool | Description |
|
|
772
772
|
|------|-------------|
|
|
773
|
-
| `init` | One-shot setup:
|
|
774
|
-
| `status` | Full organization snapshot (
|
|
775
|
-
| `
|
|
776
|
-
| `lightning_wallet` | The Lightning
|
|
773
|
+
| `init` | One-shot setup: wallet + faucet + tier check + project list. |
|
|
774
|
+
| `status` | Full organization snapshot (wallet, allowance, tier, projects). |
|
|
775
|
+
| `wallet_status` / `wallet_create` / `wallet_export` | Local wallet management. |
|
|
776
|
+
| `lightning_wallet` | The Lightning wallet: mint the agent's budgeted wallet on Run402's Hub (pairing stored locally, Lightning becomes the default rail), read it, or revoke it. |
|
|
777
777
|
| `request_faucet` | Request testnet USDC. |
|
|
778
|
-
| `redeem_voucher` | Redeem a promo code
|
|
779
|
-
| `check_balance` |
|
|
778
|
+
| `redeem_voucher` | Redeem a promo code into the organization's allowance. |
|
|
779
|
+
| `check_balance` | The organization's allowance for a wallet address. |
|
|
780
780
|
| `list_projects` | Named, domain-aware project inventory (name, site_url, custom_domains, org). Membership-scoped; supports `org_id` filter, `all` cross-wallet read, and pagination. |
|
|
781
781
|
| `list_tenant_payments` | Redacted tenant x402 payment history for priced function routes on a project. |
|
|
782
782
|
| `rename_project` | Rename a project to fix an auto-generated name (org admin / `project:write` grant). |
|
|
@@ -786,14 +786,13 @@ The full MCP surface: every tool is a thin shim over an SDK call.
|
|
|
786
786
|
| `create_checkout` | Org checkout for balance top-ups, tiers, or email packs. |
|
|
787
787
|
| `create_lightning_topup` | Top up the allowance over Lightning: mints a bolt11 invoice; pay from any wallet. |
|
|
788
788
|
| `get_topup` | Read a Lightning top-up (pending, paid, paid_late, expired). |
|
|
789
|
-
| `send_feedback` | Send feedback to the run402 team. Write-only: no inbox, no reply path. Optional `project_id` + `handle` relay a deploy's promotion consent (`
|
|
789
|
+
| `send_feedback` | Send feedback to the run402 team. Write-only: no inbox, no reply path. Optional `project_id` + `handle` relay a deploy's promotion consent (`hand_to_member` next action). |
|
|
790
790
|
| `set_agent_contact` / `get_agent_contact_status` / `verify_agent_contact_email` | Register agent contact info, read assurance status, and start the owner email reply challenge. |
|
|
791
|
-
| `
|
|
792
|
-
| `get_operator_status` | Compact notification-health snapshot: contact assurance state, critical items, skipped notifications, organizations, projects, active thresholds. Read via `run402 doctor` or directly. |
|
|
791
|
+
| `start_contact_passkey_enrollment` | Email a run402 passkey enrollment link to the verified contact email. |
|
|
793
792
|
| `get_notification_preferences` / `set_notification_preferences` | Read/update owner notification preferences (cadence, channels, per-class toggles, locale, timezone). Cross-wallet effects require `email_verified`; webhook URL changes require `operator_passkey`. |
|
|
794
793
|
| `list_notifications` | Per-delivery-attempt audit log. Paginated, filterable by event_type / since. |
|
|
795
794
|
| `test_notification` | Fire a real test notification through the full worker pipeline. Audit row marked `is_test=true`. Rate-limited per wallet at 1/min. |
|
|
796
|
-
| `rotate_webhook_secret` | Generate a new HMAC signing secret for the notification webhook (returned exactly once). Previous secret remains valid for 24h. Requires `operator_passkey
|
|
795
|
+
| `rotate_webhook_secret` | Generate a new HMAC signing secret for the notification webhook (returned exactly once). Previous secret remains valid for 24h. Requires passkey assurance (`operator_passkey`). |
|
|
797
796
|
| `list_project_events` | Cursored project events feed — catch up on deploy activations, suspensions, transfers, lifecycle cliffs since your stored cursor. Also reads the org-wide union via `org_id`. Filter with `source` (`"app"` vs `"platform"`) and/or `event_type` (comma-separated) to read just a deployed function's own emitted business events, just the platform's operational record, or one-or-more specific types. |
|
|
798
797
|
| `errors_list` | Grouped error fingerprints + a release-baselined promote/revert verdict. Poll with `new_in` after a promote to gate on new error identities; pass `fingerprint_id` for one identity's full detail. |
|
|
799
798
|
|
|
@@ -801,6 +800,9 @@ The full MCP surface: every tool is a thin shim over an SDK call.
|
|
|
801
800
|
|
|
802
801
|
| Tool | Description |
|
|
803
802
|
|------|-------------|
|
|
803
|
+
| `list_rooms` | Which rooms this credential can reach in an org (`org_id`, or `project_id` for its owning org). Rooms are derived from use — a key nobody has written under is not listed. Returns `{rooms: [{org_id, room_key, project_id, live_presences, last_activity_at}]}`, newest activity first. |
|
|
804
|
+
| `get_room` | Look at one room WITHOUT joining it: live presences and last activity. An unused key reads as empty, never 404. A room key is a label: a project id (`prj_…`) or any label matching `/^[a-z0-9][a-z0-9._-]{0,63}$/`. |
|
|
805
|
+
| `leave_room` | Release this session's presence (or a named one of your own principal) so it stops reading as live and stops holding its claims. Idempotent: already gone reports `left: false`. |
|
|
804
806
|
| `join_room` | Arrive in a project's coordination room: register this session's presence (`requested_name` honored-or-suffixed, `Opus` → `Opus-2`) and see who else is live, what they're working on, and what they've claimed. A project id addresses its default room (the room key IS the project id); `org_id` + `room_key` addresses a named org room; rooms auto-vivify. |
|
|
805
807
|
| `send_room_message` | Durable room-visible message (markdown, ≤32 KiB). `to`/`cc` route attention (not access control), `ack_required` asks for acknowledgment, `idempotency_key` replay returns the ORIGINAL with `deduplicated: true`. Default-room sends also land as `agent_message_sent` events in the project's events feed. |
|
|
806
808
|
| `read_room_messages` | Cursored catch-up on what the other agents said (opaque `mcr_…` cursor; stale cursor → `reset: true` + `earliest_cursor`, never an error), `unread`-only filtering, thread filtering, or one FULL message by `message_id`. `wait` (1..25 seconds) holds this ONE read until a matching message lands or the wait elapses — the agent's ear, one server-side hold, no client loop; answers the ordinary page either way plus `waited_ms` and `live_presences[]`. No MCP tool exists for `repos invite`/`repos join` (a bearer secret is minted/spent and org membership mutated — the CLI-only reasoning below) — `run402 messages wait` on the CLI is the blocking version for a coding harness that wants to poll less. |
|
|
@@ -808,7 +810,7 @@ The full MCP surface: every tool is a thin shim over an SDK call.
|
|
|
808
810
|
| `claim_room_resource` | ADVISORY, TTL-expiring claim on what you're working on (`repo:<glob>` with overlap detection, `function:`/`table:`/`deploy`/free-form exact-match). Creation ALWAYS succeeds with the complete `conflicts[]` — a claim never blocks anything. |
|
|
809
811
|
| `release_room_claim` | Release a claim you hold (idempotent; holder only). Pair with a `send_room_message` handoff note. |
|
|
810
812
|
|
|
811
|
-
**Bringing a stranger's agent into the room (CLI/SDK only, no MCP tool).** `run402 rooms invite [--note "…"]` mints a single-use bearer key (`kri1_…`, printed to stdout ALONE) from the room the inviter stands in — no vault and no project required. `run402 rooms join kri1_…` folds a funded-wallet chain (
|
|
813
|
+
**Bringing a stranger's agent into the room (CLI/SDK only, no MCP tool).** `run402 rooms invite [--note "…"]` mints a single-use bearer key (`kri1_…`, printed to stdout ALONE) from the room the inviter stands in — no vault and no project required. `run402 rooms join kri1_…` folds a funded-wallet chain (wallet → faucet if the balance is zero → a brief settlement wait) and pays a one-cent testnet x402 fee to claim it — the payment IS the join — arriving as a permanent **`viewer`**, the narrowest membership that can message, never widened from this door (no `--role`, ever, and a viewer is never auto-admitted as a vault writer — bring a member into the CODE with `run402 repos invite` instead). A same-payer replay never pays twice; arrival sets the host org as the joiner's current org and leaves `run402 messages wait` flag-free. Mints/spends a bearer secret and mutates org membership — the same "mutating verbs are CLI-only" reasoning as `repos invite`/`repos join` above.
|
|
812
814
|
|
|
813
815
|
### Agent escalations (the hotline to a human)
|
|
814
816
|
|
|
@@ -854,14 +856,14 @@ The repo's mutating verbs are deliberately CLI-only. `snapshot` / `create` write
|
|
|
854
856
|
| `RUN402_API_BASE` | `https://api.run402.com` | API base URL (override for staging) |
|
|
855
857
|
| `RUN402_CONFIG_DIR` | `~/.config/run402` | Local credential storage base directory (named wallets live under `profiles/<name>/`) |
|
|
856
858
|
| `RUN402_WALLET` | `default` | Active named wallet (profile). Overridden by `--wallet <name>` and per-directory `.run402.json`; `RUN402_PROFILE` is an alias. See `run402 wallets`. |
|
|
857
|
-
| `
|
|
859
|
+
| `RUN402_WALLET_PATH` | `{config_dir}/wallet.json` | Custom wallet file path |
|
|
858
860
|
| `RUN402_MCP_PROFILE` | *(unset — all 198 tools)* | `run402-mcp` only. `buyer` registers just the 6 tools a buy-only agent needs (~660 tokens instead of ~43,200). Unknown name exits 1. |
|
|
859
861
|
|
|
860
862
|
Local state lives at:
|
|
861
863
|
|
|
862
864
|
- profile `state.json`: active project pointer and profile state
|
|
863
865
|
- profile `credentials/project-keys.v1.json` (`0600`): local anon/service key cache for explicit credential-required operations
|
|
864
|
-
- `~/.config/run402/
|
|
866
|
+
- `~/.config/run402/wallet.json` (`0600`): wallet for x402 / MPP signing
|
|
865
867
|
|
|
866
868
|
Legacy `projects.json` files are one-way migration input only. `anon_key` and `service_key` have no expiry; lease enforcement happens server-side. Inspect cache state with `run402 credentials project-keys status --project <id>` and export secrets only with `run402 credentials project-keys export --project <id> --reveal`.
|
|
867
869
|
|
|
@@ -875,7 +877,7 @@ npm run test:sync # checks MCP/CLI/OpenClaw/SDK stay in sync
|
|
|
875
877
|
npm run test:skill # validates SKILL.md frontmatter + body
|
|
876
878
|
```
|
|
877
879
|
|
|
878
|
-
Architecture: every tool / subcommand / skill script is a thin shim over an `@run402/sdk` call. `core/` holds Node-only filesystem primitives (keystore,
|
|
880
|
+
Architecture: every tool / subcommand / skill script is a thin shim over an `@run402/sdk` call. `core/` holds Node-only filesystem primitives (keystore, wallet, SIWE signing) wrapped by the SDK's Node provider. See [`CLAUDE.md`](./CLAUDE.md) for the full layout.
|
|
879
881
|
|
|
880
882
|
## Links
|
|
881
883
|
|
package/core/dist/config.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export declare function getProfilesDir(): string;
|
|
|
39
39
|
* The effective config directory for the *active* wallet. The `default` wallet
|
|
40
40
|
* resolves to the base dir (zero migration for existing single-wallet
|
|
41
41
|
* installs); any named wallet resolves to `{base}/profiles/<name>`. Because
|
|
42
|
-
* keystore,
|
|
42
|
+
* keystore, wallet, and meta paths all derive from this, switching the
|
|
43
43
|
* profile env var moves the whole wallet bundle atomically — and the SDK/MCP
|
|
44
44
|
* inherit profile selection for free.
|
|
45
45
|
*/
|
|
@@ -57,5 +57,19 @@ export declare function configureApiBase(apiBase: string, options?: Omit<ApiTarg
|
|
|
57
57
|
export declare function getConfiguredApiBase(): string | null;
|
|
58
58
|
export declare function getApiTargetKind(): ApiTargetKind;
|
|
59
59
|
export declare function isCoreApiTarget(): boolean;
|
|
60
|
-
|
|
60
|
+
/**
|
|
61
|
+
* The file that holds a wallet's key, in the base config dir (the `default`
|
|
62
|
+
* wallet) and in each `profiles/<name>/` directory.
|
|
63
|
+
*/
|
|
64
|
+
export declare const WALLET_FILE_NAME = "wallet.json";
|
|
65
|
+
/**
|
|
66
|
+
* One-time local move of the wallet key file to its current name: in the base
|
|
67
|
+
* config dir and every `profiles/<name>/` directory, `allowance.json` is
|
|
68
|
+
* renamed to `wallet.json` (an atomic same-directory rename) when
|
|
69
|
+
* `wallet.json` is absent, then tightened to 0600. A directory that already
|
|
70
|
+
* holds `wallet.json` is left untouched. Runs once per base dir per process;
|
|
71
|
+
* nothing reads the previous name afterwards.
|
|
72
|
+
*/
|
|
73
|
+
export declare function moveWalletFiles(): void;
|
|
74
|
+
export declare function getWalletPath(): string;
|
|
61
75
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoCD,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED,wBAAgB,gBAAgB,IAAI,KAAK,GAAG,SAAS,GAAG,SAAS,CAGhE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,eAAO,MAAM,eAAe,YAAY,CAAC;AASzC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AA2BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAmBzE;AAeD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAGhF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,YAAY,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACvF,eAAe,CAiBjB;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAKpD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAGhD;AAeD,wBAAgB,eAAe,IAAI,OAAO,CAQzC;AAED,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoCD,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED,wBAAgB,gBAAgB,IAAI,KAAK,GAAG,SAAS,GAAG,SAAS,CAGhE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,eAAO,MAAM,eAAe,YAAY,CAAC;AASzC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AA2BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAmBzE;AAeD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAGhF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,YAAY,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACvF,eAAe,CAiBjB;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAKpD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAGhD;AAeD,wBAAgB,eAAe,IAAI,OAAO,CAQzC;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAO9C;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,IAAI,CA4BtC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAItC"}
|
package/core/dist/config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
|
-
import { existsSync, renameSync, mkdirSync, chmodSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { existsSync, renameSync, mkdirSync, chmodSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
|
|
4
4
|
import { randomBytes } from "node:crypto";
|
|
5
5
|
import { describeRejectedValue } from "./redact.js";
|
|
6
6
|
export const DEFAULT_API_BASE = "https://api.run402.com";
|
|
@@ -118,7 +118,7 @@ export function getProfilesDir() {
|
|
|
118
118
|
* The effective config directory for the *active* wallet. The `default` wallet
|
|
119
119
|
* resolves to the base dir (zero migration for existing single-wallet
|
|
120
120
|
* installs); any named wallet resolves to `{base}/profiles/<name>`. Because
|
|
121
|
-
* keystore,
|
|
121
|
+
* keystore, wallet, and meta paths all derive from this, switching the
|
|
122
122
|
* profile env var moves the whole wallet bundle atomically — and the SDK/MCP
|
|
123
123
|
* inherit profile selection for free.
|
|
124
124
|
*/
|
|
@@ -232,27 +232,61 @@ export function isCoreApiTarget() {
|
|
|
232
232
|
return true;
|
|
233
233
|
return false;
|
|
234
234
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
235
|
+
/**
|
|
236
|
+
* The file that holds a wallet's key, in the base config dir (the `default`
|
|
237
|
+
* wallet) and in each `profiles/<name>/` directory.
|
|
238
|
+
*/
|
|
239
|
+
export const WALLET_FILE_NAME = "wallet.json";
|
|
240
|
+
/** The name the wallet key file had before it was `wallet.json`. */
|
|
241
|
+
const PREVIOUS_WALLET_FILE_NAME = "allowance.json";
|
|
242
|
+
const walletFilesMovedFor = new Set();
|
|
243
|
+
/**
|
|
244
|
+
* One-time local move of the wallet key file to its current name: in the base
|
|
245
|
+
* config dir and every `profiles/<name>/` directory, `allowance.json` is
|
|
246
|
+
* renamed to `wallet.json` (an atomic same-directory rename) when
|
|
247
|
+
* `wallet.json` is absent, then tightened to 0600. A directory that already
|
|
248
|
+
* holds `wallet.json` is left untouched. Runs once per base dir per process;
|
|
249
|
+
* nothing reads the previous name afterwards.
|
|
250
|
+
*/
|
|
251
|
+
export function moveWalletFiles() {
|
|
252
|
+
const base = getConfigBaseDir();
|
|
253
|
+
if (walletFilesMovedFor.has(base))
|
|
254
|
+
return;
|
|
255
|
+
walletFilesMovedFor.add(base);
|
|
256
|
+
const dirs = [base];
|
|
257
|
+
try {
|
|
258
|
+
for (const entry of readdirSync(join(base, "profiles"), { withFileTypes: true })) {
|
|
259
|
+
if (entry.isDirectory())
|
|
260
|
+
dirs.push(join(base, "profiles", entry.name));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// No profiles directory yet.
|
|
265
|
+
}
|
|
266
|
+
for (const dir of dirs) {
|
|
267
|
+
const from = join(dir, PREVIOUS_WALLET_FILE_NAME);
|
|
268
|
+
const to = join(dir, WALLET_FILE_NAME);
|
|
269
|
+
if (existsSync(to) || !existsSync(from))
|
|
270
|
+
continue;
|
|
271
|
+
try {
|
|
272
|
+
renameSync(from, to);
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
248
277
|
try {
|
|
249
|
-
chmodSync(
|
|
278
|
+
chmodSync(to, 0o600);
|
|
250
279
|
}
|
|
251
280
|
catch {
|
|
252
281
|
// Best-effort (e.g. Windows / exotic filesystems). Read-time self-heal
|
|
253
|
-
// in
|
|
282
|
+
// in readWallet() is the backstop.
|
|
254
283
|
}
|
|
255
284
|
}
|
|
256
|
-
|
|
285
|
+
}
|
|
286
|
+
export function getWalletPath() {
|
|
287
|
+
if (process.env.RUN402_WALLET_PATH)
|
|
288
|
+
return process.env.RUN402_WALLET_PATH;
|
|
289
|
+
moveWalletFiles();
|
|
290
|
+
return join(getConfigDir(), WALLET_FILE_NAME);
|
|
257
291
|
}
|
|
258
292
|
//# sourceMappingURL=config.js.map
|
package/core/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|