@outerlayer/cli 0.5.0 → 0.6.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 (70) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +9 -0
  3. package/dist/{agent-setup-IFH3FB5X.js → agent-setup-USZ2SAXC.js} +2 -2
  4. package/dist/build-info.json +1 -1
  5. package/dist/{check-AXCXDYO2.js → check-CCVPBN7A.js} +26 -14
  6. package/dist/{chunk-5Y3QQRUH.js → chunk-3DD6AOWC.js} +37 -0
  7. package/dist/{chunk-WOBNRVQT.js → chunk-3DEVYTNQ.js} +1 -1
  8. package/dist/{chunk-L24G4PLP.js → chunk-43J3M6KB.js} +486 -21
  9. package/dist/{chunk-FC7TMRNA.js → chunk-4NLKY4WR.js} +2 -2
  10. package/dist/{lima-XN65D7GN.js → chunk-77MM5RYD.js} +0 -1
  11. package/dist/{chunk-D2KWEAN6.js → chunk-7DBI6SNT.js} +1 -1
  12. package/dist/{chunk-QDQEUVUF.js → chunk-AIW6GLET.js} +1 -1
  13. package/dist/{chunk-EX6M5JPR.js → chunk-ANK2B36Y.js} +131 -15
  14. package/dist/{chunk-RMAZ2NWA.js → chunk-BNMCXPG7.js} +14 -2
  15. package/dist/{chunk-UFFXNXLQ.js → chunk-FA2BOX4O.js} +31 -29
  16. package/dist/chunk-FBTE2A2X.js +38 -0
  17. package/dist/{chunk-DVDEBNQJ.js → chunk-GQD22KKN.js} +17 -6
  18. package/dist/{chunk-BCJNHMZT.js → chunk-HHJDN6AU.js} +18 -3
  19. package/dist/{chunk-JLDZTG3A.js → chunk-IASWYRVG.js} +1 -1
  20. package/dist/{install-cmd-7WXOIFDO.js → chunk-JWOQNNN2.js} +0 -1
  21. package/dist/{chunk-ZLB7GCTY.js → chunk-MIGEDH5P.js} +19 -11
  22. package/dist/{chunk-OHFDWLJP.js → chunk-MXB5VB4Y.js} +18 -6
  23. package/dist/chunk-NQXFAGHU.js +211 -0
  24. package/dist/chunk-OUUINEYB.js +27 -0
  25. package/dist/{chunk-OR6AEEDO.js → chunk-PMAMOSTP.js} +3 -3
  26. package/dist/{chunk-RJ467PDQ.js → chunk-RBOMWNOG.js} +1 -1
  27. package/dist/{chunk-4NMBDRBS.js → chunk-RZSF5B46.js} +289 -130
  28. package/dist/chunk-T6OIJQRT.js +31 -0
  29. package/dist/chunk-UGP76IZ5.js +34 -0
  30. package/dist/{chunk-EGABNHZG.js → chunk-UMFWVGJO.js} +148 -18
  31. package/dist/{chunk-RWOTHXYE.js → chunk-VMJ3MMBX.js} +206 -71
  32. package/dist/chunk-YYYRBYWG.js +32 -0
  33. package/dist/chunk-ZILGTTY6.js +75 -0
  34. package/dist/{cli-NNWPFP5S.js → cli-7WCNPBYC.js} +147 -69
  35. package/dist/command-ARFK3OYF.js +162 -0
  36. package/dist/{config-XVJYZ4IQ.js → config-HL2AIR3K.js} +1 -1
  37. package/dist/{connect-cmd-OJBFHZWP.js → connect-cmd-PCESZLTR.js} +4 -4
  38. package/dist/{context-adopt-UMA4O5NY.js → context-adopt-G5JAELE7.js} +2 -2
  39. package/dist/{context-materialize-G2FUFC72.js → context-materialize-3HLPZAF6.js} +2 -2
  40. package/dist/{dist-WDV7U7UJ.js → dist-RDLP4GGJ.js} +1 -1
  41. package/dist/{doctor-J3GIMR7K.js → doctor-VOMYOHQU.js} +47 -13
  42. package/dist/{emit-artifact-cmd-FDWYKURA.js → emit-artifact-cmd-TBF46VXZ.js} +6 -7
  43. package/dist/{emit-criteria-cmd-OCXHLK34.js → emit-criteria-cmd-3427XKFW.js} +3 -3
  44. package/dist/{emit-finding-cmd-POW7PKIA.js → emit-finding-cmd-GSI75K36.js} +3 -3
  45. package/dist/{emit-result-cmd-ID35SH53.js → emit-result-cmd-3PRQKB55.js} +6 -7
  46. package/dist/{hook-fast-EYENPK6F.js → hook-fast-NJBBZQ5Q.js} +1 -1
  47. package/dist/index.js +3 -2
  48. package/dist/{init-CZX7ZDWF.js → init-OHYFIKZD.js} +27 -56
  49. package/dist/{init-3ZQLFPNC.js → init-WVR4BZQ4.js} +8 -8
  50. package/dist/{init-cmd-W5NOLQPX.js → init-cmd-HMFNIFPI.js} +7 -7
  51. package/dist/inspect-XAUSB7L3.js +63 -0
  52. package/dist/install-DSUZE2TJ.js +13 -0
  53. package/dist/install-cmd-453C7IZT.js +8 -0
  54. package/dist/lima-7NPCNGWT.js +6 -0
  55. package/dist/{loop-VGM772I7.js → loop-UAJB34KA.js} +26 -11
  56. package/dist/{machine-5WEJA36F.js → machine-2JOWGRSZ.js} +7 -7
  57. package/dist/record-C43U4PKS.js +7 -0
  58. package/dist/session-sender-ED26V45B.js +28 -0
  59. package/dist/{status-KBDVUYQ3.js → status-6WNXX2O7.js} +42 -10
  60. package/dist/{sync-cmd-SWQ5KLPL.js → sync-cmd-YONVGUYS.js} +6 -7
  61. package/dist/{watch-3YW6Z3DQ.js → watch-HHKAF26L.js} +6 -7
  62. package/dist/{work-claim-cmd-BQPPURBW.js → work-claim-cmd-LXBZTMJA.js} +6 -6
  63. package/dist/{work-cmd-NUR4CAG6.js → work-cmd-OVNF44FY.js} +3 -3
  64. package/dist/{work-comment-cmd-6TTTYGHM.js → work-comment-cmd-6DGQNTAH.js} +3 -3
  65. package/dist/{work-launch-YI4CJDAP.js → work-launch-R5HTAP6X.js} +1 -1
  66. package/dist/{work-open-pr-cmd-KZ7QQFLD.js → work-open-pr-cmd-FCZHFHZS.js} +4 -4
  67. package/dist/{work-pr-cmd-QNUBE6IQ.js → work-pr-cmd-QJJVHZDC.js} +2 -2
  68. package/package.json +2 -1
  69. package/dist/chunk-ZOC7JSYC.js +0 -83
  70. package/dist/{chunk-XDDW4FRS.js → chunk-OIRNH6UO.js} +1 -1
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, readConfigObject, runRunnerInit } from './chunk-FC7TMRNA.js';
4
- import './chunk-RJ467PDQ.js';
5
- import './chunk-4NMBDRBS.js';
3
+ export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, readConfigObject, runRunnerInit } from './chunk-4NLKY4WR.js';
4
+ import './chunk-RBOMWNOG.js';
5
+ import './chunk-RZSF5B46.js';
6
6
  import './chunk-Z62HNKEJ.js';
