run402 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 +43 -41
- package/cli.mjs +34 -29
- package/core-dist/config.js +52 -18
- package/core-dist/control-plane-session.js +31 -6
- package/core-dist/keystore.js +7 -7
- package/core-dist/profiles.js +9 -7
- package/core-dist/{allowance-auth.js → wallet-auth.js} +15 -15
- package/{sdk/core-dist/allowance.js → core-dist/wallet.js} +20 -20
- package/{sdk/core-dist/write-auth-session.js → core-dist/write-approvals.js} +19 -19
- package/gitvault-surface.json +1 -1
- package/lib/admin.mjs +1 -1
- package/lib/agent.mjs +20 -18
- package/lib/approve.mjs +81 -0
- package/lib/apps.mjs +3 -3
- package/lib/assets.mjs +2 -2
- package/lib/billing.mjs +6 -6
- package/lib/buzz-doctor.mjs +1 -1
- package/lib/buzz-notifications.mjs +1 -1
- package/lib/buzz.mjs +1 -1
- package/lib/buzz.test.mjs +1 -1
- package/lib/ci.mjs +4 -4
- package/lib/cold-start.mjs +21 -21
- package/lib/command-manifest.mjs +20 -34
- package/lib/config.mjs +24 -24
- package/lib/contacts.mjs +13 -13
- package/lib/contracts.mjs +1 -1
- package/lib/credentials.mjs +2 -2
- package/lib/daemon-path.mjs +1 -1
- package/lib/delegates.mjs +1 -1
- package/lib/deliveries.mjs +4 -4
- package/lib/deploy-rehearse-discovery.test.mjs +7 -7
- package/lib/deploy-v2.mjs +232 -184
- package/lib/deploy.mjs +21 -53
- package/lib/doctor-source-scan.mjs +1 -1
- package/lib/doctor.mjs +57 -57
- package/lib/escalations.mjs +1 -1
- package/lib/feedback.mjs +10 -10
- package/lib/gitvault-daemon.mjs +1 -1
- package/lib/image.mjs +3 -3
- package/lib/init.mjs +66 -66
- package/lib/lightning-wallet.mjs +28 -28
- package/lib/login.mjs +207 -0
- package/lib/logout.mjs +53 -0
- package/lib/next-actions.mjs +15 -15
- package/lib/org.mjs +100 -13
- package/lib/pay.mjs +1 -1
- package/lib/projects.mjs +26 -29
- package/lib/redeem.mjs +7 -8
- package/lib/remote-helper-session.mjs +12 -12
- package/lib/repos.mjs +62 -62
- package/lib/rooms.mjs +103 -67
- package/lib/sdk-errors.mjs +9 -4
- package/lib/sdk.mjs +3 -3
- package/lib/service.mjs +5 -5
- package/lib/session-proofs.mjs +21 -0
- package/lib/sign-in.mjs +296 -0
- package/lib/sites.mjs +8 -8
- package/lib/stats.mjs +2 -2
- package/lib/status.mjs +25 -25
- package/lib/subdomains.mjs +19 -19
- package/lib/subscriptions.mjs +8 -8
- package/lib/tier.mjs +29 -22
- package/lib/transfer.mjs +58 -85
- package/lib/up.mjs +7 -7
- package/lib/wallet-context.mjs +3 -3
- package/lib/wallet-context.test.mjs +3 -3
- package/lib/wallets.mjs +196 -31
- package/lib/webhook-secret.mjs +6 -6
- package/lib/whoami.mjs +75 -0
- package/package.json +1 -1
- package/sdk/core-dist/config.js +52 -18
- package/sdk/core-dist/control-plane-session.js +31 -6
- package/sdk/core-dist/keystore.js +7 -7
- package/sdk/core-dist/profiles.js +9 -7
- package/sdk/core-dist/{allowance-auth.js → wallet-auth.js} +15 -15
- package/{core-dist/allowance.js → sdk/core-dist/wallet.js} +20 -20
- 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/operator-session.js +0 -154
- package/lib/allowance.mjs +0 -355
- package/lib/operator-proofs.mjs +0 -22
- package/lib/operator.mjs +0 -771
- 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
|
@@ -3,7 +3,7 @@ import { dirname, join } from "node:path";
|
|
|
3
3
|
import { randomBytes } from "node:crypto";
|
|
4
4
|
import { getLegacyProjectsPath, getProjectCredentialsPath } from "./config.js";
|
|
5
5
|
import { clearActiveProjectId as clearProfileActiveProjectId, getActiveProjectId as getProfileActiveProjectId, recordMigration, setActiveProjectId as setProfileActiveProjectId, } from "./profile-state.js";
|
|
6
|
-
import {
|
|
6
|
+
import { readWallet } from "./wallet.js";
|
|
7
7
|
function withFileLock(path, fn, { retries = 200, delayMs = 20 } = {}) {
|
|
8
8
|
const lockDir = path + ".lock";
|
|
9
9
|
mkdirSync(dirname(path), { recursive: true });
|
|
@@ -99,7 +99,7 @@ function migrateLegacyProjectsJson(targetPath) {
|
|
|
99
99
|
// Scoped the same way every other write in this module now is (see
|
|
100
100
|
// `currentPrincipal`'s doc comment) — an unscoped write here is exactly
|
|
101
101
|
// what poisons the "unknown"-principal bucket for good on a machine that
|
|
102
|
-
// migrates before its wallet
|
|
102
|
+
// migrates before its wallet exists yet.
|
|
103
103
|
setProfileActiveProjectId(legacy.active_project_id, undefined, { principal: currentPrincipal() });
|
|
104
104
|
}
|
|
105
105
|
recordMigration("projects_json_import", {
|
|
@@ -174,7 +174,7 @@ export function removeProject(projectId, path) {
|
|
|
174
174
|
}
|
|
175
175
|
/**
|
|
176
176
|
* The active-project scope's `principal`, derived from the CURRENT wallet's
|
|
177
|
-
*
|
|
177
|
+
* wallet — matching exactly what `NodeCredentialsProvider.setActiveProject`
|
|
178
178
|
* (sdk/src/node/credentials.ts) writes after `projects.provision` /
|
|
179
179
|
* `projects.use`. Without this, every reader here used the profile-state
|
|
180
180
|
* module's own default (empty) scope, which resolves to a FIXED
|
|
@@ -185,7 +185,7 @@ export function removeProject(projectId, path) {
|
|
|
185
185
|
* `profile-state.ts#getActiveProjectId` happens to agree), but once the
|
|
186
186
|
* "unknown" bucket is EVER populated by any principal-less write — the
|
|
187
187
|
* one-time legacy `projects.json` migration below, or any provision/`use`
|
|
188
|
-
* call made before this machine had a wallet
|
|
188
|
+
* call made before this machine had a wallet — it never gets
|
|
189
189
|
* updated again (real wallet operations write to the principal-keyed
|
|
190
190
|
* bucket, not "unknown") and PERMANENTLY shadows every later wallet-scoped
|
|
191
191
|
* activation for every caller that reads through this module: `resolveProjectId`
|
|
@@ -197,13 +197,13 @@ export function removeProject(projectId, path) {
|
|
|
197
197
|
* stale "unknown"-bucket entry first and never falls through to the
|
|
198
198
|
* freshly-updated flat value.
|
|
199
199
|
*
|
|
200
|
-
* Best-effort: an unreadable/malformed
|
|
200
|
+
* Best-effort: an unreadable/malformed wallet degrades to `null` (the
|
|
201
201
|
* "unknown" bucket callers tolerate), never a
|
|
202
|
-
* throw — this is a read-scoping concern, not
|
|
202
|
+
* throw — this is a read-scoping concern, not a wallet-validity one.
|
|
203
203
|
*/
|
|
204
204
|
function currentPrincipal() {
|
|
205
205
|
try {
|
|
206
|
-
return
|
|
206
|
+
return readWallet()?.address ?? null;
|
|
207
207
|
}
|
|
208
208
|
catch {
|
|
209
209
|
return null;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A "wallet" is a whole config directory. The reserved `default` wallet lives
|
|
5
5
|
* at the base config dir (zero migration for existing installs); every named
|
|
6
|
-
* wallet lives under `{base}/profiles/<name>/` with its own `
|
|
6
|
+
* wallet lives under `{base}/profiles/<name>/` with its own `wallet.json`,
|
|
7
7
|
* `projects.json`, and this module's non-secret `meta.json`.
|
|
8
8
|
*
|
|
9
9
|
* Two levels of active state, mirroring the wallet → project model:
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { readFileSync, writeFileSync, mkdirSync, renameSync, chmodSync, existsSync, readdirSync, rmSync, } from "node:fs";
|
|
18
18
|
import { dirname, join } from "node:path";
|
|
19
19
|
import { randomBytes } from "node:crypto";
|
|
20
|
-
import { getConfigBaseDir, getProfilesDir, DEFAULT_PROFILE, isValidProfileName, } from "./config.js";
|
|
20
|
+
import { getConfigBaseDir, getProfilesDir, DEFAULT_PROFILE, isValidProfileName, moveWalletFiles, WALLET_FILE_NAME, } from "./config.js";
|
|
21
21
|
import { describeRejectedValue } from "./redact.js";
|
|
22
22
|
function atomicWrite(p, content, mode) {
|
|
23
23
|
const dir = dirname(p);
|
|
@@ -114,17 +114,19 @@ export function writeMeta(name, meta) {
|
|
|
114
114
|
atomicWrite(metaPath(name), JSON.stringify(meta, null, 2), 0o600);
|
|
115
115
|
}
|
|
116
116
|
// --- enumeration + lifecycle ---
|
|
117
|
-
/** True when a wallet's `
|
|
117
|
+
/** True when a wallet's `wallet.json` exists on disk. */
|
|
118
118
|
export function profileExists(name) {
|
|
119
|
-
|
|
119
|
+
moveWalletFiles();
|
|
120
|
+
return existsSync(join(profileDir(name), WALLET_FILE_NAME));
|
|
120
121
|
}
|
|
121
122
|
/**
|
|
122
|
-
* All wallet names on disk: `default` (only if a root
|
|
123
|
+
* All wallet names on disk: `default` (only if a root wallet.json exists)
|
|
123
124
|
* plus every valid directory under `profiles/`.
|
|
124
125
|
*/
|
|
125
126
|
export function listProfileNames() {
|
|
127
|
+
moveWalletFiles();
|
|
126
128
|
const names = [];
|
|
127
|
-
if (existsSync(join(getConfigBaseDir(),
|
|
129
|
+
if (existsSync(join(getConfigBaseDir(), WALLET_FILE_NAME))) {
|
|
128
130
|
names.push(DEFAULT_PROFILE);
|
|
129
131
|
}
|
|
130
132
|
try {
|
|
@@ -184,7 +186,7 @@ export function renameProfile(oldName, newName) {
|
|
|
184
186
|
/* best-effort */
|
|
185
187
|
}
|
|
186
188
|
const base = getConfigBaseDir();
|
|
187
|
-
for (const f of [
|
|
189
|
+
for (const f of [WALLET_FILE_NAME, "projects.json", "meta.json"]) {
|
|
188
190
|
const src = join(base, f);
|
|
189
191
|
if (existsSync(src))
|
|
190
192
|
renameSync(src, join(dest, f));
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* SIWX auth helper — generates SIWX (Sign-In With X / EIP-4361) headers for Run402 API.
|
|
3
3
|
* Uses @noble/curves (lighter than viem) for signing.
|
|
4
4
|
*/
|
|
5
5
|
import { randomBytes } from "node:crypto";
|
|
6
6
|
import { secp256k1 } from "@noble/curves/secp256k1.js";
|
|
7
7
|
import { keccak_256 } from "@noble/hashes/sha3.js";
|
|
8
8
|
import { bytesToHex } from "@noble/hashes/utils.js";
|
|
9
|
-
import {
|
|
9
|
+
import { readWallet } from "./wallet.js";
|
|
10
10
|
import { getApiBase } from "./config.js";
|
|
11
11
|
/**
|
|
12
12
|
* EIP-55 mixed-case checksum encoding.
|
|
@@ -21,7 +21,7 @@ export function toChecksumAddress(address) {
|
|
|
21
21
|
return checksummed;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* EIP-191 personal_sign: sign a message with the
|
|
24
|
+
* EIP-191 personal_sign: sign a message with the wallet's private key.
|
|
25
25
|
*/
|
|
26
26
|
function personalSign(privateKeyHex, address, message) {
|
|
27
27
|
const msgBytes = new TextEncoder().encode(message);
|
|
@@ -86,11 +86,11 @@ export function formatSIWEMessage(opts, address) {
|
|
|
86
86
|
return lines.join("\n");
|
|
87
87
|
}
|
|
88
88
|
export function buildSIWxAuthHeaders(opts) {
|
|
89
|
-
const message = formatSIWEMessage(opts, opts.
|
|
90
|
-
const signature = personalSign(opts.
|
|
89
|
+
const message = formatSIWEMessage(opts, opts.wallet.address);
|
|
90
|
+
const signature = personalSign(opts.wallet.privateKey, opts.wallet.address, message);
|
|
91
91
|
const payload = {
|
|
92
92
|
domain: opts.domain,
|
|
93
|
-
address: toChecksumAddress(opts.
|
|
93
|
+
address: toChecksumAddress(opts.wallet.address),
|
|
94
94
|
statement: opts.statement,
|
|
95
95
|
uri: opts.uri,
|
|
96
96
|
version: opts.version ?? "1",
|
|
@@ -110,18 +110,18 @@ export function buildSIWxAuthHeaders(opts) {
|
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
112
|
* Get SIWX auth headers for the Run402 API.
|
|
113
|
-
* Returns null if no
|
|
113
|
+
* Returns null if no local wallet is configured.
|
|
114
114
|
*
|
|
115
115
|
* @param path - API path (e.g. "/projects/v1") used to build the SIWE uri field.
|
|
116
116
|
*/
|
|
117
|
-
export function
|
|
118
|
-
//
|
|
119
|
-
// CLI's higher-level
|
|
120
|
-
//
|
|
117
|
+
export function getWalletAuthHeaders(path, walletPath) {
|
|
118
|
+
// readWallet throws on a malformed-shape wallet file. The
|
|
119
|
+
// CLI's higher-level readWallet wrapper surfaces this as a structured
|
|
120
|
+
// BAD_WALLET_FILE envelope; here we preserve the public contract that
|
|
121
121
|
// this helper returns SIWxAuthHeaders | null. Re-throw so callers above
|
|
122
122
|
// the CLI's wrapper (e.g. SDK paid-fetch) can decide whether to swallow it.
|
|
123
|
-
const
|
|
124
|
-
if (!
|
|
123
|
+
const localWallet = readWallet(walletPath);
|
|
124
|
+
if (!localWallet || !localWallet.address || !localWallet.privateKey)
|
|
125
125
|
return null;
|
|
126
126
|
const apiBase = getApiBase();
|
|
127
127
|
const url = new URL(apiBase);
|
|
@@ -132,7 +132,7 @@ export function getAllowanceAuthHeaders(path, allowancePath) {
|
|
|
132
132
|
const issuedAt = now.toISOString();
|
|
133
133
|
const expirationTime = new Date(now.getTime() + 5 * 60 * 1000).toISOString();
|
|
134
134
|
return buildSIWxAuthHeaders({
|
|
135
|
-
|
|
135
|
+
wallet: localWallet,
|
|
136
136
|
domain,
|
|
137
137
|
uri,
|
|
138
138
|
statement: "Sign in to Run402",
|
|
@@ -151,4 +151,4 @@ function messageChainId(chainId) {
|
|
|
151
151
|
function payloadChainId(chainId) {
|
|
152
152
|
return typeof chainId === "number" ? `eip155:${chainId}` : chainId;
|
|
153
153
|
}
|
|
154
|
-
//# sourceMappingURL=
|
|
154
|
+
//# sourceMappingURL=wallet-auth.js.map
|
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync, renameSync, statSync } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { randomBytes } from "node:crypto";
|
|
4
|
-
import {
|
|
4
|
+
import { getWalletPath } from "./config.js";
|
|
5
5
|
// 0x-prefixed 40-hex EVM address.
|
|
6
6
|
const ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/;
|
|
7
7
|
// 0x-prefixed 64-hex secp256k1 private key (32 bytes).
|
|
8
8
|
const PRIVATE_KEY_RE = /^0x[a-fA-F0-9]{64}$/;
|
|
9
9
|
/**
|
|
10
|
-
* Load the agent
|
|
10
|
+
* Load the agent wallet from disk.
|
|
11
11
|
*
|
|
12
|
-
* Returns `null` for the two "no
|
|
12
|
+
* Returns `null` for the two "no local wallet configured" cases:
|
|
13
13
|
* - the file does not exist
|
|
14
14
|
* - the file exists but is not parseable JSON (preserve existing UX —
|
|
15
|
-
* consumers print "
|
|
15
|
+
* consumers print "no_wallet" and tell the user to run init)
|
|
16
16
|
*
|
|
17
17
|
* Throws a structured `Error` when the file parses as JSON but the
|
|
18
18
|
* shape is wrong (missing/wrong-type/wrong-length fields). Without this guard
|
|
19
19
|
* downstream callers crash with raw stack traces:
|
|
20
|
-
* - `cli/lib/status.mjs` reaches for `
|
|
20
|
+
* - `cli/lib/status.mjs` reaches for `wallet.address.toLowerCase()`
|
|
21
21
|
* and crashes with `TypeError: Cannot read properties of undefined`.
|
|
22
|
-
* - `core/src/
|
|
22
|
+
* - `core/src/wallet-auth.ts` passes a malformed `privateKey` to
|
|
23
23
|
* `@noble/curves` which throws "expected 32 bytes, got N".
|
|
24
24
|
*
|
|
25
|
-
* The CLI's `cli/lib/config.mjs:
|
|
25
|
+
* The CLI's `cli/lib/config.mjs:readWallet()` wrapper and the MCP
|
|
26
26
|
* `src/tools/{status,init}.ts` callers translate the throw into their own
|
|
27
|
-
* structured envelopes (`code:
|
|
27
|
+
* structured envelopes (`code: BAD_WALLET_FILE`).
|
|
28
28
|
*/
|
|
29
29
|
/**
|
|
30
|
-
* If
|
|
30
|
+
* If a wallet file is readable by group or other (any of the low 0o077
|
|
31
31
|
* bits set), tighten it to 0600 and warn once on stderr. This self-heals the
|
|
32
32
|
* historical case where a legacy world-readable `wallet.json` (mode 0644) was
|
|
33
|
-
* migrated to `
|
|
33
|
+
* migrated to `wallet.json` via a mode-preserving rename, leaving the
|
|
34
34
|
* private key exposed on a shared machine. Best-effort: POSIX-only and silent
|
|
35
35
|
* on platforms without meaningful Unix modes (e.g. Windows).
|
|
36
36
|
*/
|
|
@@ -48,8 +48,8 @@ function selfHealPermissions(p) {
|
|
|
48
48
|
// Best-effort; never block a read on a chmod/stat failure.
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
export function
|
|
52
|
-
const p = path ??
|
|
51
|
+
export function readWallet(path) {
|
|
52
|
+
const p = path ?? getWalletPath();
|
|
53
53
|
if (!existsSync(p))
|
|
54
54
|
return null;
|
|
55
55
|
selfHealPermissions(p);
|
|
@@ -66,31 +66,31 @@ export function readAllowance(path) {
|
|
|
66
66
|
}
|
|
67
67
|
catch {
|
|
68
68
|
// Preserve historical UX — completely unparseable input reads as "no
|
|
69
|
-
//
|
|
69
|
+
// wallet configured" rather than as an error. Consumers already handle
|
|
70
70
|
// null with a friendly "run 'run402 init'" message.
|
|
71
71
|
return null;
|
|
72
72
|
}
|
|
73
73
|
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
74
|
-
throw new Error(`
|
|
74
|
+
throw new Error(`wallet.json must contain a JSON object (got ${Array.isArray(parsed) ? "array" : parsed === null ? "null" : typeof parsed}). Back up the file and run 'run402 init' to recreate it.`);
|
|
75
75
|
}
|
|
76
76
|
const data = parsed;
|
|
77
77
|
if (typeof data.address !== "string" || !ADDRESS_RE.test(data.address)) {
|
|
78
|
-
throw new Error("
|
|
78
|
+
throw new Error("wallet.json missing valid 'address' (expected 0x-prefixed 40-hex string). " +
|
|
79
79
|
"Back up the file and run 'run402 init' to recreate it.");
|
|
80
80
|
}
|
|
81
81
|
if (typeof data.privateKey !== "string" || !PRIVATE_KEY_RE.test(data.privateKey)) {
|
|
82
|
-
throw new Error("
|
|
82
|
+
throw new Error("wallet.json missing valid 'privateKey' (expected 0x-prefixed 64-hex string). " +
|
|
83
83
|
"Back up the file and run 'run402 init' to recreate it.");
|
|
84
84
|
}
|
|
85
85
|
return data;
|
|
86
86
|
}
|
|
87
|
-
export function
|
|
88
|
-
const p = path ??
|
|
87
|
+
export function saveWallet(data, path) {
|
|
88
|
+
const p = path ?? getWalletPath();
|
|
89
89
|
const dir = dirname(p);
|
|
90
90
|
mkdirSync(dir, { recursive: true });
|
|
91
|
-
const tmp = join(dir, `.
|
|
91
|
+
const tmp = join(dir, `.wallet.${randomBytes(4).toString("hex")}.tmp`);
|
|
92
92
|
writeFileSync(tmp, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
93
93
|
renameSync(tmp, p);
|
|
94
94
|
chmodSync(p, 0o600);
|
|
95
95
|
}
|
|
96
|
-
//# sourceMappingURL=
|
|
96
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -4,12 +4,12 @@ import { randomBytes, createHash } from "node:crypto";
|
|
|
4
4
|
import { getConfigBaseDir } from "./config.js";
|
|
5
5
|
const DEFAULT_TTL_MS = 30 * 60 * 1000;
|
|
6
6
|
/**
|
|
7
|
-
* Path to the approval cache: `{base}/write-
|
|
8
|
-
* `
|
|
7
|
+
* Path to the approval cache: `{base}/write-approvals.json`.
|
|
8
|
+
* `RUN402_WRITE_APPROVALS_PATH` overrides for testing.
|
|
9
9
|
*/
|
|
10
|
-
export function
|
|
11
|
-
return (process.env.
|
|
12
|
-
join(getConfigBaseDir(), "write-
|
|
10
|
+
export function getWriteApprovalsPath() {
|
|
11
|
+
return (process.env.RUN402_WRITE_APPROVALS_PATH ||
|
|
12
|
+
join(getConfigBaseDir(), "write-approvals.json"));
|
|
13
13
|
}
|
|
14
14
|
/** Stable short hash binding an approval to a control-plane session token. */
|
|
15
15
|
export function hashControlPlaneSession(token) {
|
|
@@ -34,8 +34,8 @@ function isApproval(x) {
|
|
|
34
34
|
if (!x || typeof x !== "object")
|
|
35
35
|
return false;
|
|
36
36
|
const a = x;
|
|
37
|
-
return (typeof a.
|
|
38
|
-
a.
|
|
37
|
+
return (typeof a.write_approval_token === "string" &&
|
|
38
|
+
a.write_approval_token.length > 0 &&
|
|
39
39
|
typeof a.action === "string" &&
|
|
40
40
|
typeof a.api_origin === "string" &&
|
|
41
41
|
typeof a.control_plane_session_hash === "string" &&
|
|
@@ -48,7 +48,7 @@ function isApproval(x) {
|
|
|
48
48
|
* is wrong, so a corrupted cache surfaces a clear fix-it.
|
|
49
49
|
*/
|
|
50
50
|
export function readApprovals(path) {
|
|
51
|
-
const p = path ??
|
|
51
|
+
const p = path ?? getWriteApprovalsPath();
|
|
52
52
|
if (!existsSync(p))
|
|
53
53
|
return [];
|
|
54
54
|
selfHealPermissions(p);
|
|
@@ -67,19 +67,19 @@ export function readApprovals(path) {
|
|
|
67
67
|
return [];
|
|
68
68
|
}
|
|
69
69
|
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
70
|
-
throw new Error("write-
|
|
70
|
+
throw new Error("write-approvals.json must contain a JSON object. Delete it and re-run 'run402 approve' to recreate it.");
|
|
71
71
|
}
|
|
72
72
|
const approvals = parsed.approvals;
|
|
73
73
|
if (!Array.isArray(approvals)) {
|
|
74
|
-
throw new Error("write-
|
|
74
|
+
throw new Error("write-approvals.json missing an 'approvals' array. Delete it and re-run 'run402 approve'.");
|
|
75
75
|
}
|
|
76
76
|
return approvals.filter(isApproval);
|
|
77
77
|
}
|
|
78
78
|
function writeApprovals(approvals, path) {
|
|
79
|
-
const p = path ??
|
|
79
|
+
const p = path ?? getWriteApprovalsPath();
|
|
80
80
|
const dir = dirname(p);
|
|
81
81
|
mkdirSync(dir, { recursive: true });
|
|
82
|
-
const tmp = join(dir, `.write-
|
|
82
|
+
const tmp = join(dir, `.write-approvals.${randomBytes(4).toString("hex")}.tmp`);
|
|
83
83
|
writeFileSync(tmp, JSON.stringify({ approvals }, null, 2), { mode: 0o600 });
|
|
84
84
|
renameSync(tmp, p);
|
|
85
85
|
chmodSync(p, 0o600);
|
|
@@ -103,9 +103,9 @@ export function saveApproval(approval, path) {
|
|
|
103
103
|
existing.push(approval);
|
|
104
104
|
writeApprovals(existing, path);
|
|
105
105
|
}
|
|
106
|
-
/** Delete the whole approval cache — local half of `
|
|
106
|
+
/** Delete the whole approval cache — local half of `run402 logout`. Idempotent. */
|
|
107
107
|
export function clearApprovals(path) {
|
|
108
|
-
const p = path ??
|
|
108
|
+
const p = path ?? getWriteApprovalsPath();
|
|
109
109
|
try {
|
|
110
110
|
rmSync(p, { force: true });
|
|
111
111
|
}
|
|
@@ -137,7 +137,7 @@ export function loadLiveApproval(q, path, nowMs = Date.now()) {
|
|
|
137
137
|
}
|
|
138
138
|
/** Parse a gateway-returned session expiry (ISO string or epoch) to epoch ms. */
|
|
139
139
|
function sessionExpiryMs(session, nowMs) {
|
|
140
|
-
const raw = session?.expires_at ?? session?.absolute_expires_at;
|
|
140
|
+
const raw = session?.idle_expires_at ?? session?.expires_at ?? session?.absolute_expires_at;
|
|
141
141
|
if (typeof raw === "number" && Number.isFinite(raw))
|
|
142
142
|
return raw > 1e12 ? raw : raw * 1000;
|
|
143
143
|
if (typeof raw === "string") {
|
|
@@ -157,9 +157,9 @@ export function approvalFromTokenResponse(resp, binding, nowMs = Date.now()) {
|
|
|
157
157
|
? resp.session.amr.filter((a) => typeof a === "string")
|
|
158
158
|
: undefined;
|
|
159
159
|
return {
|
|
160
|
-
|
|
161
|
-
token_type: typeof resp.token_type === "string" ? resp.token_type : "
|
|
162
|
-
header: typeof resp.header === "string" ? resp.header : "X-Run402-Write-
|
|
160
|
+
write_approval_token: resp.write_approval_token,
|
|
161
|
+
token_type: typeof resp.token_type === "string" ? resp.token_type : "write_approval",
|
|
162
|
+
header: typeof resp.header === "string" ? resp.header : "X-Run402-Write-Approval",
|
|
163
163
|
action: binding.action,
|
|
164
164
|
...(binding.target.org_id ? { org_id: binding.target.org_id } : {}),
|
|
165
165
|
...(binding.target.project_id ? { project_id: binding.target.project_id } : {}),
|
|
@@ -171,4 +171,4 @@ export function approvalFromTokenResponse(resp, binding, nowMs = Date.now()) {
|
|
|
171
171
|
minted_at: nowMs,
|
|
172
172
|
};
|
|
173
173
|
}
|
|
174
|
-
//# sourceMappingURL=write-
|
|
174
|
+
//# sourceMappingURL=write-approvals.js.map
|
package/sdk/dist/actions.d.ts
CHANGED
|
@@ -130,7 +130,7 @@ export interface Run402ActionApprovalRequest {
|
|
|
130
130
|
message: string;
|
|
131
131
|
mutations: Run402ActionMutation[];
|
|
132
132
|
}
|
|
133
|
-
export type Run402ActionMutation = "
|
|
133
|
+
export type Run402ActionMutation = "wallets.create" | "wallets.faucet" | "tier.set" | "projects.provision" | "workspace.link.write" | "app.source.resolve" | "app.install" | "app.mailbox.ensure" | "app.secret.ensure" | "app.build" | "app.webhook.ensure" | "app.verify" | "identity.name.set" | "deploy.apply";
|
|
134
134
|
export interface Run402ActionRunOptions {
|
|
135
135
|
/**
|
|
136
136
|
* Canonical execution mode for typed-config workflows.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAC1B,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GACzB,kCAAkC,GAClC,wBAAwB,GACxB,mBAAmB,CAAC;AAExB,MAAM,WAAW,kCAAkC;IACjD,IAAI,EAAE,OAAO,YAAY,CAAC,iBAAiB,CAAC;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAClC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,YAAY,CAAC,EAAE,CAAC;IAC7B,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,8FAA8F;IAC9F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8FAA8F;IAC9F,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kGAAkG;IAClG,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;2DACuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;+DAM2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,6FAA6F;AAC7F,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEjG,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACpF,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACnF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;uDAKmD;IACnD,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,CAAC;IAC5E;;wCAEoC;IACpC,QAAQ,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACzC;;;;;wEAKoE;IACpE,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,SAAS,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,8BAA8B,CAAC;KACrH,CAAC;IACF,gFAAgF;IAChF,QAAQ,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzD;AAED,MAAM,MAAM,oBAAoB,GAC5B,OAAO,GACP,KAAK,GACL,+BAA+B,CAAC;AAEpC,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;AAED,MAAM,MAAM,oBAAoB,GAC5B,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `r.
|
|
6
|
-
*
|
|
2
|
+
* **Sign-in session** credential provider (gateway v1.78). Carries a
|
|
3
|
+
* `control_plane_session` bearer so the whole SDK authenticates as the person's
|
|
4
|
+
* principal — the token is accepted everywhere a SIWX wallet is, so `r.org.*`,
|
|
5
|
+
* `r.admin.transfers.*`, and `r.session.*` all act as that principal. A
|
|
6
|
+
* `device`-grade session is read-only (`SESSION_READ_ONLY` on every mutation).
|
|
7
7
|
*
|
|
8
|
-
* Isomorphic — no Node APIs. Mint a session with `r.
|
|
8
|
+
* Isomorphic — no Node APIs. Mint a session with `r.session.verifyEmail`
|
|
9
9
|
* / `passkeyVerify` / the loopback-PKCE `exchangeCliToken`, then:
|
|
10
10
|
*
|
|
11
11
|
* const r = run402({ credentials: controlPlaneSessionCredentials({ token }) });
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* High-stakes writes still require a fresh passkey — an `email`/`oauth` session
|
|
15
15
|
* gets {@link StepUpRequiredError}; run the step-up ceremony
|
|
16
|
-
* (`r.
|
|
16
|
+
* (`r.session.stepUpOptions`/`stepUpVerify`) and retry.
|
|
17
17
|
*
|
|
18
18
|
* This credential authenticates control-plane operations only; it carries no
|
|
19
19
|
* project anon/service keys, so {@link CredentialsProvider.getProject} returns
|
|
@@ -30,7 +30,7 @@ export interface ControlPlaneSessionCredentialsOptions {
|
|
|
30
30
|
token?: string;
|
|
31
31
|
/**
|
|
32
32
|
* Lazily resolve the current token (e.g. read a cache, or rotate via
|
|
33
|
-
* `r.
|
|
33
|
+
* `r.session.refresh`). Called before every authenticated request.
|
|
34
34
|
*/
|
|
35
35
|
getToken?: () => string | Promise<string>;
|
|
36
36
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `r.
|
|
6
|
-
*
|
|
2
|
+
* **Sign-in session** credential provider (gateway v1.78). Carries a
|
|
3
|
+
* `control_plane_session` bearer so the whole SDK authenticates as the person's
|
|
4
|
+
* principal — the token is accepted everywhere a SIWX wallet is, so `r.org.*`,
|
|
5
|
+
* `r.admin.transfers.*`, and `r.session.*` all act as that principal. A
|
|
6
|
+
* `device`-grade session is read-only (`SESSION_READ_ONLY` on every mutation).
|
|
7
7
|
*
|
|
8
|
-
* Isomorphic — no Node APIs. Mint a session with `r.
|
|
8
|
+
* Isomorphic — no Node APIs. Mint a session with `r.session.verifyEmail`
|
|
9
9
|
* / `passkeyVerify` / the loopback-PKCE `exchangeCliToken`, then:
|
|
10
10
|
*
|
|
11
11
|
* const r = run402({ credentials: controlPlaneSessionCredentials({ token }) });
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* High-stakes writes still require a fresh passkey — an `email`/`oauth` session
|
|
15
15
|
* gets {@link StepUpRequiredError}; run the step-up ceremony
|
|
16
|
-
* (`r.
|
|
16
|
+
* (`r.session.stepUpOptions`/`stepUpVerify`) and retry.
|
|
17
17
|
*
|
|
18
18
|
* This credential authenticates control-plane operations only; it carries no
|
|
19
19
|
* project anon/service keys, so {@link CredentialsProvider.getProject} returns
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* lives inside provider implementations — never in the kernel.
|
|
8
8
|
*
|
|
9
9
|
* Node consumers use {@link NodeCredentialsProvider} from `@run402/sdk/node`
|
|
10
|
-
* which wraps the local keystore +
|
|
10
|
+
* which wraps the local keystore + wallet. Sandbox consumers supply their
|
|
11
11
|
* own implementation bound to a session token issued by the supervisor.
|
|
12
12
|
*
|
|
13
13
|
* The two required methods (`getAuth`, `getProjectCredentials`) support every API call.
|
|
@@ -31,14 +31,14 @@ export interface ProjectCredentialCacheInfo {
|
|
|
31
31
|
wallet?: string;
|
|
32
32
|
profile?: string;
|
|
33
33
|
}
|
|
34
|
-
export interface
|
|
34
|
+
export interface WalletData {
|
|
35
35
|
address: string;
|
|
36
36
|
privateKey: string;
|
|
37
37
|
created?: string;
|
|
38
38
|
funded?: boolean;
|
|
39
39
|
lastFaucet?: string;
|
|
40
40
|
rail?: "x402" | "mpp" | "lightning";
|
|
41
|
-
/** The Lightning
|
|
41
|
+
/** The Lightning wallet: a budgeted wallet on Run402's Hub; `nwc` is the pairing secret and never leaves the machine. */
|
|
42
42
|
lightning?: {
|
|
43
43
|
wallet_id: string;
|
|
44
44
|
nwc: string;
|
|
@@ -60,27 +60,27 @@ export interface WalletIdentity {
|
|
|
60
60
|
label: string | null;
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
|
-
* Gateway write-
|
|
64
|
-
*
|
|
63
|
+
* Gateway write-approval capabilities. Each is scoped to a target:
|
|
64
|
+
* `org.project.create` → an org, the others → a project.
|
|
65
65
|
*/
|
|
66
|
-
export type
|
|
66
|
+
export type WriteApprovalCapability = "org.project.create" | "project.deploy" | "project.secret.write" | "project.archives.export" | "project.snapshots.manage" | "project.branches.manage";
|
|
67
67
|
/** A write-capability target: an org (for `org.project.create`) or a project. */
|
|
68
|
-
export interface
|
|
68
|
+
export interface WriteApprovalTarget {
|
|
69
69
|
org_id?: string;
|
|
70
70
|
project_id?: string;
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
73
73
|
* Per-request metadata a typed SDK method may pass to {@link
|
|
74
74
|
* CredentialsProvider.getAuth}. `capability` + `target` let a provider decide
|
|
75
|
-
* whether (and which)
|
|
75
|
+
* whether (and which) write approval to attach for a gated write.
|
|
76
76
|
*/
|
|
77
77
|
export interface AuthRequestMeta {
|
|
78
78
|
/** Diagnostic: the SDK method name (e.g. "projects.provision"). */
|
|
79
79
|
method?: string;
|
|
80
80
|
/** The gateway write capability this request exercises, if any. */
|
|
81
|
-
capability?:
|
|
81
|
+
capability?: WriteApprovalCapability;
|
|
82
82
|
/** The capability's target. */
|
|
83
|
-
target?:
|
|
83
|
+
target?: WriteApprovalTarget;
|
|
84
84
|
}
|
|
85
85
|
export interface CredentialsProvider {
|
|
86
86
|
/** Sign exact UTF-8 bytes as an EIP-191 personal message without exposing key material. */
|
|
@@ -95,7 +95,7 @@ export interface CredentialsProvider {
|
|
|
95
95
|
* overwriting headers explicitly set on the request.
|
|
96
96
|
*
|
|
97
97
|
* `metadata` (optional) carries the request's write capability + target so a
|
|
98
|
-
* provider can attach a matching
|
|
98
|
+
* provider can attach a matching write approval. Providers that
|
|
99
99
|
* ignore it (wallet-only) simply omit the parameter.
|
|
100
100
|
*/
|
|
101
101
|
getAuth(path: string, metadata?: AuthRequestMeta): Promise<Record<string, string> | null>;
|
|
@@ -133,14 +133,14 @@ export interface CredentialsProvider {
|
|
|
133
133
|
* is never sent unprompted and never an authorization input.
|
|
134
134
|
*/
|
|
135
135
|
getActiveOrg?(): Promise<string | null>;
|
|
136
|
-
/** Read the local
|
|
137
|
-
|
|
138
|
-
/** Persist the local
|
|
139
|
-
|
|
140
|
-
/** Generate a fresh
|
|
141
|
-
|
|
142
|
-
/** Return the absolute path to the local
|
|
143
|
-
|
|
136
|
+
/** Read the local wallet (wallet). Optional — sandbox providers may omit. */
|
|
137
|
+
readWallet?(): Promise<WalletData | null>;
|
|
138
|
+
/** Persist the local wallet. Optional. */
|
|
139
|
+
saveWallet?(data: WalletData): Promise<void>;
|
|
140
|
+
/** Generate a fresh wallet keypair. Optional — Node default uses secp256k1 + keccak for the Ethereum address. */
|
|
141
|
+
createWallet?(): Promise<WalletData>;
|
|
142
|
+
/** Return the absolute path to the local wallet file, for diagnostic output. Optional. */
|
|
143
|
+
getWalletPath?(): string;
|
|
144
144
|
/** Return safe provenance for the local project credential cache. Optional. */
|
|
145
145
|
getProjectCredentialCacheInfo?(): ProjectCredentialCacheInfo;
|
|
146
146
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/credentials.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* lives inside provider implementations — never in the kernel.
|
|
8
8
|
*
|
|
9
9
|
* Node consumers use {@link NodeCredentialsProvider} from `@run402/sdk/node`
|
|
10
|
-
* which wraps the local keystore +
|
|
10
|
+
* which wraps the local keystore + wallet. Sandbox consumers supply their
|
|
11
11
|
* own implementation bound to a session token issued by the supervisor.
|
|
12
12
|
*
|
|
13
13
|
* The two required methods (`getAuth`, `getProjectCredentials`) support every API call.
|