@outerlayer/cli 0.33.0-next.20261023003700 → 0.33.0-next.20261023120437
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 -4
- package/dist/{agent-setup-55ZDEXCS.js → agent-setup-YHEW3WXB.js} +10 -10
- package/dist/{artifact-link-cmd-6FF2Y6QI.js → artifact-link-cmd-7FYKWA7J.js} +2 -2
- package/dist/{build-disk-JHTMPRAA.js → build-disk-ECTLWTPC.js} +4 -4
- package/dist/build-info.json +1 -1
- package/dist/{builder-Y4P7QARW.js → builder-LUPHKUFM.js} +3 -3
- package/dist/{check-MRYFTLOO.js → check-4QNLMDP7.js} +28 -28
- package/dist/{chunk-3RIFVLPO.js → chunk-2JLM4GUF.js} +12 -12
- package/dist/{chunk-G63KT5I5.js → chunk-44V5SD4G.js} +1 -1
- package/dist/{chunk-ULBNTSAD.js → chunk-5M2J7B5N.js} +2 -2
- package/dist/{chunk-LJG6EMLJ.js → chunk-6CXNWKWD.js} +1 -1
- package/dist/{chunk-BKADJZ7F.js → chunk-6SPD266O.js} +3 -3
- package/dist/{chunk-Q2CMEQV7.js → chunk-7IFYI7XF.js} +3 -3
- package/dist/{chunk-AU346ENF.js → chunk-7UPMYRPS.js} +4 -4
- package/dist/{chunk-NSPRS7WK.js → chunk-7V5GUEDU.js} +1 -1
- package/dist/{chunk-EUVE2EAE.js → chunk-AKZRGFGT.js} +3 -3
- package/dist/{chunk-2N67C6IV.js → chunk-D3EDZPJR.js} +5 -5
- package/dist/{chunk-BJQ25STI.js → chunk-DKFUXYGD.js} +4 -4
- package/dist/{chunk-HE4FBF4T.js → chunk-EHOFFTVX.js} +2 -2
- package/dist/{chunk-HXA5GIHK.js → chunk-EJL6CWSP.js} +6 -6
- package/dist/chunk-ER6KQCVJ.js +18 -0
- package/dist/{chunk-DISTLL2Q.js → chunk-EXZACZ2P.js} +1 -1
- package/dist/{chunk-E6CO3MJE.js → chunk-F2D5BSXS.js} +38 -2
- package/dist/{chunk-UIUGTW5C.js → chunk-FT7MUQGO.js} +2 -2
- package/dist/{chunk-PWH3BEZF.js → chunk-FZUFUVLK.js} +13 -13
- package/dist/{chunk-XL2XWWU7.js → chunk-GO2DUPQS.js} +3 -3
- package/dist/{chunk-B2JURP6A.js → chunk-HLZMAJJD.js} +2 -2
- package/dist/{chunk-2EGCI2VW.js → chunk-IUPY54BZ.js} +10 -10
- package/dist/{chunk-GFYEMCPP.js → chunk-JEVKOZBB.js} +1 -1
- package/dist/{chunk-DY7Y7UT4.js → chunk-KUE4V2SK.js} +2 -2
- package/dist/{chunk-SVDOA4W2.js → chunk-L6MDOEHN.js} +7 -7
- package/dist/{chunk-HJYBWJAS.js → chunk-LYGI3T66.js} +2 -2
- package/dist/{chunk-EWVYQLD3.js → chunk-MPC2UAW2.js} +1 -1
- package/dist/{chunk-5DNCFOXA.js → chunk-NIY2UBT6.js} +1 -1
- package/dist/{chunk-FR7HWWCF.js → chunk-OGMXVPCS.js} +1 -1
- package/dist/{chunk-6Z4SZHV2.js → chunk-QKNFU5GA.js} +5 -5
- package/dist/{chunk-2WMZPJVE.js → chunk-S5CNYXUA.js} +4 -4
- package/dist/{chunk-7HHNGZS5.js → chunk-SQQD5MST.js} +4 -4
- package/dist/{chunk-QPWFVE3X.js → chunk-UK4RGH46.js} +2 -2
- package/dist/{chunk-JHTJPQSL.js → chunk-V673DFOL.js} +4 -4
- package/dist/{chunk-RQJMN5TJ.js → chunk-VWQCYOBS.js} +2 -2
- package/dist/{chunk-W2AEL4BJ.js → chunk-X4JEBMYN.js} +1 -1
- package/dist/{chunk-T5REPMNL.js → chunk-XCRET2GZ.js} +2 -2
- package/dist/{chunk-XHHTMFCX.js → chunk-YGZLRX5U.js} +1 -1
- package/dist/{chunk-SDU2IE22.js → chunk-YSM4EEUK.js} +12 -12
- package/dist/{chunk-VT4TTJPG.js → chunk-YXMGHGHR.js} +5 -5
- package/dist/{chunk-AVTI3FL5.js → chunk-ZF24JN7R.js} +1 -1
- package/dist/{claude-launcher-NTYHJUJM.js → claude-launcher-YRPW4SWA.js} +5 -5
- package/dist/{cli-K6XGL4EZ.js → cli-BC7JWQUQ.js} +149 -103
- package/dist/{command-7FAIIQGF.js → command-SQ4466SL.js} +19 -19
- package/dist/{config-QXMUWJAQ.js → config-MVA7YTFW.js} +5 -5
- package/dist/{connect-cmd-P5GASVAF.js → connect-cmd-KWXV2CGC.js} +8 -8
- package/dist/{container-start-CVP3NTDG.js → container-start-AQJ64LCF.js} +20 -20
- package/dist/{context-cleanup-BX5Y3AFL.js → context-cleanup-A2FGVVPH.js} +3 -3
- package/dist/{context-show-cmd-3EPJ7CJC.js → context-show-cmd-6F4UF4ND.js} +9 -9
- package/dist/{control-plane-launch-A3YCHQNQ.js → control-plane-launch-7SOH6IMA.js} +6 -6
- package/dist/{dist-ACTRIBVW.js → dist-IG2DKUJJ.js} +2 -2
- package/dist/{docker-ANW76BNW.js → docker-YKYQJHL2.js} +3 -3
- package/dist/{doctor-GJAHI3KU.js → doctor-4YZOP343.js} +20 -20
- package/dist/{emit-artifact-cmd-FDPJKGOO.js → emit-artifact-cmd-6QTTWBVN.js} +13 -13
- package/dist/{emit-cmd-OX6LYS6I.js → emit-cmd-3FG7FEGO.js} +6 -6
- package/dist/{emit-criteria-cmd-3SVGCMJN.js → emit-criteria-cmd-22VVCL2W.js} +10 -10
- package/dist/{emit-demo-cmd-6DF2QIAS.js → emit-demo-cmd-IQRS7BP2.js} +243 -51
- package/dist/{emit-finding-cmd-TLJWBGQE.js → emit-finding-cmd-TXDPJFVT.js} +10 -10
- package/dist/{emit-result-cmd-CJNVDV5V.js → emit-result-cmd-QHJDUC7J.js} +12 -12
- package/dist/{emit-step-cmd-347CZO7Y.js → emit-step-cmd-TQCOLXAA.js} +10 -10
- package/dist/{findings-cmd-LHTYEHYB.js → findings-cmd-EURKADAY.js} +10 -10
- package/dist/{fleet-readiness-KGR5AC2J.js → fleet-readiness-GXDSFTLP.js} +8 -8
- package/dist/{governing-source-JZQZUTMA.js → governing-source-IRRP7G5G.js} +13 -13
- package/dist/{hook-fast-6WDMNZG5.js → hook-fast-3IYSWDL4.js} +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-ZQ5B3TJZ.js → init-63X6ECKF.js} +19 -19
- package/dist/{init-XDOKWBL2.js → init-T64C4MID.js} +19 -19
- package/dist/{init-cmd-YMGW2WXJ.js → init-cmd-7CGCDLBZ.js} +18 -18
- package/dist/{init-update-X7YLZL6H.js → init-update-LFKSC6Y4.js} +17 -17
- package/dist/{install-QPA7DQHO.js → install-47Z7VNWP.js} +6 -6
- package/dist/{layout-JGF7MJHG.js → layout-44S4OYLK.js} +4 -4
- package/dist/{login-browser-3RIZQJY2.js → login-browser-BJZYKWHF.js} +2 -2
- package/dist/{loop-UJL2UCUM.js → loop-YJF27PUS.js} +28 -28
- package/dist/{machine-2YPAFFCH.js → machine-VBITNWTR.js} +19 -19
- package/dist/{machine-skills-AGERT2HN.js → machine-skills-GOKW3U5N.js} +4 -4
- package/dist/{runner-env-HOUXKWIJ.js → runner-env-ILP6BAC2.js} +7 -7
- package/dist/{runner-identity-KPUVTRLS.js → runner-identity-MF3AYBR6.js} +3 -3
- package/dist/{runner-key-FUJD66R6.js → runner-key-5SGBLTDJ.js} +19 -19
- package/dist/{session-sender-7B3ZDWMC.js → session-sender-2DYAJIMM.js} +13 -13
- package/dist/{spec-cmd-Q26NE22H.js → spec-cmd-E6SINBX6.js} +11 -11
- package/dist/{starter-pack-UBEC5LTE.js → starter-pack-FWTXE6XB.js} +5 -5
- package/dist/{status-2KNTILGQ.js → status-AYHBGIAP.js} +24 -24
- package/dist/{sync-cmd-SSUYTMLJ.js → sync-cmd-NGX2PGIW.js} +12 -12
- package/dist/{watch-L5NCO46E.js → watch-ZIWZVU3Z.js} +12 -12
- package/dist/{work-claim-cmd-NJNOQFQE.js → work-claim-cmd-CIVWB7EJ.js} +15 -15
- package/dist/{work-cmd-W7WEHMQJ.js → work-cmd-OO6K6ELP.js} +10 -10
- package/dist/{work-comment-cmd-SSUOGVDD.js → work-comment-cmd-SY7NY2CR.js} +10 -10
- package/dist/work-demo-cmd-Y7EU335L.js +62 -0
- package/dist/{work-logs-cmd-WPMWMDX6.js → work-logs-cmd-PWOFLTGD.js} +10 -10
- package/dist/{work-open-pr-cmd-NO5YLOXD.js → work-open-pr-cmd-AJUTKYWN.js} +11 -11
- package/dist/{work-pr-cmd-37B5KECR.js → work-pr-cmd-DH43AH3V.js} +10 -10
- package/dist/work-proofs-cmd-6W6DDAP6.js +111 -0
- package/dist/{work-stop-cmd-3BJLXUJ3.js → work-stop-cmd-WZHBEKE4.js} +10 -10
- package/package.json +1 -1
- package/skill-pack/maintained/outerlayer-amend/SKILL.md +36 -34
- package/skill-pack/maintained/outerlayer-amend/scripts/rerecord-demo.mjs +187 -0
- package/skill-pack/maintained/outerlayer-build/SKILL.md +7 -2
- package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +16 -4
- package/skill-pack/maintained/outerlayer-build/references/evidence.md +11 -1
- package/skill-pack/maintained/outerlayer-build/references/release.md +3 -2
- package/skill-pack/maintained/outerlayer-evidence/SKILL.md +21 -18
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import {
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
import { readNewestDemo } from './chunk-ER6KQCVJ.js';
|
|
4
|
+
import { runEmitArtifact } from './chunk-QKNFU5GA.js';
|
|
5
|
+
import './chunk-D3EDZPJR.js';
|
|
6
|
+
import './chunk-7UPMYRPS.js';
|
|
6
7
|
import './chunk-ESVW4MJY.js';
|
|
7
8
|
import './chunk-TBT347UY.js';
|
|
8
9
|
import { VoiceDownloadError, downloadPinned, sha256OfFile } from './chunk-2PGI6RDE.js';
|
|
9
10
|
import { VOICE_PACK_FILES, VOICE_PACK_VERSION } from './chunk-NE63JADS.js';
|
|
10
11
|
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
11
|
-
import { autoConnect } from './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import { resolveRepoIdentity } from './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
12
|
+
import { autoConnect } from './chunk-HLZMAJJD.js';
|
|
13
|
+
import './chunk-S5CNYXUA.js';
|
|
14
|
+
import './chunk-MPC2UAW2.js';
|
|
15
|
+
import { resolveRepoIdentity } from './chunk-NIY2UBT6.js';
|
|
16
|
+
import './chunk-LYGI3T66.js';
|
|
17
|
+
import './chunk-7V5GUEDU.js';
|
|
17
18
|
import './chunk-G2JWZDFA.js';
|
|
18
19
|
import { C } from './chunk-ANPNT6PM.js';
|
|
19
20
|
import { defaultFetch, resolveGatewayCredentials } from './chunk-6RKD7YZ6.js';
|
|
@@ -21,13 +22,13 @@ import './chunk-PJDQPF5N.js';
|
|
|
21
22
|
import './chunk-SOI6K5DY.js';
|
|
22
23
|
import './chunk-PA6CK6WQ.js';
|
|
23
24
|
import './chunk-BALIE3BA.js';
|
|
24
|
-
import './chunk-
|
|
25
|
+
import './chunk-UK4RGH46.js';
|
|
25
26
|
import './chunk-ZJSNLVCE.js';
|
|
26
27
|
import './chunk-2O5KA67H.js';
|
|
27
28
|
import './chunk-BKO6JEZI.js';
|
|
28
29
|
import './chunk-HCVLP7XA.js';
|
|
29
30
|
import './chunk-BJ3KTMDH.js';
|
|
30
|
-
import './chunk-
|
|
31
|
+
import './chunk-44V5SD4G.js';
|
|
31
32
|
import './chunk-5BHIBJDA.js';
|
|
32
33
|
import './chunk-CDDED64E.js';
|
|
33
34
|
import './chunk-RA3O54FC.js';
|
|
@@ -36,16 +37,16 @@ import './chunk-WZBHBH3J.js';
|
|
|
36
37
|
import './chunk-CRB3POP4.js';
|
|
37
38
|
import './chunk-URIZRCRY.js';
|
|
38
39
|
import './chunk-TUSYOL2O.js';
|
|
39
|
-
import './chunk-
|
|
40
|
-
import { ARTIFACT_MAX_BYTES, ARTIFACT_MAX_CAPTION_LENGTH, DEMO_RECORD_MEDIA_TYPE, DemoManifestSchema } from './chunk-
|
|
40
|
+
import './chunk-6CXNWKWD.js';
|
|
41
|
+
import { ARTIFACT_MAX_BYTES, ARTIFACT_MAX_CAPTION_LENGTH, DEMO_RECORD_MEDIA_TYPE, ARTIFACT_MAX_REPLACES_TARGETS, DemoManifestSchema, ARTIFACT_KINDS } from './chunk-F2D5BSXS.js';
|
|
41
42
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
42
43
|
import './chunk-HACGUL52.js';
|
|
43
44
|
import './chunk-MESOOLF4.js';
|
|
44
45
|
import { __commonJS, __require, __toESM } from './chunk-Z5GEFMRW.js';
|
|
45
46
|
import { createHash } from 'crypto';
|
|
46
|
-
import { mkdtempSync, statSync, readFileSync,
|
|
47
|
+
import { mkdtempSync, writeFileSync, statSync, readFileSync, rmSync, mkdirSync, accessSync, constants, realpathSync, existsSync, createReadStream, createWriteStream } from 'fs';
|
|
47
48
|
import { tmpdir } from 'os';
|
|
48
|
-
import { resolve, dirname, join, delimiter, normalize
|
|
49
|
+
import { resolve, dirname, join, relative, sep, isAbsolute, delimiter, normalize } from 'path';
|
|
49
50
|
import { execFileSync } from 'child_process';
|
|
50
51
|
import { createRequire as createRequire$1 } from 'module';
|
|
51
52
|
import { createGunzip } from 'zlib';
|
|
@@ -2155,16 +2156,16 @@ function checkManifest(params) {
|
|
|
2155
2156
|
var import_pngjs = __toESM(require_png(), 1);
|
|
2156
2157
|
var StillError = class extends Error {
|
|
2157
2158
|
};
|
|
2158
|
-
function readStill(dir, file, sha256) {
|
|
2159
|
+
function readStill(dir, file, sha256, what = "still") {
|
|
2159
2160
|
const path = resolve(dir, file);
|
|
2160
2161
|
let bytes;
|
|
2161
2162
|
try {
|
|
2162
2163
|
bytes = readFileSync(path);
|
|
2163
2164
|
} catch (err) {
|
|
2164
|
-
throw new StillError(`cannot read the
|
|
2165
|
+
throw new StillError(`cannot read the ${what} "${file}" (${path}): ${err instanceof Error ? err.message : String(err)}`);
|
|
2165
2166
|
}
|
|
2166
2167
|
if (createHash("sha256").update(bytes).digest("hex") !== sha256) {
|
|
2167
|
-
throw new StillError(`the
|
|
2168
|
+
throw new StillError(`the ${what} "${file}" does not match the SHA-256 in its manifest \u2014 the file changed after the run`);
|
|
2168
2169
|
}
|
|
2169
2170
|
return bytes;
|
|
2170
2171
|
}
|
|
@@ -2258,7 +2259,7 @@ function compareChapters(params) {
|
|
|
2258
2259
|
}
|
|
2259
2260
|
|
|
2260
2261
|
// src/demo/criteria.ts
|
|
2261
|
-
async function
|
|
2262
|
+
async function readRecordedCriteria(params) {
|
|
2262
2263
|
const endpoint = new URL(`/v1/work-items/${params.item}`, params.url).toString();
|
|
2263
2264
|
const response = await params.fetchImpl(endpoint, {
|
|
2264
2265
|
method: "GET",
|
|
@@ -2268,7 +2269,12 @@ async function readRecordedCriteriaIds(params) {
|
|
|
2268
2269
|
const body = await response.json();
|
|
2269
2270
|
const items = body.data?.criteria?.items;
|
|
2270
2271
|
if (!Array.isArray(items)) return void 0;
|
|
2271
|
-
|
|
2272
|
+
const kinds = ARTIFACT_KINDS;
|
|
2273
|
+
return new Map(
|
|
2274
|
+
items.flatMap(
|
|
2275
|
+
(entry) => typeof entry.id === "string" ? [[entry.id, kinds.includes(entry.proof) ? entry.proof : null]] : []
|
|
2276
|
+
)
|
|
2277
|
+
);
|
|
2272
2278
|
}
|
|
2273
2279
|
|
|
2274
2280
|
// src/demo/fit.ts
|
|
@@ -2432,6 +2438,36 @@ function createMediaTools(env, exec = execFileSync) {
|
|
|
2432
2438
|
};
|
|
2433
2439
|
}
|
|
2434
2440
|
|
|
2441
|
+
// src/demo/screenshots.ts
|
|
2442
|
+
function frameOf(chapter) {
|
|
2443
|
+
return "screenshot" in chapter ? chapter.screenshot : void 0;
|
|
2444
|
+
}
|
|
2445
|
+
function planScreenshots(params) {
|
|
2446
|
+
const { manifest, proofs } = params;
|
|
2447
|
+
return manifest.chapters.map((chapter) => {
|
|
2448
|
+
const id = chapter.criterionId;
|
|
2449
|
+
if (id === null) return void 0;
|
|
2450
|
+
const frame = frameOf(chapter);
|
|
2451
|
+
const declared = proofs?.get(id) ?? null;
|
|
2452
|
+
if (frame === void 0 && declared !== "screenshot") return void 0;
|
|
2453
|
+
if (proofs === void 0) return { skip: "the item's criteria could not be read, so no screenshot is bound" };
|
|
2454
|
+
if (frame === void 0) return { skip: `calls no demo.screenshot(), so no screenshot is bound to ${id}` };
|
|
2455
|
+
if (declared !== "screenshot") {
|
|
2456
|
+
return { skip: `${id} declares ${declared === null ? "no proof" : declared}, not screenshot, so the frame is not stored` };
|
|
2457
|
+
}
|
|
2458
|
+
if (chapter.checks.length === 0) return { skip: "ran no checks, so the frame is not stored" };
|
|
2459
|
+
if (chapter.checks.some((check) => !check.passed)) return { skip: "a check failed, so the frame is not stored" };
|
|
2460
|
+
return { bind: frame };
|
|
2461
|
+
});
|
|
2462
|
+
}
|
|
2463
|
+
function screenshotCaption(index, chapter, frame) {
|
|
2464
|
+
const head = `Demo chapter ${index + 1} screenshot: ${chapter.title}, after "`;
|
|
2465
|
+
const tail = `"${frame.masked ? ", with masks" : ""}`;
|
|
2466
|
+
const room = Math.max(1, ARTIFACT_MAX_CAPTION_LENGTH - head.length - tail.length);
|
|
2467
|
+
const text = chapter.checks[frame.check].text;
|
|
2468
|
+
return `${head}${text.length <= room ? text : `${text.slice(0, room - 1)}\u2026`}${tail}`;
|
|
2469
|
+
}
|
|
2470
|
+
|
|
2435
2471
|
// src/demo/record.ts
|
|
2436
2472
|
function chapterPassed(checks) {
|
|
2437
2473
|
return checks.length > 0 && checks.every((check) => check.passed);
|
|
@@ -2445,6 +2481,8 @@ function buildDemoRecord(manifest, video, stored, comparisons) {
|
|
|
2445
2481
|
}
|
|
2446
2482
|
return {
|
|
2447
2483
|
schemaVersion: 3,
|
|
2484
|
+
// Only a manifest of version 3 or later names its test. An older one stores a record with no test.
|
|
2485
|
+
..."test" in manifest ? { test: manifest.test } : {},
|
|
2448
2486
|
video,
|
|
2449
2487
|
chapters: manifest.chapters.map((chapter, index) => {
|
|
2450
2488
|
const comparison = comparisons[index];
|
|
@@ -2460,11 +2498,17 @@ function buildDemoRecord(manifest, video, stored, comparisons) {
|
|
|
2460
2498
|
bound: stored[index].bound,
|
|
2461
2499
|
comparable: comparison.comparable,
|
|
2462
2500
|
stills: comparison.stills,
|
|
2463
|
-
...comparison.difference === void 0 ? {} : { difference: comparison.difference }
|
|
2501
|
+
...comparison.difference === void 0 ? {} : { difference: comparison.difference },
|
|
2502
|
+
...recordedFrame(chapter, stored[index])
|
|
2464
2503
|
};
|
|
2465
2504
|
})
|
|
2466
2505
|
};
|
|
2467
2506
|
}
|
|
2507
|
+
function recordedFrame(chapter, stored) {
|
|
2508
|
+
const frame = frameOf(chapter);
|
|
2509
|
+
if (frame === void 0 || stored.screenshot === void 0) return {};
|
|
2510
|
+
return { screenshot: { artifactId: stored.screenshot.artifactId, check: frame.check, sha256: frame.sha256, fullPage: frame.fullPage, masked: frame.masked } };
|
|
2511
|
+
}
|
|
2468
2512
|
var PUNCTUATION = ';:,.!?\xA1\xBF\u2014\u2026"\xAB\xBB\u201C\u201D(){}[]';
|
|
2469
2513
|
var PUNCTUATION_RUN = new RegExp(`(\\s*[${PUNCTUATION.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}]+\\s*)+`, "g");
|
|
2470
2514
|
function splitYear(text) {
|
|
@@ -2647,9 +2691,9 @@ async function extractNpmTarball(tarball, destDir, keep = () => true) {
|
|
|
2647
2691
|
padding = (BLOCK - entry.size % BLOCK) % BLOCK;
|
|
2648
2692
|
collected = [];
|
|
2649
2693
|
if (entry.type !== "0" && entry.type !== "\0") return;
|
|
2650
|
-
const
|
|
2651
|
-
if (
|
|
2652
|
-
const target = normalize(join(destDir,
|
|
2694
|
+
const relative2 = entry.path.split("/").slice(1).join("/");
|
|
2695
|
+
if (relative2 === "" || !keep(relative2)) return;
|
|
2696
|
+
const target = normalize(join(destDir, relative2));
|
|
2653
2697
|
if (!target.startsWith(normalize(destDir) + sep)) throw new Error(`the archive has a path outside its folder: ${entry.path}`);
|
|
2654
2698
|
mkdirSync(dirname(target), { recursive: true });
|
|
2655
2699
|
sink = createWriteStream(target, { mode: 493 });
|
|
@@ -2843,7 +2887,10 @@ async function runEmitDemo(opts) {
|
|
|
2843
2887
|
}
|
|
2844
2888
|
const fetchImpl = opts.fetchImpl ?? defaultFetch;
|
|
2845
2889
|
const media = opts.media ?? createMediaTools(env);
|
|
2846
|
-
const
|
|
2890
|
+
const item = resolveItem({ opts, env, cwd, home });
|
|
2891
|
+
const retiring = opts.replaces === void 0 ? void 0 : await readRetiring({ opts, item, env, cwd, home, fetchImpl });
|
|
2892
|
+
const proofs = await recordedCriteria({ opts, item, env, cwd, home, fetchImpl, say });
|
|
2893
|
+
const recordedIds = proofs === void 0 ? void 0 : new Set(proofs.keys());
|
|
2847
2894
|
let videoSeconds;
|
|
2848
2895
|
try {
|
|
2849
2896
|
videoSeconds = media.probe(videoPath);
|
|
@@ -2852,8 +2899,16 @@ async function runEmitDemo(opts) {
|
|
|
2852
2899
|
}
|
|
2853
2900
|
const problem = checkManifest({ manifest, videoSeconds, recordedIds });
|
|
2854
2901
|
if (problem !== void 0) throw new EmitDemoError(problem);
|
|
2902
|
+
const manifestDir = dirname(manifestPath);
|
|
2903
|
+
const frames = decideFrames({ manifest, proofs, dir: manifestDir, say });
|
|
2855
2904
|
const work = mkdtempSync(join(tmpdir(), "outerlayer-demo-"));
|
|
2856
2905
|
try {
|
|
2906
|
+
const framePaths = frames.map((frame, index) => {
|
|
2907
|
+
if (frame.kind !== "bind") return void 0;
|
|
2908
|
+
const path = join(work, `screenshot-${index + 1}.png`);
|
|
2909
|
+
writeFileSync(path, frame.bytes);
|
|
2910
|
+
return path;
|
|
2911
|
+
});
|
|
2857
2912
|
const speaker = narrated ? opts.speaker ?? await realSpeaker({ env, home, work, say, installedRoot: opts.installedVoiceRoot }) : void 0;
|
|
2858
2913
|
const spoken = [];
|
|
2859
2914
|
for (const [index, chapter] of manifest.chapters.entries()) {
|
|
@@ -2944,7 +2999,15 @@ async function runEmitDemo(opts) {
|
|
|
2944
2999
|
bound: bound[index]
|
|
2945
3000
|
}));
|
|
2946
3001
|
}
|
|
2947
|
-
const
|
|
3002
|
+
const frameIds = frames.map((frame) => frame.kind === "bind" ? idFor(`screenshot-${frame.index + 1}`, framePaths[frame.index]) : void 0);
|
|
3003
|
+
const plannedRecord = JSON.stringify(
|
|
3004
|
+
buildDemoRecord(
|
|
3005
|
+
manifest,
|
|
3006
|
+
video,
|
|
3007
|
+
withFrames(stored, frameIds),
|
|
3008
|
+
comparisons
|
|
3009
|
+
)
|
|
3010
|
+
);
|
|
2948
3011
|
const recordBytes = Buffer.byteLength(plannedRecord);
|
|
2949
3012
|
if (recordBytes > ARTIFACT_MAX_BYTES) {
|
|
2950
3013
|
throw new EmitDemoError(
|
|
@@ -2964,7 +3027,8 @@ async function runEmitDemo(opts) {
|
|
|
2964
3027
|
env,
|
|
2965
3028
|
fetchImpl: opts.fetchImpl
|
|
2966
3029
|
};
|
|
2967
|
-
const
|
|
3030
|
+
const replacing = retiring === void 0 ? void 0 : planReplaces(retiring, manifest, wholeFits, frames.map((frame) => frame.kind === "bind"));
|
|
3031
|
+
const total = manifest.chapters.length + (wholeFits ? 1 : 0) + 1 + frameIds.filter((id) => id !== void 0).length;
|
|
2968
3032
|
const unit = "artifacts";
|
|
2969
3033
|
let emitted = 0;
|
|
2970
3034
|
const emitStep = async (params) => {
|
|
@@ -2977,12 +3041,15 @@ async function runEmitDemo(opts) {
|
|
|
2977
3041
|
file: wholePlan.output,
|
|
2978
3042
|
artifactId: video.artifactId,
|
|
2979
3043
|
caption: `Demo: ${manifest.chapters.length} chapter${manifest.chapters.length === 1 ? "" : "s"}, ${(wholePlan.end - wholePlan.start).toFixed(1)} s`,
|
|
2980
|
-
blobOptional: true
|
|
3044
|
+
blobOptional: true,
|
|
3045
|
+
...replaceOption(replacing?.video)
|
|
2981
3046
|
});
|
|
2982
3047
|
video = { artifactId: artifactIdOf(wholeResult) };
|
|
2983
3048
|
}
|
|
2984
3049
|
const failures = [];
|
|
2985
3050
|
const clips = [];
|
|
3051
|
+
const screenshots = [];
|
|
3052
|
+
const storedFrames = [];
|
|
2986
3053
|
for (const [index, chapter] of manifest.chapters.entries()) {
|
|
2987
3054
|
const failed = chapter.checks.filter((check) => !check.passed);
|
|
2988
3055
|
if (failed.length > 0) {
|
|
@@ -2999,8 +3066,27 @@ async function runEmitDemo(opts) {
|
|
|
2999
3066
|
caption: caption.slice(0, ARTIFACT_MAX_CAPTION_LENGTH),
|
|
3000
3067
|
...bound[index] ? { criterionId: chapter.criterionId } : {},
|
|
3001
3068
|
...wholeFits ? { range: stored[index].range } : {},
|
|
3002
|
-
blobOptional: true
|
|
3069
|
+
blobOptional: true,
|
|
3070
|
+
...replaceOption(replacing?.chapters[index])
|
|
3003
3071
|
});
|
|
3072
|
+
const frame = frames[index];
|
|
3073
|
+
if (frame.kind === "bind") {
|
|
3074
|
+
const shot = await emitStep({
|
|
3075
|
+
file: framePaths[index],
|
|
3076
|
+
filename: `screenshot-${String(index + 1).padStart(2, "0")}.png`,
|
|
3077
|
+
mediaType: "image/png",
|
|
3078
|
+
artifactId: frameIds[index],
|
|
3079
|
+
caption: screenshotCaption(index, chapter, frame.frame),
|
|
3080
|
+
criterionId: chapter.criterionId,
|
|
3081
|
+
blobOptional: true,
|
|
3082
|
+
...replaceOption(replacing?.screenshots[index])
|
|
3083
|
+
});
|
|
3084
|
+
storedFrames.push({ artifactId: artifactIdOf(shot) });
|
|
3085
|
+
screenshots.push({ chapter: index + 1, criterionId: chapter.criterionId, artifactId: artifactIdOf(shot) });
|
|
3086
|
+
} else {
|
|
3087
|
+
storedFrames.push(void 0);
|
|
3088
|
+
if (frame.kind === "skip") screenshots.push({ chapter: index + 1, criterionId: chapter.criterionId, reason: frame.reason });
|
|
3089
|
+
}
|
|
3004
3090
|
clips.push({
|
|
3005
3091
|
clipArtifactId: artifactIdOf(result),
|
|
3006
3092
|
bound: bound[index],
|
|
@@ -3012,7 +3098,10 @@ async function runEmitDemo(opts) {
|
|
|
3012
3098
|
const record = buildDemoRecord(
|
|
3013
3099
|
manifest,
|
|
3014
3100
|
video,
|
|
3015
|
-
|
|
3101
|
+
withFrames(
|
|
3102
|
+
clips.map((clip) => ({ artifactId: clip.clipArtifactId, range: clip.range, bound: clip.bound })),
|
|
3103
|
+
storedFrames.map((stored2) => stored2?.artifactId)
|
|
3104
|
+
),
|
|
3016
3105
|
comparisons
|
|
3017
3106
|
);
|
|
3018
3107
|
const recordPath = join(work, "demo.json");
|
|
@@ -3022,7 +3111,8 @@ async function runEmitDemo(opts) {
|
|
|
3022
3111
|
artifactId: idFor("record", recordPath),
|
|
3023
3112
|
caption: `Demo record: ${clips.length} chapter${clips.length === 1 ? "" : "s"}, ${clips.filter((clip) => clip.bound).length} bound to a criterion`,
|
|
3024
3113
|
mediaType: DEMO_RECORD_MEDIA_TYPE,
|
|
3025
|
-
blobOptional: true
|
|
3114
|
+
blobOptional: true,
|
|
3115
|
+
...replaceOption(replacing?.record)
|
|
3026
3116
|
});
|
|
3027
3117
|
const recordArtifactId = artifactIdOf(recorded);
|
|
3028
3118
|
const exitCode = failures.length > 0 ? 1 : 0;
|
|
@@ -3034,14 +3124,16 @@ async function runEmitDemo(opts) {
|
|
|
3034
3124
|
});
|
|
3035
3125
|
const compared = comparisons.filter((comparison) => comparison.comparable !== "not checked").length;
|
|
3036
3126
|
const boundCount = clips.filter((clip) => clip.bound).length;
|
|
3037
|
-
const
|
|
3127
|
+
const frameCount = screenshots.filter((entry) => entry.artifactId !== void 0).length;
|
|
3128
|
+
const frameNote = frameCount === 0 ? "" : `, ${frameCount} screenshot${frameCount === 1 ? "" : "s"}`;
|
|
3129
|
+
const what = wholeFits ? `1 video, ${clips.length} chapter${clips.length === 1 ? "" : "s"}, ${boundCount} bound to a criterion${frameNote}` : `whole video left out for its size (${wholeBytes} bytes) ${C.dim}\xB7${C.reset} ${clips.length} clip${clips.length === 1 ? "" : "s"}, ${boundCount} bound to a criterion${frameNote}`;
|
|
3038
3130
|
const summary = `${C.green}\u2713${C.reset} demo emitted ${C.dim}\xB7${C.reset} ${what} ${C.dim}\xB7${C.reset} record ${recordArtifactId}`;
|
|
3039
|
-
const output = opts.json ? JSON.stringify({ recordArtifactId, video, clips, failures, differences, exitCode }) : [
|
|
3131
|
+
const output = opts.json ? JSON.stringify({ recordArtifactId, video, clips, screenshots, failures, differences, exitCode }) : [
|
|
3040
3132
|
...differences.map((line) => `${C.yellow}!${C.reset} ${line}`),
|
|
3041
3133
|
summary + (opts.compare === void 0 ? "" : ` ${C.dim}\xB7${C.reset} ${compared} of ${clips.length} chapter${clips.length === 1 ? "" : "s"} compared, ${comparisons.filter((comparison) => comparison.comparable === "yes").length} comparable`)
|
|
3042
3134
|
].join("\n");
|
|
3043
3135
|
if (!opts.quiet) process.stdout.write(output + "\n");
|
|
3044
|
-
return { exitCode, output, failures, recordArtifactId, video, clips, differences };
|
|
3136
|
+
return { exitCode, output, failures, recordArtifactId, video, clips, screenshots, differences };
|
|
3045
3137
|
} finally {
|
|
3046
3138
|
rmSync(work, { recursive: true, force: true });
|
|
3047
3139
|
}
|
|
@@ -3087,29 +3179,35 @@ async function emitOrExplain(emit, opts, emitted, total, unit) {
|
|
|
3087
3179
|
);
|
|
3088
3180
|
}
|
|
3089
3181
|
}
|
|
3182
|
+
function resolveItem(params) {
|
|
3183
|
+
const { opts, env, cwd, home } = params;
|
|
3184
|
+
if (opts.item !== void 0) return opts.item;
|
|
3185
|
+
const identity = resolveRepoIdentity(cwd);
|
|
3186
|
+
const sessionId = detectActiveSession({
|
|
3187
|
+
env,
|
|
3188
|
+
home,
|
|
3189
|
+
cwds: identity.repoRoot !== void 0 ? [identity.repoRoot, cwd] : [cwd],
|
|
3190
|
+
nowMs: Date.now()
|
|
3191
|
+
});
|
|
3192
|
+
return sessionId === void 0 ? void 0 : launchedItemForSession(sessionId, home);
|
|
3193
|
+
}
|
|
3194
|
+
async function gatewayFor(params) {
|
|
3195
|
+
const { opts, env, cwd, home } = params;
|
|
3196
|
+
const refusal = await autoConnect({ url: opts.url, apiKey: opts.apiKey, appId: opts.appId, cwd, home, env, fetchImpl: opts.fetchImpl });
|
|
3197
|
+
if (refusal !== void 0) throw new Error(refusal);
|
|
3198
|
+
const resolved = resolveGatewayCredentials({ url: opts.url, apiKey: opts.apiKey, appId: opts.appId, cwd, home, env });
|
|
3199
|
+
if (!resolved.ok) throw new Error(resolved.message);
|
|
3200
|
+
return { url: resolved.url, apiKey: resolved.credential, appId: resolved.appId };
|
|
3201
|
+
}
|
|
3090
3202
|
async function recordedCriteria(params) {
|
|
3091
|
-
const { opts, env, cwd, home, fetchImpl, say } = params;
|
|
3092
|
-
let item = opts.item;
|
|
3093
|
-
if (item === void 0) {
|
|
3094
|
-
const identity = resolveRepoIdentity(cwd);
|
|
3095
|
-
const sessionId = detectActiveSession({
|
|
3096
|
-
env,
|
|
3097
|
-
home,
|
|
3098
|
-
cwds: identity.repoRoot !== void 0 ? [identity.repoRoot, cwd] : [cwd],
|
|
3099
|
-
nowMs: Date.now()
|
|
3100
|
-
});
|
|
3101
|
-
item = sessionId === void 0 ? void 0 : launchedItemForSession(sessionId, home);
|
|
3102
|
-
}
|
|
3203
|
+
const { opts, item, env, cwd, home, fetchImpl, say } = params;
|
|
3103
3204
|
if (item === void 0) {
|
|
3104
3205
|
say(`${C.yellow}!${C.reset} no work item, so the chapters' criterion ids are not checked against the recorded criteria (pass --item <number>)`);
|
|
3105
3206
|
return void 0;
|
|
3106
3207
|
}
|
|
3107
3208
|
try {
|
|
3108
|
-
const
|
|
3109
|
-
|
|
3110
|
-
const resolved = resolveGatewayCredentials({ url: opts.url, apiKey: opts.apiKey, appId: opts.appId, cwd, home, env });
|
|
3111
|
-
if (!resolved.ok) throw new Error(resolved.message);
|
|
3112
|
-
const ids = await readRecordedCriteriaIds({ url: resolved.url, apiKey: resolved.credential, appId: resolved.appId, item, fetchImpl });
|
|
3209
|
+
const gateway = await gatewayFor({ opts, env, cwd, home });
|
|
3210
|
+
const ids = await readRecordedCriteria({ url: gateway.url, apiKey: gateway.apiKey, appId: gateway.appId, item, fetchImpl });
|
|
3113
3211
|
if (ids === void 0) say(`${C.yellow}!${C.reset} item ${item} has no recorded criteria, so the chapters' criterion ids are not checked`);
|
|
3114
3212
|
return ids;
|
|
3115
3213
|
} catch (err) {
|
|
@@ -3117,6 +3215,69 @@ async function recordedCriteria(params) {
|
|
|
3117
3215
|
return void 0;
|
|
3118
3216
|
}
|
|
3119
3217
|
}
|
|
3218
|
+
async function readRetiring(params) {
|
|
3219
|
+
const { opts, item, env, cwd, home, fetchImpl } = params;
|
|
3220
|
+
const replaces = opts.replaces;
|
|
3221
|
+
if (item === void 0) throw new EmitDemoError("--replaces needs the work item whose demo it replaces; run in a recorded session or pass --item <number>");
|
|
3222
|
+
let newest;
|
|
3223
|
+
try {
|
|
3224
|
+
const gateway = await gatewayFor({ opts, env, cwd, home });
|
|
3225
|
+
newest = await readNewestDemo({ ...gateway, item, fetchImpl });
|
|
3226
|
+
} catch (err) {
|
|
3227
|
+
throw new EmitDemoError(`could not read the demo of item ${item} to replace it: ${err instanceof Error ? err.message : String(err)}`);
|
|
3228
|
+
}
|
|
3229
|
+
if (newest === null) throw new EmitDemoError(`item ${item} has no demo to replace; leave out --replaces`);
|
|
3230
|
+
if (newest.artifactId !== replaces) {
|
|
3231
|
+
throw new EmitDemoError(`--replaces ${replaces} is not the newest demo record of item ${item}; the newest is ${newest.artifactId}`);
|
|
3232
|
+
}
|
|
3233
|
+
const record = newest.record;
|
|
3234
|
+
if (record === null) {
|
|
3235
|
+
throw new EmitDemoError(
|
|
3236
|
+
`the stored record ${newest.artifactId} of item ${item} cannot be read, so the artifacts it names cannot be replaced; retire them with emit artifact --replaces, or leave out --replaces`
|
|
3237
|
+
);
|
|
3238
|
+
}
|
|
3239
|
+
const live = newest.liveArtifactIds === void 0 ? void 0 : new Set(newest.liveArtifactIds);
|
|
3240
|
+
const isLive = (id) => live === void 0 || live.has(id);
|
|
3241
|
+
const videoId = record.schemaVersion === 3 && "artifactId" in record.video ? record.video.artifactId : void 0;
|
|
3242
|
+
return {
|
|
3243
|
+
recordId: newest.artifactId,
|
|
3244
|
+
videoId: videoId !== void 0 && isLive(videoId) ? videoId : void 0,
|
|
3245
|
+
chapters: record.chapters.map((chapter) => {
|
|
3246
|
+
const clipId = "artifactId" in chapter ? chapter.artifactId : chapter.clipArtifactId;
|
|
3247
|
+
const frameId = "screenshot" in chapter ? chapter.screenshot.artifactId : void 0;
|
|
3248
|
+
return {
|
|
3249
|
+
criterionId: chapter.criterionId,
|
|
3250
|
+
...isLive(clipId) ? { artifactId: clipId } : {},
|
|
3251
|
+
...frameId !== void 0 && isLive(frameId) ? { screenshotId: frameId } : {}
|
|
3252
|
+
};
|
|
3253
|
+
}).filter((chapter) => chapter.artifactId !== void 0 || chapter.screenshotId !== void 0)
|
|
3254
|
+
};
|
|
3255
|
+
}
|
|
3256
|
+
function planReplaces(old, manifest, wholeFits, storesFrame) {
|
|
3257
|
+
const taken = /* @__PURE__ */ new Set();
|
|
3258
|
+
const take = (ids) => {
|
|
3259
|
+
for (const id of ids) taken.add(id);
|
|
3260
|
+
return ids;
|
|
3261
|
+
};
|
|
3262
|
+
const video = wholeFits && old.videoId !== void 0 ? take([old.videoId]) : [];
|
|
3263
|
+
const named = (pick) => (chapter) => chapter.criterionId === null ? [] : take(old.chapters.filter((entry) => entry.criterionId === chapter.criterionId).flatMap((entry) => pick(entry) ?? []));
|
|
3264
|
+
const chapters = manifest.chapters.map(named((entry) => entry.artifactId));
|
|
3265
|
+
const screenshots = manifest.chapters.map((chapter, index) => storesFrame[index] === true ? named((entry) => entry.screenshotId)(chapter) : []);
|
|
3266
|
+
const left = [
|
|
3267
|
+
...old.videoId === void 0 ? [] : [old.videoId],
|
|
3268
|
+
...old.chapters.flatMap((entry) => [entry.artifactId, entry.screenshotId].filter((id) => id !== void 0))
|
|
3269
|
+
];
|
|
3270
|
+
const record = [old.recordId, ...new Set(left.filter((id) => !taken.has(id)))];
|
|
3271
|
+
for (const targets of [video, ...chapters, ...screenshots, record]) {
|
|
3272
|
+
if (targets.length > ARTIFACT_MAX_REPLACES_TARGETS) {
|
|
3273
|
+
throw new EmitDemoError(
|
|
3274
|
+
`the old demo leaves ${targets.length} artifacts to retire in one emit, over the limit of ${ARTIFACT_MAX_REPLACES_TARGETS} \u2014 record the demo with fewer chapters, or retire the old artifacts with emit artifact --replaces`
|
|
3275
|
+
);
|
|
3276
|
+
}
|
|
3277
|
+
}
|
|
3278
|
+
return { video, chapters, screenshots, record };
|
|
3279
|
+
}
|
|
3280
|
+
var replaceOption = (targets) => targets === void 0 || targets.length === 0 ? {} : { replaces: targets.join(",") };
|
|
3120
3281
|
async function realSpeaker(params) {
|
|
3121
3282
|
const { env, home, work, say, installedRoot } = params;
|
|
3122
3283
|
try {
|
|
@@ -3129,5 +3290,36 @@ async function realSpeaker(params) {
|
|
|
3129
3290
|
throw err;
|
|
3130
3291
|
}
|
|
3131
3292
|
}
|
|
3293
|
+
function withFrames(entries, frameIds) {
|
|
3294
|
+
return entries.map((entry, index) => frameIds[index] === void 0 ? entry : { ...entry, screenshot: { artifactId: frameIds[index] } });
|
|
3295
|
+
}
|
|
3296
|
+
function decideFrames(params) {
|
|
3297
|
+
const { manifest, proofs, dir, say } = params;
|
|
3298
|
+
const decisions = planScreenshots({ manifest, proofs });
|
|
3299
|
+
return decisions.map((decision, index) => {
|
|
3300
|
+
if (decision === void 0) return { kind: "none" };
|
|
3301
|
+
const chapter = manifest.chapters[index];
|
|
3302
|
+
const skip = (reason) => {
|
|
3303
|
+
say(`${C.yellow}!${C.reset} ${chapterLabel(index, chapter.title)}: ${reason}`);
|
|
3304
|
+
return { kind: "skip", reason };
|
|
3305
|
+
};
|
|
3306
|
+
if ("skip" in decision) return skip(decision.skip);
|
|
3307
|
+
const inside = relative(dir, resolve(dir, decision.bind.file));
|
|
3308
|
+
if (inside === ".." || inside.startsWith(`..${sep}`) || isAbsolute(inside)) {
|
|
3309
|
+
throw new EmitDemoError(`${chapterLabel(index, chapter.title)}: the frame "${decision.bind.file}" is outside the manifest's folder`);
|
|
3310
|
+
}
|
|
3311
|
+
let bytes;
|
|
3312
|
+
try {
|
|
3313
|
+
bytes = readStill(dir, decision.bind.file, decision.bind.sha256, "frame");
|
|
3314
|
+
} catch (err) {
|
|
3315
|
+
if (err instanceof StillError) throw new EmitDemoError(`${chapterLabel(index, chapter.title)}: ${err.message}`);
|
|
3316
|
+
throw err;
|
|
3317
|
+
}
|
|
3318
|
+
if (bytes.length > ARTIFACT_MAX_BYTES) {
|
|
3319
|
+
return skip(`the frame is ${(bytes.length / MIB).toFixed(1)} MiB, over the ${ARTIFACT_MAX_BYTES / MIB} MiB limit, so it is not stored`);
|
|
3320
|
+
}
|
|
3321
|
+
return { kind: "bind", index, frame: decision.bind, bytes };
|
|
3322
|
+
});
|
|
3323
|
+
}
|
|
3132
3324
|
|
|
3133
3325
|
export { EmitDemoError, runEmitDemo };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { EmitFindingError, detectUploadSessionId, refuseRemovedFindingFlags, resolveUploadTarget, runEmitFinding, runEmitFindings } from './chunk-
|
|
3
|
+
export { EmitFindingError, detectUploadSessionId, refuseRemovedFindingFlags, resolveUploadTarget, runEmitFinding, runEmitFindings } from './chunk-6SPD266O.js';
|
|
4
4
|
import './chunk-ESVW4MJY.js';
|
|
5
5
|
import './chunk-IP7BIBXJ.js';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
6
|
+
import './chunk-HLZMAJJD.js';
|
|
7
|
+
import './chunk-S5CNYXUA.js';
|
|
8
|
+
import './chunk-MPC2UAW2.js';
|
|
9
|
+
import './chunk-NIY2UBT6.js';
|
|
10
|
+
import './chunk-LYGI3T66.js';
|
|
11
|
+
import './chunk-7V5GUEDU.js';
|
|
12
12
|
import './chunk-G2JWZDFA.js';
|
|
13
13
|
import './chunk-ANPNT6PM.js';
|
|
14
14
|
import './chunk-6RKD7YZ6.js';
|
|
@@ -18,15 +18,15 @@ import './chunk-PA6CK6WQ.js';
|
|
|
18
18
|
import './chunk-BALIE3BA.js';
|
|
19
19
|
import './chunk-ZJSNLVCE.js';
|
|
20
20
|
import './chunk-BJ3KTMDH.js';
|
|
21
|
-
import './chunk-
|
|
21
|
+
import './chunk-44V5SD4G.js';
|
|
22
22
|
import './chunk-5BHIBJDA.js';
|
|
23
23
|
import './chunk-CDDED64E.js';
|
|
24
24
|
import './chunk-RA3O54FC.js';
|
|
25
25
|
import './chunk-T2Q7ISPE.js';
|
|
26
26
|
import './chunk-WZBHBH3J.js';
|
|
27
27
|
import './chunk-CRB3POP4.js';
|
|
28
|
-
import './chunk-
|
|
29
|
-
import './chunk-
|
|
28
|
+
import './chunk-6CXNWKWD.js';
|
|
29
|
+
import './chunk-F2D5BSXS.js';
|
|
30
30
|
import './chunk-VNVZDWO3.js';
|
|
31
31
|
import './chunk-HACGUL52.js';
|
|
32
32
|
import './chunk-MESOOLF4.js';
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { zodProblem } from './chunk-I3LTIAOR.js';
|
|
4
|
-
import { detectCi } from './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import { detectCi } from './chunk-D3EDZPJR.js';
|
|
5
|
+
import './chunk-7UPMYRPS.js';
|
|
6
6
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
7
7
|
import './chunk-TBT347UY.js';
|
|
8
8
|
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
9
|
-
import { autoConnect } from './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import { resolveRepoIdentity } from './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
9
|
+
import { autoConnect } from './chunk-HLZMAJJD.js';
|
|
10
|
+
import './chunk-S5CNYXUA.js';
|
|
11
|
+
import './chunk-MPC2UAW2.js';
|
|
12
|
+
import { resolveRepoIdentity } from './chunk-NIY2UBT6.js';
|
|
13
|
+
import './chunk-LYGI3T66.js';
|
|
14
|
+
import './chunk-7V5GUEDU.js';
|
|
15
15
|
import './chunk-G2JWZDFA.js';
|
|
16
16
|
import { C } from './chunk-ANPNT6PM.js';
|
|
17
17
|
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-6RKD7YZ6.js';
|
|
@@ -19,13 +19,13 @@ import './chunk-PJDQPF5N.js';
|
|
|
19
19
|
import './chunk-SOI6K5DY.js';
|
|
20
20
|
import './chunk-PA6CK6WQ.js';
|
|
21
21
|
import './chunk-BALIE3BA.js';
|
|
22
|
-
import './chunk-
|
|
22
|
+
import './chunk-UK4RGH46.js';
|
|
23
23
|
import './chunk-ZJSNLVCE.js';
|
|
24
24
|
import './chunk-2O5KA67H.js';
|
|
25
25
|
import './chunk-BKO6JEZI.js';
|
|
26
26
|
import './chunk-HCVLP7XA.js';
|
|
27
27
|
import './chunk-BJ3KTMDH.js';
|
|
28
|
-
import './chunk-
|
|
28
|
+
import './chunk-44V5SD4G.js';
|
|
29
29
|
import './chunk-5BHIBJDA.js';
|
|
30
30
|
import './chunk-CDDED64E.js';
|
|
31
31
|
import './chunk-RA3O54FC.js';
|
|
@@ -34,8 +34,8 @@ import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
|
34
34
|
import './chunk-CRB3POP4.js';
|
|
35
35
|
import './chunk-URIZRCRY.js';
|
|
36
36
|
import './chunk-TUSYOL2O.js';
|
|
37
|
-
import './chunk-
|
|
38
|
-
import { EmittedNameSchema, EMITTED_RESULT_MAX_LINK_LENGTH, EMITTED_RESULTS, itemsAllowResult, EMITTED_RESULT_MAX_BODY_LENGTH, CheckItemsSchema } from './chunk-
|
|
37
|
+
import './chunk-6CXNWKWD.js';
|
|
38
|
+
import { EmittedNameSchema, EMITTED_RESULT_MAX_LINK_LENGTH, EMITTED_RESULTS, itemsAllowResult, EMITTED_RESULT_MAX_BODY_LENGTH, CheckItemsSchema } from './chunk-F2D5BSXS.js';
|
|
39
39
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
40
40
|
import './chunk-HACGUL52.js';
|
|
41
41
|
import './chunk-MESOOLF4.js';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { EmitStepError, runEmitStep, uploadSpooledSteps } from './chunk-
|
|
3
|
+
export { EmitStepError, runEmitStep, uploadSpooledSteps } from './chunk-7UPMYRPS.js';
|
|
4
4
|
import './chunk-ESVW4MJY.js';
|
|
5
5
|
import './chunk-IP7BIBXJ.js';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
6
|
+
import './chunk-HLZMAJJD.js';
|
|
7
|
+
import './chunk-S5CNYXUA.js';
|
|
8
|
+
import './chunk-MPC2UAW2.js';
|
|
9
|
+
import './chunk-NIY2UBT6.js';
|
|
10
|
+
import './chunk-LYGI3T66.js';
|
|
11
|
+
import './chunk-7V5GUEDU.js';
|
|
12
12
|
import './chunk-G2JWZDFA.js';
|
|
13
13
|
import './chunk-ANPNT6PM.js';
|
|
14
14
|
import './chunk-6RKD7YZ6.js';
|
|
@@ -17,15 +17,15 @@ import './chunk-SOI6K5DY.js';
|
|
|
17
17
|
import './chunk-PA6CK6WQ.js';
|
|
18
18
|
import './chunk-BALIE3BA.js';
|
|
19
19
|
import './chunk-BJ3KTMDH.js';
|
|
20
|
-
import './chunk-
|
|
20
|
+
import './chunk-44V5SD4G.js';
|
|
21
21
|
import './chunk-5BHIBJDA.js';
|
|
22
22
|
import './chunk-CDDED64E.js';
|
|
23
23
|
import './chunk-RA3O54FC.js';
|
|
24
24
|
import './chunk-T2Q7ISPE.js';
|
|
25
25
|
import './chunk-WZBHBH3J.js';
|
|
26
26
|
import './chunk-CRB3POP4.js';
|
|
27
|
-
import './chunk-
|
|
28
|
-
import './chunk-
|
|
27
|
+
import './chunk-6CXNWKWD.js';
|
|
28
|
+
import './chunk-F2D5BSXS.js';
|
|
29
29
|
import './chunk-VNVZDWO3.js';
|
|
30
30
|
import './chunk-HACGUL52.js';
|
|
31
31
|
import './chunk-MESOOLF4.js';
|