7
7
  import './chunk-N5FOE5PS.js';
8
8
  import './chunk-OGFGZQA3.js';
@@ -10,18 +10,18 @@ import './chunk-774HEQL6.js';
10
10
  import './chunk-QOZKPLVJ.js';
11
11
  import './chunk-W4SQCOZU.js';
12
12
  import './chunk-B2G7JHHB.js';
13
- import './chunk-RMAZ2NWA.js';
13
+ import './chunk-BNMCXPG7.js';
14
14
  import './chunk-BFESLKPP.js';
15
- import './chunk-WOBNRVQT.js';
16
- import './chunk-EX6M5JPR.js';
15
+ import './chunk-3DEVYTNQ.js';
16
+ import './chunk-ANK2B36Y.js';
17
17
  import './chunk-F6GFZXZ3.js';
18
18
  import './chunk-AUFG23AA.js';
19
19
  import './chunk-WZBHBH3J.js';
20
- import './chunk-XDDW4FRS.js';
20
+ import './chunk-OIRNH6UO.js';
21
+ import './chunk-ZJSNLVCE.js';
21
22
  import './chunk-WIOZAJ2W.js';
22
23
  import './chunk-WO2BXCTQ.js';
23
24
  import './chunk-EMY4I27X.js';
24
- import './chunk-ZJSNLVCE.js';
25
25
  import './chunk-BCLJSQCV.js';
26
26
  import './chunk-BOLTI6LR.js';
27
27
  import './chunk-EABW6AJQ.js';
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { summarizeChecks, summaryText, renderDoctorText } from './chunk-ZLB7GCTY.js';
4
- import { runConnect } from './chunk-OR6AEEDO.js';
5
- import './chunk-D2KWEAN6.js';
3
+ import { summarizeChecks, summaryText, renderDoctorText } from './chunk-MIGEDH5P.js';
4
+ import { runConnect } from './chunk-PMAMOSTP.js';
5
+ import './chunk-7DBI6SNT.js';
6
6
  import './chunk-F47JBIAW.js';
7
7
  import './chunk-BKO6JEZI.js';
8
- import './chunk-RMAZ2NWA.js';
8
+ import './chunk-BNMCXPG7.js';
9
9
  import './chunk-BFESLKPP.js';
10
- import './chunk-WOBNRVQT.js';
11
- import './chunk-EX6M5JPR.js';
10
+ import './chunk-3DEVYTNQ.js';
11
+ import './chunk-ANK2B36Y.js';
12
12
  import './chunk-USO2DKBD.js';
13
13
  import './chunk-N6LURUEF.js';
