@outerlayer/cli 0.28.3 → 0.28.4
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 +7 -0
- package/dist/build-info.json +1 -1
- package/dist/{check-F2TJCQ7S.js → check-WJ4X2Q44.js} +6 -6
- package/dist/{chunk-4SJ57DH7.js → chunk-5Q4NDYQP.js} +10 -3
- package/dist/{chunk-ILU6664L.js → chunk-6P2Z5AUY.js} +1 -1
- package/dist/{chunk-SVODOMYC.js → chunk-ERVZGWUR.js} +1 -1
- package/dist/{chunk-W7BH5YN6.js → chunk-FTNCNEWE.js} +28 -17
- package/dist/{chunk-T7LJ6AIC.js → chunk-KBB3CQTW.js} +2 -2
- package/dist/{chunk-LRFU6RPD.js → chunk-NVUO52YW.js} +4 -4
- package/dist/{chunk-EPGMCEVP.js → chunk-W3K6GBXY.js} +1 -1
- package/dist/{cli-5LLFR2SX.js → cli-X3JGBH2D.js} +18 -18
- package/dist/{command-YXOMIXOJ.js → command-NLWZT7KR.js} +2 -2
- package/dist/{container-start-YG45GLFE.js → container-start-3MXIUNE2.js} +3 -3
- package/dist/{doctor-3SRHLRF5.js → doctor-PKMAUDTU.js} +4 -4
- package/dist/index.js +1 -1
- package/dist/{init-XP55Q4ZT.js → init-HENNITCI.js} +3 -3
- package/dist/{init-HQW3LHIF.js → init-Q6JV7IGF.js} +3 -3
- package/dist/{init-cmd-XSOVMNNE.js → init-cmd-GJR37XGU.js} +1 -1
- package/dist/{loop-QQBLJ7GN.js → loop-DO46LFUH.js} +6 -6
- package/dist/{machine-ATDPHWL5.js → machine-HZGUBOUH.js} +2 -2
- package/dist/{runner-key-SICUOQY5.js → runner-key-UP5YBUHR.js} +3 -3
- package/dist/{status-AI22UPKC.js → status-2ICTDC2R.js} +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @outerlayer/cli
|
|
2
2
|
|
|
3
|
+
## 0.28.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- eabcfe6: `outerlayer doctor` passes on a runner that uses a Runner key. It leaves out the Claude Code version and last-sync checks for builds in containers or microVMs. The runner no longer logs a failed relay join while the build's relay is still starting.
|
|
8
|
+
- 1cde310: A container build's finished connections free their place at once, so a large package install no longer runs out of connections and fails partway through.
|
|
9
|
+
|
|
3
10
|
## 0.28.3
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"2026-10-
|
|
1
|
+
{"id":"2026-10-17T18:42:55.566Z+c3e29e0","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { probeCredentials } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
import { probeCredentials } from './chunk-NVUO52YW.js';
|
|
4
|
+
import './chunk-6P2Z5AUY.js';
|
|
5
5
|
import './chunk-3JVYMD4G.js';
|
|
6
6
|
import './chunk-E7R2GIAW.js';
|
|
7
7
|
import './chunk-TPKYTORP.js';
|
|
@@ -14,13 +14,13 @@ import './chunk-2BZTGJII.js';
|
|
|
14
14
|
import './chunk-VM6BX2WJ.js';
|
|
15
15
|
import './chunk-ESVW4MJY.js';
|
|
16
16
|
import './chunk-RXFKXZJS.js';
|
|
17
|
-
import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-
|
|
17
|
+
import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-ERVZGWUR.js';
|
|
18
18
|
import './chunk-YYYRBYWG.js';
|
|
19
19
|
import './chunk-6NFXOQKZ.js';
|
|
20
20
|
import './chunk-TBT347UY.js';
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
21
|
+
import './chunk-KBB3CQTW.js';
|
|
22
|
+
import './chunk-W3K6GBXY.js';
|
|
23
|
+
import './chunk-5Q4NDYQP.js';
|
|
24
24
|
import './chunk-WL3QF3QF.js';
|
|
25
25
|
import './chunk-DIQN5SEL.js';
|
|
26
26
|
import './chunk-JZJLKTZT.js';
|
|
@@ -20,7 +20,7 @@ import { versionAtLeast, MINIMUM_CLAUDE_VERSION } from './chunk-HCVLP7XA.js';
|
|
|
20
20
|
import { orderSessions, extractFacts, sessionsToTimeline } from './chunk-RKOTJQVG.js';
|
|
21
21
|
import { downconvertSession } from './chunk-QZBXLLTV.js';
|
|
22
22
|
import { realFdStorePort } from './chunk-XD4ZCMA4.js';
|
|
23
|
-
import { RELAY_USER, RELAY_ID, UNKNOWN_TRANSPORT_REASON, DOCKER_DESKTOP_REASON, MAX_MALFORMED_SESSIONS, MALFORMED_REASON, MAX_OPEN_STREAMS, STREAM_RESET_RATE, STREAM_RESET_BURST, STREAM_WINDOW, SESSION_WINDOW, targetOfPath } from './chunk-MESOOLF4.js';
|
|
23
|
+
import { RELAY_USER, RELAY_ID, UNKNOWN_TRANSPORT_REASON, DOCKER_DESKTOP_REASON, MAX_MALFORMED_SESSIONS, MALFORMED_REASON, JOIN_WAIT_MS, MAX_OPEN_STREAMS, STREAM_RESET_RATE, STREAM_RESET_BURST, STREAM_WINDOW, SESSION_WINDOW, targetOfPath } from './chunk-MESOOLF4.js';
|
|
24
24
|
import { readFileSync, mkdirSync, existsSync, mkdtempSync, rmSync, chmodSync, truncateSync, writeFileSync, readdirSync, lstatSync, copyFileSync, accessSync, constants, statSync, rmdirSync, renameSync, unlinkSync, openSync, closeSync, createWriteStream, createReadStream, writeSync } from 'fs';
|
|
25
25
|
import { join, dirname, resolve, basename } from 'path';
|
|
26
26
|
import { isIP, createConnection, connect, createServer as createServer$1 } from 'net';
|
|
@@ -1488,6 +1488,7 @@ var FIRST_BACKOFF_MS = 200;
|
|
|
1488
1488
|
var LONGEST_BACKOFF_MS = 5e3;
|
|
1489
1489
|
var JOINED_AFTER_MS = 2e3;
|
|
1490
1490
|
var EXIT_WAIT_MS = 5e3;
|
|
1491
|
+
var SOCKET_NOT_READY = /\b(ENOENT|ECONNREFUSED)\b/;
|
|
1491
1492
|
function exitedWithin(stream, ms) {
|
|
1492
1493
|
let timer;
|
|
1493
1494
|
const late = new Promise((resolve2) => {
|
|
@@ -1499,6 +1500,8 @@ function exitedWithin(stream, ms) {
|
|
|
1499
1500
|
function superviseRelay(input) {
|
|
1500
1501
|
const sleep = input.sleep ?? ((ms) => new Promise((resolve2) => setTimeout(resolve2, ms)));
|
|
1501
1502
|
const exitWaitMs = input.exitWaitMs ?? EXIT_WAIT_MS;
|
|
1503
|
+
const now = input.now ?? Date.now;
|
|
1504
|
+
const startedAt = now();
|
|
1502
1505
|
let closed = false;
|
|
1503
1506
|
let fatal;
|
|
1504
1507
|
let running;
|
|
@@ -1542,9 +1545,12 @@ function superviseRelay(input) {
|
|
|
1542
1545
|
return;
|
|
1543
1546
|
}
|
|
1544
1547
|
} else if (!joined && !failing) {
|
|
1545
|
-
failing = true;
|
|
1546
1548
|
const reason = stream.stderrTail?.().trim() ?? "";
|
|
1547
|
-
|
|
1549
|
+
const starting = SOCKET_NOT_READY.test(reason) && now() - startedAt < JOIN_WAIT_MS;
|
|
1550
|
+
if (!starting) {
|
|
1551
|
+
failing = true;
|
|
1552
|
+
input.log?.(`could not join the relay in ${input.container}${status === 0 || status === void 0 ? "" : ` (exec exited ${status})`}${reason === "" ? "" : `: ${reason}`} \xB7 trying again`);
|
|
1553
|
+
}
|
|
1548
1554
|
}
|
|
1549
1555
|
if (closed) return;
|
|
1550
1556
|
await Promise.race([sleep(backoff), new Promise((resolve2) => wake = resolve2)]);
|
|
@@ -2525,6 +2531,7 @@ ${body}`);
|
|
|
2525
2531
|
upstream.on("error", (err) => client.destroy(err));
|
|
2526
2532
|
upstream.on("close", () => {
|
|
2527
2533
|
if (!upstream.readableEnded && !client.writableEnded) client.destroy(abortedError("the tunnel closed the connection to the server before it ended"));
|
|
2534
|
+
else client.resume();
|
|
2528
2535
|
});
|
|
2529
2536
|
client.once("end", () => {
|
|
2530
2537
|
upstream.destroy();
|
|
@@ -5,7 +5,7 @@ import { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-OO6OADZN.js';
|
|
|
5
5
|
import { senderPidfile } from './chunk-YTR435DO.js';
|
|
6
6
|
import { installScrubContext } from './chunk-2BZTGJII.js';
|
|
7
7
|
import { writeDockerClientConfig } from './chunk-RXFKXZJS.js';
|
|
8
|
-
import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, AssetError, obtainImage, ensureRootfs, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, resolveAgentUser, AgentUserError, runBuildSteps, LEASE_SECONDS, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, containerSenderCommand, signalInContainer, syncInContainer, copyTranscriptsFromContainer, senderAliveScript, helperFirecrackerNote, HelperRefusal, isLiteralAddress, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, copyJudgeTree } from './chunk-
|
|
8
|
+
import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, AssetError, obtainImage, ensureRootfs, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, resolveAgentUser, AgentUserError, runBuildSteps, LEASE_SECONDS, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, containerSenderCommand, signalInContainer, syncInContainer, copyTranscriptsFromContainer, senderAliveScript, helperFirecrackerNote, HelperRefusal, isLiteralAddress, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, copyJudgeTree } from './chunk-5Q4NDYQP.js';
|
|
9
9
|
import { waitForAgent, vmExecArgs } from './chunk-WL3QF3QF.js';
|
|
10
10
|
import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-DIQN5SEL.js';
|
|
11
11
|
import { describeCallFailure, resolveGoverningSource, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, keptContextTree } from './chunk-JZJLKTZT.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { isPlaceholderCommand } from './chunk-
|
|
3
|
+
import { isPlaceholderCommand } from './chunk-KBB3CQTW.js';
|
|
4
4
|
import { describeCallFailure } from './chunk-JZJLKTZT.js';
|
|
5
5
|
import { builtinKind } from './chunk-YYGXCRIW.js';
|
|
6
6
|
import { WorkCommandError, getJson } from './chunk-X7SFJZIG.js';
|
|
@@ -176,17 +176,18 @@ function runDoctor(env = {}) {
|
|
|
176
176
|
const home = env.home ?? homeFromEnv();
|
|
177
177
|
const now = env.now ?? Date.now;
|
|
178
178
|
const laptop = env.runnerHost !== true;
|
|
179
|
+
const buildsInOwnImages = env.runnerHost === true && (env.runnerHooks === "builtin:container" || env.runnerHooks === "builtin:vm");
|
|
179
180
|
const transcripts = laptop ? scanTranscripts(home) : void 0;
|
|
180
181
|
const starter = laptop ? checkStarterFiles(env.cwd) : void 0;
|
|
181
182
|
return [
|
|
182
183
|
...laptop ? [checkClaudeDir(home), checkTranscripts(transcripts, now), ...checkHooks(home, env.cwd, transcripts, now)] : [LAPTOP_CHECKS_NOT_APPLICABLE],
|
|
183
184
|
...checkDeadHooksState(env.cwd),
|
|
184
185
|
...laptop ? [checkSpoolWritable(home)] : [],
|
|
185
|
-
checkLastSync(home, now),
|
|
186
|
+
...buildsInOwnImages ? [] : [checkLastSync(home, now)],
|
|
186
187
|
...laptop ? [checkDaemon(home)] : [],
|
|
187
188
|
checkCleanupPeriod(home),
|
|
188
189
|
checkDiskHeadroom(home),
|
|
189
|
-
checkClaudeVersion(env),
|
|
190
|
+
...buildsInOwnImages ? [] : [checkClaudeVersion(env)],
|
|
190
191
|
checkSettingsValid(home, env.cwd),
|
|
191
192
|
...laptop ? checkStatusline(home, now, env.cwd) : [],
|
|
192
193
|
...checkInstalls(env),
|
|
@@ -920,6 +921,7 @@ var CREDENTIAL_CHECK_TIMEOUT_MS = 15e3;
|
|
|
920
921
|
var LOGIN_FIX = `Run \`${cliInvocation()} login\` to sign in again.`;
|
|
921
922
|
var CONNECT_FIX = `Run \`${cliInvocation()} connect\` to choose a factory for this repository.`;
|
|
922
923
|
var SETUP_PANEL_FIX = "Link the repository on the factory's setup panel in the dashboard.";
|
|
924
|
+
var RUNNER_KEY_PATH = "/v1/runner/host-key";
|
|
923
925
|
var MINT_KEY_FIX = "Mint a key for a factory that exists: dashboard \u2192 Settings \u2192 API keys.";
|
|
924
926
|
async function askGateway(fetchImpl, url, path, credential, appId) {
|
|
925
927
|
const headers = { authorization: `Bearer ${credential}` };
|
|
@@ -1019,7 +1021,7 @@ async function loginChecks(fetchImpl, url, token, appId, local, inRepository) {
|
|
|
1019
1021
|
const fix = elsewhere === void 0 ? SETUP_PANEL_FIX : `Run \`${cliInvocation()} connect --factory ${factorySlug(elsewhere)}\` to use the factory this repository is linked to.`;
|
|
1020
1022
|
return [login, factoryCheck, { name: "Repository", status: "warn", detail: `${shown} is not linked to ${factorySlug(factory)}`, fix }];
|
|
1021
1023
|
}
|
|
1022
|
-
async function factoryKeyChecks(fetchImpl, url, key, appId, source, local) {
|
|
1024
|
+
async function factoryKeyChecks(fetchImpl, url, key, appId, source, local, runnerHost) {
|
|
1023
1025
|
const name = "Factory key";
|
|
1024
1026
|
if (appId === void 0) {
|
|
1025
1027
|
return withSkippedRest(
|
|
@@ -1028,7 +1030,7 @@ async function factoryKeyChecks(fetchImpl, url, key, appId, source, local) {
|
|
|
1028
1030
|
);
|
|
1029
1031
|
}
|
|
1030
1032
|
const factoryPath = `/v1/apps/${encodeURIComponent(appId)}`;
|
|
1031
|
-
const reply = await askGateway(fetchImpl, url, factoryPath, key, appId);
|
|
1033
|
+
const reply = await askGateway(fetchImpl, url, runnerHost ? RUNNER_KEY_PATH : factoryPath, key, appId);
|
|
1032
1034
|
const unanswered = unansweredDetail(reply);
|
|
1033
1035
|
if (unanswered !== void 0) {
|
|
1034
1036
|
return withSkippedRest({ name, status: "warn", detail: unanswered, fix: NETWORK_FIX }, "the factory key check did not finish");
|
|
@@ -1051,10 +1053,11 @@ async function factoryKeyChecks(fetchImpl, url, key, appId, source, local) {
|
|
|
1051
1053
|
const accepted = { name, status: "pass", detail: `the gateway accepts the key from ${source}` };
|
|
1052
1054
|
const shownAppId = sanitizeTerminal(appId);
|
|
1053
1055
|
if (status === 403 && /missing required permission/i.test(message)) {
|
|
1054
|
-
const permission = /'([^']+)'/.exec(message)?.[1] ?? "factory.read";
|
|
1056
|
+
const permission = /'([^']+)'/.exec(message)?.[1] ?? (runnerHost ? "work.claim" : "factory.read");
|
|
1057
|
+
const cannot = runnerHost ? `the key lacks a permission that a runner needs for the factory ${shownAppId}` : `the key cannot read the factory ${shownAppId}`;
|
|
1055
1058
|
return [
|
|
1056
1059
|
accepted,
|
|
1057
|
-
{ name: "Factory", status: "fail", detail:
|
|
1060
|
+
{ name: "Factory", status: "fail", detail: `${cannot}: ${message}`, fix: `Use a key that holds ${permission}.` },
|
|
1058
1061
|
skippedCheck("Repository", "the factory check failed")
|
|
1059
1062
|
];
|
|
1060
1063
|
}
|
|
@@ -1082,6 +1085,10 @@ async function factoryKeyChecks(fetchImpl, url, key, appId, source, local) {
|
|
|
1082
1085
|
"the factory key check did not finish"
|
|
1083
1086
|
);
|
|
1084
1087
|
}
|
|
1088
|
+
if (runnerHost) {
|
|
1089
|
+
const factory2 = { name: "Factory", status: "pass", detail: `the factory ${shownAppId} accepts this runner key` };
|
|
1090
|
+
return withRepository(fetchImpl, url, key, appId, factoryPath, local, accepted, factory2);
|
|
1091
|
+
}
|
|
1085
1092
|
const row = body?.data;
|
|
1086
1093
|
if (typeof row?.id !== "string") {
|
|
1087
1094
|
return withSkippedRest(
|
|
@@ -1091,6 +1098,9 @@ async function factoryKeyChecks(fetchImpl, url, key, appId, source, local) {
|
|
|
1091
1098
|
}
|
|
1092
1099
|
const label = [row.display_name, row.name].find((v) => typeof v === "string") ?? appId;
|
|
1093
1100
|
const factory = { name: "Factory", status: "pass", detail: `${sanitizeTerminal(label)} (${shownAppId}) is readable with this key` };
|
|
1101
|
+
return withRepository(fetchImpl, url, key, appId, factoryPath, local, accepted, factory);
|
|
1102
|
+
}
|
|
1103
|
+
async function withRepository(fetchImpl, url, key, appId, factoryPath, local, accepted, factory) {
|
|
1094
1104
|
if (local === void 0) return [accepted, factory, skippedCheck("Repository", "not inside a git repository with a remote")];
|
|
1095
1105
|
const links = await askGateway(fetchImpl, url, `${factoryPath}/git/links`, key, appId);
|
|
1096
1106
|
const shown = sanitizeTerminal(local);
|
|
@@ -1122,7 +1132,7 @@ async function credentialChecks(options = {}) {
|
|
|
1122
1132
|
return loginChecks(fetchImpl, resolved.url, resolved.credential, resolved.appId, local, findGitDirs(cwd) !== void 0);
|
|
1123
1133
|
}
|
|
1124
1134
|
const source = env.OUTERLAYER_API_KEY ? "OUTERLAYER_API_KEY" : "~/.outerlayer/config.json";
|
|
1125
|
-
return factoryKeyChecks(fetchImpl, resolved.url, resolved.credential, resolved.appId, source, local);
|
|
1135
|
+
return factoryKeyChecks(fetchImpl, resolved.url, resolved.credential, resolved.appId, source, local, options.runnerHost === true);
|
|
1126
1136
|
}
|
|
1127
1137
|
function governedDetail(source) {
|
|
1128
1138
|
return `governed by ${sanitizeTerminal(source.repository)} (ref ${sanitizeTerminal(source.ref)}, stored commit ${sanitizeTerminal(source.sha.slice(0, 7))})`;
|
|
@@ -1182,8 +1192,16 @@ function doctorExitCode(checks) {
|
|
|
1182
1192
|
async function gatherDoctorChecks() {
|
|
1183
1193
|
const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-TNV5HHLO.js');
|
|
1184
1194
|
const configPath = defaultRunnerConfigPath();
|
|
1185
|
-
const
|
|
1186
|
-
const
|
|
1195
|
+
const runnerHost = hasRunnerBlock(configPath);
|
|
1196
|
+
const hooks = (() => {
|
|
1197
|
+
try {
|
|
1198
|
+
return runnerHost ? loadRunnerConfig(configPath).hooks : void 0;
|
|
1199
|
+
} catch {
|
|
1200
|
+
return void 0;
|
|
1201
|
+
}
|
|
1202
|
+
})();
|
|
1203
|
+
const checks = runDoctor({ runnerHost, ...hooks === void 0 ? {} : { runnerHooks: hooks.provision } });
|
|
1204
|
+
const credential = await credentialChecks({ runnerHost });
|
|
1187
1205
|
checks.push(...credential);
|
|
1188
1206
|
if (credential[0]?.status === "pass") checks.push(...await githubAppChecks(), ...await governanceChecks());
|
|
1189
1207
|
if (credential[0]?.status === "pass") checks.push(...await fleetCheck());
|
|
@@ -1193,14 +1211,7 @@ async function gatherDoctorChecks() {
|
|
|
1193
1211
|
const { runnerVmCheck } = await import('./doctor-53F2PYY7.js');
|
|
1194
1212
|
checks.push(runnerVmCheck(configPath, { lima: realLima(), home: homeFromEnv(), instance: runnerVm.instance }));
|
|
1195
1213
|
} else if (hasRunnerBlock(configPath)) {
|
|
1196
|
-
const { runnerHostChecks } = await import('./doctor-
|
|
1197
|
-
const hooks = (() => {
|
|
1198
|
-
try {
|
|
1199
|
-
return loadRunnerConfig(configPath).hooks;
|
|
1200
|
-
} catch {
|
|
1201
|
-
return void 0;
|
|
1202
|
-
}
|
|
1203
|
-
})();
|
|
1214
|
+
const { runnerHostChecks } = await import('./doctor-PKMAUDTU.js');
|
|
1204
1215
|
const gateway = (() => {
|
|
1205
1216
|
try {
|
|
1206
1217
|
const { url, apiKey, appId } = loadRunnerConfig(configPath);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-
|
|
4
|
-
import { MIN_ENGINE_MAJOR } from './chunk-
|
|
3
|
+
import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-W3K6GBXY.js';
|
|
4
|
+
import { MIN_ENGINE_MAJOR } from './chunk-5Q4NDYQP.js';
|
|
5
5
|
import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-AV5MJY45.js';
|
|
6
6
|
import { runnerCredentialProblem } from './chunk-YYGXCRIW.js';
|
|
7
7
|
import { runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-DWVAG73B.js';
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, MICROVM_COMMAND_DIR, commandLogOffset, startMicroVmCommand, microVmCommandLine, runCommand, execCommandLine, startSender, startHostServices, finishJob, isContainerTracked, isMicroVmTracked, probeMicroVmCommand, probeCommand, appendCommandLog, judgeProbe, EXIT_CODE_FILE, isTracked, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listUnreadableJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, AttemptLogBook, microVmOomKills, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, listTrackedJobs, restartSender, serveLease, vmAlive, writeGuestGhConfig, ALREADY_RELEASED, inTeardown } from './chunk-
|
|
3
|
+
import { releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, MICROVM_COMMAND_DIR, commandLogOffset, startMicroVmCommand, microVmCommandLine, runCommand, execCommandLine, startSender, startHostServices, finishJob, isContainerTracked, isMicroVmTracked, probeMicroVmCommand, probeCommand, appendCommandLog, judgeProbe, EXIT_CODE_FILE, isTracked, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listUnreadableJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, AttemptLogBook, microVmOomKills, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, listTrackedJobs, restartSender, serveLease, vmAlive, writeGuestGhConfig, ALREADY_RELEASED, inTeardown } from './chunk-6P2Z5AUY.js';
|
|
4
4
|
import { decideInstalledSwitch } from './chunk-3JVYMD4G.js';
|
|
5
5
|
import { fetchVersionMeta, npmVersion, npmSupportsProvenance, fetchTarballDigest, fetchProvenance, installVersion, auditSignatures } from './chunk-E7R2GIAW.js';
|
|
6
6
|
import { RUNNER_PROTOCOL } from './chunk-TPKYTORP.js';
|
|
7
7
|
import { writePendingUpdate } from './chunk-HWOU2HDH.js';
|
|
8
8
|
import { JOB_STATE_FORMAT, readsJobState, jobStateFormatOf } from './chunk-ZVB57WI6.js';
|
|
9
9
|
import { readHousekeepingRecord, writeHousekeepingRecord } from './chunk-QBF462QH.js';
|
|
10
|
-
import { currentSkillCommand, formerSkillProblem, placeholderQueues, placeholderProblem } from './chunk-
|
|
10
|
+
import { currentSkillCommand, formerSkillProblem, placeholderQueues, placeholderProblem } from './chunk-ERVZGWUR.js';
|
|
11
11
|
import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
|
|
12
12
|
import { writeMarker, readMarker, currentVersion, removeMarker, entryIn, versionDir, startedThroughCurrent, switchCurrent, isInLayout, cleanVersions, stagingDir } from './chunk-6NFXOQKZ.js';
|
|
13
13
|
import { RepoFilter } from './chunk-TBT347UY.js';
|
|
14
|
-
import { leaseTimeLeftMs, createContainerRuntime, withTunnelLog, LEASE_SECONDS, provisionContainer, leaseExpiresAtMs, deliverContainerHooks, lifecycleSteps, lifecycleFailureReason, prepareBranch, containerCommandExec, setUpRunnerCgroup, measureDisk, parseCpuList, ensureTunnel, keepGhConfigCurrent, filesAreCopied, gitRemoteFor, startServicesFor, createLeaseChannel } from './chunk-
|
|
14
|
+
import { leaseTimeLeftMs, createContainerRuntime, withTunnelLog, LEASE_SECONDS, provisionContainer, leaseExpiresAtMs, deliverContainerHooks, lifecycleSteps, lifecycleFailureReason, prepareBranch, containerCommandExec, setUpRunnerCgroup, measureDisk, parseCpuList, ensureTunnel, keepGhConfigCurrent, filesAreCopied, gitRemoteFor, startServicesFor, createLeaseChannel } from './chunk-5Q4NDYQP.js';
|
|
15
15
|
import { describeCallFailure, retrySend, shortClaim, relativeToRunner, formatDuration, BuildTokens, classifyRefusal, refusalCode, createRunnerLog, formatClock } from './chunk-JZJLKTZT.js';
|
|
16
16
|
import { tagToPull, pullInstruction, imageTag, writeUpdateStatus } from './chunk-O47BTZSN.js';
|
|
17
17
|
import { isVersion, compareVersions, satisfiesRange } from './chunk-TQMI335S.js';
|
|
@@ -2955,7 +2955,7 @@ async function start(configPath, deps = { fetchImpl: fetch }) {
|
|
|
2955
2955
|
check: update.check ? () => update.check(configPath) : async () => {
|
|
2956
2956
|
const held = heldClaudeCredential();
|
|
2957
2957
|
const env = held === void 0 ? process.env : { ...process.env, [held.variable]: held.value };
|
|
2958
|
-
return (await import('./check-
|
|
2958
|
+
return (await import('./check-WJ4X2Q44.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl, env });
|
|
2959
2959
|
},
|
|
2960
2960
|
now: () => (deps.now ?? (() => /* @__PURE__ */ new Date()))().getTime(),
|
|
2961
2961
|
log
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { MIN_ENGINE_MAJOR } from './chunk-
|
|
3
|
+
import { MIN_ENGINE_MAJOR } from './chunk-5Q4NDYQP.js';
|
|
4
4
|
import { runnerImageVersion } from './chunk-O47BTZSN.js';
|
|
5
5
|
import { firecrackerArch, MICROVM_ARCHES, guestAssetsPinned } from './chunk-SJZL5F3F.js';
|
|
6
6
|
import { spawnSync } from 'child_process';
|
|
@@ -1,6 +1,6 @@
|
|
|
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-FTNCNEWE.js';
|
|
4
4
|
import './chunk-ITAIEJ2T.js';
|
|
5
5
|
import './chunk-TOHKSZKI.js';
|
|
6
6
|
import './chunk-KT4CN6OU.js';
|
|
@@ -3926,13 +3926,13 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3926
3926
|
if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
|
|
3927
3927
|
`);
|
|
3928
3928
|
}
|
|
3929
|
-
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-
|
|
3929
|
+
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-GJR37XGU.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
|
|
3930
3930
|
if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
|
|
3931
3931
|
else process.stdout.write(outcome.text + skillsLine + (shell?.text ?? ""));
|
|
3932
3932
|
return;
|
|
3933
3933
|
}
|
|
3934
3934
|
await installMachineSkillsForSetup();
|
|
3935
|
-
const { runInitCommand } = await import('./init-cmd-
|
|
3935
|
+
const { runInitCommand } = await import('./init-cmd-GJR37XGU.js');
|
|
3936
3936
|
const code = await runInitCommand(
|
|
3937
3937
|
{ json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
|
|
3938
3938
|
{
|
|
@@ -4910,7 +4910,7 @@ function registerRunnerCommands(program2) {
|
|
|
4910
4910
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
4911
4911
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
4912
4912
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-TNV5HHLO.js');
|
|
4913
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4913
|
+
const { start, RunnerStartError } = await import('./loop-DO46LFUH.js');
|
|
4914
4914
|
const { RunnerAlreadyRunningError } = await import('./pidfile-3FT5OLUE.js');
|
|
4915
4915
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4916
4916
|
try {
|
|
@@ -4929,8 +4929,8 @@ function registerRunnerCommands(program2) {
|
|
|
4929
4929
|
"\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"
|
|
4930
4930
|
).action(async () => {
|
|
4931
4931
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-TNV5HHLO.js');
|
|
4932
|
-
const { containerStart } = await import('./container-start-
|
|
4933
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4932
|
+
const { containerStart } = await import('./container-start-3MXIUNE2.js');
|
|
4933
|
+
const { start, RunnerStartError } = await import('./loop-DO46LFUH.js');
|
|
4934
4934
|
const { RunnerAlreadyRunningError } = await import('./pidfile-3FT5OLUE.js');
|
|
4935
4935
|
try {
|
|
4936
4936
|
const result = await containerStart({
|
|
@@ -4950,7 +4950,7 @@ function registerRunnerCommands(program2) {
|
|
|
4950
4950
|
});
|
|
4951
4951
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
4952
4952
|
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
4953
|
-
const { runRunnerCheck } = await import('./check-
|
|
4953
|
+
const { runRunnerCheck } = await import('./check-WJ4X2Q44.js');
|
|
4954
4954
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4955
4955
|
const result = await runRunnerCheck(configPath);
|
|
4956
4956
|
if (!result.ok) {
|
|
@@ -4984,7 +4984,7 @@ function registerRunnerCommands(program2) {
|
|
|
4984
4984
|
}
|
|
4985
4985
|
try {
|
|
4986
4986
|
if (opts.service === true) {
|
|
4987
|
-
const { installServiceCommand } = await import('./command-
|
|
4987
|
+
const { installServiceCommand } = await import('./command-NLWZT7KR.js');
|
|
4988
4988
|
const result2 = await installServiceCommand({
|
|
4989
4989
|
configPath,
|
|
4990
4990
|
print: opts.print,
|
|
@@ -5040,7 +5040,7 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
|
|
|
5040
5040
|
return;
|
|
5041
5041
|
}
|
|
5042
5042
|
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
5043
|
-
const { uninstallServiceCommand } = await import('./command-
|
|
5043
|
+
const { uninstallServiceCommand } = await import('./command-NLWZT7KR.js');
|
|
5044
5044
|
const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
|
|
5045
5045
|
if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
|
|
5046
5046
|
`);
|
|
@@ -5068,10 +5068,10 @@ already in claude.env is used.
|
|
|
5068
5068
|
`
|
|
5069
5069
|
).action(async (opts) => {
|
|
5070
5070
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-TNV5HHLO.js');
|
|
5071
|
-
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-
|
|
5072
|
-
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-
|
|
5073
|
-
const { detectMachine } = await import('./machine-
|
|
5074
|
-
const { chooseVm, runVmInit, VmInitError } = await import('./init-
|
|
5071
|
+
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-Q6JV7IGF.js');
|
|
5072
|
+
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-UP5YBUHR.js');
|
|
5073
|
+
const { detectMachine } = await import('./machine-HZGUBOUH.js');
|
|
5074
|
+
const { chooseVm, runVmInit, VmInitError } = await import('./init-HENNITCI.js');
|
|
5075
5075
|
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-2Z2DVSUJ.js');
|
|
5076
5076
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5077
5077
|
if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
|
|
@@ -5222,7 +5222,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
|
|
|
5222
5222
|
let serviceUp = false;
|
|
5223
5223
|
let restart;
|
|
5224
5224
|
if (installedLayout) {
|
|
5225
|
-
const { installServiceCommand } = await import('./command-
|
|
5225
|
+
const { installServiceCommand } = await import('./command-NLWZT7KR.js');
|
|
5226
5226
|
const service = await installServiceCommand({
|
|
5227
5227
|
configPath,
|
|
5228
5228
|
entryPath: process.argv[1] ?? "",
|
|
@@ -5350,7 +5350,7 @@ Next:
|
|
|
5350
5350
|
});
|
|
5351
5351
|
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) => {
|
|
5352
5352
|
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
5353
|
-
const { requestStop } = await import('./loop-
|
|
5353
|
+
const { requestStop } = await import('./loop-DO46LFUH.js');
|
|
5354
5354
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5355
5355
|
const { runnerImageVersion } = await import('./image-tag-TEOKZVD5.js');
|
|
5356
5356
|
await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
|
|
@@ -5358,8 +5358,8 @@ Next:
|
|
|
5358
5358
|
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) => {
|
|
5359
5359
|
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-TNV5HHLO.js');
|
|
5360
5360
|
const { jobsDir, runnerDir } = await import('./paths-2VSGK6E2.js');
|
|
5361
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
5362
|
-
const { renderStatus } = await import('./status-
|
|
5361
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-DO46LFUH.js');
|
|
5362
|
+
const { renderStatus } = await import('./status-2ICTDC2R.js');
|
|
5363
5363
|
const { readHousekeepingRecord } = await import('./record-7SSRLSI2.js');
|
|
5364
5364
|
const path2 = await import('path');
|
|
5365
5365
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
@@ -5419,7 +5419,7 @@ Next:
|
|
|
5419
5419
|
});
|
|
5420
5420
|
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) => {
|
|
5421
5421
|
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
5422
|
-
const { listJobFiles } = await import('./loop-
|
|
5422
|
+
const { listJobFiles } = await import('./loop-DO46LFUH.js');
|
|
5423
5423
|
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-Z4L4I3OR.js');
|
|
5424
5424
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5425
5425
|
const item = parseTrackerNumber(itemArg);
|
|
@@ -3,8 +3,8 @@ import { createRequire } from 'node:module';
|
|
|
3
3
|
import { runRunnerInstall, launcherSummary, restartNote } from './chunk-EZ3DZXUH.js';
|
|
4
4
|
import './chunk-DSKOHPXN.js';
|
|
5
5
|
import { currentLink, execStartCommand } from './chunk-6NFXOQKZ.js';
|
|
6
|
-
import { detectMachine } from './chunk-
|
|
7
|
-
import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-
|
|
6
|
+
import { detectMachine } from './chunk-W3K6GBXY.js';
|
|
7
|
+
import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-5Q4NDYQP.js';
|
|
8
8
|
import './chunk-WL3QF3QF.js';
|
|
9
9
|
import './chunk-DIQN5SEL.js';
|
|
10
10
|
import './chunk-JZJLKTZT.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-
|
|
4
|
-
import { detectMachine, supportsContainerBuilds, describeMachineDocker } from './chunk-
|
|
5
|
-
import { MIN_ENGINE_MAJOR } from './chunk-
|
|
3
|
+
import { RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-KBB3CQTW.js';
|
|
4
|
+
import { detectMachine, supportsContainerBuilds, describeMachineDocker } from './chunk-W3K6GBXY.js';
|
|
5
|
+
import { MIN_ENGINE_MAJOR } from './chunk-5Q4NDYQP.js';
|
|
6
6
|
import './chunk-WL3QF3QF.js';
|
|
7
7
|
import './chunk-DIQN5SEL.js';
|
|
8
8
|
import './chunk-JZJLKTZT.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { launcherCheck } from './chunk-DSKOHPXN.js';
|
|
4
|
-
import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-
|
|
4
|
+
import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-ERVZGWUR.js';
|
|
5
5
|
import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
|
|
6
6
|
import './chunk-6NFXOQKZ.js';
|
|
7
7
|
import { RepoFilter } from './chunk-TBT347UY.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-
|
|
10
|
-
import { MIN_ENGINE_MAJOR, helperFirecrackerNote, probeHelper, helperSocketPath } from './chunk-
|
|
8
|
+
import './chunk-KBB3CQTW.js';
|
|
9
|
+
import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-W3K6GBXY.js';
|
|
10
|
+
import { MIN_ENGINE_MAJOR, helperFirecrackerNote, probeHelper, helperSocketPath } from './chunk-5Q4NDYQP.js';
|
|
11
11
|
import './chunk-WL3QF3QF.js';
|
|
12
12
|
import './chunk-DIQN5SEL.js';
|
|
13
13
|
import './chunk-JZJLKTZT.js';
|
package/dist/index.js
CHANGED
|
@@ -26,5 +26,5 @@ if (argv[0] === "claude") {
|
|
|
26
26
|
process.exit(await runClaudeLauncher(argv.slice(1)));
|
|
27
27
|
}
|
|
28
28
|
(await import('./hook-fast-UJPAWDAO.js')).recordLinkExitFailure(argv);
|
|
29
|
-
var { runCli } = await import('./cli-
|
|
29
|
+
var { runCli } = await import('./cli-X3JGBH2D.js');
|
|
30
30
|
await runCli(process.argv);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { npmSupportsProvenance } from './chunk-E7R2GIAW.js';
|
|
4
|
-
import { RunnerInitError, readConfigObject } from './chunk-
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
4
|
+
import { RunnerInitError, readConfigObject } from './chunk-KBB3CQTW.js';
|
|
5
|
+
import './chunk-W3K6GBXY.js';
|
|
6
|
+
import './chunk-5Q4NDYQP.js';
|
|
7
7
|
import './chunk-WL3QF3QF.js';
|
|
8
8
|
import './chunk-DIQN5SEL.js';
|
|
9
9
|
import './chunk-JZJLKTZT.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, prepareRunnerInit, readConfigObject, runRunnerInit, writeRunnerInit } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, prepareRunnerInit, readConfigObject, runRunnerInit, writeRunnerInit } from './chunk-KBB3CQTW.js';
|
|
4
|
+
import './chunk-W3K6GBXY.js';
|
|
5
|
+
import './chunk-5Q4NDYQP.js';
|
|
6
6
|
import './chunk-WL3QF3QF.js';
|
|
7
7
|
import './chunk-DIQN5SEL.js';
|
|
8
8
|
import './chunk-JZJLKTZT.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { summarizeChecks, summaryText, renderDoctorText } from './chunk-
|
|
3
|
+
import { summarizeChecks, summaryText, renderDoctorText } from './chunk-FTNCNEWE.js';
|
|
4
4
|
import './chunk-ITAIEJ2T.js';
|
|
5
5
|
import { shellFunctionInstalled, removeShellFunction, installShellFunction, SHELL_FUNCTION_LINE } from './chunk-CJJDJ7AT.js';
|
|
6
6
|
import './chunk-TOHKSZKI.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { RunnerStartError, leaseTimeLeftFor, listJobFiles, logUnusableHelper, probeBuild, probeCredentials, requestStop, runnerProcessState, runtimeOf, start, tick, watchTick } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
export { RunnerStartError, leaseTimeLeftFor, listJobFiles, logUnusableHelper, probeBuild, probeCredentials, requestStop, runnerProcessState, runtimeOf, start, tick, watchTick } from './chunk-NVUO52YW.js';
|
|
4
|
+
import './chunk-6P2Z5AUY.js';
|
|
5
5
|
import './chunk-3JVYMD4G.js';
|
|
6
6
|
import './chunk-E7R2GIAW.js';
|
|
7
7
|
import './chunk-TPKYTORP.js';
|
|
@@ -14,13 +14,13 @@ import './chunk-2BZTGJII.js';
|
|
|
14
14
|
import './chunk-VM6BX2WJ.js';
|
|
15
15
|
import './chunk-ESVW4MJY.js';
|
|
16
16
|
import './chunk-RXFKXZJS.js';
|
|
17
|
-
import './chunk-
|
|
17
|
+
import './chunk-ERVZGWUR.js';
|
|
18
18
|
import './chunk-YYYRBYWG.js';
|
|
19
19
|
import './chunk-6NFXOQKZ.js';
|
|
20
20
|
import './chunk-TBT347UY.js';
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
21
|
+
import './chunk-KBB3CQTW.js';
|
|
22
|
+
import './chunk-W3K6GBXY.js';
|
|
23
|
+
import './chunk-5Q4NDYQP.js';
|
|
24
24
|
import './chunk-WL3QF3QF.js';
|
|
25
25
|
import './chunk-DIQN5SEL.js';
|
|
26
26
|
import './chunk-JZJLKTZT.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-W3K6GBXY.js';
|
|
4
|
+
import './chunk-5Q4NDYQP.js';
|
|
5
5
|
import './chunk-WL3QF3QF.js';
|
|
6
6
|
import './chunk-DIQN5SEL.js';
|
|
7
7
|
import './chunk-JZJLKTZT.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { readConfigObject, RunnerInitError } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
import { readConfigObject, RunnerInitError } from './chunk-KBB3CQTW.js';
|
|
4
|
+
import './chunk-W3K6GBXY.js';
|
|
5
|
+
import './chunk-5Q4NDYQP.js';
|
|
6
6
|
import './chunk-WL3QF3QF.js';
|
|
7
7
|
import './chunk-DIQN5SEL.js';
|
|
8
8
|
import './chunk-JZJLKTZT.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { isReadable, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-
|
|
3
|
+
import { isReadable, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-6P2Z5AUY.js';
|
|
4
4
|
import { jobStateFormatOf } from './chunk-ZVB57WI6.js';
|
|
5
5
|
import './chunk-OO6OADZN.js';
|
|
6
6
|
import './chunk-YTR435DO.js';
|
|
@@ -10,7 +10,7 @@ import './chunk-ESVW4MJY.js';
|
|
|
10
10
|
import './chunk-RXFKXZJS.js';
|
|
11
11
|
import { formatBytes } from './chunk-YYYRBYWG.js';
|
|
12
12
|
import './chunk-TBT347UY.js';
|
|
13
|
-
import { LEASE_SECONDS } from './chunk-
|
|
13
|
+
import { LEASE_SECONDS } from './chunk-5Q4NDYQP.js';
|
|
14
14
|
import './chunk-WL3QF3QF.js';
|
|
15
15
|
import './chunk-DIQN5SEL.js';
|
|
16
16
|
import { formatDuration, formatClock, relativeToRunner } from './chunk-JZJLKTZT.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@outerlayer/cli",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.4",
|
|
4
4
|
"description": "OuterLayer CLI — commands: init, claude, connect, doctor, login, logout, sync, daemon (alias: watch), emit, work, spec, runner, hooks, mcp, context. Capture and sync coding-agent sessions, and record proof of factory work.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Magu Studios, Inc.",
|