@soku-ai/cli 0.1.0-alpha.17 → 0.1.0-alpha.18
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/dist/commands/auth.d.ts +1 -3
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +18 -3
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/automation.d.ts +46 -0
- package/dist/commands/automation.d.ts.map +1 -1
- package/dist/commands/automation.js +150 -0
- package/dist/commands/automation.js.map +1 -1
- package/dist/commands/changelog.d.ts +79 -0
- package/dist/commands/changelog.d.ts.map +1 -0
- package/dist/commands/changelog.js +123 -0
- package/dist/commands/changelog.js.map +1 -0
- package/dist/commands/context.d.ts +54 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +362 -43
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/egress.d.ts +49 -1
- package/dist/commands/egress.d.ts.map +1 -1
- package/dist/commands/egress.js +222 -33
- package/dist/commands/egress.js.map +1 -1
- package/dist/commands/workspace.d.ts +13 -0
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +34 -7
- package/dist/commands/workspace.js.map +1 -1
- package/dist/generated/capabilities.json +4250 -1619
- package/dist/generated/changelog.json +1448 -0
- package/dist/http/client.d.ts +16 -0
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +25 -5
- package/dist/http/client.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/upload-journal.d.ts +46 -0
- package/dist/upload-journal.d.ts.map +1 -0
- package/dist/upload-journal.js +102 -0
- package/dist/upload-journal.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/skills/soku/SKILL.md +17 -2
- package/skills/soku/references/auth-workspace.md +27 -12
- package/skills/soku/references/egress-security.md +44 -0
- package/skills/soku/references/seo-automation-files.md +67 -3
- package/skills/soku/references/skills-updates.md +23 -0
|
@@ -19,5 +19,59 @@ export interface UploadTask {
|
|
|
19
19
|
export declare function expandUploadPaths(rawPaths: string[], opts: {
|
|
20
20
|
dir: string;
|
|
21
21
|
}): UploadTask[];
|
|
22
|
+
/** How many attempts a single file gets before the run gives up on it. */
|
|
23
|
+
export declare const DEFAULT_UPLOAD_ATTEMPTS = 3;
|
|
24
|
+
/** Failures worth retrying: the request never reached a decision, or the server
|
|
25
|
+
* said it could not answer *right now*. A 4xx other than 408/429 is a decision
|
|
26
|
+
* (bad path, unauthorized, too large) and retrying it only wastes time. */
|
|
27
|
+
export declare function isRetriableStatus(status: number): boolean;
|
|
28
|
+
/** Exponential backoff with jitter, capped so a long batch cannot stall.
|
|
29
|
+
* Jitter matters here specifically: without it, a concurrent pool that trips a
|
|
30
|
+
* rate limit retries in lockstep and trips it again. */
|
|
31
|
+
export declare function retryDelayMs(attempt: number, random?: () => number): number;
|
|
32
|
+
/** Base64 MD5 of a local file, in the same shape the server reports. */
|
|
33
|
+
export declare function md5Base64(bytes: Buffer): string;
|
|
34
|
+
interface ManifestFile {
|
|
35
|
+
path: string;
|
|
36
|
+
name: string;
|
|
37
|
+
size_bytes: number;
|
|
38
|
+
md5?: string | null;
|
|
39
|
+
}
|
|
40
|
+
interface ManifestResponse {
|
|
41
|
+
dir: string;
|
|
42
|
+
checksums: boolean;
|
|
43
|
+
count: number;
|
|
44
|
+
total_bytes: number;
|
|
45
|
+
files: ManifestFile[];
|
|
46
|
+
}
|
|
47
|
+
export type VerifyStatus = 'ok' | 'missing' | 'size_mismatch' | 'checksum_mismatch' | 'unverified';
|
|
48
|
+
export interface VerifyRow {
|
|
49
|
+
path: string;
|
|
50
|
+
status: VerifyStatus;
|
|
51
|
+
localBytes: number;
|
|
52
|
+
remoteBytes?: number;
|
|
53
|
+
}
|
|
54
|
+
export interface VerifyReport {
|
|
55
|
+
dir: string;
|
|
56
|
+
checked: number;
|
|
57
|
+
ok: number;
|
|
58
|
+
mismatched: number;
|
|
59
|
+
missing: number;
|
|
60
|
+
unverified: number;
|
|
61
|
+
rows: VerifyRow[];
|
|
62
|
+
}
|
|
63
|
+
/** Compare planned local files against the server's manifest.
|
|
64
|
+
*
|
|
65
|
+
* Size alone catches a truncated upload; only the checksum catches bytes that
|
|
66
|
+
* arrived intact but wrong. When the server reports no checksum for a file the
|
|
67
|
+
* row is `unverified` rather than `ok`, so a missing hash never reads as proof.
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildVerifyReport(tasks: UploadTask[], manifest: ManifestResponse, localOf: (task: UploadTask) => {
|
|
70
|
+
sizeBytes: number;
|
|
71
|
+
md5: string;
|
|
72
|
+
}): VerifyReport;
|
|
73
|
+
export declare function verificationClean(report: VerifyReport | null): boolean;
|
|
74
|
+
export declare function renderVerifyReport(report: VerifyReport): string;
|
|
22
75
|
export declare function registerContextCommands(program: Command): void;
|
|
76
|
+
export {};
|
|
23
77
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAyGnC,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;wCAGwC;AACxC,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACpB,UAAU,EAAE,CAoCd;AAWD,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;2EAE2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;wDAEwD;AACxD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,MAAoB,GAAG,MAAM,CAGxF;AA2BD,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,mBAAmB,GAAG,YAAY,CAAA;AAElG,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,SAAS,EAAE,CAAA;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChE,YAAY,CA+Cd;AA0LD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAGtE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAuB/D;AA8BD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoQ9D"}
|
package/dist/commands/context.js
CHANGED
|
@@ -6,13 +6,17 @@
|
|
|
6
6
|
* POST to mint a signed URL, then PUT the bytes straight to storage.
|
|
7
7
|
*/
|
|
8
8
|
import { basename, extname, join, relative } from 'node:path';
|
|
9
|
+
import { createHash } from 'node:crypto';
|
|
9
10
|
import { readFileSync, readdirSync, statSync } from 'node:fs';
|
|
10
|
-
import {
|
|
11
|
+
import { loadConfig } from '../config.js';
|
|
12
|
+
import { ApiError, apiRequest } from '../http/client.js';
|
|
13
|
+
import { deleteJournal, listJournals, loadJournal, newRunId, pendingEntries, pruneJournals, saveJournal, } from '../upload-journal.js';
|
|
11
14
|
import { bold, dim, emitError, emitSuccess, emitSuccessExit, ExitCode, table } from '../output/envelope.js';
|
|
12
15
|
const FILES_PATH = '/api/cli/context-hub/files';
|
|
13
16
|
const UPLOAD_PATH = '/api/cli/context-hub/upload';
|
|
14
17
|
const DIRECTORY_PATH = '/api/cli/context-hub/directory';
|
|
15
18
|
const RENAME_PATH = '/api/cli/context-hub/rename';
|
|
19
|
+
const MANIFEST_PATH = '/api/cli/context-hub/manifest';
|
|
16
20
|
/** Minimal extension → MIME map. The content-type signed in the POST must match
|
|
17
21
|
* the PUT header exactly, so we compute it once and reuse it for both. */
|
|
18
22
|
const MIME_BY_EXT = {
|
|
@@ -122,42 +126,164 @@ function walk(root, visit) {
|
|
|
122
126
|
visit(abs);
|
|
123
127
|
}
|
|
124
128
|
}
|
|
129
|
+
/** How many attempts a single file gets before the run gives up on it. */
|
|
130
|
+
export const DEFAULT_UPLOAD_ATTEMPTS = 3;
|
|
131
|
+
/** Failures worth retrying: the request never reached a decision, or the server
|
|
132
|
+
* said it could not answer *right now*. A 4xx other than 408/429 is a decision
|
|
133
|
+
* (bad path, unauthorized, too large) and retrying it only wastes time. */
|
|
134
|
+
export function isRetriableStatus(status) {
|
|
135
|
+
return status === 408 || status === 429 || status >= 500;
|
|
136
|
+
}
|
|
137
|
+
/** Exponential backoff with jitter, capped so a long batch cannot stall.
|
|
138
|
+
* Jitter matters here specifically: without it, a concurrent pool that trips a
|
|
139
|
+
* rate limit retries in lockstep and trips it again. */
|
|
140
|
+
export function retryDelayMs(attempt, random = Math.random) {
|
|
141
|
+
const base = Math.min(1000 * 2 ** (attempt - 1), 8000);
|
|
142
|
+
return Math.round(base * (0.5 + random() * 0.5));
|
|
143
|
+
}
|
|
144
|
+
function sleep(ms) {
|
|
145
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
146
|
+
}
|
|
147
|
+
/** Retriable-failure marker, so `withRetries` can tell a transient error from a
|
|
148
|
+
* permanent one without parsing message strings. */
|
|
149
|
+
class TransientUploadError extends Error {
|
|
150
|
+
}
|
|
151
|
+
async function withRetries(attempts, run) {
|
|
152
|
+
let lastError;
|
|
153
|
+
for (let attempt = 1; attempt <= attempts; attempt++) {
|
|
154
|
+
try {
|
|
155
|
+
return await run();
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
lastError = err;
|
|
159
|
+
if (!(err instanceof TransientUploadError) || attempt === attempts)
|
|
160
|
+
throw lastError;
|
|
161
|
+
await sleep(retryDelayMs(attempt));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
throw lastError ?? new Error('upload failed');
|
|
165
|
+
}
|
|
166
|
+
/** Base64 MD5 of a local file, in the same shape the server reports. */
|
|
167
|
+
export function md5Base64(bytes) {
|
|
168
|
+
return createHash('md5').update(bytes).digest('base64');
|
|
169
|
+
}
|
|
170
|
+
/** Compare planned local files against the server's manifest.
|
|
171
|
+
*
|
|
172
|
+
* Size alone catches a truncated upload; only the checksum catches bytes that
|
|
173
|
+
* arrived intact but wrong. When the server reports no checksum for a file the
|
|
174
|
+
* row is `unverified` rather than `ok`, so a missing hash never reads as proof.
|
|
175
|
+
*/
|
|
176
|
+
export function buildVerifyReport(tasks, manifest, localOf) {
|
|
177
|
+
const remote = new Map(manifest.files.map((file) => [file.path, file]));
|
|
178
|
+
const rows = [];
|
|
179
|
+
for (const task of tasks) {
|
|
180
|
+
const path = task.targetDir ? `${task.targetDir}/${task.filename}` : task.filename;
|
|
181
|
+
const local = localOf(task);
|
|
182
|
+
const found = remote.get(path);
|
|
183
|
+
if (!found) {
|
|
184
|
+
rows.push({ path, status: 'missing', localBytes: local.sizeBytes });
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (found.size_bytes !== local.sizeBytes) {
|
|
188
|
+
rows.push({
|
|
189
|
+
path,
|
|
190
|
+
status: 'size_mismatch',
|
|
191
|
+
localBytes: local.sizeBytes,
|
|
192
|
+
remoteBytes: found.size_bytes,
|
|
193
|
+
});
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
if (!found.md5) {
|
|
197
|
+
rows.push({
|
|
198
|
+
path,
|
|
199
|
+
status: 'unverified',
|
|
200
|
+
localBytes: local.sizeBytes,
|
|
201
|
+
remoteBytes: found.size_bytes,
|
|
202
|
+
});
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
rows.push({
|
|
206
|
+
path,
|
|
207
|
+
status: found.md5 === local.md5 ? 'ok' : 'checksum_mismatch',
|
|
208
|
+
localBytes: local.sizeBytes,
|
|
209
|
+
remoteBytes: found.size_bytes,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
dir: manifest.dir,
|
|
214
|
+
checked: rows.length,
|
|
215
|
+
ok: rows.filter((r) => r.status === 'ok').length,
|
|
216
|
+
mismatched: rows.filter((r) => r.status === 'size_mismatch' || r.status === 'checksum_mismatch').length,
|
|
217
|
+
missing: rows.filter((r) => r.status === 'missing').length,
|
|
218
|
+
unverified: rows.filter((r) => r.status === 'unverified').length,
|
|
219
|
+
rows,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
125
222
|
/** Mint a presigned PUT URL then PUT the bytes — the two-step Context Hub
|
|
126
223
|
* upload, isolated to one file. The presigned URL carries its own auth; the
|
|
127
224
|
* Content-Type MUST match the one signed at mint time. */
|
|
128
225
|
async function uploadOne(task, opts) {
|
|
129
226
|
const { localPath, targetDir, filename } = task;
|
|
130
227
|
const contentType = opts.contentType ?? guessContentType(filename);
|
|
228
|
+
const attempts = opts.attempts ?? DEFAULT_UPLOAD_ATTEMPTS;
|
|
131
229
|
let bytes;
|
|
132
230
|
try {
|
|
133
231
|
bytes = readFileSync(localPath);
|
|
134
232
|
}
|
|
135
233
|
catch (err) {
|
|
234
|
+
// A local read failure is never transient in the way a network call is:
|
|
235
|
+
// the file is missing or unreadable and will be on the next attempt too.
|
|
136
236
|
return { task, ok: false, error: `read failed: ${err.message}` };
|
|
137
237
|
}
|
|
138
238
|
let minted;
|
|
139
239
|
try {
|
|
140
|
-
minted = await
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
240
|
+
minted = await withRetries(attempts, async () => {
|
|
241
|
+
try {
|
|
242
|
+
return await apiRequest(UPLOAD_PATH, {
|
|
243
|
+
method: 'POST',
|
|
244
|
+
body: { filename, content_type: contentType, target_dir: targetDir },
|
|
245
|
+
workspace: true,
|
|
246
|
+
// Without this the client exits the process on any error, so one
|
|
247
|
+
// file's transient 503 would end a run of hundreds.
|
|
248
|
+
throwOnError: true,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
catch (err) {
|
|
252
|
+
// status 0 means the request never reached the server.
|
|
253
|
+
if (err instanceof ApiError && (err.status === 0 || isRetriableStatus(err.status))) {
|
|
254
|
+
throw new TransientUploadError(err.message);
|
|
255
|
+
}
|
|
256
|
+
throw err;
|
|
257
|
+
}
|
|
144
258
|
});
|
|
145
259
|
}
|
|
146
260
|
catch (err) {
|
|
147
261
|
return { task, ok: false, error: `mint failed: ${err.message}` };
|
|
148
262
|
}
|
|
149
263
|
try {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
264
|
+
await withRetries(attempts, async () => {
|
|
265
|
+
let putRes;
|
|
266
|
+
try {
|
|
267
|
+
putRes = await fetch(minted.upload_url, {
|
|
268
|
+
method: 'PUT',
|
|
269
|
+
headers: { 'Content-Type': contentType },
|
|
270
|
+
body: new Uint8Array(bytes),
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
// The request never got an answer — the classic transient case.
|
|
275
|
+
throw new TransientUploadError(`PUT failed: ${err.message}`);
|
|
276
|
+
}
|
|
277
|
+
if (putRes.ok)
|
|
278
|
+
return;
|
|
279
|
+
const message = `PUT failed (HTTP ${putRes.status})`;
|
|
280
|
+
if (isRetriableStatus(putRes.status))
|
|
281
|
+
throw new TransientUploadError(message);
|
|
282
|
+
throw new Error(message);
|
|
154
283
|
});
|
|
155
|
-
if (!putRes.ok) {
|
|
156
|
-
return { task, ok: false, error: `PUT failed (HTTP ${putRes.status})` };
|
|
157
|
-
}
|
|
158
284
|
}
|
|
159
285
|
catch (err) {
|
|
160
|
-
return { task, ok: false, error:
|
|
286
|
+
return { task, ok: false, error: err.message };
|
|
161
287
|
}
|
|
162
288
|
return { task, ok: true, path: minted.path, sizeBytes: bytes.length, contentType };
|
|
163
289
|
}
|
|
@@ -172,12 +298,103 @@ async function uploadAll(tasks, opts) {
|
|
|
172
298
|
if (i >= tasks.length)
|
|
173
299
|
return;
|
|
174
300
|
outcomes[i] = await uploadOne(tasks[i], opts);
|
|
301
|
+
opts.onSettled?.(outcomes[i]);
|
|
175
302
|
}
|
|
176
303
|
});
|
|
177
304
|
await Promise.all(workers);
|
|
178
305
|
return outcomes;
|
|
179
306
|
}
|
|
180
|
-
function
|
|
307
|
+
function parsePositiveIntFlag(raw, flag) {
|
|
308
|
+
const n = Number(raw);
|
|
309
|
+
if (!Number.isInteger(n) || n < 1) {
|
|
310
|
+
emitError('usage', `${flag} must be a positive integer, got: ${raw}`, ExitCode.USAGE);
|
|
311
|
+
}
|
|
312
|
+
return n;
|
|
313
|
+
}
|
|
314
|
+
/** Snapshot the plan so a killed run can be finished later. */
|
|
315
|
+
function startJournal(tasks, dir) {
|
|
316
|
+
const cfg = loadConfig();
|
|
317
|
+
const now = new Date().toISOString();
|
|
318
|
+
return {
|
|
319
|
+
runId: newRunId(),
|
|
320
|
+
createdAt: now,
|
|
321
|
+
updatedAt: now,
|
|
322
|
+
orgId: process.env.SOKU_ORG_ID || cfg.activeOrgId || null,
|
|
323
|
+
brandId: process.env.SOKU_BRAND_ID || cfg.activeBrandId || null,
|
|
324
|
+
dir,
|
|
325
|
+
entries: tasks.map((task) => ({
|
|
326
|
+
localPath: task.localPath,
|
|
327
|
+
targetDir: task.targetDir,
|
|
328
|
+
filename: task.filename,
|
|
329
|
+
status: 'pending',
|
|
330
|
+
})),
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
/** Refuse a resume that would push a recorded run into a different brand.
|
|
334
|
+
*
|
|
335
|
+
* Silently retargeting is the exact failure the run journal is supposed to
|
|
336
|
+
* prevent: the files would land, in the wrong workspace, and look successful. */
|
|
337
|
+
function assertSameWorkspace(journal) {
|
|
338
|
+
const cfg = loadConfig();
|
|
339
|
+
const orgId = process.env.SOKU_ORG_ID || cfg.activeOrgId || null;
|
|
340
|
+
const brandId = process.env.SOKU_BRAND_ID || cfg.activeBrandId || null;
|
|
341
|
+
if (journal.brandId && journal.brandId !== brandId) {
|
|
342
|
+
emitError('workspace_mismatch', `Run ${journal.runId} uploaded to brand ${journal.brandId}, but the active brand is ${brandId ?? '(none)'}.`, ExitCode.USAGE, `Switch back with \`soku workspace use-brand ${journal.brandId}\` before resuming.`);
|
|
343
|
+
}
|
|
344
|
+
if (journal.orgId && journal.orgId !== orgId) {
|
|
345
|
+
emitError('workspace_mismatch', `Run ${journal.runId} uploaded to org ${journal.orgId}, but the active org is ${orgId ?? '(none)'}.`, ExitCode.USAGE);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
function recordOutcome(journal, outcome) {
|
|
349
|
+
const entry = journal.entries.find((item) => item.targetDir === outcome.task.targetDir && item.filename === outcome.task.filename);
|
|
350
|
+
if (!entry)
|
|
351
|
+
return;
|
|
352
|
+
entry.status = outcome.ok ? 'done' : 'failed';
|
|
353
|
+
entry.error = outcome.ok ? undefined : outcome.error;
|
|
354
|
+
entry.sizeBytes = outcome.sizeBytes;
|
|
355
|
+
entry.contentType = outcome.contentType;
|
|
356
|
+
}
|
|
357
|
+
/** Fetch the server manifest and compare it against what was just uploaded. */
|
|
358
|
+
async function verifyUploaded(tasks, dir) {
|
|
359
|
+
if (tasks.length === 0)
|
|
360
|
+
return null;
|
|
361
|
+
const query = new URLSearchParams({ checksums: 'true' });
|
|
362
|
+
if (dir)
|
|
363
|
+
query.set('dir', dir);
|
|
364
|
+
const manifest = await apiRequest(`${MANIFEST_PATH}?${query.toString()}`, {
|
|
365
|
+
workspace: true,
|
|
366
|
+
});
|
|
367
|
+
return buildVerifyReport(tasks, manifest, (task) => {
|
|
368
|
+
const bytes = readFileSync(task.localPath);
|
|
369
|
+
return { sizeBytes: bytes.length, md5: md5Base64(bytes) };
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
export function verificationClean(report) {
|
|
373
|
+
if (report === null)
|
|
374
|
+
return true;
|
|
375
|
+
return report.missing === 0 && report.mismatched === 0 && report.unverified === 0;
|
|
376
|
+
}
|
|
377
|
+
export function renderVerifyReport(report) {
|
|
378
|
+
const problems = report.rows.filter((row) => row.status !== 'ok');
|
|
379
|
+
const head = `${bold('Verified')} ${report.ok}/${report.checked} file${report.checked === 1 ? '' : 's'}`;
|
|
380
|
+
if (problems.length === 0)
|
|
381
|
+
return `${head}\n${dim('All sizes and checksums match.')}`;
|
|
382
|
+
return [
|
|
383
|
+
head,
|
|
384
|
+
table(problems.map((row) => ({
|
|
385
|
+
status: row.status,
|
|
386
|
+
path: row.path,
|
|
387
|
+
local: row.localBytes,
|
|
388
|
+
remote: row.remoteBytes ?? '-',
|
|
389
|
+
})), [
|
|
390
|
+
{ key: 'status', header: 'STATUS' },
|
|
391
|
+
{ key: 'path', header: 'PATH' },
|
|
392
|
+
{ key: 'local', header: 'LOCAL BYTES' },
|
|
393
|
+
{ key: 'remote', header: 'REMOTE BYTES' },
|
|
394
|
+
]),
|
|
395
|
+
].join('\n');
|
|
396
|
+
}
|
|
397
|
+
function renderUploadSummary(outcomes, resumeCommand, verification) {
|
|
181
398
|
const ok = outcomes.filter((o) => o.ok);
|
|
182
399
|
const failed = outcomes.filter((o) => !o.ok);
|
|
183
400
|
const head = `${bold('Uploaded')} ${ok.length}/${outcomes.length} file${outcomes.length === 1 ? '' : 's'}`;
|
|
@@ -188,6 +405,14 @@ function renderUploadSummary(outcomes) {
|
|
|
188
405
|
for (const o of failed) {
|
|
189
406
|
lines.push(` ${dim('x')} ${o.task.targetDir}/${o.task.filename} — ${o.error}`);
|
|
190
407
|
}
|
|
408
|
+
if (resumeCommand) {
|
|
409
|
+
lines.push('');
|
|
410
|
+
lines.push(`${bold('Resume the rest with')}: ${resumeCommand}`);
|
|
411
|
+
}
|
|
412
|
+
if (verification) {
|
|
413
|
+
lines.push('');
|
|
414
|
+
lines.push(renderVerifyReport(verification));
|
|
415
|
+
}
|
|
191
416
|
return lines.join('\n');
|
|
192
417
|
}
|
|
193
418
|
export function registerContextCommands(program) {
|
|
@@ -204,59 +429,153 @@ export function registerContextCommands(program) {
|
|
|
204
429
|
emitSuccess(data, renderList);
|
|
205
430
|
});
|
|
206
431
|
context
|
|
207
|
-
.command('upload
|
|
432
|
+
.command('upload [paths...]')
|
|
208
433
|
.description('Upload one or more files (or directories) to the Context Hub. ' +
|
|
209
434
|
'Directories recurse and preserve structure under --dir; globs expand. ' +
|
|
210
|
-
'Runs uploads concurrently
|
|
435
|
+
'Runs uploads concurrently, retries transient failures, and records a ' +
|
|
436
|
+
'resumable run so a partial batch can be finished with --resume.')
|
|
211
437
|
.option('--dir <dir>', 'Context-relative target directory (e.g. docs)', '')
|
|
212
438
|
.option('--name <name>', 'Override the stored filename (only valid with a single input file)')
|
|
213
439
|
.option('--content-type <type>', 'Override the content type (defaults to a guess by extension)')
|
|
214
|
-
.option('--concurrency <n>', 'Max simultaneous uploads (default 4)', (v) =>
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
return n;
|
|
220
|
-
}, 4)
|
|
440
|
+
.option('--concurrency <n>', 'Max simultaneous uploads (default 4)', (v) => parsePositiveIntFlag(v, '--concurrency'), 4)
|
|
441
|
+
.option('--retries <n>', `Attempts per file before giving up (default ${DEFAULT_UPLOAD_ATTEMPTS})`, (v) => parsePositiveIntFlag(v, '--retries'), DEFAULT_UPLOAD_ATTEMPTS)
|
|
442
|
+
.option('--resume <run_id>', 'Finish a previous run, re-uploading only the files that never landed')
|
|
443
|
+
.option('--verify', 'After uploading, reconcile the uploaded files against the server by size and checksum')
|
|
221
444
|
.action(async (paths, opts) => {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
// `--name` only makes sense for a single file; reject ambiguity early.
|
|
226
|
-
if (opts.name && paths.length > 1) {
|
|
227
|
-
emitError('usage', '--name can only be used with a single input file', ExitCode.USAGE);
|
|
228
|
-
}
|
|
445
|
+
pruneJournals();
|
|
446
|
+
const inputPaths = paths ?? [];
|
|
447
|
+
let journal;
|
|
229
448
|
let tasks;
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
449
|
+
if (opts.resume) {
|
|
450
|
+
if (inputPaths.length > 0) {
|
|
451
|
+
emitError('usage', '--resume replays a recorded run; do not also pass paths.', ExitCode.USAGE, `Run: soku context upload --resume ${opts.resume}`);
|
|
452
|
+
}
|
|
453
|
+
const loaded = loadJournal(opts.resume);
|
|
454
|
+
if (!loaded) {
|
|
455
|
+
emitError('not_found', `No upload run recorded with id ${opts.resume}.`, ExitCode.NOT_FOUND, 'List recorded runs with `soku context uploads`.');
|
|
456
|
+
}
|
|
457
|
+
assertSameWorkspace(loaded);
|
|
458
|
+
journal = loaded;
|
|
459
|
+
const pending = pendingEntries(journal);
|
|
460
|
+
if (pending.length === 0) {
|
|
461
|
+
emitSuccess({ run_id: journal.runId, uploaded: 0, failed: 0, remaining: 0, files: [], failures: [] }, () => `${bold('Nothing to resume')} — run ${journal.runId} already completed.`);
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
tasks = pending.map((entry) => ({
|
|
465
|
+
localPath: entry.localPath,
|
|
466
|
+
targetDir: entry.targetDir,
|
|
467
|
+
filename: entry.filename,
|
|
468
|
+
}));
|
|
235
469
|
}
|
|
236
|
-
|
|
237
|
-
|
|
470
|
+
else {
|
|
471
|
+
if (inputPaths.length === 0) {
|
|
472
|
+
emitError('usage', 'upload requires at least one file or directory (or --resume <run_id>)', ExitCode.USAGE);
|
|
473
|
+
}
|
|
474
|
+
// `--name` only makes sense for a single file; reject ambiguity early.
|
|
475
|
+
if (opts.name && inputPaths.length > 1) {
|
|
476
|
+
emitError('usage', '--name can only be used with a single input file', ExitCode.USAGE);
|
|
477
|
+
}
|
|
478
|
+
try {
|
|
479
|
+
tasks = expandUploadPaths(inputPaths, { dir: opts.dir });
|
|
480
|
+
}
|
|
481
|
+
catch (err) {
|
|
482
|
+
emitError('usage', err.message, ExitCode.USAGE);
|
|
483
|
+
}
|
|
484
|
+
if (tasks.length === 0) {
|
|
485
|
+
emitError('usage', 'no files to upload (only dotfiles/cruft found?)', ExitCode.USAGE);
|
|
486
|
+
}
|
|
487
|
+
// Apply a single-file rename last, after expansion validated it.
|
|
488
|
+
if (opts.name && tasks.length === 1)
|
|
489
|
+
tasks[0].filename = opts.name;
|
|
490
|
+
journal = startJournal(tasks, opts.dir);
|
|
238
491
|
}
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
|
|
492
|
+
// Persist before the first byte moves: a run killed mid-batch must
|
|
493
|
+
// still be resumable, which needs the plan on disk up front.
|
|
494
|
+
saveJournal(journal);
|
|
242
495
|
const outcomes = await uploadAll(tasks, {
|
|
243
496
|
contentType: opts.contentType,
|
|
244
497
|
concurrency: opts.concurrency,
|
|
498
|
+
attempts: opts.retries,
|
|
499
|
+
onSettled: (outcome) => {
|
|
500
|
+
recordOutcome(journal, outcome);
|
|
501
|
+
saveJournal(journal);
|
|
502
|
+
},
|
|
245
503
|
});
|
|
246
504
|
const ok = outcomes.filter((o) => o.ok);
|
|
505
|
+
const failures = outcomes.filter((o) => !o.ok);
|
|
506
|
+
const remaining = pendingEntries(journal).length;
|
|
507
|
+
// Only a fully settled run may drop its journal; anything left pending
|
|
508
|
+
// is exactly what --resume exists to pick up.
|
|
509
|
+
if (remaining === 0)
|
|
510
|
+
deleteJournal(journal.runId);
|
|
511
|
+
// The journal's dir, not `opts.dir`: on a resume the caller passes only
|
|
512
|
+
// --resume, so `opts.dir` is the empty default and would widen the
|
|
513
|
+
// manifest query to the whole hub.
|
|
514
|
+
const verification = opts.verify
|
|
515
|
+
? await verifyUploaded(ok.map((o) => o.task), journal.dir)
|
|
516
|
+
: null;
|
|
247
517
|
const data = {
|
|
518
|
+
run_id: journal.runId,
|
|
248
519
|
uploaded: ok.length,
|
|
249
|
-
failed:
|
|
520
|
+
failed: failures.length,
|
|
521
|
+
remaining,
|
|
250
522
|
total_bytes: ok.reduce((sum, o) => sum + (o.sizeBytes ?? 0), 0),
|
|
251
523
|
files: ok.map((o) => ({ path: o.path, size_bytes: o.sizeBytes, content_type: o.contentType })),
|
|
252
|
-
failures:
|
|
524
|
+
failures: failures.map((o) => ({
|
|
253
525
|
path: `${o.task.targetDir}/${o.task.filename}`,
|
|
254
526
|
error: o.error,
|
|
255
527
|
})),
|
|
528
|
+
resume_command: remaining > 0 ? `soku context upload --resume ${journal.runId}` : null,
|
|
529
|
+
verification,
|
|
256
530
|
};
|
|
257
531
|
// Partial failure still emits the success-shaped summary (callers want
|
|
258
532
|
// the JSON results) but exits non-zero so scripts detect the failures.
|
|
259
|
-
|
|
533
|
+
const clean = data.failed === 0 && (verification === null || verificationClean(verification));
|
|
534
|
+
emitSuccessExit(data, clean ? ExitCode.OK : ExitCode.RUNTIME, () => renderUploadSummary(outcomes, data.resume_command, verification));
|
|
535
|
+
});
|
|
536
|
+
context
|
|
537
|
+
.command('verify <paths...>')
|
|
538
|
+
.description('Reconcile local files against the Context Hub by size and checksum, ' +
|
|
539
|
+
'without uploading anything.')
|
|
540
|
+
.option('--dir <dir>', 'Context-relative directory the files were uploaded to', '')
|
|
541
|
+
.action(async (paths, opts) => {
|
|
542
|
+
let tasks;
|
|
543
|
+
try {
|
|
544
|
+
tasks = expandUploadPaths(paths, { dir: opts.dir });
|
|
545
|
+
}
|
|
546
|
+
catch (err) {
|
|
547
|
+
emitError('usage', err.message, ExitCode.USAGE);
|
|
548
|
+
}
|
|
549
|
+
if (tasks.length === 0) {
|
|
550
|
+
emitError('usage', 'no local files to verify (only dotfiles/cruft found?)', ExitCode.USAGE);
|
|
551
|
+
}
|
|
552
|
+
const report = await verifyUploaded(tasks, opts.dir);
|
|
553
|
+
if (report === null) {
|
|
554
|
+
emitError('usage', 'no local files to verify', ExitCode.USAGE);
|
|
555
|
+
}
|
|
556
|
+
emitSuccessExit(report, verificationClean(report) ? ExitCode.OK : ExitCode.RUNTIME, renderVerifyReport);
|
|
557
|
+
});
|
|
558
|
+
context
|
|
559
|
+
.command('uploads')
|
|
560
|
+
.description('List upload runs that recorded unfinished files and can be resumed')
|
|
561
|
+
.action(() => {
|
|
562
|
+
pruneJournals();
|
|
563
|
+
const runs = listJournals().map((journal) => ({
|
|
564
|
+
run_id: journal.runId,
|
|
565
|
+
created_at: journal.createdAt,
|
|
566
|
+
dir: journal.dir,
|
|
567
|
+
total: journal.entries.length,
|
|
568
|
+
remaining: pendingEntries(journal).length,
|
|
569
|
+
}));
|
|
570
|
+
emitSuccess({ runs, count: runs.length }, (d) => d.runs.length === 0
|
|
571
|
+
? dim('No resumable upload runs.')
|
|
572
|
+
: table(d.runs, [
|
|
573
|
+
{ key: 'run_id', header: 'RUN ID' },
|
|
574
|
+
{ key: 'created_at', header: 'CREATED' },
|
|
575
|
+
{ key: 'dir', header: 'DIR' },
|
|
576
|
+
{ key: 'total', header: 'FILES' },
|
|
577
|
+
{ key: 'remaining', header: 'REMAINING' },
|
|
578
|
+
]));
|
|
260
579
|
});
|
|
261
580
|
context
|
|
262
581
|
.command('rm <path>')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
|