14
14
  import { C } from './chunk-YRYMNBGQ.js';
@@ -21,7 +21,7 @@ import './chunk-BOLTI6LR.js';
21
21
  import './chunk-EABW6AJQ.js';
22
22
  import './chunk-M5POMKKW.js';
23
23
  import './chunk-ZM2IMMYN.js';
24
- import './chunk-UFFXNXLQ.js';
24
+ import './chunk-FA2BOX4O.js';
25
25
  import './chunk-XCCLFVXM.js';
26
26
  import './chunk-BJ3KTMDH.js';
27
27
  import './chunk-VNVZDWO3.js';
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ import './chunk-Z5GEFMRW.js';
4
+ import { spawnSync } from 'child_process';
5
+ import { statSync, readFileSync } from 'fs';
6
+ import { join } from 'path';
7
+
8
+ createRequire(import.meta.url);
9
+ var CREDENTIAL_VARIABLES = ["CLAUDE_CODE_OAUTH_TOKEN", "ANTHROPIC_API_KEY"];
10
+ function property(shown, name) {
11
+ return new RegExp(`^${name}=(.*)$`, "m").exec(shown)?.[1]?.trim();
12
+ }
13
+ function holdsGroup(status, gid) {
14
+ const primary = /^Gid:\s+(\d+)/m.exec(status)?.[1];
15
+ const supplementary = /^Groups:[ \t]*(.*)$/m.exec(status)?.[1]?.trim().split(/\s+/).filter((g) => g !== "") ?? [];
16
+ return [primary, ...supplementary].some((g) => g !== void 0 && Number(g) === gid);
17
+ }
18
+ function credentialNames(env) {
19
+ const set = new Set(
20
+ (env ?? "").split("\n").map((line) => /^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)=(.+)$/.exec(line)).flatMap((m) => m === null || m[2].trim() === "" ? [] : [m[1]])
21
+ );
22
+ return CREDENTIAL_VARIABLES.filter((name) => set.has(name));
23
+ }
24
+ function inspectService(unit, configDir, probes) {
25
+ const shown = probes.show(unit);
26
+ if (shown === void 0 || property(shown, "LoadState") !== "loaded") return void 0;
27
+ const pid = Number(property(shown, "MainPID") ?? "0");
28
+ const mainPid = Number.isInteger(pid) && pid > 0 ? pid : void 0;
29
+ const delegate = property(shown, "Delegate");
30
+ const status = mainPid === void 0 ? void 0 : probes.readFile(`/proc/${mainPid}/status`);
31
+ const kvm = probes.kvmGid();
32
+ return {
33
+ unit,
34
+ mainPid,
35
+ delegate: delegate === void 0 ? void 0 : delegate !== "no",
36
+ hasKvmGroup: status === void 0 || kvm === void 0 ? void 0 : holdsGroup(status, kvm),
37
+ credentialVariables: credentialNames(probes.readFile(join(configDir, "runner.env")))
38
+ };
39
+ }
40
+ function realInspectProbes() {
41
+ return {
42
+ show: (unit) => {
43
+ const result = spawnSync("systemctl", ["show", "--property=LoadState,MainPID,Delegate", unit], { encoding: "utf8", timeout: 1e4 });
44
+ return result.status === 0 ? result.stdout : void 0;
45
+ },
46
+ readFile: (path) => {
47
+ try {
48
+ return readFileSync(path, "utf8");
49
+ } catch {
50
+ return void 0;
51
+ }
52
+ },
53
+ kvmGid: () => {
54
+ try {
55
+ return statSync("/dev/kvm").gid;
56
+ } catch {
57
+ return void 0;
58
+ }
59
+ }
60
+ };
61
+ }
62
+
63
+ export { inspectService, realInspectProbes };
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { DEFAULT_UNIT_NAME, installService, uninstallService, unitPathFor } from './chunk-NQXFAGHU.js';
4
+ import './chunk-FBTE2A2X.js';
5
+ import './chunk-OUUINEYB.js';
6
+ import './chunk-3DD6AOWC.js';
7
+ import './chunk-F6GFZXZ3.js';
8
+ import './chunk-AUFG23AA.js';
9
+ import './chunk-ZM2IMMYN.js';
10
+ import './chunk-VNVZDWO3.js';
11
+ import './chunk-Z5GEFMRW.js';
12
+
13
+ createRequire(import.meta.url);
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { RunnerInstallError, runRunnerInstall } from './chunk-JWOQNNN2.js';
4
+ import './chunk-YYYXRJUW.js';
5
+ import './chunk-ZM2IMMYN.js';
6
+ import './chunk-Z5GEFMRW.js';
7
+
8
+ createRequire(import.meta.url);
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { realLima } from './chunk-77MM5RYD.js';
4
+ import './chunk-Z5GEFMRW.js';
5
+
6
+ createRequire(import.meta.url);
@@ -1,14 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-L24G4PLP.js';
4
- import './chunk-RWOTHXYE.js';
5
- import './chunk-QDQEUVUF.js';
3
+ export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-43J3M6KB.js';
6
4
  import './chunk-ABIWDUMS.js';
