humanish 0.100.1 → 0.102.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 (123) hide show
  1. package/README.md +3 -2
  2. package/dist/actor-contract.d.ts +9 -9
  3. package/dist/actor-contract.js +15 -5
  4. package/dist/actor-contract.js.map +1 -1
  5. package/dist/affordance.d.ts +2 -0
  6. package/dist/affordance.js +3 -0
  7. package/dist/affordance.js.map +1 -1
  8. package/dist/browser-control-client.d.ts +2 -0
  9. package/dist/browser-control-client.js +4 -0
  10. package/dist/browser-control-client.js.map +1 -1
  11. package/dist/browser-control-dispatcher.js +3 -0
  12. package/dist/browser-control-dispatcher.js.map +1 -1
  13. package/dist/browser-control-protocol.d.ts +77 -0
  14. package/dist/browser-control-protocol.js +31 -4
  15. package/dist/browser-control-protocol.js.map +1 -1
  16. package/dist/computer-use.d.ts +22 -2
  17. package/dist/computer-use.js +144 -32
  18. package/dist/computer-use.js.map +1 -1
  19. package/dist/cua-actor-lab.d.ts +1 -0
  20. package/dist/cua-actor-lab.js +44 -21
  21. package/dist/cua-actor-lab.js.map +1 -1
  22. package/dist/cua-speech.d.ts +13 -0
  23. package/dist/cua-speech.js +2 -0
  24. package/dist/cua-speech.js.map +1 -0
  25. package/dist/desktop-session.js +1 -0
  26. package/dist/desktop-session.js.map +1 -1
  27. package/dist/doctor-lab.js +1 -1
  28. package/dist/doctor-lab.js.map +1 -1
  29. package/dist/e2b-cua-desktop.js +51 -42
  30. package/dist/e2b-cua-desktop.js.map +1 -1
  31. package/dist/e2b-cua-provisioning.d.ts +4 -1
  32. package/dist/e2b-cua-provisioning.js +8 -2
  33. package/dist/e2b-cua-provisioning.js.map +1 -1
  34. package/dist/e2b-desktop-executor.js +3 -0
  35. package/dist/e2b-desktop-executor.js.map +1 -1
  36. package/dist/e2b-desktop-launch.d.ts +11 -1
  37. package/dist/e2b-desktop-launch.js.map +1 -1
  38. package/dist/e2b-desktop-media.d.ts +14 -0
  39. package/dist/e2b-desktop-media.js +58 -0
  40. package/dist/e2b-desktop-media.js.map +1 -0
  41. package/dist/guest-bootstrap.d.ts +4 -2
  42. package/dist/guest-bootstrap.js +16 -9
  43. package/dist/guest-bootstrap.js.map +1 -1
  44. package/dist/guest-desktop-executor.js +1 -0
  45. package/dist/guest-desktop-executor.js.map +1 -1
  46. package/dist/guest-desktop-media.d.ts +33 -0
  47. package/dist/guest-desktop-media.js +281 -0
  48. package/dist/guest-desktop-media.js.map +1 -0
  49. package/dist/guest-media-config.d.ts +15 -0
  50. package/dist/guest-media-config.js +8 -0
  51. package/dist/guest-media-config.js.map +1 -0
  52. package/dist/guest-media-worker.d.ts +1 -0
  53. package/dist/guest-media-worker.js +319 -0
  54. package/dist/guest-media-worker.js.map +1 -0
  55. package/dist/guest-runtime-desktop.d.ts +3 -1
  56. package/dist/guest-runtime-desktop.js +20 -3
  57. package/dist/guest-runtime-desktop.js.map +1 -1
  58. package/dist/guest-runtime-main.js +2 -2
  59. package/dist/guest-runtime-main.js.map +1 -1
  60. package/dist/guest-runtime.d.ts +2 -1
  61. package/dist/guest-runtime.js +1 -1
  62. package/dist/guest-runtime.js.map +1 -1
  63. package/dist/lab-config.d.ts +2 -2
  64. package/dist/lab-config.js +15 -4
  65. package/dist/lab-config.js.map +1 -1
  66. package/dist/lab-summary.js +1 -1
  67. package/dist/lab-summary.js.map +1 -1
  68. package/dist/local-agent-cli.d.ts +10 -0
  69. package/dist/local-agent-cli.js +23 -7
  70. package/dist/local-agent-cli.js.map +1 -1
  71. package/dist/local-firecracker-desktop.d.ts +3 -0
  72. package/dist/local-firecracker-desktop.js +7 -1
  73. package/dist/local-firecracker-desktop.js.map +1 -1
  74. package/dist/local-firecracker-study.js +16 -2
  75. package/dist/local-firecracker-study.js.map +1 -1
  76. package/dist/local-runtime-config.js +5 -2
  77. package/dist/local-runtime-config.js.map +1 -1
  78. package/dist/local-runtime-release.d.ts +2 -0
  79. package/dist/local-runtime-release.js +15 -0
  80. package/dist/local-runtime-release.js.map +1 -1
  81. package/dist/local-runtime.d.ts +1 -0
  82. package/dist/local-runtime.js +11 -9
  83. package/dist/local-runtime.js.map +1 -1
  84. package/dist/observer-app.html +1 -1
  85. package/dist/program.js +3 -2
  86. package/dist/program.js.map +1 -1
  87. package/dist/restricted-codex-participant-policy.d.ts +12 -5
  88. package/dist/restricted-codex-participant-policy.js +24 -49
  89. package/dist/restricted-codex-participant-policy.js.map +1 -1
  90. package/dist/restricted-codex-participant-run.js +2 -1
  91. package/dist/restricted-codex-participant-run.js.map +1 -1
  92. package/dist/restricted-codex-participant.d.ts +7 -1
  93. package/dist/restricted-codex-participant.js +168 -103
  94. package/dist/restricted-codex-participant.js.map +1 -1
  95. package/dist/restricted-codex-policy.d.ts +12 -5
  96. package/dist/restricted-codex-policy.js +62 -37
  97. package/dist/restricted-codex-policy.js.map +1 -1
  98. package/dist/restricted-codex-session.d.ts +24 -3
  99. package/dist/restricted-codex-session.js +208 -51
  100. package/dist/restricted-codex-session.js.map +1 -1
  101. package/dist/restricted-codex-transport.d.ts +11 -2
  102. package/dist/restricted-codex-transport.js +57 -6
  103. package/dist/restricted-codex-transport.js.map +1 -1
  104. package/dist/run.d.ts +8 -5
  105. package/dist/run.js +6 -6
  106. package/dist/run.js.map +1 -1
  107. package/dist/study-analysis-engine.d.ts +1 -1
  108. package/dist/study-analysis-engine.js +53 -10
  109. package/dist/study-analysis-engine.js.map +1 -1
  110. package/docs/architecture/local-browser-runtime.md +3 -2
  111. package/docs/architecture/participant-media.md +90 -0
  112. package/docs/architecture/restricted-codex-analysis.md +7 -4
  113. package/docs/contracts/schemas.md +1 -1
  114. package/docs/contracts/study-analysis.md +14 -0
  115. package/docs/goals/current.md +13 -9
  116. package/docs/ramp/README.md +10 -1
  117. package/docs/release/0.101.0-codex-ui-tools.md +28 -0
  118. package/docs/release/0.102.0-participant-media.md +43 -0
  119. package/package.json +5 -4
  120. package/skills/humanish/SKILL.md +8 -5
  121. package/dist/local-agent-appserver.d.ts +0 -44
  122. package/dist/local-agent-appserver.js +0 -269
  123. package/dist/local-agent-appserver.js.map +0 -1
