humanish 0.0.1 → 0.15.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/AGENTS.md +77 -0
- package/CONTRIBUTING.md +39 -0
- package/LICENSE +21 -0
- package/README.md +435 -8
- package/SECURITY.md +34 -0
- package/dist/actor-contract.d.ts +107 -0
- package/dist/actor-contract.js +286 -0
- package/dist/actor-contract.js.map +1 -0
- package/dist/actor-registry.d.ts +73 -0
- package/dist/actor-registry.js +93 -0
- package/dist/actor-registry.js.map +1 -0
- package/dist/adapter-extension.d.ts +54 -0
- package/dist/adapter-extension.js +214 -0
- package/dist/adapter-extension.js.map +1 -0
- package/dist/argv.d.ts +1 -0
- package/dist/argv.js +8 -0
- package/dist/argv.js.map +1 -0
- package/dist/artifact-reference.d.ts +22 -0
- package/dist/artifact-reference.js +47 -0
- package/dist/artifact-reference.js.map +1 -0
- package/dist/browser-evidence-hygiene.d.ts +7 -0
- package/dist/browser-evidence-hygiene.js +40 -0
- package/dist/browser-evidence-hygiene.js.map +1 -0
- package/dist/claude-agent-sdk.d.ts +94 -0
- package/dist/claude-agent-sdk.js +356 -0
- package/dist/claude-agent-sdk.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -0
- package/dist/codex-app-server-ui.d.ts +39 -0
- package/dist/codex-app-server-ui.js +327 -0
- package/dist/codex-app-server-ui.js.map +1 -0
- package/dist/codex-app-server.d.ts +141 -0
- package/dist/codex-app-server.js +747 -0
- package/dist/codex-app-server.js.map +1 -0
- package/dist/command-failure.d.ts +29 -0
- package/dist/command-failure.js +54 -0
- package/dist/command-failure.js.map +1 -0
- package/dist/computer-use-actor.d.ts +52 -0
- package/dist/computer-use-actor.js +48 -0
- package/dist/computer-use-actor.js.map +1 -0
- package/dist/computer-use.d.ts +232 -0
- package/dist/computer-use.js +615 -0
- package/dist/computer-use.js.map +1 -0
- package/dist/concurrency.d.ts +1 -0
- package/dist/concurrency.js +27 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/concurrent-shared-world-lab.d.ts +115 -0
- package/dist/concurrent-shared-world-lab.js +1092 -0
- package/dist/concurrent-shared-world-lab.js.map +1 -0
- package/dist/core/git-state.d.ts +31 -0
- package/dist/core/git-state.js +142 -0
- package/dist/core/git-state.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/run-primitives.d.ts +66 -0
- package/dist/core/run-primitives.js +120 -0
- package/dist/core/run-primitives.js.map +1 -0
- package/dist/cua-actor-lab.d.ts +620 -0
- package/dist/cua-actor-lab.js +2834 -0
- package/dist/cua-actor-lab.js.map +1 -0
- package/dist/device-presets.d.ts +67 -0
- package/dist/device-presets.js +50 -0
- package/dist/device-presets.js.map +1 -0
- package/dist/e2b-desktop-executor.d.ts +101 -0
- package/dist/e2b-desktop-executor.js +309 -0
- package/dist/e2b-desktop-executor.js.map +1 -0
- package/dist/e2b-desktop-launch.d.ts +144 -0
- package/dist/e2b-desktop-launch.js +59 -0
- package/dist/e2b-desktop-launch.js.map +1 -0
- package/dist/e2b-detached.d.ts +53 -0
- package/dist/e2b-detached.js +130 -0
- package/dist/e2b-detached.js.map +1 -0
- package/dist/e2b-terminal-lab.d.ts +345 -0
- package/dist/e2b-terminal-lab.js +1467 -0
- package/dist/e2b-terminal-lab.js.map +1 -0
- package/dist/env-file.d.ts +14 -0
- package/dist/env-file.js +108 -0
- package/dist/env-file.js.map +1 -0
- package/dist/feedback.d.ts +51 -0
- package/dist/feedback.js +313 -0
- package/dist/feedback.js.map +1 -0
- package/dist/image-evidence.d.ts +2 -0
- package/dist/image-evidence.js +33 -0
- package/dist/image-evidence.js.map +1 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/init-templates.d.ts +12 -0
- package/dist/init-templates.js +369 -0
- package/dist/init-templates.js.map +1 -0
- package/dist/init.d.ts +26 -0
- package/dist/init.js +343 -0
- package/dist/init.js.map +1 -0
- package/dist/lab-app-runner.d.ts +78 -0
- package/dist/lab-app-runner.js +403 -0
- package/dist/lab-app-runner.js.map +1 -0
- package/dist/lab-config.d.ts +578 -0
- package/dist/lab-config.js +1751 -0
- package/dist/lab-config.js.map +1 -0
- package/dist/lab-engine.d.ts +77 -0
- package/dist/lab-engine.js +216 -0
- package/dist/lab-engine.js.map +1 -0
- package/dist/lab-preflight.d.ts +67 -0
- package/dist/lab-preflight.js +385 -0
- package/dist/lab-preflight.js.map +1 -0
- package/dist/labs.d.ts +53 -0
- package/dist/labs.js +176 -0
- package/dist/labs.js.map +1 -0
- package/dist/observer-assets.d.ts +2 -0
- package/dist/observer-assets.js +2630 -0
- package/dist/observer-assets.js.map +1 -0
- package/dist/observer-data.d.ts +63 -0
- package/dist/observer-data.js +145 -0
- package/dist/observer-data.js.map +1 -0
- package/dist/observer-static.d.ts +39 -0
- package/dist/observer-static.js +192 -0
- package/dist/observer-static.js.map +1 -0
- package/dist/observer.d.ts +46 -0
- package/dist/observer.js +353 -0
- package/dist/observer.js.map +1 -0
- package/dist/openai-responses-cu.d.ts +113 -0
- package/dist/openai-responses-cu.js +531 -0
- package/dist/openai-responses-cu.js.map +1 -0
- package/dist/oss-lab.d.ts +52 -0
- package/dist/oss-lab.js +299 -0
- package/dist/oss-lab.js.map +1 -0
- package/dist/oss-meta-lab-scoring.d.ts +15 -0
- package/dist/oss-meta-lab-scoring.js +145 -0
- package/dist/oss-meta-lab-scoring.js.map +1 -0
- package/dist/oss-meta-lab.d.ts +279 -0
- package/dist/oss-meta-lab.js +4889 -0
- package/dist/oss-meta-lab.js.map +1 -0
- package/dist/oss-remote-telemetry.d.ts +77 -0
- package/dist/oss-remote-telemetry.js +403 -0
- package/dist/oss-remote-telemetry.js.map +1 -0
- package/dist/persona.d.ts +35 -0
- package/dist/persona.js +133 -0
- package/dist/persona.js.map +1 -0
- package/dist/pi-agent-core.d.ts +77 -0
- package/dist/pi-agent-core.js +203 -0
- package/dist/pi-agent-core.js.map +1 -0
- package/dist/program.d.ts +54 -0
- package/dist/program.js +2347 -0
- package/dist/program.js.map +1 -0
- package/dist/redaction.d.ts +90 -0
- package/dist/redaction.js +292 -0
- package/dist/redaction.js.map +1 -0
- package/dist/run.d.ts +784 -0
- package/dist/run.js +4555 -0
- package/dist/run.js.map +1 -0
- package/dist/scripted-browser-actor.d.ts +294 -0
- package/dist/scripted-browser-actor.js +1286 -0
- package/dist/scripted-browser-actor.js.map +1 -0
- package/dist/scripted-browser-lab.d.ts +107 -0
- package/dist/scripted-browser-lab.js +738 -0
- package/dist/scripted-browser-lab.js.map +1 -0
- package/dist/shared-world-lab.d.ts +208 -0
- package/dist/shared-world-lab.js +1048 -0
- package/dist/shared-world-lab.js.map +1 -0
- package/dist/source-archive.d.ts +82 -0
- package/dist/source-archive.js +365 -0
- package/dist/source-archive.js.map +1 -0
- package/dist/stop-conditions.d.ts +26 -0
- package/dist/stop-conditions.js +66 -0
- package/dist/stop-conditions.js.map +1 -0
- package/dist/terminal-agent-actor.d.ts +36 -0
- package/dist/terminal-agent-actor.js +23 -0
- package/dist/terminal-agent-actor.js.map +1 -0
- package/docs/architecture/actor-contract.md +431 -0
- package/docs/architecture/github-feedback-loop.md +189 -0
- package/docs/architecture/local-codex-tui-actor.md +213 -0
- package/docs/architecture/observer.md +118 -0
- package/docs/architecture/oss-lab-poc.md +242 -0
- package/docs/architecture/project-layout.md +166 -0
- package/docs/architecture/state-driven-executor.md +203 -0
- package/docs/architecture/terminal-product-lane.md +148 -0
- package/docs/contracts/adapter-fixtures.md +80 -0
- package/docs/contracts/core.md +71 -0
- package/docs/contracts/feedback.md +145 -0
- package/docs/contracts/policy.md +305 -0
- package/docs/contracts/run-bundle.md +358 -0
- package/docs/contracts/schemas.md +984 -0
- package/docs/goals/current.md +409 -0
- package/docs/principles/invariants-and-defaults.md +135 -0
- package/docs/principles/self-driving-harness.md +129 -0
- package/docs/product/open-source-install-experience.md +229 -0
- package/docs/ramp/README.md +200 -0
- package/docs/release/open-source-readiness.md +208 -0
- package/docs/release/public-readiness-standard.md +205 -0
- package/docs/roadmap/world-class-open-source-v0.md +311 -0
- package/package.json +102 -8
- package/skills/humanish/SKILL.md +244 -0
- package/skills/humanish/agents/openai.yaml +7 -0
- package/index.js +0 -1
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { ACTOR_TRACE_SCHEMA, CLAUDE_AGENT_SDK_CAPABILITIES } from "./actor-contract.js";
|
|
4
|
+
import { redactText } from "./redaction.js";
|
|
5
|
+
// SDK result subtypes -> ActorStatus. error_max_turns / error_max_budget_usd are
|
|
6
|
+
// the SDK's own configured resource limits (a harness ceiling), mapped to
|
|
7
|
+
// timed_out. They are NOT the persona's "gave_up": that is reserved for
|
|
8
|
+
// persona-judged abandonment in the live actor loop.
|
|
9
|
+
export function claudeResultSubtypeToStatus(subtype) {
|
|
10
|
+
switch (subtype) {
|
|
11
|
+
case "success":
|
|
12
|
+
return "passed";
|
|
13
|
+
case "error_max_turns":
|
|
14
|
+
case "error_max_budget_usd":
|
|
15
|
+
return "timed_out";
|
|
16
|
+
case "error_during_execution":
|
|
17
|
+
case "error_max_structured_output_retries":
|
|
18
|
+
return "failed";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function claudeStatusToCompletionReason(status) {
|
|
22
|
+
switch (status) {
|
|
23
|
+
case "passed":
|
|
24
|
+
return "turn_completed";
|
|
25
|
+
case "timed_out":
|
|
26
|
+
return "timed_out";
|
|
27
|
+
case "blocked":
|
|
28
|
+
return "blocked_approval";
|
|
29
|
+
case "failed":
|
|
30
|
+
return "actor_error";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function pickClaudeTokenUsage(usage, costUsd) {
|
|
34
|
+
const num = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
35
|
+
const input = num(usage?.input_tokens);
|
|
36
|
+
const output = num(usage?.output_tokens);
|
|
37
|
+
const total = input !== undefined && output !== undefined ? input + output : undefined;
|
|
38
|
+
const cost = num(costUsd);
|
|
39
|
+
const tokenUsage = {
|
|
40
|
+
...(input === undefined ? {} : { input }),
|
|
41
|
+
...(output === undefined ? {} : { output }),
|
|
42
|
+
...(total === undefined ? {} : { total }),
|
|
43
|
+
...(cost === undefined ? {} : { costUsd: cost })
|
|
44
|
+
};
|
|
45
|
+
return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;
|
|
46
|
+
}
|
|
47
|
+
// String content is plain user input text (the Anthropic MessageParam only carries
|
|
48
|
+
// tool_use/tool_result as block arrays, never strings), and user input is not
|
|
49
|
+
// surfaced as trace items, so returning [] here is intentional, not data loss.
|
|
50
|
+
function contentBlocks(message) {
|
|
51
|
+
return Array.isArray(message.content) ? message.content : [];
|
|
52
|
+
}
|
|
53
|
+
function elapsedMs(startedAt, completedAt) {
|
|
54
|
+
const start = Date.parse(startedAt);
|
|
55
|
+
const end = Date.parse(completedAt);
|
|
56
|
+
return Number.isFinite(start) && Number.isFinite(end) && end >= start ? end - start : 0;
|
|
57
|
+
}
|
|
58
|
+
// Project the Claude SDK message stream into provider-neutral items. assistant
|
|
59
|
+
// content blocks (text/thinking/tool_use) and user tool_result blocks map to
|
|
60
|
+
// message/reasoning/tool_call. Claude does not emit distinct plan/file_change/
|
|
61
|
+
// screenshot/approval events in this slice, so none are fabricated. Tool inputs
|
|
62
|
+
// are intentionally not surfaced (they can carry arbitrary text); only the tool
|
|
63
|
+
// name is, redacted.
|
|
64
|
+
function claudeMessagesToActorItems(messages) {
|
|
65
|
+
const items = [];
|
|
66
|
+
const toolNames = new Map();
|
|
67
|
+
let messageOrdinal = 0;
|
|
68
|
+
for (const message of messages) {
|
|
69
|
+
if (message.type === "assistant") {
|
|
70
|
+
for (const block of contentBlocks(message.message)) {
|
|
71
|
+
if (block.type === "text") {
|
|
72
|
+
messageOrdinal += 1;
|
|
73
|
+
const text = block.text.trim();
|
|
74
|
+
items.push({
|
|
75
|
+
id: `message-${messageOrdinal}`,
|
|
76
|
+
kind: "message",
|
|
77
|
+
lifecycle: "completed",
|
|
78
|
+
title: "Assistant message",
|
|
79
|
+
...(text.length > 0 ? { text: redactText(text) } : {})
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else if (block.type === "thinking") {
|
|
83
|
+
messageOrdinal += 1;
|
|
84
|
+
const thinking = block.thinking.trim();
|
|
85
|
+
items.push({
|
|
86
|
+
id: `reasoning-${messageOrdinal}`,
|
|
87
|
+
kind: "reasoning",
|
|
88
|
+
lifecycle: "completed",
|
|
89
|
+
title: "Reasoning",
|
|
90
|
+
...(thinking.length > 0 ? { text: redactText(thinking) } : {})
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else if (block.type === "tool_use") {
|
|
94
|
+
const name = redactText(block.name);
|
|
95
|
+
toolNames.set(block.id, name);
|
|
96
|
+
items.push({
|
|
97
|
+
id: block.id,
|
|
98
|
+
kind: "tool_call",
|
|
99
|
+
lifecycle: "started",
|
|
100
|
+
title: name,
|
|
101
|
+
tool: { name }
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (message.type === "user") {
|
|
107
|
+
for (const block of contentBlocks(message.message)) {
|
|
108
|
+
if (block.type === "tool_result") {
|
|
109
|
+
const name = toolNames.get(block.tool_use_id) ?? "tool";
|
|
110
|
+
items.push({
|
|
111
|
+
id: `${block.tool_use_id}-result`,
|
|
112
|
+
kind: "tool_call",
|
|
113
|
+
lifecycle: "completed",
|
|
114
|
+
...(block.is_error ? { status: "error" } : {}),
|
|
115
|
+
title: name,
|
|
116
|
+
tool: { name }
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return items;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Map a Claude Agent SDK session into the provider-neutral ActorTrace. Pure and
|
|
126
|
+
* side-effect-free; mirrors codexResultToActorTrace / piSessionToActorTrace. The
|
|
127
|
+
* persona reference is supplied by the harness.
|
|
128
|
+
*/
|
|
129
|
+
export function claudeSessionToActorTrace(session, persona) {
|
|
130
|
+
const result = [...session.messages].reverse().find((message) => message.type === "result");
|
|
131
|
+
// Match the init message by subtype: the SDK emits other system messages
|
|
132
|
+
// (hook_started/hook_response) first, and only init carries model/session.
|
|
133
|
+
const init = session.messages.find((message) => message.type === "system" && message.subtype === "init");
|
|
134
|
+
const subtype = result?.type === "result" ? result.subtype : "error_during_execution";
|
|
135
|
+
const status = claudeResultSubtypeToStatus(subtype);
|
|
136
|
+
const sessionId = (result?.type === "result" ? result.session_id : undefined) ?? (init?.type === "system" ? init.session_id : undefined);
|
|
137
|
+
const model = init?.type === "system" ? init.model : undefined;
|
|
138
|
+
const durationMs = result?.type === "result" && typeof result.duration_ms === "number"
|
|
139
|
+
? result.duration_ms
|
|
140
|
+
: elapsedMs(session.startedAt, session.completedAt);
|
|
141
|
+
const reason = result?.type === "result" ? result.result ?? `claude session ended: ${subtype}` : "claude session produced no result message";
|
|
142
|
+
const tokenUsage = result?.type === "result" ? pickClaudeTokenUsage(result.usage, result.total_cost_usd) : undefined;
|
|
143
|
+
const items = claudeMessagesToActorItems(session.messages);
|
|
144
|
+
return {
|
|
145
|
+
schema: ACTOR_TRACE_SCHEMA,
|
|
146
|
+
provider: "claude-agent-sdk",
|
|
147
|
+
...(session.providerVersion === undefined ? {} : { providerVersion: session.providerVersion }),
|
|
148
|
+
protocol: "in-process-sdk",
|
|
149
|
+
lane: "code",
|
|
150
|
+
persona,
|
|
151
|
+
redaction: {
|
|
152
|
+
status: "passed",
|
|
153
|
+
screenshots: "n/a",
|
|
154
|
+
notes: "Claude Agent SDK message stream projected to actor trace; secret-like text is rejected by verify."
|
|
155
|
+
},
|
|
156
|
+
startedAt: session.startedAt,
|
|
157
|
+
completedAt: session.completedAt,
|
|
158
|
+
durationMs,
|
|
159
|
+
status,
|
|
160
|
+
completionReason: claudeStatusToCompletionReason(status),
|
|
161
|
+
reason: redactText(reason),
|
|
162
|
+
ids: {
|
|
163
|
+
...(sessionId === undefined ? {} : { sessionId }),
|
|
164
|
+
...(model === undefined ? {} : { model })
|
|
165
|
+
},
|
|
166
|
+
counts: {
|
|
167
|
+
messages: session.messages.length,
|
|
168
|
+
items: items.length
|
|
169
|
+
},
|
|
170
|
+
items,
|
|
171
|
+
...(tokenUsage === undefined ? {} : { tokenUsage }),
|
|
172
|
+
capabilities: CLAUDE_AGENT_SDK_CAPABILITIES
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
function defaultClaudeSystemPrompt(persona) {
|
|
176
|
+
const traits = persona.traitsApplied.length > 0 ? persona.traitsApplied.join(", ") : "none";
|
|
177
|
+
return `You are simulating a software user persona for a public-safe UX test harness. Persona id: ${persona.id}. Applied traits: ${traits}. Stay in character, attempt the requested task, then stop; do not ask clarifying questions. Never print secrets, keys, or local file paths.`;
|
|
178
|
+
}
|
|
179
|
+
function isMissingClaudeAgentSdk(error) {
|
|
180
|
+
return (typeof error === "object" &&
|
|
181
|
+
error !== null &&
|
|
182
|
+
error.code === "ERR_MODULE_NOT_FOUND" &&
|
|
183
|
+
String(error.message ?? "").includes("@anthropic-ai/claude-agent-sdk"));
|
|
184
|
+
}
|
|
185
|
+
async function loadClaudeAgentSdkQuery() {
|
|
186
|
+
try {
|
|
187
|
+
const sdk = (await import("@anthropic-ai/claude-agent-sdk"));
|
|
188
|
+
return sdk.query;
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (isMissingClaudeAgentSdk(error)) {
|
|
192
|
+
throw new Error("Live Claude Agent SDK runs require the optional peer dependency @anthropic-ai/claude-agent-sdk. Install it with `npm i -D @anthropic-ai/claude-agent-sdk`, or inject a queryFn for tests.");
|
|
193
|
+
}
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Recursively redact every string in a value so the near-raw event log cannot
|
|
198
|
+
// carry a secret or local path (the mapper only redacts the trace projection).
|
|
199
|
+
function redactJsonDeep(value) {
|
|
200
|
+
if (typeof value === "string") {
|
|
201
|
+
return redactText(value);
|
|
202
|
+
}
|
|
203
|
+
if (Array.isArray(value)) {
|
|
204
|
+
return value.map((entry) => redactJsonDeep(entry));
|
|
205
|
+
}
|
|
206
|
+
if (value !== null && typeof value === "object") {
|
|
207
|
+
const out = {};
|
|
208
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
209
|
+
out[key] = redactJsonDeep(entry);
|
|
210
|
+
}
|
|
211
|
+
return out;
|
|
212
|
+
}
|
|
213
|
+
return value;
|
|
214
|
+
}
|
|
215
|
+
function renderClaudeTranscript(trace) {
|
|
216
|
+
const lines = [];
|
|
217
|
+
for (const item of trace.items) {
|
|
218
|
+
if (item.kind === "message" && item.text) {
|
|
219
|
+
lines.push(`assistant: ${item.text}`);
|
|
220
|
+
}
|
|
221
|
+
else if (item.kind === "reasoning" && item.text) {
|
|
222
|
+
lines.push(`reasoning: ${item.text}`);
|
|
223
|
+
}
|
|
224
|
+
else if (item.kind === "tool_call") {
|
|
225
|
+
lines.push(`tool ${item.lifecycle}: ${item.tool?.name ?? item.title}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return lines.join("\n");
|
|
229
|
+
}
|
|
230
|
+
const CLAUDE_ARTIFACT_DIR = "claude-agent-sdk";
|
|
231
|
+
// Map the session through the pure mapper and write the three evidence artifacts.
|
|
232
|
+
// Shared by the normal path and the load-failure path so both always leave a bundle.
|
|
233
|
+
async function finishClaudeSession(runRoot, persona, session, envelopeLines) {
|
|
234
|
+
const eventsPath = path.join(CLAUDE_ARTIFACT_DIR, "events.ndjson");
|
|
235
|
+
const tracePath = path.join(CLAUDE_ARTIFACT_DIR, "summary.json");
|
|
236
|
+
const transcriptPath = path.join(CLAUDE_ARTIFACT_DIR, "transcript.txt");
|
|
237
|
+
const trace = claudeSessionToActorTrace(session, persona);
|
|
238
|
+
const transcript = renderClaudeTranscript(trace);
|
|
239
|
+
await writeFile(path.join(runRoot, eventsPath), envelopeLines.length > 0 ? `${envelopeLines.join("\n")}\n` : "", "utf8");
|
|
240
|
+
await writeFile(path.join(runRoot, tracePath), `${JSON.stringify(trace, null, 2)}\n`, "utf8");
|
|
241
|
+
await writeFile(path.join(runRoot, transcriptPath), transcript.length > 0 ? transcript : "No Claude Agent SDK transcript output captured.\n", "utf8");
|
|
242
|
+
return {
|
|
243
|
+
status: trace.status,
|
|
244
|
+
reason: trace.reason,
|
|
245
|
+
durationMs: trace.durationMs,
|
|
246
|
+
trace,
|
|
247
|
+
session,
|
|
248
|
+
transcriptPath,
|
|
249
|
+
tracePath,
|
|
250
|
+
eventsPath,
|
|
251
|
+
tail: transcript.slice(-6000)
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Drive a Claude Agent SDK session (or an injected fake) and write the three
|
|
256
|
+
* provider-neutral evidence artifacts, mirroring runCodexAppServerSession. The
|
|
257
|
+
* mapping is delegated to the pure claudeSessionToActorTrace. A load failure or
|
|
258
|
+
* timeout still produces a (failed/timed_out) bundle rather than throwing.
|
|
259
|
+
*/
|
|
260
|
+
export async function runClaudeAgentSession(options) {
|
|
261
|
+
await mkdir(path.join(options.runRoot, CLAUDE_ARTIFACT_DIR), { recursive: true });
|
|
262
|
+
const startedAt = new Date().toISOString();
|
|
263
|
+
const startedMs = Date.now();
|
|
264
|
+
// Resolve the query function. A failure to load the optional SDK is captured as
|
|
265
|
+
// a failed bundle (artifacts still written) rather than propagated.
|
|
266
|
+
let queryFn;
|
|
267
|
+
try {
|
|
268
|
+
queryFn = options.queryFn ?? (await (options.loadQueryFn ?? loadClaudeAgentSdkQuery)());
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
const reason = redactText(error instanceof Error ? error.message : String(error));
|
|
272
|
+
const session = {
|
|
273
|
+
startedAt,
|
|
274
|
+
completedAt: new Date().toISOString(),
|
|
275
|
+
messages: [{ type: "result", subtype: "error_during_execution", is_error: true, duration_ms: Date.now() - startedMs, result: reason }]
|
|
276
|
+
};
|
|
277
|
+
return finishClaudeSession(options.runRoot, options.persona, session, [JSON.stringify({ at: startedAt, error: reason })]);
|
|
278
|
+
}
|
|
279
|
+
const queryOptions = {
|
|
280
|
+
systemPrompt: options.systemPrompt ?? defaultClaudeSystemPrompt(options.persona),
|
|
281
|
+
settingSources: [],
|
|
282
|
+
allowedTools: [],
|
|
283
|
+
disallowedTools: ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "WebSearch", "WebFetch", "Task", "NotebookEdit"],
|
|
284
|
+
permissionMode: "default",
|
|
285
|
+
cwd: options.cwd,
|
|
286
|
+
maxTurns: options.maxTurns ?? 8,
|
|
287
|
+
includePartialMessages: false,
|
|
288
|
+
...(options.model ? { model: options.model } : {})
|
|
289
|
+
};
|
|
290
|
+
const messages = [];
|
|
291
|
+
const envelopeLines = [];
|
|
292
|
+
let timedOut = false;
|
|
293
|
+
// Drive the iterator manually, racing each step against the deadline so a hung
|
|
294
|
+
// generator (or a non-cooperative one) cannot block past timeoutMs. abort() also
|
|
295
|
+
// signals the real SDK to stop its underlying request.
|
|
296
|
+
const abortController = new AbortController();
|
|
297
|
+
queryOptions.abortController = abortController;
|
|
298
|
+
const deadline = startedMs + options.timeoutMs;
|
|
299
|
+
const iterator = queryFn({ prompt: options.prompt, options: queryOptions })[Symbol.asyncIterator]();
|
|
300
|
+
try {
|
|
301
|
+
while (true) {
|
|
302
|
+
const remaining = deadline - Date.now();
|
|
303
|
+
if (remaining <= 0) {
|
|
304
|
+
timedOut = true;
|
|
305
|
+
abortController.abort();
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
let timer;
|
|
309
|
+
const timeout = new Promise((resolve) => {
|
|
310
|
+
timer = setTimeout(() => resolve({ timedOut: true }), remaining);
|
|
311
|
+
});
|
|
312
|
+
let step;
|
|
313
|
+
try {
|
|
314
|
+
step = await Promise.race([iterator.next(), timeout]);
|
|
315
|
+
}
|
|
316
|
+
finally {
|
|
317
|
+
if (timer) {
|
|
318
|
+
clearTimeout(timer);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if ("timedOut" in step) {
|
|
322
|
+
timedOut = true;
|
|
323
|
+
abortController.abort();
|
|
324
|
+
// Best-effort generator teardown; swallow rejection (the real SDK manages
|
|
325
|
+
// a subprocess that can reject on cleanup) to avoid an unhandled rejection.
|
|
326
|
+
const returned = iterator.return?.();
|
|
327
|
+
if (returned) {
|
|
328
|
+
void returned.catch(() => undefined);
|
|
329
|
+
}
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
if (step.done) {
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
messages.push(step.value);
|
|
336
|
+
envelopeLines.push(JSON.stringify({ at: new Date().toISOString(), message: redactJsonDeep(step.value) }));
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
envelopeLines.push(JSON.stringify({ at: new Date().toISOString(), error: redactText(error instanceof Error ? error.message : String(error)) }));
|
|
341
|
+
}
|
|
342
|
+
const completedAt = new Date().toISOString();
|
|
343
|
+
// Synthesize a terminal if the stream never produced a result message (timeout,
|
|
344
|
+
// abort, or a clean finish without one). The mapper maps these to timed_out/failed.
|
|
345
|
+
if (!messages.some((message) => message.type === "result")) {
|
|
346
|
+
messages.push({
|
|
347
|
+
type: "result",
|
|
348
|
+
subtype: timedOut ? "error_max_turns" : "error_during_execution",
|
|
349
|
+
is_error: true,
|
|
350
|
+
duration_ms: Date.now() - startedMs,
|
|
351
|
+
result: timedOut ? "Claude session timed out before completion." : "Claude session ended without a result message."
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
return finishClaudeSession(options.runRoot, options.persona, { messages, startedAt, completedAt }, envelopeLines);
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=claude-agent-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-agent-sdk.js","sourceRoot":"","sources":["../src/claude-agent-sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,aAAa,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type CodexAppServerRunOptions, type CodexAppServerRunResult, type CodexAppServerStatus } from "./codex-app-server.js";
|
|
2
|
+
export declare const CODEX_APP_SERVER_UI_SCHEMA = "humanish.codex-app-server-ui.v1";
|
|
3
|
+
type CodexAppServerUiStatus = "starting" | "running" | CodexAppServerStatus;
|
|
4
|
+
export interface CodexAppServerUiOptions {
|
|
5
|
+
actorCommand?: string;
|
|
6
|
+
cwd: string;
|
|
7
|
+
keepOpen?: boolean;
|
|
8
|
+
model?: string;
|
|
9
|
+
port?: number;
|
|
10
|
+
prompt: string;
|
|
11
|
+
runRoot: string;
|
|
12
|
+
sandbox?: CodexAppServerRunOptions["sandbox"];
|
|
13
|
+
serviceName?: string;
|
|
14
|
+
stateFile?: string;
|
|
15
|
+
timeoutMs: number;
|
|
16
|
+
}
|
|
17
|
+
export interface CodexAppServerUiState {
|
|
18
|
+
schema: typeof CODEX_APP_SERVER_UI_SCHEMA;
|
|
19
|
+
artifactRoot: string;
|
|
20
|
+
cwd: string;
|
|
21
|
+
promptDigest: string;
|
|
22
|
+
reason: string;
|
|
23
|
+
result?: CodexAppServerRunResult;
|
|
24
|
+
runRoot: string;
|
|
25
|
+
startedAt: string;
|
|
26
|
+
status: CodexAppServerUiStatus;
|
|
27
|
+
stateFile: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
url?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface CodexAppServerUiController {
|
|
32
|
+
close(): Promise<void>;
|
|
33
|
+
completion: Promise<CodexAppServerUiState>;
|
|
34
|
+
initialState: CodexAppServerUiState;
|
|
35
|
+
stateFile: string;
|
|
36
|
+
url: string;
|
|
37
|
+
}
|
|
38
|
+
export declare function startCodexAppServerUi(options: CodexAppServerUiOptions): Promise<CodexAppServerUiController>;
|
|
39
|
+
export {};
|