7
5
  import './chunk-YYYXRJUW.js';
6
+ import './chunk-VMJ3MMBX.js';
7
+ import './chunk-T6OIJQRT.js';
8
+ import './chunk-AIW6GLET.js';
9
+ import './chunk-UGP76IZ5.js';
10
+ import './chunk-ZILGTTY6.js';
8
11
  import './chunk-CBPPJSAR.js';
9
- import './chunk-ZOC7JSYC.js';
12
+ import './chunk-UMFWVGJO.js';
13
+ import './chunk-HHJDN6AU.js';
14
+ import './chunk-MXB5VB4Y.js';
15
+ import './chunk-YYYRBYWG.js';
10
16
  import './chunk-TBT347UY.js';
11
- import './chunk-4NMBDRBS.js';
17
+ import './chunk-OUUINEYB.js';
18
+ import './chunk-4NLKY4WR.js';
19
+ import './chunk-RBOMWNOG.js';
20
+ import './chunk-RZSF5B46.js';
12
21
  import './chunk-Z62HNKEJ.js';
13
22
  import './chunk-N5FOE5PS.js';
14
23
  import './chunk-OGFGZQA3.js';
@@ -16,25 +25,31 @@ import './chunk-774HEQL6.js';
16
25
  import './chunk-QOZKPLVJ.js';
17
26
  import './chunk-W4SQCOZU.js';
18
27
  import './chunk-B2G7JHHB.js';
19
- import './chunk-RMAZ2NWA.js';
28
+ import './chunk-F7CU5ABH.js';
29
+ import './chunk-BKO6JEZI.js';
30
+ import './chunk-BNMCXPG7.js';
20
31
  import './chunk-BFESLKPP.js';
21
- import './chunk-WOBNRVQT.js';
22
- import './chunk-EX6M5JPR.js';
23
- import './chunk-5Y3QQRUH.js';
32
+ import './chunk-3DEVYTNQ.js';
33
+ import './chunk-ANK2B36Y.js';
34
+ import './chunk-YRYMNBGQ.js';
35
+ import './chunk-3DD6AOWC.js';
24
36
  import './chunk-F6GFZXZ3.js';
25
37
  import './chunk-AUFG23AA.js';
38
+ import './chunk-GQD22KKN.js';
26
39
  import './chunk-WZBHBH3J.js';
27
- import './chunk-XDDW4FRS.js';
40
+ import './chunk-5QRP3MVS.js';
41
+ import './chunk-OIRNH6UO.js';
42
+ import './chunk-ZJSNLVCE.js';
28
43
  import './chunk-WIOZAJ2W.js';
29
44
  import './chunk-WO2BXCTQ.js';
30
45
  import './chunk-EMY4I27X.js';
31
- import './chunk-ZJSNLVCE.js';
32
46
  import './chunk-BCLJSQCV.js';
33
47
  import './chunk-BOLTI6LR.js';
34
48
  import './chunk-EABW6AJQ.js';
35
49
  import './chunk-RA3O54FC.js';
36
50
  import './chunk-M5POMKKW.js';
37
51
  import './chunk-ZM2IMMYN.js';
52
+ import './chunk-FA2BOX4O.js';
38
53
  import './chunk-XCCLFVXM.js';
39
54
  import './chunk-BJ3KTMDH.js';
40
55
  import './chunk-VNVZDWO3.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-RJ467PDQ.js';
4
- import './chunk-4NMBDRBS.js';
3
+ export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-RBOMWNOG.js';
4
+ import './chunk-RZSF5B46.js';
5
5
  import './chunk-Z62HNKEJ.js';
6
6
  import './chunk-N5FOE5PS.js';
7
7
  import './chunk-OGFGZQA3.js';
@@ -9,18 +9,18 @@ import './chunk-774HEQL6.js';
9
9
  import './chunk-QOZKPLVJ.js';
10
10
  import './chunk-W4SQCOZU.js';
11
11
  import './chunk-B2G7JHHB.js';
12
- import './chunk-RMAZ2NWA.js';
12
+ import './chunk-BNMCXPG7.js';
13
13
  import './chunk-BFESLKPP.js';
14
- import './chunk-WOBNRVQT.js';
15
- import './chunk-EX6M5JPR.js';
14
+ import './chunk-3DEVYTNQ.js';
15
+ import './chunk-ANK2B36Y.js';
16
16
  import './chunk-F6GFZXZ3.js';
17
17
  import './chunk-AUFG23AA.js';
18
18
  import './chunk-WZBHBH3J.js';
19
- import './chunk-XDDW4FRS.js';
19
+ import './chunk-OIRNH6UO.js';
20
+ import './chunk-ZJSNLVCE.js';
20
21
  import './chunk-WIOZAJ2W.js';
21
22
  import './chunk-WO2BXCTQ.js';
22
23
  import './chunk-EMY4I27X.js';
23
- import './chunk-ZJSNLVCE.js';
24
24
  import './chunk-BCLJSQCV.js';
25
25
  import './chunk-BOLTI6LR.js';
