humanish 0.16.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -3
- package/dist/actor-contract.d.ts +1 -1
- package/dist/actor-contract.js.map +1 -1
- package/dist/computer-use.js +33 -5
- package/dist/computer-use.js.map +1 -1
- package/dist/cua-actor-lab.d.ts +1 -1
- package/dist/cua-actor-lab.js.map +1 -1
- package/dist/observer-library.d.ts +19 -0
- package/dist/observer-library.js +184 -0
- package/dist/observer-library.js.map +1 -0
- package/dist/observer-serve.d.ts +99 -0
- package/dist/observer-serve.js +289 -0
- package/dist/observer-serve.js.map +1 -0
- package/dist/observer.d.ts +34 -0
- package/dist/observer.js +57 -5
- package/dist/observer.js.map +1 -1
- package/dist/program.js +433 -19
- package/dist/program.js.map +1 -1
- package/dist/serve-exposure.d.ts +62 -0
- package/dist/serve-exposure.js +129 -0
- package/dist/serve-exposure.js.map +1 -0
- package/dist/serve-http.d.ts +8 -0
- package/dist/serve-http.js +37 -0
- package/dist/serve-http.js.map +1 -0
- package/dist/serve-tunnel.d.ts +20 -0
- package/dist/serve-tunnel.js +113 -0
- package/dist/serve-tunnel.js.map +1 -0
- package/docs/architecture/actor-contract.md +29 -3
- package/docs/architecture/observer.md +37 -0
- package/docs/architecture/serve.md +196 -0
- package/docs/contracts/schemas.md +33 -2
- package/docs/goals/current.md +2 -1
- package/docs/principles/invariants-and-defaults.md +2 -0
- package/docs/ramp/README.md +1 -1
- package/package.json +1 -1
|
@@ -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.
|
|
6
|
+
`0.18.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.
|
|
@@ -46,6 +46,8 @@ workflow without leaking private upstream truth into core.
|
|
|
46
46
|
| Adapter score | `humanish.adapter-score.v1` (`RunBundle.adapterScore`; namespaced; route-specific acceptance semantics) | see Product-Adapter Extension Seam below |
|
|
47
47
|
| Adapter artifact | `humanish.adapter-artifact.v1` (`RunBundle.adapterArtifacts[]`; namespaced; local relative proof references) | see Product-Adapter Extension Seam below |
|
|
48
48
|
| Shared-world evidence | `humanish.shared-world.v1` (additive `RunBundle.sharedWorld` + `RunBundle.attributionClass`; `topologyMode: sequential \| concurrent`) | see Shared-World Evidence below |
|
|
49
|
+
| Serve result | `humanish.serve-result.v1` (`src/observer-serve.ts` is authoritative) | none (command result envelope; see Serve Result below) |
|
|
50
|
+
| Serve control plane | reserved (`/_humanish/api/*` answers `501` `HUMANISH_SERVE_CONTROL_PLANE_DISABLED` in v1) | none |
|
|
49
51
|
|
|
50
52
|
## Lab Manifest
|
|
51
53
|
|
|
@@ -599,7 +601,11 @@ Core-owned fields:
|
|
|
599
601
|
- `startedAt` / `completedAt` / `durationMs`
|
|
600
602
|
- `status` / `completionReason` / `reason` (`completionReason` includes
|
|
601
603
|
`step_failed`: a deterministic scripted step/expectation evaluated false —
|
|
602
|
-
the subject failed the script while the harness executed faithfully
|
|
604
|
+
the subject failed the script while the harness executed faithfully; and
|
|
605
|
+
`budget_reached`: an open-ended watch session that hit the wall-clock time
|
|
606
|
+
budget AFTER productive activity — status `passed`, a NON-FAILURE completion,
|
|
607
|
+
distinct from `timed_out`, which stays reserved for a zero-progress deadline
|
|
608
|
+
hit and remains a failure)
|
|
603
609
|
- `ids`, `counts`, `items[]`, optional `tokenUsage`, `capabilities`
|
|
604
610
|
|
|
605
611
|
Unexpected actor-loop diagnostics live inside `items[]` as
|
|
@@ -646,6 +652,31 @@ never shipped — no code emits or validates it. Substrate truth today lives
|
|
|
646
652
|
inside run bundles (per-stream transport and status) and lab execution config
|
|
647
653
|
(`execution.target: local | e2b-desktop`). Do not emit this schema.
|
|
648
654
|
|
|
655
|
+
## Serve Result And Reserved Control-Plane Namespace
|
|
656
|
+
|
|
657
|
+
`humanish serve` reports `humanish.serve-result.v1`. The exported `ServeResult`
|
|
658
|
+
type and `SERVE_SCHEMA` constant in `src/observer-serve.ts` are authoritative:
|
|
659
|
+
mode (`loopback | exposed | share-safe-open`), the loopback host/port,
|
|
660
|
+
`publicUrl`, the `tunnel` provider/url, an `oauth` echo (`provider`,
|
|
661
|
+
`allowEmails`, `allowDomains` — operator-supplied allow rules, public-safe to
|
|
662
|
+
echo to the operator's own stdout, never persisted into any bundle), runs
|
|
663
|
+
listed, computed warnings, and the `ServeErrorCode` union. Exposure auth is
|
|
664
|
+
tunnel-edge only — as of 0.18.0 there are no `capabilityUrl`/`publicCapabilityUrl`
|
|
665
|
+
/`ttlMinutes` fields, no `--auth`/`--ttl` flags, and no `capability-link` mode
|
|
666
|
+
(the in-process `observer-auth.ts` capability-link was removed as a pre-1.0
|
|
667
|
+
breaking change).
|
|
668
|
+
|
|
669
|
+
Reserved: `/_humanish/api/*` is the serve control-plane namespace. Any request
|
|
670
|
+
under it answers `501` with error code `HUMANISH_SERVE_CONTROL_PLANE_DISABLED`.
|
|
671
|
+
Because the in-process auth gate is gone, a request that clears the edge (or a
|
|
672
|
+
loopback caller) reaches the `501` directly — there is no `401`-first anymore.
|
|
673
|
+
The typed `ServeControlPlane` parameter exists in the handler options and is
|
|
674
|
+
always `undefined` in v1; no code dispatches into it yet. Do not build against
|
|
675
|
+
the namespace; the reservation guarantees only that no run artifact or observer
|
|
676
|
+
asset will ever be served under it. See
|
|
677
|
+
[`docs/architecture/serve.md`](../architecture/serve.md) for the v2 seam
|
|
678
|
+
contract.
|
|
679
|
+
|
|
649
680
|
## Terminal Cost Ledger And No-Spend Proof
|
|
650
681
|
|
|
651
682
|
The terminal-product lane (`src/e2b-terminal-lab.ts`) passes a real provider key
|
package/docs/goals/current.md
CHANGED
|
@@ -16,7 +16,7 @@ Humanish should be the open-source CLI that lets a maintainer ask:
|
|
|
16
16
|
The answer should be observable, verifiable, public-safe, and easy to turn into
|
|
17
17
|
actionable feedback.
|
|
18
18
|
|
|
19
|
-
## Current Program Truth (source `0.
|
|
19
|
+
## Current Program Truth (source `0.18.0`)
|
|
20
20
|
|
|
21
21
|
The package source and repository implementation in this tree agree on these
|
|
22
22
|
points:
|
|
@@ -32,6 +32,7 @@ The immutable 2026-06-10 proof-roadmap packet is paired with a
|
|
|
32
32
|
| Subject sources/routes | Six declared sources: `this-repo`, `clone`, `app-url`, `local-app`, `terminal-product`, and `local-tree`; support is route-specific and `this-repo` remains dry-run-only | One centralized run/resource lifecycle boundary across all routes |
|
|
33
33
|
| Public proof | Version-pinned synthetic Observer sample shipped in the npm payload | A legible Observer hero from one verified real public-application run |
|
|
34
34
|
| OSS meta-lab | Dry-run contract and separate disposable smoke harness | Live meta-lab execution; disabled until repository instructions and actor credentials have an isolated boundary |
|
|
35
|
+
| Observer serving | `watch`/`observe` loopback servers plus `serve` — the run-library surface with loopback default, capability-link exposure, `share_ready`-gated open mode, and optional operator-run tunnel; streams never served remotely | A remote live-stream (`--live-streams`) design; a persistent capability-link store; a control plane that can start runs |
|
|
35
36
|
|
|
36
37
|
Capability proof and adopter replacement are different gates. A deterministic
|
|
37
38
|
test or kept live receipt proves that a Humanish mechanism works. The depth-axis
|
|
@@ -74,6 +74,8 @@ silently drifting from one is not.
|
|
|
74
74
|
| Single lane | Cost + evidence simplicity | Declared fan-out where the backend supports it — `actors[0].count: N` (homogeneous), explicit `actors[0].lanes[]` (differentiated persona/device/instruction), or compact `actors[0].roster[]` groups that normalize into lanes on the computer-use E2B route (per-lane worlds, cap 16; `execution.concurrency` bounds concurrent paid lanes) |
|
|
75
75
|
| Stock `desktop` template | The stock E2B desktop image is right for most subjects; absent `execution.desktop.template` keeps `Sandbox.create(opts)` byte-stable | `execution.desktop.template` names a custom E2B desktop image (any name/id, no allowlist) for a subject needing baked-in runtimes the stock image lacks (e.g. node/bun/a local Postgres) — threaded to `Sandbox.create(template, opts)` on every desktop-creating route and recorded in the bundle as `desktopTemplate` (public-safe) |
|
|
76
76
|
| Desktop default URL opener | Preserve the route/image's historical browser/default opener behavior when unset | `execution.desktop.browser: chrome | chromium | firefox` makes hosted CUA/shared-world browser choice explicit, fail-closed, and recorded as `desktopBrowser` in the run bundle |
|
|
77
|
+
| Loopback-only observer serving | Run bundles are local by default (public-safety plank 3); the serve/watch surfaces bind `127.0.0.1` unconditionally, and exposing them is publishing-adjacent, so exposure is fail-closed and carries declared friction | `humanish serve --expose` behind TUNNEL-EDGE auth — ngrok `--oauth google` (`--allow-email`/`--allow-domain` allow rules) or an operator `--public-url` you secure — OR `--expose --safe` (open, gated on verify-`share_ready` runs only). `watch --expose` streams a live run behind edge auth (a live run is never `share_ready`, so `--safe` alone is refused). humanish carries no in-process auth; both print computed warnings naming exactly what became reachable |
|
|
78
|
+
| Generous wall-clock safety cap | `execution.timeoutMs` bounds runaway spend, not a goal; ~30 min is reasonable for open-ended "watch it play" | A session that reaches the cap AFTER productive activity is recorded as `budget_reached` (status `passed`, a NON-FAILURE completion, exit `0`), distinct from a zero-progress `timed_out` (a failure, exit `2`). Goal-directed labs set a tight `timeoutMs` and read `completionReason` to confirm the goal, not the cap |
|
|
77
79
|
|
|
78
80
|
## The placement rule (worked example)
|
|
79
81
|
|
package/docs/ramp/README.md
CHANGED
|
@@ -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.
|
|
5
|
+
Package/source version in this tree: `0.18.0` (2026-08-02). 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
|
package/package.json
CHANGED