@synapsor/runner 1.5.3 → 1.5.4

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 (39) hide show
  1. package/CHANGELOG.md +44 -2
  2. package/README.md +20 -12
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/runner.mjs +2332 -501
  5. package/dist/runtime.mjs +788 -148
  6. package/dist/shadow.mjs +101 -1
  7. package/docs/capability-authoring.md +6 -1
  8. package/docs/cloud-mode.md +18 -0
  9. package/docs/database-enforced-scope.md +8 -0
  10. package/docs/dsl-reference.md +45 -4
  11. package/docs/getting-started-own-database.md +6 -3
  12. package/docs/guarded-crud-writeback.md +10 -1
  13. package/docs/http-mcp.md +222 -207
  14. package/docs/limitations.md +9 -2
  15. package/docs/local-mode.md +5 -2
  16. package/docs/mcp-client-setup.md +24 -11
  17. package/docs/mcp-clients.md +10 -4
  18. package/docs/openai-agents-sdk.md +16 -2
  19. package/docs/production.md +72 -7
  20. package/docs/release-notes.md +44 -3
  21. package/docs/runner-bundles.md +7 -2
  22. package/docs/runner-config-reference.md +96 -6
  23. package/docs/running-a-runner-fleet.md +42 -13
  24. package/docs/security-boundary.md +38 -3
  25. package/docs/store-lifecycle.md +93 -5
  26. package/examples/openai-agents-http/README.md +10 -4
  27. package/examples/openai-agents-http/agent.py +2 -2
  28. package/examples/runner-fleet/Dockerfile +7 -2
  29. package/examples/runner-fleet/README.md +11 -7
  30. package/examples/runner-fleet/docker-compose.yml +4 -4
  31. package/examples/runner-fleet/mint-dev-token.mjs +1 -1
  32. package/examples/runner-fleet/start-tls-runner.sh +21 -0
  33. package/examples/runner-fleet/synapsor.runner.json +27 -1
  34. package/examples/support-plan-credit/README.md +6 -1
  35. package/examples/support-plan-credit/mcp-client-examples/generic-streamable-http.json +4 -1
  36. package/examples/support-plan-credit/mcp-client-examples/openai-agents-streamable-http.ts +4 -0
  37. package/examples/support-plan-credit/synapsor.contract.json +0 -3
  38. package/package.json +1 -1
  39. package/schemas/synapsor.runner.schema.json +80 -0
package/CHANGELOG.md CHANGED
@@ -1,6 +1,48 @@
1
1
  # Changelog
2
2
 
