@outerlayer/cli 0.5.1 → 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 (65) hide show
  1. package/CHANGELOG.md +11 -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-4Q33B5ZE.js → check-CCVPBN7A.js} +24 -14
  6. package/dist/{chunk-WOBNRVQT.js → chunk-3DEVYTNQ.js} +1 -1
  7. package/dist/{chunk-F4NU4H3V.js → chunk-43J3M6KB.js} +95 -11
  8. package/dist/{chunk-W7UTFZDH.js → chunk-4NLKY4WR.js} +2 -2
  9. package/dist/{lima-XN65D7GN.js → chunk-77MM5RYD.js} +0 -1
  10. package/dist/{chunk-D2KWEAN6.js → chunk-7DBI6SNT.js} +1 -1
  11. package/dist/{chunk-ZXBITXTS.js → chunk-AIW6GLET.js} +1 -1
  12. package/dist/{chunk-EX6M5JPR.js → chunk-ANK2B36Y.js} +131 -15
  13. package/dist/{chunk-RMAZ2NWA.js → chunk-BNMCXPG7.js} +14 -2
  14. package/dist/{chunk-UFFXNXLQ.js → chunk-FA2BOX4O.js} +31 -29
  15. package/dist/chunk-FBTE2A2X.js +38 -0
  16. package/dist/{chunk-DVDEBNQJ.js → chunk-GQD22KKN.js} +17 -6
  17. package/dist/{chunk-BCJNHMZT.js → chunk-HHJDN6AU.js} +18 -3
  18. package/dist/{chunk-JLDZTG3A.js → chunk-IASWYRVG.js} +1 -1
  19. package/dist/{install-cmd-7WXOIFDO.js → chunk-JWOQNNN2.js} +0 -1
  20. package/dist/{chunk-H4CK2YK4.js → chunk-MIGEDH5P.js} +16 -8
  21. package/dist/{chunk-CHLVJNTE.js → chunk-MXB5VB4Y.js} +17 -5
  22. package/dist/chunk-NQXFAGHU.js +211 -0
  23. package/dist/chunk-OUUINEYB.js +27 -0
  24. package/dist/{chunk-OR6AEEDO.js → chunk-PMAMOSTP.js} +3 -3
  25. package/dist/{chunk-RTXKYLCA.js → chunk-RBOMWNOG.js} +1 -1
  26. package/dist/{chunk-T52PKE2Y.js → chunk-RZSF5B46.js} +149 -7
  27. package/dist/chunk-T6OIJQRT.js +31 -0
  28. package/dist/{chunk-EGABNHZG.js → chunk-UMFWVGJO.js} +148 -18
  29. package/dist/{chunk-UWH5DSUP.js → chunk-VMJ3MMBX.js} +203 -80
  30. package/dist/chunk-ZILGTTY6.js +75 -0
  31. package/dist/{cli-LHSUYYMI.js → cli-7WCNPBYC.js} +134 -61
  32. package/dist/command-ARFK3OYF.js +162 -0
  33. package/dist/{connect-cmd-OJBFHZWP.js → connect-cmd-PCESZLTR.js} +4 -4
  34. package/dist/{context-adopt-UMA4O5NY.js → context-adopt-G5JAELE7.js} +2 -2
  35. package/dist/{context-materialize-G2FUFC72.js → context-materialize-3HLPZAF6.js} +2 -2
  36. package/dist/{dist-WDV7U7UJ.js → dist-RDLP4GGJ.js} +1 -1
  37. package/dist/{doctor-MOA3RIEP.js → doctor-VOMYOHQU.js} +32 -12
  38. package/dist/{emit-artifact-cmd-FDWYKURA.js → emit-artifact-cmd-TBF46VXZ.js} +6 -7
  39. package/dist/{emit-criteria-cmd-OCXHLK34.js → emit-criteria-cmd-3427XKFW.js} +3 -3
  40. package/dist/{emit-finding-cmd-POW7PKIA.js → emit-finding-cmd-GSI75K36.js} +3 -3
  41. package/dist/{emit-result-cmd-ID35SH53.js → emit-result-cmd-3PRQKB55.js} +6 -7
  42. package/dist/{hook-fast-EYENPK6F.js → hook-fast-NJBBZQ5Q.js} +1 -1
  43. package/dist/index.js +3 -2
  44. package/dist/{init-2IPOIXJV.js → init-OHYFIKZD.js} +26 -55
  45. package/dist/{init-FYDJAKTM.js → init-WVR4BZQ4.js} +8 -8
  46. package/dist/{init-cmd-KLIDRVXQ.js → init-cmd-HMFNIFPI.js} +7 -7
  47. package/dist/inspect-XAUSB7L3.js +63 -0
  48. package/dist/install-DSUZE2TJ.js +13 -0
  49. package/dist/install-cmd-453C7IZT.js +8 -0
  50. package/dist/lima-7NPCNGWT.js +6 -0
  51. package/dist/{loop-NEBUGD2Q.js → loop-UAJB34KA.js} +24 -11
  52. package/dist/{machine-ECU3QCZD.js → machine-2JOWGRSZ.js} +7 -7
  53. package/dist/session-sender-ED26V45B.js +28 -0
  54. package/dist/{status-CLATHCTQ.js → status-6WNXX2O7.js} +22 -8
  55. package/dist/{sync-cmd-SWQ5KLPL.js → sync-cmd-YONVGUYS.js} +6 -7
  56. package/dist/{watch-3YW6Z3DQ.js → watch-HHKAF26L.js} +6 -7
  57. package/dist/{work-claim-cmd-3OPWA77E.js → work-claim-cmd-LXBZTMJA.js} +5 -5
  58. package/dist/{work-cmd-NUR4CAG6.js → work-cmd-OVNF44FY.js} +3 -3
  59. package/dist/{work-comment-cmd-6TTTYGHM.js → work-comment-cmd-6DGQNTAH.js} +3 -3
  60. package/dist/{work-launch-YI4CJDAP.js → work-launch-R5HTAP6X.js} +1 -1
  61. package/dist/{work-open-pr-cmd-KZ7QQFLD.js → work-open-pr-cmd-FCZHFHZS.js} +4 -4
  62. package/dist/{work-pr-cmd-QNUBE6IQ.js → work-pr-cmd-QJJVHZDC.js} +2 -2
  63. package/package.json +2 -1
  64. package/dist/chunk-ZOC7JSYC.js +0 -83
  65. package/dist/{chunk-XDDW4FRS.js → chunk-OIRNH6UO.js} +1 -1
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { summarizeChecks, summaryText, renderDoctorText } from './chunk-H4CK2YK4.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,16 +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-F4NU4H3V.js';
4
- import './chunk-UWH5DSUP.js';
5
- import './chunk-ZXBITXTS.js';
6
- import './chunk-UGP76IZ5.js';
3
+ export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-43J3M6KB.js';
7
4
  import './chunk-ABIWDUMS.js';
