@outerlayer/cli 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +9 -4
  3. package/dist/{agent-setup-52LRZ6AY.js → agent-setup-QE6PSCEZ.js} +8 -8
  4. package/dist/build-info.json +1 -1
  5. package/dist/{builder-OF67QKDS.js → builder-UUS4ORDH.js} +3 -3
  6. package/dist/{check-RJOJU2WA.js → check-63IDCEEV.js} +27 -27
  7. package/dist/{chunk-XR3BJN33.js → chunk-22RMZBGW.js} +20 -1
  8. package/dist/{chunk-AHZQBGD2.js → chunk-2M63GG56.js} +1 -1
  9. package/dist/{chunk-27Y7AX2O.js → chunk-3D4OYFCD.js} +4 -4
  10. package/dist/{chunk-GGMRZPEA.js → chunk-3KTA5UU2.js} +1 -1
  11. package/dist/{chunk-USO2DKBD.js → chunk-4KSQKQXE.js} +8 -2
  12. package/dist/{chunk-C7N4TDHW.js → chunk-4QVZCVWT.js} +5 -5
  13. package/dist/{chunk-NPXQXYVA.js → chunk-6S3H3J6H.js} +2 -2
  14. package/dist/{chunk-DVT73QJO.js → chunk-C6IV5BV7.js} +10 -10
  15. package/dist/{chunk-JOXYKGUV.js → chunk-CNFVHDHG.js} +1 -1
  16. package/dist/{chunk-ANW7VHMH.js → chunk-DPKX26LT.js} +92 -16
  17. package/dist/{chunk-ZQUCTFXC.js → chunk-DXQ5MHCO.js} +1 -1
  18. package/dist/{chunk-GATMPAMK.js → chunk-EFZLAYPE.js} +2 -2
  19. package/dist/{chunk-SZOVKFWB.js → chunk-GI4XXD4I.js} +3 -3
  20. package/dist/{chunk-G5XY6CVG.js → chunk-HDTVTA6I.js} +2 -2
  21. package/dist/{chunk-325272HM.js → chunk-J5M7BSJQ.js} +11 -4
  22. package/dist/{chunk-3ZPYPFNM.js → chunk-JXYVA45C.js} +1 -1
  23. package/dist/{chunk-G5IEVZGI.js → chunk-LCEXHCHD.js} +1 -1
  24. package/dist/{chunk-GEBQXUFY.js → chunk-MJXXRX4M.js} +24 -10
  25. package/dist/{chunk-SKHN72JO.js → chunk-MZN7AQOB.js} +8 -8
  26. package/dist/{chunk-QEESCZ26.js → chunk-NX57IBNK.js} +1 -1
  27. package/dist/{chunk-6FH2AHJY.js → chunk-P4MM66C6.js} +30 -17
  28. package/dist/{chunk-IBB4D4KE.js → chunk-P6FX4D43.js} +1 -1
  29. package/dist/{chunk-A56PYPDF.js → chunk-R7OQTKWT.js} +2 -1
  30. package/dist/{chunk-2KLBKHT4.js → chunk-RLYZLUQ7.js} +1 -1
  31. package/dist/chunk-RMWLBUCJ.js +50 -0
  32. package/dist/{chunk-YEQL54G5.js → chunk-SFFHGX3G.js} +1 -1
  33. package/dist/{chunk-G4RXNF2L.js → chunk-SVEP7PVH.js} +12 -12
  34. package/dist/{chunk-VK25O2ZM.js → chunk-T5VPP6H7.js} +1 -1
  35. package/dist/{chunk-FO7KKPYG.js → chunk-TCIW27FM.js} +1 -1
  36. package/dist/{chunk-PDRYXERC.js → chunk-TOPDNXHZ.js} +5 -5
  37. package/dist/{chunk-5TGQHOUX.js → chunk-XJKL4BNU.js} +3 -3
  38. package/dist/{cli-JSSRGA6V.js → cli-WSBIAVZU.js} +116 -80
  39. package/dist/{command-3WYZ2ML5.js → command-N7BAB4XJ.js} +18 -18
  40. package/dist/{config-MKBX2ZQD.js → config-N3C6DFQA.js} +1 -1
  41. package/dist/{connect-cmd-A5NGODCJ.js → connect-cmd-FGYRLLXL.js} +5 -5
  42. package/dist/{context-adopt-BAHGXJZV.js → context-adopt-B3PWGFHL.js} +5 -5
  43. package/dist/{context-materialize-45OVRRK2.js → context-materialize-7S6NLLRO.js} +5 -5
  44. package/dist/{dist-EQDW7MZW.js → dist-LKDWQWZ7.js} +2 -2
  45. package/dist/{docker-VGWEJWI7.js → docker-BZ55BMBJ.js} +4 -4
  46. package/dist/{doctor-4FFXTQJ2.js → doctor-3H25Q7WT.js} +20 -20
  47. package/dist/{emit-artifact-cmd-QS7XNKBT.js → emit-artifact-cmd-IQCRXOH7.js} +8 -8
  48. package/dist/{emit-cmd-LXEIDKLT.js → emit-cmd-KDSM5VAO.js} +4 -4
  49. package/dist/{emit-criteria-cmd-XN6AKA53.js → emit-criteria-cmd-EYUXME26.js} +6 -6
  50. package/dist/{emit-finding-cmd-SQJSEHYS.js → emit-finding-cmd-P4RKBPBB.js} +6 -6
  51. package/dist/{emit-result-cmd-56RHPHOA.js → emit-result-cmd-6XYENU6H.js} +8 -8
  52. package/dist/{hook-fast-HLESEJAL.js → hook-fast-PXWKQPN6.js} +1 -1
  53. package/dist/{import-capture-cmd-NHMAFDM6.js → import-capture-cmd-2BKM5I2N.js} +3 -3
  54. package/dist/{import-ruler-cmd-UYB32YUT.js → import-ruler-cmd-IXR7YK47.js} +2 -2
  55. package/dist/index.js +3 -3
  56. package/dist/{init-UZKD4RY7.js → init-2LWVS4AH.js} +19 -19
  57. package/dist/{init-6AY5T3P6.js → init-ZL7ORPTF.js} +38 -28
  58. package/dist/{init-cmd-XGSX2BCC.js → init-cmd-JXOBCOIB.js} +14 -12
  59. package/dist/{install-VXXI7UR6.js → install-HDBIPHTX.js} +2 -2
  60. package/dist/{login-browser-7XGSV7MA.js → login-browser-QZCS3WW6.js} +2 -1
  61. package/dist/{loop-4NMI2USY.js → loop-XOAE6ZIY.js} +27 -27
  62. package/dist/{machine-4JX2D4TS.js → machine-G6PY2J2J.js} +15 -15
  63. package/dist/{mcp-install-cmd-XZARXNYT.js → mcp-install-cmd-VXVIH7PH.js} +1 -1
  64. package/dist/{runner-env-WAXTJXZK.js → runner-env-XTC53CHN.js} +3 -3
  65. package/dist/runner-key-TDTLNAKJ.js +154 -0
  66. package/dist/{session-sender-T7PN4YRC.js → session-sender-XVGZFWRK.js} +6 -6
  67. package/dist/{starter-pack-Z22VRFPF.js → starter-pack-B7JPGEDO.js} +4 -4
  68. package/dist/{status-OXBIRWJ7.js → status-MRTPG34B.js} +20 -20
  69. package/dist/{sync-cmd-EVXNR47N.js → sync-cmd-UBUZMMDN.js} +5 -5
  70. package/dist/{watch-7NSFOAL5.js → watch-STNPEWD6.js} +5 -5
  71. package/dist/{work-claim-cmd-KR7UR2AB.js → work-claim-cmd-CWGYEIJE.js} +10 -10
  72. package/dist/{work-cmd-JPM37MLF.js → work-cmd-X7NMJDFL.js} +7 -7
  73. package/dist/{work-comment-cmd-3DC6BC34.js → work-comment-cmd-FI2TMAYQ.js} +7 -7
  74. package/dist/{work-open-pr-cmd-XZQRJBNZ.js → work-open-pr-cmd-OVHJ5I5H.js} +8 -8
  75. package/dist/{work-pr-cmd-WHGZOP22.js → work-pr-cmd-Y5TDMQ4O.js} +7 -7
  76. package/package.json +1 -1
  77. package/skill-pack/template/build/SKILL.md +60 -33
  78. package/skill-pack/template/build/references/agent-briefs.md +4 -2
  79. package/skill-pack/template/build/references/release.md +1 -1
  80. package/skill-pack/template/build/references/review-loop.md +6 -2
  81. package/skill-pack/template/build/scripts/record-criteria.mjs +109 -143
  82. package/skill-pack/validators/code-review.yaml +4 -2
  83. package/dist/chunk-T6OIJQRT.js +0 -31
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { maintainedFilesForExistingSkills, loadMaintainedFiles, writeMaintainedFiles } from './chunk-FO7KKPYG.js';
4
- import { emitTree, parseOuterlayerConfig, classifyTree, generatedHeaderSource, CONTEXT_PIN_FILENAME, normalizePath } from './chunk-AHZQBGD2.js';
3
+ import { maintainedFilesForExistingSkills, loadMaintainedFiles, writeMaintainedFiles } from './chunk-TCIW27FM.js';
4
+ import { emitTree, parseOuterlayerConfig, classifyTree, generatedHeaderSource, CONTEXT_PIN_FILENAME, normalizePath } from './chunk-2M63GG56.js';
5
5
  import { existsSync, readFileSync, mkdirSync, writeFileSync, copyFileSync, readdirSync } from 'fs';
