@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.
- package/CHANGELOG.md +17 -0
- package/README.md +9 -0
- package/dist/{agent-setup-IFH3FB5X.js → agent-setup-USZ2SAXC.js} +2 -2
- package/dist/build-info.json +1 -1
- package/dist/{check-AXCXDYO2.js → check-CCVPBN7A.js} +26 -14
- package/dist/{chunk-5Y3QQRUH.js → chunk-3DD6AOWC.js} +37 -0
- package/dist/{chunk-WOBNRVQT.js → chunk-3DEVYTNQ.js} +1 -1
- package/dist/{chunk-L24G4PLP.js → chunk-43J3M6KB.js} +486 -21
- package/dist/{chunk-FC7TMRNA.js → chunk-4NLKY4WR.js} +2 -2
- package/dist/{lima-XN65D7GN.js → chunk-77MM5RYD.js} +0 -1
- package/dist/{chunk-D2KWEAN6.js → chunk-7DBI6SNT.js} +1 -1
- package/dist/{chunk-QDQEUVUF.js → chunk-AIW6GLET.js} +1 -1
- package/dist/{chunk-EX6M5JPR.js → chunk-ANK2B36Y.js} +131 -15
- package/dist/{chunk-RMAZ2NWA.js → chunk-BNMCXPG7.js} +14 -2
- package/dist/{chunk-UFFXNXLQ.js → chunk-FA2BOX4O.js} +31 -29
- package/dist/chunk-FBTE2A2X.js +38 -0
- package/dist/{chunk-DVDEBNQJ.js → chunk-GQD22KKN.js} +17 -6
- package/dist/{chunk-BCJNHMZT.js → chunk-HHJDN6AU.js} +18 -3
- package/dist/{chunk-JLDZTG3A.js → chunk-IASWYRVG.js} +1 -1
- package/dist/{install-cmd-7WXOIFDO.js → chunk-JWOQNNN2.js} +0 -1
- package/dist/{chunk-ZLB7GCTY.js → chunk-MIGEDH5P.js} +19 -11
- package/dist/{chunk-OHFDWLJP.js → chunk-MXB5VB4Y.js} +18 -6
- package/dist/chunk-NQXFAGHU.js +211 -0
- package/dist/chunk-OUUINEYB.js +27 -0
- package/dist/{chunk-OR6AEEDO.js → chunk-PMAMOSTP.js} +3 -3
- package/dist/{chunk-RJ467PDQ.js → chunk-RBOMWNOG.js} +1 -1
- package/dist/{chunk-4NMBDRBS.js → chunk-RZSF5B46.js} +289 -130
- package/dist/chunk-T6OIJQRT.js +31 -0
- package/dist/chunk-UGP76IZ5.js +34 -0
- package/dist/{chunk-EGABNHZG.js → chunk-UMFWVGJO.js} +148 -18
- package/dist/{chunk-RWOTHXYE.js → chunk-VMJ3MMBX.js} +206 -71
- package/dist/chunk-YYYRBYWG.js +32 -0
- package/dist/chunk-ZILGTTY6.js +75 -0
- package/dist/{cli-NNWPFP5S.js → cli-7WCNPBYC.js} +147 -69
- package/dist/command-ARFK3OYF.js +162 -0
- package/dist/{config-XVJYZ4IQ.js → config-HL2AIR3K.js} +1 -1
- package/dist/{connect-cmd-OJBFHZWP.js → connect-cmd-PCESZLTR.js} +4 -4
- package/dist/{context-adopt-UMA4O5NY.js → context-adopt-G5JAELE7.js} +2 -2
- package/dist/{context-materialize-G2FUFC72.js → context-materialize-3HLPZAF6.js} +2 -2
- package/dist/{dist-WDV7U7UJ.js → dist-RDLP4GGJ.js} +1 -1
- package/dist/{doctor-J3GIMR7K.js → doctor-VOMYOHQU.js} +47 -13
- package/dist/{emit-artifact-cmd-FDWYKURA.js → emit-artifact-cmd-TBF46VXZ.js} +6 -7
- package/dist/{emit-criteria-cmd-OCXHLK34.js → emit-criteria-cmd-3427XKFW.js} +3 -3
- package/dist/{emit-finding-cmd-POW7PKIA.js → emit-finding-cmd-GSI75K36.js} +3 -3
- package/dist/{emit-result-cmd-ID35SH53.js → emit-result-cmd-3PRQKB55.js} +6 -7
- package/dist/{hook-fast-EYENPK6F.js → hook-fast-NJBBZQ5Q.js} +1 -1
- package/dist/index.js +3 -2
- package/dist/{init-CZX7ZDWF.js → init-OHYFIKZD.js} +27 -56
- package/dist/{init-3ZQLFPNC.js → init-WVR4BZQ4.js} +8 -8
- package/dist/{init-cmd-W5NOLQPX.js → init-cmd-HMFNIFPI.js} +7 -7
- package/dist/inspect-XAUSB7L3.js +63 -0
- package/dist/install-DSUZE2TJ.js +13 -0
- package/dist/install-cmd-453C7IZT.js +8 -0
- package/dist/lima-7NPCNGWT.js +6 -0
- package/dist/{loop-VGM772I7.js → loop-UAJB34KA.js} +26 -11
- package/dist/{machine-5WEJA36F.js → machine-2JOWGRSZ.js} +7 -7
- package/dist/record-C43U4PKS.js +7 -0
- package/dist/session-sender-ED26V45B.js +28 -0
- package/dist/{status-KBDVUYQ3.js → status-6WNXX2O7.js} +42 -10
- package/dist/{sync-cmd-SWQ5KLPL.js → sync-cmd-YONVGUYS.js} +6 -7
- package/dist/{watch-3YW6Z3DQ.js → watch-HHKAF26L.js} +6 -7
- package/dist/{work-claim-cmd-BQPPURBW.js → work-claim-cmd-LXBZTMJA.js} +6 -6
- package/dist/{work-cmd-NUR4CAG6.js → work-cmd-OVNF44FY.js} +3 -3
- package/dist/{work-comment-cmd-6TTTYGHM.js → work-comment-cmd-6DGQNTAH.js} +3 -3
- package/dist/{work-launch-YI4CJDAP.js → work-launch-R5HTAP6X.js} +1 -1
- package/dist/{work-open-pr-cmd-KZ7QQFLD.js → work-open-pr-cmd-FCZHFHZS.js} +4 -4
- package/dist/{work-pr-cmd-QNUBE6IQ.js → work-pr-cmd-QJJVHZDC.js} +2 -2
- package/package.json +2 -1
- package/dist/chunk-ZOC7JSYC.js +0 -83
- 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-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
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-
|
|
13
|
+
import './chunk-BNMCXPG7.js';
|
|
14
14
|
import './chunk-BFESLKPP.js';
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
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-
|
|
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-
|
|
4
|
-
import { runConnect } from './chunk-
|
|
5
|
-
import './chunk-
|
|
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-
|
|
8
|
+
import './chunk-BNMCXPG7.js';
|
|
9
9
|
import './chunk-BFESLKPP.js';
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
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-
|
|
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);
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
28
|
+
import './chunk-F7CU5ABH.js';
|
|
29
|
+
import './chunk-BKO6JEZI.js';
|
|
30
|
+
import './chunk-BNMCXPG7.js';
|
|
20
31
|
import './chunk-BFESLKPP.js';
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
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-
|
|
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-
|
|
4
|
-
import './chunk-
|
|
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-
|
|
12
|
+
import './chunk-BNMCXPG7.js';
|
|
13
13
|
import './chunk-BFESLKPP.js';
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
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-
|
|
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,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-
|
|
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-
|
|
6
|
-
import
|
|
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-
|
|
19
|
+
import './chunk-F7CU5ABH.js';
|
|
20
|
+
import './chunk-BKO6JEZI.js';
|
|
21
|
+
import './chunk-BNMCXPG7.js';
|
|
15
22
|
import './chunk-BFESLKPP.js';
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
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-
|
|
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-
|
|
4
|
-
|
|
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-
|
|
11
|
-
import './chunk-
|
|
9
|
+
import './chunk-3DEVYTNQ.js';
|
|
10
|
+
import './chunk-ANK2B36Y.js';
|
|
12
11
|
import './chunk-YRYMNBGQ.js';
|
|
13
|
-
import './chunk-
|
|
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-
|
|
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-
|
|
4
|
-
import './chunk-
|
|
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-
|
|
11
|
-
import { StatuslineAggregator, CaptureDaemon } from './chunk-
|
|
9
|
+
import './chunk-3DEVYTNQ.js';
|
|
10
|
+
import { StatuslineAggregator, CaptureDaemon } from './chunk-ANK2B36Y.js';
|
|
12
11
|
import './chunk-YRYMNBGQ.js';
|
|
13
|
-
import './chunk-
|
|
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-
|
|
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-
|
|
4
|
-
import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, resolveRepository, findLiveItem } from './chunk-
|
|
5
|
-
export { WorkCommandError } from './chunk-
|
|
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-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import { defaultRunnerConfigPath } from './chunk-
|
|
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-
|
|
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-
|
|
6
|
-
import './chunk-
|
|
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-
|
|
3
|
+
import { resolveCredentials, postJson, getJson } from './chunk-BNMCXPG7.js';
|
|
4
4
|
import { detectActiveSession } from './chunk-BFESLKPP.js';
|
|
5
|
-
import { sanitizeTerminal } from './chunk-
|
|
6
|
-
import { resolveRepoIdentity } from './chunk-
|
|
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-
|
|
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-
|
|
4
|
-
import { resolveCredentials } from './chunk-
|
|
3
|
+
import { runWorkPr, WorkPrCommandError } from './chunk-IASWYRVG.js';
|
|
4
|
+
import { resolveCredentials } from './chunk-BNMCXPG7.js';
|
|
5
5
|
import './chunk-BFESLKPP.js';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
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-
|
|
3
|
+
export { WorkPrCommandError, runWorkPr } from './chunk-IASWYRVG.js';
|
|
4
4
|
import './chunk-BFESLKPP.js';
|
|
5
|
-
import './chunk-
|
|
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.
|
|
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
|
},
|
package/dist/chunk-ZOC7JSYC.js
DELETED
|
@@ -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 };
|