@outerlayer/cli 0.8.5 → 0.8.6
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/CHANGELOG.md +6 -0
- package/README.md +3 -3
- package/dist/build-info.json +1 -1
- package/dist/{check-HWYLSMEL.js → check-443BADSD.js} +2 -2
- package/dist/{chunk-4KPMIGBQ.js → chunk-ALCXFVUV.js} +0 -1
- package/dist/{chunk-ZMKXBWIK.js → chunk-NQWTCX3A.js} +2 -2
- package/dist/{cli-5QAP7N4A.js → cli-PNMCZVQ4.js} +7 -7
- package/dist/index.js +1 -1
- package/dist/{loop-FN67ZHLO.js → loop-U7GLISBM.js} +2 -2
- package/dist/{real-deps-TK6JMQSW.js → real-deps-AKVGIDPZ.js} +2 -2
- package/dist/{status-7RNWHYG6.js → status-OQ23WOUP.js} +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @outerlayer/cli
|
|
2
2
|
|
|
3
|
+
## 0.8.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 30ac1c5: A runner no longer reads a person's review as a check result. A build whose OuterLayer checks pass now finishes whether or not a person has reviewed it or marked a criterion as failed.
|
|
8
|
+
|
|
3
9
|
## 0.8.5
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -433,9 +433,9 @@ or whose evaluation is still waiting on a session link, with the code
|
|
|
433
433
|
commit of every pull request the item had at the time; once one of them
|
|
434
434
|
moves, that pass stops counting and a fresh review is needed. The base
|
|
435
435
|
branch's `review` policy key (default `required`, beside `merge_gate`)
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
436
|
+
changes only what the evidence check's title says. The check on GitHub never
|
|
437
|
+
waits for the review: it completes once OuterLayer's checks pass, and under
|
|
438
|
+
`merge_gate: on-flag` a person's request for changes fails it.
|
|
439
439
|
|
|
440
440
|
A criterion thread is scoped to one acceptance criterion rather than the
|
|
441
441
|
whole item: an agent attaches proof with `outerlayer work comment
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"2026-10-
|
|
1
|
+
{"id":"2026-10-06T01:19:33.337Z+ce11b1f","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { probeCredentials } from './chunk-
|
|
3
|
+
import { probeCredentials } from './chunk-NQWTCX3A.js';
|
|
4
4
|
import './chunk-IS4DIGBQ.js';
|
|
5
5
|
import './chunk-I2UOAV7X.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-ALCXFVUV.js';
|
|
7
7
|
import './chunk-T6OIJQRT.js';
|
|
8
8
|
import './chunk-AIW6GLET.js';
|
|
9
9
|
import './chunk-UGP76IZ5.js';
|
|
@@ -832,7 +832,6 @@ function decideFromEvaluation(read) {
|
|
|
832
832
|
if (evaluation === null) return { outcome: "incomplete", reason: "the item has no evidence evaluation yet" };
|
|
833
833
|
if (evaluation.open.length > 0) return { outcome: "incomplete", reason: fit("checks not passing: ", evaluation.open.map(rowText)) };
|
|
834
834
|
if (evaluation.verdict === "pass") return { outcome: "ok" };
|
|
835
|
-
if (evaluation.verdict === "waiting" && evaluation.waitingOn === "review") return { outcome: "ok" };
|
|
836
835
|
if (evaluation.verdict === "waiting" && evaluation.waitingOn === "links") {
|
|
837
836
|
return { outcome: "incomplete", reason: "the item's evidence was still waiting on session links to be confirmed" };
|
|
838
837
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { decideInstalledSwitch, fetchVersionMeta, npmVersion, npmSupportsProvenance, fetchTarballDigest, fetchProvenance, installVersion, auditSignatures } from './chunk-IS4DIGBQ.js';
|
|
4
4
|
import { compareVersions, satisfiesRange } from './chunk-I2UOAV7X.js';
|
|
5
|
-
import { LEASE_SECONDS, releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, microVmCommandLine, runCommand, execCommandLine, startSender, startHostServices, finishJob, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, ALREADY_RELEASED } from './chunk-
|
|
5
|
+
import { LEASE_SECONDS, releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, microVmCommandLine, runCommand, execCommandLine, startSender, startHostServices, finishJob, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, ALREADY_RELEASED } from './chunk-ALCXFVUV.js';
|
|
6
6
|
import { writeJobFile, readJobFile, readJobFileChecked } from './chunk-T6OIJQRT.js';
|
|
7
7
|
import { RUNNER_PROTOCOL } from './chunk-AIW6GLET.js';
|
|
8
8
|
import { readHousekeepingRecord, writeHousekeepingRecord } from './chunk-UGP76IZ5.js';
|
|
@@ -1960,7 +1960,7 @@ async function start(configPath, deps = { fetchImpl: fetch }) {
|
|
|
1960
1960
|
const outcome = await onStartUnderMarker({
|
|
1961
1961
|
configPath,
|
|
1962
1962
|
own: ownVersionOf(deps),
|
|
1963
|
-
check: update.check ? () => update.check(configPath) : async () => (await import('./check-
|
|
1963
|
+
check: update.check ? () => update.check(configPath) : async () => (await import('./check-443BADSD.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl }),
|
|
1964
1964
|
now: () => (deps.now ?? (() => /* @__PURE__ */ new Date()))().getTime(),
|
|
1965
1965
|
log
|
|
1966
1966
|
});
|
|
@@ -4452,11 +4452,11 @@ function registerRunnerCommands(program2) {
|
|
|
4452
4452
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
4453
4453
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
4454
4454
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-OOBPCY7Q.js');
|
|
4455
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4455
|
+
const { start, RunnerStartError } = await import('./loop-U7GLISBM.js');
|
|
4456
4456
|
const { RunnerAlreadyRunningError } = await import('./pidfile-UZRH774M.js');
|
|
4457
4457
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4458
4458
|
try {
|
|
4459
|
-
const { realUpdateDeps } = await import('./real-deps-
|
|
4459
|
+
const { realUpdateDeps } = await import('./real-deps-AKVGIDPZ.js');
|
|
4460
4460
|
await start(configPath, { update: realUpdateDeps(), fetchImpl: fetch });
|
|
4461
4461
|
} catch (err) {
|
|
4462
4462
|
if (err instanceof RunnerConfigError || err instanceof RunnerAlreadyRunningError || err instanceof RunnerStartError) {
|
|
@@ -4468,7 +4468,7 @@ function registerRunnerCommands(program2) {
|
|
|
4468
4468
|
});
|
|
4469
4469
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
4470
4470
|
const { defaultRunnerConfigPath } = await import('./config-OOBPCY7Q.js');
|
|
4471
|
-
const { runRunnerCheck } = await import('./check-
|
|
4471
|
+
const { runRunnerCheck } = await import('./check-443BADSD.js');
|
|
4472
4472
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4473
4473
|
const result = await runRunnerCheck(configPath);
|
|
4474
4474
|
if (!result.ok) {
|
|
@@ -4768,15 +4768,15 @@ Next:
|
|
|
4768
4768
|
});
|
|
4769
4769
|
runnerCmd.command("stop").description("Take no more work; wait for running jobs to finish, 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) => {
|
|
4770
4770
|
const { defaultRunnerConfigPath } = await import('./config-OOBPCY7Q.js');
|
|
4771
|
-
const { requestStop } = await import('./loop-
|
|
4771
|
+
const { requestStop } = await import('./loop-U7GLISBM.js');
|
|
4772
4772
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4773
4773
|
await requestStop(configPath, Boolean(opts.now));
|
|
4774
4774
|
});
|
|
4775
4775
|
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) => {
|
|
4776
4776
|
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-OOBPCY7Q.js');
|
|
4777
4777
|
const { jobsDir, runnerDir } = await import('./paths-OYKMVYJP.js');
|
|
4778
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
4779
|
-
const { renderStatus } = await import('./status-
|
|
4778
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-U7GLISBM.js');
|
|
4779
|
+
const { renderStatus } = await import('./status-OQ23WOUP.js');
|
|
4780
4780
|
const { readHousekeepingRecord } = await import('./record-C43U4PKS.js');
|
|
4781
4781
|
const path2 = await import('path');
|
|
4782
4782
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
@@ -4828,7 +4828,7 @@ Next:
|
|
|
4828
4828
|
});
|
|
4829
4829
|
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) => {
|
|
4830
4830
|
const { defaultRunnerConfigPath } = await import('./config-OOBPCY7Q.js');
|
|
4831
|
-
const { listJobFiles } = await import('./loop-
|
|
4831
|
+
const { listJobFiles } = await import('./loop-U7GLISBM.js');
|
|
4832
4832
|
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-H55NWW4H.js');
|
|
4833
4833
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4834
4834
|
const item = parseTrackerNumber(itemArg);
|
package/dist/index.js
CHANGED
|
@@ -22,5 +22,5 @@ if (argv[0] === "statusline") {
|
|
|
22
22
|
process.exit(0);
|
|
23
23
|
}
|
|
24
24
|
(await import('./hook-fast-CFLLVMSV.js')).recordLinkExitFailure(argv);
|
|
25
|
-
var { runCli } = await import('./cli-
|
|
25
|
+
var { runCli } = await import('./cli-PNMCZVQ4.js');
|
|
26
26
|
await runCli(process.argv);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-
|
|
3
|
+
export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-NQWTCX3A.js';
|
|
4
4
|
import './chunk-IS4DIGBQ.js';
|
|
5
5
|
import './chunk-I2UOAV7X.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-ALCXFVUV.js';
|
|
7
7
|
import './chunk-T6OIJQRT.js';
|
|
8
8
|
import './chunk-AIW6GLET.js';
|
|
9
9
|
import './chunk-UGP76IZ5.js';
|
|
@@ -6,7 +6,7 @@ import './chunk-Z5GEFMRW.js';
|
|
|
6
6
|
createRequire(import.meta.url);
|
|
7
7
|
|
|
8
8
|
// src/runner/update/real-deps.ts
|
|
9
|
-
function realUpdateDeps() {
|
|
9
|
+
function realUpdateDeps(proc = process) {
|
|
10
10
|
const nodePath = process.execPath;
|
|
11
11
|
return {
|
|
12
12
|
runNpm: realRunNpm(nodePath),
|
|
@@ -15,7 +15,7 @@ function realUpdateDeps() {
|
|
|
15
15
|
nodePath,
|
|
16
16
|
exit: (code) => process.exit(code),
|
|
17
17
|
fetchImpl: fetch,
|
|
18
|
-
underService: startedByService(
|
|
18
|
+
underService: startedByService(proc.env, proc.ppid)
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { LEASE_SECONDS, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-
|
|
3
|
+
import { LEASE_SECONDS, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-ALCXFVUV.js';
|
|
4
4
|
import './chunk-T6OIJQRT.js';
|
|
5
5
|
import './chunk-FCDET2U5.js';
|
|
6
6
|
import './chunk-J5DPVNL3.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@outerlayer/cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"description": "OuterLayer CLI — commands: init, connect, doctor, login, logout, sync, daemon (alias: watch), emit, work, runner, hooks, mcp, import, 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.",
|