run402 3.7.14 → 3.8.1
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 +4 -2
- package/cli.mjs +6 -0
- package/core-dist/config.js +9 -0
- package/core-dist/keystore.js +103 -68
- package/core-dist/profile-state.js +137 -0
- package/lib/config.mjs +31 -20
- package/lib/credentials.mjs +273 -0
- package/lib/deploy-v2.mjs +11 -0
- package/lib/doctor.mjs +18 -2
- package/lib/domains.mjs +40 -20
- package/lib/next-actions.mjs +7 -0
- package/lib/projects.mjs +65 -27
- package/lib/sdk-errors.mjs +24 -3
- package/lib/sdk.mjs +3 -2
- package/lib/up.mjs +19 -0
- package/lib/up.test.mjs +29 -0
- package/lib/update-check.mjs +722 -0
- package/lib/update-check.test.mjs +438 -0
- package/package.json +1 -1
- package/sdk/core-dist/config.js +9 -0
- package/sdk/core-dist/keystore.js +103 -68
- package/sdk/core-dist/profile-state.js +137 -0
- package/sdk/dist/credentials.d.ts +24 -7
- package/sdk/dist/credentials.d.ts.map +1 -1
- package/sdk/dist/credentials.js +4 -4
- package/sdk/dist/errors.d.ts +27 -1
- package/sdk/dist/errors.d.ts.map +1 -1
- package/sdk/dist/errors.js +61 -3
- package/sdk/dist/errors.js.map +1 -1
- package/sdk/dist/index.d.ts +16 -2
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +9 -3
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/kernel.d.ts +9 -0
- package/sdk/dist/kernel.d.ts.map +1 -1
- package/sdk/dist/kernel.js +40 -1
- package/sdk/dist/kernel.js.map +1 -1
- package/sdk/dist/namespaces/ai.d.ts.map +1 -1
- package/sdk/dist/namespaces/ai.js +5 -10
- package/sdk/dist/namespaces/ai.js.map +1 -1
- package/sdk/dist/namespaces/apps.d.ts.map +1 -1
- package/sdk/dist/namespaces/apps.js +5 -13
- package/sdk/dist/namespaces/apps.js.map +1 -1
- package/sdk/dist/namespaces/assets.d.ts.map +1 -1
- package/sdk/dist/namespaces/assets.js +9 -22
- package/sdk/dist/namespaces/assets.js.map +1 -1
- package/sdk/dist/namespaces/auth.d.ts.map +1 -1
- package/sdk/dist/namespaces/auth.js +16 -43
- package/sdk/dist/namespaces/auth.js.map +1 -1
- package/sdk/dist/namespaces/contracts.d.ts.map +1 -1
- package/sdk/dist/namespaces/contracts.js +12 -31
- package/sdk/dist/namespaces/contracts.js.map +1 -1
- package/sdk/dist/namespaces/credentials.d.ts +48 -0
- package/sdk/dist/namespaces/credentials.d.ts.map +1 -0
- package/sdk/dist/namespaces/credentials.js +115 -0
- package/sdk/dist/namespaces/credentials.js.map +1 -0
- package/sdk/dist/namespaces/domains.d.ts +8 -2
- package/sdk/dist/namespaces/domains.d.ts.map +1 -1
- package/sdk/dist/namespaces/domains.js +41 -23
- package/sdk/dist/namespaces/domains.js.map +1 -1
- package/sdk/dist/namespaces/email.d.ts.map +1 -1
- package/sdk/dist/namespaces/email.js +8 -19
- package/sdk/dist/namespaces/email.js.map +1 -1
- package/sdk/dist/namespaces/functions.d.ts.map +1 -1
- package/sdk/dist/namespaces/functions.js +14 -37
- package/sdk/dist/namespaces/functions.js.map +1 -1
- package/sdk/dist/namespaces/jobs.d.ts.map +1 -1
- package/sdk/dist/namespaces/jobs.js +8 -19
- package/sdk/dist/namespaces/jobs.js.map +1 -1
- package/sdk/dist/namespaces/projects.d.ts +4 -4
- package/sdk/dist/namespaces/projects.d.ts.map +1 -1
- package/sdk/dist/namespaces/projects.js +18 -42
- package/sdk/dist/namespaces/projects.js.map +1 -1
- package/sdk/dist/namespaces/secrets.d.ts.map +1 -1
- package/sdk/dist/namespaces/secrets.js +5 -10
- package/sdk/dist/namespaces/secrets.js.map +1 -1
- package/sdk/dist/namespaces/sender-domain.d.ts.map +1 -1
- package/sdk/dist/namespaces/sender-domain.js +6 -16
- package/sdk/dist/namespaces/sender-domain.js.map +1 -1
- package/sdk/dist/namespaces/subdomains.d.ts.map +1 -1
- package/sdk/dist/namespaces/subdomains.js +5 -10
- package/sdk/dist/namespaces/subdomains.js.map +1 -1
- package/sdk/dist/node/actions-node.d.ts.map +1 -1
- package/sdk/dist/node/actions-node.js +46 -15
- package/sdk/dist/node/actions-node.js.map +1 -1
- package/sdk/dist/node/credentials.d.ts +18 -4
- package/sdk/dist/node/credentials.d.ts.map +1 -1
- package/sdk/dist/node/credentials.js +37 -9
- package/sdk/dist/node/credentials.js.map +1 -1
- package/sdk/dist/node/index.d.ts +11 -2
- package/sdk/dist/node/index.d.ts.map +1 -1
- package/sdk/dist/node/index.js +26 -1
- package/sdk/dist/node/index.js.map +1 -1
- package/sdk/dist/node/target-profile.d.ts.map +1 -1
- package/sdk/dist/node/target-profile.js +6 -4
- package/sdk/dist/node/target-profile.js.map +1 -1
- package/sdk/dist/project-auth-classification.d.ts +125 -0
- package/sdk/dist/project-auth-classification.d.ts.map +1 -0
- package/sdk/dist/project-auth-classification.js +135 -0
- package/sdk/dist/project-auth-classification.js.map +1 -0
- package/sdk/dist/project-credentials.d.ts +4 -0
- package/sdk/dist/project-credentials.d.ts.map +1 -0
- package/sdk/dist/project-credentials.js +9 -0
- package/sdk/dist/project-credentials.js.map +1 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync, mkdirSync, renameSync, chmodSync, rmdirSync } from "node:fs";
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, renameSync, chmodSync, rmdirSync } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { randomBytes } from "node:crypto";
|
|
4
|
-
import {
|
|
4
|
+
import { getLegacyProjectsPath, getProjectCredentialsPath } from "./config.js";
|
|
5
|
+
import { clearActiveProjectId as clearProfileActiveProjectId, getActiveProjectId as getProfileActiveProjectId, recordMigration, setActiveProjectId as setProfileActiveProjectId, } from "./profile-state.js";
|
|
5
6
|
function withFileLock(path, fn, { retries = 200, delayMs = 20 } = {}) {
|
|
6
7
|
const lockDir = path + ".lock";
|
|
7
8
|
mkdirSync(dirname(path), { recursive: true });
|
|
@@ -29,56 +30,107 @@ function withFileLock(path, fn, { retries = 200, delayMs = 20 } = {}) {
|
|
|
29
30
|
}
|
|
30
31
|
throw new Error(`Could not acquire keystore lock after ${retries} retries: ${lockDir}`);
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
for (const item of parsed) {
|
|
46
|
-
if (item.project_id) {
|
|
47
|
-
projects[item.project_id] = {
|
|
48
|
-
anon_key: item.anon_key,
|
|
49
|
-
service_key: item.service_key,
|
|
50
|
-
...(item.site_url && { site_url: item.site_url }),
|
|
51
|
-
...(item.deployed_at && { deployed_at: item.deployed_at }),
|
|
52
|
-
};
|
|
53
|
-
}
|
|
33
|
+
function normalizeParsedKeyStore(parsed) {
|
|
34
|
+
if (Array.isArray(parsed)) {
|
|
35
|
+
const projects = {};
|
|
36
|
+
for (const item of parsed) {
|
|
37
|
+
if (item.project_id) {
|
|
38
|
+
projects[item.project_id] = {
|
|
39
|
+
anon_key: item.anon_key,
|
|
40
|
+
service_key: item.service_key,
|
|
41
|
+
...(item.site_url && { site_url: item.site_url }),
|
|
42
|
+
...(item.deployed_at && { deployed_at: item.deployed_at }),
|
|
43
|
+
cached_at: new Date().toISOString(),
|
|
44
|
+
source: "legacy_projects_json",
|
|
45
|
+
};
|
|
54
46
|
}
|
|
55
|
-
return { projects };
|
|
56
47
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
48
|
+
return { version: 1, source: "local_cache", projects };
|
|
49
|
+
}
|
|
50
|
+
if (parsed && typeof parsed === "object" && "projects" in parsed) {
|
|
51
|
+
const obj = parsed;
|
|
52
|
+
const rawProjects = obj.projects && typeof obj.projects === "object" && !Array.isArray(obj.projects)
|
|
53
|
+
? obj.projects
|
|
54
|
+
: {};
|
|
55
|
+
const projects = {};
|
|
56
|
+
for (const [id, proj] of Object.entries(rawProjects)) {
|
|
57
|
+
const rec = { ...proj };
|
|
58
|
+
delete rec.tier;
|
|
59
|
+
delete rec.lease_expires_at;
|
|
60
|
+
delete rec.expires_at;
|
|
61
|
+
projects[id] = rec;
|
|
69
62
|
}
|
|
70
|
-
return {
|
|
63
|
+
return {
|
|
64
|
+
version: 1,
|
|
65
|
+
source: "local_cache",
|
|
66
|
+
...(typeof obj.active_project_id === "string" && { active_project_id: obj.active_project_id }),
|
|
67
|
+
...(typeof obj.previous_active_project_id === "string" && { previous_active_project_id: obj.previous_active_project_id }),
|
|
68
|
+
projects,
|
|
69
|
+
...(typeof obj.migrated_from === "string" && { migrated_from: obj.migrated_from }),
|
|
70
|
+
...(typeof obj.migrated_at === "string" && { migrated_at: obj.migrated_at }),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return { version: 1, source: "local_cache", projects: {} };
|
|
74
|
+
}
|
|
75
|
+
function loadParsedKeyStore(path) {
|
|
76
|
+
try {
|
|
77
|
+
return normalizeParsedKeyStore(JSON.parse(readFileSync(path, "utf-8")));
|
|
71
78
|
}
|
|
72
79
|
catch {
|
|
73
|
-
return { projects: {} };
|
|
80
|
+
return { version: 1, source: "local_cache", projects: {} };
|
|
74
81
|
}
|
|
75
82
|
}
|
|
83
|
+
function migrateLegacyProjectsJson(targetPath) {
|
|
84
|
+
const legacyPath = getLegacyProjectsPath();
|
|
85
|
+
if (existsSync(targetPath) || !existsSync(legacyPath))
|
|
86
|
+
return;
|
|
87
|
+
const legacy = loadParsedKeyStore(legacyPath);
|
|
88
|
+
const migratedAt = new Date().toISOString();
|
|
89
|
+
const cache = {
|
|
90
|
+
version: 1,
|
|
91
|
+
source: "local_cache",
|
|
92
|
+
projects: legacy.projects,
|
|
93
|
+
migrated_from: legacyPath,
|
|
94
|
+
migrated_at: migratedAt,
|
|
95
|
+
};
|
|
96
|
+
saveKeyStore(cache, targetPath);
|
|
97
|
+
if (legacy.active_project_id) {
|
|
98
|
+
setProfileActiveProjectId(legacy.active_project_id);
|
|
99
|
+
}
|
|
100
|
+
recordMigration("projects_json_import", {
|
|
101
|
+
legacy_path: legacyPath,
|
|
102
|
+
cache_path: targetPath,
|
|
103
|
+
project_count: Object.keys(legacy.projects).length,
|
|
104
|
+
imported_at: migratedAt,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Load the project-key credential cache from disk.
|
|
109
|
+
* Auto-imports legacy `projects.json` formats into the new cache path when using
|
|
110
|
+
* the default location:
|
|
111
|
+
* - Array format (CLI legacy): [{project_id, ...}] → {projects: {id: {...}}}
|
|
112
|
+
* - Object format: {active_project_id, projects} → credentials cache + state.json
|
|
113
|
+
* - Old metadata fields: tier/expires_at/lease_expires_at are stripped
|
|
114
|
+
*/
|
|
115
|
+
export function loadKeyStore(path) {
|
|
116
|
+
const p = path ?? getProjectCredentialsPath();
|
|
117
|
+
if (!path)
|
|
118
|
+
migrateLegacyProjectsJson(p);
|
|
119
|
+
return loadParsedKeyStore(p);
|
|
120
|
+
}
|
|
76
121
|
export function saveKeyStore(store, path) {
|
|
77
|
-
const p = path ??
|
|
122
|
+
const p = path ?? getProjectCredentialsPath();
|
|
78
123
|
const dir = dirname(p);
|
|
79
124
|
mkdirSync(dir, { recursive: true });
|
|
80
|
-
const
|
|
81
|
-
|
|
125
|
+
const cache = {
|
|
126
|
+
version: 1,
|
|
127
|
+
source: "local_cache",
|
|
128
|
+
...(store.migrated_from ? { migrated_from: store.migrated_from } : {}),
|
|
129
|
+
...(store.migrated_at ? { migrated_at: store.migrated_at } : {}),
|
|
130
|
+
projects: store.projects,
|
|
131
|
+
};
|
|
132
|
+
const tmp = join(dir, `.project-keys.${randomBytes(4).toString("hex")}.tmp`);
|
|
133
|
+
writeFileSync(tmp, JSON.stringify(cache, null, 2), { mode: 0o600 });
|
|
82
134
|
renameSync(tmp, p);
|
|
83
135
|
chmodSync(p, 0o600);
|
|
84
136
|
}
|
|
@@ -87,55 +139,38 @@ export function getProject(projectId, path) {
|
|
|
87
139
|
return store.projects[projectId];
|
|
88
140
|
}
|
|
89
141
|
export function saveProject(projectId, project, path) {
|
|
90
|
-
const p = path ??
|
|
142
|
+
const p = path ?? getProjectCredentialsPath();
|
|
91
143
|
withFileLock(p, () => {
|
|
92
144
|
const store = loadKeyStore(p);
|
|
93
|
-
store.projects[projectId] = project;
|
|
145
|
+
store.projects[projectId] = { ...project, cached_at: project.cached_at ?? new Date().toISOString() };
|
|
94
146
|
saveKeyStore(store, p);
|
|
95
147
|
});
|
|
96
148
|
}
|
|
97
149
|
export function updateProject(projectId, update, path) {
|
|
98
|
-
const p = path ??
|
|
150
|
+
const p = path ?? getProjectCredentialsPath();
|
|
99
151
|
withFileLock(p, () => {
|
|
100
152
|
const store = loadKeyStore(p);
|
|
101
153
|
const existing = store.projects[projectId];
|
|
102
154
|
if (existing) {
|
|
103
|
-
store.projects[projectId] = { ...existing, ...update };
|
|
155
|
+
store.projects[projectId] = { ...existing, ...update, cached_at: existing.cached_at ?? new Date().toISOString() };
|
|
104
156
|
saveKeyStore(store, p);
|
|
105
157
|
}
|
|
106
158
|
});
|
|
107
159
|
}
|
|
108
160
|
export function removeProject(projectId, path) {
|
|
109
|
-
const p = path ??
|
|
161
|
+
const p = path ?? getProjectCredentialsPath();
|
|
110
162
|
withFileLock(p, () => {
|
|
111
163
|
const store = loadKeyStore(p);
|
|
112
164
|
delete store.projects[projectId];
|
|
113
|
-
if (store.active_project_id === projectId) {
|
|
114
|
-
const fallback = store.previous_active_project_id;
|
|
115
|
-
if (fallback && fallback !== projectId && store.projects[fallback]) {
|
|
116
|
-
store.active_project_id = fallback;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
delete store.active_project_id;
|
|
120
|
-
}
|
|
121
|
-
delete store.previous_active_project_id;
|
|
122
|
-
}
|
|
123
165
|
saveKeyStore(store, p);
|
|
124
166
|
});
|
|
167
|
+
if (!path)
|
|
168
|
+
clearProfileActiveProjectId(projectId);
|
|
125
169
|
}
|
|
126
170
|
export function getActiveProjectId(path) {
|
|
127
|
-
|
|
128
|
-
return store.active_project_id;
|
|
171
|
+
return getProfileActiveProjectId(path);
|
|
129
172
|
}
|
|
130
173
|
export function setActiveProjectId(projectId, path) {
|
|
131
|
-
|
|
132
|
-
withFileLock(p, () => {
|
|
133
|
-
const store = loadKeyStore(p);
|
|
134
|
-
if (store.active_project_id && store.active_project_id !== projectId) {
|
|
135
|
-
store.previous_active_project_id = store.active_project_id;
|
|
136
|
-
}
|
|
137
|
-
store.active_project_id = projectId;
|
|
138
|
-
saveKeyStore(store, p);
|
|
139
|
-
});
|
|
174
|
+
setProfileActiveProjectId(projectId, path);
|
|
140
175
|
}
|
|
141
176
|
//# sourceMappingURL=keystore.js.map
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync, renameSync, chmodSync, rmdirSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { randomBytes } from "node:crypto";
|
|
4
|
+
import { getActiveProfile, getApiBase, getProfileStatePath } from "./config.js";
|
|
5
|
+
function withFileLock(path, fn, { retries = 200, delayMs = 20 } = {}) {
|
|
6
|
+
const lockDir = path + ".lock";
|
|
7
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
8
|
+
for (let i = 0; i < retries; i++) {
|
|
9
|
+
try {
|
|
10
|
+
mkdirSync(lockDir, { mode: 0o700 });
|
|
11
|
+
}
|
|
12
|
+
catch (e) {
|
|
13
|
+
const code = e.code;
|
|
14
|
+
if (code !== "EEXIST")
|
|
15
|
+
throw e;
|
|
16
|
+
const until = Date.now() + delayMs;
|
|
17
|
+
while (Date.now() < until) { /* spin */ }
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
return fn();
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
try {
|
|
25
|
+
rmdirSync(lockDir);
|
|
26
|
+
}
|
|
27
|
+
catch { /* best-effort */ }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
throw new Error(`Could not acquire profile-state lock after ${retries} retries: ${lockDir}`);
|
|
31
|
+
}
|
|
32
|
+
export function loadProfileState(path) {
|
|
33
|
+
const p = path ?? getProfileStatePath();
|
|
34
|
+
try {
|
|
35
|
+
const parsed = JSON.parse(readFileSync(p, "utf-8"));
|
|
36
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
37
|
+
return {};
|
|
38
|
+
return parsed;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function saveProfileState(state, path) {
|
|
45
|
+
const p = path ?? getProfileStatePath();
|
|
46
|
+
const dir = dirname(p);
|
|
47
|
+
mkdirSync(dir, { recursive: true });
|
|
48
|
+
const tmp = join(dir, `.state.${randomBytes(4).toString("hex")}.tmp`);
|
|
49
|
+
writeFileSync(tmp, JSON.stringify({ version: 1, ...state }, null, 2), { mode: 0o600 });
|
|
50
|
+
renameSync(tmp, p);
|
|
51
|
+
chmodSync(p, 0o600);
|
|
52
|
+
}
|
|
53
|
+
export function defaultActiveProjectScope(scope = {}) {
|
|
54
|
+
return {
|
|
55
|
+
api_base: scope.api_base ?? getApiBase(),
|
|
56
|
+
profile: scope.profile ?? getActiveProfile(),
|
|
57
|
+
principal: scope.principal ?? null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export function activeProjectScopeKey(scope = {}) {
|
|
61
|
+
const resolved = defaultActiveProjectScope(scope);
|
|
62
|
+
return JSON.stringify({
|
|
63
|
+
api_base: resolved.api_base,
|
|
64
|
+
profile: resolved.profile,
|
|
65
|
+
principal: resolved.principal ?? "unknown",
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function getActiveProjectId(path, scope = {}) {
|
|
69
|
+
const state = loadProfileState(path);
|
|
70
|
+
const key = activeProjectScopeKey(scope);
|
|
71
|
+
return state.active_projects?.[key]?.project_id ?? state.active_project_id;
|
|
72
|
+
}
|
|
73
|
+
export function setActiveProjectId(projectId, path, scope = {}) {
|
|
74
|
+
const p = path ?? getProfileStatePath();
|
|
75
|
+
withFileLock(p, () => {
|
|
76
|
+
const state = loadProfileState(p);
|
|
77
|
+
const key = activeProjectScopeKey(scope);
|
|
78
|
+
const resolved = defaultActiveProjectScope(scope);
|
|
79
|
+
const current = state.active_projects?.[key]?.project_id ?? state.active_project_id;
|
|
80
|
+
const previous = current && current !== projectId ? current : undefined;
|
|
81
|
+
state.active_projects = state.active_projects ?? {};
|
|
82
|
+
state.active_projects[key] = {
|
|
83
|
+
project_id: projectId,
|
|
84
|
+
...(previous ? { previous_project_id: previous } : {}),
|
|
85
|
+
api_base: resolved.api_base,
|
|
86
|
+
principal: resolved.principal ?? null,
|
|
87
|
+
profile: resolved.profile,
|
|
88
|
+
updated_at: new Date().toISOString(),
|
|
89
|
+
};
|
|
90
|
+
state.active_project_id = projectId;
|
|
91
|
+
if (previous)
|
|
92
|
+
state.previous_active_project_id = previous;
|
|
93
|
+
else
|
|
94
|
+
delete state.previous_active_project_id;
|
|
95
|
+
saveProfileState(state, p);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
export function clearActiveProjectId(projectId, path, scope = {}) {
|
|
99
|
+
const p = path ?? getProfileStatePath();
|
|
100
|
+
withFileLock(p, () => {
|
|
101
|
+
const state = loadProfileState(p);
|
|
102
|
+
const key = activeProjectScopeKey(scope);
|
|
103
|
+
const scoped = state.active_projects?.[key];
|
|
104
|
+
if (scoped?.project_id === projectId && state.active_projects) {
|
|
105
|
+
if (scoped.previous_project_id) {
|
|
106
|
+
state.active_projects[key] = {
|
|
107
|
+
...scoped,
|
|
108
|
+
project_id: scoped.previous_project_id,
|
|
109
|
+
previous_project_id: undefined,
|
|
110
|
+
updated_at: new Date().toISOString(),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
delete state.active_projects[key];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (state.active_project_id === projectId) {
|
|
118
|
+
if (state.previous_active_project_id && state.previous_active_project_id !== projectId) {
|
|
119
|
+
state.active_project_id = state.previous_active_project_id;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
delete state.active_project_id;
|
|
123
|
+
}
|
|
124
|
+
delete state.previous_active_project_id;
|
|
125
|
+
}
|
|
126
|
+
saveProfileState(state, p);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
export function recordMigration(marker, value, path) {
|
|
130
|
+
const p = path ?? getProfileStatePath();
|
|
131
|
+
withFileLock(p, () => {
|
|
132
|
+
const state = loadProfileState(p);
|
|
133
|
+
state.migrations = { ...(state.migrations ?? {}), [marker]: value };
|
|
134
|
+
saveProfileState(state, p);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=profile-state.js.map
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Credential provider interface for the Run402 SDK.
|
|
3
3
|
*
|
|
4
4
|
* The SDK's request kernel calls `getAuth` before each request to obtain
|
|
5
|
-
* signed auth headers, and `
|
|
6
|
-
* keys. All filesystem, environment, and session-state access
|
|
7
|
-
* provider implementations — never in the kernel.
|
|
5
|
+
* signed auth headers, and `getProjectCredentials` to resolve per-project
|
|
6
|
+
* anon/service keys. All filesystem, environment, and session-state access
|
|
7
|
+
* lives inside provider implementations — never in the kernel.
|
|
8
8
|
*
|
|
9
9
|
* Node consumers use {@link NodeCredentialsProvider} from `@run402/sdk/node`
|
|
10
10
|
* which wraps the local keystore + allowance. Sandbox consumers supply their
|
|
11
11
|
* own implementation bound to a session token issued by the supervisor.
|
|
12
12
|
*
|
|
13
|
-
* The two required methods (`getAuth`, `
|
|
13
|
+
* The two required methods (`getAuth`, `getProjectCredentials`) support every API call.
|
|
14
14
|
* The optional methods let providers opt in to local persistence (keystore
|
|
15
15
|
* writes, active-project tracking). Namespace methods that need a missing
|
|
16
16
|
* optional method throw a descriptive error at runtime.
|
|
@@ -23,6 +23,13 @@ export interface ProjectKeys {
|
|
|
23
23
|
last_deployment_id?: string;
|
|
24
24
|
mailbox_id?: string;
|
|
25
25
|
mailbox_address?: string;
|
|
26
|
+
cached_at?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ProjectCredentialCacheInfo {
|
|
29
|
+
source: "local_cache";
|
|
30
|
+
cache_path?: string;
|
|
31
|
+
wallet?: string;
|
|
32
|
+
profile?: string;
|
|
26
33
|
}
|
|
27
34
|
export interface AllowanceData {
|
|
28
35
|
address: string;
|
|
@@ -78,10 +85,18 @@ export interface CredentialsProvider {
|
|
|
78
85
|
*/
|
|
79
86
|
getAuth(path: string, metadata?: AuthRequestMeta): Promise<Record<string, string> | null>;
|
|
80
87
|
/**
|
|
81
|
-
* Resolve the anon/service keys for a project. Returns null
|
|
82
|
-
*
|
|
88
|
+
* Resolve the anon/service keys for a project. Returns null when local
|
|
89
|
+
* credentials are absent. This is a credential-cache lookup, not a project
|
|
90
|
+
* existence check.
|
|
91
|
+
*/
|
|
92
|
+
getProjectCredentials?(id: string): Promise<ProjectKeys | null>;
|
|
93
|
+
/**
|
|
94
|
+
* @deprecated Use `getProjectCredentials`. This alias is retained only for
|
|
95
|
+
* older custom providers; first-party SDK code must use the explicit name.
|
|
83
96
|
*/
|
|
84
|
-
getProject(id: string): Promise<ProjectKeys | null>;
|
|
97
|
+
getProject?(id: string): Promise<ProjectKeys | null>;
|
|
98
|
+
/** List locally cached project credentials. Optional and local-cache only; not project inventory. */
|
|
99
|
+
listProjectCredentials?(): Promise<Record<string, ProjectKeys>>;
|
|
85
100
|
/**
|
|
86
101
|
* Persist project keys after a successful provision or deploy. Optional:
|
|
87
102
|
* providers without local storage (pure session providers) may omit this.
|
|
@@ -103,6 +118,8 @@ export interface CredentialsProvider {
|
|
|
103
118
|
createAllowance?(): Promise<AllowanceData>;
|
|
104
119
|
/** Return the absolute path to the local allowance file, for diagnostic output. Optional. */
|
|
105
120
|
getAllowancePath?(): string;
|
|
121
|
+
/** Return safe provenance for the local project credential cache. Optional. */
|
|
122
|
+
getProjectCredentialCacheInfo?(): ProjectCredentialCacheInfo;
|
|
106
123
|
/**
|
|
107
124
|
* Return the active wallet's display identity (local name + address + cached
|
|
108
125
|
* server label). The Node provider derives this from the active profile;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/credentials.js
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Credential provider interface for the Run402 SDK.
|
|
3
3
|
*
|
|
4
4
|
* The SDK's request kernel calls `getAuth` before each request to obtain
|
|
5
|
-
* signed auth headers, and `
|
|
6
|
-
* keys. All filesystem, environment, and session-state access
|
|
7
|
-
* provider implementations — never in the kernel.
|
|
5
|
+
* signed auth headers, and `getProjectCredentials` to resolve per-project
|
|
6
|
+
* anon/service keys. All filesystem, environment, and session-state access
|
|
7
|
+
* lives inside provider implementations — never in the kernel.
|
|
8
8
|
*
|
|
9
9
|
* Node consumers use {@link NodeCredentialsProvider} from `@run402/sdk/node`
|
|
10
10
|
* which wraps the local keystore + allowance. Sandbox consumers supply their
|
|
11
11
|
* own implementation bound to a session token issued by the supervisor.
|
|
12
12
|
*
|
|
13
|
-
* The two required methods (`getAuth`, `
|
|
13
|
+
* The two required methods (`getAuth`, `getProjectCredentials`) support every API call.
|
|
14
14
|
* The optional methods let providers opt in to local persistence (keystore
|
|
15
15
|
* writes, active-project tracking). Namespace methods that need a missing
|
|
16
16
|
* optional method throw a descriptive error at runtime.
|
package/sdk/dist/errors.d.ts
CHANGED
|
@@ -166,7 +166,7 @@ export declare class LocalError extends Run402Error {
|
|
|
166
166
|
* @param message Human-readable error message.
|
|
167
167
|
* @param context Short verb phrase identifying the operation (used for triage).
|
|
168
168
|
* @param opts Optional. Pass a raw `unknown` for back-compat (treated as `cause`),
|
|
169
|
-
* or an options bag `{ cause?, code?, details? }` to thread a stable error
|
|
169
|
+
* or an options bag `{ cause?, code?, details?, next_actions? }` to thread a stable error
|
|
170
170
|
* `code` (mirrors a gateway error code so client-side validators throw with
|
|
171
171
|
* the same `code` field consumers branch on).
|
|
172
172
|
*/
|
|
@@ -174,8 +174,16 @@ export declare class LocalError extends Run402Error {
|
|
|
174
174
|
cause?: unknown;
|
|
175
175
|
code?: string;
|
|
176
176
|
details?: unknown;
|
|
177
|
+
next_actions?: unknown[];
|
|
177
178
|
});
|
|
178
179
|
}
|
|
180
|
+
/** Local credential-cache miss — the project may exist, but no cached keys are available locally. */
|
|
181
|
+
export declare class ProjectCredentialNotFound extends LocalError {
|
|
182
|
+
readonly projectId: string;
|
|
183
|
+
constructor(projectId: string, context: string, details?: Record<string, unknown>);
|
|
184
|
+
}
|
|
185
|
+
export declare const PROJECT_CREDENTIAL_ERROR_CODES: readonly ["PROJECT_CREDENTIAL_NOT_FOUND", "PROJECT_CREDENTIAL_INVALID", "PROJECT_CREDENTIAL_EXPIRED", "PROJECT_CREDENTIAL_PROJECT_MISMATCH"];
|
|
186
|
+
export type ProjectCredentialErrorCode = typeof PROJECT_CREDENTIAL_ERROR_CODES[number];
|
|
179
187
|
/**
|
|
180
188
|
* Deploy-state-machine failure surfaced from the v2 deploy flow. Carries the
|
|
181
189
|
* structured error envelope the gateway returns alongside the operation
|
|
@@ -349,6 +357,24 @@ export declare function isRun402Error(e: unknown): e is Run402Error;
|
|
|
349
357
|
export declare function isPaymentRequired(e: unknown): e is PaymentRequired;
|
|
350
358
|
/** True if `e` is a {@link ProjectNotFound}. */
|
|
351
359
|
export declare function isProjectNotFound(e: unknown): e is ProjectNotFound;
|
|
360
|
+
/** True if `e` is a local project credential-cache miss. */
|
|
361
|
+
export declare function isProjectCredentialNotFound(e: unknown): e is ProjectCredentialNotFound;
|
|
362
|
+
/** True if `e` carries any stable project-credential error code. */
|
|
363
|
+
export declare function isProjectCredentialError(e: unknown): e is Run402Error & {
|
|
364
|
+
code: ProjectCredentialErrorCode;
|
|
365
|
+
};
|
|
366
|
+
/** True if cached or supplied project credentials were rejected as invalid. */
|
|
367
|
+
export declare function isProjectCredentialInvalid(e: unknown): e is Run402Error & {
|
|
368
|
+
code: "PROJECT_CREDENTIAL_INVALID";
|
|
369
|
+
};
|
|
370
|
+
/** True if cached or supplied project credentials were rejected as expired. */
|
|
371
|
+
export declare function isProjectCredentialExpired(e: unknown): e is Run402Error & {
|
|
372
|
+
code: "PROJECT_CREDENTIAL_EXPIRED";
|
|
373
|
+
};
|
|
374
|
+
/** True if service-key auth was supplied for a different explicit project id. */
|
|
375
|
+
export declare function isProjectCredentialProjectMismatch(e: unknown): e is Run402Error & {
|
|
376
|
+
code: "PROJECT_CREDENTIAL_PROJECT_MISMATCH";
|
|
377
|
+
};
|
|
352
378
|
/** True if `e` is an {@link Unauthorized}. */
|
|
353
379
|
export declare function isUnauthorized(e: unknown): e is Unauthorized;
|
|
354
380
|
/** True if `e` is a {@link NotAuthorizedError} (org-owned control-plane denial, gateway v1.77+). */
|
package/sdk/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/errors.js
CHANGED
|
@@ -258,7 +258,7 @@ export class LocalError extends Run402Error {
|
|
|
258
258
|
* @param message Human-readable error message.
|
|
259
259
|
* @param context Short verb phrase identifying the operation (used for triage).
|
|
260
260
|
* @param opts Optional. Pass a raw `unknown` for back-compat (treated as `cause`),
|
|
261
|
-
* or an options bag `{ cause?, code?, details? }` to thread a stable error
|
|
261
|
+
* or an options bag `{ cause?, code?, details?, next_actions? }` to thread a stable error
|
|
262
262
|
* `code` (mirrors a gateway error code so client-side validators throw with
|
|
263
263
|
* the same `code` field consumers branch on).
|
|
264
264
|
*/
|
|
@@ -266,16 +266,19 @@ export class LocalError extends Run402Error {
|
|
|
266
266
|
const bag = opts && typeof opts === "object" && !Array.isArray(opts) &&
|
|
267
267
|
("cause" in opts ||
|
|
268
268
|
"code" in opts ||
|
|
269
|
-
"details" in opts
|
|
269
|
+
"details" in opts ||
|
|
270
|
+
"next_actions" in opts)
|
|
270
271
|
? opts
|
|
271
272
|
: null;
|
|
272
273
|
const code = bag?.code;
|
|
273
274
|
const details = bag?.details;
|
|
275
|
+
const nextActions = bag?.next_actions;
|
|
274
276
|
const cause = bag ? bag.cause : opts;
|
|
275
|
-
const envelope = code !== undefined || details !== undefined
|
|
277
|
+
const envelope = code !== undefined || details !== undefined || nextActions !== undefined
|
|
276
278
|
? {
|
|
277
279
|
...(code !== undefined ? { code } : {}),
|
|
278
280
|
...(details !== undefined ? { details } : {}),
|
|
281
|
+
...(nextActions !== undefined ? { next_actions: nextActions } : {}),
|
|
279
282
|
}
|
|
280
283
|
: null;
|
|
281
284
|
super(message, null, envelope, context);
|
|
@@ -283,6 +286,41 @@ export class LocalError extends Run402Error {
|
|
|
283
286
|
this.cause = cause;
|
|
284
287
|
}
|
|
285
288
|
}
|
|
289
|
+
/** Local credential-cache miss — the project may exist, but no cached keys are available locally. */
|
|
290
|
+
export class ProjectCredentialNotFound extends LocalError {
|
|
291
|
+
projectId;
|
|
292
|
+
constructor(projectId, context, details = {}) {
|
|
293
|
+
super(`No local project credentials cached for ${projectId}`, context, {
|
|
294
|
+
code: "PROJECT_CREDENTIAL_NOT_FOUND",
|
|
295
|
+
details: {
|
|
296
|
+
project_id: projectId,
|
|
297
|
+
source: "local_cache",
|
|
298
|
+
...details,
|
|
299
|
+
},
|
|
300
|
+
next_actions: [
|
|
301
|
+
{
|
|
302
|
+
type: "run_command",
|
|
303
|
+
command: `run402 credentials project-keys status --project ${projectId}`,
|
|
304
|
+
why: "Inspect whether this profile has cached project keys without revealing secrets.",
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
type: "run_command",
|
|
308
|
+
command: `run402 credentials project-keys import --project ${projectId} --service-key-stdin`,
|
|
309
|
+
why: "Import a service key only when this operation is classified as credential-required.",
|
|
310
|
+
},
|
|
311
|
+
],
|
|
312
|
+
});
|
|
313
|
+
this.name = "ProjectCredentialNotFound";
|
|
314
|
+
this.projectId = projectId;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
export const PROJECT_CREDENTIAL_ERROR_CODES = [
|
|
318
|
+
"PROJECT_CREDENTIAL_NOT_FOUND",
|
|
319
|
+
"PROJECT_CREDENTIAL_INVALID",
|
|
320
|
+
"PROJECT_CREDENTIAL_EXPIRED",
|
|
321
|
+
"PROJECT_CREDENTIAL_PROJECT_MISMATCH",
|
|
322
|
+
];
|
|
323
|
+
const PROJECT_CREDENTIAL_ERROR_CODE_SET = new Set(PROJECT_CREDENTIAL_ERROR_CODES);
|
|
286
324
|
export class Run402DeployError extends Run402Error {
|
|
287
325
|
kind = "deploy_error";
|
|
288
326
|
code;
|
|
@@ -544,6 +582,26 @@ export function isPaymentRequired(e) {
|
|
|
544
582
|
export function isProjectNotFound(e) {
|
|
545
583
|
return isRun402Error(e) && e.kind === "project_not_found";
|
|
546
584
|
}
|
|
585
|
+
/** True if `e` is a local project credential-cache miss. */
|
|
586
|
+
export function isProjectCredentialNotFound(e) {
|
|
587
|
+
return isLocalError(e) && e.code === "PROJECT_CREDENTIAL_NOT_FOUND";
|
|
588
|
+
}
|
|
589
|
+
/** True if `e` carries any stable project-credential error code. */
|
|
590
|
+
export function isProjectCredentialError(e) {
|
|
591
|
+
return isRun402Error(e) && typeof e.code === "string" && PROJECT_CREDENTIAL_ERROR_CODE_SET.has(e.code);
|
|
592
|
+
}
|
|
593
|
+
/** True if cached or supplied project credentials were rejected as invalid. */
|
|
594
|
+
export function isProjectCredentialInvalid(e) {
|
|
595
|
+
return isRun402Error(e) && e.code === "PROJECT_CREDENTIAL_INVALID";
|
|
596
|
+
}
|
|
597
|
+
/** True if cached or supplied project credentials were rejected as expired. */
|
|
598
|
+
export function isProjectCredentialExpired(e) {
|
|
599
|
+
return isRun402Error(e) && e.code === "PROJECT_CREDENTIAL_EXPIRED";
|
|
600
|
+
}
|
|
601
|
+
/** True if service-key auth was supplied for a different explicit project id. */
|
|
602
|
+
export function isProjectCredentialProjectMismatch(e) {
|
|
603
|
+
return isRun402Error(e) && e.code === "PROJECT_CREDENTIAL_PROJECT_MISMATCH";
|
|
604
|
+
}
|
|
547
605
|
/** True if `e` is an {@link Unauthorized}. */
|
|
548
606
|
export function isUnauthorized(e) {
|
|
549
607
|
return isRun402Error(e) && e.kind === "unauthorized";
|