humanish 0.100.1 → 0.101.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 (36) hide show
  1. package/dist/actor-contract.d.ts +9 -9
  2. package/dist/actor-contract.js +15 -5
  3. package/dist/actor-contract.js.map +1 -1
  4. package/dist/computer-use.d.ts +13 -2
  5. package/dist/computer-use.js +108 -24
  6. package/dist/computer-use.js.map +1 -1
  7. package/dist/cua-actor-lab.js +34 -15
  8. package/dist/cua-actor-lab.js.map +1 -1
  9. package/dist/local-agent-cli.d.ts +10 -0
  10. package/dist/local-agent-cli.js +23 -7
  11. package/dist/local-agent-cli.js.map +1 -1
  12. package/dist/observer-app.html +1 -1
  13. package/dist/restricted-codex-participant-policy.d.ts +11 -5
  14. package/dist/restricted-codex-participant-policy.js +21 -49
  15. package/dist/restricted-codex-participant-policy.js.map +1 -1
  16. package/dist/restricted-codex-participant.d.ts +5 -1
  17. package/dist/restricted-codex-participant.js +158 -106
  18. package/dist/restricted-codex-participant.js.map +1 -1
  19. package/dist/restricted-codex-policy.d.ts +12 -5
  20. package/dist/restricted-codex-policy.js +62 -37
  21. package/dist/restricted-codex-policy.js.map +1 -1
  22. package/dist/restricted-codex-session.d.ts +24 -3
  23. package/dist/restricted-codex-session.js +208 -51
  24. package/dist/restricted-codex-session.js.map +1 -1
  25. package/dist/restricted-codex-transport.d.ts +11 -2
  26. package/dist/restricted-codex-transport.js +57 -6
  27. package/dist/restricted-codex-transport.js.map +1 -1
  28. package/docs/architecture/restricted-codex-analysis.md +7 -4
  29. package/docs/contracts/schemas.md +1 -1
  30. package/docs/goals/current.md +3 -3
  31. package/docs/ramp/README.md +4 -1
  32. package/docs/release/0.101.0-codex-ui-tools.md +28 -0
  33. package/package.json +1 -1
  34. package/dist/local-agent-appserver.d.ts +0 -44
  35. package/dist/local-agent-appserver.js +0 -269
  36. package/dist/local-agent-appserver.js.map +0 -1
@@ -10,15 +10,22 @@ export declare class RestrictedCodexStop extends Error {
10
10
  constructor(code: RestrictedCodexAnalysisErrorCode);
11
11
  }
