stable-harness 0.0.115 → 0.0.116

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.
@@ -18,6 +18,9 @@ embed it, operate it, or explain why it exists.
18
18
  review, and configured recovery loops without replacing upstream planning.
19
19
  - [Evaluation foundation](evaluation-foundation.md): normalize run records,
20
20
  declare quality contracts, and compare DeepAgents runtime modes.
21
+ - [Runtime receipt contract](receipts/runtime-receipt-contract.md): reopen decisions from
22
+ trace, event replay, artifacts, approvals, and replay bundles without
23
+ depending on backend-specific formats.
21
24
  - [Operator runbook](operator-runbook.md): validate a workspace, inspect
22
25
  events, run smoke tests, and keep the runtime operable.
23
26
 
@@ -0,0 +1,43 @@
1
+ # Runtime Receipt Contract
2
+
3
+ Stable Harness receipts are generic runtime-control evidence. They let a
4
+ product such as Flev reopen a completed decision without rerunning the agent or
5
+ depending on backend-specific trace formats.
6
+
7
+ ## Receipt Surfaces
8
+
9
+ | Surface | API | Contract |
10
+ | --- | --- | --- |
11
+ | Request inspection | `GET /requests/:id` | Current request state, selected agent, output, control gaps, and metadata |
12
+ | Trace timeline | `GET /runs/:id/trace` | Flat runtime trace derived from stored events |
13
+ | Event replay | `GET /events?requestId=:id` | Stored events first, then live events for running requests |
14
+ | Artifact list | `GET /artifacts?requestId=:id` | Request-scoped artifact metadata |
15
+ | Artifact import | `POST /artifacts` | External product artifacts attached to an existing request identity |
16
+ | Replay bundle | `GET /requests/:id/replay` | Deterministic bundle of inputs, events, artifacts, and runtime metadata |
17
+ | Approval list | `GET /approvals?status=pending` | Operator approvals across tool, memory, and product gates |
18
+ | Approval decision | `POST /approvals/:id/approve` or `POST /approvals/:id/reject` | Explicit operator decision recorded as runtime approval evidence |
19
+
20
+ ## Design Rules
21
+
22
+ - Receipts are reconstructed from runtime events, artifacts, approvals, and
23
+ replay metadata.
24
+ - Receipts are backend-preserving: DeepAgents, LangGraph, or another adapter can
25
+ emit different upstream events, but Stable Harness exposes the same runtime
26
+ control-plane surfaces.
27
+ - Products may attach artifacts through `POST /artifacts`, but artifact kind and
28
+ content remain product-owned.
29
+ - Invalid artifact imports fail closed before runtime state is written.
30
+ - Approval state is explicit. A product should never infer approval from final
31
+ answer text.
32
+ - Replay is for inspection and deterministic bundle export. It should not
33
+ silently rerun upstream custom tools.
34
+
35
+ ## Product Boundary
36
+
37
+ Stable Harness owns the receipt contract. Flev owns customer-facing receipt
38
+ rendering, workflow templates, and vertical product language. BetterCall owns
39
+ the last tool-call validation and repair boundary before execution.
40
+
41
+ This split keeps the runtime useful to LangGraph, DeepAgents, OpenAI-compatible,
42
+ and future backends without turning Stable Harness into a Flev-specific product
43
+ workflow.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/adapter-deepagents",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -15,7 +15,7 @@
15
15
  "@langchain/node-vfs": "^0.1.4",
16
16
  "@langchain/ollama": "^1.2.7",
17
17
  "@langchain/openai": "^1.4.5",
18
- "@stable-harness/core": "0.0.115",
18
+ "@stable-harness/core": "0.0.116",
19
19
  "deepagents": "^1.10.1",
20
20
  "langchain": "^1.4.0"
21
21
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/adapter-langgraph",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -11,6 +11,6 @@
11
11
  "types": "dist/src/index.d.ts",
12
12
  "peerDependencies": {
13
13
  "@langchain/langgraph": "^1.3.0",
14
- "@stable-harness/core": "0.0.115"
14
+ "@stable-harness/core": "0.0.116"
15
15
  }
16
16
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/core",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -11,7 +11,7 @@
11
11
  ".": "./dist/index.js"
12
12
  },
13
13
  "peerDependencies": {
14
- "@stable-harness/governance": "0.0.115",
15
- "@stable-harness/memory": "0.0.115"
14
+ "@stable-harness/governance": "0.0.116",
15
+ "@stable-harness/memory": "0.0.116"
16
16
  }
17
17
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/governance",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/memory",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/protocols",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -10,6 +10,6 @@
10
10
  "main": "dist/src/index.js",
11
11
  "types": "dist/src/index.d.ts",
12
12
  "peerDependencies": {
13
- "@stable-harness/core": "0.0.115"
13
+ "@stable-harness/core": "0.0.116"
14
14
  }
15
15
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/tool-gateway",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/workspace-yaml",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -11,6 +11,6 @@
11
11
  ".": "./dist/index.js"
12
12
  },