@@ -10,12 +10,17 @@ export declare const PARTICIPANT_LIMITS: Readonly<{
10
10
  requestMs: 180000;
11
11
  cleanupMs: 5000;
12
12
  }>;
13
- export declare const PARTICIPANT_TURN_SCHEMA: Record<string, unknown>;
14
- export declare const PARTICIPANT_CLOSING_SCHEMA: {
13
+ export declare function participantToolSchema(speechEnabled?: boolean): Record<string, unknown>;
14
+ export declare const PARTICIPANT_TOOL_SCHEMA: Record<string, unknown>;
15
+ export declare const PARTICIPANT_FINAL_SCHEMA: {
15
16
  type: string;
16
17
  additionalProperties: boolean;
17
18
  required: string[];
18
19
  properties: {
20
+ outcome: {
21
+ type: string;
22
+ enum: string[];
23
+ };
19
24
  summary: {
20
25
  type: string;
21
26
  minLength: number;
@@ -32,6 +37,8 @@ export declare const PARTICIPANT_CLOSING_SCHEMA: {
32
37
  };
33
38
  };
34
39
  };
35
- /** Humanish output schema, not a provider-wire parser. Reject the whole proposal. */
36
- export declare function parseParticipantTurn(value: unknown): CuaTurn;
37
- export declare function parseParticipantClosing(value: unknown): ParticipantClosingReport;
40
+ /** Humanish tool arguments, validated before the shared executor sees a batch. */
41
+ export declare function parseParticipantTool(value: unknown, speechEnabled?: boolean): CuaTurn;
42
+ export declare function parseParticipantFinal(value: unknown): CuaTurn & {
43
+ closingReport: ParticipantClosingReport;
44
+ };
@@ -1,68 +1,43 @@
1
1
  import { z } from "zod";
2
- import { browserControlActionSchema, validateBrowserControlAction } from "./browser-control-protocol.js";
2
+ import { browserControlActionSchema, browserOnlyControlActionSchema, validateBrowserControlAction } from "./browser-control-protocol.js";
3
3
  import { validClosingReport } from "./computer-use.js";
4
4
  export const PARTICIPANT_PROFILE = Object.freeze({
5
5
  schema: "humanish.actor-execution-profile.v1", transport: "codex-app-server", authentication: "chatgpt-account",
6
6
  billing: "account-unknown", requestedModel: "gpt-6-astra", reasoningEffort: "low", cliVersion: "0.154.0",
7
- toolPolicy: "restricted-codex-v1", participantSchema: "humanish.restricted-participant-turn.v1", memoryPolicy: "continuing-thread-v1"
7
+ toolPolicy: "codex-ui-tools-v1", participantSchema: "humanish.codex-ui-tool.v1", memoryPolicy: "continuing-thread-v1"
8
8
  });
9
9
  export const PARTICIPANT_LIMITS = Object.freeze({ instructions: 64 * 1024, hint: 8 * 1024, narration: 2000, output: 256 * 1024, actions: 4, requestMs: 180_000, cleanupMs: 5000 });
10
- const envelope = z.strictObject({ schema: z.literal(PARTICIPANT_PROFILE.participantSchema),
11
- narration: z.string().max(PARTICIPANT_LIMITS.narration), done: z.boolean(),
12
- outcome: z.enum(["reached", "not_reached", "blocked"]).nullable(),
13
- actions: z.array(browserControlActionSchema).max(PARTICIPANT_LIMITS.actions) });
14
- /** Strict structured output requires all object keys. Null selects the existing
15
- * executor default for click.button/wait.ms; it is never a new browser action. */
16
- function outputSchema(value) {
17
- if (Array.isArray(value))
18
- return value.map(outputSchema);
19
- if (value === null || typeof value !== "object")
20
- return value;
21
- const result = Object.fromEntries(Object.entries(value).filter(([key]) => key !== "$schema")
22
- .map(([key, v]) => [key === "oneOf" ? "anyOf" : key, outputSchema(v)]));
23
- if (result.type === "object" && result.properties) {
24
- const properties = result.properties;
25
- const required = result.required;
26
- for (const key of Object.keys(properties))
27
- if (!required.includes(key))
28
- properties[key] = { anyOf: [properties[key], { type: "null" }] };
29
- result.required = Object.keys(properties);
30
- }
31
- return result;
10
+ const toolInput = (speechEnabled) => z.strictObject({ narration: z.string().max(PARTICIPANT_LIMITS.narration),
11
+ actions: z.array(speechEnabled ? browserControlActionSchema : browserOnlyControlActionSchema).min(1).max(PARTICIPANT_LIMITS.actions) });
12
+ export function participantToolSchema(speechEnabled = false) {
13
+ return z.toJSONSchema(toolInput(speechEnabled), { io: "input" });
32
14
  }
33
- export const PARTICIPANT_TURN_SCHEMA = outputSchema(z.toJSONSchema(envelope, { io: "input" }));
34
- export const PARTICIPANT_CLOSING_SCHEMA = {
35
- type: "object", additionalProperties: false, required: ["summary", "frictionReports"], properties: {
15
+ export const PARTICIPANT_TOOL_SCHEMA = participantToolSchema();
16
+ export const PARTICIPANT_FINAL_SCHEMA = {
17
+ type: "object", additionalProperties: false, required: ["outcome", "summary", "frictionReports"], properties: {
18
+ outcome: { type: "string", enum: ["reached", "not_reached", "blocked"] },
36
19
  summary: { type: "string", minLength: 1, maxLength: 4000 },
37
20
  frictionReports: { type: "array", maxItems: 8, items: { type: "string", minLength: 1, maxLength: 2000 } }
38
21
  }
39
22
  };
40
- /** Humanish output schema, not a provider-wire parser. Reject the whole proposal. */
41
- export function parseParticipantTurn(value) {
23
+ /** Humanish tool arguments, validated before the shared executor sees a batch. */
24
+ export function parseParticipantTool(value, speechEnabled = false) {
42
25
  if (Buffer.byteLength(JSON.stringify(value) ?? "") > PARTICIPANT_LIMITS.output)
43
26
  throw new Error("invalid_response");
44
- const source = value;
45
- const normalized = source && Array.isArray(source.actions) ? { ...source, actions: source.actions.map((action) => {
46
- if (!action || typeof action !== "object" || Array.isArray(action))
47
- return action;
48
- const result = { ...action };
49
- if (result.kind === "click" && result.button === null)
50
- delete result.button;
51
- if (result.kind === "wait" && result.ms === null)
52
- delete result.ms;
53
- return result;
54
- }) } : value;
55
- const v = envelope.parse(normalized);
56
- if (Buffer.byteLength(v.narration) > PARTICIPANT_LIMITS.narration ||
57
- (v.done ? v.actions.length !== 0 || v.outcome === null || !v.narration.trim() : v.actions.length === 0 || v.outcome !== null)) {
27
+ const v = toolInput(speechEnabled).parse(value);
28
+ if (Buffer.byteLength(v.narration) > PARTICIPANT_LIMITS.narration)
58
29
  throw new Error("invalid_response");
59
- }
60
- return { actions: v.actions.map(validateBrowserControlAction), pendingSafetyChecks: [], done: v.done,
61
- ...(v.narration ? { message: v.narration } : {}), ...(v.outcome === null ? {} : { outcome: v.outcome }) };
30
+ return { actions: v.actions.map(validateBrowserControlAction), pendingSafetyChecks: [], done: false,
31
+ ...(v.narration ? { message: v.narration } : {}), providerRequestPending: true };
62
32
  }
63
- export function parseParticipantClosing(value) {
64
- if (!validClosingReport(value))
33
+ export function parseParticipantFinal(value) {
34
+ if (!value || typeof value !== "object" || Array.isArray(value))
35
+ throw new Error("invalid_response");
36
+ const { outcome, ...report } = value;
37
+ if ((outcome !== "reached" && outcome !== "not_reached" && outcome !== "blocked") || !validClosingReport(report))
65
38
  throw new Error("invalid_response");
66
- return { summary: value.summary, frictionReports: [...value.frictionReports] };
39
+ return { actions: [], pendingSafetyChecks: [], done: true, outcome,
40
+ message: [report.summary, ...report.frictionReports].join("\n"),
41
+ closingReport: { summary: report.summary, frictionReports: [...report.frictionReports] } };
67
42
  }
68
43
  //# sourceMappingURL=restricted-codex-participant-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"restricted-codex-participant-policy.js","sourceRoot":"","sources":["../src/restricted-codex-participant-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restricted-codex-participant-policy.js","sourceRoot":"","sources":["../src/restricted-codex-participant-policy.ts"],"names":[],"mappings":"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"}
@@ -47,7 +47,8 @@ export async function runRestrictedParticipantStudy(options) {
47
47
  (config.review?.analysis !== false && (!config.review?.analysis || config.review.analysis.provider !== "codex"))) {
48
48
  throw new CuaProviderError("request_rejected", { dispatched: false, usageComplete: false, cleanup: "confirmed" });
49
49
  }
50
- participant = createRestrictedCodexParticipant(options.participant);
50
+ participant = createRestrictedCodexParticipant({ ...options.participant,
51
+ ...(options.desktop.executor.speechEnabled === true ? { speechEnabled: true } : {}) });
51
52
  const outcome = await runLab(config, { cwd: options.cwd, dryRun: false, open: false,
52
53
  ...(options.runId === undefined ? {} : { runId: options.runId }),
53
54
  automaticAnalysis: { ...options.automaticAnalysis, onStart: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"restricted-codex-participant-run.js","sourceRoot":"","sources":["../src/restricted-codex-participant-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restricted-codex-participant-run.js","sourceRoot":"","sources":["../src/restricted-codex-participant-run.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
1
  import type { CuaProvider } from "./computer-use.js";
2
2
  import { type RestrictedCodexSessionOptions } from "./restricted-codex-session.js";
3
+ import type { ReasoningEffort } from "./reasoning-effort.js";
3
4
  export type ParticipantProviderCloseResult = {
4
5
  status: "confirmed" | "unconfirmed";
5
6
  };
6
7
  export interface RestrictedParticipantOptions {
7
8
  session?: RestrictedCodexSessionOptions;
8
9
  requestTimeoutMs?: number;
10
+ authMode?: "operator";
11
+ model?: string;
12
+ reasoningEffort?: ReasoningEffort;
13
+ /** Admit speech actions and heard-speaker evidence for a speech-capable desktop only. */
14
+ speechEnabled?: boolean;
9
15
  }
10
- /** One continuing participant conversation over an already-owned executor. */
16
+ /** One native tool-calling conversation; the existing CUA loop owns every input. */
11
17
  export declare function createRestrictedCodexParticipant(options?: RestrictedParticipantOptions): {
12
18
  provider: CuaProvider;
13
19
  close(): Promise<ParticipantProviderCloseResult>;
@@ -1,7 +1,7 @@
1
1
  import { CuaProviderError, isCuaProviderError } from "./cua-provider-error.js";
2
- import { validateBrowserControlPng } from "./browser-control-protocol.js";
2
+ import { validateBrowserControlPng, validateHeardSpeech } from "./browser-control-protocol.js";
3
3
  import { createRestrictedCodexSession } from "./restricted-codex-session.js";
4
- import { PARTICIPANT_PROFILE, PARTICIPANT_LIMITS as L, PARTICIPANT_TURN_SCHEMA, PARTICIPANT_CLOSING_SCHEMA, parseParticipantTurn, parseParticipantClosing } from "./restricted-codex-participant-policy.js";
4
+ import { PARTICIPANT_PROFILE, PARTICIPANT_LIMITS as L, PARTICIPANT_FINAL_SCHEMA, participantToolSchema, parseParticipantTool, parseParticipantFinal } from "./restricted-codex-participant-policy.js";
5
5
  const codeOf = (code) => {
6
6
  if (code === "cancelled" || code === "timeout" || code === "refusal")
7
7
  return code === "refusal" ? "refused" : code;
@@ -20,24 +20,62 @@ const codeOf = (code) => {
20
20
  return "unavailable";
21
21
  };
22
22
  const noDispatch = () => ({ dispatched: false, usageComplete: false, cleanup: "confirmed" });
23
- /** One continuing participant conversation over an already-owned executor. */
23
+ function deferred() {
24
+ let resolve, reject;
25
+ const promise = new Promise((yes, no) => { resolve = yes; reject = no; });
26
+ // A native request can settle during executor work or shutdown, between consumers.
27
+ void promise.catch(() => undefined);
28
+ return { promise, resolve, reject };
29
+ }
30
+ const toolDescription = (speechEnabled) => `Act on the participant's browser through Humanish. Submit one to four UI actions${speechEnabled ? ", including speak when you need to reply aloud," : ""} and a short public comment; never private reasoning. Humanish returns a JSON STRING with execution acknowledgments${speechEnabled ? ", speech heard from the actual participant speaker sink," : ""} and a fresh screenshot. In Code Mode use: const r = JSON.parse(await tools.humanish_ui({narration: "...", actions: [...]})); text({acknowledgments: r.acknowledgments${speechEnabled ? ", heardSpeech: r.heardSpeech" : ""}, contextHint: r.contextHint, closing: r.closing}); image(r.imageUrl). Call serially and inspect each returned screenshot${speechEnabled ? " and heardSpeech array" : ""} before deciding what to do next.${speechEnabled ? " Use speak only after the visible UI shows that you joined the call and your microphone is unmuted; it sends audio into that call." : ""} Acknowledged input does not prove an application outcome. If closing is true, stop calling tools and give your final account.`;
31
+ /** One native tool-calling conversation; the existing CUA loop owns every input. */
24
32
  export function createRestrictedCodexParticipant(options = {}) {
25
33
  const timeoutMs = options.requestTimeoutMs ?? L.requestMs;
26
34
  if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > L.requestMs)
27
35
  throw new CuaProviderError("request_rejected", noDispatch());
28
- const session = createRestrictedCodexSession(options.session);
29
- let closed = false, failedCleanup = false, incompleteUsage = false;
30
- let instructions;
31
- let lastActionCount;
32
- let sessionClosing;
33
- let sessionSettled = false;
36
+ const operator = options.authMode === "operator";
37
+ const speechEnabled = options.speechEnabled === true;
38
+ const model = options.model ?? (operator ? undefined : PARTICIPANT_PROFILE.requestedModel);
39
+ const effort = options.reasoningEffort ?? "low";
40
+ let closed = false, failedCleanup = false, incompleteUsage = false, active = false, closingPhase = false;
41
+ let instructions, lastActionCount;
42
+ let continuation;
43
+ const events = [];
44
+ let waiter;
45
+ const emit = (event) => {
46
+ if (waiter) {
47
+ const current = waiter;
48
+ waiter = undefined;
49
+ current.resolve(event);
50
+ }
51
+ else
52
+ events.push(event);
53
+ };
54
+ const nextEvent = async () => {
55
+ const event = events.shift() ?? await (waiter ??= deferred()).promise;
56
+ if ("error" in event)
57
+ throw event.error;
58
+ return event.turn;
59
+ };
60
+ let nativeTask, pending;
34
61
  let controller;
35
- let pending;
36
- let closing;
62
+ let sessionClosing, closing;
37
63
  let abortAt;
38
- let cleanupTimer;
64
+ const session = createRestrictedCodexSession({ ...options.session, participant: {
65
+ ...(operator ? { authMode: "operator" } : {}), reasoningEffort: effort,
66
+ tool: { name: "humanish_ui", description: toolDescription(speechEnabled), inputSchema: participantToolSchema(speechEnabled),
67
+ async call(args) {
68
+ if (closed || closingPhase || continuation || !active)
69
+ throw new Error("Unexpected participant tool call");
70
+ const turn = parseParticipantTool(args, speechEnabled);
71
+ const reply = deferred();
72
+ continuation = reply;
73
+ lastActionCount = turn.actions.length;
74
+ emit({ turn });
75
+ return reply.promise;
76
+ } }
77
+ } });
39
78
  const closeSession = () => sessionClosing ??= Promise.resolve().then(() => session.close()).catch(() => false).then(confirmed => {
40
- sessionSettled = true;
41
79
  if (!confirmed)
42
80
  failedCleanup = true;
43
81
  return confirmed;
@@ -46,115 +84,147 @@ export function createRestrictedCodexParticipant(options = {}) {
46
84
  closed = true;
47
85
  abortAt ??= performance.now();
48
86
  controller?.abort();
87
+ continuation?.reject(new Error("Participant closed"));
88
+ continuation = undefined;
49
89
  void closeSession();
50
- cleanupTimer ??= setTimeout(() => { if (pending || !sessionSettled)
51
- failedCleanup = true; }, Math.max(0, L.cleanupMs - (performance.now() - abortAt)));
52
90
  };
53
- async function execute(req, signal, debrief, own) {
54
- let receipt = noDispatch();
55
- let usage;
56
- const onAbort = () => { revoke(); own.abort(); };
57
- signal.addEventListener("abort", onAbort, { once: true });
58
- if (signal.aborted)
59
- onAbort();
60
- try {
61
- if (own.signal.aborted || closed)
62
- throw new CuaProviderError("cancelled", receipt);
63
- if (typeof req.instructions !== "string" || Buffer.byteLength(req.instructions) > L.instructions ||
64
- (req.contextHint !== undefined && (typeof req.contextHint !== "string" || Buffer.byteLength(req.contextHint) > L.hint)) ||
65
- req.previousResponseId !== undefined || (req.acknowledgedSafetyChecks?.length ?? 0) > 0 ||
66
- (instructions !== undefined && instructions !== req.instructions))
67
- throw new CuaProviderError("request_rejected", receipt);
68
- const frame = req.observation.screenshot;
91
+ function launch(req, imageUrl) {
92
+ active = true;
93
+ controller = new AbortController();
94
+ nativeTask = (async () => {
95
+ let receipt = noDispatch(), usage;
69
96
  try {
70
- if (!Buffer.isBuffer(frame))
71
- throw new Error();
72
- validateBrowserControlPng(frame);
73
- }
74
- catch {
75
- throw new CuaProviderError("request_rejected", receipt);
76
- }
77
- let previousExecution;
78
- if (req.previousExecution !== undefined) {
79
- const actions = req.previousExecution?.actions;
80
- if (lastActionCount === undefined || !Array.isArray(actions) || actions.length !== lastActionCount || actions.some((a, i) => !a || a.index !== i || !["completed", "skipped", "not_dispatched", "outcome_uncertain"].includes(a.status))) {
81
- throw new CuaProviderError("request_rejected", receipt);
97
+ const result = await session.run({ ...(model === undefined ? {} : { model }),
98
+ instructions: `${instructions}\n\nYou are the study participant throughout this conversation, including its closing account. Use only the supplied screenshots and humanish_ui tool to interact. The tool returns a JSON string: parse it, inspect acknowledgments${speechEnabled ? " and heardSpeech captured from the actual participant speaker sink" : ""}, and display imageUrl with Code Mode image(). Do not print the image data URL as text. Keep your persona and earlier observations throughout the session.${speechEnabled ? " A speak action plays into the participant microphone; use it only after the visible UI shows that you joined the call and the microphone is unmuted." : ""} Speak publicly about your experience, never reveal private reasoning. Completed inputs do not prove application outcomes; verify on the next screenshot. When the task ends, return only the required final JSON with outcome, summary and frictionReports. Report observed confusion and recovered mistakes as well as blockers. Do not invent observations.`,
99
+ evidence: JSON.stringify({ phase: closingPhase ? "closing" : "interaction", contextHint: req.contextHint ?? null,
100
+ instruction: closingPhase ? "Interaction has ended. Do not call tools; give your closing account."
101
+ : "Use humanish_ui to act. Inspect each result before choosing the next batch. Finish when appropriate.",
102
+ width: req.observation.screenshot.readUInt32BE(16), height: req.observation.screenshot.readUInt32BE(20),
103
+ previousExecution: req.previousExecution ?? null,
104
+ ...(speechEnabled ? { heardSpeech: req.observation.heardSpeech ?? [] } : {}) }),
105
+ images: [{ evidenceId: "current-frame", dataUrl: imageUrl }], schema: PARTICIPANT_FINAL_SCHEMA,
106
+ maxOutputTokens: null, timeoutMs, signal: controller.signal });
107
+ receipt = { dispatched: result.dispatched, usageComplete: result.usageComplete,
108
+ cleanup: result.errorCode === "codex_cleanup_failed" ? "unconfirmed" : "confirmed" };
109
+ usage = result.usage ?? undefined;
110
+ if (result.dispatched && !result.usageComplete)
111
+ incompleteUsage = true;
112
+ if (receipt.cleanup === "unconfirmed")
113
+ failedCleanup = true;
114
+ if (closed || controller.signal.aborted)
115
+ throw new CuaProviderError(failedCleanup ? "cleanup_unconfirmed" : "cancelled", receipt, usage, result.failurePhase);
116
+ if (result.status !== "completed" || result.errorCode !== null)
117
+ throw new CuaProviderError(codeOf(result.errorCode), receipt, usage, result.failurePhase);
118
+ let turn;
119
+ try {
120
+ turn = parseParticipantFinal(result.output);
121
+ }
122
+ catch {
123
+ throw new CuaProviderError("invalid_response", receipt, usage, "response");
82
124
  }
83
- previousExecution = { actions: actions.map(({ index, status }) => ({ index, status })) };
125
+ emit({ turn: { ...turn, ...(usage === undefined ? {} : { usage: { ...usage, turns: result.inferenceUsage ?? [] } }), providerRequest: receipt } });
84
126
  }
85
- instructions ??= req.instructions;
86
- const result = await session.run({ model: PARTICIPANT_PROFILE.requestedModel,
87
- instructions: `${instructions}\n\nYou are the study participant throughout this conversation, including its closing account. Use the screenshots, your conversation history and explicit input acknowledgments. Describe your experience as public participant speech, never private reasoning. Earlier proposals and completed inputs are not independent proof of their application outcomes. Preserve uncertainty and do not invent observations. Never use tools or request integrations. Follow the current phase instruction and supplied JSON schema.`,
88
- evidence: JSON.stringify({ phase: debrief ? "closing" : "interaction",
89
- instruction: debrief ? "The interaction has ended. Give only a closing summary and frictionReports about what you observed; do not propose actions."
90
- : "Continue with one to four browser actions, or explicitly finish with no actions and your outcome.",
91
- width: frame.readUInt32BE(16), height: frame.readUInt32BE(20),
92
- contextHint: req.contextHint ?? null, memoryPolicy: PARTICIPANT_PROFILE.memoryPolicy, previousExecution: previousExecution ?? null }),
93
- images: [{ evidenceId: "current-frame", dataUrl: `data:image/png;base64,${frame.toString("base64")}` }],
94
- schema: debrief ? PARTICIPANT_CLOSING_SCHEMA : PARTICIPANT_TURN_SCHEMA, maxOutputTokens: null, timeoutMs, signal: own.signal });
95
- receipt = { dispatched: result.dispatched, usageComplete: result.usageComplete,
96
- cleanup: result.errorCode === "codex_cleanup_failed" ? "unconfirmed" : "confirmed" };
97
- usage = result.usage ?? undefined;
98
- if (receipt.cleanup === "unconfirmed") {
99
- failedCleanup = true;
127
+ catch (error) {
128
+ incompleteUsage ||= receipt.dispatched !== false && !receipt.usageComplete;
100
129
  revoke();
130
+ emit({ error: isCuaProviderError(error) ? error
131
+ : new CuaProviderError("process_failed", { dispatched: "unknown", usageComplete: false, cleanup: "unconfirmed" }, usage) });
101
132
  }
102
- if (result.dispatched && !result.usageComplete && !debrief)
103
- incompleteUsage = true;
104
- if (closed || own.signal.aborted)
105
- throw new CuaProviderError(receipt.cleanup === "unconfirmed" ? "cleanup_unconfirmed" : "cancelled", receipt, usage, result.failurePhase);
106
- if (result.status !== "completed" || result.errorCode !== null) {
107
- revoke();
108
- throw new CuaProviderError(codeOf(result.errorCode), receipt, usage, result.failurePhase);
133
+ finally {
134
+ active = false;
109
135
  }
110
- let turn;
136
+ })();
137
+ }
138
+ async function execute(req, signal, debrief) {
139
+ if (events.length)
140
+ return nextEvent();
141
+ if (signal.aborted) {
142
+ revoke();
143
+ throw new CuaProviderError("cancelled", noDispatch());
144
+ }
145
+ if (typeof req.instructions !== "string" || Buffer.byteLength(req.instructions) > L.instructions ||
146
+ (req.contextHint !== undefined && (typeof req.contextHint !== "string" || Buffer.byteLength(req.contextHint) > L.hint)) ||
147
+ req.previousResponseId !== undefined || (req.acknowledgedSafetyChecks?.length ?? 0) > 0 ||
148
+ (instructions !== undefined && instructions !== req.instructions))
149
+ throw new CuaProviderError("request_rejected", noDispatch());
150
+ const frame = req.observation.screenshot;
151
+ try {
152
+ if (!Buffer.isBuffer(frame))
153
+ throw new Error();
154
+ validateBrowserControlPng(frame);
155
+ }
156
+ catch {
157
+ throw new CuaProviderError("request_rejected", noDispatch());
158
+ }
159
+ if (req.observation.heardSpeech !== undefined) {
160
+ if (!speechEnabled)
161
+ throw new CuaProviderError("request_rejected", noDispatch());
111
162
  try {
112
- turn = debrief ? { actions: [], pendingSafetyChecks: [], done: true, closingReport: parseParticipantClosing(result.output) }
113
- : parseParticipantTurn(result.output);
163
+ validateHeardSpeech(req.observation.heardSpeech);
114
164
  }
115
165
  catch {
116
- revoke();
117
- throw new CuaProviderError("invalid_response", receipt, usage, "response");
166
+ throw new CuaProviderError("request_rejected", noDispatch());
118
167
  }
119
- // A done turn has no new input batch. Closing acknowledgments still refer
120
- // to the last proposed actions, even after the participant reports done.
121
- if (!debrief && turn.actions.length)
122
- lastActionCount = turn.actions.length;
123
- return { ...turn, ...(usage === undefined ? {} : { usage }), providerRequest: receipt };
124
168
  }
125
- catch (error) {
126
- if (isCuaProviderError(error))
127
- throw error;
128
- failedCleanup = true;
129
- incompleteUsage = true;
130
- revoke();
131
- throw new CuaProviderError("process_failed", { dispatched: "unknown", usageComplete: false, cleanup: "unconfirmed" }, usage);
169
+ const acknowledgments = req.previousExecution?.actions;
170
+ if ((continuation && acknowledgments === undefined) || (acknowledgments !== undefined &&
171
+ (lastActionCount === undefined || !Array.isArray(acknowledgments) || acknowledgments.length !== lastActionCount ||
172
+ acknowledgments.some((a, i) => !a || a.index !== i || !["completed", "skipped", "not_dispatched", "outcome_uncertain"].includes(a.status))))) {
173
+ throw new CuaProviderError("request_rejected", noDispatch());
174
+ }
175
+ const onAbort = () => { revoke(); };
176
+ signal.addEventListener("abort", onAbort, { once: true });
177
+ try {
178
+ instructions ??= req.instructions;
179
+ closingPhase = debrief;
180
+ const imageUrl = `data:image/png;base64,${frame.toString("base64")}`;
181
+ if (continuation) {
182
+ const reply = continuation;
183
+ continuation = undefined;
184
+ reply.resolve(JSON.stringify({ acknowledgments: acknowledgments.map(({ index, status }) => ({ index, status })), imageUrl,
185
+ ...(speechEnabled ? { heardSpeech: req.observation.heardSpeech ?? [] } : {}),
186
+ contextHint: req.contextHint ?? null, closing: debrief }));
187
+ }
188
+ else if (!active)
189
+ launch(req, imageUrl);
190
+ else
191
+ throw new CuaProviderError("busy", noDispatch());
192
+ return await nextEvent();
132
193
  }
133
194
  finally {
195
+ // The shared loop aborts each request's signal after it yields. The native
196
+ // turn must remain alive while Humanish executes and records its actions.
134
197
  signal.removeEventListener("abort", onAbort);
135
198
  }
136
199
  }
137
200
  const start = (req, signal, debrief) => {
138
- if (closed)
201
+ if (closed && events.length === 0)
139
202
  return Promise.reject(new CuaProviderError("request_rejected", noDispatch()));
140
203
  if (pending)
141
204
  return Promise.reject(new CuaProviderError("busy", noDispatch()));
142
- const own = new AbortController();
143
- controller = own;
144
- const task = execute(req, signal, debrief, own);
205
+ const task = execute(req, signal, debrief);
145
206
  pending = task;
146
- void task.finally(() => { if (pending === task) {
147
- pending = undefined;
148
- controller = undefined;
149
- } }).catch(() => undefined);
207
+ void task.finally(() => { if (pending === task)
208
+ pending = undefined; }).catch(() => undefined);
150
209
  return task;
151
210
  };
152
211
  const provider = {
153
- id: "restricted-codex-participant", version: PARTICIPANT_PROFILE.requestedModel, requiresFrame: true, requestPolicy: "fail_closed",
154
- executionProfile: PARTICIPANT_PROFILE, modelSettings: { reasoningEffort: "low" },
155
- capabilities: { headless: true, structuredTrace: true, lanes: ["computer-use"], producesScreenshots: true, byoModel: false,
212
+ id: "codex-participant", requiresFrame: true, requestPolicy: "fail_closed",
213
+ get version() { return session.resolvedModel ?? model; },
214
+ get executionProfile() {
215
+ if (!operator)
216
+ return PARTICIPANT_PROFILE;
217
+ return session.authentication === "chatgpt-account" && session.resolvedModel
218
+ ? { ...PARTICIPANT_PROFILE, requestedModel: session.resolvedModel, reasoningEffort: effort } : undefined;
219
+ },
220
+ modelSettings: { reasoningEffort: effort },
221
+ capabilities: { headless: true, structuredTrace: true, lanes: ["computer-use"], producesScreenshots: true, byoModel: operator,
156
222
  preGrantableApprovals: false, inProcessTools: false, license: "proprietary" },
157
- get interactionUsageIncomplete() { return incompleteUsage; }, get historyTurnsOmitted() { return 0; },
223
+ get pendingRequestUsage() {
224
+ const usage = session.pendingUsage;
225
+ return usage === undefined ? undefined : { ...usage, turns: session.pendingInferenceUsage ?? [] };
226
+ },
227
+ get interactionUsageIncomplete() { return incompleteUsage || active; }, get historyTurnsOmitted() { return 0; },
158
228
  nextTurn: (req, signal) => start(req, signal, false), debrief: (req, signal) => start(req, signal, true)
159
229
  };
160
230
  return { provider, close: () => {
@@ -164,19 +234,14 @@ export function createRestrictedCodexParticipant(options = {}) {
164
234
  closing = (async () => {
165
235
  let timer;
166
236
  try {
167
- const settled = await Promise.race([Promise.all([pending?.then(() => undefined, () => undefined), closeSession()])
168
- .then(([, confirmed]) => confirmed), new Promise(resolve => {
169
- timer = setTimeout(() => resolve(false), Math.max(0, L.cleanupMs - (performance.now() - abortAt)));
170
- })]);
171
- if (!settled)
237
+ const confirmed = await Promise.race([Promise.all([nativeTask, closeSession()]).then(([, ok]) => ok),
238
+ new Promise(resolve => { timer = setTimeout(() => resolve(false), Math.max(0, L.cleanupMs - (performance.now() - abortAt))); })]);
239
+ if (!confirmed)
172
240
  failedCleanup = true;
173
241
  return { status: failedCleanup ? "unconfirmed" : "confirmed" };
174
242
  }
175
243
  finally {
176
244
  clearTimeout(timer);
177
- clearTimeout(cleanupTimer);
178
- lastActionCount = undefined;
179
- instructions = undefined;
180
245
  }
181
246
  })();
182
247
  return closing;
@@ -1 +1 @@
1
- {"version":3,"file":"restricted-codex-participant.js","sourceRoot":"","sources":["../src/restricted-codex-participant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restricted-codex-participant.js","sourceRoot":"","sources":["../src/restricted-codex-participant.ts"],"names":[],"mappings":"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"}