26
26
  import './chunk-EABW6AJQ.js';
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { readHousekeepingRecord, writeHousekeepingRecord } from './chunk-UGP76IZ5.js';
4
+ import './chunk-ZM2IMMYN.js';
5
+ import './chunk-Z5GEFMRW.js';
6
+
7
+ createRequire(import.meta.url);
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { runSessionSender, senderPidfile, startSessionSender } from './chunk-ZILGTTY6.js';
4
+ import './chunk-UMFWVGJO.js';
5
+ import './chunk-HHJDN6AU.js';
6
+ import './chunk-TBT347UY.js';
7
+ import './chunk-F7CU5ABH.js';
8
+ import './chunk-BKO6JEZI.js';
9
+ import './chunk-BFESLKPP.js';
10
+ import './chunk-3DEVYTNQ.js';
11
+ import './chunk-ANK2B36Y.js';
12
+ import './chunk-YRYMNBGQ.js';
13
+ import './chunk-GQD22KKN.js';
14
+ import './chunk-WZBHBH3J.js';
15
+ import './chunk-5QRP3MVS.js';
16
+ import './chunk-ZJSNLVCE.js';
17
+ import './chunk-BCLJSQCV.js';
18
+ import './chunk-BOLTI6LR.js';
19
+ import './chunk-EABW6AJQ.js';
20
+ import './chunk-M5POMKKW.js';
21
+ import './chunk-ZM2IMMYN.js';
22
+ import './chunk-FA2BOX4O.js';
23
+ import './chunk-XCCLFVXM.js';
24
+ import './chunk-BJ3KTMDH.js';
25
+ import './chunk-VNVZDWO3.js';
26
+ import './chunk-Z5GEFMRW.js';
27
+
28
+ createRequire(import.meta.url);
@@ -1,9 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LEASE_SECONDS, RENEW_INTERVAL_SECONDS } from './chunk-RWOTHXYE.js';
3
+ import { LEASE_SECONDS, RENEW_INTERVAL_SECONDS } from './chunk-VMJ3MMBX.js';
4
+ import './chunk-T6OIJQRT.js';
5
+ import './chunk-ZILGTTY6.js';
4
6
  import './chunk-CBPPJSAR.js';
5
- import './chunk-ZOC7JSYC.js';
6
- import { formatDuration, formatClock, relativeToRunner } from './chunk-4NMBDRBS.js';
7
+ import './chunk-UMFWVGJO.js';
8
+ import './chunk-HHJDN6AU.js';
9
+ import { formatBytes } from './chunk-YYYRBYWG.js';
10
+ import './chunk-TBT347UY.js';
11
+ import { formatDuration, formatClock, relativeToRunner } from './chunk-RZSF5B46.js';
7
12
  import './chunk-Z62HNKEJ.js';
8
13
  import './chunk-N5FOE5PS.js';
9
14
  import './chunk-OGFGZQA3.js';
@@ -11,25 +16,31 @@ import './chunk-774HEQL6.js';
11
16
  import './chunk-QOZKPLVJ.js';
12
17
  import './chunk-W4SQCOZU.js';
13
18
  import './chunk-B2G7JHHB.js';
14
- import './chunk-RMAZ2NWA.js';
19
+ import './chunk-F7CU5ABH.js';
20
+ import './chunk-BKO6JEZI.js';
21
+ import './chunk-BNMCXPG7.js';
15
22
  import './chunk-BFESLKPP.js';
16
- import './chunk-WOBNRVQT.js';
17
- import './chunk-EX6M5JPR.js';
18
- import './chunk-5Y3QQRUH.js';
23
+ import './chunk-3DEVYTNQ.js';
24
+ import './chunk-ANK2B36Y.js';
25
+ import './chunk-YRYMNBGQ.js';
26
+ import './chunk-3DD6AOWC.js';
19
27
  import './chunk-F6GFZXZ3.js';
20
28
  import './chunk-AUFG23AA.js';
29
+ import './chunk-GQD22KKN.js';
21
30
  import './chunk-WZBHBH3J.js';
22
- import './chunk-XDDW4FRS.js';
31
+ import './chunk-5QRP3MVS.js';
32
+ import './chunk-OIRNH6UO.js';
33
+ import './chunk-ZJSNLVCE.js';
23
34
  import './chunk-WIOZAJ2W.js';
24
35
  import './chunk-WO2BXCTQ.js';
25
36
  import './chunk-EMY4I27X.js';
26
- import './chunk-ZJSNLVCE.js';
27
37
  import './chunk-BCLJSQCV.js';
28
38
  import './chunk-BOLTI6LR.js';
29
39
  import './chunk-EABW6AJQ.js';
30
40
  import './chunk-RA3O54FC.js';
31
41
  import './chunk-M5POMKKW.js';
32
42
  import { runnerDir, jobsDir } from './chunk-ZM2IMMYN.js';
43
+ import './chunk-FA2BOX4O.js';
33
44
  import './chunk-XCCLFVXM.js';
34
45
  import './chunk-BJ3KTMDH.js';
35
46
  import './chunk-VNVZDWO3.js';
