run402 2.1.0 → 2.2.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 +11 -0
- package/cli.mjs +7 -0
- package/lib/jobs.mjs +308 -0
- package/package.json +1 -1
- package/sdk/dist/index.d.ts +3 -0
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +3 -0
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/namespaces/deploy.js +20 -5
- package/sdk/dist/namespaces/deploy.js.map +1 -1
- package/sdk/dist/namespaces/jobs.d.ts +74 -0
- package/sdk/dist/namespaces/jobs.d.ts.map +1 -0
- package/sdk/dist/namespaces/jobs.js +82 -0
- package/sdk/dist/namespaces/jobs.js.map +1 -0
- package/sdk/dist/scoped.d.ts +11 -0
- package/sdk/dist/scoped.d.ts.map +1 -1
- package/sdk/dist/scoped.js +22 -0
- package/sdk/dist/scoped.js.map +1 -1
package/README.md
CHANGED
|
@@ -143,6 +143,17 @@ run402 deploy apply --manifest run402.deploy.json # manifest uses secrets.requ
|
|
|
143
143
|
|
|
144
144
|
Secret values are write-only. `list` returns keys and timestamps only; deploy manifests should declare dependencies with `secrets.require` and never contain values.
|
|
145
145
|
|
|
146
|
+
### Jobs
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
run402 jobs submit --file job.json --project prj_...
|
|
150
|
+
run402 jobs get job_abc123 --project prj_...
|
|
151
|
+
run402 jobs logs job_abc123 --project prj_... --tail 100
|
|
152
|
+
run402 jobs cancel job_abc123 --project prj_...
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Jobs are fixed platform-managed runners, not arbitrary Docker execution. Submit the gateway-shaped JSON request (`job_type`, `input["input.json"]`, `max_cost_usd_micros`) and the CLI handles the required idempotency header through the SDK.
|
|
156
|
+
|
|
146
157
|
### Email
|
|
147
158
|
|
|
148
159
|
```bash
|
package/cli.mjs
CHANGED
|
@@ -27,6 +27,7 @@ Commands:
|
|
|
27
27
|
projects Manage projects (provision, list, query, inspect, delete)
|
|
28
28
|
deploy Unified deploy operations (requires active tier)
|
|
29
29
|
ci Link GitHub Actions OIDC deploy bindings
|
|
30
|
+
jobs Submit and inspect fixed platform-managed jobs
|
|
30
31
|
functions Manage serverless functions (deploy, invoke, logs, list, delete)
|
|
31
32
|
secrets Manage project secrets (set, list, delete)
|
|
32
33
|
assets Direct-to-S3 asset storage (put, get, ls, rm, sign, diagnose) — up to 5 TiB
|
|
@@ -52,6 +53,7 @@ Examples:
|
|
|
52
53
|
run402 allowance create
|
|
53
54
|
run402 allowance fund
|
|
54
55
|
run402 deploy apply --manifest app.json
|
|
56
|
+
run402 jobs submit --file job.json
|
|
55
57
|
run402 projects list
|
|
56
58
|
run402 projects sql <project_id> "SELECT * FROM users LIMIT 5"
|
|
57
59
|
run402 functions deploy <project_id> my-fn --file handler.ts
|
|
@@ -129,6 +131,11 @@ switch (cmd) {
|
|
|
129
131
|
await run(sub, rest);
|
|
130
132
|
break;
|
|
131
133
|
}
|
|
134
|
+
case "jobs": {
|
|
135
|
+
const { run } = await import("./lib/jobs.mjs");
|
|
136
|
+
await run(sub, rest);
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
132
139
|
case "functions": {
|
|
133
140
|
const { run } = await import("./lib/functions.mjs");
|
|
134
141
|
await run(sub, rest);
|
package/lib/jobs.mjs
ADDED
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
|
|
3
|
+
import { getSdk } from "./sdk.mjs";
|
|
4
|
+
import { resolveProjectId } from "./config.mjs";
|
|
5
|
+
import { reportSdkError, fail } from "./sdk-errors.mjs";
|
|
6
|
+
import {
|
|
7
|
+
assertKnownFlags,
|
|
8
|
+
flagValue,
|
|
9
|
+
normalizeArgv,
|
|
10
|
+
parseIntegerFlag,
|
|
11
|
+
requirePositionalCount,
|
|
12
|
+
validateRegularFile,
|
|
13
|
+
} from "./argparse.mjs";
|
|
14
|
+
|
|
15
|
+
const HELP = `run402 jobs — Submit and inspect fixed platform-managed jobs
|
|
16
|
+
|
|
17
|
+
Usage:
|
|
18
|
+
run402 jobs <subcommand> [args...] [options]
|
|
19
|
+
|
|
20
|
+
Subcommands:
|
|
21
|
+
submit --file <path>|--stdin Submit a managed job request
|
|
22
|
+
get <job_id> Get a job run
|
|
23
|
+
logs <job_id> Read job logs
|
|
24
|
+
cancel <job_id> Cancel a queued or running job
|
|
25
|
+
|
|
26
|
+
Examples:
|
|
27
|
+
run402 jobs submit --file job.json
|
|
28
|
+
cat job.json | run402 jobs submit --stdin --project prj_abc123
|
|
29
|
+
run402 jobs get job_abc123
|
|
30
|
+
run402 jobs logs job_abc123 --tail 100
|
|
31
|
+
run402 jobs cancel job_abc123
|
|
32
|
+
|
|
33
|
+
Notes:
|
|
34
|
+
- --project defaults to the active project from 'run402 projects use'
|
|
35
|
+
- Submit requests must match the gateway jobs API shape
|
|
36
|
+
`;
|
|
37
|
+
|
|
38
|
+
const SUB_HELP = {
|
|
39
|
+
submit: `run402 jobs submit — Submit a managed job request
|
|
40
|
+
|
|
41
|
+
Usage:
|
|
42
|
+
run402 jobs submit --file <path> [--project <id>]
|
|
43
|
+
run402 jobs submit --stdin [--project <id>]
|
|
44
|
+
|
|
45
|
+
Options:
|
|
46
|
+
--file <path> Read the JSON submit request from a file
|
|
47
|
+
--stdin Read the JSON submit request from stdin
|
|
48
|
+
--project <id> Project ID (defaults to the active project)
|
|
49
|
+
|
|
50
|
+
Example request:
|
|
51
|
+
{
|
|
52
|
+
"job_type": "kysigned.fflonk_prove.v0_17_0",
|
|
53
|
+
"input": { "input.json": {} },
|
|
54
|
+
"max_cost_usd_micros": 50000
|
|
55
|
+
}
|
|
56
|
+
`,
|
|
57
|
+
get: `run402 jobs get — Get a managed job run
|
|
58
|
+
|
|
59
|
+
Usage:
|
|
60
|
+
run402 jobs get <job_id> [--project <id>]
|
|
61
|
+
|
|
62
|
+
Options:
|
|
63
|
+
--project <id> Project ID (defaults to the active project)
|
|
64
|
+
`,
|
|
65
|
+
logs: `run402 jobs logs — Read managed job logs
|
|
66
|
+
|
|
67
|
+
Usage:
|
|
68
|
+
run402 jobs logs <job_id> [--project <id>] [--tail <n>] [--since <epoch_ms>]
|
|
69
|
+
|
|
70
|
+
Options:
|
|
71
|
+
--project <id> Project ID (defaults to the active project)
|
|
72
|
+
--tail <n> Maximum entries to return (gateway max: 1000)
|
|
73
|
+
--since <ms> Only include logs at or after this epoch millisecond timestamp
|
|
74
|
+
`,
|
|
75
|
+
cancel: `run402 jobs cancel — Cancel a managed job run
|
|
76
|
+
|
|
77
|
+
Usage:
|
|
78
|
+
run402 jobs cancel <job_id> [--project <id>]
|
|
79
|
+
|
|
80
|
+
Options:
|
|
81
|
+
--project <id> Project ID (defaults to the active project)
|
|
82
|
+
`,
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const PROJECT_FLAGS = ["--project"];
|
|
86
|
+
|
|
87
|
+
function parseJsonRequest(raw, source) {
|
|
88
|
+
let parsed;
|
|
89
|
+
try {
|
|
90
|
+
parsed = JSON.parse(raw);
|
|
91
|
+
} catch (err) {
|
|
92
|
+
fail({
|
|
93
|
+
code: "BAD_JSON",
|
|
94
|
+
message: `${source} is not valid JSON`,
|
|
95
|
+
details: {
|
|
96
|
+
source,
|
|
97
|
+
parse_error: err instanceof Error ? err.message : String(err),
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
102
|
+
fail({
|
|
103
|
+
code: "BAD_JSON",
|
|
104
|
+
message: `${source} must contain a JSON object`,
|
|
105
|
+
details: { source },
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return parsed;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async function readStdinText() {
|
|
112
|
+
if (process.stdin?.isTTY) {
|
|
113
|
+
fail({
|
|
114
|
+
code: "BAD_USAGE",
|
|
115
|
+
message: "Missing JSON request on stdin.",
|
|
116
|
+
hint: "Pipe a job request JSON object, or use --file <path>.",
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
const chunks = [];
|
|
120
|
+
for await (const chunk of process.stdin) {
|
|
121
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
|
|
122
|
+
}
|
|
123
|
+
if (chunks.length === 0) {
|
|
124
|
+
fail({
|
|
125
|
+
code: "BAD_USAGE",
|
|
126
|
+
message: "Missing JSON request on stdin.",
|
|
127
|
+
hint: "Pipe a job request JSON object, or use --file <path>.",
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return Buffer.concat(chunks).toString("utf-8");
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
async function readSubmitRequest(args) {
|
|
134
|
+
const file = flagValue(args, "--file");
|
|
135
|
+
const stdin = args.includes("--stdin");
|
|
136
|
+
if (file && stdin) {
|
|
137
|
+
fail({
|
|
138
|
+
code: "BAD_USAGE",
|
|
139
|
+
message: "Provide exactly one request source.",
|
|
140
|
+
hint: "Use either --file <path> or --stdin.",
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
if (!file && !stdin) {
|
|
144
|
+
fail({
|
|
145
|
+
code: "BAD_USAGE",
|
|
146
|
+
message: "Missing job request source.",
|
|
147
|
+
hint: "Use --file <path> or --stdin.",
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (file) {
|
|
151
|
+
validateRegularFile(file, "--file");
|
|
152
|
+
return parseJsonRequest(readFileSync(file, "utf-8"), file);
|
|
153
|
+
}
|
|
154
|
+
return parseJsonRequest(await readStdinText(), "stdin");
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async function submit(args = []) {
|
|
158
|
+
const parsed = normalizeArgv(args);
|
|
159
|
+
const valueFlags = ["--file", "--project"];
|
|
160
|
+
assertKnownFlags(parsed, ["--file", "--stdin", "--project", "--help", "-h"], valueFlags);
|
|
161
|
+
requirePositionalCount(parsed, valueFlags, {
|
|
162
|
+
max: 0,
|
|
163
|
+
command: "run402 jobs submit",
|
|
164
|
+
});
|
|
165
|
+
const projectId = resolveProjectId(flagValue(parsed, "--project"));
|
|
166
|
+
const request = await readSubmitRequest(parsed);
|
|
167
|
+
|
|
168
|
+
try {
|
|
169
|
+
const result = await getSdk().jobs.submit(projectId, request);
|
|
170
|
+
console.log(JSON.stringify(result, null, 2));
|
|
171
|
+
} catch (err) {
|
|
172
|
+
reportSdkError(err);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async function get(jobId, args = []) {
|
|
177
|
+
const parsed = normalizeArgv(args);
|
|
178
|
+
assertKnownFlags(parsed, ["--project", "--help", "-h"], PROJECT_FLAGS);
|
|
179
|
+
if (!jobId) {
|
|
180
|
+
fail({
|
|
181
|
+
code: "BAD_USAGE",
|
|
182
|
+
message: "Missing job_id.",
|
|
183
|
+
hint: "Use `run402 jobs get <job_id>`.",
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
requirePositionalCount(parsed, PROJECT_FLAGS, {
|
|
187
|
+
max: 0,
|
|
188
|
+
command: "run402 jobs get <job_id>",
|
|
189
|
+
});
|
|
190
|
+
const projectId = resolveProjectId(flagValue(parsed, "--project"));
|
|
191
|
+
|
|
192
|
+
try {
|
|
193
|
+
const result = await getSdk().jobs.get(projectId, jobId);
|
|
194
|
+
console.log(JSON.stringify(result, null, 2));
|
|
195
|
+
} catch (err) {
|
|
196
|
+
reportSdkError(err);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
async function logs(jobId, args = []) {
|
|
201
|
+
const parsed = normalizeArgv(args);
|
|
202
|
+
const valueFlags = ["--project", "--tail", "--since"];
|
|
203
|
+
assertKnownFlags(parsed, ["--project", "--tail", "--since", "--help", "-h"], valueFlags);
|
|
204
|
+
if (!jobId) {
|
|
205
|
+
fail({
|
|
206
|
+
code: "BAD_USAGE",
|
|
207
|
+
message: "Missing job_id.",
|
|
208
|
+
hint: "Use `run402 jobs logs <job_id>`.",
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
requirePositionalCount(parsed, valueFlags, {
|
|
212
|
+
max: 0,
|
|
213
|
+
command: "run402 jobs logs <job_id>",
|
|
214
|
+
});
|
|
215
|
+
const projectId = resolveProjectId(flagValue(parsed, "--project"));
|
|
216
|
+
const opts = {};
|
|
217
|
+
const tail = flagValue(parsed, "--tail");
|
|
218
|
+
const since = flagValue(parsed, "--since");
|
|
219
|
+
if (tail !== null) opts.tail = parseIntegerFlag("--tail", tail, { min: 1, max: 1000 });
|
|
220
|
+
if (since !== null) opts.since = parseIntegerFlag("--since", since, { min: 0 });
|
|
221
|
+
|
|
222
|
+
try {
|
|
223
|
+
const result = await getSdk().jobs.logs(projectId, jobId, opts);
|
|
224
|
+
console.log(JSON.stringify(result, null, 2));
|
|
225
|
+
} catch (err) {
|
|
226
|
+
reportSdkError(err);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
async function cancel(jobId, args = []) {
|
|
231
|
+
const parsed = normalizeArgv(args);
|
|
232
|
+
assertKnownFlags(parsed, ["--project", "--help", "-h"], PROJECT_FLAGS);
|
|
233
|
+
if (!jobId) {
|
|
234
|
+
fail({
|
|
235
|
+
code: "BAD_USAGE",
|
|
236
|
+
message: "Missing job_id.",
|
|
237
|
+
hint: "Use `run402 jobs cancel <job_id>`.",
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
requirePositionalCount(parsed, PROJECT_FLAGS, {
|
|
241
|
+
max: 0,
|
|
242
|
+
command: "run402 jobs cancel <job_id>",
|
|
243
|
+
});
|
|
244
|
+
const projectId = resolveProjectId(flagValue(parsed, "--project"));
|
|
245
|
+
|
|
246
|
+
try {
|
|
247
|
+
const result = await getSdk().jobs.cancel(projectId, jobId);
|
|
248
|
+
console.log(JSON.stringify(result, null, 2));
|
|
249
|
+
} catch (err) {
|
|
250
|
+
reportSdkError(err);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function splitJobIdArg(args = [], valueFlags = []) {
|
|
255
|
+
const flagsWithValues = new Set(valueFlags);
|
|
256
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
257
|
+
const arg = args[i];
|
|
258
|
+
if (flagsWithValues.has(arg)) {
|
|
259
|
+
i += 1;
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (typeof arg === "string" && arg.startsWith("-")) continue;
|
|
263
|
+
return {
|
|
264
|
+
jobId: arg,
|
|
265
|
+
rest: [...args.slice(0, i), ...args.slice(i + 1)],
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return { jobId: undefined, rest: args };
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export async function run(sub, args = []) {
|
|
272
|
+
if (!sub || sub === "--help" || sub === "-h") {
|
|
273
|
+
console.log(HELP);
|
|
274
|
+
process.exit(0);
|
|
275
|
+
}
|
|
276
|
+
if (Array.isArray(args) && (args.includes("--help") || args.includes("-h"))) {
|
|
277
|
+
console.log(SUB_HELP[sub] || HELP);
|
|
278
|
+
process.exit(0);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
switch (sub) {
|
|
282
|
+
case "submit":
|
|
283
|
+
await submit(args);
|
|
284
|
+
break;
|
|
285
|
+
case "get": {
|
|
286
|
+
const parsed = normalizeArgv(args);
|
|
287
|
+
const { jobId, rest } = splitJobIdArg(parsed, PROJECT_FLAGS);
|
|
288
|
+
await get(jobId, rest);
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
case "logs": {
|
|
292
|
+
const parsed = normalizeArgv(args);
|
|
293
|
+
const { jobId, rest } = splitJobIdArg(parsed, ["--project", "--tail", "--since"]);
|
|
294
|
+
await logs(jobId, rest);
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
case "cancel": {
|
|
298
|
+
const parsed = normalizeArgv(args);
|
|
299
|
+
const { jobId, rest } = splitJobIdArg(parsed, PROJECT_FLAGS);
|
|
300
|
+
await cancel(jobId, rest);
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
default:
|
|
304
|
+
console.error(`Unknown subcommand: ${sub}\n`);
|
|
305
|
+
console.log(HELP);
|
|
306
|
+
process.exit(1);
|
|
307
|
+
}
|
|
308
|
+
}
|
package/package.json
CHANGED
package/sdk/dist/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ import { Contracts } from "./namespaces/contracts.js";
|
|
|
26
26
|
import { Admin } from "./namespaces/admin.js";
|
|
27
27
|
import { Deploy } from "./namespaces/deploy.js";
|
|
28
28
|
import { Ci } from "./namespaces/ci.js";
|
|
29
|
+
import { Jobs } from "./namespaces/jobs.js";
|
|
29
30
|
import type { ContentSource, FileSet } from "./namespaces/deploy.types.js";
|
|
30
31
|
import { ScopedRun402 } from "./scoped.js";
|
|
31
32
|
export interface Run402Options {
|
|
@@ -70,6 +71,7 @@ export declare class Run402 {
|
|
|
70
71
|
*/
|
|
71
72
|
readonly _applyEngine: Deploy;
|
|
72
73
|
readonly ci: Ci;
|
|
74
|
+
readonly jobs: Jobs;
|
|
73
75
|
constructor(opts: Run402Options);
|
|
74
76
|
/**
|
|
75
77
|
* Return a project-scoped sub-client where every project-id-bearing namespace
|
|
@@ -151,6 +153,7 @@ export type { ByteReader } from "./namespaces/deploy.js";
|
|
|
151
153
|
export type * from "./namespaces/domains.js";
|
|
152
154
|
export type * from "./namespaces/email.js";
|
|
153
155
|
export type * from "./namespaces/functions.types.js";
|
|
156
|
+
export type * from "./namespaces/jobs.js";
|
|
154
157
|
export type * from "./namespaces/projects.types.js";
|
|
155
158
|
export type * from "./namespaces/secrets.js";
|
|
156
159
|
export type * from "./namespaces/sender-domain.js";
|
package/sdk/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,WAAW,EAAE,mBAAmB,CAAC;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,qBAAa,MAAM;;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,KAAK,EAAG,EAAE,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/index.js
CHANGED
|
@@ -26,6 +26,7 @@ import { Contracts } from "./namespaces/contracts.js";
|
|
|
26
26
|
import { Admin } from "./namespaces/admin.js";
|
|
27
27
|
import { Deploy } from "./namespaces/deploy.js";
|
|
28
28
|
import { Ci } from "./namespaces/ci.js";
|
|
29
|
+
import { Jobs } from "./namespaces/jobs.js";
|
|
29
30
|
import { ScopedRun402 } from "./scoped.js";
|
|
30
31
|
import { LocalError } from "./errors.js";
|
|
31
32
|
export class Run402 {
|
|
@@ -57,6 +58,7 @@ export class Run402 {
|
|
|
57
58
|
*/
|
|
58
59
|
_applyEngine;
|
|
59
60
|
ci;
|
|
61
|
+
jobs;
|
|
60
62
|
#client;
|
|
61
63
|
constructor(opts) {
|
|
62
64
|
if (!opts || typeof opts !== "object") {
|
|
@@ -103,6 +105,7 @@ export class Run402 {
|
|
|
103
105
|
this.admin = new Admin(client);
|
|
104
106
|
this._applyEngine = new Deploy(client);
|
|
105
107
|
this.ci = new Ci(client);
|
|
108
|
+
this.jobs = new Jobs(client);
|
|
106
109
|
}
|
|
107
110
|
/**
|
|
108
111
|
* Return a project-scoped sub-client where every project-id-bearing namespace
|
package/sdk/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2173,15 +2173,18 @@ async function normalizeFileSet(set, remember) {
|
|
|
2173
2173
|
* attacker-controlled or filesystem-derived keys (`__proto__`,
|
|
2174
2174
|
* `constructor`, `toString`) don't collide with prototype properties.
|
|
2175
2175
|
*
|
|
2176
|
-
* Totals are
|
|
2177
|
-
* `
|
|
2178
|
-
*
|
|
2179
|
-
*
|
|
2176
|
+
* Totals are derived from the plan response's per-entry `status`:
|
|
2177
|
+
* - `"upload_pending"` → bytes_uploaded (the SDK is about to PUT these to S3)
|
|
2178
|
+
* - `"present"` or `"satisfied_by_plan"` → bytes_reused (already in CAS,
|
|
2179
|
+
* dedup hit either project-locally or via a same-spec sibling)
|
|
2180
|
+
* `duration_ms` is filled in by `manifestFromResult` at the NodeAssets layer.
|
|
2180
2181
|
*/
|
|
2181
2182
|
function buildAssetManifestFromPlanEntries(entries) {
|
|
2182
2183
|
const list = [];
|
|
2183
2184
|
const byKey = Object.create(null);
|
|
2184
2185
|
const manifest = Object.create(null);
|
|
2186
|
+
let bytesUploaded = 0;
|
|
2187
|
+
let bytesReused = 0;
|
|
2185
2188
|
for (const entry of entries) {
|
|
2186
2189
|
const e = {
|
|
2187
2190
|
key: entry.key,
|
|
@@ -2200,12 +2203,24 @@ function buildAssetManifestFromPlanEntries(entries) {
|
|
|
2200
2203
|
list.push(e);
|
|
2201
2204
|
byKey[entry.key] = e;
|
|
2202
2205
|
manifest[entry.key] = e;
|
|
2206
|
+
if (entry.status === "upload_pending") {
|
|
2207
|
+
bytesUploaded += entry.size_bytes;
|
|
2208
|
+
}
|
|
2209
|
+
else {
|
|
2210
|
+
// "present" or "satisfied_by_plan" — already in CAS or covered by a sibling.
|
|
2211
|
+
bytesReused += entry.size_bytes;
|
|
2212
|
+
}
|
|
2203
2213
|
}
|
|
2204
2214
|
return {
|
|
2205
2215
|
list,
|
|
2206
2216
|
byKey,
|
|
2207
2217
|
manifest,
|
|
2208
|
-
totals: {
|
|
2218
|
+
totals: {
|
|
2219
|
+
files: entries.length,
|
|
2220
|
+
bytes_uploaded: bytesUploaded,
|
|
2221
|
+
bytes_reused: bytesReused,
|
|
2222
|
+
duration_ms: 0,
|
|
2223
|
+
},
|
|
2209
2224
|
};
|
|
2210
2225
|
}
|
|
2211
2226
|
// ─── Asset slice normalization (v1.48 unified-apply) ─────────────────────────
|