humanish 0.87.0 → 0.88.1

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 (55) hide show
  1. package/README.md +12 -2
  2. package/dist/actor-contract.d.ts +4 -1
  3. package/dist/actor-contract.js.map +1 -1
  4. package/dist/actor-goal-source.d.ts +5 -0
  5. package/dist/actor-goal-source.js +32 -0
  6. package/dist/actor-goal-source.js.map +1 -0
  7. package/dist/actor-stop-cause.d.ts +2 -0
  8. package/dist/actor-stop-cause.js +7 -2
  9. package/dist/actor-stop-cause.js.map +1 -1
  10. package/dist/computer-use.d.ts +3 -0
  11. package/dist/computer-use.js +30 -4
  12. package/dist/computer-use.js.map +1 -1
  13. package/dist/cua-actor-lab.d.ts +10 -3
  14. package/dist/cua-actor-lab.js +35 -10
  15. package/dist/cua-actor-lab.js.map +1 -1
  16. package/dist/cua-admission-limit.d.ts +12 -0
  17. package/dist/cua-admission-limit.js +20 -0
  18. package/dist/cua-admission-limit.js.map +1 -0
  19. package/dist/cua-diagnostics.d.ts +38 -0
  20. package/dist/cua-diagnostics.js +68 -0
  21. package/dist/cua-diagnostics.js.map +1 -0
  22. package/dist/e2b-desktop-executor.js +4 -2
  23. package/dist/e2b-desktop-executor.js.map +1 -1
  24. package/dist/feedback.js +5 -3
  25. package/dist/feedback.js.map +1 -1
  26. package/dist/index.d.ts +2 -1
  27. package/dist/index.js +2 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/observer-data.js +11 -4
  30. package/dist/observer-data.js.map +1 -1
  31. package/dist/openai-responses-cu.js +13 -2
  32. package/dist/openai-responses-cu.js.map +1 -1
  33. package/dist/program.d.ts +2 -0
  34. package/dist/program.js +9 -4
  35. package/dist/program.js.map +1 -1
  36. package/dist/run.d.ts +18 -5
  37. package/dist/run.js +70 -2
  38. package/dist/run.js.map +1 -1
  39. package/dist/stats.js +1 -1
  40. package/dist/stats.js.map +1 -1
  41. package/dist/telemetry.d.ts +3 -0
  42. package/dist/telemetry.js +15 -1
  43. package/dist/telemetry.js.map +1 -1
  44. package/docs/architecture/examples/state-driven-local-app/README.md +75 -0
  45. package/docs/architecture/examples/state-driven-local-app/app.mjs +48 -0
  46. package/docs/architecture/examples/state-driven-local-app/runner.mjs +104 -0
  47. package/docs/architecture/state-driven-executor.md +19 -26
  48. package/docs/contracts/adapter-admission.md +54 -0
  49. package/docs/contracts/run-bundle.md +8 -1
  50. package/docs/contracts/schemas.md +16 -2
  51. package/docs/goals/current.md +9 -4
  52. package/docs/ramp/README.md +11 -1
  53. package/docs/release/0.88.0-study-diagnostics.md +43 -0
  54. package/docs/release/0.88.1-completion-evidence-and-local-app.md +79 -0
  55. package/package.json +1 -1