8
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';
9
11
  import './chunk-CBPPJSAR.js';
12
+ import './chunk-UMFWVGJO.js';
13
+ import './chunk-HHJDN6AU.js';
14
+ import './chunk-MXB5VB4Y.js';
10
15
  import './chunk-YYYRBYWG.js';
11
- import './chunk-ZOC7JSYC.js';
12
16
  import './chunk-TBT347UY.js';
13
- import './chunk-T52PKE2Y.js';
17
+ import './chunk-OUUINEYB.js';
18
+ import './chunk-4NLKY4WR.js';
19
+ import './chunk-RBOMWNOG.js';
20
+ import './chunk-RZSF5B46.js';
14
21
  import './chunk-Z62HNKEJ.js';
15
22
  import './chunk-N5FOE5PS.js';
16
23
  import './chunk-OGFGZQA3.js';
@@ -18,25 +25,31 @@ import './chunk-774HEQL6.js';
18
25
  import './chunk-QOZKPLVJ.js';
19
26
  import './chunk-W4SQCOZU.js';
20
27
  import './chunk-B2G7JHHB.js';
21
- import './chunk-RMAZ2NWA.js';
28
+ import './chunk-F7CU5ABH.js';
29
+ import './chunk-BKO6JEZI.js';
30
+ import './chunk-BNMCXPG7.js';
22
31
  import './chunk-BFESLKPP.js';
23
- import './chunk-WOBNRVQT.js';
24
- import './chunk-EX6M5JPR.js';
32
+ import './chunk-3DEVYTNQ.js';
33
+ import './chunk-ANK2B36Y.js';
34
+ import './chunk-YRYMNBGQ.js';
25
35
  import './chunk-3DD6AOWC.js';
26
36
  import './chunk-F6GFZXZ3.js';
27
37
  import './chunk-AUFG23AA.js';
38
+ import './chunk-GQD22KKN.js';
28
39
  import './chunk-WZBHBH3J.js';
29
- import './chunk-XDDW4FRS.js';
40
+ import './chunk-5QRP3MVS.js';
41
+ import './chunk-OIRNH6UO.js';
42
+ import './chunk-ZJSNLVCE.js';
30
43
  import './chunk-WIOZAJ2W.js';
31
44
  import './chunk-WO2BXCTQ.js';
32
45
  import './chunk-EMY4I27X.js';
33
- import './chunk-ZJSNLVCE.js';
34
46
  import './chunk-BCLJSQCV.js';
35
47
  import './chunk-BOLTI6LR.js';
36
48
  import './chunk-EABW6AJQ.js';
37
49
  import './chunk-RA3O54FC.js';
38
50
  import './chunk-M5POMKKW.js';
39
51
  import './chunk-ZM2IMMYN.js';
52
+ import './chunk-FA2BOX4O.js';
40
53
  import './chunk-XCCLFVXM.js';
41
54
  import './chunk-BJ3KTMDH.js';