@@ -55,12 +66,33 @@ function leaseCell(job, now) {
55
66
  const untilNext = RENEW_INTERVAL_SECONDS * 1e3 - sinceMs;
56
67
  return untilNext <= 0 ? "renew due" : `renews ${formatDuration(untilNext)}`;
57
68
  }
69
+ function housekeepingLines(input) {
70
+ const record = input.housekeeping;
71
+ if (record === void 0) return [];
72
+ const lines = [];
73
+ if (record.lastRunAt !== void 0) {
74
+ const ago = formatDuration(input.now.getTime() - new Date(record.lastRunAt).getTime());
75
+ lines.push(`housekeeping last ran ${ago} ago (${formatClock(new Date(record.lastRunAt), input.now)}), freed ${formatBytes(record.freedBytes ?? 0)}`);
76
+ }
77
+ if (record.holding !== void 0 && input.process.state === "running") {
78
+ lines.push(
79
+ `holding off new work for disk: ${formatBytes(record.holding.free)} free, ${formatBytes(record.holding.needed)} needed (since ${formatClock(new Date(record.holding.since), input.now)})`
80
+ );
81
+ }
82
+ return lines;
83
+ }
58
84
  function renderStatus(input) {
59
85
  const lines = [];
60
86
  const running = input.jobs.filter(({ job }) => isUnfinished(job));
61
87
  const finished = input.jobs.filter(({ job }) => !isUnfinished(job)).sort((a, b) => (b.job.endedAt ?? "").localeCompare(a.job.endedAt ?? "")).slice(0, 20);
62
88
  const header = input.process.state === "running" ? `runner ${input.host} running, pid ${input.process.pid} \xB7 config ${input.configPath} \xB7 ${running.length} of ${input.concurrency} slots in use` : input.process.state === "stale" ? `runner ${input.host} not running (stale pid file for pid ${input.process.pid}) \xB7 config ${input.configPath}` : `runner ${input.host} not running (pid file absent) \xB7 config ${input.configPath}`;
63
- lines.push(header, "");
89
+ lines.push(header);
90
+ if (input.service !== void 0) {
91
+ const { unit, running: running2, delegated } = input.service;
92
+ lines.push(`service ${unit} ${running2 ? "running" : "stopped"}${delegated === false ? " \xB7 not delegated: microVM builds have no memory limit of their own" : ""}`);
93
+ }
94
+ lines.push(...housekeepingLines(input));
95
+ lines.push("");
64
96
  if (running.length === 0) {
65
97
  lines.push("No running jobs.");
66
98
  } else {
@@ -1,16 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { CHUNK_PART_TARGET_BYTES, RETRYABLE_STATUSES, SyncConfigError, SyncTransportError, isLoopbackUrl, resolveTier, runSync } from './chunk-EGABNHZG.js';
4
- export { detectCi } from './chunk-ZOC7JSYC.js';
5
- import './chunk-BCJNHMZT.js';
3
+ export { CHUNK_PART_TARGET_BYTES, RETRYABLE_STATUSES, SyncConfigError, SyncTransportError, detectCi, isLoopbackUrl, resolveTier, runSync } from './chunk-UMFWVGJO.js';
4
+ import './chunk-HHJDN6AU.js';
6
5
  import './chunk-TBT347UY.js';
7
6
  import './chunk-F7CU5ABH.js';
8
7
  import './chunk-BKO6JEZI.js';
9
8
  import './chunk-BFESLKPP.js';
10
- import './chunk-WOBNRVQT.js';
11
- import './chunk-EX6M5JPR.js';
9
+ import './chunk-3DEVYTNQ.js';
10
+ import './chunk-ANK2B36Y.js';
12
11
  import './chunk-YRYMNBGQ.js';
13
- import './chunk-DVDEBNQJ.js';
12
+ import './chunk-GQD22KKN.js';
14
13
  import './chunk-WZBHBH3J.js';
15
14
  import './chunk-5QRP3MVS.js';
16
15
  import './chunk-ZJSNLVCE.js';
@@ -19,7 +18,7 @@ import './chunk-BOLTI6LR.js';
19
18
  export { cloudConfigPath, readCloudConfig, writeCloudConfig } from './chunk-EABW6AJQ.js';
20
19
  import './chunk-M5POMKKW.js';
21
20
  import './chunk-ZM2IMMYN.js';
22
- import './chunk-UFFXNXLQ.js';
21
+ import './chunk-FA2BOX4O.js';
23
22
  import './chunk-XCCLFVXM.js';
24
23
  import './chunk-BJ3KTMDH.js';
25
24
  import './chunk-VNVZDWO3.js';
@@ -1,16 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LiveUploader } from './chunk-EGABNHZG.js';
4
- import './chunk-ZOC7JSYC.js';
5
- import './chunk-BCJNHMZT.js';
3
+ import { LiveUploader } from './chunk-UMFWVGJO.js';
4
+ import './chunk-HHJDN6AU.js';
6
5
  import './chunk-TBT347UY.js';
7
6
  import './chunk-F7CU5ABH.js';
8
7
  import './chunk-BKO6JEZI.js';
9
8
  import './chunk-BFESLKPP.js';
10
- import './chunk-WOBNRVQT.js';
11
- import { StatuslineAggregator, CaptureDaemon } from './chunk-EX6M5JPR.js';
9
+ import './chunk-3DEVYTNQ.js';
10
+ import { StatuslineAggregator, CaptureDaemon } from './chunk-ANK2B36Y.js';
12
11
  import './chunk-YRYMNBGQ.js';
13
- import './chunk-DVDEBNQJ.js';
12
+ import './chunk-GQD22KKN.js';
14
13
  import './chunk-WZBHBH3J.js';
15
14
  import './chunk-5QRP3MVS.js';
16
15
  import './chunk-ZJSNLVCE.js';
@@ -19,7 +18,7 @@ import './chunk-BOLTI6LR.js';
19
18
  import './chunk-EABW6AJQ.js';
20
19
  import './chunk-M5POMKKW.js';
21
20
  import './chunk-ZM2IMMYN.js';
22
- import './chunk-UFFXNXLQ.js';
21
+ import './chunk-FA2BOX4O.js';
23
22
  import './chunk-XCCLFVXM.js';
24
23
  import './chunk-BJ3KTMDH.js';
25
24
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RUNNER_PROTOCOL } from './chunk-QDQEUVUF.js';
4
- import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, resolveRepository, findLiveItem } from './chunk-RMAZ2NWA.js';
5
- export { WorkCommandError } from './chunk-RMAZ2NWA.js';
3
+ import { RUNNER_PROTOCOL } from './chunk-AIW6GLET.js';
4
+ import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, resolveRepository, findLiveItem } from './chunk-BNMCXPG7.js';
5
+ export { WorkCommandError } from './chunk-BNMCXPG7.js';
6
6
  import './chunk-BFESLKPP.js';
