@crvouga/mockingbird-service-hermes 1.0.0 → 1.1.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/API_EVIDENCE.md +8 -8
- package/CHANGELOG.md +6 -0
- package/DISCOVERY.md +2 -2
- package/README.md +8 -8
- package/SUPPORT.md +5 -5
- package/dist/{chunk-CF4HPAWA.js → chunk-GSTG6SHU.js} +4 -4
- package/dist/{chunk-CF4HPAWA.js.map → chunk-GSTG6SHU.js.map} +2 -2
- package/dist/{chunk-46WMWAH3.js → chunk-V5DNKLTY.js} +5 -5
- package/dist/{chunk-46WMWAH3.js.map → chunk-V5DNKLTY.js.map} +2 -2
- package/dist/cli.js +2 -2
- package/dist/index.js +1 -1
- package/dist/server.js +2 -2
- package/openapi.yaml +3 -3
- package/oracle/README.md +1 -1
- package/package.json +3 -3
package/API_EVIDENCE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Hermes peer-run API evidence
|
|
2
2
|
|
|
3
|
-
Research for the public tracked-run
|
|
3
|
+
Research for the public tracked-run emulator; no Hermes runtime, inference, provider
|
|
4
4
|
credentials, or Kanban dispatcher was executed. Source inspection is not observed
|
|
5
5
|
parity. The package remains unimplemented until the later implementation stories.
|
|
6
6
|
|
|
@@ -69,7 +69,7 @@ A `_request_agent_overrides`. Explicit truthy history must be an array of object
|
|
|
69
69
|
with `role` and `content`; those values are coerced to strings. Explicit history
|
|
70
70
|
wins over previous-response history. A missing previous-response record is ignored
|
|
71
71
|
by this pinned run handler, unlike the separate Responses API. Transcript loading,
|
|
72
|
-
model routing and execution are not inference requirements for the
|
|
72
|
+
model routing and execution are not inference requirements for the emulator; retain
|
|
73
73
|
synthetic metadata and script public observations without executing them.
|
|
74
74
|
|
|
75
75
|
A new run has an opaque `run_` plus UUID-hex ID. The POST response is exactly
|
|
@@ -94,7 +94,7 @@ adds `error`; approval state can add `approval`; completion can include
|
|
|
94
94
|
|
|
95
95
|
Public states observed in source are `queued`, `running`, `waiting_for_approval`,
|
|
96
96
|
`stopping`, `completed`, `failed`, `cancelled`, and `interrupted`. Only the latter
|
|
97
|
-
four are terminal for durable replay. The
|
|
97
|
+
four are terminal for durable replay. The emulator can script observations without
|
|
98
98
|
implementing tools, approval resolution, SSE, steering, or agent execution.
|
|
99
99
|
|
|
100
100
|
## Errors and overload
|
|
@@ -147,7 +147,7 @@ For ordinary API calls the ownership/replay scope is SHA-256 of
|
|
|
147
147
|
the expected configured API key or the literal unauthenticated-listener fallback.
|
|
148
148
|
It is not derived from arbitrary supplied bearer text. Hosted-room requests use a
|
|
149
149
|
separate verified-claims scope (room/install/authority epoch/member/target/profile);
|
|
150
|
-
room token generation and validation are excluded. The
|
|
150
|
+
room token generation and validation are excluded. The emulator must model isolation
|
|
151
151
|
using explicit synthetic profile/identity controls, without persisting credentials
|
|
152
152
|
or changing consumer authorization. [R `_run_idempotency_scope`.]
|
|
153
153
|
|
|
@@ -187,7 +187,7 @@ returns409 as above. [R lines1353–1422.]
|
|
|
187
187
|
When a stopped executor returns `interrupted: true`, status becomes `cancelled`.
|
|
188
188
|
If completion wins and returns a normal final result, it becomes `completed`,
|
|
189
189
|
even after a stop request. Structured execution failure remains `failed`.
|
|
190
|
-
Stopping queued work before agent creation also ends as cancelled. The
|
|
190
|
+
Stopping queued work before agent creation also ends as cancelled. The emulator must
|
|
191
191
|
script these distinct outcomes and preserve pending work between acceptance and
|
|
192
192
|
settlement. [R lines705–719 and858–927; T
|
|
193
193
|
`test_completion_wins_before_uncooperative_stop_is_acknowledged`.]
|
|
@@ -263,7 +263,7 @@ Resolved `/nousresearch/hermes-agent` again and queried submission/polling field
|
|
|
263
263
|
and validation. Context7 still lacks `v2026.8.31`; results cite current-main run
|
|
264
264
|
handlers and programmatic-integration documentation. Its newer terminal flags
|
|
265
265
|
(`completed`, `partial`, `turn_exit_reason`) and shutdown wording are not imported
|
|
266
|
-
into this pinned
|
|
266
|
+
into this pinned emulator. Re-fetched R at immutable commit
|
|
267
267
|
`29112bef099274229cadff79cdff7bf7b99c4b77`; SHA-256 remains
|
|
268
268
|
`048ae843592d701ff47437bd8edd47cd64ca6c0fdf88a71045bdb6fb337fbc63`.
|
|
269
269
|
Re-read admission, `_set_run_status`, completion/failure and GET branches.
|
|
@@ -271,7 +271,7 @@ Re-read admission, `_set_run_status`, completion/failure and GET branches.
|
|
|
271
271
|
The implemented subset admits keyless ordinary submissions, preserves session/model
|
|
272
272
|
metadata, and polls stored public observations. Python JSON truthiness is retained
|
|
273
273
|
for input/history validation. Non-object roots and malformed final message elements
|
|
274
|
-
return explicit
|
|
274
|
+
return explicit emulator-only 501 responses because their upstream error behavior is
|
|
275
275
|
not verified. Hosted rooms, nonempty idempotency keys and invalid memory headers
|
|
276
276
|
also return explicit 501 responses at this stage. Valid memory keys are echoed;
|
|
277
277
|
no credentials are checked or used as namespace identity.
|
|
@@ -379,7 +379,7 @@ conflict is returned. Hosted-room retention and SSE buffer expiry are excluded.
|
|
|
379
379
|
|
|
380
380
|
Tests exercise exact equality and one millisecond beyond, cache recovery from
|
|
381
381
|
durable rows, pruning versus cached survivors, active and interrupted states,
|
|
382
|
-
progress persistence, restart and Timeline. The
|
|
382
|
+
progress persistence, restart and Timeline. The emulator folds elapsed sweep ticks
|
|
383
383
|
into the next admission/observation and offers an explicit single-sweep control;
|
|
384
384
|
it does not start a background worker. This source-backed model remains subject
|
|
385
385
|
to the independent runtime comparison in US-022.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog — @crvouga/mockingbird-service-hermes
|
|
2
2
|
|
|
3
|
+
## 1.1.0 (2026-10-09)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- redesign emulator experience ([d6038c2](https://github.com/crvouga/mockingbird/commit/d6038c27eebbaa1751f02bc9305002a5b1304779))
|
|
8
|
+
|
|
3
9
|
## 1.0.0 (2026-10-07)
|
|
4
10
|
|
|
5
11
|
### ⚠️ Breaking changes
|
package/DISCOVERY.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @crvouga/mockingbird-service-hermes discovery
|
|
2
2
|
|
|
3
3
|
This is the installed-package index for coding agents and tooling. All relative links resolve
|
|
4
|
-
inside `node_modules/@crvouga/mockingbird-service-hermes/`; no repository checkout is needed to discover the
|
|
4
|
+
inside `node_modules/@crvouga/mockingbird-service-hermes/`; no repository checkout is needed to discover the emulator's
|
|
5
5
|
supported surface or documented behavior.
|
|
6
6
|
|
|
7
7
|
## Capability and behavior sources
|
|
@@ -47,7 +47,7 @@ designed for assertions and diagnosis by consuming test suites.
|
|
|
47
47
|
## Report a mismatch or missing capability
|
|
48
48
|
|
|
49
49
|
Follow the [agent reporting contract](https://github.com/crvouga/mockingbird/blob/main/docs/REPORTING_ISSUES.md). Include package version,
|
|
50
|
-
operation/command, a minimal redacted request, actual
|
|
50
|
+
operation/command, a minimal redacted request, actual emulator result, expected oracle result or vendor
|
|
51
51
|
documentation, and whether the mismatch appears in the matrix. Never include keys, tokens,
|
|
52
52
|
customer data, prompts, PHI, card data, or unredacted recordings.
|
|
53
53
|
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @crvouga/mockingbird-service-hermes
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Local emulators. Real API contracts. Part of [Mockingbird](https://github.com/crvouga/mockingbird).
|
|
4
4
|
|
|
5
|
-
Work-in-progress
|
|
5
|
+
Work-in-progress emulator for the Hermes Agent public peer-run API pinned to
|
|
6
6
|
`v2026.8.31`. Submission, polling and stop work with explicit synthetic lifecycle observations.
|
|
7
7
|
Events, approval and steer remain unsupported. No agent or inference runs.
|
|
8
8
|
[API_EVIDENCE.md](API_EVIDENCE.md) records source-backed semantics and gaps;
|
|
@@ -50,10 +50,10 @@ The Node entry is separate from the portable Fetch entry.
|
|
|
50
50
|
|
|
51
51
|
`POST /v1/runs` admits a run and `GET /v1/runs/{run_id}` polls it.
|
|
52
52
|
`POST /v1/runs/{run_id}/stop` requests interruption. Events, approval and steer
|
|
53
|
-
return
|
|
53
|
+
return an emulator-only 501 envelope with `error.type` of
|
|
54
54
|
`mockingbird_unsupported` and `error.code` of `operation_not_implemented`.
|
|
55
55
|
Missing runs use the pinned `run_not_found` 404 envelope. Unknown paths return
|
|
56
|
-
404.
|
|
56
|
+
404. Emulator-only errors do not claim real Hermes rejection behavior.
|
|
57
57
|
|
|
58
58
|
- `GET /__admin/health` identifies the `hermes` runtime.
|
|
59
59
|
- Select isolated namespaces with `x-mockingbird-namespace` or `/__admin/ns/<name>/…`.
|
|
@@ -128,13 +128,13 @@ The observation control accepts `status`: `queued`, `running`,
|
|
|
128
128
|
for completed. Usage has three nonnegative integer counts: `input_tokens`,
|
|
129
129
|
`output_tokens`, `total_tokens`. Completion defaults to empty output and zero counts.
|
|
130
130
|
Terminal observations cannot be changed (409); invalid control payloads return 400
|
|
131
|
-
without changing state. These are
|
|
131
|
+
without changing state. These are emulator controls, not additional Hermes routes.
|
|
132
132
|
|
|
133
133
|
Timestamps are Unix seconds from the shared clock. Run records and their identity
|
|
134
134
|
sequence use shared storage and Timeline; reset clears them. No timers, agent
|
|
135
135
|
handles or prompts are stored. Polling result content stays out of journals.
|
|
136
136
|
Malformed roots/final input elements, hosted rooms and invalid memory-scope headers
|
|
137
|
-
currently return explicit
|
|
137
|
+
currently return explicit emulator-only 501 responses. See evidence for these limits.
|
|
138
138
|
|
|
139
139
|
## Idempotent submission and synthetic scope
|
|
140
140
|
|
|
@@ -149,7 +149,7 @@ The fingerprint covers the entire parsed JSON body, including unknown fields,
|
|
|
149
149
|
and the trimmed `X-Hermes-Session-Key`. Object key order does not matter; array
|
|
150
150
|
order and session/body changes do. Raw integer/float forms follow Python:
|
|
151
151
|
`1` and `1.0` conflict, `1.0` and `1e0` replay, and negative floating zero differs
|
|
152
|
-
from positive zero. Lone Unicode surrogates return an explicit
|
|
152
|
+
from positive zero. Lone Unicode surrogates return an explicit emulator-only 501;
|
|
153
153
|
Python cannot UTF-8 encode that fingerprint either.
|
|
154
154
|
|
|
155
155
|
`POST /__admin/hermes/scope` with `{ "profile": "synthetic-profile",
|
|
@@ -197,7 +197,7 @@ restores the owner flags and run/reservation state together.
|
|
|
197
197
|
|
|
198
198
|
The controlled clock governs two independent retention layers. Cached `completed`,
|
|
199
199
|
`failed` and `cancelled` results expire when their update age is strictly greater
|
|
200
|
-
than one hour; equality survives and `interrupted` is excluded. The
|
|
200
|
+
than one hour; equality survives and `interrupted` is excluded. The emulator evaluates
|
|
201
201
|
elapsed 60-second sweep ticks on admission or observation, without a background
|
|
202
202
|
process. `POST /__admin/hermes/sweep` with `{}` explicitly executes one sweep at the
|
|
203
203
|
current clock, returning `cacheRemoved` and `simulated: true`.
|
package/SUPPORT.md
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
Generated from `openapi.yaml`; do not edit by hand.
|
|
4
4
|
|
|
5
5
|
- operations in spec: **6**
|
|
6
|
-
- supported by the
|
|
6
|
+
- supported by the emulator: **3**
|
|
7
7
|
- parity enabled: **3**
|
|
8
8
|
|
|
9
|
-
| operationId | route |
|
|
9
|
+
| operationId | route | emulator | parity | notes |
|
|
10
10
|
| --- | --- | --- | --- | --- |
|
|
11
11
|
| `RunCreate` | `POST /v1/runs` | ✅ supported | ⚠️ unsafe (opt-in) | |
|
|
12
12
|
| `RunGet` | `GET /v1/runs/{run_id}` | ✅ supported | ✅ | |
|
|
13
13
|
| `RunStop` | `POST /v1/runs/{run_id}/stop` | ✅ supported | ⚠️ unsafe (opt-in) | |
|
|
14
|
-
| `RunEvents` | `GET /v1/runs/{run_id}/events` | ❌ unsupported | — | SSE is outside the public peer-run
|
|
15
|
-
| `RunApproval` | `POST /v1/runs/{run_id}/approval` | ❌ unsupported | — | Host tool approval execution is outside this
|
|
16
|
-
| `RunSteer` | `POST /v1/runs/{run_id}/steer` | ❌ unsupported | — | Agent execution and steering are outside this
|
|
14
|
+
| `RunEvents` | `GET /v1/runs/{run_id}/events` | ❌ unsupported | — | SSE is outside the public peer-run emulator subset. |
|
|
15
|
+
| `RunApproval` | `POST /v1/runs/{run_id}/approval` | ❌ unsupported | — | Host tool approval execution is outside this emulator. |
|
|
16
|
+
| `RunSteer` | `POST /v1/runs/{run_id}/steer` | ❌ unsupported | — | Agent execution and steering are outside this emulator. |
|