@outerlayer/cli 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +11 -2
- package/dist/{agent-setup-TPR4BBFV.js → agent-setup-AM42SA2D.js} +6 -6
- package/dist/build-info.json +1 -1
- package/dist/{check-UWQAL2MN.js → check-BR5D27CX.js} +17 -17
- package/dist/{chunk-7KSSBQTS.js → chunk-3ZR7Y23Y.js} +2 -2
- package/dist/{chunk-ZHAUSEEN.js → chunk-5VML45HH.js} +2 -2
- package/dist/{chunk-5MYFOW5V.js → chunk-AD3EYI7P.js} +110 -19
- package/dist/{chunk-6U3MV7TZ.js → chunk-B6SCN5NY.js} +6 -6
- package/dist/{chunk-DJ3ZUSC3.js → chunk-CGGPS7SI.js} +3 -3
- package/dist/{chunk-452TM7J4.js → chunk-EAEELQVQ.js} +2 -2
- package/dist/{chunk-HPJNLETG.js → chunk-FBTGMSQF.js} +1 -1
- package/dist/{chunk-DADWEUH3.js → chunk-GEMQLBMW.js} +3 -3
- package/dist/{chunk-5TN7GLYX.js → chunk-HOKXGFDR.js} +4 -4
- package/dist/{chunk-5GHGAF6P.js → chunk-JHGEBPLE.js} +2 -2
- package/dist/{chunk-UVG35MWF.js → chunk-LW7G5TJB.js} +1 -1
- package/dist/{chunk-6D7GT22T.js → chunk-PIZRPNKR.js} +2 -2
- package/dist/{chunk-NFIR3GEE.js → chunk-PSN33ERW.js} +2 -2
- package/dist/{chunk-7SJPQWBM.js → chunk-R22NZSGA.js} +2 -2
- package/dist/{chunk-XSZD4AZ6.js → chunk-XZ4H4X5F.js} +2 -2
- package/dist/{chunk-VRRGENS4.js → chunk-Z7K3L4FC.js} +31 -1
- package/dist/{chunk-BWSUPRDK.js → chunk-ZX4I2MEK.js} +1 -1
- package/dist/{claude-launcher-FPPHZPMR.js → claude-launcher-J5M44PFS.js} +1 -1
- package/dist/{cli-HROW5T7X.js → cli-MKF7TU7X.js} +86 -56
- package/dist/{command-OEAV7BVX.js → command-ZQNEPDS6.js} +8 -8
- package/dist/connect-cmd-UNYKGDAL.js +1 -1
- package/dist/{context-cleanup-HSVYDGMI.js → context-cleanup-CHEWNYU6.js} +3 -1
- package/dist/{control-plane-launch-NYVDJESK.js → control-plane-launch-34LNRJWR.js} +5 -5
- package/dist/{doctor-23BBJWBX.js → doctor-DHUM5DBB.js} +10 -10
- package/dist/{emit-artifact-cmd-O6SCM7TV.js → emit-artifact-cmd-XBHM647X.js} +3 -3
- package/dist/{emit-cmd-7SP3I6UZ.js → emit-cmd-W55AEBCA.js} +3 -3
- package/dist/{emit-criteria-cmd-LQNERZRV.js → emit-criteria-cmd-UNMWHOUY.js} +40 -5
- package/dist/{emit-result-cmd-RUICOKWQ.js → emit-result-cmd-5NZMLCJK.js} +3 -3
- package/dist/emit-step-cmd-347XNGPQ.js +1 -1
- package/dist/{governing-source-V5EEGPTA.js → governing-source-HAA4OW57.js} +6 -6
- package/dist/{hook-fast-YAZG5MDX.js → hook-fast-RL5E5OXE.js} +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-LWHDMZQG.js → init-V6FOMD2V.js} +9 -9
- package/dist/{init-MOINY2DD.js → init-XG47KCI4.js} +9 -9
- package/dist/{init-cmd-HSMRID6A.js → init-cmd-Z4O4PPLZ.js} +16 -14
- package/dist/{init-update-LWX5MPPR.js → init-update-7DVAKWW3.js} +6 -6
- package/dist/{loop-SYYPVFYW.js → loop-EAZQMAE2.js} +17 -17
- package/dist/{machine-6X63G2KH.js → machine-TRHBT5NE.js} +8 -8
- package/dist/{runner-key-276SJU5R.js → runner-key-5FOWCW7J.js} +9 -9
- package/dist/{session-sender-GGIY5OAX.js → session-sender-U2BBUWNO.js} +4 -4
- package/dist/{spec-cmd-SIZBRN7D.js → spec-cmd-FVLJOFGC.js} +2 -2
- package/dist/starter-pack-6LQVLBIA.js +1 -1
- package/dist/{status-NAK6DYSF.js → status-BINH7MBG.js} +11 -11
- package/dist/{sync-cmd-G7GF4UTW.js → sync-cmd-VXOUFS4I.js} +3 -3
- package/dist/{watch-EVM5GSMP.js → watch-OH645CV2.js} +3 -3
- package/dist/{work-claim-cmd-3J3QW56U.js → work-claim-cmd-DRQCHCOK.js} +5 -5
- package/dist/{work-cmd-5EPPD33Y.js → work-cmd-5I3J2XQQ.js} +2 -2
- package/dist/{work-comment-cmd-2ACOZQAE.js → work-comment-cmd-UCCPWUSR.js} +2 -2
- package/dist/{work-logs-cmd-QDD2NMJL.js → work-logs-cmd-7352CJPG.js} +2 -2
- package/dist/{work-open-pr-cmd-XNCEI4ZM.js → work-open-pr-cmd-LSH4VHJM.js} +2 -2
- package/dist/work-pr-cmd-H4OQR26N.js +1 -1
- package/dist/work-stop-cmd-CRDHXQVW.js +52 -0
- package/package.json +1 -1
- package/dist/{artifact-link-cmd-W7XF5BFB.js → artifact-link-cmd-OWRI5AJX.js} +1 -1
- package/dist/{chunk-IXYZUUYQ.js → chunk-7UWVLZXD.js} +1 -1
- package/dist/{emit-finding-cmd-AJPKHIOV.js → emit-finding-cmd-7JHVRYOP.js} +1 -1
- package/dist/{import-capture-cmd-KKFFOGWP.js → import-capture-cmd-TK4XY7RD.js} +1 -1
- package/dist/{import-ruler-cmd-5P6JOXQN.js → import-ruler-cmd-T6LLO6Q7.js} +1 -1
|
@@ -624,11 +624,11 @@ async function missingControlPlane(cwd, sessionId, home, env) {
|
|
|
624
624
|
const dirs = findGitDirs(cwd);
|
|
625
625
|
if (dirs === void 0) return void 0;
|
|
626
626
|
if (existsSync(join(dirs.gitCommonDir, "outerlayer", "materialized.json")) || hasExcludeBlock(dirs.gitCommonDir)) {
|
|
627
|
-
const { cleanupEarlierCopies } = await import('./context-cleanup-
|
|
627
|
+
const { cleanupEarlierCopies } = await import('./context-cleanup-CHEWNYU6.js');
|
|
628
628
|
cleanupEarlierCopies(dirs);
|
|
629
629
|
}
|
|
630
630
|
if (!contextPossiblyGoverned(cwd, home)) return void 0;
|
|
631
|
-
const { governanceOf } = await import('./control-plane-launch-
|
|
631
|
+
const { governanceOf } = await import('./control-plane-launch-34LNRJWR.js');
|
|
632
632
|
if (await governanceOf({ cwd, env, home }) !== "governed") return void 0;
|
|
633
633
|
recordMissingContext(dirs, sessionId, home);
|
|
634
634
|
const launcher = `${cliInvocation()} claude`;
|
|
@@ -4,7 +4,7 @@ import { uploadSpooledSteps } from './chunk-KYS3TQAG.js';
|
|
|
4
4
|
import { LaunchFilter } from './chunk-ESVW4MJY.js';
|
|
5
5
|
import { RepoFilter } from './chunk-TBT347UY.js';
|
|
6
6
|
import { migrateLegacyArtifactSidecars, planArtifactUpload, artifactsStatePath, sanitizeTerminal, acquireArtifactSpoolLock, artifactBlobsDir, resolveArtifactTurnIndex, isArtifactTombstoned, ARTIFACT_RETRY_MAX_AGE_MS, writeArtifactSpoolState, reclaimUnneededArtifactBlobs, neededArtifactShas } from './chunk-G3IJ3N6F.js';
|
|
7
|
-
import { writeSyncStatus, spoolDir } from './chunk-
|
|
7
|
+
import { writeSyncStatus, spoolDir } from './chunk-PSN33ERW.js';
|
|
8
8
|
import { hookExecSpoolPath } from './chunk-F7CU5ABH.js';
|
|
9
9
|
import { applyReportedCost } from './chunk-BKO6JEZI.js';
|
|
10
10
|
import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-QNLX477Q.js';
|
|
@@ -14,10 +14,10 @@ import { defaultFetch } from './chunk-FVMYKL6L.js';
|
|
|
14
14
|
import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-NTRCK4NH.js';
|
|
15
15
|
import { readLatestProvenanceForSession, readContextProvenance } from './chunk-ZJSNLVCE.js';
|
|
16
16
|
import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
17
|
-
import { CAPTURE_TIERS, inferArtifactKind, bannedPathsForTier, downconvertSession, isHumanUserTurn, turnCountBound, EVENT_TYPES } from './chunk-7VUK5RFS.js';
|
|
18
17
|
import { readCloudConfig, cloudConfigPath, writeCloudConfig } from './chunk-EABW6AJQ.js';
|
|
19
18
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
20
19
|
import { removeJournalHooks } from './chunk-TUSYOL2O.js';
|
|
20
|
+
import { CAPTURE_TIERS, inferArtifactKind, bannedPathsForTier, downconvertSession, isHumanUserTurn, turnCountBound, EVENT_TYPES } from './chunk-7VUK5RFS.js';
|
|
21
21
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
22
22
|
import { signerFor, signRunnerRequest } from './chunk-M2ZWWTWZ.js';
|
|
23
23
|
import { dirname, basename, join } from 'path';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { WorkCommandError, postJson } from './chunk-
|
|
3
|
+
import { WorkCommandError, postJson } from './chunk-FBTGMSQF.js';
|
|
4
4
|
import { composeDelivery } from './chunk-LLM3I5YU.js';
|
|
5
|
-
import { defaultGitRunner, materializeContext, isStagingWriteFault, lookupGoverningSource } from './chunk-
|
|
5
|
+
import { defaultGitRunner, materializeContext, isStagingWriteFault, lookupGoverningSource } from './chunk-EAEELQVQ.js';
|
|
6
6
|
import { signingFetchFor } from './chunk-FVMYKL6L.js';
|
|
7
7
|
import { SHIM_SCRIPT } from './chunk-G2YNJIGF.js';
|
|
8
8
|
import { readDegraded, readContextManifest, readSourceCache } from './chunk-YQR6E6OV.js';
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { readContextManifest, removeContextManifest } from './chunk-YQR6E6OV.js';
|
|
4
4
|
import { removePreCommitGuardHook } from './chunk-TUSYOL2O.js';
|
|
5
|
+
import { CONTEXT_PIN_FILENAME } from './chunk-WFSUUUAN.js';
|
|
5
6
|
import { execFileSync } from 'child_process';
|
|
6
7
|
import { existsSync, unlinkSync, lstatSync, readdirSync, rmdirSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
|
|
7
8
|
import { join, dirname, isAbsolute } from 'path';
|
|
@@ -92,6 +93,34 @@ function trackedPaths(repoRoot) {
|
|
|
92
93
|
return void 0;
|
|
93
94
|
}
|
|
94
95
|
}
|
|
96
|
+
function isPin(text) {
|
|
97
|
+
try {
|
|
98
|
+
const value = JSON.parse(text);
|
|
99
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
100
|
+
const { schemaVersion, sha, ...rest } = value;
|
|
101
|
+
return Object.keys(rest).length === 0 && typeof schemaVersion === "number" && typeof sha === "string" && /^[0-9a-f]{40}$/.test(sha);
|
|
102
|
+
} catch {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function pinMayDiffer(repoRoot, args) {
|
|
107
|
+
try {
|
|
108
|
+
execFileSync("git", ["diff", "--quiet", ...args, "--", CONTEXT_PIN_FILENAME], { cwd: repoRoot, stdio: "ignore", timeout: 5e3 });
|
|
109
|
+
return false;
|
|
110
|
+
} catch {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function restorePin(repoRoot) {
|
|
115
|
+
try {
|
|
116
|
+
if (!isPin(readFileSync(join(repoRoot, CONTEXT_PIN_FILENAME), "utf8"))) return false;
|
|
117
|
+
if (pinMayDiffer(repoRoot, ["--cached"]) || !pinMayDiffer(repoRoot, [])) return false;
|
|
118
|
+
execFileSync("git", ["checkout", "--", CONTEXT_PIN_FILENAME], { cwd: repoRoot, stdio: "ignore", timeout: 5e3 });
|
|
119
|
+
return true;
|
|
120
|
+
} catch {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
95
124
|
function pruneEmptyDirs(start, root) {
|
|
96
125
|
let current = start;
|
|
97
126
|
while (current !== root && current.startsWith(root)) {
|
|
@@ -106,7 +135,7 @@ function pruneEmptyDirs(start, root) {
|
|
|
106
135
|
}
|
|
107
136
|
function cleanupEarlierCopies(input) {
|
|
108
137
|
const { repoRoot, gitCommonDir } = input;
|
|
109
|
-
const result = { removedFiles: [], excludeRemoved: false, guardRemoved: false };
|
|
138
|
+
const result = { removedFiles: [], excludeRemoved: false, guardRemoved: false, pinRestored: false };
|
|
110
139
|
if (!hasEarlierCopies(gitCommonDir)) return result;
|
|
111
140
|
let complete = true;
|
|
112
141
|
try {
|
|
@@ -132,6 +161,7 @@ function cleanupEarlierCopies(input) {
|
|
|
132
161
|
return result;
|
|
133
162
|
}
|
|
134
163
|
if (!complete) return result;
|
|
164
|
+
result.pinRestored = restorePin(repoRoot);
|
|
135
165
|
try {
|
|
136
166
|
result.guardRemoved = removePreCommitGuardHook(repoRoot).removed;
|
|
137
167
|
result.excludeRemoved = removeContextExcludes(gitCommonDir).changed;
|
|
@@ -88,7 +88,7 @@ async function runClaudeLauncher(args, deps = {}) {
|
|
|
88
88
|
return 1;
|
|
89
89
|
}
|
|
90
90
|
} else {
|
|
91
|
-
const { resolveLaunchPlane } = await import('./control-plane-launch-
|
|
91
|
+
const { resolveLaunchPlane } = await import('./control-plane-launch-34LNRJWR.js');
|
|
92
92
|
const plane = await resolveLaunchPlane({ cwd, env, home: homeFromEnv(env), fetchImpl: deps.fetchImpl, stderr });
|
|
93
93
|
if (plane.kind === "none") return run(claude, args, env, cwd, stderr);
|
|
94
94
|
if (plane.kind === "refused") {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-
|
|
3
|
+
import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-HOKXGFDR.js';
|
|
4
4
|
import './chunk-TWF3RICI.js';
|
|
5
|
-
import { verifiedTrackerNames, TRACKERS } from './chunk-
|
|
5
|
+
import { verifiedTrackerNames, TRACKERS } from './chunk-FBTGMSQF.js';
|
|
6
6
|
import './chunk-IF2OSI5T.js';
|
|
7
7
|
import './chunk-CG36IONK.js';
|
|
8
8
|
import './chunk-G3IJ3N6F.js';
|
|
9
9
|
import './chunk-BM63HB2M.js';
|
|
10
|
-
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-
|
|
10
|
+
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-PSN33ERW.js';
|
|
11
11
|
import './chunk-DSF2FWAZ.js';
|
|
12
12
|
import './chunk-BKO6JEZI.js';
|
|
13
13
|
import './chunk-QNLX477Q.js';
|
|
@@ -17,19 +17,19 @@ import './chunk-GOSFARMS.js';
|
|
|
17
17
|
import { C, warnDeprecated, API_KEY_FLAG_DEPRECATION, NO_COLOR_FLAG, stripNoColor } from './chunk-ANPNT6PM.js';
|
|
18
18
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
19
19
|
import { settingsPath, readSettings, SettingsParseError, listHookCandidates, wrapHooks, writeSettings, unwrapHooks, REGISTERED_EVENTS, cliCommand, removeHooks, removeStatusline, cliBinResolvable, mergeHooks, repointWrappedHooks, AUTO_WRAP_EVENTS, mergeStatusline } from './chunk-5QRP3MVS.js';
|
|
20
|
-
import './chunk-
|
|
20
|
+
import './chunk-7UWVLZXD.js';
|
|
21
21
|
import './chunk-FVMYKL6L.js';
|
|
22
22
|
import './chunk-NTRCK4NH.js';
|
|
23
23
|
import './chunk-ZJSNLVCE.js';
|
|
24
24
|
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
25
25
|
import './chunk-G2YNJIGF.js';
|
|
26
26
|
import './chunk-NNLA7LLQ.js';
|
|
27
|
-
import './chunk-WFSUUUAN.js';
|
|
28
|
-
import './chunk-7VUK5RFS.js';
|
|
29
27
|
import './chunk-EABW6AJQ.js';
|
|
30
28
|
import { cliInvocation, packageRunnerOf } from './chunk-CRB3POP4.js';
|
|
31
29
|
import { cloneIsGoverned } from './chunk-YQR6E6OV.js';
|
|
32
30
|
import { removeJournalHooks, removePreCommitGuardHook } from './chunk-TUSYOL2O.js';
|
|
31
|
+
import './chunk-WFSUUUAN.js';
|
|
32
|
+
import './chunk-7VUK5RFS.js';
|
|
33
33
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
34
34
|
import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
35
35
|
import './chunk-M2ZWWTWZ.js';
|
|
@@ -3843,7 +3843,7 @@ states under Starter files.
|
|
|
3843
3843
|
`
|
|
3844
3844
|
).action(async (opts) => {
|
|
3845
3845
|
if (opts.update || opts.dryRun) {
|
|
3846
|
-
const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-
|
|
3846
|
+
const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-7DVAKWW3.js');
|
|
3847
3847
|
const problem = updateFlagProblem(opts);
|
|
3848
3848
|
if (problem !== void 0) {
|
|
3849
3849
|
fail(problem);
|
|
@@ -3890,11 +3890,12 @@ states under Starter files.
|
|
|
3890
3890
|
if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
|
|
3891
3891
|
`);
|
|
3892
3892
|
}
|
|
3893
|
-
|
|
3894
|
-
|
|
3893
|
+
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-Z4O4PPLZ.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
|
|
3894
|
+
if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
|
|
3895
|
+
else process.stdout.write(outcome.text + (shell?.text ?? ""));
|
|
3895
3896
|
return;
|
|
3896
3897
|
}
|
|
3897
|
-
const { runInitCommand } = await import('./init-cmd-
|
|
3898
|
+
const { runInitCommand } = await import('./init-cmd-Z4O4PPLZ.js');
|
|
3898
3899
|
const code = await runInitCommand(
|
|
3899
3900
|
{ json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
|
|
3900
3901
|
{
|
|
@@ -3906,7 +3907,7 @@ states under Starter files.
|
|
|
3906
3907
|
return { ok, text, detail };
|
|
3907
3908
|
},
|
|
3908
3909
|
runAgentSetup: async () => {
|
|
3909
|
-
const { runAgentSetup } = await import('./agent-setup-
|
|
3910
|
+
const { runAgentSetup } = await import('./agent-setup-AM42SA2D.js');
|
|
3910
3911
|
return runAgentSetup({ cwd: process.cwd() });
|
|
3911
3912
|
},
|
|
3912
3913
|
runDoctorChecks: gatherDoctorChecks,
|
|
@@ -4026,13 +4027,13 @@ code is 1: revoke the token on /profile/security.
|
|
|
4026
4027
|
"\nIncremental: only sessions newer than the last checkpoint ship. The tier\nis applied on this machine before anything leaves it; `--dry-run` prints\nexactly what would. The hook-triggered background sync runs `--quiet`.\nExit 2 means the server rejected at least one session.\n"
|
|
4027
4028
|
).action(async (opts) => {
|
|
4028
4029
|
if (opts.link !== void 0) {
|
|
4029
|
-
const { lookupArtifactLink } = await import('./artifact-link-cmd-
|
|
4030
|
+
const { lookupArtifactLink } = await import('./artifact-link-cmd-OWRI5AJX.js');
|
|
4030
4031
|
const found = lookupArtifactLink(opts.link);
|
|
4031
4032
|
if (found.ok) process.stdout.write(found.url + "\n");
|
|
4032
4033
|
else fail(found.reason);
|
|
4033
4034
|
return;
|
|
4034
4035
|
}
|
|
4035
|
-
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-
|
|
4036
|
+
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-VXOUFS4I.js');
|
|
4036
4037
|
try {
|
|
4037
4038
|
const result = await runSync({
|
|
4038
4039
|
url: opts.url,
|
|
@@ -4063,7 +4064,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4063
4064
|
if (invokedCommandToken(argv) === "watch") {
|
|
4064
4065
|
warnDeprecated(`\`${cliInvocation()} watch\` is now \`${cliInvocation()} daemon\`; the old name will be removed in a future release.`);
|
|
4065
4066
|
}
|
|
4066
|
-
const { runWatch } = await import('./watch-
|
|
4067
|
+
const { runWatch } = await import('./watch-OH645CV2.js');
|
|
4067
4068
|
await runWatch({ once: opts.once });
|
|
4068
4069
|
});
|
|
4069
4070
|
program2.command("hook <event>", { hidden: true }).description("capture-hook fast path, installed by `init`").action(() => {
|
|
@@ -4119,7 +4120,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4119
4120
|
}
|
|
4120
4121
|
});
|
|
4121
4122
|
program2.command("session-sender", { hidden: true }).description("stream a runner build's sessions to its work item while the build runs").action(async () => {
|
|
4122
|
-
const { runSessionSender } = await import('./session-sender-
|
|
4123
|
+
const { runSessionSender } = await import('./session-sender-U2BBUWNO.js');
|
|
4123
4124
|
try {
|
|
4124
4125
|
await runSessionSender();
|
|
4125
4126
|
} catch (err) {
|
|
@@ -4155,7 +4156,7 @@ async function runCli(processArgv) {
|
|
|
4155
4156
|
await buildProgram(argv).parseAsync(argv);
|
|
4156
4157
|
}
|
|
4157
4158
|
async function compileContext(opts) {
|
|
4158
|
-
const { runEmit, EmitError } = await import('./emit-cmd-
|
|
4159
|
+
const { runEmit, EmitError } = await import('./emit-cmd-W55AEBCA.js');
|
|
4159
4160
|
try {
|
|
4160
4161
|
const result = runEmit({ cwd: opts.dir, check: opts.check, json: opts.json });
|
|
4161
4162
|
if (result.exitCode !== 0) process.exitCode = result.exitCode;
|
|
@@ -4202,7 +4203,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
|
|
|
4202
4203
|
await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
|
|
4203
4204
|
return;
|
|
4204
4205
|
}
|
|
4205
|
-
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-
|
|
4206
|
+
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-5NZMLCJK.js');
|
|
4206
4207
|
try {
|
|
4207
4208
|
const result = await runEmitResult({
|
|
4208
4209
|
name,
|
|
@@ -4252,7 +4253,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
|
|
|
4252
4253
|
locally so it never uploads. One correction can retire several duplicates.
|
|
4253
4254
|
`
|
|
4254
4255
|
).action(async (file, opts) => {
|
|
4255
|
-
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-
|
|
4256
|
+
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-XBHM647X.js');
|
|
4256
4257
|
let pr;
|
|
4257
4258
|
if (opts.pr !== void 0) {
|
|
4258
4259
|
pr = parseTrackerNumber(opts.pr);
|
|
@@ -4311,7 +4312,7 @@ recent events with their ids. --find <text> searches all of them.
|
|
|
4311
4312
|
item that session was launched for is used automatically.
|
|
4312
4313
|
`
|
|
4313
4314
|
).action(async (opts) => {
|
|
4314
|
-
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4315
|
+
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-7JHVRYOP.js');
|
|
4315
4316
|
try {
|
|
4316
4317
|
refuseRemovedFindingFlags(opts);
|
|
4317
4318
|
const result = await runEmitFinding({
|
|
@@ -4378,7 +4379,7 @@ the whole batch. "untimed": true records one with no time on purpose.
|
|
|
4378
4379
|
that session was launched for is used automatically.
|
|
4379
4380
|
`
|
|
4380
4381
|
).action(async (file, opts) => {
|
|
4381
|
-
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4382
|
+
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-7JHVRYOP.js');
|
|
4382
4383
|
try {
|
|
4383
4384
|
const result = await runEmitFindings({
|
|
4384
4385
|
file,
|
|
@@ -4431,7 +4432,7 @@ the step, the command prints why and exits 1.
|
|
|
4431
4432
|
throw err;
|
|
4432
4433
|
}
|
|
4433
4434
|
});
|
|
4434
|
-
emitCmd.command("criteria <file>").description("Record a work item's acceptance criteria from a JSON
|
|
4435
|
+
emitCmd.command("criteria <file>").description("Record a work item's acceptance criteria from a JSON or acceptance .md file").option("--item <number>", "work item to record on directly, by its number in this factory").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)").addHelpText(
|
|
4435
4436
|
"after",
|
|
4436
4437
|
`
|
|
4437
4438
|
${cliInvocation()} emit criteria criteria.json --item 412
|
|
@@ -4449,9 +4450,14 @@ Once an item has a list, only a person can replace it: run the command outside a
|
|
|
4449
4450
|
agent session, with your own login. A key bound to no member cannot replace it either.
|
|
4450
4451
|
--item names the work item; without it, inside a recorded session, the item that
|
|
4451
4452
|
session was launched for is used automatically.
|
|
4453
|
+
|
|
4454
|
+
A file ending in .md is read as an acceptance file, such as acceptance/412-login.md:
|
|
4455
|
+
each list item that opens with an id in backticks is a criterion, its text is the rest
|
|
4456
|
+
of the item, and a (proof: <kind>) annotation names its proof.
|
|
4457
|
+
${cliInvocation()} emit criteria acceptance/412-login.md --item 412
|
|
4452
4458
|
`
|
|
4453
4459
|
).action(async (file, opts) => {
|
|
4454
|
-
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-
|
|
4460
|
+
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-UNMWHOUY.js');
|
|
4455
4461
|
try {
|
|
4456
4462
|
const result = await runEmitCriteria({
|
|
4457
4463
|
file,
|
|
@@ -4475,9 +4481,9 @@ function registerSpecCommands(program2) {
|
|
|
4475
4481
|
const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
|
|
4476
4482
|
const credentialOptions = (command) => command.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)");
|
|
4477
4483
|
const run = async (action) => {
|
|
4478
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4484
|
+
const { WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4479
4485
|
try {
|
|
4480
|
-
await action(await import('./spec-cmd-
|
|
4486
|
+
await action(await import('./spec-cmd-FVLJOFGC.js'));
|
|
4481
4487
|
} catch (err) {
|
|
4482
4488
|
if (err instanceof WorkCommandError) {
|
|
4483
4489
|
fail(err.message);
|
|
@@ -4518,7 +4524,7 @@ takes it, and prints the line that starts your session on it. That
|
|
|
4518
4524
|
session links itself and holds the item's lease while it works.
|
|
4519
4525
|
`
|
|
4520
4526
|
).action(async (opts) => {
|
|
4521
|
-
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-
|
|
4527
|
+
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4522
4528
|
try {
|
|
4523
4529
|
await runWorkBuild(opts);
|
|
4524
4530
|
} catch (err) {
|
|
@@ -4541,7 +4547,7 @@ renews that session's own 20-minute lease, unless --no-lease or
|
|
|
4541
4547
|
--ended is given, or another worker already holds a live one.
|
|
4542
4548
|
`
|
|
4543
4549
|
).action(async (number, opts) => {
|
|
4544
|
-
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-
|
|
4550
|
+
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4545
4551
|
try {
|
|
4546
4552
|
await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
|
|
4547
4553
|
} catch (err) {
|
|
@@ -4565,8 +4571,8 @@ criterion's new proof; --ready hands the thread back to a person. At
|
|
|
4565
4571
|
most one action flag may be given.
|
|
4566
4572
|
`
|
|
4567
4573
|
).action(async (opts) => {
|
|
4568
|
-
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4569
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4574
|
+
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-UCCPWUSR.js');
|
|
4575
|
+
const { WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4570
4576
|
try {
|
|
4571
4577
|
await runWorkComment(opts);
|
|
4572
4578
|
} catch (err) {
|
|
@@ -4587,8 +4593,8 @@ criterion that carries proof or a comment, each with who is waiting
|
|
|
4587
4593
|
on whom next.
|
|
4588
4594
|
`
|
|
4589
4595
|
).action(async (opts) => {
|
|
4590
|
-
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4591
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4596
|
+
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-UCCPWUSR.js');
|
|
4597
|
+
const { WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4592
4598
|
try {
|
|
4593
4599
|
await runWorkThreads(opts);
|
|
4594
4600
|
} catch (err) {
|
|
@@ -4612,8 +4618,8 @@ still running, or that an older runner released, has no log and the
|
|
|
4612
4618
|
command exits 1.
|
|
4613
4619
|
`
|
|
4614
4620
|
).action(async (opts) => {
|
|
4615
|
-
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-
|
|
4616
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4621
|
+
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-7352CJPG.js');
|
|
4622
|
+
const { WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4617
4623
|
try {
|
|
4618
4624
|
await runWorkLogs(opts);
|
|
4619
4625
|
} catch (err) {
|
|
@@ -4624,6 +4630,30 @@ command exits 1.
|
|
|
4624
4630
|
throw err;
|
|
4625
4631
|
}
|
|
4626
4632
|
});
|
|
4633
|
+
workCmd.command("stop").description("Stop the host build running on a work item").requiredOption("--item <number>", "the item's number inside this factory").option("--note <text>", "why the build is stopped (up to 500 characters); kept with the attempt").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)").addHelpText(
|
|
4634
|
+
"after",
|
|
4635
|
+
`
|
|
4636
|
+
${cliInvocation()} work stop --item 7
|
|
4637
|
+
${cliInvocation()} work stop --item 7 --note "wrong branch"
|
|
4638
|
+
|
|
4639
|
+
Asks the host that holds the item's build to end it. The host reads the
|
|
4640
|
+
request at its next heartbeat, so the build may run a little longer. The
|
|
4641
|
+
item is not built again until a new build request. Exits 1 when no host
|
|
4642
|
+
build is running for the item.
|
|
4643
|
+
`
|
|
4644
|
+
).action(async (opts) => {
|
|
4645
|
+
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-CRDHXQVW.js');
|
|
4646
|
+
const { WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4647
|
+
try {
|
|
4648
|
+
await runWorkStop(opts);
|
|
4649
|
+
} catch (err) {
|
|
4650
|
+
if (err instanceof WorkStopCommandError || err instanceof WorkCommandError) {
|
|
4651
|
+
fail(err.message);
|
|
4652
|
+
return;
|
|
4653
|
+
}
|
|
4654
|
+
throw err;
|
|
4655
|
+
}
|
|
4656
|
+
});
|
|
4627
4657
|
workCmd.command("remove").description("Withdraw a source's addition \u2014 never deletes the item").option("--item <number>", "the item's number inside this factory").option("--issue <number>", "issue number or Linear/Jira key (default: named by --item instead)").option(TRACKER_OPTION_FLAG, "tracker for a keyed --issue, when both hold the key").option("--repo <owner/name>", "repository for an issue number (default: the checkout's remote)").requiredOption("--reason <text>", "why this source is no longer working on it").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)").addHelpText(
|
|
4628
4658
|
"after",
|
|
4629
4659
|
`
|
|
@@ -4634,7 +4664,7 @@ deletes anything \u2014 the item is removed from Work only once no
|
|
|
4634
4664
|
live addition remains on it.
|
|
4635
4665
|
`
|
|
4636
4666
|
).action(async (opts) => {
|
|
4637
|
-
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-
|
|
4667
|
+
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4638
4668
|
try {
|
|
4639
4669
|
await runWorkRemove(opts);
|
|
4640
4670
|
} catch (err) {
|
|
@@ -4646,7 +4676,7 @@ live addition remains on it.
|
|
|
4646
4676
|
}
|
|
4647
4677
|
});
|
|
4648
4678
|
workCmd.command("status").description("Show one item's stage, gate ledger, and additions").option("--item <number>", "the item's number inside this factory").option("--issue <number>", "issue number, or a Linear/Jira key like ENG-123").option(TRACKER_OPTION_FLAG, "tracker for a keyed --issue, when both hold the key").option("--repo <owner/name>", "repository for an issue number (default: the checkout's remote)").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) => {
|
|
4649
|
-
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-
|
|
4679
|
+
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4650
4680
|
try {
|
|
4651
4681
|
await runWorkStatus(opts);
|
|
4652
4682
|
} catch (err) {
|
|
@@ -4658,7 +4688,7 @@ live addition remains on it.
|
|
|
4658
4688
|
}
|
|
4659
4689
|
});
|
|
4660
4690
|
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) => {
|
|
4661
|
-
const { runWorkList, WorkCommandError } = await import('./work-cmd-
|
|
4691
|
+
const { runWorkList, WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4662
4692
|
try {
|
|
4663
4693
|
await runWorkList(opts);
|
|
4664
4694
|
} catch (err) {
|
|
@@ -4679,7 +4709,7 @@ by a different key is refused; claiming again with the same key extends
|
|
|
4679
4709
|
it. --host is a label only.
|
|
4680
4710
|
`
|
|
4681
4711
|
).action(async (opts) => {
|
|
4682
|
-
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-
|
|
4712
|
+
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-DRQCHCOK.js');
|
|
4683
4713
|
try {
|
|
4684
4714
|
await runWorkClaim(opts);
|
|
4685
4715
|
} catch (err) {
|
|
@@ -4699,7 +4729,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
|
|
|
4699
4729
|
lease has expired, or a 403 if a different key holds it.
|
|
4700
4730
|
`
|
|
4701
4731
|
).action(async (opts) => {
|
|
4702
|
-
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-
|
|
4732
|
+
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-DRQCHCOK.js');
|
|
4703
4733
|
try {
|
|
4704
4734
|
await runWorkRenew(opts);
|
|
4705
4735
|
} catch (err) {
|
|
@@ -4731,7 +4761,7 @@ applies to a host's lease only. A later tool call in the session
|
|
|
4731
4761
|
takes the lease again.
|
|
4732
4762
|
`
|
|
4733
4763
|
).action(async (opts) => {
|
|
4734
|
-
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-
|
|
4764
|
+
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-DRQCHCOK.js');
|
|
4735
4765
|
try {
|
|
4736
4766
|
await runWorkRelease(opts);
|
|
4737
4767
|
} catch (err) {
|
|
@@ -4783,8 +4813,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
|
|
|
4783
4813
|
Run it again after a change to the title or description.
|
|
4784
4814
|
`
|
|
4785
4815
|
).action(async (opts) => {
|
|
4786
|
-
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-
|
|
4787
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4816
|
+
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-LSH4VHJM.js');
|
|
4817
|
+
const { WorkCommandError } = await import('./work-cmd-5I3J2XQQ.js');
|
|
4788
4818
|
try {
|
|
4789
4819
|
await runWorkOpenPr(opts);
|
|
4790
4820
|
} catch (err) {
|
|
@@ -4801,7 +4831,7 @@ function registerRunnerCommands(program2) {
|
|
|
4801
4831
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
4802
4832
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
4803
4833
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-CLSGABD5.js');
|
|
4804
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4834
|
+
const { start, RunnerStartError } = await import('./loop-EAZQMAE2.js');
|
|
4805
4835
|
const { RunnerAlreadyRunningError } = await import('./pidfile-3DM4OBKO.js');
|
|
4806
4836
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4807
4837
|
try {
|
|
@@ -4817,7 +4847,7 @@ function registerRunnerCommands(program2) {
|
|
|
4817
4847
|
});
|
|
4818
4848
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
4819
4849
|
const { defaultRunnerConfigPath } = await import('./config-CLSGABD5.js');
|
|
4820
|
-
const { runRunnerCheck } = await import('./check-
|
|
4850
|
+
const { runRunnerCheck } = await import('./check-BR5D27CX.js');
|
|
4821
4851
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4822
4852
|
const result = await runRunnerCheck(configPath);
|
|
4823
4853
|
if (!result.ok) {
|
|
@@ -4846,7 +4876,7 @@ function registerRunnerCommands(program2) {
|
|
|
4846
4876
|
}
|
|
4847
4877
|
try {
|
|
4848
4878
|
if (opts.service === true) {
|
|
4849
|
-
const { installServiceCommand } = await import('./command-
|
|
4879
|
+
const { installServiceCommand } = await import('./command-ZQNEPDS6.js');
|
|
4850
4880
|
const result2 = await installServiceCommand({
|
|
4851
4881
|
configPath,
|
|
4852
4882
|
print: opts.print,
|
|
@@ -4902,7 +4932,7 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
|
|
|
4902
4932
|
return;
|
|
4903
4933
|
}
|
|
4904
4934
|
const { defaultRunnerConfigPath } = await import('./config-CLSGABD5.js');
|
|
4905
|
-
const { uninstallServiceCommand } = await import('./command-
|
|
4935
|
+
const { uninstallServiceCommand } = await import('./command-ZQNEPDS6.js');
|
|
4906
4936
|
const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
|
|
4907
4937
|
if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
|
|
4908
4938
|
`);
|
|
@@ -4930,10 +4960,10 @@ already in runner.env is used.
|
|
|
4930
4960
|
`
|
|
4931
4961
|
).action(async (opts) => {
|
|
4932
4962
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-CLSGABD5.js');
|
|
4933
|
-
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-
|
|
4934
|
-
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-
|
|
4935
|
-
const { detectMachine } = await import('./machine-
|
|
4936
|
-
const { chooseVm, runVmInit, VmInitError } = await import('./init-
|
|
4963
|
+
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-XG47KCI4.js');
|
|
4964
|
+
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-5FOWCW7J.js');
|
|
4965
|
+
const { detectMachine } = await import('./machine-TRHBT5NE.js');
|
|
4966
|
+
const { chooseVm, runVmInit, VmInitError } = await import('./init-V6FOMD2V.js');
|
|
4937
4967
|
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-FRZFFHDF.js');
|
|
4938
4968
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4939
4969
|
if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
|
|
@@ -5084,7 +5114,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
|
|
|
5084
5114
|
let serviceUp = false;
|
|
5085
5115
|
let restart;
|
|
5086
5116
|
if (installedLayout) {
|
|
5087
|
-
const { installServiceCommand } = await import('./command-
|
|
5117
|
+
const { installServiceCommand } = await import('./command-ZQNEPDS6.js');
|
|
5088
5118
|
const service = await installServiceCommand({
|
|
5089
5119
|
configPath,
|
|
5090
5120
|
entryPath: process.argv[1] ?? "",
|
|
@@ -5144,7 +5174,7 @@ Next:
|
|
|
5144
5174
|
})();
|
|
5145
5175
|
const memory = loaded?.build?.memory ?? "8g";
|
|
5146
5176
|
try {
|
|
5147
|
-
const { imageTargetFor } = await import('./governing-source-
|
|
5177
|
+
const { imageTargetFor } = await import('./governing-source-HAA4OW57.js');
|
|
5148
5178
|
const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
|
|
5149
5179
|
if (!target.ok) {
|
|
5150
5180
|
if (opts.json) {
|
|
@@ -5208,15 +5238,15 @@ Next:
|
|
|
5208
5238
|
});
|
|
5209
5239
|
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) => {
|
|
5210
5240
|
const { defaultRunnerConfigPath } = await import('./config-CLSGABD5.js');
|
|
5211
|
-
const { requestStop } = await import('./loop-
|
|
5241
|
+
const { requestStop } = await import('./loop-EAZQMAE2.js');
|
|
5212
5242
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5213
5243
|
await requestStop(configPath, Boolean(opts.now));
|
|
5214
5244
|
});
|
|
5215
5245
|
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) => {
|
|
5216
5246
|
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-CLSGABD5.js');
|
|
5217
5247
|
const { jobsDir, runnerDir } = await import('./paths-7XP63OAX.js');
|
|
5218
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
5219
|
-
const { renderStatus } = await import('./status-
|
|
5248
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-EAZQMAE2.js');
|
|
5249
|
+
const { renderStatus } = await import('./status-BINH7MBG.js');
|
|
5220
5250
|
const { readHousekeepingRecord } = await import('./record-3WP6V2K5.js');
|
|
5221
5251
|
const path2 = await import('path');
|
|
5222
5252
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
@@ -5272,7 +5302,7 @@ Next:
|
|
|
5272
5302
|
});
|
|
5273
5303
|
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) => {
|
|
5274
5304
|
const { defaultRunnerConfigPath } = await import('./config-CLSGABD5.js');
|
|
5275
|
-
const { listJobFiles } = await import('./loop-
|
|
5305
|
+
const { listJobFiles } = await import('./loop-EAZQMAE2.js');
|
|
5276
5306
|
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-AMLKC3VP.js');
|
|
5277
5307
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5278
5308
|
const item = parseTrackerNumber(itemArg);
|
|
@@ -5532,7 +5562,7 @@ caller from the bearer token, the gateway answers 401 without that header.
|
|
|
5532
5562
|
function registerImportCommands(program2) {
|
|
5533
5563
|
const importCmd = program2.command("import").description("Import an existing config format into .outerlayer/");
|
|
5534
5564
|
importCmd.command("ruler").description("Port a .ruler/ tree into the equivalent .outerlayer/ tree").option("--dir <path>", "repo root to read from (default: cwd)").option("--json", "machine-readable JSON output").addHelpText("after", "\nRuler: https://github.com/intellectronica/ruler. Mostly a rename.\n").action(async (opts) => {
|
|
5535
|
-
const { runImportRuler, ImportRulerError } = await import('./import-ruler-cmd-
|
|
5565
|
+
const { runImportRuler, ImportRulerError } = await import('./import-ruler-cmd-T6LLO6Q7.js');
|
|
5536
5566
|
try {
|
|
5537
5567
|
const result = runImportRuler({ cwd: opts.dir, json: opts.json });
|
|
5538
5568
|
if (result.exitCode !== 0) process.exitCode = result.exitCode;
|
|
@@ -5548,7 +5578,7 @@ function registerImportCommands(program2) {
|
|
|
5548
5578
|
"after",
|
|
5549
5579
|
"\nInstalls the four maintained skills (outerlayer-evidence, outerlayer-amend,\nouterlayer-findings, outerlayer-cli) and an AGENTS.md snippet teaching agents to run\n`emit artifact`. A skill that differs from this CLI's bundle is rewritten to it, and the output says so.\n"
|
|
5550
5580
|
).action(async (opts) => {
|
|
5551
|
-
const { runImportCapture, ImportCaptureError } = await import('./import-capture-cmd-
|
|
5581
|
+
const { runImportCapture, ImportCaptureError } = await import('./import-capture-cmd-TK4XY7RD.js');
|
|
5552
5582
|
try {
|
|
5553
5583
|
runImportCapture({ cwd: opts.dir, json: opts.json });
|
|
5554
5584
|
} catch (err) {
|
|
@@ -5,16 +5,16 @@ import { runRunnerInstall, launcherSummary, restartNote } from './chunk-MLAAT4S6
|
|
|
5
5
|
import './chunk-I2UOAV7X.js';
|
|
6
6
|
import './chunk-VYAL7PUE.js';
|
|
7
7
|
import { currentLink, execStartCommand } from './chunk-AMFWYESY.js';
|
|
8
|
-
import { detectMachine } from './chunk-
|
|
9
|
-
import './chunk-
|
|
8
|
+
import { detectMachine } from './chunk-LW7G5TJB.js';
|
|
9
|
+
import './chunk-3ZR7Y23Y.js';
|
|
10
10
|
import './chunk-OGFGZQA3.js';
|
|
11
11
|
import './chunk-VMJPFQNE.js';
|
|
12
12
|
import './chunk-3UZTIRLF.js';
|
|
13
13
|
import './chunk-GGOMT6KF.js';
|
|
14
14
|
import './chunk-X5H2WYMB.js';
|
|
15
|
-
import './chunk-
|
|
15
|
+
import './chunk-XZ4H4X5F.js';
|
|
16
16
|
import { installService, uninstallService, realTaskScheduler } from './chunk-QEFKA2QD.js';
|
|
17
|
-
import './chunk-
|
|
17
|
+
import './chunk-FBTGMSQF.js';
|
|
18
18
|
import './chunk-IF2OSI5T.js';
|
|
19
19
|
import './chunk-CG36IONK.js';
|
|
20
20
|
import './chunk-G3IJ3N6F.js';
|
|
@@ -34,19 +34,19 @@ import './chunk-GOSFARMS.js';
|
|
|
34
34
|
import './chunk-ANPNT6PM.js';
|
|
35
35
|
import './chunk-WZBHBH3J.js';
|
|
36
36
|
import './chunk-LLM3I5YU.js';
|
|
37
|
-
import './chunk-
|
|
38
|
-
import './chunk-
|
|
37
|
+
import './chunk-EAEELQVQ.js';
|
|
38
|
+
import './chunk-7UWVLZXD.js';
|
|
39
39
|
import './chunk-FVMYKL6L.js';
|
|
40
40
|
import './chunk-NTRCK4NH.js';
|
|
41
41
|
import './chunk-ZJSNLVCE.js';
|
|
42
42
|
import './chunk-BJ3KTMDH.js';
|
|
43
43
|
import './chunk-G2YNJIGF.js';
|
|
44
44
|
import './chunk-NNLA7LLQ.js';
|
|
45
|
-
import './chunk-WFSUUUAN.js';
|
|
46
|
-
import './chunk-7VUK5RFS.js';
|
|
47
45
|
import './chunk-EABW6AJQ.js';
|
|
48
46
|
import './chunk-CRB3POP4.js';
|
|
49
47
|
import './chunk-YQR6E6OV.js';
|
|
48
|
+
import './chunk-WFSUUUAN.js';
|
|
49
|
+
import './chunk-7VUK5RFS.js';
|
|
50
50
|
import './chunk-VNVZDWO3.js';
|
|
51
51
|
import './chunk-RA3O54FC.js';
|
|
52
52
|
import './chunk-M2ZWWTWZ.js';
|
|
@@ -8,9 +8,9 @@ import './chunk-GOSFARMS.js';
|
|
|
8
8
|
import './chunk-ANPNT6PM.js';
|
|
9
9
|
import './chunk-NTRCK4NH.js';
|
|
10
10
|
import './chunk-BJ3KTMDH.js';
|
|
11
|
-
import './chunk-7VUK5RFS.js';
|
|
12
11
|
import './chunk-EABW6AJQ.js';
|
|
13
12
|
import './chunk-CRB3POP4.js';
|
|
13
|
+
import './chunk-7VUK5RFS.js';
|
|
14
14
|
import './chunk-VNVZDWO3.js';
|
|
15
15
|
import './chunk-Z5GEFMRW.js';
|
|
16
16
|
|