12
12
  export declare class RestrictedCodexDeadline {
13
+ private readonly timeoutMs;
13
14
  private readonly signal?;
14
- readonly expiresAt: number;
15
+ private deadlineAt;
15
16
  code: RestrictedCodexAnalysisErrorCode | null;
16
17
  private readonly stopped;
17
18
  private rejectStopped;
18
- private readonly timer;
19
+ private timer;
20
+ private paused;
19
21
  private readonly onAbort;
20
22
  constructor(timeoutMs: number, signal?: AbortSignal | undefined);
21
23
  stop(code: RestrictedCodexAnalysisErrorCode): void;
24
+ get expiresAt(): number;
25
+ private arm;
26
+ /** Host tool execution is outside model time. A response starts a fresh inference slice. */
27
+ pause(): void;
28
+ resume(): void;
22
29
  check(): void;
23
30
  wait<T>(promise: Promise<T>): Promise<T>;
24
31
  close(): void;
@@ -44,6 +51,8 @@ export declare class RestrictedCodexTransport {
44
51
  private eventCount;
45
52
  private closing;
46
53
  onNotification: (method: string, params: Record<string, unknown>) => void;
54
+ onRequest: ((method: string, params: Record<string, unknown>) => Promise<Record<string, unknown>>) | undefined;
55
+ onRequestComplete: (() => void) | undefined;
47
56
  constructor(owned: OwnedCodexProcess, deadline: RestrictedCodexDeadline, frameLimit?: number);
48
57
  /** A completed turn releases its deadline and wire budget, not its conversation. */
49
58
  beginRequest(deadline: RestrictedCodexDeadline, frameLimit: number): void;
@@ -9,19 +9,22 @@ export class RestrictedCodexStop extends Error {
9
9
  }
10
10
  }
11
11
  export class RestrictedCodexDeadline {
12
+ timeoutMs;
12
13
  signal;
13
- expiresAt;
14
+ deadlineAt;
14
15
  code = null;
15
16
  stopped;
16
17
  rejectStopped;
17
18
  timer;
19
+ paused = false;
18
20
  onAbort = () => this.stop("cancelled");
19
21
  constructor(timeoutMs, signal) {
22
+ this.timeoutMs = timeoutMs;
20
23
  this.signal = signal;
21
- this.expiresAt = performance.now() + timeoutMs;
24
+ this.deadlineAt = performance.now() + timeoutMs;
22
25
  this.stopped = new Promise((_resolve, reject) => { this.rejectStopped = reject; });
23
26
  void this.stopped.catch(() => undefined);
24
- this.timer = setTimeout(() => this.stop("timeout"), timeoutMs);
27
+ this.arm(timeoutMs);
25
28
  signal?.addEventListener("abort", this.onAbort, { once: true });
26
29
  if (signal?.aborted)
27
30
  this.stop("cancelled");
@@ -32,8 +35,29 @@ export class RestrictedCodexDeadline {
32
35
  this.code = code;
33
36
  this.rejectStopped(new RestrictedCodexStop(code));
34
37
  }
38
+ get expiresAt() { return this.deadlineAt; }
39
+ arm(ms) {
40
+ clearTimeout(this.timer);
41
+ this.timer = setTimeout(() => this.stop("timeout"), Math.max(1, ms));
42
+ }
43
+ /** Host tool execution is outside model time. A response starts a fresh inference slice. */
44
+ pause() {
45
+ this.check();
46
+ if (this.paused)
47
+ throw new RestrictedCodexStop("codex_protocol_error");
48
+ clearTimeout(this.timer);
49
+ this.timer = undefined;
50
+ this.paused = true;
51
+ }
52
+ resume() {
53
+ if (!this.paused || this.code !== null)
54
+ return;
55
+ this.paused = false;
56
+ this.deadlineAt = performance.now() + this.timeoutMs;
57
+ this.arm(this.timeoutMs);
58
+ }
35
59
  check() {
36
- if (this.code === null && performance.now() >= this.expiresAt)
60
+ if (!this.paused && this.code === null && performance.now() >= this.deadlineAt)
37
61
  this.stop("timeout");
38
62
  if (this.code !== null)
39
63
  throw new RestrictedCodexStop(this.code);
@@ -102,6 +126,8 @@ export class RestrictedCodexTransport {
102
126
  eventCount = 0;
103
127
  closing = false;
104
128
  onNotification = () => undefined;
129
+ onRequest;
130
+ onRequestComplete;
105
131
  constructor(owned, deadline, frameLimit = CODEX_MAX_OUTPUT_BYTES) {
106
132
  this.owned = owned;
107
133
  this.deadline = deadline;
@@ -172,8 +198,33 @@ export class RestrictedCodexTransport {
172
198
  return;
173
199
  }
174
200
  if (value.id !== undefined && typeof value.method === "string") {
175
- this.write({ id: value.id, error: { code: -32601, message: "Analyst host requests are disabled" } });
176
- this.fail("codex_tool_call");
201
+ if (!this.onRequest || ++this.eventCount > CODEX_MAX_EVENTS) {
202
+ this.write({ id: value.id, error: { code: -32601, message: "Host request is disabled" } });
203
+ this.fail(this.eventCount > CODEX_MAX_EVENTS ? "response_too_large" : "codex_tool_call");
204
+ return;
205
+ }
206
+ const id = value.id;
207
+ void this.onRequest(value.method, codexRecord(value.params)).then(result => {
208
+ try {
209
+ if (this.closing || this.deadline.code !== null)
210
+ return;
211
+ this.write({ id, result });
212
+ this.deadline.resume();
213
+ this.stdoutBytes = 0;
214
+ this.eventCount = 0;
215
+ this.onRequestComplete?.();
216
+ }
217
+ catch {
218
+ this.fail("codex_process_failed");
219
+ }
220
+ }, error => {
221
+ try {
222
+ if (!this.closing && this.deadline.code === null)
223
+ this.write({ id, error: { code: -32000, message: "Host request failed" } });
224
+ }
225
+ catch { /* The owned process is already failing. */ }
226
+ this.fail(error instanceof RestrictedCodexStop ? error.code : "codex_tool_call");
227
+ });
177
228
  return;
178
229
  }
179
230
  if (typeof value.id === "number" && value.method === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"restricted-codex-transport.js","sourceRoot":"","sources":["../src/restricted-codex-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restricted-codex-transport.js","sourceRoot":"","sources":["../src/restricted-codex-transport.ts"],"names":[],"mappings":"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"}
@@ -37,12 +37,15 @@ actual notification/denial captures and provenance are in
37
37
  [`tests/fixtures/restricted-codex`](https://github.com/danielgwilson/humanish/blob/46330116726f74080fa18947c36da4fb4b333805/tests/fixtures/restricted-codex/README.md).
38
38
 
39
39
  Each analyst or readiness request owns a separate child process, temporary home
40
- and fresh thread. Participants use the same launcher with one process and thread
41
- for their entire interaction and closing feedback; successive turns append the
42
- current screenshot, context and action acknowledgments to that conversation.
40
+ and fresh thread. Participants share the native session implementation with a
41
+ separate UI-tool policy: Code Mode can call one Humanish desktop tool, and each
42
+ result supplies actual input acknowledgments and the current screenshot. Local
43
+ Firecracker and hosted E2B use this same participant implementation. Hosted
44
+ participants preserve operator authentication and model configuration; the
45
+ restricted analyst profile above remains unchanged.
43
46
  Codex manages context compaction. Humanish does not replace it with a rolling
44
47
  history window or restart a failed conversation without its memory. Participant
45
- threads never share state with each other or the analyst.
48
+ threads never share conversation state with each other or the analyst.
46
49
 
47
50
  An unresolved child process blocks new sessions until its exit is confirmed.
48
51
  Limits and deadlines apply to each request, including startup on the first turn.
@@ -3,7 +3,7 @@
3
3
  Date: 2026-06-02 (current-state note updated 2026-07-14)
4
4
 
5
5
  Status: reference map for the major contracts shipped through source version
6
- `0.100.1`; it is not an exhaustive inventory of command/result envelopes. Exported types,
6
+ `0.101.0`; it is not an exhaustive inventory of command/result envelopes. Exported types,
7
7
  schema constants, parsers, and validators in `src/` are authoritative. Rows
8
8
  marked "reserved" name layering intent only — no code emits or validates them
9
9
  yet. Do not emit a reserved schema.
@@ -1,9 +1,9 @@
1
1
  # Current Goals
2
2
 
3
- Status date: 2026-09-25. Release baseline: `0.100.1`.
3
+ Status date: 2026-09-25. Release baseline: `0.101.0`.
4
4
 
5
5
  This page guides work on current merged source. Published behavior is described
6
- in the [release notes](../release/0.100.1-participant-continuity.md).
6
+ in the [release notes](../release/0.101.0-codex-ui-tools.md).
7
7
  The [September 9 history](https://github.com/danielgwilson/humanish/blob/main/docs/goals/current-history-2026-09-09.md)
8
8
  preserves the former status log; its queues do not supersede this page.
9
9
 
@@ -88,7 +88,7 @@ requires decision-equivalent retained evidence and a real deletion branch.
88
88
  No first-party deletion branch has met that gate. Public demonstrations do not
89
89
  substitute for it.
90
90
 
91
- ## Current Program Truth (source `0.100.1`)
91
+ ## Current Program Truth (source `0.101.0`)
92
92
 
93
93
  | Surface | Available in merged source | Remaining boundary |
94
94
  | --- | --- | --- |
@@ -2,7 +2,7 @@
2
2
 
3
3
  Status: public-safe contributor and agent ramp.
4
4
 
5
- Package/source version in this tree: `0.100.1` (2026-09-25). The Observer is phone-usable as a stated requirement (observer/AGENTS.md); interactive primitives start from Base UI. The Observer renderer is the observer/ workspace artifact only; the legacy string-concat renderer was deleted at cutover (#426), and rollback is a version pin to 0.42.0. The containment boundary introduced in
5
+ Package/source version in this tree: `0.101.0` (2026-09-25). The Observer is phone-usable as a stated requirement (observer/AGENTS.md); interactive primitives start from Base UI. The Observer renderer is the observer/ workspace artifact only; the legacy string-concat renderer was deleted at cutover (#426), and rollback is a version pin to 0.42.0. The containment boundary introduced in
6
6
  `0.15.1` remains in force: managed run and output paths bind to validated
7
7
  physical filesystem identities, and stored provider IDs are evidence, not
8
8
  cleanup authority. The bundled OSS meta-lab is dry-run only until
@@ -54,6 +54,9 @@ If a change does not improve one of those loops, it probably belongs elsewhere.
54
54
 
55
55
  ## Current State
56
56
 
57
+ The [0.101.0 release note](../release/0.101.0-codex-ui-tools.md) describes native
58
+ Codex UI tools shared by local Firecracker and hosted E2B participants.
59
+
57
60
  The [0.100.1 release note](../release/0.100.1-participant-continuity.md) describes
58
61
  continuing local participant conversations and per-turn usage accounting.
59
62
 
@@ -0,0 +1,28 @@
1
+ # 0.101.0 — Shared Codex UI tools
2
+
3
+ Codex participants now interact through a native Humanish UI tool. One continuing
4
+ Codex conversation can call the tool repeatedly, inspect each new screenshot,
5
+ and give its final feedback. Humanish executes and records the inputs, including
6
+ rejected or skipped actions, before returning their actual status to Codex.
7
+
8
+ Local Firecracker and hosted E2B Codex participants use the same implementation.
9
+ The duplicate hosted adapter is removed. Hosted studies retain their operator
10
+ login, configured model selection and explicit reasoning effort; local account
11
+ studies retain their qualified isolated login profile. Codex runs on the host,
12
+ with desktop inputs sent to the selected sandbox. No credentials are moved into
13
+ the desktop and no new Firecracker image is required.
14
+
15
+ The native integration uses Codex CLI **0.154.0** and its experimental dynamic
16
+ tool protocol. Other CLI versions fail with an unsupported-version diagnostic.
17
+ Update to the supported version when moving a hosted study from an older CLI.
18
+
19
+ The existing loop still owns recordings, action limits, stop conditions and
20
+ cancellation. Pending tool calls are not counted as finished model requests.
21
+ Known pending usage informs spend estimates; final usage is recorded once when
22
+ the native turn settles. Per-inference token counts preserve API pricing tiers
23
+ inside a continuing conversation. Interrupted or compacted requests retain explicit usage
24
+ uncertainty. Account inference has unknown dollar cost.
25
+
26
+ Automatic analysis remains a separate, restricted analyst. The OpenAI Responses
27
+ computer-use provider and Claude Code conversation adapter remain supported.
28
+ Older recordings remain readable in Observer.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "humanish",
3
- "version": "0.100.1",
3
+ "version": "0.101.0",
4
4
  "description": "Open-source-safe CLI for persona simulation, observer review, and public-safe feedback drafts.",
5
5
  "author": "Daniel G Wilson <daniel@danielgwilson.com>",
6
6
  "keywords": [
@@ -1,44 +0,0 @@
1
- import { type ChildProcessWithoutNullStreams } from "node:child_process";
2
- import type { ActorCapabilities } from "./actor-contract.js";
3
- import type { CuaProvider, CuaTurn } from "./computer-use.js";
4
- import type { ReasoningEffort } from "./reasoning-effort.js";
5
- type JsonObject = Record<string, unknown>;
6
- /** The transport, injected so tests drive a fake server with no CLI and no spend. */
7
- export interface AppServerTransport {
8
- request(method: string, params: JsonObject): Promise<JsonObject>;
9
- notify(method: string, params: JsonObject): void;
10
- /** Resolves when the named notification arrives after the current turn began. */
11
- awaitNotification(method: string, timeoutMs: number): Promise<JsonObject>;
12
- close(): void;
13
- }
14
- /** Newline-delimited JSON-RPC over the child's stdio — the framing codex-app-server.ts uses. */
15
- export declare function stdioTransport(child: ChildProcessWithoutNullStreams): AppServerTransport;
16
- export interface AppServerProviderOptions {
17
- /** Absent = spawn `codex app-server`. Injected in tests. */
18
- transport?: AppServerTransport;
19
- model?: string;
20
- reasoningEffort?: ReasoningEffort;
21
- /** Per-turn wall clock. */
22
- timeoutMs?: number;
23
- cwd?: string;
24
- /** The persona/mission, set ONCE on the thread instead of re-sent every turn. */
25
- baseInstructions?: string;
26
- }
27
- export declare const APP_SERVER_CAPABILITIES: ActorCapabilities;
28
- /** The reply shape a turn is constrained to. Strict mode: every property in `required`. */
29
- export declare function turnOutputSchema(): JsonObject;
30
- export interface AppServerSession {
31
- provider: CuaProvider;
32
- /** Ends the thread and the process. The run owns the lifetime, not the provider. */
33
- close(): void;
34
- }
35
- /**
36
- * Start a thread and return a provider that spends it, one `turn/start` per computer-use turn.
37
- *
38
- * The thread is started EAGERLY (before the first screenshot) so the ~500ms handshake is paid
39
- * while the sandbox is still booting rather than inside turn one.
40
- */
41
- export declare function startAppServerSession(options?: AppServerProviderOptions): Promise<AppServerSession>;
42
- /** Read a `turn/completed` notification into a CuaTurn. Exported for tests. */
43
- export declare function turnFromNotification(note: JsonObject): CuaTurn;
44
- export {};
@@ -1,269 +0,0 @@
1
- // A codex app-server THREAD as the computer-use brain, instead of a fresh `codex exec` per turn.
2
- //
3
- // WHY THIS REPLACED THE ONE-SHOT VERSION, measured on this machine:
4
- // `codex exec` per turn ~9s every turn, and every turn starts cold
5
- // app-server thread ~500ms ONCE, then 2.7s / 5.8s / 8.9s per turn
6
- //
7
- // The speed is the smaller half. `codex exec` boots a CLI, loads config, agents and MCP servers on
8
- // every single turn, and — the part that actually matters — hands the model a conversation that
9
- // begins fresh each time. A participant driving a desktop that way has AMNESIA: it cannot remember
10
- // that it already tried the menu, because nothing carried. A thread remembers, which is how the
11
- // OpenAI computer-use provider has always worked (previous_response_id), and it is the difference
12
- // between studying one participant and studying sixty strangers who each see one screenshot.
13
- //
14
- // The protocol is not guessed: `codex app-server generate-json-schema` emits it, and it gives us
15
- // exactly what this loop needs — `turn/start` takes `input: [{type:"localImage", path}, ...]`,
16
- // an `outputSchema` that constrains the reply (so no fence-scraping), and per-turn `effort` and
17
- // `model` overrides described as applying "for this turn and subsequent turns".
18
- import { spawn } from "node:child_process";
19
- import readline from "node:readline";
20
- import { declaredOutcomeOf, toCuaActions } from "./local-agent-cli.js";
21
- /** Newline-delimited JSON-RPC over the child's stdio — the framing codex-app-server.ts uses. */
22
- export function stdioTransport(child) {
23
- const rl = readline.createInterface({ input: child.stdout });
24
- const pending = new Map();
25
- const waiters = [];
26
- let nextId = 0;
27
- rl.on("line", (line) => {
28
- let message;
29
- try {
30
- message = JSON.parse(line);
31
- }
32
- catch {
33
- return; // the server also logs non-JSON; ignore rather than crash the run
34
- }
35
- const id = message.id;
36
- if (typeof id === "number" && pending.has(id)) {
37
- const entry = pending.get(id);
38
- pending.delete(id);
39
- if (message.error !== undefined) {
40
- entry.reject(new Error(`codex app-server: ${JSON.stringify(message.error).slice(0, 300)}`));
41
- }
42
- else {
43
- entry.resolve((message.result ?? {}));
44
- }
45
- return;
46
- }
47
- if (typeof message.method === "string") {
48
- for (let index = waiters.length - 1; index >= 0; index -= 1) {
49
- if (waiters[index].method === message.method) {
50
- waiters.splice(index, 1)[0].resolve(message);
51
- }
52
- }
53
- }
54
- });
55
- return {
56
- request: async (method, params) => await new Promise((resolve, reject) => {
57
- const id = (nextId += 1);
58
- pending.set(id, { resolve, reject });
59
- child.stdin.write(`${JSON.stringify({ jsonrpc: "2.0", id, method, params })}\n`);
60
- }),
61
- notify: (method, params) => {
62
- child.stdin.write(`${JSON.stringify({ method, params })}\n`);
63
- },
64
- awaitNotification: async (method, timeoutMs) => await new Promise((resolve, reject) => {
65
- const timer = setTimeout(() => reject(new Error(`timed out waiting for ${method}`)), timeoutMs);
66
- waiters.push({
67
- method,
68
- resolve: (value) => {
69
- clearTimeout(timer);
70
- resolve(value);
71
- }
72
- });
73
- }),
74
- close: () => {
75
- rl.close();
76
- child.kill();
77
- }
78
- };
79
- }
80
- export const APP_SERVER_CAPABILITIES = {
81
- headless: true,
82
- structuredTrace: true,
83
- lanes: ["computer-use"],
84
- producesScreenshots: true,
85
- byoModel: true,
86
- preGrantableApprovals: false,
87
- inProcessTools: false,
88
- license: "open"
89
- };
90
- /** The reply shape a turn is constrained to. Strict mode: every property in `required`. */
91
- export function turnOutputSchema() {
92
- return {
93
- type: "object",
94
- additionalProperties: false,
95
- required: ["reasoning", "done", "message", "outcome", "actions"],
96
- properties: {
97
- reasoning: { type: "string" },
98
- done: { type: "boolean" },
99
- message: { type: ["string", "null"] },
100
- outcome: { type: ["string", "null"], enum: ["reached", "not_reached", "blocked", null] },
101
- actions: {
102
- type: "array",
103
- items: {
104
- type: "object",
105
- additionalProperties: false,
106
- required: ["kind", "x", "y", "text", "keys", "ms"],
107
- properties: {
108
- kind: { type: "string", enum: ["click", "double_click", "type", "keypress", "scroll", "wait", "done"] },
109
- x: { type: ["integer", "null"] },
110
- y: { type: ["integer", "null"] },
111
- text: { type: ["string", "null"] },
112
- keys: { type: ["array", "null"], items: { type: "string" } },
113
- ms: { type: ["integer", "null"] }
114
- }
115
- }
116
- }
117
- }
118
- };
119
- }
120
- function readNested(value, keys) {
121
- let current = value;
122
- for (const key of keys) {
123
- if (typeof current !== "object" || current === null)
124
- return undefined;
125
- current = current[key];
126
- }
127
- return typeof current === "string" ? current : undefined;
128
- }
129
- /**
130
- * Start a thread and return a provider that spends it, one `turn/start` per computer-use turn.
131
- *
132
- * The thread is started EAGERLY (before the first screenshot) so the ~500ms handshake is paid
133
- * while the sandbox is still booting rather than inside turn one.
134
- */
135
- export async function startAppServerSession(options = {}) {
136
- const timeoutMs = options.timeoutMs ?? 180_000;
137
- const cwd = options.cwd ?? process.cwd();
138
- const effort = options.reasoningEffort ?? "low";
139
- let child;
140
- let transport = options.transport;
141
- if (transport === undefined) {
142
- child = spawn("codex", ["app-server"], { cwd, stdio: ["pipe", "pipe", "pipe"] });
143
- // The server logs to stderr; draining it keeps the pipe from filling and stalling the run.
144
- child.stderr.resume();
145
- transport = stdioTransport(child);
146
- }
147
- await transport.request("initialize", {
148
- clientInfo: { name: "humanish_cli", title: "Humanish CLI", version: "0.1.0" },
149
- capabilities: {}
150
- });
151
- transport.notify("initialized", {});
152
- const thread = await transport.request("thread/start", {
153
- cwd,
154
- // The participant is here to look at a screen, not to touch this machine. read-only + never
155
- // is the same bound the one-shot version had, declared once for the whole thread.
156
- approvalPolicy: "never",
157
- sandbox: "read-only",
158
- serviceName: "humanish",
159
- // Nothing about this study belongs in the operator's codex history.
160
- ephemeral: true,
161
- ...(options.baseInstructions === undefined ? {} : { baseInstructions: options.baseInstructions }),
162
- ...(options.model === undefined ? {} : { model: options.model })
163
- });
164
- const threadId = readNested(thread, ["thread", "id"]);
165
- if (threadId === undefined) {
166
- transport.close();
167
- throw new Error("codex app-server did not return a thread id");
168
- }
169
- const provider = {
170
- id: "local-agent-codex-app-server",
171
- version: options.model ?? "codex app-server (local, operator-authenticated)",
172
- modelSettings: { reasoningEffort: effort },
173
- capabilities: APP_SERVER_CAPABILITIES,
174
- requiresFrame: true,
175
- async nextTurn(request, signal) {
176
- const frame = request.observation.screenshot;
177
- if (frame === undefined) {
178
- throw new Error("the codex app-server provider needs a screenshot and this observation has none");
179
- }
180
- const { mkdtemp, rm, writeFile } = await import("node:fs/promises");
181
- const { tmpdir } = await import("node:os");
182
- const path = await import("node:path");
183
- const work = await mkdtemp(path.join(tmpdir(), "humanish-appserver-"));
184
- try {
185
- const shot = path.join(work, "screen.png");
186
- await writeFile(shot, frame);
187
- const hint = request.contextHint === undefined ? "" : `\n\nNote from the harness: ${request.contextHint}`;
188
- const completed = transport.awaitNotification("turn/completed", timeoutMs);
189
- await transport.request("turn/start", {
190
- threadId,
191
- cwd,
192
- approvalPolicy: "never",
193
- sandboxPolicy: { type: "readOnly" },
194
- // Per-turn, because a lane declares it and the schema says it applies to this turn and
195
- // the ones after — so a lane that raises effort raises it from that point on.
196
- effort,
197
- ...(options.model === undefined ? {} : { model: options.model }),
198
- outputSchema: turnOutputSchema(),
199
- input: [
200
- { type: "localImage", path: shot },
201
- {
202
- type: "text",
203
- // The persona already lives in baseInstructions; this is only the turn's ask, which
204
- // is why it stays this short.
205
- text: `This is the current screen. What do you do next? When you set done=true, set outcome: reached if the task is finished, blocked if something in the app stopped you, not_reached if you are stopping for another reason.${hint}`,
206
- text_elements: []
207
- }
208
- ]
209
- });
210
- const abort = signal === undefined
211
- ? undefined
212
- : new Promise((_resolve, reject) => {
213
- signal.addEventListener("abort", () => reject(new Error("run stopped")), { once: true });
214
- });
215
- const note = await (abort === undefined ? completed : Promise.race([completed, abort]));
216
- return turnFromNotification(note);
217
- }
218
- finally {
219
- await rm(work, { recursive: true, force: true }).catch(() => undefined);
220
- }
221
- }
222
- };
223
- return {
224
- provider,
225
- close: () => {
226
- transport?.close();
227
- child?.kill();
228
- }
229
- };
230
- }
231
- /** Read a `turn/completed` notification into a CuaTurn. Exported for tests. */
232
- export function turnFromNotification(note) {
233
- const params = (note.params ?? {});
234
- const turn = (params.turn ?? {});
235
- // Read the protocol, do not guess it: `turn/completed` carries `turn.items`, and the model's
236
- // answer is the LAST `agentMessage` item, whose `text` is a plain string. The first cut of this
237
- // looked for `turn.output`, found nothing, and silently produced an empty turn — which the loop
238
- // read as "the participant is finished", ending a live study after one screenshot.
239
- const items = Array.isArray(turn.items) ? turn.items : [];
240
- const message = [...items].reverse().find((item) => item.type === "agentMessage");
241
- const text = typeof message?.text === "string" ? message.text : "";
242
- let parsed;
243
- try {
244
- // `outputSchema` constrains it to JSON, but a fence costs nothing to tolerate.
245
- const fenced = /```(?:json)?\s*([\s\S]*?)```/.exec(text);
246
- parsed = JSON.parse((fenced?.[1] ?? text).trim());
247
- }
248
- catch {
249
- // A turn whose constrained output did not arrive is a BROKEN turn, never an empty one: an
250
- // empty turn reads to the loop as "the participant chose to do nothing".
251
- throw new Error(`codex app-server returned no structured turn output (${text.slice(0, 160)})`);
252
- }
253
- const actions = toCuaActions(Array.isArray(parsed.actions) ? parsed.actions : []);
254
- return {
255
- actions,
256
- pendingSafetyChecks: [],
257
- // EXPLICIT only. The first version also inferred done from "no actions plus a message", and
258
- // that inference ended a live study on turn one with a 7-second "goal_satisfied": the model
259
- // narrated the screen, chose no action, and the provider called it finished. The schema
260
- // guarantees a `done` boolean, so there is nothing to infer.
261
- done: parsed.done === true,
262
- ...(declaredOutcomeOf(parsed.outcome) === undefined ? {} : { outcome: declaredOutcomeOf(parsed.outcome) }),
263
- ...(typeof parsed.reasoning === "string" && parsed.reasoning.length > 0 ? { reasoning: parsed.reasoning } : {}),
264
- ...(typeof parsed.message === "string" && parsed.message.length > 0 ? { message: parsed.message } : {})
265
- // No `usage`: a subscription thread reports nothing we could price, and a number invented here
266
- // is what would make the run's cost line a lie.
267
- };
268
- }
269
- //# sourceMappingURL=local-agent-appserver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-agent-appserver.js","sourceRoot":"","sources":["../src/local-agent-appserver.ts"],"names":[],"mappings":"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"}