@ontrails/http 0.2.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/CHANGELOG.md +570 -0
- package/README.md +169 -0
- package/package.json +59 -0
- package/src/blob-output.ts +31 -0
- package/src/build.ts +1552 -0
- package/src/bun.ts +270 -0
- package/src/fetch.ts +1047 -0
- package/src/index.ts +28 -0
- package/src/method.ts +68 -0
- package/src/openapi.ts +383 -0
- package/src/query-coercion.ts +150 -0
- package/src/testing.ts +378 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,570 @@
|
|
|
1
|
+
# @ontrails/http
|
|
2
|
+
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`664e8bb`](https://github.com/outfitter-dev/trails/commit/664e8bb049e61f1d47cec1dd246606707af5d1a8): Point public installation examples at exact approved 0.2.0 versions and distinguish the prepared source release from pending npm publication.
|
|
8
|
+
- [`b3ddf91`](https://github.com/outfitter-dev/trails/commit/b3ddf918ada8211f44983512e2bbdfbc5b66d722): Prepare the first normal Trails release at `0.2.0` on `latest`, replacing the unpublished 1.0.0 source release. The target advances the original `0.1.0` source minor, which was never published under the current package names. Public packages remain in lockstep. Update consumer installation guidance and provide a temporary manifest bridge for old 1.0 beta sources. Published beta versions remain unchanged; minor 0.x releases may carry documented breaking changes.
|
|
9
|
+
|
|
10
|
+
The `1.0.0` section retained below records an unpublished preparation, not an npm release. Its accumulated changes are included in `0.2.0`; the section remains as source history alongside the published beta entries.
|
|
11
|
+
|
|
12
|
+
## 1.0.0
|
|
13
|
+
|
|
14
|
+
### Major Changes
|
|
15
|
+
|
|
16
|
+
- [`5cab237`](https://github.com/outfitter-dev/trails/commit/5cab237bcdb47ba6317953ee42aeee3458d26acb): Restructure HTTP package and fix Codex review findings.
|
|
17
|
+
|
|
18
|
+
**http**: BREAKING — the Hono adapter moved to `@ontrails/hono` while `@ontrails/http` owns framework-agnostic route definitions. Hono is now a peer dependency of the adapter. `buildHttpRoutes()` is framework-agnostic. Fixed: malformed JSON → 400, execute() never throws, query parsing preserves raw strings and supports arrays.
|
|
19
|
+
|
|
20
|
+
**schema**: OpenAPI 200 response wraps in `{ data }` envelope matching wire format. Always includes 400 ValidationError with error schema. basePath trailing slash normalized.
|
|
21
|
+
|
|
22
|
+
### Minor Changes
|
|
23
|
+
|
|
24
|
+
- [`69057e9`](https://github.com/outfitter-dev/trails/commit/69057e9348006b2b70c9f6237572a5aa8de3ee1f): Add hierarchical CLI command trees and structured input, enforce established-only topo exports across surfaces, move developer topo and tracing state onto shared `trails.db` with pins and maintenance flows, and ship schema-derived stores through `@ontrails/store` and its Drizzle runtime.
|
|
25
|
+
- [`ebbf0c5`](https://github.com/outfitter-dev/trails/commit/ebbf0c538550429f92944ac2d196b6bc9ca00c4b): Consolidated improvements across all surface packages.
|
|
26
|
+
|
|
27
|
+
**core**: Add `TrailResult<T>` utility type, `topo.ids()` and `topo.count` accessors, `dispatch()` for headless trail execution, and extract shared `executeTrail` pipeline used by CLI/MCP/HTTP.
|
|
28
|
+
|
|
29
|
+
**http**: Detect route path collisions and return `Result` from `buildHttpRoutes()`, wire request `AbortSignal` through to trail context, and make write → POST mapping explicit in intent-to-method lookup.
|
|
30
|
+
|
|
31
|
+
**mcp**: Return `Result` from `buildMcpTools()` on collision instead of throwing.
|
|
32
|
+
|
|
33
|
+
**cli**: Verify exception catching via centralized `executeTrail`.
|
|
34
|
+
|
|
35
|
+
**testing**: Follow context awareness improvements.
|
|
36
|
+
|
|
37
|
+
**warden**: Refactor rules as composable trails with examples.
|
|
38
|
+
|
|
39
|
+
**schema**: Error code and empty body fixes.
|
|
40
|
+
|
|
41
|
+
- [`5795bd2`](https://github.com/outfitter-dev/trails/commit/5795bd21abe44b0b91650c34981bf61080e4a7a3): HTTP surface and OpenAPI generation.
|
|
42
|
+
|
|
43
|
+
**http**: New `@ontrails/http` package — framework-agnostic HTTP route projection. `surface()` derives routes from trail IDs, maps intent to HTTP verbs (read→GET, write→POST, destroy→DELETE), and maps error taxonomy to status codes.
|
|
44
|
+
|
|
45
|
+
**trails**: Depend on `@ontrails/http` for `trails survey --openapi`.
|
|
46
|
+
|
|
47
|
+
- [`2bf239e`](https://github.com/outfitter-dev/trails/commit/2bf239e0ed42f82c3b3789b89db98fb6fe0c017a): Move OpenAPI generation ownership to the HTTP surface.
|
|
48
|
+
|
|
49
|
+
**http**: Export `deriveOpenApiSpec()` and its OpenAPI types from `@ontrails/http`.
|
|
50
|
+
|
|
51
|
+
**schema**: Remove the OpenAPI helper export so schema stays focused on surface maps, locks, and semantic diffing.
|
|
52
|
+
|
|
53
|
+
- [`5adb995`](https://github.com/outfitter-dev/trails/commit/5adb99551c2dda6190d46cce7f60bb08d63c99aa): Complete the v1 hard cutover from the authored `blaze` field to
|
|
54
|
+
`implementation` across trail contracts, surface projections, tests, examples,
|
|
55
|
+
and public source-analysis helpers. Existing applications must rename authored
|
|
56
|
+
trail behavior fields and direct trail-object access before upgrading.
|
|
57
|
+
- [`88a6a62`](https://github.com/outfitter-dev/trails/commit/88a6a62a9e9e230ca6d368fa78dc3ece6c816204): Complete the v1 classification-first cutover from projection/project vocabulary
|
|
58
|
+
to derive/derived for contract-owned fact production and render/rendered for
|
|
59
|
+
surface presentation. Public type, helper, rule, relation, and report names move
|
|
60
|
+
without compatibility aliases; ordinary repository/project nouns remain
|
|
61
|
+
explicit preserves or structured review inventory.
|
|
62
|
+
- [`26f9ffd`](https://github.com/outfitter-dev/trails/commit/26f9ffd7f168fc3c45a1a57d5315902f41963a2e): Project typed-layer `input` schemas onto MCP and HTTP surfaces. Closes Phase 7. Lifts `collectAttachedTypedLayers` and `projectLayerFieldName` (collision-rename rule) into `@ontrails/core/internal/layer-projection` so all three surfaces share one source of truth. The CLI surface refactors to consume the lifted helpers (no behavior change). MCP merges layer fields into each tool's `inputSchema` and partitions inbound args at invocation time. HTTP merges layer fields into the route's request schema (query for reads, body for writes) and exposes new optional `HttpRouteDefinition.inputSchema` + `layerInputProjections` for surface adapters / OpenAPI generators. Collision rule matches TRL-473's: deterministic rename to a layer-prefixed camelCase name with the original captured in the routing table. Side fix: MCP and HTTP handlers now forward `topoLayers: graph.layers` + `surfaceLayers: layers` so topo-scope layers actually compose at runtime (previously the handlers used the deprecated `layers` alias and never read `graph.layers`).
|
|
63
|
+
- [`c0b2948`](https://github.com/outfitter-dev/trails/commit/c0b29483c289f57ac9b491d8776e29e4335b937f): Add `@ontrails/http/fetch`, a shared Web Fetch request/response kernel for HTTP
|
|
64
|
+
surface materializers.
|
|
65
|
+
- [`fc3219c`](https://github.com/outfitter-dev/trails/commit/fc3219c093a1049b9f1b6d8db5ff38632a57ed35): Add `@ontrails/http/bun`, a Bun-native HTTP surface materializer backed by the
|
|
66
|
+
shared Web Fetch kernel.
|
|
67
|
+
- [`22c6c06`](https://github.com/outfitter-dev/trails/commit/22c6c06a3b846dab64b78b7ccc27cb1ebd22e402): Accept ADR-0041 Unified Observability and ship the first activation and
|
|
68
|
+
observability primitives it depends on: activation trace records, topo-level
|
|
69
|
+
observe configuration, webhook activation materialization, signal/webhook
|
|
70
|
+
warden coaching, the `@ontrails/observe` package, sink composition, and
|
|
71
|
+
zero-dependency observe sinks.
|
|
72
|
+
- [`fde5516`](https://github.com/outfitter-dev/trails/commit/fde5516ad396faa718936b10ff658b3ade3383b9): Trail-native vocabulary cutover. Breaking API field renames across all packages:
|
|
73
|
+
|
|
74
|
+
- Trail spec: `run:` → `blaze:`, `follow:` → `crosses:`, `services:` → `resources:`, `metadata:` → `meta:`, `emits:` → `fires:`
|
|
75
|
+
- Runtime: `ctx.follow()` → `ctx.cross()`, `ctx.emit()` → `ctx.fire()`, `ctx.signal` (abort) → `ctx.abortSignal`
|
|
76
|
+
- Entry points: `trailhead(app)` → `surface(app)`
|
|
77
|
+
- Package rename: `@ontrails/crumbs` / `@ontrails/tracker` → `@ontrails/tracing`
|
|
78
|
+
- Wrapper types: retired gate/middleware vocabulary in favor of `Layer` and `layers`
|
|
79
|
+
- Package taxonomy: retired connector vocabulary in favor of adapters
|
|
80
|
+
|
|
81
|
+
### Patch Changes
|
|
82
|
+
|
|
83
|
+
- [`e41c382`](https://github.com/outfitter-dev/trails/commit/e41c3829c2d692683b78c730e67fd5b17ac0ff4e): Document beta-channel install guidance in package and adapter README install snippets so consumers use explicit `@beta` (or pinned `1.0.0-beta.N`) tags instead of accidental `latest` resolution during the prerelease line. Adds the policy doc at `docs/releases/beta-channel-policy.md`, prints both `latest` and `beta` dist-tags in `bun run publish:registry-check`, and aligns plugin/skill install snippets.
|
|
84
|
+
- [`da6e2ca`](https://github.com/outfitter-dev/trails/commit/da6e2caeb06f150042148f10f03a6a9dae5648d1): Cleanup and hardening pass across all packages.
|
|
85
|
+
|
|
86
|
+
**core**: Deduplicate `DispatchOptions` as type alias of `ExecuteTrailOptions`. Replace `TrailContext` index signature with typed `extensions` field for type safety. Deep-merge `extensions` in `executeTrail` context resolution. Remove unused surface-map type plus legacy `connectors.ts`, `health.ts`, and `job.ts` proof-of-concept files from the published package.
|
|
87
|
+
|
|
88
|
+
**cli**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `surface()` with opt-out via `validate: false`.
|
|
89
|
+
|
|
90
|
+
**http**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `surface()` with opt-out.
|
|
91
|
+
|
|
92
|
+
**mcp**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `surface()` with opt-out.
|
|
93
|
+
|
|
94
|
+
**warden**: Project-aware rule context preserved in trail wrappers.
|
|
95
|
+
|
|
96
|
+
- [`6944147`](https://github.com/outfitter-dev/trails/commit/694414712949a1107235684a2492ac982ed39a20): Complete trifecta for config, permits, and tracker (formerly tracks)
|
|
97
|
+
|
|
98
|
+
- **config**: Add `configResource`, `config.trail`, and `config.workspace` trails with full `defineConfig`, `resolve`, `describe`, `explain`, `doctor`, and code generation support
|
|
99
|
+
- **permits**: Add `authResource` and `auth.verify` trail for runtime authorization checks
|
|
100
|
+
- **tracing**: Rename tracks to tracing; add `tracingResource` and `tracing.status` trail for structured signal tracking
|
|
101
|
+
- **cli**: Fix build flag handling and improve bootstrap scaffolding
|
|
102
|
+
- **testing**: Expand test context helpers and example-based testing utilities
|
|
103
|
+
- **core/mcp/http**: Internal alignment for resource and composition updates
|
|
104
|
+
|
|
105
|
+
- [`1eb5bdc`](https://github.com/outfitter-dev/trails/commit/1eb5bdc06142d8886f3870801b2ef71a0c5f3844): Rename first-class trail composition from the `cross` API family to the `compose` family across core contracts, testing helpers, topo projections, Warden rules, CLI scaffolds, and docs. `composes`, `ctx.compose`, `composeInput`, and `Compose*` type names are now the public authoring vocabulary; topo persistence migrates legacy composition rows and graph keys forward.
|
|
106
|
+
- [`6300f70`](https://github.com/outfitter-dev/trails/commit/6300f709bb6dffc0e6cc82479fe8d0204c52bbba): Refresh source comments and test labels for retired connector terminology as adapter guardrails become strict.
|
|
107
|
+
- [`95bf132`](https://github.com/outfitter-dev/trails/commit/95bf132a15d6bd0f3a9e5fa597697393014f1e21): Wire HTTP permit resolution through the Hono adapter, including request headers for Bearer Authorization handling.
|
|
108
|
+
- [`94a8380`](https://github.com/outfitter-dev/trails/commit/94a83801f8bc7a8d30dd0e134a085fdabf74ba50): Add public API examples for the shared Web Fetch route and topo handlers.
|
|
109
|
+
- [`94a8380`](https://github.com/outfitter-dev/trails/commit/94a83801f8bc7a8d30dd0e134a085fdabf74ba50): Add a public API example for the HTTP intent method table.
|
|
110
|
+
- [`6517f67`](https://github.com/outfitter-dev/trails/commit/6517f67b9dcc9d0ab64b1c7201b5d326905498e4): The OpenAPI projection now documents BlobRef routes as binary responses (`content: { '*/*': { schema: { type: 'string', format: 'binary' } } }`) instead of a JSON data envelope, matching the raw bytes the runtime serves with the blob's declared mimeType. Error responses keep the JSON error envelope. Both the fetch handler and the OpenAPI projection now share one BlobRef output recognition helper.
|
|
111
|
+
- [`00f7093`](https://github.com/outfitter-dev/trails/commit/00f7093132a50c49b7bc2dcf9eef98f9424fd2e0): Add resources as a first-class primitive.
|
|
112
|
+
|
|
113
|
+
Resources make infrastructure dependencies declarative, injectable, and governable. Define a resource with `resource()`, declare it on a trail with `resources: [db]`, and access it with `db.from(ctx)` or `ctx.resource()`.
|
|
114
|
+
|
|
115
|
+
**Core:** `resource()` factory, `ResourceSpec<T>`, `ResourceContext`, singleton resolution in `executeTrail`, in-flight creation dedup, `isResource` guard, `findDuplicateResourceId`, topo resource discovery and validation, `resources` field on trail specs.
|
|
116
|
+
|
|
117
|
+
**Testing:** Auto-resolution of `mock` factories in `testAll`, `testExamples`, `testContracts`, and `testCrosses`. Explicit `resources` overrides with correct precedence (`explicit > ctx.extensions > auto-mock`). Resource mock propagation through cross graphs.
|
|
118
|
+
|
|
119
|
+
**Warden:** `resource-declarations` rule validates `db.from(ctx)` and `ctx.resource()` usage matches declared `resources: [...]`. `resource-exists` rule validates declared resource IDs resolve in project context. Scope-aware AST walking skips nested function boundaries.
|
|
120
|
+
|
|
121
|
+
**Surfaces:** Resource overrides thread through the CLI, MCP, and HTTP surfaces.
|
|
122
|
+
|
|
123
|
+
**Introspection:** Survey and surface map outputs include resource graph. Topo exposes `.resources`, `.getResource()`, `.hasResource()`, `.listResources()`, `.resourceIds()`, `.resourceCount`.
|
|
124
|
+
|
|
125
|
+
**Docs:** ADR-009 accepted. Unified resource guide, updated vocabulary, getting-started, architecture, and package READMEs.
|
|
126
|
+
|
|
127
|
+
- [`49c2e7d`](https://github.com/outfitter-dev/trails/commit/49c2e7d5c7c063b9aa6abee1d2932bf3003133cc): Refresh published package README taxonomy to use adapter language instead of retired connector vocabulary.
|
|
128
|
+
- [`c36aca9`](https://github.com/outfitter-dev/trails/commit/c36aca978c7e1561e68701c084241e5b3f85dcef): Preserve existing Result error boundaries directly and widen Warden pass-through
|
|
129
|
+
coaching beyond trail blazes.
|
|
130
|
+
- [`84f56a5`](https://github.com/outfitter-dev/trails/commit/84f56a5b97e9fed3d673e87da8eebdd916390449): Project live trail-version metadata on CLI, HTTP, and MCP surfaces and thread explicit surface version selection into shared trail execution.
|
|
131
|
+
- [`ab5c767`](https://github.com/outfitter-dev/trails/commit/ab5c7670446baa89cc10241686d51c16d0215e04): Serve `BlobRef` trail outputs as bytes on HTTP (TRL-1192). When a trail's output schema is `blobRefSchema`, the route handler streams the blob's data with `Content-Type` from its `mimeType` and a `Content-Length` from its `size` — for both `Uint8Array` and `ReadableStream` payloads — instead of wrapping the value in the JSON envelope. Error results keep the JSON error envelope, and non-blob trails are unchanged. Apps no longer need to hand-mount raw-byte routes beside the derived surface.
|
|
132
|
+
- [`b9e82a3`](https://github.com/outfitter-dev/trails/commit/b9e82a33546356c93fbc302fb934a83f19f1c2c5): Webhook ingress v2 (TRL-1194, absorbing TRL-1174 and TRL-1175): store-verified, per-endpoint webhook ingress becomes framework-expressible. `webhook()` accepts dynamic path segments (`path: '/hooks/:endpoint'`) whose values are delivered as envelope fields, opt-in `rawBody: true` delivery (a non-JSON body is no longer a surface-level failure — the trail owns payload interpretation), an allowlisted `headers` list delivered lowercased, and `resources` that make `verify` resource-capable: the HTTP surface resolves the declared resources into a context for the verifier and releases them afterwards, so signature checks can reach stores holding per-endpoint secrets. Envelope-mode ingress responds 202 Accepted; classic static webhooks keep their exact-match, JSON-gated, 200 behavior. Core exports `parseWebhookPathParams`, `matchWebhookPath`, `webhookPathPatternsOverlap`, and `createResources`. The `webhook-route-collision` Warden rule now also flags dynamic patterns that overlap other webhook or derived routes, not just exact method/path duplicates.
|
|
133
|
+
- [`97b3d92`](https://github.com/outfitter-dev/trails/commit/97b3d92c376145f5308b72686eb07f4092aa5483): Convert finite JSON numbers and strict booleans from GET query strings according to the route's derived input schema before validation.
|
|
134
|
+
- [`b1fbe57`](https://github.com/outfitter-dev/trails/commit/b1fbe574e6f44d1fecb5e3a000270955c0a77b7b): Publish Bun-validated package tarballs through an npm trusted-publishing adapter
|
|
135
|
+
binding, add exact repository metadata for each public workspace package, and
|
|
136
|
+
correct the native Bun release descriptor to its pack-only runtime boundary.
|
|
137
|
+
- [`bc2d327`](https://github.com/outfitter-dev/trails/commit/bc2d3276cf0af2c7217365a28b436ebf3023c09b): Close HTTP package documentation around the shared `@ontrails/http/fetch` kernel, Bun-native `@ontrails/http/bun` subpath, and Hono adapter boundary before versioning.
|
|
138
|
+
- [`5d88104`](https://github.com/outfitter-dev/trails/commit/5d88104c6c269e2ef1e92ba3b9e09a410df10c7b): Polish Trails blaze terminology across package docs and Warden guidance.
|
|
139
|
+
- [`fc00aeb`](https://github.com/outfitter-dev/trails/commit/fc00aebf67e968525b53a1719675af3e57586546): Add adapter target conformance metadata and scaffold extracted HTTP adapters through `trails create adapter`.
|
|
140
|
+
- [`ab1c77c`](https://github.com/outfitter-dev/trails/commit/ab1c77cddd90c30af28887f2bbd2cf2416900068): Advertise first-party adapter target metadata for catalog derivation.
|
|
141
|
+
- [`8ca5b85`](https://github.com/outfitter-dev/trails/commit/8ca5b85d4f05edd3b70e5203fadc9133745cd2bc): Expose owner-owned HTTP adapter conformance cases from `@ontrails/http/testing`.
|
|
142
|
+
- [`9c5ecdc`](https://github.com/outfitter-dev/trails/commit/9c5ecdc54b79daf215eb04e2abaa65042cdf4686): Refresh HTTP docs for the stable RC pass so public package guidance uses the
|
|
143
|
+
binding vocabulary and beta install guidance avoids stale copied pin examples.
|
|
144
|
+
- [`9bf592d`](https://github.com/outfitter-dev/trails/commit/9bf592ddba46aa12e3f4e6ffc0f772f7a41ed3df): Declare verified first-party adapter metadata for Drizzle, HTTP/Bun, and Store/Jsonfile so shared adapter checks can dogfood real owner targets.
|
|
145
|
+
- [`df9a7d0`](https://github.com/outfitter-dev/trails/commit/df9a7d00fe4d9ebec948b6ebed6dc4525fc8e0dc): Add project-aware public export-map governance for @ontrails workspace docs,
|
|
146
|
+
imports, root barrels, and bin-only package surfaces.
|
|
147
|
+
- [`61497c5`](https://github.com/outfitter-dev/trails/commit/61497c54deaaae2d067af88d0be6db0a5acb5faf): Add v1-minimum public API examples for shipped surface entrypoints.
|
|
148
|
+
|
|
149
|
+
## 1.0.0-beta.50
|
|
150
|
+
|
|
151
|
+
## 1.0.0-beta.49
|
|
152
|
+
|
|
153
|
+
## 1.0.0-beta.48
|
|
154
|
+
|
|
155
|
+
## 1.0.0-beta.47
|
|
156
|
+
|
|
157
|
+
## 1.0.0-beta.46
|
|
158
|
+
|
|
159
|
+
## 1.0.0-beta.45
|
|
160
|
+
|
|
161
|
+
## 1.0.0-beta.44
|
|
162
|
+
|
|
163
|
+
### Patch Changes
|
|
164
|
+
|
|
165
|
+
- [`b1fbe57`](https://github.com/outfitter-dev/trails/commit/b1fbe574e6f44d1fecb5e3a000270955c0a77b7b): Publish Bun-validated package tarballs through an npm trusted-publishing adapter
|
|
166
|
+
binding, add exact repository metadata for each public workspace package, and
|
|
167
|
+
correct the native Bun release descriptor to its pack-only runtime boundary.
|
|
168
|
+
|
|
169
|
+
## 1.0.0-beta.43
|
|
170
|
+
|
|
171
|
+
### Minor Changes
|
|
172
|
+
|
|
173
|
+
- [`88a6a62`](https://github.com/outfitter-dev/trails/commit/88a6a62a9e9e230ca6d368fa78dc3ece6c816204): Complete the v1 classification-first cutover from projection/project vocabulary
|
|
174
|
+
to derive/derived for contract-owned fact production and render/rendered for
|
|
175
|
+
surface presentation. Public type, helper, rule, relation, and report names move
|
|
176
|
+
without compatibility aliases; ordinary repository/project nouns remain
|
|
177
|
+
explicit preserves or structured review inventory.
|
|
178
|
+
|
|
179
|
+
## 1.0.0-beta.42
|
|
180
|
+
|
|
181
|
+
## 1.0.0-beta.41
|
|
182
|
+
|
|
183
|
+
## 1.0.0-beta.40
|
|
184
|
+
|
|
185
|
+
### Minor Changes
|
|
186
|
+
|
|
187
|
+
- [`5adb995`](https://github.com/outfitter-dev/trails/commit/5adb99551c2dda6190d46cce7f60bb08d63c99aa): Complete the v1 hard cutover from the authored `blaze` field to
|
|
188
|
+
`implementation` across trail contracts, surface projections, tests, examples,
|
|
189
|
+
and public source-analysis helpers. Existing applications must rename authored
|
|
190
|
+
trail behavior fields and direct trail-object access before upgrading.
|
|
191
|
+
|
|
192
|
+
### Patch Changes
|
|
193
|
+
|
|
194
|
+
- [`9bf592d`](https://github.com/outfitter-dev/trails/commit/9bf592ddba46aa12e3f4e6ffc0f772f7a41ed3df): Declare verified first-party adapter metadata for Drizzle, HTTP/Bun, and Store/Jsonfile so shared adapter checks can dogfood real owner targets.
|
|
195
|
+
|
|
196
|
+
## 1.0.0-beta.39
|
|
197
|
+
|
|
198
|
+
### Patch Changes
|
|
199
|
+
|
|
200
|
+
- [`6517f67`](https://github.com/outfitter-dev/trails/commit/6517f67b9dcc9d0ab64b1c7201b5d326905498e4): The OpenAPI projection now documents BlobRef routes as binary responses (`content: { '*/*': { schema: { type: 'string', format: 'binary' } } }`) instead of a JSON data envelope, matching the raw bytes the runtime serves with the blob's declared mimeType. Error responses keep the JSON error envelope. Both the fetch handler and the OpenAPI projection now share one BlobRef output recognition helper.
|
|
201
|
+
- [`ab5c767`](https://github.com/outfitter-dev/trails/commit/ab5c7670446baa89cc10241686d51c16d0215e04): Serve `BlobRef` trail outputs as bytes on HTTP (TRL-1192). When a trail's output schema is `blobRefSchema`, the route handler streams the blob's data with `Content-Type` from its `mimeType` and a `Content-Length` from its `size` — for both `Uint8Array` and `ReadableStream` payloads — instead of wrapping the value in the JSON envelope. Error results keep the JSON error envelope, and non-blob trails are unchanged. Apps no longer need to hand-mount raw-byte routes beside the derived surface.
|
|
202
|
+
- [`b9e82a3`](https://github.com/outfitter-dev/trails/commit/b9e82a33546356c93fbc302fb934a83f19f1c2c5): Webhook ingress v2 (TRL-1194, absorbing TRL-1174 and TRL-1175): store-verified, per-endpoint webhook ingress becomes framework-expressible. `webhook()` accepts dynamic path segments (`path: '/hooks/:endpoint'`) whose values are delivered as envelope fields, opt-in `rawBody: true` delivery (a non-JSON body is no longer a surface-level failure — the trail owns payload interpretation), an allowlisted `headers` list delivered lowercased, and `resources` that make `verify` resource-capable: the HTTP surface resolves the declared resources into a context for the verifier and releases them afterwards, so signature checks can reach stores holding per-endpoint secrets. Envelope-mode ingress responds 202 Accepted; classic static webhooks keep their exact-match, JSON-gated, 200 behavior. Core exports `parseWebhookPathParams`, `matchWebhookPath`, `webhookPathPatternsOverlap`, and `createResources`. The `webhook-route-collision` Warden rule now also flags dynamic patterns that overlap other webhook or derived routes, not just exact method/path duplicates.
|
|
203
|
+
|
|
204
|
+
## 1.0.0-beta.38
|
|
205
|
+
|
|
206
|
+
## 1.0.0-beta.37
|
|
207
|
+
|
|
208
|
+
## 1.0.0-beta.36
|
|
209
|
+
|
|
210
|
+
## 1.0.0-beta.35
|
|
211
|
+
|
|
212
|
+
## 1.0.0-beta.34
|
|
213
|
+
|
|
214
|
+
## 1.0.0-beta.33
|
|
215
|
+
|
|
216
|
+
## 1.0.0-beta.32
|
|
217
|
+
|
|
218
|
+
### Patch Changes
|
|
219
|
+
|
|
220
|
+
- Updated dependencies [3e5c0fc]
|
|
221
|
+
- Updated dependencies [f3c4fef]
|
|
222
|
+
- Updated dependencies [cb0a9d8]
|
|
223
|
+
- Updated dependencies [21c6dda]
|
|
224
|
+
- Updated dependencies [fe72b84]
|
|
225
|
+
- @ontrails/core@1.0.0-beta.32
|
|
226
|
+
|
|
227
|
+
## 1.0.0-beta.31
|
|
228
|
+
|
|
229
|
+
### Patch Changes
|
|
230
|
+
|
|
231
|
+
- Updated dependencies [4cd5d4e]
|
|
232
|
+
- Updated dependencies [38907cc]
|
|
233
|
+
- @ontrails/core@1.0.0-beta.31
|
|
234
|
+
|
|
235
|
+
## 1.0.0-beta.30
|
|
236
|
+
|
|
237
|
+
### Patch Changes
|
|
238
|
+
|
|
239
|
+
- @ontrails/core@1.0.0-beta.30
|
|
240
|
+
|
|
241
|
+
## 1.0.0-beta.29
|
|
242
|
+
|
|
243
|
+
### Patch Changes
|
|
244
|
+
|
|
245
|
+
- @ontrails/core@1.0.0-beta.29
|
|
246
|
+
|
|
247
|
+
## 1.0.0-beta.28
|
|
248
|
+
|
|
249
|
+
### Patch Changes
|
|
250
|
+
|
|
251
|
+
- @ontrails/core@1.0.0-beta.28
|
|
252
|
+
|
|
253
|
+
## 1.0.0-beta.27
|
|
254
|
+
|
|
255
|
+
### Patch Changes
|
|
256
|
+
|
|
257
|
+
- @ontrails/core@1.0.0-beta.27
|
|
258
|
+
|
|
259
|
+
## 1.0.0-beta.26
|
|
260
|
+
|
|
261
|
+
### Patch Changes
|
|
262
|
+
|
|
263
|
+
- Updated dependencies [1307568]
|
|
264
|
+
- Updated dependencies [371d19e]
|
|
265
|
+
- @ontrails/core@1.0.0-beta.26
|
|
266
|
+
|
|
267
|
+
## 1.0.0-beta.25
|
|
268
|
+
|
|
269
|
+
### Patch Changes
|
|
270
|
+
|
|
271
|
+
- c36aca9: Preserve existing Result error boundaries directly and widen Warden pass-through
|
|
272
|
+
coaching beyond trail blazes.
|
|
273
|
+
- Updated dependencies [c36aca9]
|
|
274
|
+
- Updated dependencies [3befcf1]
|
|
275
|
+
- Updated dependencies [a4f9cf6]
|
|
276
|
+
- Updated dependencies [9bcf34e]
|
|
277
|
+
- @ontrails/core@1.0.0-beta.25
|
|
278
|
+
|
|
279
|
+
## 1.0.0-beta.24
|
|
280
|
+
|
|
281
|
+
### Patch Changes
|
|
282
|
+
|
|
283
|
+
- @ontrails/core@1.0.0-beta.24
|
|
284
|
+
|
|
285
|
+
## 1.0.0-beta.23
|
|
286
|
+
|
|
287
|
+
### Patch Changes
|
|
288
|
+
|
|
289
|
+
- 9c5ecdc: Refresh HTTP docs for the stable RC pass so public package guidance uses the
|
|
290
|
+
binding vocabulary and beta install guidance avoids stale copied pin examples.
|
|
291
|
+
- @ontrails/core@1.0.0-beta.23
|
|
292
|
+
|
|
293
|
+
## 1.0.0-beta.22
|
|
294
|
+
|
|
295
|
+
### Patch Changes
|
|
296
|
+
|
|
297
|
+
- @ontrails/core@1.0.0-beta.22
|
|
298
|
+
|
|
299
|
+
## 1.0.0-beta.21
|
|
300
|
+
|
|
301
|
+
### Patch Changes
|
|
302
|
+
|
|
303
|
+
- Updated dependencies [99523f2]
|
|
304
|
+
- @ontrails/core@1.0.0-beta.21
|
|
305
|
+
|
|
306
|
+
## 1.0.0-beta.20
|
|
307
|
+
|
|
308
|
+
### Patch Changes
|
|
309
|
+
|
|
310
|
+
- Updated dependencies [851a2a3]
|
|
311
|
+
- @ontrails/core@1.0.0-beta.20
|
|
312
|
+
|
|
313
|
+
## 1.0.0-beta.19
|
|
314
|
+
|
|
315
|
+
### Patch Changes
|
|
316
|
+
|
|
317
|
+
- e41c382: Document beta-channel install guidance in package and adapter README install snippets so consumers use explicit `@beta` (or pinned `1.0.0-beta.N`) tags instead of accidental `latest` resolution during the prerelease line. Adds the policy doc at `docs/releases/beta-channel-policy.md`, prints both `latest` and `beta` dist-tags in `bun run publish:registry-check`, and aligns plugin/skill install snippets.
|
|
318
|
+
- 1eb5bdc: Rename first-class trail composition from the `cross` API family to the `compose` family across core contracts, testing helpers, topo projections, Warden rules, CLI scaffolds, and docs. `composes`, `ctx.compose`, `composeInput`, and `Compose*` type names are now the public authoring vocabulary; topo persistence migrates legacy composition rows and graph keys forward.
|
|
319
|
+
- 94a8380: Add public API examples for the shared Web Fetch route and topo handlers.
|
|
320
|
+
- 94a8380: Add a public API example for the HTTP intent method table.
|
|
321
|
+
- 84f56a5: Project live trail-version metadata on CLI, HTTP, and MCP surfaces and thread explicit surface version selection into shared trail execution.
|
|
322
|
+
- 5d88104: Polish Trails blaze terminology across package docs and Warden guidance.
|
|
323
|
+
- fc00aeb: Add adapter target conformance metadata and scaffold extracted HTTP adapters through `trails create adapter`.
|
|
324
|
+
- ab1c77c: Advertise first-party adapter target metadata for catalog derivation.
|
|
325
|
+
- 8ca5b85: Expose owner-owned HTTP adapter conformance cases from `@ontrails/http/testing`.
|
|
326
|
+
- Updated dependencies [e41c382]
|
|
327
|
+
- Updated dependencies [1eb5bdc]
|
|
328
|
+
- Updated dependencies [f8d80b9]
|
|
329
|
+
- Updated dependencies [846a597]
|
|
330
|
+
- Updated dependencies [223aaad]
|
|
331
|
+
- Updated dependencies [3125f4d]
|
|
332
|
+
- Updated dependencies [2494dc6]
|
|
333
|
+
- Updated dependencies [2d53717]
|
|
334
|
+
- Updated dependencies [16cb740]
|
|
335
|
+
- Updated dependencies [8894ecb]
|
|
336
|
+
- Updated dependencies [fdf7ec9]
|
|
337
|
+
- Updated dependencies [d76be13]
|
|
338
|
+
- Updated dependencies [84f56a5]
|
|
339
|
+
- Updated dependencies [431b04c]
|
|
340
|
+
- Updated dependencies [5d88104]
|
|
341
|
+
- Updated dependencies [f04a9ef]
|
|
342
|
+
- @ontrails/core@1.0.0-beta.19
|
|
343
|
+
|
|
344
|
+
## 1.0.0-beta.18
|
|
345
|
+
|
|
346
|
+
### Minor Changes
|
|
347
|
+
|
|
348
|
+
- c0b2948: Add `@ontrails/http/fetch`, a shared Web Fetch request/response kernel for HTTP
|
|
349
|
+
surface materializers.
|
|
350
|
+
- fc3219c: Add `@ontrails/http/bun`, a Bun-native HTTP surface materializer backed by the
|
|
351
|
+
shared Web Fetch kernel.
|
|
352
|
+
|
|
353
|
+
### Patch Changes
|
|
354
|
+
|
|
355
|
+
- bc2d327: Close HTTP package documentation around the shared `@ontrails/http/fetch` kernel, Bun-native `@ontrails/http/bun` subpath, and Hono adapter boundary before versioning.
|
|
356
|
+
- @ontrails/core@1.0.0-beta.18
|
|
357
|
+
|
|
358
|
+
## 1.0.0-beta.17
|
|
359
|
+
|
|
360
|
+
### Patch Changes
|
|
361
|
+
|
|
362
|
+
- 61497c5: Add v1-minimum public API examples for shipped surface entrypoints.
|
|
363
|
+
- Updated dependencies [3dc8254]
|
|
364
|
+
- @ontrails/core@1.0.0-beta.17
|
|
365
|
+
|
|
366
|
+
## 1.0.0-beta.16
|
|
367
|
+
|
|
368
|
+
### Minor Changes
|
|
369
|
+
|
|
370
|
+
- 2bf239e: Move OpenAPI generation ownership to the HTTP surface.
|
|
371
|
+
|
|
372
|
+
**http**: Export `deriveOpenApiSpec()` and its OpenAPI types from `@ontrails/http`.
|
|
373
|
+
|
|
374
|
+
**schema**: Remove the OpenAPI helper export so schema stays focused on surface maps, locks, and semantic diffing.
|
|
375
|
+
|
|
376
|
+
- 26f9ffd: Project typed-layer `input` schemas onto MCP and HTTP surfaces. Closes Phase 7. Lifts `collectAttachedTypedLayers` and `projectLayerFieldName` (collision-rename rule) into `@ontrails/core/internal/layer-projection` so all three surfaces share one source of truth. The CLI surface refactors to consume the lifted helpers (no behavior change). MCP merges layer fields into each tool's `inputSchema` and partitions inbound args at invocation time. HTTP merges layer fields into the route's request schema (query for reads, body for writes) and exposes new optional `HttpRouteDefinition.inputSchema` + `layerInputProjections` for surface adapters / OpenAPI generators. Collision rule matches TRL-473's: deterministic rename to a layer-prefixed camelCase name with the original captured in the routing table. Side fix: MCP and HTTP handlers now forward `topoLayers: graph.layers` + `surfaceLayers: layers` so topo-scope layers actually compose at runtime (previously the handlers used the deprecated `layers` alias and never read `graph.layers`).
|
|
377
|
+
- 22c6c06: Accept ADR-0041 Unified Observability and ship the first activation and
|
|
378
|
+
observability primitives it depends on: activation trace records, topo-level
|
|
379
|
+
observe configuration, webhook activation materialization, signal/webhook
|
|
380
|
+
warden coaching, the `@ontrails/observe` package, sink composition, and
|
|
381
|
+
zero-dependency observe sinks.
|
|
382
|
+
|
|
383
|
+
### Patch Changes
|
|
384
|
+
|
|
385
|
+
- 6300f70: Refresh source comments and test labels for retired connector terminology as adapter guardrails become strict.
|
|
386
|
+
- 95bf132: Wire HTTP permit resolution through the Hono adapter, including request headers for Bearer Authorization handling.
|
|
387
|
+
- 49c2e7d: Refresh published package README taxonomy to use adapter language instead of retired connector vocabulary.
|
|
388
|
+
- df9a7d0: Add project-aware public export-map governance for @ontrails workspace docs,
|
|
389
|
+
imports, root barrels, and bin-only package surfaces.
|
|
390
|
+
- Updated dependencies [73622ae]
|
|
391
|
+
- Updated dependencies [6300f70]
|
|
392
|
+
- Updated dependencies [d172013]
|
|
393
|
+
- Updated dependencies [c3fc5c3]
|
|
394
|
+
- Updated dependencies [20d7a5c]
|
|
395
|
+
- Updated dependencies [be5fb46]
|
|
396
|
+
- Updated dependencies [e898cc4]
|
|
397
|
+
- Updated dependencies [3395234]
|
|
398
|
+
- Updated dependencies [bcdc484]
|
|
399
|
+
- Updated dependencies [331e3a9]
|
|
400
|
+
- Updated dependencies [4399fdb]
|
|
401
|
+
- Updated dependencies [4b8d13b]
|
|
402
|
+
- Updated dependencies [112b9f2]
|
|
403
|
+
- Updated dependencies [893025e]
|
|
404
|
+
- Updated dependencies [eec5e9d]
|
|
405
|
+
- Updated dependencies [ebd4434]
|
|
406
|
+
- Updated dependencies [863d473]
|
|
407
|
+
- Updated dependencies [344f2f7]
|
|
408
|
+
- Updated dependencies [26f9ffd]
|
|
409
|
+
- Updated dependencies [10eae9a]
|
|
410
|
+
- Updated dependencies [22c6c06]
|
|
411
|
+
- @ontrails/core@1.0.0-beta.16
|
|
412
|
+
|
|
413
|
+
## 1.0.0-beta.15
|
|
414
|
+
|
|
415
|
+
### Patch Changes
|
|
416
|
+
|
|
417
|
+
- Updated dependencies [4ad6b25]
|
|
418
|
+
- @ontrails/core@1.0.0-beta.15
|
|
419
|
+
|
|
420
|
+
## 1.0.0-beta.14
|
|
421
|
+
|
|
422
|
+
### Minor Changes
|
|
423
|
+
|
|
424
|
+
- 69057e9: Add hierarchical CLI command trees and structured input, enforce established-only topo exports across trailheads, move developer topo and tracker state onto shared `trails.db` with pins and maintenance flows, and ship schema-derived stores through `@ontrails/store` and its Drizzle runtime.
|
|
425
|
+
|
|
426
|
+
### Patch Changes
|
|
427
|
+
|
|
428
|
+
- Updated dependencies [69057e9]
|
|
429
|
+
- @ontrails/core@1.0.0-beta.14
|
|
430
|
+
|
|
431
|
+
## 1.0.0-beta.13
|
|
432
|
+
|
|
433
|
+
### Minor Changes
|
|
434
|
+
|
|
435
|
+
- Trail-native vocabulary cutover. Breaking API field renames across all packages:
|
|
436
|
+
|
|
437
|
+
- Trail spec: `run:` → `blaze:`, `follow:` → `crosses:`, `services:` → `provisions:`, `metadata:` → `meta:`, `emits:` → `signals:`
|
|
438
|
+
- Runtime: `ctx.follow()` → `ctx.cross()`, `ctx.emit()` → `ctx.signal()`, `ctx.signal` (abort) → `ctx.abortSignal`
|
|
439
|
+
- Entry points: `blaze(app)` → `trailhead(app)`
|
|
440
|
+
- Package rename: `@ontrails/crumbs` → `@ontrails/tracker`
|
|
441
|
+
- Wrapper types: `Layer` → `Gate`, `layers`/`middleware` → `gates`
|
|
442
|
+
- Transport: `surface` → `trailhead`, `adapter` → `connector`
|
|
443
|
+
|
|
444
|
+
### Patch Changes
|
|
445
|
+
|
|
446
|
+
- 6944147: Complete trifecta for config, permits, and tracker (formerly tracks)
|
|
447
|
+
|
|
448
|
+
- **config**: Add `configProvision`, `configGate`, `config.trail`, and `config.workspace` trails with full `defineConfig`, `resolve`, `describe`, `explain`, `doctor`, and code generation support
|
|
449
|
+
- **permits**: Add `authService` and `auth.verify` trail for runtime authorization checks
|
|
450
|
+
- **tracker**: Rename tracks to tracker; add `trackerProvision` and `tracker.status` trail for structured signal tracking
|
|
451
|
+
- **cli**: Fix build flag handling and improve bootstrap scaffolding
|
|
452
|
+
- **testing**: Expand test context helpers and example-based testing utilities
|
|
453
|
+
- **core/mcp/http**: Internal alignment for provision and composition updates
|
|
454
|
+
|
|
455
|
+
- Updated dependencies [6944147]
|
|
456
|
+
- Updated dependencies
|
|
457
|
+
- @ontrails/core@1.0.0-beta.13
|
|
458
|
+
|
|
459
|
+
## 1.0.0-beta.12
|
|
460
|
+
|
|
461
|
+
### Patch Changes
|
|
462
|
+
|
|
463
|
+
- Complete trifecta for config, permits, and tracker (formerly tracks)
|
|
464
|
+
|
|
465
|
+
- **config**: Add `configProvision`, `config.gate`, `config.trail`, and `config.workspace` trails with full `defineConfig`, `resolve`, `describe`, `explain`, `doctor`, and code generation support
|
|
466
|
+
- **permits**: Add `authProvision` and `auth.verify` trail for runtime authorization checks
|
|
467
|
+
- **tracker**: Rename tracks to tracker; add `trackerProvision` and `tracker.status` trail for structured event tracking
|
|
468
|
+
- **cli**: Fix build flag handling and improve bootstrap scaffolding
|
|
469
|
+
- **testing**: Expand test context helpers and example-based testing utilities
|
|
470
|
+
- **core/mcp/http**: Internal alignment for provision and composition updates
|
|
471
|
+
|
|
472
|
+
- Updated dependencies
|
|
473
|
+
- @ontrails/core@1.0.0-beta.12
|
|
474
|
+
|
|
475
|
+
## 1.0.0-beta.11
|
|
476
|
+
|
|
477
|
+
### Patch Changes
|
|
478
|
+
|
|
479
|
+
- Add provisions as a first-class primitive.
|
|
480
|
+
|
|
481
|
+
Provisions make infrastructure dependencies declarative, injectable, and governable. Define a provision with `provision()`, declare it on a trail with `provisions: [db]`, and access it with `db.from(ctx)` or `ctx.provision()`.
|
|
482
|
+
|
|
483
|
+
**Core:** `provision()` factory, `ProvisionSpec<T>`, `ProvisionContext`, singleton resolution in `executeTrail`, in-flight creation dedup, `isProvision` guard, `findDuplicateProvisionId`, topo provision discovery and validation, `provisions` field on trail specs.
|
|
484
|
+
|
|
485
|
+
**Testing:** Auto-resolution of `mock` factories in `testAll`, `testExamples`, `testContracts`, and `testCrosses`. Explicit `provisions` overrides with correct precedence (`explicit > ctx.extensions > auto-mock`). Provision mock propagation through crossing graphs.
|
|
486
|
+
|
|
487
|
+
**Warden:** `provision-declarations` rule validates `db.from(ctx)` and `ctx.provision()` usage matches declared `provisions: [...]`. `provision-exists` rule validates declared provision IDs resolve in project context. Scope-aware AST walking skips nested function boundaries.
|
|
488
|
+
|
|
489
|
+
**Trailheads:** Provision overrides thread through `run` and `trailhead` on CLI, MCP, and HTTP.
|
|
490
|
+
|
|
491
|
+
**Introspection:** Survey and trailhead map outputs include provision graph. Topo exposes `.provisions`, `.getProvision()`, `.hasProvision()`, `.listProvisions()`, `.provisionIds()`, `.provisionCount`.
|
|
492
|
+
|
|
493
|
+
**Docs:** ADR-009 accepted. Unified provisions guide, updated vocabulary, getting-started, architecture, and package READMEs.
|
|
494
|
+
|
|
495
|
+
- Updated dependencies
|
|
496
|
+
- @ontrails/core@1.0.0-beta.11
|
|
497
|
+
|
|
498
|
+
## 1.0.0-beta.10
|
|
499
|
+
|
|
500
|
+
### Patch Changes
|
|
501
|
+
|
|
502
|
+
- Cleanup and hardening pass across all packages.
|
|
503
|
+
|
|
504
|
+
**core**: Deduplicate `DispatchOptions` as type alias of `ExecuteTrailOptions`. Replace `TrailContext` index signature with typed `extensions` field for type safety. Deep-merge `extensions` in `executeTrail` context resolution. Remove unused `Trailhead` type, `connectors.ts`, `health.ts`, and `job.ts` proof-of-concept from published package.
|
|
505
|
+
|
|
506
|
+
**cli**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out via `validate: false`.
|
|
507
|
+
|
|
508
|
+
**http**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out.
|
|
509
|
+
|
|
510
|
+
**mcp**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out.
|
|
511
|
+
|
|
512
|
+
**warden**: Project-aware rule context preserved in trail wrappers.
|
|
513
|
+
|
|
514
|
+
- Updated dependencies
|
|
515
|
+
- @ontrails/core@1.0.0-beta.10
|
|
516
|
+
|
|
517
|
+
## 1.0.0-beta.9
|
|
518
|
+
|
|
519
|
+
### Minor Changes
|
|
520
|
+
|
|
521
|
+
- Consolidated improvements across all trailhead packages.
|
|
522
|
+
|
|
523
|
+
**core**: Add `TrailResult<T>` utility type, `topo.ids()` and `topo.count` accessors, `run()` for headless trail execution, and extract shared `executeTrail` pipeline used by CLI/MCP/HTTP.
|
|
524
|
+
|
|
525
|
+
**http**: Detect route path collisions and return `Result` from `buildHttpRoutes()`, wire request `AbortSignal` through to trail context, and make write → POST mapping explicit in intent-to-method lookup.
|
|
526
|
+
|
|
527
|
+
**mcp**: Return `Result` from `buildMcpTools()` on collision instead of throwing.
|
|
528
|
+
|
|
529
|
+
**cli**: Verify exception catching via centralized `executeTrail`.
|
|
530
|
+
|
|
531
|
+
**testing**: Cross-context awareness improvements.
|
|
532
|
+
|
|
533
|
+
**warden**: Refactor rules as composable trails with examples.
|
|
534
|
+
|
|
535
|
+
**schema**: Error code and empty body fixes.
|
|
536
|
+
|
|
537
|
+
### Patch Changes
|
|
538
|
+
|
|
539
|
+
- Updated dependencies
|
|
540
|
+
- @ontrails/core@1.0.0-beta.9
|
|
541
|
+
|
|
542
|
+
## 1.0.0-beta.8
|
|
543
|
+
|
|
544
|
+
### Major Changes
|
|
545
|
+
|
|
546
|
+
- Restructure HTTP package and fix Codex review findings.
|
|
547
|
+
|
|
548
|
+
**http**: BREAKING — `trailhead()` moved to `@ontrails/http/hono` subpath. Hono is now a peer dependency. `buildHttpRoutes()` is framework-agnostic. Fixed: malformed JSON → 400, execute() never throws, query parsing preserves raw strings and supports arrays.
|
|
549
|
+
|
|
550
|
+
**schema**: OpenAPI 200 response wraps in `{ data }` envelope matching wire format. Always includes 400 ValidationError with error schema. basePath trailing slash normalized.
|
|
551
|
+
|
|
552
|
+
### Patch Changes
|
|
553
|
+
|
|
554
|
+
- @ontrails/core@1.0.0-beta.8
|
|
555
|
+
|
|
556
|
+
## 1.0.0-beta.7
|
|
557
|
+
|
|
558
|
+
### Minor Changes
|
|
559
|
+
|
|
560
|
+
- HTTP trailhead and OpenAPI generation.
|
|
561
|
+
|
|
562
|
+
**http**: New `@ontrails/http` package — Hono-based HTTP connector. `trailhead()` derives routes from trail IDs, maps intent to HTTP verbs (read→GET, write→POST, destroy→DELETE), and maps error taxonomy to status codes. Returns the Hono instance.
|
|
563
|
+
|
|
564
|
+
**schema**: Add `generateOpenApiSpec(topo)` — generates a complete OpenAPI 3.1 spec from the topo. Each trail becomes an operation with path, method, schemas, and error responses derived from the contract.
|
|
565
|
+
|
|
566
|
+
**trails**: `trails survey --openapi` outputs the OpenAPI spec for any Trails app.
|
|
567
|
+
|
|
568
|
+
### Patch Changes
|
|
569
|
+
|
|
570
|
+
- @ontrails/core@1.0.0-beta.7
|