@outerlayer/cli 0.25.2 → 0.26.1
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 +23 -0
- package/README.md +0 -1
- package/dist/{agent-setup-YHFZB2BC.js → agent-setup-PZYQWN4H.js} +3 -3
- package/dist/{build-ONH22PN5.js → build-JK2DLT6X.js} +2 -2
- package/dist/build-info.json +1 -1
- package/dist/{builder-WPULEVMY.js → builder-TMA25KRR.js} +2 -2
- package/dist/{check-SSEVZJN5.js → check-3CBJVXZD.js} +19 -19
- package/dist/{chunk-APBTVIM4.js → chunk-4R24DSL2.js} +4 -4
- package/dist/{chunk-H3AEZIYB.js → chunk-6M4LNO22.js} +1 -1
- package/dist/{chunk-F4267APM.js → chunk-7I6GZSN3.js} +1 -1
- package/dist/{chunk-PCADYUQT.js → chunk-7NKVMAP6.js} +2 -2
- package/dist/{chunk-3RBQSPW5.js → chunk-AINUN2TT.js} +1 -1
- package/dist/{chunk-Z453MOUL.js → chunk-BMWIUSTZ.js} +3 -3
- package/dist/{chunk-WVM6PM2N.js → chunk-D7V33CAH.js} +3 -3
- package/dist/{chunk-P7UQZFNY.js → chunk-EORWWFPA.js} +2 -2
- package/dist/{chunk-CP24ZXXR.js → chunk-GAWZ7ATV.js} +12 -9
- package/dist/{chunk-WXKAHUGA.js → chunk-GQOT37HL.js} +5 -5
- package/dist/{chunk-FQCLEH34.js → chunk-HXFRJKMU.js} +2 -2
- package/dist/{chunk-XBCJI6SV.js → chunk-IIFMFX6J.js} +2 -2
- package/dist/{chunk-Z6SWQV77.js → chunk-ILL2CWOU.js} +16 -9
- package/dist/{chunk-QBENN6GA.js → chunk-JUTN2HUP.js} +2 -2
- package/dist/{chunk-ITP76BST.js → chunk-PNHNKMA3.js} +3 -3
- package/dist/{chunk-C3AMVSMS.js → chunk-QIIMZC7W.js} +1 -1
- package/dist/{chunk-GJZEUQ6D.js → chunk-QRZLUUNN.js} +13 -0
- package/dist/{chunk-WMEADVIX.js → chunk-TBJ7KO2A.js} +8 -8
- package/dist/{chunk-G2T4HCGT.js → chunk-TEVO3RUV.js} +1 -1
- package/dist/{chunk-CLUUAX6O.js → chunk-TPAF24PK.js} +2 -2
- package/dist/{chunk-D4UDE2AP.js → chunk-W3NVHOCS.js} +1 -1
- package/dist/{chunk-DZUANBKP.js → chunk-XPKI5OMT.js} +4 -4
- package/dist/{claude-launcher-FXFXYW2E.js → claude-launcher-O2U6P6ZD.js} +1 -1
- package/dist/{cli-ZBZFCRTK.js → cli-7HVTFJZO.js} +64 -113
- package/dist/{command-A2XBWQGB.js → command-2Q5UDZUO.js} +11 -11
- package/dist/{connect-cmd-HAFFAVEO.js → connect-cmd-2JHSLBXK.js} +2 -2
- package/dist/{container-start-L6LCWH6Z.js → container-start-SCCR2PRD.js} +12 -12
- package/dist/{control-plane-launch-FRK5IZXC.js → control-plane-launch-654RV5PO.js} +2 -2
- package/dist/{docker-FATVQG5M.js → docker-4X2A5HDY.js} +2 -2
- package/dist/{doctor-EI22PDR5.js → doctor-3QA5Y5HG.js} +16 -13
- package/dist/{emit-artifact-cmd-Y2GMWCSD.js → emit-artifact-cmd-SFUSDWZM.js} +6 -6
- package/dist/{emit-criteria-cmd-LI7OLHEC.js → emit-criteria-cmd-VMZIRJCQ.js} +3 -3
- package/dist/{emit-finding-cmd-3LU7C356.js → emit-finding-cmd-KMJNYQI7.js} +3 -3
- package/dist/{emit-result-cmd-NKAKRBW2.js → emit-result-cmd-NEICBIDU.js} +6 -6
- package/dist/{emit-step-cmd-JQ23TRF5.js → emit-step-cmd-AUHA3EXY.js} +4 -4
- package/dist/{governing-source-73APROH6.js → governing-source-J5DF65X5.js} +6 -6
- package/dist/{hook-fast-GD7F2EBL.js → hook-fast-REXH5P6R.js} +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-MRREKVT5.js → init-NEUTUGEQ.js} +12 -12
- package/dist/{init-ZN47OUB3.js → init-UMON3HZK.js} +12 -12
- package/dist/{init-cmd-ZGQ6HMZD.js → init-cmd-54DMRBNO.js} +6 -6
- package/dist/{init-update-HTHYQOHU.js → init-update-FJDKY4SJ.js} +4 -4
- package/dist/{loop-JTKSTVDV.js → loop-6JKW5QR5.js} +19 -19
- package/dist/{machine-RCIMAKOA.js → machine-XF55O56X.js} +11 -11
- package/dist/{mcp-serve-cmd-QBFQN553.js → mcp-serve-cmd-U5N5DK3H.js} +1 -1
- package/dist/{runner-identity-C2O6Q3RR.js → runner-identity-NH6RLVMI.js} +2 -2
- package/dist/{runner-key-ENQLA4Q6.js → runner-key-FUNSJ564.js} +12 -12
- package/dist/{session-sender-535VA2CA.js → session-sender-P5GVOIUY.js} +7 -7
- package/dist/{spec-cmd-KERLZ6GJ.js → spec-cmd-HMFW552G.js} +4 -4
- package/dist/{status-OTZ3VX47.js → status-ULZVKQ7G.js} +15 -15
- package/dist/{sync-cmd-EIRKU5FA.js → sync-cmd-VCLCOME6.js} +6 -6
- package/dist/{watch-SMF5CW5T.js → watch-SVGL24OX.js} +6 -6
- package/dist/{work-claim-cmd-JCUBRZKN.js → work-claim-cmd-WQF5RTCT.js} +6 -6
- package/dist/{work-cmd-C3CFJZYD.js → work-cmd-TGSNYPSG.js} +4 -4
- package/dist/{work-comment-cmd-NDE3O7PN.js → work-comment-cmd-O3FVX6M4.js} +4 -4
- package/dist/{work-logs-cmd-KUGBBJAO.js → work-logs-cmd-2RMJFVNZ.js} +4 -4
- package/dist/{work-open-pr-cmd-TFIGKPRL.js → work-open-pr-cmd-5EP7BKRE.js} +5 -5
- package/dist/{work-pr-cmd-KKCLXRJL.js → work-pr-cmd-DKTBEFHO.js} +4 -4
- package/dist/{work-stop-cmd-QUEDBM4Q.js → work-stop-cmd-TNJYBLMN.js} +4 -4
- package/package.json +2 -2
- package/dist/import-capture-cmd-TCOKNVBM.js +0 -73
- package/dist/import-ruler-cmd-VJOHOJQ7.js +0 -173
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { detectActiveSession, autoConnect } from './chunk-
|
|
4
|
-
import { workPageUrl } from './chunk-
|
|
3
|
+
import { detectActiveSession, autoConnect } from './chunk-HXFRJKMU.js';
|
|
4
|
+
import { workPageUrl } from './chunk-TEVO3RUV.js';
|
|
5
5
|
import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
|
|
6
|
-
import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-
|
|
6
|
+
import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-QRZLUUNN.js';
|
|
7
7
|
import { readRepoConnection } from './chunk-BJ3KTMDH.js';
|
|
8
8
|
import { resolveRepoIdentity } from './chunk-QE3UQAHK.js';
|
|
9
9
|
import { C } from './chunk-ANPNT6PM.js';
|
|
@@ -428,7 +428,7 @@ async function runWorkLinkSession(opts) {
|
|
|
428
428
|
return await linkSession(opts);
|
|
429
429
|
} catch (err) {
|
|
430
430
|
if (opts.logFailures) {
|
|
431
|
-
const { logHookError } = await import('./hook-fast-
|
|
431
|
+
const { logHookError } = await import('./hook-fast-REXH5P6R.js');
|
|
432
432
|
const reason = err instanceof Error ? err.message : String(err);
|
|
433
433
|
logHookError(opts.home ?? homeFromEnv(opts.env ?? process.env), new Error(`work link-session #${opts.number} failed: ${reason}`));
|
|
434
434
|
}
|
|
@@ -236,7 +236,7 @@ async function runClaudeLauncher(args, deps = {}) {
|
|
|
236
236
|
return 1;
|
|
237
237
|
}
|
|
238
238
|
} else {
|
|
239
|
-
const { resolveLaunchPlane } = await import('./control-plane-launch-
|
|
239
|
+
const { resolveLaunchPlane } = await import('./control-plane-launch-654RV5PO.js');
|
|
240
240
|
const plane = env[GOVERNANCE_VARIABLE] === "self" ? { kind: "none" } : await resolveLaunchPlane({ cwd, env, home, fetchImpl: deps.fetchImpl, stderr });
|
|
241
241
|
if (plane.kind === "none") {
|
|
242
242
|
const own2 = ownSkillsDirFor(cwd, home, [], stderr);
|
|
@@ -1,17 +1,17 @@
|
|
|
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-GQOT37HL.js';
|
|
4
4
|
import './chunk-XFGL53GU.js';
|
|
5
5
|
import './chunk-VJBFQP3H.js';
|
|
6
|
-
import { verifiedTrackerNames, TRACKERS } from './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
6
|
+
import { verifiedTrackerNames, TRACKERS } from './chunk-XPKI5OMT.js';
|
|
7
|
+
import './chunk-HXFRJKMU.js';
|
|
8
|
+
import './chunk-TEVO3RUV.js';
|
|
9
9
|
import './chunk-BUP5N3X6.js';
|
|
10
10
|
import './chunk-XSPA5ODY.js';
|
|
11
11
|
import './chunk-GOSFARMS.js';
|
|
12
12
|
import './chunk-MQ743JX3.js';
|
|
13
|
-
import './chunk-
|
|
14
|
-
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-
|
|
13
|
+
import './chunk-QRZLUUNN.js';
|
|
14
|
+
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-QIIMZC7W.js';
|
|
15
15
|
import './chunk-ZJSNLVCE.js';
|
|
16
16
|
import './chunk-DXDF43YG.js';
|
|
17
17
|
import './chunk-BKO6JEZI.js';
|
|
@@ -3784,7 +3784,7 @@ ${starter.output}`),
|
|
|
3784
3784
|
}
|
|
3785
3785
|
}
|
|
3786
3786
|
async function realConnectDepsForCwd() {
|
|
3787
|
-
const { realConnectDeps } = await import('./connect-cmd-
|
|
3787
|
+
const { realConnectDeps } = await import('./connect-cmd-2JHSLBXK.js');
|
|
3788
3788
|
const { resolveRepoIdentity } = await import('./dist-QPHZE47F.js');
|
|
3789
3789
|
return {
|
|
3790
3790
|
...realConnectDeps(),
|
|
@@ -3851,7 +3851,7 @@ edited file, and writes nothing. --control-plane makes no link and says
|
|
|
3851
3851
|
what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocation() + " doctor` reports the same\nstates under Starter files.\n"
|
|
3852
3852
|
).action(async (opts) => {
|
|
3853
3853
|
if (opts.update || opts.dryRun) {
|
|
3854
|
-
const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-
|
|
3854
|
+
const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-FJDKY4SJ.js');
|
|
3855
3855
|
const problem = updateFlagProblem(opts);
|
|
3856
3856
|
if (problem !== void 0) {
|
|
3857
3857
|
fail(problem);
|
|
@@ -3898,12 +3898,12 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3898
3898
|
if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
|
|
3899
3899
|
`);
|
|
3900
3900
|
}
|
|
3901
|
-
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-
|
|
3901
|
+
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-54DMRBNO.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
|
|
3902
3902
|
if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
|
|
3903
3903
|
else process.stdout.write(outcome.text + (shell?.text ?? ""));
|
|
3904
3904
|
return;
|
|
3905
3905
|
}
|
|
3906
|
-
const { runInitCommand } = await import('./init-cmd-
|
|
3906
|
+
const { runInitCommand } = await import('./init-cmd-54DMRBNO.js');
|
|
3907
3907
|
const code = await runInitCommand(
|
|
3908
3908
|
{ json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
|
|
3909
3909
|
{
|
|
@@ -3915,7 +3915,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3915
3915
|
return { ok, text, detail };
|
|
3916
3916
|
},
|
|
3917
3917
|
runAgentSetup: async () => {
|
|
3918
|
-
const { runAgentSetup } = await import('./agent-setup-
|
|
3918
|
+
const { runAgentSetup } = await import('./agent-setup-PZYQWN4H.js');
|
|
3919
3919
|
return runAgentSetup({ cwd: process.cwd(), skillsLink: opts.skillsLink !== false });
|
|
3920
3920
|
},
|
|
3921
3921
|
runDoctorChecks: gatherDoctorChecks,
|
|
@@ -3924,7 +3924,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3924
3924
|
shellPath: process.env.SHELL,
|
|
3925
3925
|
interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY) && opts.json !== true,
|
|
3926
3926
|
ask: async () => {
|
|
3927
|
-
const { promptOnTerminal } = await import('./connect-cmd-
|
|
3927
|
+
const { promptOnTerminal } = await import('./connect-cmd-2JHSLBXK.js');
|
|
3928
3928
|
const answer = await promptOnTerminal({
|
|
3929
3929
|
message: `Should plain claude start Claude Code through ${cliInvocation()} claude? That is how a session in a governed repository gets its control plane. It adds one block to your zsh or bash startup file.`,
|
|
3930
3930
|
options: [
|
|
@@ -3963,7 +3963,7 @@ linked (true, false, or null when it could not be checked) and, when false,
|
|
|
3963
3963
|
linkUrl.
|
|
3964
3964
|
`
|
|
3965
3965
|
).action(async (opts) => {
|
|
3966
|
-
const { runConnectCommand } = await import('./connect-cmd-
|
|
3966
|
+
const { runConnectCommand } = await import('./connect-cmd-2JHSLBXK.js');
|
|
3967
3967
|
const code = await runConnectCommand({ factory: opts.factory, json: opts.json }, await realConnectDepsForCwd(), {
|
|
3968
3968
|
stdout: process.stdout,
|
|
3969
3969
|
stderr: process.stderr
|
|
@@ -4041,7 +4041,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4041
4041
|
else fail(found.reason);
|
|
4042
4042
|
return;
|
|
4043
4043
|
}
|
|
4044
|
-
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-
|
|
4044
|
+
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-VCLCOME6.js');
|
|
4045
4045
|
try {
|
|
4046
4046
|
const result = await runSync({
|
|
4047
4047
|
url: opts.url,
|
|
@@ -4072,7 +4072,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4072
4072
|
if (invokedCommandToken(argv) === "watch") {
|
|
4073
4073
|
warnDeprecated(`\`${cliInvocation()} watch\` is now \`${cliInvocation()} daemon\`; the old name will be removed in a future release.`);
|
|
4074
4074
|
}
|
|
4075
|
-
const { runWatch } = await import('./watch-
|
|
4075
|
+
const { runWatch } = await import('./watch-SVGL24OX.js');
|
|
4076
4076
|
await runWatch({ once: opts.once });
|
|
4077
4077
|
});
|
|
4078
4078
|
program2.command("hook <event>", { hidden: true }).description("capture-hook fast path, installed by `init`").action(() => {
|
|
@@ -4162,7 +4162,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4162
4162
|
process.exitCode = await runBuildCommand({ dir: opts.dir, argv: command });
|
|
4163
4163
|
});
|
|
4164
4164
|
program2.command("session-sender", { hidden: true }).description("stream a runner build's sessions to its work item while the build runs").action(async () => {
|
|
4165
|
-
const { runSessionSender } = await import('./session-sender-
|
|
4165
|
+
const { runSessionSender } = await import('./session-sender-P5GVOIUY.js');
|
|
4166
4166
|
try {
|
|
4167
4167
|
await runSessionSender();
|
|
4168
4168
|
} catch (err) {
|
|
@@ -4187,7 +4187,6 @@ code is 1: revoke the token on /profile/security.
|
|
|
4187
4187
|
}
|
|
4188
4188
|
});
|
|
4189
4189
|
registerEmitCommands(program2);
|
|
4190
|
-
registerImportCommands(program2);
|
|
4191
4190
|
registerHooksCommands(program2);
|
|
4192
4191
|
registerMcpCommands(program2);
|
|
4193
4192
|
registerContextCommands(program2);
|
|
@@ -4253,7 +4252,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
|
|
|
4253
4252
|
await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
|
|
4254
4253
|
return;
|
|
4255
4254
|
}
|
|
4256
|
-
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-
|
|
4255
|
+
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-NEICBIDU.js');
|
|
4257
4256
|
try {
|
|
4258
4257
|
const result = await runEmitResult({
|
|
4259
4258
|
name,
|
|
@@ -4303,7 +4302,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
|
|
|
4303
4302
|
locally so it never uploads. One correction can retire several duplicates.
|
|
4304
4303
|
`
|
|
4305
4304
|
).action(async (file, opts) => {
|
|
4306
|
-
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-
|
|
4305
|
+
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-SFUSDWZM.js');
|
|
4307
4306
|
let pr;
|
|
4308
4307
|
if (opts.pr !== void 0) {
|
|
4309
4308
|
pr = parseTrackerNumber(opts.pr);
|
|
@@ -4362,7 +4361,7 @@ recent events with their ids. --find <text> searches all of them.
|
|
|
4362
4361
|
item that session was launched for is used automatically.
|
|
4363
4362
|
`
|
|
4364
4363
|
).action(async (opts) => {
|
|
4365
|
-
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4364
|
+
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-KMJNYQI7.js');
|
|
4366
4365
|
try {
|
|
4367
4366
|
refuseRemovedFindingFlags(opts);
|
|
4368
4367
|
const result = await runEmitFinding({
|
|
@@ -4429,7 +4428,7 @@ the whole batch. "untimed": true records one with no time on purpose.
|
|
|
4429
4428
|
that session was launched for is used automatically.
|
|
4430
4429
|
`
|
|
4431
4430
|
).action(async (file, opts) => {
|
|
4432
|
-
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4431
|
+
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-KMJNYQI7.js');
|
|
4433
4432
|
try {
|
|
4434
4433
|
const result = await runEmitFindings({
|
|
4435
4434
|
file,
|
|
@@ -4464,7 +4463,7 @@ command, the command exits 0, and \`sync\` sends it later. If the gateway refuse
|
|
|
4464
4463
|
the step, the command prints why and exits 1.
|
|
4465
4464
|
`
|
|
4466
4465
|
).action(async (name, opts) => {
|
|
4467
|
-
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-
|
|
4466
|
+
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-AUHA3EXY.js');
|
|
4468
4467
|
try {
|
|
4469
4468
|
await runEmitStep({
|
|
4470
4469
|
name,
|
|
@@ -4507,7 +4506,7 @@ of the item, and a (proof: <kind>) annotation names its proof.
|
|
|
4507
4506
|
${cliInvocation()} emit criteria acceptance/412-login.md --item 412
|
|
4508
4507
|
`
|
|
4509
4508
|
).action(async (file, opts) => {
|
|
4510
|
-
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-
|
|
4509
|
+
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-VMZIRJCQ.js');
|
|
4511
4510
|
try {
|
|
4512
4511
|
const result = await runEmitCriteria({
|
|
4513
4512
|
file,
|
|
@@ -4531,9 +4530,9 @@ function registerSpecCommands(program2) {
|
|
|
4531
4530
|
const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
|
|
4532
4531
|
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)");
|
|
4533
4532
|
const run = async (action) => {
|
|
4534
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4533
|
+
const { WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4535
4534
|
try {
|
|
4536
|
-
await action(await import('./spec-cmd-
|
|
4535
|
+
await action(await import('./spec-cmd-HMFW552G.js'));
|
|
4537
4536
|
} catch (err) {
|
|
4538
4537
|
if (err instanceof WorkCommandError) {
|
|
4539
4538
|
fail(err.message);
|
|
@@ -4575,7 +4574,7 @@ takes it, and prints the line that starts your session on it. That
|
|
|
4575
4574
|
session links itself and holds the item's lease while it works.
|
|
4576
4575
|
`
|
|
4577
4576
|
).action(async (opts) => {
|
|
4578
|
-
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-
|
|
4577
|
+
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4579
4578
|
try {
|
|
4580
4579
|
await runWorkBuild(opts);
|
|
4581
4580
|
} catch (err) {
|
|
@@ -4598,7 +4597,7 @@ renews that session's own 20-minute lease, unless --no-lease or
|
|
|
4598
4597
|
--ended is given, or another worker already holds a live one.
|
|
4599
4598
|
`
|
|
4600
4599
|
).action(async (number, opts) => {
|
|
4601
|
-
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-
|
|
4600
|
+
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4602
4601
|
try {
|
|
4603
4602
|
await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
|
|
4604
4603
|
} catch (err) {
|
|
@@ -4622,8 +4621,8 @@ criterion's new proof; --ready hands the thread back to a person. At
|
|
|
4622
4621
|
most one action flag may be given.
|
|
4623
4622
|
`
|
|
4624
4623
|
).action(async (opts) => {
|
|
4625
|
-
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4626
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4624
|
+
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-O3FVX6M4.js');
|
|
4625
|
+
const { WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4627
4626
|
try {
|
|
4628
4627
|
await runWorkComment(opts);
|
|
4629
4628
|
} catch (err) {
|
|
@@ -4644,8 +4643,8 @@ criterion that carries proof or a comment, each with who is waiting
|
|
|
4644
4643
|
on whom next.
|
|
4645
4644
|
`
|
|
4646
4645
|
).action(async (opts) => {
|
|
4647
|
-
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4648
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4646
|
+
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-O3FVX6M4.js');
|
|
4647
|
+
const { WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4649
4648
|
try {
|
|
4650
4649
|
await runWorkThreads(opts);
|
|
4651
4650
|
} catch (err) {
|
|
@@ -4669,8 +4668,8 @@ still running, or that an older runner released, has no log and the
|
|
|
4669
4668
|
command exits 1.
|
|
4670
4669
|
`
|
|
4671
4670
|
).action(async (opts) => {
|
|
4672
|
-
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-
|
|
4673
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4671
|
+
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-2RMJFVNZ.js');
|
|
4672
|
+
const { WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4674
4673
|
try {
|
|
4675
4674
|
await runWorkLogs(opts);
|
|
4676
4675
|
} catch (err) {
|
|
@@ -4693,8 +4692,8 @@ item is not built again until a new build request. Exits 1 when no host
|
|
|
4693
4692
|
build is running for the item.
|
|
4694
4693
|
`
|
|
4695
4694
|
).action(async (opts) => {
|
|
4696
|
-
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-
|
|
4697
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4695
|
+
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-TNJYBLMN.js');
|
|
4696
|
+
const { WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4698
4697
|
try {
|
|
4699
4698
|
await runWorkStop(opts);
|
|
4700
4699
|
} catch (err) {
|
|
@@ -4715,7 +4714,7 @@ deletes anything \u2014 the item is removed from Work only once no
|
|
|
4715
4714
|
live addition remains on it.
|
|
4716
4715
|
`
|
|
4717
4716
|
).action(async (opts) => {
|
|
4718
|
-
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-
|
|
4717
|
+
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4719
4718
|
try {
|
|
4720
4719
|
await runWorkRemove(opts);
|
|
4721
4720
|
} catch (err) {
|
|
@@ -4727,7 +4726,7 @@ live addition remains on it.
|
|
|
4727
4726
|
}
|
|
4728
4727
|
});
|
|
4729
4728
|
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) => {
|
|
4730
|
-
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-
|
|
4729
|
+
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4731
4730
|
try {
|
|
4732
4731
|
await runWorkStatus(opts);
|
|
4733
4732
|
} catch (err) {
|
|
@@ -4739,7 +4738,7 @@ live addition remains on it.
|
|
|
4739
4738
|
}
|
|
4740
4739
|
});
|
|
4741
4740
|
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) => {
|
|
4742
|
-
const { runWorkList, WorkCommandError } = await import('./work-cmd-
|
|
4741
|
+
const { runWorkList, WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4743
4742
|
try {
|
|
4744
4743
|
await runWorkList(opts);
|
|
4745
4744
|
} catch (err) {
|
|
@@ -4760,7 +4759,7 @@ by a different key is refused; claiming again with the same key extends
|
|
|
4760
4759
|
it. --host is a label only.
|
|
4761
4760
|
`
|
|
4762
4761
|
).action(async (opts) => {
|
|
4763
|
-
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-
|
|
4762
|
+
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-WQF5RTCT.js');
|
|
4764
4763
|
try {
|
|
4765
4764
|
await runWorkClaim(opts);
|
|
4766
4765
|
} catch (err) {
|
|
@@ -4780,7 +4779,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
|
|
|
4780
4779
|
lease has expired, or a 403 if a different key holds it.
|
|
4781
4780
|
`
|
|
4782
4781
|
).action(async (opts) => {
|
|
4783
|
-
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-
|
|
4782
|
+
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-WQF5RTCT.js');
|
|
4784
4783
|
try {
|
|
4785
4784
|
await runWorkRenew(opts);
|
|
4786
4785
|
} catch (err) {
|
|
@@ -4812,7 +4811,7 @@ applies to a host's lease only. A later tool call in the session
|
|
|
4812
4811
|
takes the lease again.
|
|
4813
4812
|
`
|
|
4814
4813
|
).action(async (opts) => {
|
|
4815
|
-
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-
|
|
4814
|
+
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-WQF5RTCT.js');
|
|
4816
4815
|
try {
|
|
4817
4816
|
await runWorkRelease(opts);
|
|
4818
4817
|
} catch (err) {
|
|
@@ -4839,7 +4838,7 @@ Idempotent: declaring the same pull request twice is a no-op.
|
|
|
4839
4838
|
needs your own login; an agent session or a factory key is refused.
|
|
4840
4839
|
`
|
|
4841
4840
|
).action(async (number, opts) => {
|
|
4842
|
-
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-
|
|
4841
|
+
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-DKTBEFHO.js');
|
|
4843
4842
|
try {
|
|
4844
4843
|
await runWorkPr({ ...opts, number });
|
|
4845
4844
|
} catch (err) {
|
|
@@ -4864,8 +4863,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
|
|
|
4864
4863
|
Run it again after a change to the title or description.
|
|
4865
4864
|
`
|
|
4866
4865
|
).action(async (opts) => {
|
|
4867
|
-
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-
|
|
4868
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4866
|
+
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-5EP7BKRE.js');
|
|
4867
|
+
const { WorkCommandError } = await import('./work-cmd-TGSNYPSG.js');
|
|
4869
4868
|
try {
|
|
4870
4869
|
await runWorkOpenPr(opts);
|
|
4871
4870
|
} catch (err) {
|
|
@@ -4882,7 +4881,7 @@ function registerRunnerCommands(program2) {
|
|
|
4882
4881
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
4883
4882
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
4884
4883
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-JJ3EO7SB.js');
|
|
4885
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4884
|
+
const { start, RunnerStartError } = await import('./loop-6JKW5QR5.js');
|
|
4886
4885
|
const { RunnerAlreadyRunningError } = await import('./pidfile-BY5Z6YH7.js');
|
|
4887
4886
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4888
4887
|
try {
|
|
@@ -4901,8 +4900,8 @@ function registerRunnerCommands(program2) {
|
|
|
4901
4900
|
"\nReads OUTERLAYER_URL, OUTERLAYER_APP_ID, OUTERLAYER_API_KEY, OUTERLAYER_RUNNER_NAME and one Claude credential\n(CLAUDE_CODE_OAUTH_TOKEN, ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN) 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"
|
|
4902
4901
|
).action(async () => {
|
|
4903
4902
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-JJ3EO7SB.js');
|
|
4904
|
-
const { containerStart } = await import('./container-start-
|
|
4905
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4903
|
+
const { containerStart } = await import('./container-start-SCCR2PRD.js');
|
|
4904
|
+
const { start, RunnerStartError } = await import('./loop-6JKW5QR5.js');
|
|
4906
4905
|
const { RunnerAlreadyRunningError } = await import('./pidfile-BY5Z6YH7.js');
|
|
4907
4906
|
try {
|
|
4908
4907
|
const result = await containerStart({
|
|
@@ -4922,7 +4921,7 @@ function registerRunnerCommands(program2) {
|
|
|
4922
4921
|
});
|
|
4923
4922
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
4924
4923
|
const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
|
|
4925
|
-
const { runRunnerCheck } = await import('./check-
|
|
4924
|
+
const { runRunnerCheck } = await import('./check-3CBJVXZD.js');
|
|
4926
4925
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4927
4926
|
const result = await runRunnerCheck(configPath);
|
|
4928
4927
|
if (!result.ok) {
|
|
@@ -4956,7 +4955,7 @@ function registerRunnerCommands(program2) {
|
|
|
4956
4955
|
}
|
|
4957
4956
|
try {
|
|
4958
4957
|
if (opts.service === true) {
|
|
4959
|
-
const { installServiceCommand } = await import('./command-
|
|
4958
|
+
const { installServiceCommand } = await import('./command-2Q5UDZUO.js');
|
|
4960
4959
|
const result2 = await installServiceCommand({
|
|
4961
4960
|
configPath,
|
|
4962
4961
|
print: opts.print,
|
|
@@ -5012,7 +5011,7 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
|
|
|
5012
5011
|
return;
|
|
5013
5012
|
}
|
|
5014
5013
|
const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
|
|
5015
|
-
const { uninstallServiceCommand } = await import('./command-
|
|
5014
|
+
const { uninstallServiceCommand } = await import('./command-2Q5UDZUO.js');
|
|
5016
5015
|
const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
|
|
5017
5016
|
if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
|
|
5018
5017
|
`);
|
|
@@ -5040,10 +5039,10 @@ already in runner.env is used.
|
|
|
5040
5039
|
`
|
|
5041
5040
|
).action(async (opts) => {
|
|
5042
5041
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-JJ3EO7SB.js');
|
|
5043
|
-
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-
|
|
5044
|
-
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-
|
|
5045
|
-
const { detectMachine } = await import('./machine-
|
|
5046
|
-
const { chooseVm, runVmInit, VmInitError } = await import('./init-
|
|
5042
|
+
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-UMON3HZK.js');
|
|
5043
|
+
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-FUNSJ564.js');
|
|
5044
|
+
const { detectMachine } = await import('./machine-XF55O56X.js');
|
|
5045
|
+
const { chooseVm, runVmInit, VmInitError } = await import('./init-NEUTUGEQ.js');
|
|
5047
5046
|
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-2D7MPOIJ.js');
|
|
5048
5047
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5049
5048
|
if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
|
|
@@ -5194,7 +5193,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
|
|
|
5194
5193
|
let serviceUp = false;
|
|
5195
5194
|
let restart;
|
|
5196
5195
|
if (installedLayout) {
|
|
5197
|
-
const { installServiceCommand } = await import('./command-
|
|
5196
|
+
const { installServiceCommand } = await import('./command-2Q5UDZUO.js');
|
|
5198
5197
|
const service = await installServiceCommand({
|
|
5199
5198
|
configPath,
|
|
5200
5199
|
entryPath: process.argv[1] ?? "",
|
|
@@ -5239,10 +5238,10 @@ Next:
|
|
|
5239
5238
|
"\nA repository governed by a control plane builds the control plane's image, at the commit\nthe gateway has stored for it. A repository that governs itself fetches the head of its\ndefault branch into the runner's cache. Either way it reads .devcontainer/devcontainer.json\nand builds the image with the devcontainer CLI. Settings\nthat reach the host or widen the container's privileges are ignored and listed. The\nimage holds this CLI and a pinned Claude Code. Nothing runs inside the image.\n"
|
|
5240
5239
|
).action(async (opts) => {
|
|
5241
5240
|
const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
|
|
5242
|
-
const { buildRepositoryImage, RecipeError } = await import('./build-
|
|
5241
|
+
const { buildRepositoryImage, RecipeError } = await import('./build-JK2DLT6X.js');
|
|
5243
5242
|
const { currentCliBuild } = await import('./cli-build-K56DK4DS.js');
|
|
5244
|
-
const { createDockerHost } = await import('./docker-
|
|
5245
|
-
const { builderSpec } = await import('./builder-
|
|
5243
|
+
const { createDockerHost } = await import('./docker-4X2A5HDY.js');
|
|
5244
|
+
const { builderSpec } = await import('./builder-TMA25KRR.js');
|
|
5246
5245
|
const { loadRunnerConfig } = await import('./config-JJ3EO7SB.js');
|
|
5247
5246
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5248
5247
|
const loaded = (() => {
|
|
@@ -5254,11 +5253,11 @@ Next:
|
|
|
5254
5253
|
})();
|
|
5255
5254
|
const memory = loaded?.build?.memory ?? "8g";
|
|
5256
5255
|
try {
|
|
5257
|
-
const { ensureRunnerIdentity } = await import('./runner-identity-
|
|
5256
|
+
const { ensureRunnerIdentity } = await import('./runner-identity-NH6RLVMI.js');
|
|
5258
5257
|
await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
|
|
5259
5258
|
console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
|
|
5260
5259
|
});
|
|
5261
|
-
const { imageTargetFor } = await import('./governing-source-
|
|
5260
|
+
const { imageTargetFor } = await import('./governing-source-J5DF65X5.js');
|
|
5262
5261
|
const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
|
|
5263
5262
|
if (!target.ok) {
|
|
5264
5263
|
if (opts.json) {
|
|
@@ -5322,7 +5321,7 @@ Next:
|
|
|
5322
5321
|
});
|
|
5323
5322
|
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) => {
|
|
5324
5323
|
const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
|
|
5325
|
-
const { requestStop } = await import('./loop-
|
|
5324
|
+
const { requestStop } = await import('./loop-6JKW5QR5.js');
|
|
5326
5325
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5327
5326
|
const { runnerImageVersion } = await import('./image-tag-5SJ6ZKT7.js');
|
|
5328
5327
|
await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
|
|
@@ -5330,8 +5329,8 @@ Next:
|
|
|
5330
5329
|
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) => {
|
|
5331
5330
|
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-JJ3EO7SB.js');
|
|
5332
5331
|
const { jobsDir, runnerDir } = await import('./paths-ZC6BMWMT.js');
|
|
5333
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
5334
|
-
const { renderStatus } = await import('./status-
|
|
5332
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-6JKW5QR5.js');
|
|
5333
|
+
const { renderStatus } = await import('./status-ULZVKQ7G.js');
|
|
5335
5334
|
const { readHousekeepingRecord } = await import('./record-K23IN6QN.js');
|
|
5336
5335
|
const path2 = await import('path');
|
|
5337
5336
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
@@ -5391,7 +5390,7 @@ Next:
|
|
|
5391
5390
|
});
|
|
5392
5391
|
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) => {
|
|
5393
5392
|
const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
|
|
5394
|
-
const { listJobFiles } = await import('./loop-
|
|
5393
|
+
const { listJobFiles } = await import('./loop-6JKW5QR5.js');
|
|
5395
5394
|
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-VN2HKDSH.js');
|
|
5396
5395
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5397
5396
|
const item = parseTrackerNumber(itemArg);
|
|
@@ -5426,23 +5425,6 @@ function registerHooksCommands(program2) {
|
|
|
5426
5425
|
"after",
|
|
5427
5426
|
"\n`init` auto-wraps PreToolUse/PostToolUse hooks; these subcommands cover the\nrest: manual re-scans, other events, and undo.\n"
|
|
5428
5427
|
);
|
|
5429
|
-
hooksCmd.command("install-git").description("Remove the git hooks an earlier version installed in this repo").addHelpText(
|
|
5430
|
-
"after",
|
|
5431
|
-
"\nEarlier versions installed a pre-commit guard and commit journal hooks. This removes\nthe ones OuterLayer wrote and leaves any hook it did not write untouched.\n"
|
|
5432
|
-
).action(() => {
|
|
5433
|
-
const removal = removeJournalHooks(process.cwd());
|
|
5434
|
-
if (removal.removed) {
|
|
5435
|
-
process.stdout.write(`${C.green}\u2713${C.reset} removed the commit journal hooks an earlier version installed \u2192 ${removal.path}
|
|
5436
|
-
`);
|
|
5437
|
-
}
|
|
5438
|
-
const guard = removePreCommitGuardHook(process.cwd());
|
|
5439
|
-
if (guard.removed) {
|
|
5440
|
-
process.stdout.write(`${C.green}\u2713${C.reset} removed the pre-commit guard an earlier version installed \u2192 ${guard.path}
|
|
5441
|
-
`);
|
|
5442
|
-
}
|
|
5443
|
-
if (!removal.removed && !guard.removed) process.stdout.write(`${C.dim}No git hooks from an earlier version were found.${C.reset}
|
|
5444
|
-
`);
|
|
5445
|
-
});
|
|
5446
5428
|
hooksCmd.command("status").description("List hook entries in user and project settings, marking the wrapped ones").option("--json", "machine-readable JSON output").action((opts) => {
|
|
5447
5429
|
const report = [];
|
|
5448
5430
|
for (const scope of ["user", "project"]) {
|
|
@@ -5640,7 +5622,7 @@ caller from the bearer token, the gateway answers 401 without that header.
|
|
|
5640
5622
|
"after",
|
|
5641
5623
|
"\nWhat the stdio .mcp.json entry spawns. Reads newline-delimited JSON-RPC 2.0 on\nstdin and writes responses on stdout. The API key comes from OUTERLAYER_API_KEY\nor ~/.outerlayer/config.json at start-up; with neither the command exits 1 and\nprints why, which the MCP client shows as the connect error.\n"
|
|
5642
5624
|
).action(async (opts) => {
|
|
5643
|
-
const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-
|
|
5625
|
+
const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-U5N5DK3H.js');
|
|
5644
5626
|
try {
|
|
5645
5627
|
await runMcpServe({ url: opts.url, appId: opts.appId });
|
|
5646
5628
|
} catch (err) {
|
|
@@ -5648,37 +5630,6 @@ caller from the bearer token, the gateway answers 401 without that header.
|
|
|
5648
5630
|
}
|
|
5649
5631
|
});
|
|
5650
5632
|
}
|
|
5651
|
-
function registerImportCommands(program2) {
|
|
5652
|
-
const importCmd = program2.command("import").description("Import an existing config format into .outerlayer/");
|
|
5653
|
-
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) => {
|
|
5654
|
-
const { runImportRuler, ImportRulerError } = await import('./import-ruler-cmd-VJOHOJQ7.js');
|
|
5655
|
-
try {
|
|
5656
|
-
const result = runImportRuler({ cwd: opts.dir, json: opts.json });
|
|
5657
|
-
if (result.exitCode !== 0) process.exitCode = result.exitCode;
|
|
5658
|
-
} catch (err) {
|
|
5659
|
-
if (err instanceof ImportRulerError) {
|
|
5660
|
-
fail(err.message);
|
|
5661
|
-
return;
|
|
5662
|
-
}
|
|
5663
|
-
throw err;
|
|
5664
|
-
}
|
|
5665
|
-
});
|
|
5666
|
-
importCmd.command("capture").description("Install the maintained skills into .outerlayer/").option("--dir <path>", "repo root to write into (default: cwd)").option("--json", "machine-readable JSON output").addHelpText(
|
|
5667
|
-
"after",
|
|
5668
|
-
"\nInstalls the five maintained skills (outerlayer-evidence, outerlayer-amend,\nouterlayer-findings, outerlayer-cli, outerlayer-build) 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"
|
|
5669
|
-
).action(async (opts) => {
|
|
5670
|
-
const { runImportCapture, ImportCaptureError } = await import('./import-capture-cmd-TCOKNVBM.js');
|
|
5671
|
-
try {
|
|
5672
|
-
runImportCapture({ cwd: opts.dir, json: opts.json });
|
|
5673
|
-
} catch (err) {
|
|
5674
|
-
if (err instanceof ImportCaptureError) {
|
|
5675
|
-
fail(err.message);
|
|
5676
|
-
return;
|
|
5677
|
-
}
|
|
5678
|
-
throw err;
|
|
5679
|
-
}
|
|
5680
|
-
});
|
|
5681
|
-
}
|
|
5682
5633
|
function registerContextCommands(program2) {
|
|
5683
5634
|
const contextCmd = program2.command("context").description("Compile agent context");
|
|
5684
5635
|
contextCmd.command("emit").description("Compile .outerlayer/ into each configured target tool's native files").option("--check", "compare against disk, write nothing, exit 1 on drift (CI mode)").option("--dir <path>", "repo root to read from (default: cwd)").option("--json", "machine-readable JSON output").addHelpText(
|
|
@@ -3,23 +3,23 @@ import { createRequire } from 'node:module';
|
|
|
3
3
|
import { runRunnerInstall, launcherSummary, restartNote } from './chunk-JF572PM5.js';
|
|
4
4
|
import './chunk-KDDFI5MR.js';
|
|
5
5
|
import { currentLink, execStartCommand } from './chunk-4IFKLYMM.js';
|
|
6
|
-
import { detectMachine } from './chunk-
|
|
7
|
-
import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-
|
|
6
|
+
import { detectMachine } from './chunk-7NKVMAP6.js';
|
|
7
|
+
import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-ILL2CWOU.js';
|
|
8
8
|
import './chunk-665QWBNW.js';
|
|
9
9
|
import './chunk-TQMI335S.js';
|
|
10
10
|
import { DEFAULT_UNIT_NAME, installService, uninstallService, realTaskScheduler, UNIT_MARKER } from './chunk-MLD2NA7N.js';
|
|
11
|
-
import './chunk-
|
|
11
|
+
import './chunk-AINUN2TT.js';
|
|
12
12
|
import './chunk-PYSKSROG.js';
|
|
13
13
|
import './chunk-JBJTC3UU.js';
|
|
14
14
|
import './chunk-OGFGZQA3.js';
|
|
15
|
-
import { readJobFile } from './chunk-
|
|
16
|
-
import { firecrackerArch, MICROVM_ARCHES, FIRECRACKER_VERSION, FIRECRACKER_BINARY_SHA256, JAILER_BINARY_SHA256, HOST_HELPER_SHA256, HOST_HELPER_BASE_URL, HOST_HELPER_ASSETS_VERSION, hostHelperPinned } from './chunk-
|
|
15
|
+
import { readJobFile } from './chunk-7I6GZSN3.js';
|
|
16
|
+
import { firecrackerArch, MICROVM_ARCHES, FIRECRACKER_VERSION, FIRECRACKER_BINARY_SHA256, JAILER_BINARY_SHA256, HOST_HELPER_SHA256, HOST_HELPER_BASE_URL, HOST_HELPER_ASSETS_VERSION, hostHelperPinned } from './chunk-4R24DSL2.js';
|
|
17
17
|
import './chunk-HPOEVC2V.js';
|
|
18
18
|
import './chunk-XGJUNNXL.js';
|
|
19
|
-
import './chunk-
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
19
|
+
import './chunk-D7V33CAH.js';
|
|
20
|
+
import './chunk-XPKI5OMT.js';
|
|
21
|
+
import './chunk-HXFRJKMU.js';
|
|
22
|
+
import './chunk-TEVO3RUV.js';
|
|
23
23
|
import './chunk-BUP5N3X6.js';
|
|
24
24
|
import './chunk-XSPA5ODY.js';
|
|
25
25
|
import './chunk-GOSFARMS.js';
|
|
@@ -28,9 +28,9 @@ import './chunk-UXYLWVTQ.js';
|
|
|
28
28
|
import './chunk-7RQ73DLO.js';
|
|
29
29
|
import { realLima } from './chunk-77MM5RYD.js';
|
|
30
30
|
import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
|
|
31
|
-
import './chunk-
|
|
31
|
+
import './chunk-W3NVHOCS.js';
|
|
32
32
|
import './chunk-MQ743JX3.js';
|
|
33
|
-
import './chunk-
|
|
33
|
+
import './chunk-QRZLUUNN.js';
|
|
34
34
|
import './chunk-ZJSNLVCE.js';
|
|
35
35
|
import './chunk-VPEGE3QZ.js';
|
|
36
36
|
import './chunk-HCVLP7XA.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { AGENTS_LAYOUT_COMMIT_LINE, COMMIT_LINE, autoConnectedLine, commitLineFor, listText as factoryListText, slug as factorySlug, fetchFactories, hasUncommittedPolicy, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-
|
|
3
|
+
export { AGENTS_LAYOUT_COMMIT_LINE, COMMIT_LINE, autoConnectedLine, commitLineFor, listText as factoryListText, slug as factorySlug, fetchFactories, hasUncommittedPolicy, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-TEVO3RUV.js';
|
|
4
4
|
import './chunk-BUP5N3X6.js';
|
|
5
5
|
import './chunk-XSPA5ODY.js';
|
|
6
6
|
import './chunk-GOSFARMS.js';
|
|
7
|
-
import './chunk-
|
|
7
|
+
import './chunk-QRZLUUNN.js';
|
|
8
8
|
import './chunk-BJ3KTMDH.js';
|
|
9
9
|
import './chunk-QE3UQAHK.js';
|
|
10
10
|
import './chunk-ANPNT6PM.js';
|