7
- import './chunk-WOBNRVQT.js';
8
- import './chunk-EX6M5JPR.js';
9
- import { defaultRunnerConfigPath } from './chunk-5Y3QQRUH.js';
7
+ import './chunk-3DEVYTNQ.js';
8
+ import './chunk-ANK2B36Y.js';
9
+ import { defaultRunnerConfigPath } from './chunk-3DD6AOWC.js';
10
10
  import './chunk-F6GFZXZ3.js';
11
11
  import './chunk-AUFG23AA.js';
12
12
  import './chunk-WZBHBH3J.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { WorkCommandError, findLiveItem, getJson, parsePositiveInt, postJson, resolveCredentials, resolveRepository, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-RMAZ2NWA.js';
3
+ export { WorkCommandError, findLiveItem, getJson, parsePositiveInt, postJson, resolveCredentials, resolveRepository, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-BNMCXPG7.js';
4
4
  import './chunk-BFESLKPP.js';
5
- import './chunk-WOBNRVQT.js';
6
- import './chunk-EX6M5JPR.js';
5
+ import './chunk-3DEVYTNQ.js';
6
+ import './chunk-ANK2B36Y.js';
7
7
  import './chunk-WZBHBH3J.js';
8
8
  import './chunk-BCLJSQCV.js';
9
9
  import './chunk-BOLTI6LR.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, postJson, getJson } from './chunk-RMAZ2NWA.js';
3
+ import { resolveCredentials, postJson, getJson } from './chunk-BNMCXPG7.js';
4
4
  import { detectActiveSession } from './chunk-BFESLKPP.js';
5
- import { sanitizeTerminal } from './chunk-WOBNRVQT.js';
6
- import { resolveRepoIdentity } from './chunk-EX6M5JPR.js';
5
+ import { sanitizeTerminal } from './chunk-3DEVYTNQ.js';
6
+ import { resolveRepoIdentity } from './chunk-ANK2B36Y.js';
7
7
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
8
8
  import { defaultFetch } from './chunk-BCLJSQCV.js';
9
9
  import './chunk-BOLTI6LR.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { appendLaunchRecord, launchStatusIsDecisive, launchedItemForSession, launchedItemsBySession, launchesPath, parseWorkItemEnv, readLaunchSpoolState } from './chunk-DVDEBNQJ.js';
3
+ export { appendLaunchRecord, launchStatusIsDecisive, launchedItemForSession, launchedItemsBySession, launchesPath, parseWorkItemEnv, readLaunchSpoolState } from './chunk-GQD22KKN.js';
4
4
  import './chunk-WZBHBH3J.js';
5
5
  import './chunk-Z5GEFMRW.js';
6
6
 
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { runWorkPr, WorkPrCommandError } from './chunk-JLDZTG3A.js';
4
- import { resolveCredentials } from './chunk-RMAZ2NWA.js';
3
+ import { runWorkPr, WorkPrCommandError } from './chunk-IASWYRVG.js';
4
+ import { resolveCredentials } from './chunk-BNMCXPG7.js';
5
5
  import './chunk-BFESLKPP.js';
6
- import './chunk-WOBNRVQT.js';
7
- import './chunk-EX6M5JPR.js';
6
+ import './chunk-3DEVYTNQ.js';
7
+ import './chunk-ANK2B36Y.js';
8
8
  import './chunk-WZBHBH3J.js';
9
9
  import { defaultFetch } from './chunk-BCLJSQCV.js';
10
10
  import './chunk-BOLTI6LR.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { WorkPrCommandError, runWorkPr } from './chunk-JLDZTG3A.js';
3
+ export { WorkPrCommandError, runWorkPr } from './chunk-IASWYRVG.js';
4
4
  import './chunk-BFESLKPP.js';
5
- import './chunk-EX6M5JPR.js';
5
+ import './chunk-ANK2B36Y.js';
6
6
  import './chunk-WZBHBH3J.js';
7
7
  import './chunk-BCLJSQCV.js';
8
8
  import './chunk-BOLTI6LR.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outerlayer/cli",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "OuterLayer CLI — commands: init, connect, doctor, login, logout, sync, daemon (alias: watch), emit, work, runner, hooks, mcp, import, context. Capture and sync coding-agent sessions, and record proof of factory work.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Magu Studios, Inc.",
@@ -56,6 +56,7 @@
56
56
  "http-message-sig": "0.3.0",
57
57
  "structured-headers": "2.0.3",
58
58
  "tsup": "^8.5.0",
59
+ "tsx": "^4.22.4",
59
60
  "typescript": "^5.5.3",
60
61
  "vitest": "^4.1.8"
61
62
  },
