@outerlayer/cli 0.34.0-next.20261026200155 → 0.34.0-next.20261026214555
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/build-info.json +1 -1
- package/dist/{check-FOWN6M3C.js → check-WK5P7CEG.js} +4 -4
- package/dist/{chunk-FVF2LMVG.js → chunk-C2LMT42U.js} +4 -4
- package/dist/{chunk-KR2TIRNQ.js → chunk-LIM35C33.js} +30 -16
- package/dist/{chunk-RNMCFAYH.js → chunk-QVH4RRUQ.js} +1 -1
- package/dist/{chunk-5ZBVKRDK.js → chunk-RRCLYSCM.js} +1 -1
- package/dist/{chunk-JKLSQOYO.js → chunk-VCIB3HUZ.js} +5 -1
- package/dist/{cli-3RDQSLYI.js → cli-WYHBUV6E.js} +10 -10
- package/dist/{container-start-RLX2PL3C.js → container-start-UNY3PO5U.js} +3 -3
- package/dist/{host-checks-V25YUP4Q.js → host-checks-HAXPZSDU.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{loop-UVONXWXB.js → loop-KP5CI2JH.js} +4 -4
- package/dist/{status-YCQHAY45.js → status-TVN6CDEF.js} +1 -1
- package/dist/{update-steps-MC3IUHW7.js → update-steps-HPMQMEQR.js} +2 -2
- package/dist/{work-proofs-cmd-LIXV252G.js → work-proofs-cmd-BO6Q2LVK.js} +1 -1
- package/dist/{work-proofs-record-MCSA56F5.js → work-proofs-record-FCA47NNX.js} +1 -1
- package/package.json +1 -1
- package/skill-pack/maintained/outerlayer-amend/SKILL.md +2 -2
- package/skill-pack/maintained/outerlayer-build/references/evidence.md +12 -11
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"2026-10-
|
|
1
|
+
{"id":"2026-10-26T21:47:27.971Z+9728168","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { probeCredentials } from './chunk-
|
|
3
|
+
import { probeCredentials } from './chunk-C2LMT42U.js';
|
|
4
4
|
import './chunk-3JVYMD4G.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-QVH4RRUQ.js';
|
|
6
6
|
import './chunk-E7R2GIAW.js';
|
|
7
7
|
import './chunk-MH6QLXUO.js';
|
|
8
8
|
import './chunk-HOUFCUMH.js';
|
|
9
|
-
import './chunk-
|
|
9
|
+
import './chunk-RRCLYSCM.js';
|
|
10
10
|
import './chunk-TS3EFB7S.js';
|
|
11
|
-
import './chunk-
|
|
11
|
+
import './chunk-VCIB3HUZ.js';
|
|
12
12
|
import './chunk-ZVB57WI6.js';
|
|
13
13
|
import './chunk-6CK2OC4Q.js';
|
|
14
14
|
import './chunk-P3NPTFLF.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { decideInstalledSwitch } from './chunk-3JVYMD4G.js';
|
|
4
|
-
import { reportFailedStart, fitImageBuildMemory } from './chunk-
|
|
4
|
+
import { reportFailedStart, fitImageBuildMemory } from './chunk-QVH4RRUQ.js';
|
|
5
5
|
import { fetchVersionMeta, npmVersion, npmSupportsProvenance, fetchTarballDigest, fetchProvenance, installVersion, auditSignatures } from './chunk-E7R2GIAW.js';
|
|
6
6
|
import { RUNNER_PROTOCOL } from './chunk-MH6QLXUO.js';
|
|
7
7
|
import { writePendingUpdate } from './chunk-HOUFCUMH.js';
|
|
8
|
-
import { renderUpdateSteps } from './chunk-
|
|
8
|
+
import { renderUpdateSteps } from './chunk-RRCLYSCM.js';
|
|
9
9
|
import { readHousekeepingRecord, writeHousekeepingRecord } from './chunk-TS3EFB7S.js';
|
|
10
|
-
import { releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, readProvisionOut, workdirProblem, MICROVM_COMMAND_DIR, commandLogOffset, startMicroVmCommand, microVmCommandLine, runCommand, startSender, finishJob, sampleGuest, foldSample, isContainerTracked, isMicroVmTracked, probeMicroVmCommand, probeCommand, appendCommandLog, judgeProbe, EXIT_CODE_FILE, isTracked, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listUnreadableJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, GUEST_USAGE_INTERVAL_MS, hookLimitsFor, AttemptLogBook, microVmOomKills, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, listTrackedJobs, restartSender, serveLease, vmAlive, writeGuestGhConfig, ALREADY_RELEASED, inTeardown } from './chunk-
|
|
10
|
+
import { releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, readProvisionOut, workdirProblem, MICROVM_COMMAND_DIR, commandLogOffset, startMicroVmCommand, microVmCommandLine, runCommand, startSender, finishJob, sampleGuest, foldSample, isContainerTracked, isMicroVmTracked, probeMicroVmCommand, probeCommand, appendCommandLog, judgeProbe, EXIT_CODE_FILE, isTracked, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listUnreadableJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, GUEST_USAGE_INTERVAL_MS, hookLimitsFor, AttemptLogBook, microVmOomKills, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, listTrackedJobs, restartSender, serveLease, vmAlive, writeGuestGhConfig, ALREADY_RELEASED, inTeardown } from './chunk-VCIB3HUZ.js';
|
|
11
11
|
import { JOB_STATE_FORMAT, readsJobState, jobStateFormatOf } from './chunk-ZVB57WI6.js';
|
|
12
12
|
import { realBlockedProbes, checkBlockedWithSlots, largeBuildMemoryBytes, LARGE_BUILD_DISK_BYTES, checkManagedRoom, sliceMemoryOf } from './chunk-ZADRW2V2.js';
|
|
13
13
|
import { writeMarker, readMarker, currentVersion, removeMarker, isInLayout, startedThroughCurrent, entryIn, versionDir, switchCurrent, cleanVersions, stagingDir } from './chunk-YL3RWW7X.js';
|
|
@@ -3279,7 +3279,7 @@ async function startRunner(configPath, deps, startup) {
|
|
|
3279
3279
|
check: update.check ? () => update.check(configPath) : async () => {
|
|
3280
3280
|
const held = heldClaudeCredential();
|
|
3281
3281
|
const env = held === void 0 ? process.env : { ...process.env, [held.variable]: held.value };
|
|
3282
|
-
return (await import('./check-
|
|
3282
|
+
return (await import('./check-WK5P7CEG.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl, env });
|
|
3283
3283
|
},
|
|
3284
3284
|
now: () => (deps.now ?? (() => /* @__PURE__ */ new Date()))().getTime(),
|
|
3285
3285
|
log
|
|
@@ -159,13 +159,22 @@ function checkoutPlaces(cwd) {
|
|
|
159
159
|
if (dirname(dir) === dir) return void 0;
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
|
|
162
|
+
function governingDir(cwd) {
|
|
163
163
|
const places = checkoutPlaces(cwd);
|
|
164
|
-
if (places === void 0) return
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
if (places === void 0) return void 0;
|
|
165
|
+
return readDeliveryRecord(places.common)?.dir ?? places.root;
|
|
166
|
+
}
|
|
167
|
+
async function testProofMode(cwd) {
|
|
168
|
+
const dir = governingDir(cwd);
|
|
169
|
+
if (dir === void 0) return "any";
|
|
170
|
+
const { testProofIn } = await import('./host-checks-HAXPZSDU.js');
|
|
171
|
+
return testProofIn(dir);
|
|
172
|
+
}
|
|
173
|
+
async function judgeCheckName(cwd) {
|
|
174
|
+
const dir = governingDir(cwd);
|
|
175
|
+
if (dir === void 0) return {};
|
|
167
176
|
if (!existsSync(dir)) return { note: `the governed context at ${dir} is not readable` };
|
|
168
|
-
const { checksIn, isJudgeCheck } = await import('./host-checks-
|
|
177
|
+
const { checksIn, isJudgeCheck } = await import('./host-checks-HAXPZSDU.js');
|
|
169
178
|
const quiet = { line: () => void 0, error: () => void 0 };
|
|
170
179
|
const check = checksIn(dir, quiet, "").checks.find((c) => isJudgeCheck(c) && c.judge.subjects === "criteria");
|
|
171
180
|
return check === void 0 ? {} : { name: check.name };
|
|
@@ -211,19 +220,19 @@ function otherPullRequestHeads(pullRequests, ownPr, checkoutRepository) {
|
|
|
211
220
|
}
|
|
212
221
|
return heads;
|
|
213
222
|
}
|
|
214
|
-
function classifyProofs(data, checkoutHead) {
|
|
223
|
+
function classifyProofs(data, checkoutHead, listing = {}) {
|
|
215
224
|
const heads = /* @__PURE__ */ new Set();
|
|
216
225
|
if (checkoutHead !== void 0 && checkoutHead !== "") heads.add(checkoutHead.toLowerCase());
|
|
217
226
|
data.pullRequests?.forEach((pr) => {
|
|
218
227
|
const head = liveHead(pr);
|
|
219
228
|
if (head !== void 0) heads.add(head);
|
|
220
229
|
});
|
|
221
|
-
return classifyProofsAt(data, heads);
|
|
230
|
+
return classifyProofsAt(data, heads, listing);
|
|
222
231
|
}
|
|
223
|
-
function classifyProofsAt(data, heads) {
|
|
232
|
+
function classifyProofsAt(data, heads, listing = {}) {
|
|
224
233
|
const entries = [];
|
|
225
234
|
for (const criterion of data.criteria?.items ?? []) {
|
|
226
|
-
if (criterion.proof === null || criterion.proof === "test") continue;
|
|
235
|
+
if (criterion.proof === null || criterion.proof === "test" && listing.tests !== true) continue;
|
|
227
236
|
const newest = criterion.newestProof;
|
|
228
237
|
if (newest === null || newest === void 0) {
|
|
229
238
|
entries.push({ id: criterion.id, proof: criterion.proof, state: "missing", commit: null });
|
|
@@ -244,11 +253,14 @@ function renderEntry(e) {
|
|
|
244
253
|
if (e.state === "failed") {
|
|
245
254
|
return `${id} none failed ${sanitizeTerminal(e.commit)} The judge failed it: ${sanitizeTerminal(e.reason)} No test that cites it has changed since. Change a test that cites ${id}.`;
|
|
246
255
|
}
|
|
247
|
-
|
|
256
|
+
const row = `${id} ${sanitizeTerminal(e.proof)} ${STATE_LABEL[e.state]} ${sanitizeTerminal(e.commit ?? "no commit")}`;
|
|
257
|
+
if (e.proof !== "test" || e.state === "current") return row;
|
|
258
|
+
return `${row} Run the tests with a JUnit reporter at HEAD, then run outerlayer emit artifact <file> --for ${id}`;
|
|
248
259
|
}
|
|
249
|
-
function render(entries, notes, json) {
|
|
260
|
+
function render(entries, notes, json, tests) {
|
|
250
261
|
if (json) return JSON.stringify(entries);
|
|
251
|
-
const
|
|
262
|
+
const none = tests ? "No criterion declares a proof." : "No criterion declares a proof other than test.";
|
|
263
|
+
const lines = entries.length === 0 ? [none] : entries.map(renderEntry);
|
|
252
264
|
if (notes.length > 0) lines.push(`The command could not check the judge's results: ${notes.map(sanitizeTerminal).join("; ")}.`);
|
|
253
265
|
return lines.join("\n");
|
|
254
266
|
}
|
|
@@ -283,11 +295,13 @@ async function runWorkProofs(opts) {
|
|
|
283
295
|
if (!checkoutHead) {
|
|
284
296
|
throw new WorkCommandError("cannot read the checkout's HEAD. Run this inside the git checkout, or pass the head explicitly.");
|
|
285
297
|
}
|
|
286
|
-
const
|
|
287
|
-
const
|
|
298
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
299
|
+
const tests = body.criteria?.testProofsReported === true && await testProofMode(cwd) === "any";
|
|
300
|
+
const declared = classifyProofs(body, checkoutHead, { tests });
|
|
301
|
+
const unproven = await findUnproven({ item: body, cwd, head: checkoutHead });
|
|
288
302
|
const entries = [...declared, ...unproven.entries];
|
|
289
303
|
const json = opts.json === true;
|
|
290
|
-
const output = render(entries, json ? [] : unproven.notes, json);
|
|
304
|
+
const output = render(entries, json ? [] : unproven.notes, json, tests);
|
|
291
305
|
if (!opts.quiet) {
|
|
292
306
|
process.stdout.write(output + "\n");
|
|
293
307
|
if (json && unproven.notes.length > 0) process.stderr.write(`The command could not check the judge's results: ${unproven.notes.join("; ")}.
|
|
@@ -300,7 +314,7 @@ async function runWorkProofs(opts) {
|
|
|
300
314
|
async function runWorkProofsCommand(opts) {
|
|
301
315
|
try {
|
|
302
316
|
if (opts.record) {
|
|
303
|
-
const { runWorkProofsRecord } = await import('./work-proofs-record-
|
|
317
|
+
const { runWorkProofsRecord } = await import('./work-proofs-record-FCA47NNX.js');
|
|
304
318
|
const result2 = await runWorkProofsRecord(opts);
|
|
305
319
|
process.exitCode = result2.exitCode;
|
|
306
320
|
return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { scrubReason, stripTerminalControls } from './chunk-
|
|
3
|
+
import { scrubReason, stripTerminalControls } from './chunk-VCIB3HUZ.js';
|
|
4
4
|
import { checkFit, RUNNER_RESERVE_BYTES } from './chunk-3NCWHEGM.js';
|
|
5
5
|
import { RunnerAlreadyRunningError, readPidFile } from './chunk-LQHCNXPK.js';
|
|
6
6
|
import { isSameProcess } from './chunk-JBJTC3UU.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { stripTerminalControls } from './chunk-
|
|
3
|
+
import { stripTerminalControls } from './chunk-VCIB3HUZ.js';
|
|
4
4
|
import { tagToPull, imageTag, pullInstruction, readUpdateStatus, runnerImageVersion } from './chunk-SDELQEG4.js';
|
|
5
5
|
import { readFileSync } from 'fs';
|
|
6
6
|
|
|
@@ -3104,6 +3104,10 @@ function asHostReads(file, base, log, tag) {
|
|
|
3104
3104
|
log.line(`${tag} ${file.path} is an unedited copy an earlier release wrote, so it is read as this CLI writes it`);
|
|
3105
3105
|
return { path: file.path, content: upgraded };
|
|
3106
3106
|
}
|
|
3107
|
+
function testProofIn(root) {
|
|
3108
|
+
const policyText = readInside(root, POLICY_FILE);
|
|
3109
|
+
return parsePolicy(policyText === void 0 ? null : { path: POLICY_FILE, content: policyText }, []).testProof;
|
|
3110
|
+
}
|
|
3107
3111
|
function checksIn(root, log, tag) {
|
|
3108
3112
|
const base = existsSync(join(root, AGENTS_SKILLS_BASE)) ? AGENTS_SKILLS_BASE : OUTERLAYER_SKILLS_BASE;
|
|
3109
3113
|
const policyText = readInside(root, POLICY_FILE);
|
|
@@ -3471,4 +3475,4 @@ async function runHostChecks(input) {
|
|
|
3471
3475
|
}
|
|
3472
3476
|
}
|
|
3473
3477
|
|
|
3474
|
-
export { ALREADY_RELEASED, AttemptLogBook, EXIT_CODE_FILE, GUEST_USAGE_INTERVAL_MS, MAX_CHECK_ITEMS_BYTES, MICROVM_COMMAND_DIR, RENEW_INTERVAL_SECONDS, appendCommandLog, checksIn, commandItems, commandLogOffset, deliverCommitHooks, describeHookEnd, finishJob, foldSample, hookLimitsFor, inTeardown, isContainerTracked, isGroupAlive, isIdle, isJudgeCheck, isMicroVmTracked, isReadable, isTimedOut, isTracked, isUnfinished, jobEnv, judgeProbe, listAdoptableJobs, listTrackedJobs, listUnreadableJobs, makeRecorder, microVmCommandLine, microVmOomKills, needsRenew, outcomeFromExitCode, probeCommand, probeMicroVmCommand, provisionMicroVm, provisionProcess, readCpuUsec, readDefinitions, readProvisionOut, recoverLostJobs, releaseLease, renewLease, restartSender, retryFailedReleases, runCommand, runHook, runHostChecks, sampleGuest, scrubReason, serveLease, setStage, startMicroVmCommand, startSender, stopOrphanedMicroVms, stripTerminalControls, timeoutAfter, unfinishedJobs, vmAlive, workdirProblem, writeGuestGhConfig };
|
|
3478
|
+
export { ALREADY_RELEASED, AttemptLogBook, EXIT_CODE_FILE, GUEST_USAGE_INTERVAL_MS, MAX_CHECK_ITEMS_BYTES, MICROVM_COMMAND_DIR, RENEW_INTERVAL_SECONDS, appendCommandLog, checksIn, commandItems, commandLogOffset, deliverCommitHooks, describeHookEnd, finishJob, foldSample, hookLimitsFor, inTeardown, isContainerTracked, isGroupAlive, isIdle, isJudgeCheck, isMicroVmTracked, isReadable, isTimedOut, isTracked, isUnfinished, jobEnv, judgeProbe, listAdoptableJobs, listTrackedJobs, listUnreadableJobs, makeRecorder, microVmCommandLine, microVmOomKills, needsRenew, outcomeFromExitCode, probeCommand, probeMicroVmCommand, provisionMicroVm, provisionProcess, readCpuUsec, readDefinitions, readProvisionOut, recoverLostJobs, releaseLease, renewLease, restartSender, retryFailedReleases, runCommand, runHook, runHostChecks, sampleGuest, scrubReason, serveLease, setStage, startMicroVmCommand, startSender, stopOrphanedMicroVms, stripTerminalControls, testProofIn, timeoutAfter, unfinishedJobs, vmAlive, workdirProblem, writeGuestGhConfig };
|
|
@@ -4964,7 +4964,7 @@ differs from HEAD.
|
|
|
4964
4964
|
fail(trackerNumberError("--pr", opts.pr));
|
|
4965
4965
|
return;
|
|
4966
4966
|
}
|
|
4967
|
-
const { runWorkProofsCommand } = await import('./work-proofs-cmd-
|
|
4967
|
+
const { runWorkProofsCommand } = await import('./work-proofs-cmd-BO6Q2LVK.js');
|
|
4968
4968
|
await runWorkProofsCommand({ ...opts, ...pr === void 0 ? {} : { pr } });
|
|
4969
4969
|
});
|
|
4970
4970
|
workCmd.command("list").description("List live work items for this factory").option("--stage <spec|build|review>", "filter by stage").option("--section <attention|waiting|flowing>", "filter by Queue section").option("--repo <owner/name>", "repository (default: the current checkout's remote)").option("--unclaimed", "only items with no live lease").option("--claimed", "only items with a live lease, held by a host or a local session").option("--startable", "only items a host can start: a build request, no open PR, no live lease").option("--needs <amend>", "only items with a thread waiting on an agent").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").action(async (opts) => {
|
|
@@ -5111,7 +5111,7 @@ function registerRunnerCommands(program2) {
|
|
|
5111
5111
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
5112
5112
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
5113
5113
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-EBT5VYPX.js');
|
|
5114
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
5114
|
+
const { start, RunnerStartError } = await import('./loop-KP5CI2JH.js');
|
|
5115
5115
|
const { RunnerAlreadyRunningError } = await import('./pidfile-PCG2H5T4.js');
|
|
5116
5116
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5117
5117
|
try {
|
|
@@ -5130,8 +5130,8 @@ function registerRunnerCommands(program2) {
|
|
|
5130
5130
|
"\nReads OUTERLAYER_URL, OUTERLAYER_APP_ID, OUTERLAYER_API_KEY, OUTERLAYER_RUNNER_NAME and one Claude credential\n(CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY) from the environment. OUTERLAYER_AGENT\nis optional and defaults to claude. On a later start it refuses variables that disagree with the config in the volume.\nThe image sets OUTERLAYER_RUNNER_IMAGE; outside the image, use `runner start`.\n"
|
|
5131
5131
|
).action(async () => {
|
|
5132
5132
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-EBT5VYPX.js');
|
|
5133
|
-
const { containerStart } = await import('./container-start-
|
|
5134
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
5133
|
+
const { containerStart } = await import('./container-start-UNY3PO5U.js');
|
|
5134
|
+
const { start, RunnerStartError } = await import('./loop-KP5CI2JH.js');
|
|
5135
5135
|
const { RunnerAlreadyRunningError } = await import('./pidfile-PCG2H5T4.js');
|
|
5136
5136
|
try {
|
|
5137
5137
|
const result = await containerStart({
|
|
@@ -5155,14 +5155,14 @@ function registerRunnerCommands(program2) {
|
|
|
5155
5155
|
).action(async (opts) => {
|
|
5156
5156
|
const { defaultRunnerConfigPath } = await import('./config-EBT5VYPX.js');
|
|
5157
5157
|
const { runnerDir } = await import('./paths-AQ47ZRHK.js');
|
|
5158
|
-
const { runUpdateSteps } = await import('./update-steps-
|
|
5158
|
+
const { runUpdateSteps } = await import('./update-steps-HPMQMEQR.js');
|
|
5159
5159
|
const text = await runUpdateSteps({ runnerDirPath: runnerDir(opts.config ?? defaultRunnerConfigPath()) });
|
|
5160
5160
|
process.stdout.write(`${text}
|
|
5161
5161
|
`);
|
|
5162
5162
|
});
|
|
5163
5163
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
5164
5164
|
const { defaultRunnerConfigPath } = await import('./config-EBT5VYPX.js');
|
|
5165
|
-
const { runRunnerCheck } = await import('./check-
|
|
5165
|
+
const { runRunnerCheck } = await import('./check-WK5P7CEG.js');
|
|
5166
5166
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5167
5167
|
const result = await runRunnerCheck(configPath);
|
|
5168
5168
|
if (!result.ok) {
|
|
@@ -5570,7 +5570,7 @@ Next:
|
|
|
5570
5570
|
});
|
|
5571
5571
|
runnerCmd.command("stop").description("Take no more work; finish running jobs, then exit").option("--config <path>", "the cloud config file naming the runner to stop").option("--now", "end running jobs immediately, with outcome stopped").action(async (opts) => {
|
|
5572
5572
|
const { defaultRunnerConfigPath } = await import('./config-EBT5VYPX.js');
|
|
5573
|
-
const { requestStop } = await import('./loop-
|
|
5573
|
+
const { requestStop } = await import('./loop-KP5CI2JH.js');
|
|
5574
5574
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5575
5575
|
const { runnerImageVersion } = await import('./image-tag-BTXKIH73.js');
|
|
5576
5576
|
await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
|
|
@@ -5578,8 +5578,8 @@ Next:
|
|
|
5578
5578
|
runnerCmd.command("status").description("List running jobs; with --recent, finished ones too").option("--config <path>", "the cloud config file naming the runner to inspect").option("--recent", "also list finished jobs, newest first, capped at 20").option("--json", "machine-readable JSON output").action(async (opts) => {
|
|
5579
5579
|
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-EBT5VYPX.js');
|
|
5580
5580
|
const { jobsDir, runnerDir } = await import('./paths-AQ47ZRHK.js');
|
|
5581
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
5582
|
-
const { renderStatus } = await import('./status-
|
|
5581
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-KP5CI2JH.js');
|
|
5582
|
+
const { renderStatus } = await import('./status-TVN6CDEF.js');
|
|
5583
5583
|
const { readHousekeepingRecord } = await import('./record-SVCNFCGQ.js');
|
|
5584
5584
|
const path2 = await import('path');
|
|
5585
5585
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
@@ -5638,7 +5638,7 @@ Next:
|
|
|
5638
5638
|
});
|
|
5639
5639
|
runnerCmd.command("logs").argument("<item>", "the work item's number in the factory").description("Print the newest attempt's log for one item").option("--config <path>", "the cloud config file naming the runner to inspect").option("-f, --follow", "keep printing as the log grows").action(async (itemArg, opts) => {
|
|
5640
5640
|
const { defaultRunnerConfigPath } = await import('./config-EBT5VYPX.js');
|
|
5641
|
-
const { listJobFiles } = await import('./loop-
|
|
5641
|
+
const { listJobFiles } = await import('./loop-KP5CI2JH.js');
|
|
5642
5642
|
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-LEVH6VAI.js');
|
|
5643
5643
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5644
5644
|
const item = parseTrackerNumber(itemArg);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { reportFailedStart, BUILD_MEMORY_VARIABLE } from './chunk-
|
|
4
|
-
import { readOwnContainer } from './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
import { reportFailedStart, BUILD_MEMORY_VARIABLE } from './chunk-QVH4RRUQ.js';
|
|
4
|
+
import { readOwnContainer } from './chunk-RRCLYSCM.js';
|
|
5
|
+
import './chunk-VCIB3HUZ.js';
|
|
6
6
|
import './chunk-ZVB57WI6.js';
|
|
7
7
|
import './chunk-6CK2OC4Q.js';
|
|
8
8
|
import './chunk-P3NPTFLF.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { MAX_CHECK_ITEMS_BYTES, checksIn, commandItems, isJudgeCheck, makeRecorder, readDefinitions, runHostChecks, timeoutAfter } from './chunk-
|
|
3
|
+
export { MAX_CHECK_ITEMS_BYTES, checksIn, commandItems, isJudgeCheck, makeRecorder, readDefinitions, runHostChecks, testProofIn, timeoutAfter } from './chunk-VCIB3HUZ.js';
|
|
4
4
|
import './chunk-ZVB57WI6.js';
|
|
5
5
|
import './chunk-6CK2OC4Q.js';
|
|
6
6
|
import './chunk-P3NPTFLF.js';
|
package/dist/index.js
CHANGED
|
@@ -26,5 +26,5 @@ if (argv[0] === "claude") {
|
|
|
26
26
|
process.exit(await runClaudeLauncher(argv.slice(1)));
|
|
27
27
|
}
|
|
28
28
|
(await import('./hook-fast-KXAQ22LZ.js')).recordLinkExitFailure(argv);
|
|
29
|
-
var { runCli } = await import('./cli-
|
|
29
|
+
var { runCli } = await import('./cli-WYHBUV6E.js');
|
|
30
30
|
await runCli(process.argv);
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { RunnerStartError, leaseTimeLeftFor, listJobFiles, logUnusableHelper, probeBuild, probeCredentials, requestStop, runnerProcessState, runtimeOf, sampleUsage, start, tick, watchTick } from './chunk-
|
|
3
|
+
export { RunnerStartError, leaseTimeLeftFor, listJobFiles, logUnusableHelper, probeBuild, probeCredentials, requestStop, runnerProcessState, runtimeOf, sampleUsage, start, tick, watchTick } from './chunk-C2LMT42U.js';
|
|
4
4
|
import './chunk-3JVYMD4G.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-QVH4RRUQ.js';
|
|
6
6
|
import './chunk-E7R2GIAW.js';
|
|
7
7
|
import './chunk-MH6QLXUO.js';
|
|
8
8
|
import './chunk-HOUFCUMH.js';
|
|
9
|
-
import './chunk-
|
|
9
|
+
import './chunk-RRCLYSCM.js';
|
|
10
10
|
import './chunk-TS3EFB7S.js';
|
|
11
|
-
import './chunk-
|
|
11
|
+
import './chunk-VCIB3HUZ.js';
|
|
12
12
|
import './chunk-ZVB57WI6.js';
|
|
13
13
|
import './chunk-6CK2OC4Q.js';
|
|
14
14
|
import './chunk-P3NPTFLF.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { isReadable, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-
|
|
3
|
+
import { isReadable, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-VCIB3HUZ.js';
|
|
4
4
|
import { jobStateFormatOf } from './chunk-ZVB57WI6.js';
|
|
5
5
|
import './chunk-6CK2OC4Q.js';
|
|
6
6
|
import './chunk-P3NPTFLF.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { readOwnContainer, renderUpdateSteps, runUpdateSteps } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
export { readOwnContainer, renderUpdateSteps, runUpdateSteps } from './chunk-RRCLYSCM.js';
|
|
4
|
+
import './chunk-VCIB3HUZ.js';
|
|
5
5
|
import './chunk-ZVB57WI6.js';
|
|
6
6
|
import './chunk-6CK2OC4Q.js';
|
|
7
7
|
import './chunk-P3NPTFLF.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { classifyProofs, classifyProofsAt, otherPullRequestHeads, resolveProofsItem, runWorkProofs, runWorkProofsCommand } from './chunk-
|
|
3
|
+
export { classifyProofs, classifyProofsAt, otherPullRequestHeads, resolveProofsItem, runWorkProofs, runWorkProofsCommand } from './chunk-LIM35C33.js';
|
|
4
4
|
import './chunk-6CK2OC4Q.js';
|
|
5
5
|
import './chunk-QABXXQ67.js';
|
|
6
6
|
import './chunk-IP7BIBXJ.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { resolveProofsItem, ownPullRequest, proofsCommentId, otherPullRequestHeads, classifyProofsAt, kindProblem, proofsCommentBody, runWorkProofs } from './chunk-
|
|
3
|
+
import { resolveProofsItem, ownPullRequest, proofsCommentId, otherPullRequestHeads, classifyProofsAt, kindProblem, proofsCommentBody, runWorkProofs } from './chunk-LIM35C33.js';
|
|
4
4
|
import { runWorkComment } from './chunk-EBVK3QBO.js';
|
|
5
5
|
import './chunk-6CK2OC4Q.js';
|
|
6
6
|
import { runEmitDemo } from './chunk-K3ACC2CV.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@outerlayer/cli",
|
|
3
|
-
"version": "0.34.0-next.
|
|
3
|
+
"version": "0.34.0-next.20261026214555",
|
|
4
4
|
"description": "OuterLayer CLI — commands: init, claude, connect, doctor, login, logout, sync, daemon (alias: watch), emit, findings, work, spec, runner, hooks, mcp, context. Capture and sync coding-agent sessions, and record proof of factory work.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Magu Studios, Inc.",
|
|
@@ -129,8 +129,8 @@ repository. Commit and push in each checkout you change, to its own branch only.
|
|
|
129
129
|
thread back to a person.
|
|
130
130
|
9. **Check nothing is left waiting.** Reread threads. A thread still waiting
|
|
131
131
|
on an agent has a reply that did not land or was flagged `unchanged`. Fix
|
|
132
|
-
or report it. Run `outerlayer sync` and `outerlayer work proofs`. Fix
|
|
133
|
-
|
|
132
|
+
or report it. Run `outerlayer sync` and `outerlayer work proofs`. Fix every
|
|
133
|
+
listed row that is not current.
|
|
134
134
|
10. **Report.** Write one line per thread: the criterion (or the general
|
|
135
135
|
thread), and fixed (with the replacement) or handed off (with the reason).
|
|
136
136
|
Add a line for a merge conflict (merged with the base sha, or handed off
|
|
@@ -29,13 +29,13 @@ session can run it again.
|
|
|
29
29
|
|
|
30
30
|
After the evidence agent returns, run `outerlayer sync`, then
|
|
31
31
|
`outerlayer work proofs --item "$OUTERLAYER_WORK"`. It lists each declared proof
|
|
32
|
-
as current, out of date or missing at the checkout's head.
|
|
33
|
-
|
|
34
|
-
host's criteria judge fails without reading a test. A
|
|
35
|
-
no proof and no test at HEAD that cites it: put the id
|
|
36
|
-
comment above it, as in `// proves AC-7-02`, and
|
|
37
|
-
names a criterion that the judge failed, whose
|
|
38
|
-
change a test that cites it, and commit.
|
|
32
|
+
as current, out of date or missing at the checkout's head. It lists a `test`
|
|
33
|
+
proof too, unless the policy file sets `criteria.test_proof: ci`. It also lists
|
|
34
|
+
each criterion that the host's criteria judge fails without reading a test. A
|
|
35
|
+
row marked `uncited` has no proof and no test at HEAD that cites it: put the id
|
|
36
|
+
in a test's title or in a comment above it, as in `// proves AC-7-02`, and
|
|
37
|
+
commit. A row marked `failed` names a criterion that the judge failed, whose
|
|
38
|
+
citing tests have not changed: change a test that cites it, and commit.
|
|
39
39
|
|
|
40
40
|
A commit makes every proof out of date, and each `--record` run starts the app
|
|
41
41
|
again. So record only at the run's last head. First make every commit the run
|
|
@@ -45,10 +45,11 @@ proof that is not current and skips the rest. If a commit lands after that,
|
|
|
45
45
|
record once more after it. The final report names that head and the proofs
|
|
46
46
|
recorded there.
|
|
47
47
|
|
|
48
|
-
`--record` skips a criterion that declares `proof: test
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
`--record` skips a criterion that declares `proof: test`. So at that same head,
|
|
49
|
+
record each one as the Evidence brief in [agent-briefs.md](agent-briefs.md)
|
|
50
|
+
says, unless the policy file sets `criteria.test_proof: ci`. The list command
|
|
51
|
+
shows it as out of date or missing until you do. The final report names each
|
|
52
|
+
one with its artifact.
|
|
52
53
|
|
|
53
54
|
Run the list command once more before the run ends. A criterion still listed
|
|
54
55
|
as out of date or missing goes in `build-reports/evidence.md` with the reason.
|