3
- ## 1.5.3 (prepared, not published)
3
+ ## 1.5.4 (prepared, not published)
4
+
5
+ ### Networked MCP authentication hardening
6
+
7
+ - Defines explicit local-loopback, remote single-tenant, and shared multi-tenant
8
+ HTTP security profiles while preserving zero-configuration local stdio.
9
+ - Refuses non-loopback cleartext listeners before bind unless the operator
10
+ explicitly selects a trusted TLS proxy or authenticated break-glass posture.
11
+ Runner-owned TLS and optional mTLS remain supported.
12
+ - Hardens opaque endpoint tokens with environment-only provisioning, production
13
+ entropy checks, constant-time comparison, one bounded previous-token rotation
14
+ slot, and per-session credential pinning. Opaque tokens remain service access
15
+ credentials, not tenant or user identity.
16
+ - Requires verified signed identity for shared deployments. Runner validates
17
+ algorithm, signature, issuer, audience/resource, time, scope, tenant, and
18
+ principal on every request, including requests for existing MCP sessions.
19
+ - Adds RFC 9728 protected-resource metadata and standards-correct Bearer
20
+ challenges for external authorization servers. Runner remains a protected
21
+ resource and does not issue passwords, access tokens, or refresh tokens.
22
+ - Adds exact Origin and Host policy, bounded headers/bodies/connections/sessions,
23
+ TLS preflight, bounded public-only JWKS handling, and safe overload responses.
24
+ - Expands `doctor`, help, client generators, fleet examples, and deployment docs
25
+ so operators can distinguish TLS, Bearer presentation, opaque tokens, JWTs,
26
+ MCP session IDs, trusted context, database scope, and operator authority
27
+ without printing credential values.
28
+ - Adds read-only, no-ID-first `lifecycle` inspection across local SQLite and
29
+ shared PostgreSQL runtime stores. Latest, filtered business-object lookup, and
30
+ proposal/evidence/replay/job/intent/receipt/audit handles resolve one typed,
31
+ redacted proposal-to-receipt/replay timeline without creating jobs, leases,
32
+ source calls, or Cloud synchronization.
33
+ - Makes UPDATE conflict guarding exact by default in the SQL-like DSL.
34
+ Omitting `CONFLICT GUARD <column>` now fails. The explicit legacy
35
+ `CONFLICT GUARD WEAK ROW HASH ACKNOWLEDGED` form is limited to ordinary
36
+ single-row source-DB UPDATE and warns that projection hashing can miss outside
37
+ changes.
38
+ - Preserves canonical `SESSION` for implementations with a real typed session
39
+ boundary while making Runner fail closed with
40
+ `SESSION_BINDING_UNSUPPORTED`. Runner-targeted DSL validation, contract load,
41
+ lint/explain, and runtime no longer allow an environment fallback.
42
+ - Prepares `@synapsor/runner@1.5.4` and `@synapsor/dsl@1.4.4`;
43
+ `@synapsor/spec@1.4.2` and the Cloud CLI remain unchanged.
44
+
45
+ ## 1.5.3 (published 2026-07-21)
4
46
 
5
47
  ### Intent to Safe Action
6
48
 
@@ -26,7 +68,7 @@
26
68
  publishes an honest alternatives guide, and adds a deterministic 36-second
27
69
  support-plan-credit cut backed by real PostgreSQL proposal, receipt, retry,
28
70
  and stale-conflict evidence.
29
- - Prepares only `@synapsor/runner@1.5.3`; `@synapsor/spec@1.4.2`,
71
+ - Published only `@synapsor/runner@1.5.3`; `@synapsor/spec@1.4.2`,
30
72
  `@synapsor/dsl@1.4.3`, and the Cloud CLI remain unchanged.
31
73
 
32
74
  ## 1.5.2 (prepared, not published)
package/README.md CHANGED
@@ -21,8 +21,7 @@ No database, Docker, config, MCP client, LLM, or account is required:
21
21
  npx -y @synapsor/runner try --prove
22
22
  ```
23
23
 
24
- The four-second product measurement begins after package resolution. A cold
25
- `npx` download is recorded separately because registry and network time vary.
24
+ Timing begins after package resolution; cold `npx` download time varies.
26
25
 
27
26
  The embedded synthetic source requests a $55 waiver and proves:
28
27
 
@@ -34,9 +33,9 @@ Restart-safe retry: yes; duplicate mutations: 0
34
33
  Stale apply refused: yes
35
34
  ```
36
35
 
37
- Review happens outside the model-facing tools. The command stores inspectable
38
- state under `./.synapsor/try/`; it teaches the boundary and does not claim to
39
- test your database connection. `demo --quick` remains a noninteractive compatibility alias.
36
+ Review happens outside model-facing tools. State is stored under
37
+ `./.synapsor/try/`; this proves the boundary, not your database connection.
38
+ `demo --quick` remains a noninteractive compatibility alias.
40
39
 
41
40
  ## Protect One Action In Your Application
42
41
 
@@ -86,9 +85,15 @@ The agent has no approval or commit tool. Runner rechecks scope, policy, row
86
85
  version, bounds, and idempotency before returning a receipt; a retry cannot
87
86
  duplicate the mutation and a stale proposal conflicts.
88
87
 