@@ -0,0 +1,43 @@
1
+ # Humanish 0.88.0: see what ended a study
2
+
3
+ When a computer-use study stops before the task is done, `humanish lab run` now
4
+ shows its diagnostic category and recorded stop cause. Fan-out results retain
5
+ each participant's ending. Different endings remain mixed. Older generic budget
6
+ stops retain an unspecified limit. Successful dry-runs are reported as contract
7
+ previews.
8
+
9
+ New review packets and feedback participant summaries use recorded interruption
10
+ labels. Previously saved review packets keep their original wording.
11
+
12
+ An adapter can use the new `CuaAdmissionLimitError` to declare that its local
13
+ limit refused a request before dispatch. Humanish records **adapter admission
14
+ limit** and ends the interaction without another retry, action or closing
15
+ report. Earlier actions and measured usage remain available. A refusal of an
16
+ optional closing report preserves the already observed task outcome. See the
17
+ [adapter contract](../contracts/adapter-admission.md) for when this signal applies.
18
+
19
+ If an earlier request stalled or had an ambiguous transport outcome, a later
20
+ success or local refusal does not make its missing usage known. The cost summary
21
+ keeps measured token estimates and an explicit unmeasured line. With a spending
22
+ cap, Humanish skips the optional closing report while that usage is uncertain.
23
+
24
+ Install with `npm install -g humanish@0.88.0`. CLI JSON adds optional diagnostics
25
+ without changing the existing status or exit-code contract. Usage telemetry,
26
+ enabled by default, adds two fields with fixed allowed values: diagnostic
27
+ category and stop cause. See [TELEMETRY.md](https://github.com/danielgwilson/humanish/blob/main/TELEMETRY.md)
28
+ for their scope and opt-out controls.
29
+
30
+ ## Verification and limits
31
+
32
+ [Admission-limit checks](https://github.com/danielgwilson/humanish/pull/759)
33
+ cover refusal before and after activity, sanitized error handling, preserved
34
+ outcomes and unknown usage after both successful and refused retries.
35
+ [CLI diagnostic checks](https://github.com/danielgwilson/humanish/pull/758)
36
+ cover previews, mixed endings, missing causes, invalid evidence and telemetry
37
+ allowlists. The required release checks also cover package installation,
38
+ Observer rendering and the website.
39
+
40
+ The admission signal depends on an accurate adapter declaration; it is not a
41
+ provider billing receipt. Existing generic failures keep their recorded
42
+ outcomes. This release does not infer causes from participant prose or establish
43
+ why an older study failed.
@@ -0,0 +1,79 @@
1
+ # Humanish 0.88.1: distinguish reported completion from condition matches
2
+
3
+ When a computer-use participant says it finished, review and Observer now
4
+ label that completion as **participant-reported**. A recorded `stopWhen` match
5
+ or completed dwell window identifies a **recorded completion condition** instead.
6
+ Missing, malformed or conflicting completion evidence is labeled unavailable.
7
+ Zero-completion counts use **0/N recorded completions**, and aggregate stats use
8
+ **recorded goal completions**.
9
+
10
+ A matched condition establishes only that condition, not every aspect of the
11
+ mission. The run gate and share-safety verification remain separate from task
12
+ adjudication. This release adds no automatic semantic evaluator.
13
+
14
+ Existing actor statuses, `participants.reachedGoal`, verdict values and
15
+ denominators stay unchanged. Current review commands, Observer rendering and
16
+ newly generated feedback drafts apply these labels to older runs while
17
+ preserving original bundles and actor traces. Existing HTML exports keep their
18
+ original renderer. Other actor routes retain their own completion semantics.
19
+
20
+ ## Run a local app from npm
21
+
22
+ To connect your local app's state and actions to Humanish, start with the
23
+ [complete npm example](../architecture/examples/state-driven-local-app/README.md):
24
+
25
+ ```bash
26
+ npm install humanish@0.88.1
27
+ node node_modules/humanish/docs/architecture/examples/state-driven-local-app/runner.mjs
28
+ ```
29
+
30
+ It starts a synthetic loopback app, reads its state, sends a greeting through
31
+ its HTTP action endpoint and verifies the recorded run. A `finally` block closes
32
+ the app. The provider follows a deterministic rule, so the example needs no
33
+ model credentials or E2B desktop. Use Node.js 20.3 or later.
34
+
35
+ The runner supplies both `CuaExecutor` and `CuaProvider`, passes a decoded object
36
+ to `parseLabConfig`, and checks the config and backend discriminants. The
37
+ existing `stableProgressKey` utility is now exported from `humanish`, so callers
38
+ can use the same bounded state projection as the loop. Replace the two ports
39
+ with your app bridge and provider; the example guide explains the responsibilities
40
+ that remain with them.
41
+
42
+ ## Clipboard fallback returns after the write
43
+
44
+ When direct desktop typing fails, Humanish can write the text to the X clipboard
45
+ and paste it. `xclip` and `xsel` fork a process to keep the selection available;
46
+ inherited output pipes could leave the command runner waiting until timeout.
47
+ Both clipboard-write commands now detach their output while preserving the
48
+ existing exit checks, temporary-file cleanup and paste dispatch.
49
+
50
+ Custom desktop images still need a working `xclip` or `xsel`. Missing utilities
51
+ continue to report `clipboard-utility-missing`. This patch adds no typing retry,
52
+ and recovery after a primary write inserted an unknown partial prefix remains
53
+ unproven. [Issue #340](https://github.com/danielgwilson/humanish/issues/340) remains
54
+ open for that broader typing problem.
55
+
56
+ ## Verification and limits
57
+
58
+ [Completion label checks](https://github.com/danielgwilson/humanish/pull/765)
59
+ cover participant reports, recorded condition matches, zero completions and
60
+ unavailable legacy detail. They preserve recorded counts and statuses while
61
+ refreshing historical review and feedback projections. Existing adapter
62
+ narrative remains available.
63
+
64
+ [The packaged example](https://github.com/danielgwilson/humanish/pull/762) completed
65
+ two independent local runs on Node 20.20.2 and 24.12.0. Each made two HTTP state
66
+ reads and one state-changing request, reached `goal_satisfied`, verified as
67
+ `share_ready` and closed its server. These checks used locally packed candidate
68
+ source labeled 0.88.0, distinct from the registry release with that version.
69
+
70
+ [The clipboard correction](https://github.com/danielgwilson/humanish/pull/761)
71
+ passed two real desktop conformance cases, one with explicitly installed `xclip`
72
+ and one with `xsel`. Each preserved the exact Unicode/newline/quoted text with
73
+ one paste and removed its transfer file. Both cases refused the primary write
74
+ before it could type anything. They do not establish default-image clipboard
75
+ availability or recovery from partial typing.
76
+
77
+ Both checks were model-free. They establish the tested integration and executor
78
+ behavior; persona effectiveness and independent maintainer adoption remain
79
+ separate questions.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "humanish",
3
- "version": "0.87.0",
3
+ "version": "0.88.1",
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": [