humanish 0.66.0 → 0.68.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/README.md +9 -2
- package/dist/actor-contract.d.ts +15 -0
- package/dist/actor-contract.js.map +1 -1
- package/dist/computer-use.d.ts +20 -1
- package/dist/computer-use.js +123 -6
- package/dist/computer-use.js.map +1 -1
- package/dist/cua-actor-lab.js +41 -6
- package/dist/cua-actor-lab.js.map +1 -1
- package/dist/e2b-terminal-lab.js +9 -1
- package/dist/e2b-terminal-lab.js.map +1 -1
- package/dist/local-agent-appserver.js +5 -3
- package/dist/local-agent-appserver.js.map +1 -1
- package/dist/local-agent-claude-session.d.ts +45 -0
- package/dist/local-agent-claude-session.js +203 -0
- package/dist/local-agent-claude-session.js.map +1 -0
- package/dist/local-agent-cli.d.ts +5 -2
- package/dist/local-agent-cli.js +14 -4
- package/dist/local-agent-cli.js.map +1 -1
- package/dist/program.js +20 -0
- package/dist/program.js.map +1 -1
- package/dist/run.js +4 -1
- package/dist/run.js.map +1 -1
- package/dist/stats.d.ts +75 -0
- package/dist/stats.js +196 -0
- package/dist/stats.js.map +1 -0
- package/dist/telemetry.js +5 -0
- package/dist/telemetry.js.map +1 -1
- package/docs/contracts/schemas.md +1 -1
- package/docs/goals/current.md +1 -1
- package/docs/ramp/README.md +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// ONE Claude Code process as the computer-use brain, instead of a fresh `claude -p` per turn.
|
|
2
|
+
//
|
|
3
|
+
// WHY (#520): `actors[].localAgent: codex` already runs through a persistent app-server thread,
|
|
4
|
+
// so the participant remembers what it tried. `claude` spawned `claude -p` per turn, so EVERY
|
|
5
|
+
// turn started cold. Measured on the same lab with the same credentials (n=1 each): one-shot,
|
|
6
|
+
// 188 actions over 90 turns and never finished; a thread that remembers, 21 actions over 8 turns
|
|
7
|
+
// and goal_satisfied in 103 s. A participant that cannot remember trying the menu tries the menu
|
|
8
|
+
// again. Until this existed, comparing the two agents measured the transport, not the model.
|
|
9
|
+
//
|
|
10
|
+
// THE MECHANISM, checked on this machine before it was written: `claude -p --input-format
|
|
11
|
+
// stream-json --output-format stream-json --verbose` is a bidirectional session over stdio. One
|
|
12
|
+
// NDJSON `user` message in, a stream of `system` / `assistant` / `result` messages out, then it
|
|
13
|
+
// waits for the next `user` message with the conversation intact. Two messages, one session id,
|
|
14
|
+
// and a codeword given in the first turn was recalled in the second. `--allowedTools Read` keeps
|
|
15
|
+
// the bound the one-shot version had: it looks at a picture, and that is all it can do.
|
|
16
|
+
//
|
|
17
|
+
// What this is NOT: a change to the loop, the executor, the trace, or the Observer. Only where
|
|
18
|
+
// the next action comes from.
|
|
19
|
+
import { spawn } from "node:child_process";
|
|
20
|
+
import { mkdtemp, rm, unlink, writeFile } from "node:fs/promises";
|
|
21
|
+
import { tmpdir } from "node:os";
|
|
22
|
+
import path from "node:path";
|
|
23
|
+
import readline from "node:readline";
|
|
24
|
+
import { declaredOutcomeOf, parseAgentJson, promptFor, toCuaActions, LOCAL_AGENT_CAPABILITIES } from "./local-agent-cli.js";
|
|
25
|
+
/** NDJSON over the child's stdio. Everything that is not a `result` is a progress line and is ignored. */
|
|
26
|
+
export function stdioClaudeTransport(child) {
|
|
27
|
+
const rl = readline.createInterface({ input: child.stdout });
|
|
28
|
+
let waiter;
|
|
29
|
+
let stderrTail = "";
|
|
30
|
+
let exited;
|
|
31
|
+
const fail = (error) => {
|
|
32
|
+
const pending = waiter;
|
|
33
|
+
waiter = undefined;
|
|
34
|
+
pending?.reject(error);
|
|
35
|
+
};
|
|
36
|
+
rl.on("line", (line) => {
|
|
37
|
+
let message;
|
|
38
|
+
try {
|
|
39
|
+
message = JSON.parse(line);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return; // never a reason to end a run
|
|
43
|
+
}
|
|
44
|
+
if (message.type !== "result")
|
|
45
|
+
return;
|
|
46
|
+
const pending = waiter;
|
|
47
|
+
waiter = undefined;
|
|
48
|
+
pending?.resolve(message);
|
|
49
|
+
});
|
|
50
|
+
child.stderr.on("data", (chunk) => {
|
|
51
|
+
stderrTail = (stderrTail + chunk.toString("utf8")).slice(-400);
|
|
52
|
+
});
|
|
53
|
+
child.on("close", (code, signal) => {
|
|
54
|
+
exited = `Claude Code exited ${code ?? `on ${signal ?? "a signal"}`}${stderrTail.trim() ? `: ${stderrTail.trim()}` : ""}`;
|
|
55
|
+
// Fail loud with the CLI's own words: a rate-limited plan says so here, which is a sentence
|
|
56
|
+
// the operator can act on, unlike "turn failed".
|
|
57
|
+
fail(new Error(exited));
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
send(message) {
|
|
61
|
+
if (exited !== undefined)
|
|
62
|
+
throw new Error(exited);
|
|
63
|
+
child.stdin.write(`${JSON.stringify(message)}\n`);
|
|
64
|
+
},
|
|
65
|
+
awaitResult(timeoutMs, signal) {
|
|
66
|
+
if (exited !== undefined)
|
|
67
|
+
return Promise.reject(new Error(exited));
|
|
68
|
+
return new Promise((resolve, reject) => {
|
|
69
|
+
const timer = setTimeout(() => fail(new Error(`Claude Code produced no result within ${timeoutMs}ms`)), timeoutMs);
|
|
70
|
+
const onAbort = () => fail(new Error("run stopped"));
|
|
71
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
72
|
+
waiter = {
|
|
73
|
+
resolve: (value) => { clearTimeout(timer); signal?.removeEventListener("abort", onAbort); resolve(value); },
|
|
74
|
+
reject: (error) => { clearTimeout(timer); signal?.removeEventListener("abort", onAbort); reject(error); }
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
close() {
|
|
79
|
+
rl.close();
|
|
80
|
+
child.stdin.end();
|
|
81
|
+
child.kill();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export const CLAUDE_SESSION_CAPABILITIES = LOCAL_AGENT_CAPABILITIES;
|
|
86
|
+
/** The message shape Claude Code reads on stdin in stream-json mode. */
|
|
87
|
+
export function userMessage(text) {
|
|
88
|
+
return { type: "user", message: { role: "user", content: [{ type: "text", text }] } };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Start one Claude Code session and return a provider that spends it, one user message per
|
|
92
|
+
* computer-use turn. Started EAGERLY (before the first screenshot) so the CLI's own boot is paid
|
|
93
|
+
* while the sandbox is still settling rather than inside turn one.
|
|
94
|
+
*/
|
|
95
|
+
export async function startClaudeSession(options = {}) {
|
|
96
|
+
const timeoutMs = options.timeoutMs ?? 180_000;
|
|
97
|
+
const effort = options.reasoningEffort ?? "low";
|
|
98
|
+
const work = await mkdtemp(path.join(options.workRoot ?? tmpdir(), "humanish-claude-session-"));
|
|
99
|
+
let child;
|
|
100
|
+
let transport = options.transport;
|
|
101
|
+
if (transport === undefined) {
|
|
102
|
+
const spawnFn = options.spawnFn ?? spawn;
|
|
103
|
+
child = spawnFn("claude", [
|
|
104
|
+
"-p",
|
|
105
|
+
"--input-format", "stream-json",
|
|
106
|
+
"--output-format", "stream-json",
|
|
107
|
+
// Required for stream-json output in -p mode; it is what makes the per-turn `result` visible.
|
|
108
|
+
"--verbose",
|
|
109
|
+
// Read is the only tool it needs — the screenshot — and the only one it gets.
|
|
110
|
+
"--allowedTools", "Read",
|
|
111
|
+
...(options.model === undefined ? [] : ["--model", options.model])
|
|
112
|
+
], { cwd: work, stdio: ["pipe", "pipe", "pipe"] });
|
|
113
|
+
transport = stdioClaudeTransport(child);
|
|
114
|
+
}
|
|
115
|
+
let turnIndex = 0;
|
|
116
|
+
let previousShot;
|
|
117
|
+
const provider = {
|
|
118
|
+
id: "local-agent-claude-session",
|
|
119
|
+
version: options.model ?? "claude (local, operator-authenticated, one session per run)",
|
|
120
|
+
modelSettings: { reasoningEffort: effort },
|
|
121
|
+
capabilities: CLAUDE_SESSION_CAPABILITIES,
|
|
122
|
+
requiresFrame: true,
|
|
123
|
+
async nextTurn(request, signal) {
|
|
124
|
+
const frame = request.observation.screenshot;
|
|
125
|
+
if (frame === undefined) {
|
|
126
|
+
throw new Error("the Claude session provider needs a screenshot and this observation has none");
|
|
127
|
+
}
|
|
128
|
+
turnIndex += 1;
|
|
129
|
+
const shot = path.join(work, `screen-${String(turnIndex).padStart(3, "0")}.png`);
|
|
130
|
+
await writeFile(shot, frame);
|
|
131
|
+
const hint = request.contextHint === undefined ? "" : `\n\nNote from the harness: ${request.contextHint}`;
|
|
132
|
+
// The persona and the reply shape are in the conversation after turn one; re-sending them
|
|
133
|
+
// every turn is what the one-shot version had to do, and it is most of what it cost.
|
|
134
|
+
const text = turnIndex === 1
|
|
135
|
+
? promptFor(request, shot, "claude")
|
|
136
|
+
: `Read the image file ${shot}. That is the CURRENT SCREEN, after your last actions took effect. `
|
|
137
|
+
+ "Same participant, same task: decide what to do next. "
|
|
138
|
+
+ "Reply with ONLY a JSON object of the same shape as before."
|
|
139
|
+
+ hint;
|
|
140
|
+
transport.send(userMessage(text));
|
|
141
|
+
const result = await transport.awaitResult(timeoutMs, signal);
|
|
142
|
+
// The frame it already looked at is not needed on disk; the conversation remembers it.
|
|
143
|
+
if (previousShot !== undefined)
|
|
144
|
+
await unlink(previousShot).catch(() => undefined);
|
|
145
|
+
previousShot = shot;
|
|
146
|
+
return turnFromResult(result);
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
return {
|
|
150
|
+
provider,
|
|
151
|
+
close: async () => {
|
|
152
|
+
transport?.close();
|
|
153
|
+
child?.kill();
|
|
154
|
+
await rm(work, { recursive: true, force: true }).catch(() => undefined);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/** Read a stream-json `result` message into a CuaTurn. Exported for tests. */
|
|
159
|
+
export function turnFromResult(result) {
|
|
160
|
+
if (result.is_error === true || (typeof result.subtype === "string" && result.subtype !== "success")) {
|
|
161
|
+
// A turn that errored is a BROKEN turn, never an empty one: an empty turn reads to the loop
|
|
162
|
+
// as "the participant chose to do nothing".
|
|
163
|
+
throw new Error(`Claude Code turn ended ${String(result.subtype ?? "in error")}: ${String(result.result ?? "").slice(0, 160)}`);
|
|
164
|
+
}
|
|
165
|
+
const text = typeof result.result === "string" ? result.result : "";
|
|
166
|
+
let parsed;
|
|
167
|
+
try {
|
|
168
|
+
parsed = parseAgentJson(text);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
throw new Error(`Claude Code returned no structured turn output (${text.slice(0, 160)})`);
|
|
172
|
+
}
|
|
173
|
+
const actions = toCuaActions(Array.isArray(parsed.actions) ? parsed.actions : []);
|
|
174
|
+
const done = parsed.done === true || (actions.length === 0 && typeof parsed.message === "string");
|
|
175
|
+
const outcome = declaredOutcomeOf(parsed.outcome);
|
|
176
|
+
const usage = result.usage;
|
|
177
|
+
const count = (key) => (typeof usage?.[key] === "number" ? usage[key] : undefined);
|
|
178
|
+
const input = count("input_tokens");
|
|
179
|
+
const output = count("output_tokens");
|
|
180
|
+
const cachedInput = count("cache_read_input_tokens");
|
|
181
|
+
const cacheWriteInput = count("cache_creation_input_tokens");
|
|
182
|
+
return {
|
|
183
|
+
actions,
|
|
184
|
+
pendingSafetyChecks: [],
|
|
185
|
+
done,
|
|
186
|
+
...(outcome === undefined ? {} : { outcome }),
|
|
187
|
+
...(typeof parsed.reasoning === "string" && parsed.reasoning.length > 0 ? { reasoning: parsed.reasoning } : {}),
|
|
188
|
+
...(typeof parsed.message === "string" && parsed.message.length > 0 ? { message: parsed.message } : {}),
|
|
189
|
+
// Claude Code reports its token counts per turn (#531). They are recorded as counts; the
|
|
190
|
+
// run's cost line stays "not priced", because a subscription is not a rate card.
|
|
191
|
+
...(input === undefined && output === undefined
|
|
192
|
+
? {}
|
|
193
|
+
: {
|
|
194
|
+
usage: {
|
|
195
|
+
...(input === undefined ? {} : { input }),
|
|
196
|
+
...(output === undefined ? {} : { output }),
|
|
197
|
+
...(cachedInput === undefined ? {} : { cachedInput }),
|
|
198
|
+
...(cacheWriteInput === undefined ? {} : { cacheWriteInput })
|
|
199
|
+
}
|
|
200
|
+
})
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=local-agent-claude-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-agent-claude-session.js","sourceRoot":"","sources":["../src/local-agent-claude-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ActorCapabilities } from "./actor-contract.js";
|
|
2
|
-
import type { CuaAction, CuaProvider } from "./computer-use.js";
|
|
1
|
+
import type { ActorCapabilities, ParticipantDeclaredOutcome } from "./actor-contract.js";
|
|
2
|
+
import type { CuaAction, CuaProvider, CuaTurnRequest } from "./computer-use.js";
|
|
3
3
|
import type { ReasoningEffort } from "./reasoning-effort.js";
|
|
4
4
|
export type LocalAgentId = "codex" | "claude";
|
|
5
5
|
export interface LocalAgentDescriptor {
|
|
@@ -37,6 +37,8 @@ export declare function toCuaActions(raw: readonly RawAction[]): CuaAction[];
|
|
|
37
37
|
* than in two places, and a response with no object at all is a turn error, never an empty turn —
|
|
38
38
|
* an empty turn would read to the loop as "the participant chose to do nothing".
|
|
39
39
|
*/
|
|
40
|
+
/** The declared outcome, only if it is one of the three words; anything else is absence. */
|
|
41
|
+
export declare function declaredOutcomeOf(value: unknown): ParticipantDeclaredOutcome | undefined;
|
|
40
42
|
export declare function parseAgentJson(text: string): Record<string, unknown>;
|
|
41
43
|
export interface SpawnResult {
|
|
42
44
|
code: number | null;
|
|
@@ -65,6 +67,7 @@ export interface LocalAgentProviderOptions {
|
|
|
65
67
|
workRoot?: string;
|
|
66
68
|
}
|
|
67
69
|
export declare const LOCAL_AGENT_CAPABILITIES: ActorCapabilities;
|
|
70
|
+
export declare function promptFor(request: CuaTurnRequest, screenshotPath: string, agent: LocalAgentId): string;
|
|
68
71
|
/**
|
|
69
72
|
* A CuaProvider backed by a coding agent that is already signed in on this machine.
|
|
70
73
|
*
|
package/dist/local-agent-cli.js
CHANGED
|
@@ -38,11 +38,13 @@ export function localAgentTurnSchema() {
|
|
|
38
38
|
return {
|
|
39
39
|
type: "object",
|
|
40
40
|
additionalProperties: false,
|
|
41
|
-
required: ["reasoning", "done", "message", "actions"],
|
|
41
|
+
required: ["reasoning", "done", "message", "outcome", "actions"],
|
|
42
42
|
properties: {
|
|
43
43
|
reasoning: { type: "string" },
|
|
44
44
|
done: { type: "boolean" },
|
|
45
45
|
message: { type: ["string", "null"] },
|
|
46
|
+
// The participant's own word for how it ended (#570). Null until done.
|
|
47
|
+
outcome: { type: ["string", "null"], enum: ["reached", "not_reached", "blocked", null] },
|
|
46
48
|
actions: {
|
|
47
49
|
type: "array",
|
|
48
50
|
items: {
|
|
@@ -108,6 +110,10 @@ export function toCuaActions(raw) {
|
|
|
108
110
|
* than in two places, and a response with no object at all is a turn error, never an empty turn —
|
|
109
111
|
* an empty turn would read to the loop as "the participant chose to do nothing".
|
|
110
112
|
*/
|
|
113
|
+
/** The declared outcome, only if it is one of the three words; anything else is absence. */
|
|
114
|
+
export function declaredOutcomeOf(value) {
|
|
115
|
+
return value === "reached" || value === "not_reached" || value === "blocked" ? value : undefined;
|
|
116
|
+
}
|
|
111
117
|
export function parseAgentJson(text) {
|
|
112
118
|
// ORDER MATTERS, and a test caught it: Claude Code's envelope is valid JSON whose `result`
|
|
113
119
|
// STRING contains a ```json fence. Stripping fences first reached inside that string and
|
|
@@ -170,11 +176,11 @@ export const LOCAL_AGENT_CAPABILITIES = {
|
|
|
170
176
|
inProcessTools: false,
|
|
171
177
|
license: "open"
|
|
172
178
|
};
|
|
173
|
-
function promptFor(request, screenshotPath, agent) {
|
|
179
|
+
export function promptFor(request, screenshotPath, agent) {
|
|
174
180
|
const hint = request.contextHint === undefined ? "" : `\n\nNote from the harness: ${request.contextHint}`;
|
|
175
181
|
// Claude Code has no --output-schema, so the shape is stated in the prompt for both; codex gets
|
|
176
182
|
// it enforced as well. Saying it twice costs nothing and keeps one prompt for both adapters.
|
|
177
|
-
const shape = '{"reasoning":string,"done":boolean,"message":string|null,'
|
|
183
|
+
const shape = '{"reasoning":string,"done":boolean,"message":string|null,"outcome":"reached"|"not_reached"|"blocked"|null,'
|
|
178
184
|
+ '"actions":[{"kind":"click|double_click|type|keypress|scroll|wait|done",'
|
|
179
185
|
+ '"x":int|null,"y":int|null,"text":string|null,"keys":[string]|null,"ms":int|null}]}';
|
|
180
186
|
const readFile = agent === "claude" ? `Read the image file ${screenshotPath}. ` : "";
|
|
@@ -184,7 +190,9 @@ function promptFor(request, screenshotPath, agent) {
|
|
|
184
190
|
`${readFile}That image is the CURRENT SCREEN. You are the participant: decide what to do next, `
|
|
185
191
|
+ "as this person would. Coordinates are pixels from the top-left of the screenshot.",
|
|
186
192
|
"Return between one and three actions. Set done=true ONLY when the task is finished or you are "
|
|
187
|
-
+ "giving up, and put your closing words in message."
|
|
193
|
+
+ "giving up, and put your closing words in message. When done=true, set outcome: reached if "
|
|
194
|
+
+ "the task is finished, blocked if something in the app stopped you, not_reached if you are "
|
|
195
|
+
+ "stopping for another reason. Otherwise outcome is null.",
|
|
188
196
|
`Reply with ONLY a JSON object of this shape: ${shape}`,
|
|
189
197
|
hint
|
|
190
198
|
].join("\n");
|
|
@@ -270,10 +278,12 @@ export function createLocalAgentProvider(options) {
|
|
|
270
278
|
const turn = parseAgentJson(payload);
|
|
271
279
|
const actions = toCuaActions(Array.isArray(turn.actions) ? turn.actions : []);
|
|
272
280
|
const done = turn.done === true || (actions.length === 0 && typeof turn.message === "string");
|
|
281
|
+
const outcome = declaredOutcomeOf(turn.outcome);
|
|
273
282
|
return {
|
|
274
283
|
actions,
|
|
275
284
|
pendingSafetyChecks: [],
|
|
276
285
|
done,
|
|
286
|
+
...(outcome === undefined ? {} : { outcome }),
|
|
277
287
|
...(typeof turn.reasoning === "string" && turn.reasoning.length > 0 ? { reasoning: turn.reasoning } : {}),
|
|
278
288
|
...(typeof turn.message === "string" && turn.message.length > 0 ? { message: turn.message } : {})
|
|
279
289
|
// No `usage`: a subscription CLI does not report tokens we can price, and inventing a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-agent-cli.js","sourceRoot":"","sources":["../src/local-agent-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-agent-cli.js","sourceRoot":"","sources":["../src/local-agent-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/program.js
CHANGED
|
@@ -10,6 +10,7 @@ import { discoverProviderKeys, listUserKeys, resolveKeyName, setUserKey, unsetUs
|
|
|
10
10
|
import { redactText } from "./redaction.js";
|
|
11
11
|
import { draftFeedback, listFeedback, renderIssueMarkdown, renderIssueUrl, verifyFeedback } from "./feedback.js";
|
|
12
12
|
import { runInit } from "./init.js";
|
|
13
|
+
import { computeStats, formatStatsHuman } from "./stats.js";
|
|
13
14
|
import { buildPayload, disabledByEnvironment, inHumanishCheckout, durationBucket, readTelemetryState, sendTelemetry, telemetryStatePath, deriveStudyFacts, TELEMETRY_NOTICE, writeTelemetryState } from "./telemetry.js";
|
|
14
15
|
import { inspectLabManifest, listLabManifests, resolveLabManifest } from "./labs.js";
|
|
15
16
|
import { runLabPreflight } from "./lab-preflight.js";
|
|
@@ -350,6 +351,7 @@ export function createProgram(io = {}) {
|
|
|
350
351
|
registerCleanupCommand(program, cliIo);
|
|
351
352
|
registerReviewCommand(program, cliIo);
|
|
352
353
|
registerRunsCommand(program, cliIo);
|
|
354
|
+
registerStatsCommand(program, cliIo);
|
|
353
355
|
registerCommsCommands(program, cliIo);
|
|
354
356
|
registerReclaimCommand(program, cliIo);
|
|
355
357
|
registerWatchCommand(program, cliIo);
|
|
@@ -891,6 +893,24 @@ function registerReviewCommand(parent, io) {
|
|
|
891
893
|
io.setExitCode("ok" in result && result.ok === false ? 2 : 0);
|
|
892
894
|
});
|
|
893
895
|
}
|
|
896
|
+
function registerStatsCommand(parent, io) {
|
|
897
|
+
parent
|
|
898
|
+
.command("stats")
|
|
899
|
+
.description("Cost, outcome, and duration roll-ups across run history (#472). Estimates stay labelled; unknown costs count as unknown.")
|
|
900
|
+
.summary("Roll up cost, outcomes, and durations across runs.")
|
|
901
|
+
.option("--lab <id>", "Only runs from this lab id.")
|
|
902
|
+
.option("--since <date>", "Only runs that started on or after this ISO date or datetime.")
|
|
903
|
+
.option("--cwd <path>", "Target project directory.", ".")
|
|
904
|
+
.option("--json", JSON_OPTION_DESCRIPTION)
|
|
905
|
+
.action(async (options, command) => {
|
|
906
|
+
const result = await computeStats(options.cwd, {
|
|
907
|
+
...(options.lab === undefined ? {} : { lab: options.lab }),
|
|
908
|
+
...(options.since === undefined ? {} : { since: options.since })
|
|
909
|
+
});
|
|
910
|
+
writeResult(command, io, result, formatStatsHuman);
|
|
911
|
+
io.setExitCode(result.ok ? 0 : 2);
|
|
912
|
+
});
|
|
913
|
+
}
|
|
894
914
|
function registerRunsCommand(parent, io) {
|
|
895
915
|
parent
|
|
896
916
|
.command("runs")
|