@@ -1,83 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire } from 'node:module';
3
- import { setCustomScrubbers, setLocalIdentity, setRepoRoot, resolveRepoIdentity, scrubDeep, downconvertSession, isHumanUserTurn, turnCountBound } from './chunk-EX6M5JPR.js';
4
- import { execFileSync } from 'child_process';
5
- import { hostname, userInfo } from 'os';
6
-
7
- createRequire(import.meta.url);
8
- function detectCi(env = process.env) {
9
- return env.CI === "true" || env.CI === "1" || !!env.JENKINS_URL;
10
- }
11
- function gitGlobalConfig(key) {
12
- try {
13
- return execFileSync("git", ["config", "--global", key], { encoding: "utf8", timeout: 2e3 }).trim() || void 0;
14
- } catch {
15
- return void 0;
16
- }
17
- }
18
- function installScrubContext(home, scrub) {
19
- setCustomScrubbers(scrub);
20
- setLocalIdentity({
21
- name: gitGlobalConfig("user.name"),
22
- email: gitGlobalConfig("user.email"),
23
- username: (() => {
24
- try {
25
- return userInfo().username;
26
- } catch {
27
- return void 0;
28
- }
29
- })(),
30
- hostname: (() => {
31
- try {
32
- return hostname();
33
- } catch {
34
- return void 0;
35
- }
36
- })(),
37
- home
38
- });
39
- }
40
- function applyContextProvenance(session, record) {
41
- if (!record) return;
42
- if (record.repository !== void 0) session.env.contextSourceRepo = record.repository;
43
- if (record.ref !== void 0) session.env.contextSourceRef = record.ref;
44
- if (record.sha !== null) session.env.contextSourceSha = record.sha;
45
- session.env.contextSourceVerification = record.verification;
46
- }
47
- function prepareSessionForUpload(session, tier, envVars = process.env) {
48
- setRepoRoot(resolveRepoIdentity(session.env.cwd).repoRoot);
49
- scrubDeep(session);
50
- session.workerKind ??= detectCi(envVars) ? "ci" : "seat";
51
- return downconvertSession(session, tier);
52
- }
53
- var MAX_TOOL_IO_CHARS = 64e3;
54
- function sliceToolIo(value) {
55
- const text = typeof value === "string" ? value : JSON.stringify(value);
56
- if (typeof text !== "string" || text.length <= MAX_TOOL_IO_CHARS) return value;
57
- return `${text.slice(0, MAX_TOOL_IO_CHARS)}\u2026[sliced: ${text.length} chars exceeded the sync per-call cap]`;
58
- }
59
- function sliceTurnIo(turn) {
60
- return {
61
- ...turn,
62
- toolCalls: (turn.toolCalls ?? []).map((call) => ({
63
- ...call,
64
- ...call.input !== void 0 ? { input: sliceToolIo(call.input) } : {},
65
- ...call.output !== void 0 ? { output: sliceToolIo(call.output) } : {}
66
- }))
67
- };
68
- }
69
- function wholeSessionCounts(turns) {
70
- const allCalls = turns.flatMap((t) => t.toolCalls ?? []);
71
- return {
72
- // An index BOUND (`1 + max(turn.index)`), not the shipped turn count —
73
- // turn indexes are not guaranteed dense from zero, and a late artifact
74
- // anchored at its real turn index must still validate against the
75
- // summary row this produces (see turnCountBound).
76
- turns: turnCountBound(turns),
77
- toolCalls: allCalls.length,
78
- errors: allCalls.filter((c) => c.status === "error").length,
79
- userTurns: turns.filter(isHumanUserTurn).length
80
- };
81
- }
82
-
83
- export { applyContextProvenance, detectCi, installScrubContext, prepareSessionForUpload, sliceTurnIo, wholeSessionCounts };