6
6
  import { join, dirname, relative, sep } from 'path';
7
7
 
@@ -22273,9 +22273,14 @@ var ArtifactTombstoneRecordSchema = external_exports.looseObject({
22273
22273
  });
22274
22274
  external_exports.union([ArtifactSpoolRecordSchema, ArtifactTombstoneRecordSchema]);
22275
22275
  var EMITTED_RESULTS = ["pass", "fail"];
22276
- var RESERVED_EMIT_NAMES = ["criteria"];
22277
- var EmittedNameSchema = external_exports.string().regex(/^[a-z][a-z0-9._-]{0,63}$/).refine((name) => !RESERVED_EMIT_NAMES.includes(name), {
22278
- message: "is reserved: `outerlayer emit criteria` records a work item's acceptance criteria"
22276
+ var RESERVED_EMIT_NAMES = ["artifact", "criteria", "finding", "findings"];
22277
+ var EmittedNameSchema = external_exports.string().regex(/^[a-z][a-z0-9._-]{0,63}$/).superRefine((name, ctx) => {
22278
+ if (RESERVED_EMIT_NAMES.includes(name)) {
22279
+ ctx.addIssue({
22280
+ code: "custom",
22281
+ message: `is reserved: \`outerlayer emit ${name}\` is a subcommand, so a check cannot be recorded under that name`
22282
+ });
22283
+ }
22279
22284
  });
22280
22285
  var EMITTED_RESULT_MAX_LINK_LENGTH = 500;
22281
22286
  var EMITTED_RESULT_MAX_BODY_LENGTH = 2e3;
@@ -22292,6 +22297,7 @@ var CriterionSchema = external_exports.object({
22292
22297
  proof: external_exports.enum(ARTIFACT_KINDS).nullable()
22293
22298
  }).strict();
22294
22299
  var CriteriaArraySchema = external_exports.array(CriterionSchema).min(1).max(CRITERIA_MAX);
22300
+ var DraftedSchema = external_exports.boolean().optional();
22295
22301
  function refuseDuplicateIds(criteria, ctx) {
22296
22302
  const seen = /* @__PURE__ */ new Set();
22297
22303
  criteria.forEach((criterion, index) => {
@@ -22305,9 +22311,10 @@ function refuseDuplicateIds(criteria, ctx) {
22305
22311
  seen.add(criterion.id);
22306
22312
  });
22307
22313
  }
22308
- var CriteriaListSchema = external_exports.object({ criteria: CriteriaArraySchema }).strict().superRefine((list, ctx) => refuseDuplicateIds(list.criteria, ctx));
22314
+ var CriteriaListSchema = external_exports.object({ criteria: CriteriaArraySchema, drafted: DraftedSchema }).strict().superRefine((list, ctx) => refuseDuplicateIds(list.criteria, ctx));
22309
22315
  external_exports.object({
22310
22316
  criteria: CriteriaArraySchema,
22317
+ drafted: DraftedSchema,
22311
22318
  item: external_exports.object({ number: external_exports.number().int().positive() }).optional(),
22312
22319
  sessionId: external_exports.string().optional()
22313
22320
  }).superRefine((request, ctx) => refuseDuplicateIds(request.criteria, ctx));
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { EVENT_TYPES, isHumanUserTurn, parseAgentSession, SCHEMA_VERSION, SPEED_MAX_LENGTH, inputBandOf, BUCKET_MODEL_MAX_LENGTH } from './chunk-325272HM.js';
3
+ import { EVENT_TYPES, isHumanUserTurn, parseAgentSession, SCHEMA_VERSION, SPEED_MAX_LENGTH, inputBandOf, BUCKET_MODEL_MAX_LENGTH } from './chunk-J5M7BSJQ.js';
4
4
  import { createHash } from 'crypto';
5
5
  import { readFileSync, readdirSync, statSync, mkdirSync, copyFileSync, renameSync, unlinkSync, writeFileSync, stat as stat$1, unwatchFile, watchFile, watch as watch$1 } from 'fs';
6
6
  import { type, homedir } from 'os';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { CONTEXT_PIN_SCHEMA_VERSION, CONTEXT_PIN_FILENAME } from './chunk-AHZQBGD2.js';
3
+ import { CONTEXT_PIN_SCHEMA_VERSION, CONTEXT_PIN_FILENAME } from './chunk-2M63GG56.js';
4
4
  import { readFileSync, existsSync, writeFileSync, mkdirSync, utimesSync, statSync, unlinkSync } from 'fs';
5
5
  import { join, dirname } from 'path';
6
6
 
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-IBB4D4KE.js';
4
- import { MIN_ENGINE_MAJOR } from './chunk-SKHN72JO.js';
5
- import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-VK25O2ZM.js';
6
- import { RUNNER_DIR_MODE, runnerDir, RUNNER_FILE_MODE } from './chunk-ZM2IMMYN.js';
3
+ import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-P6FX4D43.js';
4
+ import { MIN_ENGINE_MAJOR } from './chunk-MZN7AQOB.js';
5
+ import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-T5VPP6H7.js';
6
+ import { runnerCredentialProblem } from './chunk-22RMZBGW.js';
7
+ import { runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-ZM2IMMYN.js';
7
8
  import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
8
9
  import { dirname } from 'path';
9
10
 
@@ -61,9 +62,8 @@ function parseStdinConfig(configPath, text) {
61
62
  } catch (err) {
62
63
  throw new RunnerInitError(`the config on stdin is not valid JSON (${err instanceof Error ? err.message : String(err)})`);
63
64
  }
64
- if (typeof config.url !== "string" || typeof config.apiKey !== "string" || typeof config.appId !== "string") {
65
- throw new RunnerInitError("the config on stdin needs url, apiKey and appId.");
66
- }
65
+ const problem = runnerCredentialProblem(config);
66
+ if (problem !== void 0) throw new RunnerInitError(`the config on stdin: ${problem.field} ${problem.reason}.`);
67
67
  const carried = config.runner;
68
68
  const credential = handedCredential(config.claudeCredential);
69
69
  const agent = handedAgent(config.agent);
@@ -73,15 +73,22 @@ function parseStdinConfig(configPath, text) {
73
73
  return { config, carried, credential, agent };
74
74
  }
75
75
  function runRunnerInit(configPath, opts = {}) {
76
+ return writeRunnerInit(prepareRunnerInit(configPath, opts));
77
+ }
78
+ function prepareRunnerInit(configPath, opts = {}) {
76
79
  let config;
77
80
  let carried;
78
81
  let credential = opts.credential;
79
82
  let agent = opts.agent;
83
+ let needsKey = false;
80
84
  if (opts.configFromStdin === void 0) {
81
- config = readConfigObject(configPath);
85
+ config = opts.keyFromLogin === true && !existsSync(configPath) ? {} : readConfigObject(configPath);
82
86
  if (config.runner !== void 0) {
83
87
  throw new RunnerInitError(`${configPath}: a runner block is already here. Edit it, or remove it and run this again.`);
84
88
  }
89
+ needsKey = opts.keyFromLogin === true && config.apiKey === void 0;
90
+ const problem = needsKey ? void 0 : runnerCredentialProblem(config);
91
+ if (problem !== void 0) throw new RunnerInitError(`${configPath}: ${problem.field} ${problem.reason}.`);
85
92
  } else {
86
93
  const handed = parseStdinConfig(configPath, opts.configFromStdin);
87
94
  ({ config, carried } = handed);
@@ -100,7 +107,14 @@ function runRunnerInit(configPath, opts = {}) {
100
107
  "--agent claude needs Claude's credential, and none was piped on stdin or is in the runner.env beside the config. Pipe a token from `claude setup-token`, or an Anthropic API key: printf '%s' \"$CLAUDE_CODE_OAUTH_TOKEN\" | outerlayer runner init --agent claude"
101
108
  );
102
109
  }
103
- if (opts.configFromStdin !== void 0) mkdirSync(dirname(configPath), { recursive: true, mode: RUNNER_DIR_MODE });
110
+ return { configPath, config, carried, credential, agent, machine, hooks, needsKey };
111
+ }
112
+ function writeRunnerInit(prepared, runnerKey) {
113
+ const { configPath, config, carried, credential, agent, machine, hooks } = prepared;
114
+ if (prepared.needsKey && runnerKey === void 0) {
115
+ throw new RunnerInitError(`${configPath}: apiKey is missing, and no runner key was created from the login.`);
116
+ }
117
+ if (runnerKey !== void 0) Object.assign(config, { url: runnerKey.url, apiKey: runnerKey.apiKey, appId: runnerKey.appId });
104
118
  mkdirSync(runnerDir(configPath), { recursive: true, mode: RUNNER_DIR_MODE });
105
119
  config.runner = {
106
120
  queues: ["implement", "amend"],
@@ -127,4 +141,4 @@ function runRunnerInit(configPath, opts = {}) {
127
141
  return { configPath, hooks, ...hooks === "builtin:process" ? { note: isolationNote(machine) } : {}, credential: stored };
128
142
  }
129
143
 
130
- export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, readConfigObject, runRunnerInit };
144
+ export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, prepareRunnerInit, readConfigObject, runRunnerInit, writeRunnerInit };
@@ -3,22 +3,22 @@ import { createRequire } from 'node:module';
3
3
  import { readDefaultBranchHead, cloneRepository, buildRepositoryImage } from './chunk-3FMPZPJQ.js';
4
4
  import { startTimeOf, isSameProcess } from './chunk-N5FOE5PS.js';
5
5
  import { currentCliBuild } from './chunk-OGFGZQA3.js';
6
- import { createDockerHost, childEnvironment, spawnRun } from './chunk-GGMRZPEA.js';
6
+ import { createDockerHost, childEnvironment, spawnRun } from './chunk-3KTA5UU2.js';
7
7
  import { RecipeError } from './chunk-QOZKPLVJ.js';
8
- import { builderSpec, runnerLabelValue, RUNNER_LABEL, BUILD_LABEL, prepareRunArgs, containerRunArgs, containerExecArgs } from './chunk-QEESCZ26.js';
8
+ import { builderSpec, runnerLabelValue, RUNNER_LABEL, BUILD_LABEL, prepareRunArgs, containerRunArgs, containerExecArgs } from './chunk-NX57IBNK.js';
9
9
  import { CLAUDE_CODE_VERSION, firecrackerArch, MICROVM_ARCHES, DEFAULT_BASE_IMAGE, GUEST_HELPER_SHA256, GUEST_ASSETS_BASE_URL, GUEST_KERNEL_SHA256, FIRECRACKER_BINARY_SHA256, FIRECRACKER_SHA256, FIRECRACKER_VERSION, GUEST_ASSETS_VERSION } from './chunk-CX22S5BA.js';
10
10
  import { execCapture } from './chunk-QKFB4K7X.js';
11
11
  import { GUEST_CID } from './chunk-RSNSZ2LJ.js';
12
- import { WorkCommandError, postJson } from './chunk-6FH2AHJY.js';
13
- import { setCustomScrubbers, setLocalIdentity, setRepoRoot, parseTranscript, scrubDeep, scrubText } from './chunk-3ZPYPFNM.js';
12
+ import { WorkCommandError, postJson } from './chunk-P4MM66C6.js';
13
+ import { setCustomScrubbers, setLocalIdentity, setRepoRoot, parseTranscript, scrubDeep, scrubText } from './chunk-JXYVA45C.js';
14
14
  import { hostAllowed } from './chunk-UXYLWVTQ.js';
15
15
  import { parseDuKilobytes } from './chunk-7RQ73DLO.js';
16
16
  import { repositoriesOf, primaryOf, RELAY_PORT, CHECKOUT_DIR, JOB_MOUNT, claudeCredential, buildEnvironment, startBuildServices, checkEnvironment, AGENT_CREDENTIAL_MISSING, checkoutPath } from './chunk-4Q7OMKAT.js';
17
- import { defaultGitRunner, materializeContext } from './chunk-SZOVKFWB.js';
18
- import { readContextManifest, readSourceCache } from './chunk-G5IEVZGI.js';
19
- import { orderSessions, extractFacts, sessionsToTimeline } from './chunk-AHZQBGD2.js';
17
+ import { defaultGitRunner, materializeContext } from './chunk-GI4XXD4I.js';
18
+ import { readContextManifest, readSourceCache } from './chunk-LCEXHCHD.js';
19
+ import { orderSessions, extractFacts, sessionsToTimeline } from './chunk-2M63GG56.js';
20
20
  import { signingFetchFor } from './chunk-YO4PSLVB.js';
21
- import { downconvertSession } from './chunk-325272HM.js';
21
+ import { downconvertSession } from './chunk-J5M7BSJQ.js';
22
22
  import { signerFor } from './chunk-V7NIVOFD.js';
23
23
  import { rootfsPathFor, diskTemplatesDir, RUNNER_FILE_MODE, stagedContextDir, contextHomeDir, ghConfigDir, runnerDirOfBuild, spoolDir, mirrorDir, buildDir, RUNNER_DIR_MODE, vmAssetsDir } from './chunk-ZM2IMMYN.js';
24
24
  import { relative, join, dirname, basename } from 'path';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { BUILDKIT_IMAGE } from './chunk-CX22S5BA.js';
4
- import { compareVersions } from './chunk-3ZPYPFNM.js';
4
+ import { compareVersions } from './chunk-JXYVA45C.js';
5
5
  import { parseSize } from './chunk-7RQ73DLO.js';
6
6
  import { JOB_MOUNT, GATEWAY_PORT, GATEWAY_SOCKET, CLAUDE_PORT, CLAUDE_SOCKET, RELAY_PORT, DESTINATION_BASE_PORT } from './chunk-4Q7OMKAT.js';
7
7
  import { runnerDir } from './chunk-ZM2IMMYN.js';
@@ -1,13 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { autoConnect } from './chunk-GATMPAMK.js';
3
+ import { autoConnect } from './chunk-EFZLAYPE.js';
4
4
  import { detectActiveSession } from './chunk-IP7BIBXJ.js';
5
- import { sanitizeTerminal } from './chunk-JOXYKGUV.js';
6
- import { resolveRepoIdentity } from './chunk-3ZPYPFNM.js';
5
+ import { workPageUrl } from './chunk-4QVZCVWT.js';
6
+ import { sanitizeTerminal } from './chunk-CNFVHDHG.js';
7
+ import { resolveRepoIdentity } from './chunk-JXYVA45C.js';
8
+ import { C } from './chunk-YRYMNBGQ.js';
7
9
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
8
10
  import { defaultFetch } from './chunk-YO4PSLVB.js';
9
11
  import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-PLMTLGYH.js';
10
12
  import { signRunnerRequest } from './chunk-V7NIVOFD.js';
13
+ import { readRepoConnection } from './chunk-BJ3KTMDH.js';
11
14
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
12
15
 
13
16
  createRequire(import.meta.url);
@@ -39,10 +42,6 @@ function isSignatureRefusal(code) {
39
42
  }
40
43
 
41
44
  // src/work-cmd.ts
42
- var GREEN = "\x1B[32m";
43
- var YELLOW = "\x1B[33m";
44
- var DIM = "\x1B[2m";
45
- var RESET = "\x1B[0m";
46
45
  async function signatureHeaders(method, endpoint, payload, signer) {
47
46
  if (signer === void 0) return {};
48
47
  return { ...await signRunnerRequest({ method, url: endpoint, body: new TextEncoder().encode(payload), signer }) };
@@ -298,7 +297,19 @@ function tokenWarning(data) {
298
297
  if (tokens === void 0 || tokens === null || tokens.earnable !== false) return "";
299
298
  const why = typeof tokens.message === "string" ? sanitizeTerminal(tokens.message) : "the gateway named no reason";
300
299
  return `
301
- ${YELLOW}!${RESET} a container host will fail this build: ${why}`;
300
+ ${C.yellow}!${C.reset} a container host will fail this build: ${why}`;
301
+ }
302
+ function itemLabel(data) {
303
+ return data.number != null ? `item #${data.number}` : `item ${sanitizeTerminal(String(data.workItemId))}`;
304
+ }
305
+ function issueLabel(subject) {
306
+ if ("issue" in subject) return `issue ${sanitizeTerminal(subject.repository)}#${subject.issue}`;
307
+ return `issue ${sanitizeTerminal(subject.key)}`;
308
+ }
309
+ function itemPageUrl(home, cwd, appId, workItemId) {
310
+ const connection = readRepoConnection(cwd);
311
+ if (connection === void 0 || connection.appId !== appId || typeof workItemId !== "string" || workItemId === "") return void 0;
312
+ return `${workPageUrl(home, connection.organization.name, connection.factory.name)}/${encodeURIComponent(workItemId)}`;
302
313
  }
303
314
  async function runWorkBuild(opts) {
304
315
  const cwd = opts.cwd ?? process.cwd();
@@ -326,7 +337,7 @@ async function runWorkBuild(opts) {
326
337
  const label = data2.number != null ? `#${data2.number}` : String(data2.workItemId);
327
338
  const launch = data2.number != null ? `OUTERLAYER_WORK=${data2.number} claude` : null;
328
339
  const branch = typeof data2.branch === "string" && data2.branch !== "" ? data2.branch : null;
329
- const output2 = opts.json ? JSON.stringify({ ...data2, ...launch !== null ? { launchCommand: launch } : {} }) : `${GREEN}\u2713${RESET} on Work for you to build ${DIM}\xB7${RESET} ${label} ${DIM}\xB7${RESET} no host will take it` + (branch !== null ? `
340
+ const output2 = opts.json ? JSON.stringify({ ...data2, ...launch !== null ? { launchCommand: launch } : {} }) : `${C.green}\u2713${C.reset} on Work for you to build ${C.dim}\xB7${C.reset} ${label} ${C.dim}\xB7${C.reset} no host will take it` + (branch !== null ? `
330
341
  branch: ${branch}` : "") + (launch !== null ? `
331
342
  start your session with: ${launch}` : "");
332
343
  if (!opts.quiet) process.stdout.write(output2 + "\n");
@@ -338,7 +349,9 @@ async function runWorkBuild(opts) {
338
349
  ...facts
339
350
  };
340
351
  const { data } = await postJsonWithRetry(url, "/v1/work-items/build", apiKey, appId, body, fetchImpl, retries, sleep);
341
- const output = opts.json ? JSON.stringify(data) : `${GREEN}\u2713${RESET} build requested ${DIM}\xB7${RESET} ${data.number != null ? `#${data.number}` : data.workItemId} ${DIM}\xB7${RESET} by ${data.attestor}` + tokenWarning(data);
352
+ const page = itemPageUrl(home, cwd, appId, data.workItemId);
353
+ const output = opts.json ? JSON.stringify(data) : `${C.green}\u2713${C.reset} build requested ${C.dim}\xB7${C.reset} ${itemLabel(data)}${"subject" in body ? ` (${issueLabel(body.subject)})` : ""} ${C.dim}\xB7${C.reset} by ${data.attestor}` + (page !== void 0 ? `
354
+ ${page}` : "") + tokenWarning(data);
342
355
  if (!opts.quiet) process.stdout.write(output + "\n");
343
356
  return { data, output };
344
357
  }
@@ -347,7 +360,7 @@ async function runWorkLinkSession(opts) {
347
360
  return await linkSession(opts);
348
361
  } catch (err) {
349
362
  if (opts.logFailures) {
350
- const { logHookError } = await import('./hook-fast-HLESEJAL.js');
363
+ const { logHookError } = await import('./hook-fast-PXWKQPN6.js');
351
364
  const reason = err instanceof Error ? err.message : String(err);
352
365
  logHookError(opts.home ?? homeFromEnv(opts.env ?? process.env), new Error(`work link-session #${opts.number} failed: ${reason}`));
353
366
  }
@@ -387,7 +400,7 @@ async function linkSession(opts) {
387
400
  }
388
401
  const heldBy = typeof data.heldBy === "string" ? data.heldBy : void 0;
389
402
  const linked = data.linked === true;
390
- const output = opts.json ? JSON.stringify(data) : opts.ended ? linked ? `${GREEN}\u2713${RESET} ended ${DIM}\xB7${RESET} session ${sessionId} ${DIM}\xB7${RESET} #${number}` : `${DIM}\xB7${RESET} session ${sessionId} was not linked to #${number}` : heldBy ? `${DIM}\xB7${RESET} session ${sessionId} linked to #${number}, held by ${sanitizeTerminal(heldBy)} \u2014 no lease taken` : `${GREEN}\u2713${RESET} linked ${DIM}\xB7${RESET} session ${sessionId} ${DIM}\xB7${RESET} #${number}`;
403
+ const output = opts.json ? JSON.stringify(data) : opts.ended ? linked ? `${C.green}\u2713${C.reset} ended ${C.dim}\xB7${C.reset} session ${sessionId} ${C.dim}\xB7${C.reset} #${number}` : `${C.dim}\xB7${C.reset} session ${sessionId} was not linked to #${number}` : heldBy ? `${C.dim}\xB7${C.reset} session ${sessionId} linked to #${number}, held by ${sanitizeTerminal(heldBy)} \u2014 no lease taken` : `${C.green}\u2713${C.reset} linked ${C.dim}\xB7${C.reset} session ${sessionId} ${C.dim}\xB7${C.reset} #${number}`;
391
404
  if (!opts.quiet) process.stdout.write(output + "\n");
392
405
  return { data, output };
393
406
  }
@@ -411,7 +424,7 @@ async function runWorkRemove(opts) {
411
424
  { reason: opts.reason, ...environmentFacts({ cwd, env, home }) },
412
425
  fetchImpl
413
426
  );
414
- const output2 = opts.json ? JSON.stringify(data2) : `${GREEN}\u2713${RESET} removed ${DIM}\xB7${RESET} ${data2.workItemId} ${DIM}\xB7${RESET} withdrawn ${data2.itemWithdrawn}`;
427
+ const output2 = opts.json ? JSON.stringify(data2) : `${C.green}\u2713${C.reset} removed ${C.dim}\xB7${C.reset} ${data2.workItemId} ${C.dim}\xB7${C.reset} withdrawn ${data2.itemWithdrawn}`;
415
428
  if (!opts.quiet) process.stdout.write(output2 + "\n");
416
429
  return { data: data2, output: output2 };
417
430
  }
@@ -421,7 +434,7 @@ async function runWorkRemove(opts) {
421
434
  const item = await findLiveItem(creds, repository, subject, fetchImpl);
422
435
  if (!item) {
423
436
  const data2 = { workItemId: null, removed: true, itemWithdrawn: false, noLiveAddition: true };
424
- const output2 = opts.json ? JSON.stringify(data2) : `${GREEN}\u2713${RESET} nothing to remove ${DIM}\xB7${RESET} no live addition on ${repository}#${number}`;
437
+ const output2 = opts.json ? JSON.stringify(data2) : `${C.green}\u2713${C.reset} nothing to remove ${C.dim}\xB7${C.reset} no live addition on ${repository}#${number}`;
425
438
  if (!opts.quiet) process.stdout.write(output2 + "\n");
426
439
  return { data: data2, output: output2 };
427
440
  }
@@ -433,7 +446,7 @@ async function runWorkRemove(opts) {
433
446
  { reason: opts.reason, ...environmentFacts({ cwd, env, home }) },
434
447
  fetchImpl
435
448
  );
436
- const output = opts.json ? JSON.stringify(data) : `${GREEN}\u2713${RESET} removed ${DIM}\xB7${RESET} ${data.workItemId} ${DIM}\xB7${RESET} withdrawn ${data.itemWithdrawn}`;
449
+ const output = opts.json ? JSON.stringify(data) : `${C.green}\u2713${C.reset} removed ${C.dim}\xB7${C.reset} ${data.workItemId} ${C.dim}\xB7${C.reset} withdrawn ${data.itemWithdrawn}`;
437
450
  if (!opts.quiet) process.stdout.write(output + "\n");
438
451
  return { data, output };
439
452
  }
@@ -496,10 +509,10 @@ async function runWorkList(opts) {
496
509
  const claimSuffix = (claim) => {
497
510
  if (!claim) return "";
498
511
  const holder = claim.holderKind === "session" ? `${claim.memberName || "a member"} (local session` : `${sanitizeTerminal(claim.host)} (${claim.kind}`;
499
- return ` ${DIM}\xB7${RESET} claimed by ${holder}, since ${claim.createdAt}, until ${claim.expiresAt})`;
512
+ return ` ${C.dim}\xB7${C.reset} claimed by ${holder}, since ${claim.createdAt}, until ${claim.expiresAt})`;
500
513
  };
501
514
  const output = opts.json ? JSON.stringify(data) : items.length === 0 ? "no live work items" : items.map(
502
- (i) => `${i.trackerKey} ${DIM}\xB7${RESET} ${i.stage} ${DIM}\xB7${RESET} ${i.section} ${DIM}\xB7${RESET} ${i.title}${claimSuffix(i.claim)}`
515
+ (i) => `${i.trackerKey} ${C.dim}\xB7${C.reset} ${i.stage} ${C.dim}\xB7${C.reset} ${i.section} ${C.dim}\xB7${C.reset} ${i.title}${claimSuffix(i.claim)}`
503
516
  ).join("\n");
504
517
  if (!opts.quiet) process.stdout.write(output + "\n");
505
518
  return { data, output };
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { MIN_ENGINE_MAJOR } from './chunk-SKHN72JO.js';
3
+ import { MIN_ENGINE_MAJOR } from './chunk-MZN7AQOB.js';
4
4
  import { firecrackerArch, MICROVM_ARCHES, guestAssetsPinned } from './chunk-CX22S5BA.js';
5
5
  import { spawnSync } from 'child_process';
6
6
  import { existsSync, accessSync, constants, statSync, readFileSync } from 'fs';
@@ -62,8 +62,9 @@ function addMcpEntryIfAbsent(repoRoot, name, entry) {
62
62
  `);
63
63
  return { path: relPath, added: true };
64
64
  }
65
+ var INIT_STDIO_ENTRY = { type: "stdio", command: "npx", args: ["-y", "@outerlayer/cli", "mcp", "serve"] };
65
66
  function addStdioMcpEntryIfAbsent(repoRoot, name = "outerlayer") {
66
- return addMcpEntryIfAbsent(repoRoot, name, buildStdioServerEntry(DEFAULT_MCP_COMMAND, void 0, void 0));
67
+ return addMcpEntryIfAbsent(repoRoot, name, { ...INIT_STDIO_ENTRY, args: [...INIT_STDIO_ENTRY.args] });
67
68
  }
68
69
  var DOCS_MCP_SERVER_NAME = "outerlayer-docs";
69
70
  var DOCS_MCP_URL = "https://docs.outerlayer.ai/mcp";
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { builtinKind } from './chunk-XR3BJN33.js';
3
+ import { builtinKind } from './chunk-22RMZBGW.js';
4
4
  import { parseSize } from './chunk-7RQ73DLO.js';
5
5
  import { runnerDir } from './chunk-ZM2IMMYN.js';
6
6
  import { dirname } from 'path';
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-ZM2IMMYN.js';
4
+ import { existsSync, readFileSync, mkdirSync, chmodSync, writeFileSync } from 'fs';
5
+ import { dirname, join } from 'path';
6
+
7
+ createRequire(import.meta.url);
8
+ var ITEM_KEY_FILE = "item-key";
9
+ function itemKeyPath(jobPath) {
10
+ return join(dirname(jobPath), ITEM_KEY_FILE);
11
+ }
12
+ function withItemKey(jobPath, job) {
13
+ let key;
14
+ try {
15
+ key = readFileSync(itemKeyPath(jobPath), "utf8").trim();
16
+ } catch {
17
+ return job;
18
+ }
19
+ return key === "" ? job : { ...job, itemKey: key };
20
+ }
21
+ function writeOwnerOnly(path, content) {
22
+ if (existsSync(path)) chmodSync(path, RUNNER_FILE_MODE);
23
+ writeFileSync(path, content, { mode: RUNNER_FILE_MODE });
24
+ }
25
+ function readJobFile(path) {
26
+ if (!existsSync(path)) return null;
27
+ try {
28
+ return withItemKey(path, JSON.parse(readFileSync(path, "utf8")));
29
+ } catch {
30
+ return null;
31
+ }
32
+ }
33
+ function readJobFileChecked(path) {
34
+ if (!existsSync(path)) return { kind: "missing" };
35
+ try {
36
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
37
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) return { kind: "unreadable" };
38
+ return { kind: "ok", job: withItemKey(path, parsed) };
39
+ } catch {
40
+ return { kind: "unreadable" };
41
+ }
42
+ }
43
+ function writeJobFile(path, job) {
44
+ mkdirSync(dirname(path), { recursive: true, mode: RUNNER_DIR_MODE });
45
+ const { itemKey, ...rest } = job;
46
+ if (itemKey !== void 0) writeOwnerOnly(itemKeyPath(path), itemKey);
47
+ writeOwnerOnly(path, JSON.stringify(rest, null, 2));
48
+ }
49
+
50
+ export { readJobFile, readJobFileChecked, writeJobFile };
@@ -634,7 +634,7 @@ async function runHookFast(event, home = homeFromEnv(), read = readStdin, env =
634
634
  recordHookErrorsSeen(home, hookErrorsBytes);
635
635
  if (contextPossiblyGoverned(sessionCwd, home)) {
636
636
  try {
637
- const { materializeContext: materialize } = await import('./context-materialize-45OVRRK2.js');
637
+ const { materializeContext: materialize } = await import('./context-materialize-7S6NLLRO.js');
638
638
  const sessionId = typeof payload.session_id === "string" ? payload.session_id : "unknown";
639
639
  const result = await materialize({ cwd: sessionCwd, sessionId, home });
640
640
  materializeMessage = result.message;
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LEASE_SECONDS, releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, microVmCommandLine, runCommand, execCommandLine, startSender, startHostServices, finishJob, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, ALREADY_RELEASED } from './chunk-DVT73QJO.js';
3
+ import { LEASE_SECONDS, releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, microVmCommandLine, runCommand, execCommandLine, startSender, startHostServices, finishJob, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, ALREADY_RELEASED } from './chunk-C6IV5BV7.js';
4
4
  import { writePendingUpdate } from './chunk-O765JR4W.js';
5
5
  import { readHousekeepingRecord, writeHousekeepingRecord } from './chunk-UGP76IZ5.js';
6
6
  import { decideInstalledSwitch } from './chunk-3JVYMD4G.js';
7
- import { writeJobFile, readJobFile, readJobFileChecked } from './chunk-T6OIJQRT.js';
8
- import { compareVersions, satisfiesRange } from './chunk-I2UOAV7X.js';
9
7
  import { fetchVersionMeta, npmVersion, npmSupportsProvenance, fetchTarballDigest, fetchProvenance, installVersion, auditSignatures } from './chunk-YETTWTAY.js';
8
+ import { writeJobFile, readJobFile, readJobFileChecked } from './chunk-RMWLBUCJ.js';
9
+ import { compareVersions, satisfiesRange } from './chunk-I2UOAV7X.js';
10
10
  import { RUNNER_PROTOCOL } from './chunk-FI5UYJMQ.js';
11
- import { placeholderQueues, placeholderProblem } from './chunk-PDRYXERC.js';
11
+ import { placeholderQueues, placeholderProblem } from './chunk-TOPDNXHZ.js';
12
12
  import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
13
13
  import { writeMarker, readMarker, currentVersion, removeMarker, entryIn, versionDir, startedThroughCurrent, switchCurrent, cleanVersions, isInLayout, stagingDir } from './chunk-TI7B7UEO.js';
14
14
  import { RepoFilter } from './chunk-TBT347UY.js';
15
- import { describeCallFailure, retrySend, shortClaim, relativeToRunner, formatDuration, provisionContainer, lifecycleSteps, lifecycleFailureReason, prepareBranch, containerCommandLine, BuildTokens, classifyRefusal, refusalCode, measureDisk, createRunnerLog, setUpRunnerCgroup, parseCpuList, ensureTunnel, keepGhConfigCurrent, createContainerRuntime, formatClock } from './chunk-SKHN72JO.js';
16
- import { checkFit } from './chunk-2KLBKHT4.js';
15
+ import { describeCallFailure, retrySend, shortClaim, relativeToRunner, formatDuration, provisionContainer, lifecycleSteps, lifecycleFailureReason, prepareBranch, containerCommandLine, BuildTokens, classifyRefusal, refusalCode, measureDisk, createRunnerLog, setUpRunnerCgroup, parseCpuList, ensureTunnel, keepGhConfigCurrent, createContainerRuntime, formatClock } from './chunk-MZN7AQOB.js';
16
+ import { checkFit } from './chunk-RLYZLUQ7.js';
17
17
  import { startTimeOf, claimPidFile, readPidFile, isSameProcess, releasePidFile } from './chunk-N5FOE5PS.js';
18
- import { spawnRun } from './chunk-GGMRZPEA.js';
19
- import { builderName, runnerLabelValue, ensureFailureCount, builderSpec, ensureBuilder, BUILD_LABEL, RUNNER_LABEL } from './chunk-QEESCZ26.js';
20
- import { isSignatureRefusal, WorkCommandError, getJson, postJson } from './chunk-6FH2AHJY.js';
21
- import { isBuiltinContainer, isBuiltinVm, isBuiltinProcess, loadRunnerConfig, checkHooks, builtinKind, DEFAULT_UPDATE_MAX_WAIT_HOURS } from './chunk-XR3BJN33.js';
18
+ import { spawnRun } from './chunk-3KTA5UU2.js';
19
+ import { builderName, runnerLabelValue, ensureFailureCount, builderSpec, ensureBuilder, BUILD_LABEL, RUNNER_LABEL } from './chunk-NX57IBNK.js';
20
+ import { isSignatureRefusal, WorkCommandError, getJson, postJson } from './chunk-P4MM66C6.js';
21
+ import { isBuiltinContainer, isBuiltinVm, isBuiltinProcess, loadRunnerConfig, checkHooks, builtinKind, DEFAULT_UPDATE_MAX_WAIT_HOURS } from './chunk-22RMZBGW.js';
22
22
  import { exceedsDisk } from './chunk-7RQ73DLO.js';
23
23
  import { parseClaimedRepositories, repositoriesOf, primaryOf, sharedUserEnvironment, JOB_MOUNT, claudeCredential } from './chunk-4Q7OMKAT.js';
24
24
  import { parseClaimIdentity } from './chunk-BYT5O5RV.js';
@@ -1315,7 +1315,7 @@ var CLAIM_REFUSAL_CODES = new Set(
1315
1315
  "pull_request_from_fork pull_request_on_default_branch pull_request_ambiguous pull_request_repository_not_connected branch_claimed_elsewhere".split(" ")
1316
1316
  );
1317
1317
  async function tryClaimAndStart(state, item, queue) {
1318
- const { postJson: postJson2 } = await import('./work-cmd-JPM37MLF.js');
1318
+ const { postJson: postJson2 } = await import('./work-cmd-X7NMJDFL.js');
1319
1319
  const log = logOf(state);
1320
1320
  const hostKey = await loadHostKey(state.config.configPath);
1321
1321
  const claim = await retrySend(
@@ -2072,7 +2072,7 @@ async function start(configPath, deps = { fetchImpl: fetch }) {
2072
2072
  const outcome = await onStartUnderMarker({
2073
2073
  configPath,
2074
2074
  own: ownVersionOf(deps),
2075
- check: update.check ? () => update.check(configPath) : async () => (await import('./check-RJOJU2WA.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl }),
2075
+ check: update.check ? () => update.check(configPath) : async () => (await import('./check-63IDCEEV.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl }),
2076
2076
  now: () => (deps.now ?? (() => /* @__PURE__ */ new Date()))().getTime(),
2077
2077
  log
2078
2078
  });
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { DEFAULT_UNIT_NAME } from './chunk-2KLBKHT4.js';
3
+ import { DEFAULT_UNIT_NAME } from './chunk-RLYZLUQ7.js';
4
4
  import { parseRunnerEnv } from './chunk-6MZSX4M7.js';
5
5
  import { RUNNER_FILE_MODE } from './chunk-ZM2IMMYN.js';
6
6
  import { existsSync, readFileSync, writeFileSync, renameSync, rmSync } from 'fs';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { splitRawFile } from './chunk-AHZQBGD2.js';
3
+ import { splitRawFile } from './chunk-2M63GG56.js';
4
4
  import { resolvePackageVersion } from './chunk-RA3O54FC.js';
5
5
  import { existsSync, readFileSync, mkdirSync, writeFileSync, readdirSync } from 'fs';
6
6
  import { join, dirname } from 'path';
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { isPlaceholderCommand } from './chunk-GEBQXUFY.js';
4
- import { describeCallFailure } from './chunk-SKHN72JO.js';
5
- import { WorkCommandError, getJson } from './chunk-6FH2AHJY.js';
6
- import { sanitizeTerminal } from './chunk-JOXYKGUV.js';
7
- import { builtinKind } from './chunk-XR3BJN33.js';
3
+ import { isPlaceholderCommand } from './chunk-MJXXRX4M.js';
4
+ import { describeCallFailure } from './chunk-MZN7AQOB.js';
5
+ import { WorkCommandError, getJson } from './chunk-P4MM66C6.js';
6
+ import { sanitizeTerminal } from './chunk-CNFVHDHG.js';
7
+ import { builtinKind } from './chunk-22RMZBGW.js';
8
8
  import { CLAUDE_CREDENTIAL_VARIABLES, claudeCredential } from './chunk-4Q7OMKAT.js';
9
9
  import { signerFor } from './chunk-V7NIVOFD.js';
10
10
 
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LiveUploader } from './chunk-27Y7AX2O.js';
4
- import { CaptureDaemon } from './chunk-3ZPYPFNM.js';
3
+ import { LiveUploader } from './chunk-3D4OYFCD.js';
4
+ import { CaptureDaemon } from './chunk-JXYVA45C.js';
5
5
  import { parseWorkItemEnv } from './chunk-GQD22KKN.js';
6
- import { spoolDir } from './chunk-YEQL54G5.js';
6
+ import { spoolDir } from './chunk-SFFHGX3G.js';
7
7
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
8
8
  import { mkdirSync, writeFileSync, rmSync } from 'fs';
9
9
  import { join } from 'path';