13
13
  "peerDependencies": {
14
- "@stable-harness/core": "0.0.115"
14
+ "@stable-harness/core": "0.0.116"
15
15
  }
16
16
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stable-harness",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "description": "Stable application runtime and operator control plane for agent workspaces.",
6
6
  "license": "Apache-2.0",
@@ -82,14 +82,14 @@
82
82
  "@langchain/node-vfs": "^0.1.4",
83
83
  "@langchain/ollama": "^1.2.7",
84
84
  "@langchain/openai": "^1.4.5",
85
- "@stable-harness/adapter-deepagents": "0.0.115",
86
- "@stable-harness/adapter-langgraph": "0.0.115",
87
- "@stable-harness/core": "0.0.115",
88
- "@stable-harness/governance": "0.0.115",
89
- "@stable-harness/memory": "0.0.115",
90
- "@stable-harness/protocols": "0.0.115",
91
- "@stable-harness/tool-gateway": "0.0.115",
92
- "@stable-harness/workspace-yaml": "0.0.115",
85
+ "@stable-harness/adapter-deepagents": "0.0.116",
86
+ "@stable-harness/adapter-langgraph": "0.0.116",
87
+ "@stable-harness/core": "0.0.116",
88
+ "@stable-harness/governance": "0.0.116",
89
+ "@stable-harness/memory": "0.0.116",
90
+ "@stable-harness/protocols": "0.0.116",
91
+ "@stable-harness/tool-gateway": "0.0.116",
92
+ "@stable-harness/workspace-yaml": "0.0.116",
93
93
  "deepagents": "^1.10.1",
94
94
  "langchain": "^1.4.0",
95
95
  "yaml": "^2.8.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/adapter-deepagents",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -15,7 +15,7 @@
15
15
  "@langchain/node-vfs": "^0.1.4",
16
16
  "@langchain/ollama": "^1.2.7",
17
17
  "@langchain/openai": "^1.4.5",
18
- "@stable-harness/core": "0.0.115",
18
+ "@stable-harness/core": "0.0.116",
19
19
  "deepagents": "^1.10.1",
20
20
  "langchain": "^1.4.0"
21
21
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/adapter-langgraph",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -11,6 +11,6 @@
11
11
  "types": "dist/src/index.d.ts",
12
12
  "peerDependencies": {
13
13
  "@langchain/langgraph": "^1.3.0",
14
- "@stable-harness/core": "0.0.115"
14
+ "@stable-harness/core": "0.0.116"
15
15
  }
16
16
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/cli",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -14,12 +14,12 @@
14
14
  "types": "dist/src/index.d.ts",
15
15
  "peerDependencies": {
16
16
  "@langchain/langgraph-api": "^1.2.1",
17
- "@stable-harness/adapter-deepagents": "0.0.115",
18
- "@stable-harness/adapter-langgraph": "0.0.115",
19
- "@stable-harness/core": "0.0.115",
20
- "@stable-harness/memory": "0.0.115",
21
- "@stable-harness/protocols": "0.0.115",
22
- "@stable-harness/tool-gateway": "0.0.115",
23
- "@stable-harness/workspace-yaml": "0.0.115"
17
+ "@stable-harness/adapter-deepagents": "0.0.116",
18
+ "@stable-harness/adapter-langgraph": "0.0.116",
19
+ "@stable-harness/core": "0.0.116",
20
+ "@stable-harness/memory": "0.0.116",
21
+ "@stable-harness/protocols": "0.0.116",
22
+ "@stable-harness/tool-gateway": "0.0.116",
23
+ "@stable-harness/workspace-yaml": "0.0.116"
24
24
  }
25
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/core",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -11,7 +11,7 @@
11
11
  ".": "./dist/index.js"
12
12
  },
13
13
  "peerDependencies": {
14
- "@stable-harness/governance": "0.0.115",
15
- "@stable-harness/memory": "0.0.115"
14
+ "@stable-harness/governance": "0.0.116",
15
+ "@stable-harness/memory": "0.0.116"
16
16
  }
17
17
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/evaluation",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -10,6 +10,6 @@
10
10
  "main": "dist/src/index.js",
11
11
  "types": "dist/src/index.d.ts",
12
12
  "peerDependencies": {
13
- "@stable-harness/core": "0.0.115"
13
+ "@stable-harness/core": "0.0.116"
14
14
  }
15
15
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/governance",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/memory",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/protocols",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -10,6 +10,6 @@
10
10
  "main": "dist/src/index.js",
11
11
  "types": "dist/src/index.d.ts",
12
12
  "peerDependencies": {
13
- "@stable-harness/core": "0.0.115"
13
+ "@stable-harness/core": "0.0.116"
14
14
  }
15
15
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/tool-gateway",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/workspace-yaml",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -11,6 +11,6 @@
11
11
  ".": "./dist/index.js"
12
12
  },
13
13
  "peerDependencies": {
14
- "@stable-harness/core": "0.0.115"
14
+ "@stable-harness/core": "0.0.116"
15
15
  }
16
16
  }