42
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-RTXKYLCA.js';
4
- import './chunk-T52PKE2Y.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,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,10 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LEASE_SECONDS, RENEW_INTERVAL_SECONDS } from './chunk-UWH5DSUP.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';
7
+ import './chunk-UMFWVGJO.js';
8
+ import './chunk-HHJDN6AU.js';
5
9
  import { formatBytes } from './chunk-YYYRBYWG.js';
6
- import './chunk-ZOC7JSYC.js';
7
- import { formatDuration, formatClock, relativeToRunner } from './chunk-T52PKE2Y.js';
10
+ import './chunk-TBT347UY.js';
11
+ import { formatDuration, formatClock, relativeToRunner } from './chunk-RZSF5B46.js';
8
12
  import './chunk-Z62HNKEJ.js';
9
13
  import './chunk-N5FOE5PS.js';
10
14
  import './chunk-OGFGZQA3.js';
@@ -12,25 +16,31 @@ import './chunk-774HEQL6.js';
12
16
  import './chunk-QOZKPLVJ.js';
13
17
  import './chunk-W4SQCOZU.js';
14
18
  import './chunk-B2G7JHHB.js';
15
- import './chunk-RMAZ2NWA.js';
19
+ import './chunk-F7CU5ABH.js';
20
+ import './chunk-BKO6JEZI.js';
21
+ import './chunk-BNMCXPG7.js';
16
22
  import './chunk-BFESLKPP.js';
17
- import './chunk-WOBNRVQT.js';
18
- import './chunk-EX6M5JPR.js';
23
+ import './chunk-3DEVYTNQ.js';
24
+ import './chunk-ANK2B36Y.js';
25
+ import './chunk-YRYMNBGQ.js';
19
26
  import './chunk-3DD6AOWC.js';
20
27
  import './chunk-F6GFZXZ3.js';
21
28
  import './chunk-AUFG23AA.js';
29
+ import './chunk-GQD22KKN.js';
22
30
  import './chunk-WZBHBH3J.js';
23
- import './chunk-XDDW4FRS.js';
31
+ import './chunk-5QRP3MVS.js';
32
+ import './chunk-OIRNH6UO.js';
33
+ import './chunk-ZJSNLVCE.js';
24
34
  import './chunk-WIOZAJ2W.js';
25
35
  import './chunk-WO2BXCTQ.js';
26
36
  import './chunk-EMY4I27X.js';
27
- import './chunk-ZJSNLVCE.js';
28
37
  import './chunk-BCLJSQCV.js';
29
38
  import './chunk-BOLTI6LR.js';
30
39
  import './chunk-EABW6AJQ.js';
31
40
  import './chunk-RA3O54FC.js';
32
41
  import './chunk-M5POMKKW.js';
33
42
  import { runnerDir, jobsDir } from './chunk-ZM2IMMYN.js';
43
+ import './chunk-FA2BOX4O.js';
34
44
  import './chunk-XCCLFVXM.js';
35
45
  import './chunk-BJ3KTMDH.js';
36
46
  import './chunk-VNVZDWO3.js';
@@ -77,6 +87,10 @@ function renderStatus(input) {
77
87
  const finished = input.jobs.filter(({ job }) => !isUnfinished(job)).sort((a, b) => (b.job.endedAt ?? "").localeCompare(a.job.endedAt ?? "")).slice(0, 20);
78
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}`;
79
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
+ }
80
94
  lines.push(...housekeepingLines(input));
81
95
  lines.push("");
82
96
  if (running.length === 0) {
@@ -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,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RUNNER_PROTOCOL } from './chunk-ZXBITXTS.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';
7
+ import './chunk-3DEVYTNQ.js';
8
+ import './chunk-ANK2B36Y.js';
9
9
  import { defaultRunnerConfigPath } from './chunk-3DD6AOWC.js';
10
10
  import './chunk-F6GFZXZ3.js';
11
11
  import './chunk-AUFG23AA.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.1",
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 };
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
+ import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
3
4
  import { readPin, pinExists, readBuildHold, readContextManifest, manifestFilesPresent, writeDegraded, writeSourceCache, SOURCE_CACHE_TTL_RETRY_MS, SOURCE_CACHE_TTL_SUCCESS_MS, isLastCheckFresh, readDegraded, touchLastCheck, clearDegraded, writeContextManifest, writePinIfChanged, readSourceCache, isSourceCacheFresh } from './chunk-WIOZAJ2W.js';
4
5
  import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-WO2BXCTQ.js';
5
6
  import { parseGoverns, normalizeRepoName, CONTEXT_SOURCE_CONFIG_PATH, parseOuterlayerConfig, classifyTree, emitTree } from './chunk-EMY4I27X.js';
6
- import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
7
7
  import { defaultFetch } from './chunk-BCLJSQCV.js';
8
8
  import { resolveGatewayCredentials } from './chunk-BOLTI6LR.js';
9
9
  import { ensureContextExcludes, ensurePreCommitGuardHook } from './chunk-XCCLFVXM.js';