89
- See the [own-database guide](docs/getting-started-own-database.md) for the full
90
- staging path and [Cursor plugin guide](docs/cursor-plugin.md) for
91
- `/synapsor-protect` and the plugin boundary.
88
+ Inspect the latest lifecycle without copying an id:
89
+
90
+ ```bash
91
+ synapsor-runner lifecycle --details --store ./.synapsor/local.db
92
+ ```
93
+
94
+ See the [own-database guide](docs/getting-started-own-database.md),
95
+ [Cursor plugin guide](docs/cursor-plugin.md), and
96
+ [store lifecycle guide](docs/store-lifecycle.md) for the complete paths.
92
97
 
93
98
  ## Audit An Existing MCP Server
94
99
 
@@ -155,10 +160,12 @@ not make raw SQL or prompt-injection-prone clients safe.
155
160
  | `postgres_rls` | PostgreSQL also checks transaction-bound tenant/principal scope. Arbitrary trusted-context or credential control remains outside this guarantee. |
156
161
  | `tenant_bound` | Authenticated context selects a restricted per-tenant credential or process. |
157
162
 
158
- Stdio commonly trusts process environment; shared HTTP must use verified signed
159
- claims. Model arguments, query parameters, and arbitrary tenant headers are
160
- never trusted. MySQL has no native RLS; use restricted views or tenant
161
- credentials. See [Database scope] and the
163
+ Use stdio; no socket opens. HTTP requires authentication; non-loopback
164
+ listeners require TLS or an explicit trusted TLS proxy. Shared services require
165
+ signed claims. Model-controlled input and MCP session IDs never establish
166
+ identity. See [HTTP MCP].
167
+ MySQL has no native RLS; use restricted views or tenant credentials. See
168
+ [Database scope] and the
162
169
  [build-vs-adopt guide](docs/why-synapsor-vs-app-guardrails.md).
163
170
 
164
171
  ## Connect A Staging Database
@@ -216,6 +223,7 @@ See [Security Boundary](docs/security-boundary.md) and
216
223
  [Current Limitations](docs/limitations.md).
217
224
 
218
225
  [Database scope]: docs/database-enforced-scope.md
226
+ [HTTP MCP]: docs/http-mcp.md
219
227
 
220
228
  ## Operate The Approval Loop
221
229
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAYA,OAAO,EAAoX,KAAK,WAAW,EAAyJ,MAAM,6BAA6B,CAAC;AAIxkB,OAAO,EAsBL,KAAK,qBAAqB,EAK3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAmI,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAqG,KAAK,YAAY,EAAwB,MAAM,2BAA2B,CAAC;AAEnY,OAAO,EAQL,KAAK,gBAAgB,EAEtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAaL,KAAK,yBAAyB,EAG/B,MAAM,8BAA8B,CAAC;AAsWtC,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoE1D;AAwID,KAAK,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9E,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACvC,GACL,OAAO,CAAC,MAAM,CAAC,CA+YjB;AA89ID,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAc/H;AAojBD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,IAAI,CAAC,CA4Gf;AA0+CD,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,yBAAyB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAKxH;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,WAAW,EAAE,yBAAyB,EACtC,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,EAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAgH9D"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAYA,OAAO,EAAoX,KAAK,WAAW,EAAyJ,MAAM,6BAA6B,CAAC;AAIxkB,OAAO,EAsBL,KAAK,qBAAqB,EAK3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAmI,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAqG,KAAK,YAAY,EAAwB,MAAM,2BAA2B,CAAC;AAEnY,OAAO,EAQL,KAAK,gBAAgB,EAEtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAaL,KAAK,yBAAyB,EAG/B,MAAM,8BAA8B,CAAC;AAuWtC,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqE1D;AAwID,KAAK,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9E,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACvC,GACL,OAAO,CAAC,MAAM,CAAC,CA+YjB;AA+tJD,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAc/H;AAojBD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,IAAI,CAAC,CA4Gf;AAugDD,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,yBAAyB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAKxH;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,WAAW,EAAE,yBAAyB,EACtC,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,EAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAgH9D"}