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
@@ -1,6 +1,6 @@
1
1
  import { type StudyAnalysisArtifact, type StudyAnalysisConfig, type StudyAnalysisInput } from "./study-analysis.js";
2
2
  import { type StudyAnalysisProvider } from "./study-analysis-provider.js";
3
- export declare const STUDY_ANALYSIS_PROMPT_VERSION = "study-evidence-5";
3
+ export declare const STUDY_ANALYSIS_PROMPT_VERSION = "study-evidence-6";
4
4
  export declare const SUPPORTED_STUDY_ANALYSIS_MODELS: readonly string[];
5
5
  export interface StudyAnalysisAdmission {
6
6
  allowed: boolean;
@@ -5,8 +5,8 @@ import { containsSensitive } from "./redaction.js";
5
5
  import { scrubTransientCommsText } from "./run-narration-secrets.js";
6
6
  import { STUDY_ANALYSIS_SCHEMA } from "./study-analysis.js";
7
7
  import { createStudyAnalysisProvider } from "./study-analysis-provider.js";
8
- import { hashStudyAnalysisValue, studyAnalysisResponseSchema, studyAnalysisResultJsonSchema, validateAnalysisResult, validateStudyAnalysisInputMetadata } from "./study-analysis-validation.js";
9
- export const STUDY_ANALYSIS_PROMPT_VERSION = "study-evidence-5";
8
+ import { checkAnalysisResult, hashStudyAnalysisValue, studyAnalysisResponseSchema, studyAnalysisResultJsonSchema, validateStudyAnalysisInputMetadata } from "./study-analysis-validation.js";
9
+ export const STUDY_ANALYSIS_PROMPT_VERSION = "study-evidence-6";
10
10
  export const SUPPORTED_STUDY_ANALYSIS_MODELS = Object.freeze(["gpt-6-astra", "gpt-5.5", "gpt-5.6", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"]);
11
11
  const SUPPORTED_MODELS = new Set(SUPPORTED_STUDY_ANALYSIS_MODELS);
12
12
  const IMAGE_DATA = /^data:image\/(png|jpeg|webp);base64,([A-Za-z0-9+/]+={0,2})$/;
@@ -32,7 +32,9 @@ Completed requires affirmative evidence for all essential assigned requirements,
32
32
 
33
33
  Preserve each participant's structured provenance separately from your interpretation. recordedStatus is the stream's status; provenance.actorStatus is the actor's status and may conflict with it. completionReason and stopCause describe the recorded ending, not a product diagnosis. goalSource=participant_report means a reported endpoint; condition_matched establishes only the declared condition, not every task requirement or visible state. unavailable or null means the source is not established. declaredOutcome is the participant's account, even when structured. For taskOutcomes, completed records a matched task criterion; observable=false means no completion criterion, and inputsObserved=false means the task was never measured. Null fields are unavailable information, not false, failure, or corroboration. Preserve conflicting source accounts, explain evidence limits, and do not turn provenance metadata into visual evidence.
34
34
 
35
- Use only supplied evidence IDs. Review every included participant once. Every participant review must cite that participant's evidence. Quote feedback only from quoteEligible evidence, using exact text. Use no made-up quotes, captures, timestamps, event IDs, or results. A visual observation must cite an actual supplied capture. No capture means no visual finding. Do not infer what happened between captures without supporting actions or statements; record coverage gaps and unreadable text as limitations.
35
+ Use only the supplied evidence entries' id values for citations; eventId identifies a source event and is not a citation ID. Review every included participant once. Within each participant review, every evidenceIds entry must be unique, exist in the packet, and have exactly that participant's streamId. Including some of the participant's own evidence does not permit adding another participant's references. Feedback must likewise cite that participant's quoteEligible evidence using exact text. Check these ownership and uniqueness rules before returning the report.
36
+
37
+ Shared interactions can need evidence from multiple participants. Put those combined observations in findings or concernReviews, which may cite multiple included participants under their exposure rules. Keep each participant review grounded in that participant's recording and state any resulting limits; another participant's recording does not become their own evidence. Use no made-up quotes, captures, timestamps, event IDs, or results. A visual observation must cite an actual supplied capture. No capture means no visual finding. Do not infer what happened between captures without supporting actions or statements; record coverage gaps and unreadable text as limitations.
36
38
 
37
39
  An observation labeled action must cite at least one entry whose kind is ui_action, command, tool_call, file_change, or approval. Other kinds, including run_event entries, do not establish an action basis. Participant_statement observations must cite only quoteEligible entries. Use inference with an explicit limitation when interpreting recorded context that does not establish one of these direct evidence bases.
38
40
 
@@ -172,6 +174,46 @@ function scrubGeneratedNarrative(result) {
172
174
  ...(result.concernReviews === undefined ? {} : { concernReviews: result.concernReviews.map(value => ({ ...observation(value), reason: scrub(value.reason) })) })
173
175
  };
174
176
  }
177
+ const VALIDATION_FAILURES = Object.freeze({
178
+ ANALYSIS_RESULT_SCHEMA_INVALID: "analysis_validation_failed_schema_invalid",
179
+ ANALYSIS_INPUT_DUPLICATES: "analysis_validation_failed_input_duplicates",
180
+ ANALYSIS_PARTICIPANT_COVERAGE_INVALID: "analysis_validation_failed_participant_coverage_invalid",
181
+ ANALYSIS_PARTICIPANT_REFERENCE_INVALID: "analysis_validation_failed_participant_reference_invalid",
182
+ ANALYSIS_OUTCOME_WITHOUT_EVIDENCE: "analysis_validation_failed_outcome_without_evidence",
183
+ ANALYSIS_QUOTE_INVALID: "analysis_validation_failed_quote_invalid",
184
+ ANALYSIS_FINDING_ID_DUPLICATE: "analysis_validation_failed_finding_id_duplicate",
185
+ ANALYSIS_OBSERVATION_REFERENCE_INVALID: "analysis_validation_failed_observation_reference_invalid",
186
+ ANALYSIS_VISUAL_WITHOUT_CAPTURE: "analysis_validation_failed_visual_without_capture",
187
+ ANALYSIS_ACTION_SOURCE_INVALID: "analysis_validation_failed_action_source_invalid",
188
+ ANALYSIS_STATEMENT_SOURCE_INVALID: "analysis_validation_failed_statement_source_invalid",
189
+ ANALYSIS_FINDING_MEMBERSHIP_INVALID: "analysis_validation_failed_finding_membership_invalid",
190
+ ANALYSIS_AFFECTED_WITHOUT_EVIDENCE: "analysis_validation_failed_affected_without_evidence",
191
+ ANALYSIS_CONCERN_FINDING_INVALID: "analysis_validation_failed_concern_finding_invalid"
192
+ });
193
+ function checkProviderAnalysis(input, value) {
194
+ try {
195
+ const parsed = studyAnalysisResponseSchema.safeParse(value);
196
+ if (!parsed.success)
197
+ return { ok: false, error: VALIDATION_FAILURES.ANALYSIS_RESULT_SCHEMA_INVALID };
198
+ let scrubbed;
199
+ try {
200
+ scrubbed = scrubGeneratedNarrative(parsed.data);
201
+ }
202
+ catch (error) {
203
+ return { ok: false, error: error instanceof Error && error.message === "ANALYSIS_TRANSIENT_SECRET_IN_STRUCTURE"
204
+ ? "analysis_validation_failed_scrub_rejected"
205
+ : "analysis_validation_failed_unexpected" };
206
+ }
207
+ const checked = checkAnalysisResult(input, scrubbed);
208
+ if (!checked.ok)
209
+ return { ok: false,
210
+ error: VALIDATION_FAILURES[checked.errors[0] ?? ""] ?? "analysis_validation_failed_unexpected" };
211
+ return checked;
212
+ }
213
+ catch {
214
+ return { ok: false, error: "analysis_validation_failed_unexpected" };
215
+ }
216
+ }
175
217
  /** Explicit invocation or an opted-in post-run owner; Observer readers never call this. */
176
218
  export async function runStudyAnalysis(input, config, options) {
177
219
  // Callers retain their own object references. Snapshot once so a display callback or later
@@ -261,10 +303,12 @@ export async function runStudyAnalysis(input, config, options) {
261
303
  return finish();
262
304
  }
263
305
  progress("validating");
264
- try {
265
- // Parse the bounded shape first, then scrub and validate again. Changed exact quotes or
266
- // expanded field lengths fail closed under the original validator; source bytes stay intact.
267
- artifact.result = validateAnalysisResult(input, scrubGeneratedNarrative(studyAnalysisResponseSchema.parse(response.output)));
306
+ // Parse the bounded shape first, then scrub and validate again. Changed exact quotes or
307
+ // expanded field lengths fail closed under the original validator; source bytes stay intact.
308
+ // Only an allowlisted stage or first rule code survives; rejected output and exceptions do not.
309
+ const checked = checkProviderAnalysis(input, response.output);
310
+ if (checked.ok) {
311
+ artifact.result = checked.result;
268
312
  artifact.status = input.coverage.complete ? "complete" : "partial";
269
313
  artifact.error = null;
270
314
  if (config.provider !== "codex" && ((response.usage?.output ?? 0) > config.maxOutputTokens
@@ -274,10 +318,9 @@ export async function runStudyAnalysis(input, config, options) {
274
318
  artifact.error = "analysis_admission_estimate_exceeded";
275
319
  }
276
320
  }
277
- catch {
278
- // Validation errors may quote model output; only the stable code leaves this boundary.
321
+ else {
279
322
  artifact.result = null;
280
- artifact.error = "analysis_validation_failed";
323
+ artifact.error = checked.error;
281
324
  }
282
325
  return finish();
283
326
  }
@@ -1 +1 @@
1
- {"version":3,"file":"study-analysis-engine.js","sourceRoot":"","sources":["../src/study-analysis-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"study-analysis-engine.js","sourceRoot":"","sources":["../src/study-analysis-engine.ts"],"names":[],"mappings":"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"}
@@ -100,8 +100,9 @@ Later participant actions and observations do not use this startup wait.
100
100
  - Chromium at 960×720, 2 vCPUs and 2 GiB guest RAM per participant. Docker's
101
101
  enclosing memory limit is 3 GiB. Start with a small concurrency for your host;
102
102
  these allocations are not a promise of measured peak memory or capacity.
103
- - Browser-only. Inbox and camera/microphone declarations are rejected until
104
- integrated. TAP/NAT networking preserves the path to optional media.
103
+ - Browser-only by default. [Optional camera and spoken conversation](participant-media.md)
104
+ use a separate media image and the same study loop. Local inbox declarations
105
+ remain unsupported.
105
106
  - A 20-minute default and maximum participant session budget, within the runtime
106
107
  image's 30-minute process lifetime. A shorter `execution.timeoutMs` is supported.
107
108
  - Codex participants currently use `gpt-6-astra` at low effort. Hosted templates,
@@ -0,0 +1,90 @@
1
+ # Optional participant media
2
+
3
+ Media belongs to the desktop. The participant still navigates through screenshots
4
+ and the shared computer-use loop, using one continuing Codex conversation for
5
+ clicks, listening and spoken replies.
6
+
7
+ ```yaml
8
+ actors:
9
+ - type: local-agent
10
+ localAgent: codex
11
+ execution:
12
+ target: local
13
+ desktop:
14
+ media:
15
+ camera: { source: synthetic }
16
+ microphone: { source: speech }
17
+ policies:
18
+ mediaPermission: prompt
19
+ ```
20
+
21
+ Omit `media` for ordinary browser studies. They keep the smaller browser image
22
+ and start no audio server, camera producer or speech worker. Camera and speech
23
+ can also be requested separately. Local media setup uses a separately pinned
24
+ image, prepared by the first live study or `humanish runtime setup --media`.
25
+
26
+ The local camera is an animated test pattern behind a native V4L2 device. Speech
27
+ uses a synthetic microphone and a separate speaker sink. Chromium uses its
28
+ ordinary devices and permission dialog. `mediaPermission: granted` bypasses the
29
+ dialog explicitly; it does not replace the devices.
30
+
31
+ ## Speaking and listening
32
+
33
+ With speech enabled, `humanish_ui` accepts `{kind: "speak", text: "..."}` in
34
+ addition to browser actions. It plays into the microphone; the participant must
35
+ join and unmute through the app. Tool narration is never automatically spoken.
36
+ Keep each utterance within 400 characters. Playback acknowledgement establishes
37
+ local microphone input, not delivery to another caller.
38
+
39
+ The desktop captures actual speaker audio. Finalized English transcriptions
40
+ arrive as `heardSpeech` observations with an utterance ID, `speaker_audio` source
41
+ and duration. A participant can use the existing `wait` action while listening.
42
+ Hearing something counts as progress even when the screen stays unchanged.
43
+
44
+ Transcription and synthetic speech run inside the Linux desktop, without a
45
+ speech API key or a host Python installation. Codex inference still runs remotely
46
+ using the selected account. The first voice uses espeak-ng and sounds robotic;
47
+ whisper.cpp uses the pinned English `base.en` model for recognition. This is bounded turn-taking, with recognition
48
+ latency and possible transcription errors, not a streaming voice conversation
49
+ with interruption handling.
50
+
51
+ Spoken text and heard observations pass through the existing evidence redaction
52
+ before being retained in the trace. Analysis reads that evidence alongside the
53
+ recording. Raw audio is not saved by default; Observer remains a screenshot
54
+ recording with text evidence, not an audio/video call recording.
55
+
56
+ ## Hosted desktops
57
+
58
+ The same worker and participant loop support hosted speech. Humanish selects a
59
+ versioned public E2B media template when speech is requested; ordinary browser
60
+ studies keep the stock desktop. The usual E2B credentials and Codex login are
61
+ sufficient. `execution.desktop.template` remains an explicit override for your
62
+ own compatible image; see the [build recipe](../../runtime/browser-media/E2B.md).
63
+ The host starts the worker through the SDK's streaming command interface, and
64
+ model credentials stay on the host. Missing dependencies fail desktop preparation
65
+ before a participant starts.
66
+
67
+ Existing hosted synthetic cameras use Chromium's fake-device flags. Those flags
68
+ also replace its microphone, so hosted camera and speech cannot currently be
69
+ combined. Use a local native-media desktop for both, or a hosted audio-only
70
+ study. Microphone files and speech through other participant providers are not
71
+ supported. A template alone cannot add camera support to a kernel without V4L2.
72
+
73
+ ## Runtime maintenance
74
+
75
+ `runtime/local-firecracker/build.py --media` extends the maintained browser image
76
+ with native devices and the speech worker. The published media image must carry
77
+ `to.humanish.runtime.media=1`; a cached browser image cannot satisfy a media
78
+ request. Source builds can select an already-built media image with
79
+ `HUMANISH_LOCAL_MEDIA_RUNTIME_IMAGE`.
80
+
81
+ The media worker owns its subprocesses and buffers. Failed speech recognition,
82
+ worker exit and queue overflow stop the media session instead of appearing as
83
+ successful silence. Closing the desktop stops media and reclaims its isolated
84
+ state. No conferencing vendor or room-specific behavior is implemented in core.
85
+
86
+ Retain the matching media sources and package notices when publishing runtime
87
+ assets. Pass `--media-browser` and `--media-inputs` to the existing
88
+ `runtime/local-firecracker/sources.py` collector alongside its ordinary inputs.
89
+ Hardware capacity and conferencing topology require their own measured proof;
90
+ requesting media does not qualify twenty concurrent participants or TURN.
@@ -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.102.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.
@@ -165,6 +165,20 @@ integrity. Visual claims require retained captures; screenshot-free evidence
165
165
  opens its original event. These checks do not prove that every interpretation
166
166
  is correct or every consequential issue was found.
167
167
 
168
+ A rejected response keeps `result` null and records only an allowlisted code in
169
+ the artifact's existing `error` field. The code distinguishes schema rejection,
170
+ generated-text scrubbing, an unexpected validation exception, or the first
171
+ failed reference rule (for example, an invalid quote or observation reference).
172
+ It never includes provider output, exception text, evidence values or IDs.
173
+ Historical artifacts with the generic `analysis_validation_failed` code remain
174
+ valid and unchanged.
175
+
176
+ Participant reviews cite distinct packet-local evidence IDs belonging only to
177
+ that participant's stream; source event IDs are not citation IDs. Shared
178
+ interactions can cite multiple included participants in findings and concern
179
+ reviews under the existing exposure rules. The `study-evidence-6` prompt makes
180
+ this distinction explicit without changing the validator or historical reports.
181
+
168
182
  Elapsed replay time starts at the first retained capture. It is not a video
169
183
  offset. Nonvisual events retain event identity without invented frame offsets.
170
184
  Scripted captures without recorded timestamps keep null analysis times; any
@@ -1,9 +1,10 @@
1
1
  # Current Goals
2
2
 
3
- Status date: 2026-09-25. Release baseline: `0.100.1`.
3
+ Status date: 2026-09-26. Source baseline: `0.102.0`.
4
4
 
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).
5
+ This page guides work on current source. Version `0.102.0` adds optional camera
6
+ and speech; its [release note](../release/0.102.0-participant-media.md) records
7
+ Linux and Mac conversations, validated analysis and the remaining media limits.
7
8
  The [September 9 history](https://github.com/danielgwilson/humanish/blob/main/docs/goals/current-history-2026-09-09.md)
8
9
  preserves the former status log; its queues do not supersede this page.
9
10
 
@@ -88,9 +89,9 @@ requires decision-equivalent retained evidence and a real deletion branch.
88
89
  No first-party deletion branch has met that gate. Public demonstrations do not
89
90
  substitute for it.
90
91
 
91
- ## Current Program Truth (source `0.100.1`)
92
+ ## Current Program Truth (source `0.102.0`)
92
93
 
93
- | Surface | Available in merged source | Remaining boundary |
94
+ | Surface | Available in source | Remaining boundary |
94
95
  | --- | --- | --- |
95
96
  | Study authoring | YAML labs, lane/roster composition, model settings and study/per-lane caps | Route support varies; declarations are not promises of engine parity |
96
97
  | Actors | Seven first-party descriptors; computer-use, scripted-browser and terminal-product dispatch | No supported public out-of-tree actor-registration API |
@@ -102,8 +103,8 @@ substitute for it.
102
103
  | Study findings | Default post-run analysis on supported live routes with a separate disclosed $3 admission estimate limit and opt-out; explicit `analyze`, fairer evidence selection, concern review and versioned findings with exact source links; explicit restricted Codex account analysis on qualified Linux x64 and Apple Silicon Mac profiles | Account dollars/output-token caps are unavailable; Keychain/other CLI profiles are unqualified. Model interpretation needs review; selection limits coverage; opening Observer never dispatches analysis |
103
104
  | TUI and serving | Detached starts, run stopping, reclamation, Observer attachment, loopback serving, run library and AgentMail setup, authentication and lab configuration | Stopping a process does not itself prove sandbox cleanup; TUI views over CLI `stats`/`export` remain follow-ups |
104
105
  | Off-app communication | Recipient-scoped local capture and fresh real AgentMail receiving, supported inline raster images, bounded collection and host-owned recovery | Real mail uses isolated participant surfaces and remains local-only for publication. Hosted mail/model processing, bounded fidelity and interrupted-run recovery are explicit; local-agent, borrowed inboxes and SMS are unsupported |
105
- | Local browsers | Shared study loop on Linux x64/Docker/KVM and M3-or-newer Mac/Lima; pinned runtime download, Codex account participants and automatic analysis | Browser-only, explicit local labs; local inbox/media and automatic onboarding remain follow-ups; larger cohorts and sleep/wake are unqualified |
106
- | Mobile and media | Hosted viewport/emulation, desktop geometry checks, bounded dwell and declared camera feed; a synthetic video-only call with separate hosted peers is proven | Audio, TURN, provider-specific rooms, physical-device and touch fidelity remain unproven; unsupported media declarations are rejected |
106
+ | Local browsers | Shared study loop on Linux x64/Docker/KVM and M3-or-newer Mac/Lima; pinned runtime download, Codex account participants and automatic analysis | Explicit local labs; local inbox and automatic onboarding remain follow-ups; larger cohorts and sleep/wake are unqualified |
107
+ | Mobile and media | Hosted viewport/emulation, desktop geometry checks, bounded dwell and declared camera feed; optional camera and speech passed two-person Linux and Mac conversations with validated analysis; hosted audio-only uses the same worker | Hosted camera+speech is unsupported; English recognition and robotic voice have fidelity limits; raw AV recording, forced TURN, physical-device and touch fidelity are unproven |
107
108
 
108
109
  Use the [task support matrix](../architecture/task-protocol-support.md),
109
110
  [actor registry](https://github.com/danielgwilson/humanish/blob/main/src/actor-registry.ts)
@@ -123,8 +124,11 @@ ordinary TAP/NAT networking. Continue managed-local work from this complete stud
123
124
  path; the earlier offline owner/service qualification experiments are historical
124
125
  fixtures, not an installation architecture or a prerequisite queue. Explicit
125
126
  Linux local labs now use the installed CLI/TUI, with a verified runtime download
126
- before the first live run. Mac support is also shipped; inbox integration and
127
- optional media remain unfinished. Existing hosted labs retain their behavior.
127
+ before the first live run. Mac browser support is also shipped; inbox integration remains unfinished.
128
+ Optional media passed Linux and Mac conversations with receiving-side evidence
129
+ and owned-resource cleanup. The original Mac recording produced validated
130
+ analysis after its citation instructions were clarified. Existing hosted labs
131
+ retain their behavior.
128
132
 
129
133
  ## Gates And Deferred Work
130
134
 
@@ -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.102.0` (2026-09-26). 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,15 @@ 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.102.0 release note](../release/0.102.0-participant-media.md) describes
58
+ optional native camera and speech. Linux and Mac conversations passed, including
59
+ spoken clarification of a misheard answer. The retained Mac recording also
60
+ produced a validated report after the analysis citation instructions were
61
+ clarified; the validator and original evidence remain unchanged.
62
+
63
+ The [0.101.0 release note](../release/0.101.0-codex-ui-tools.md) describes native
64
+ Codex UI tools shared by local Firecracker and hosted E2B participants.
65
+
57
66
  The [0.100.1 release note](../release/0.100.1-participant-continuity.md) describes
58
67
  continuing local participant conversations and per-turn usage accounting.
59
68
 
@@ -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.
@@ -0,0 +1,43 @@
1
+ # 0.102.0 — Optional participant camera and speech
2
+
3
+ Codex participants can listen and speak while using a conferencing app. The same
4
+ continuing conversation handles browser actions and spoken replies on local
5
+ Firecracker and hosted E2B desktops. No separate conversational agent or speech
6
+ API key is required. Codex inference still uses the selected remote account.
7
+
8
+ Declare `execution.desktop.media.microphone.source: speech` for speech, and
9
+ `camera.source: synthetic` for a changing test-pattern camera. Local desktops
10
+ support both through native browser devices and ordinary permissions. Humanish
11
+ downloads the optional media runtime when needed; `humanish runtime setup --media`
12
+ can prepare it ahead of a study. Browser-only studies retain the smaller runtime
13
+ and start no media processes.
14
+
15
+ Hosted speech automatically selects a public E2B template and uses the same
16
+ worker. E2B's existing fake-camera flags also replace its microphone, so hosted
17
+ camera and speech cannot be combined. Explicit compatible template overrides
18
+ remain supported. Hosted speech requires `@e2b/desktop` 2.3.2 or newer for the
19
+ background command handle's streaming stdin methods.
20
+
21
+ Recordings and analysis retain spoken text and transcriptions from actual speaker
22
+ audio under the existing redaction rules. Observer links findings to those
23
+ entries and nearby screenshots. Raw audio/video is not recorded. The initial
24
+ voice is robotic, recognition is English, and clarification may be necessary;
25
+ this is turn-taking rather than interruptible realtime voice conversation.
26
+
27
+ Linux acceptance includes two concurrent participants entering a real conference
28
+ through different application roles, receiving counterpart video, and exchanging
29
+ previously undisclosed information by voice. Automatic analysis and owned-resource
30
+ cleanup completed. The Whisper `base.en` runtime also passed a Mac
31
+ conversation, including reciprocal video, a fresh fact and question, and spoken
32
+ correction and confirmation of a misheard answer. Recognition still makes
33
+ meaningful errors; this pass depended on clarification. Analysis of the retained
34
+ Mac recording validated both participant reviews and a shared finding about the
35
+ corrected misunderstanding, with all selected captures and earlier attempts
36
+ preserved.
37
+
38
+ Analysis now retains specific, safe validation failure codes. Its citation
39
+ instructions distinguish each participant's own evidence from cross-participant
40
+ observations in findings. The evidence validator remains unchanged.
41
+
42
+ See [participant media](../architecture/participant-media.md) for configuration and
43
+ the [hosted template recipe](../../runtime/browser-media/E2B.md) for maintenance.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "humanish",
3
- "version": "0.100.1",
3
+ "version": "0.102.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": [
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "scripts": {
52
52
  "build": "tsc -p tsconfig.build.json && pnpm --filter humanish-observer build && pnpm --filter humanish-tui build && node scripts/finish-build.mjs",
53
- "check": "pnpm typecheck && pnpm test && pnpm tui:test && pnpm build && pnpm cli:startup:test && pnpm cli:preflight:test && pnpm tui:smoke",
53
+ "check": "pnpm typecheck && pnpm test && pnpm tui:test && pnpm build && pnpm guest-media:startup:proof && pnpm cli:startup:test && pnpm cli:preflight:test && pnpm tui:smoke",
54
54
  "cli:startup:test": "node scripts/terminal-startup-exit-proof.mjs",
55
55
  "cli:preflight:test": "node scripts/task-route-preflight-proof.mjs",
56
56
  "humanish": "tsx src/cli.ts",
@@ -84,7 +84,8 @@
84
84
  "observer:chrome:proof": "node scripts/observer-chrome-proof.mjs",
85
85
  "observer:reliability:proof": "node scripts/observer-reliability-proof.mjs",
86
86
  "tui:connections:proof": "python3 scripts/tui-connections-proof.py",
87
- "guest-desktop:proof": "node scripts/guest-desktop-proof.mjs"
87
+ "guest-desktop:proof": "node scripts/guest-desktop-proof.mjs",
88
+ "guest-media:startup:proof": "node scripts/guest-media-worker-startup-proof.mjs"
88
89
  },
89
90
  "repository": {
90
91
  "type": "git",
@@ -105,7 +106,7 @@
105
106
  },
106
107
  "peerDependencies": {
107
108
  "@anthropic-ai/claude-agent-sdk": "^0.3.0",
108
- "@e2b/desktop": "^2.2.3"
109
+ "@e2b/desktop": "^2.3.2"
109
110
  },
110
111
  "peerDependenciesMeta": {
111
112
  "@anthropic-ai/claude-agent-sdk": {
@@ -115,8 +115,8 @@ request. Inspect a failed attempt before explicitly retrying `--provider codex
115
115
 
116
116
  ## Local browser setup
117
117
 
118
- On Linux x64 with a local rootful Docker Engine, KVM and TUN, an `app-url` lab can
119
- set `execution.target: local` and `actors[0].type: local-agent` with
118
+ On Linux x64 with local rootful Docker, KVM and TUN, or a supported M3-or-newer
119
+ Mac with native ARM64 Node and Lima 2.2+, an `app-url` lab can set `execution.target: local` and `actors[0].type: local-agent` with
120
120
  `localAgent: codex`. It uses the supported Codex ChatGPT login, not E2B or an
121
121
  OpenAI API key. Inference is remote and consumes account quota. Existing hosted
122
122
  labs stay hosted; never silently change their execution or billing provider.
@@ -128,9 +128,12 @@ the pinned runtime; a live local run also prepares it automatically. The normal
128
128
  See [the complete example and limits](../../docs/architecture/local-browser-runtime.md).
129
129
 
130
130
  Local browsers currently require a loopback app URL with an explicit port above
131
- 1023, use a 960×720 Chromium desktop, and reject inbox/media declarations. Mac
132
- setup is not integrated. Do not claim that installing the CLI also installs
133
- Docker or makes these prerequisites available.
131
+ 1023 and use a 960×720 Chromium desktop. Local inbox declarations remain
132
+ unsupported. Optional camera and spoken conversation require a separate media
133
+ runtime; follow [participant media](../../docs/architecture/participant-media.md)
134
+ for setup and provider limits. Speech uses the same continuing Codex participant,
135
+ not a second conversation. Do not claim that installing the CLI also installs
136
+ Docker or Lima, or qualifies a machine for arbitrary participant counts.
134
137
 
135
138
  ## Format Stack
136
139
 
@@ -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 {};