@ontrails/mcp 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 ADDED
@@ -0,0 +1,661 @@
1
+ # @ontrails/mcp
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
+ - [`93607de`](https://github.com/outfitter-dev/trails/commit/93607deae7f5a6badb4fed40f9f6b7fef43c8b64): API simplification: unified trail model, intent enum, blaze, metadata.
17
+
18
+ **BREAKING CHANGES:**
19
+
20
+ - `hike()` removed — use `trail()` with optional `crosses: [...]` field
21
+ - `follows` renamed to `crosses` (matching `ctx.cross()`)
22
+ - `topo.hikes` removed — single `topo.trails` map
23
+ - `kind: 'hike'` removed — everything is `kind: 'trail'`
24
+ - `readOnly`/`destructive` booleans replaced by `intent: 'read' | 'write' | 'destroy'`
25
+ - `implementation` field renamed to `blaze`
26
+ - `markers` field renamed to `metadata`
27
+ - `testHike` renamed to `testCrosses`, `HikeScenario` to `CrossScenario`
28
+ - `surface()` now returns the surface handle (`Command` for CLI, `Server` for MCP)
29
+
30
+ ### Minor Changes
31
+
32
+ - [`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.
33
+ - [`ebbf0c5`](https://github.com/outfitter-dev/trails/commit/ebbf0c538550429f92944ac2d196b6bc9ca00c4b): Consolidated improvements across all surface packages.
34
+
35
+ **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.
36
+
37
+ **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.
38
+
39
+ **mcp**: Return `Result` from `buildMcpTools()` on collision instead of throwing.
40
+
41
+ **cli**: Verify exception catching via centralized `executeTrail`.
42
+
43
+ **testing**: Follow context awareness improvements.
44
+
45
+ **warden**: Refactor rules as composable trails with examples.
46
+
47
+ **schema**: Error code and empty body fixes.
48
+
49
+ - [`39ecab9`](https://github.com/outfitter-dev/trails/commit/39ecab9940ad8255215c25b9db55047180828457): Bug fixes across all surface packages found via parallel Codex review.
50
+
51
+ **core**: Fix Result.toJson false circular detection on DAGs, deserializeError subclass round-trip, topo cross-kind ID collisions, validateTopo multi-node cycle detection, error example input validation bypass, and deriveFields array type collapse.
52
+
53
+ **cli**: Switch the CLI surface to parseAsync for proper async error handling, add boolean flag negation (--no-flag), and strict number parsing that rejects partial input.
54
+
55
+ **mcp**: Align BlobRef with core (including ReadableStream support) and detect tool-name collisions after normalization.
56
+
57
+ **testing**: Include trails in testContracts validation, with cross-context awareness.
58
+
59
+ **warden**: Collect trail detour targets, validate detour refs in trail specs, and stop implementation-returns-result from walking into nested function bodies.
60
+
61
+ - [`f2a7857`](https://github.com/outfitter-dev/trails/commit/f2a785777ba9cb2d540c0fd79c80b43d4cb934d3): Initial v1 beta release of the Trails framework.
62
+
63
+ - **@ontrails/core** — Result type, error taxonomy, trail/signal/topo, validateTopo, validateInput/Output, deriveFields, patterns, redaction, branded types, resilience
64
+ - **@ontrails/cli** — CLI command model, flag derivation, output formatting
65
+ - **@ontrails/mcp** — MCP surface, tool generation, annotations, progress bridge
66
+ - **@ontrails/testing** — testAll, testExamples, testTrail, testCrosses, testContracts, testDetours, surface harnesses
67
+ - **@ontrails/warden** — AST-based code convention rules via oxc-parser, drift detection, CI formatters
68
+ - **@ontrails/topographer** — Surface map generation, hashing, semantic diffing, lock helpers
69
+
70
+ - [`5adb995`](https://github.com/outfitter-dev/trails/commit/5adb99551c2dda6190d46cce7f60bb08d63c99aa): Complete the v1 hard cutover from the authored `blaze` field to
71
+ `implementation` across trail contracts, surface projections, tests, examples,
72
+ and public source-analysis helpers. Existing applications must rename authored
73
+ trail behavior fields and direct trail-object access before upgrading.
74
+ - [`88a6a62`](https://github.com/outfitter-dev/trails/commit/88a6a62a9e9e230ca6d368fa78dc3ece6c816204): Complete the v1 classification-first cutover from projection/project vocabulary
75
+ to derive/derived for contract-owned fact production and render/rendered for
76
+ surface presentation. Public type, helper, rule, relation, and report names move
77
+ without compatibility aliases; ordinary repository/project nouns remain
78
+ explicit preserves or structured review inventory.
79
+ - [`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`).
80
+ - [`accb9ec`](https://github.com/outfitter-dev/trails/commit/accb9ec5929cb8aefba7c350c2ece3414e28e777): Add MCP surface facets, MCP resource projection for cold context, and deferred-loading metadata hints.
81
+ - [`fde5516`](https://github.com/outfitter-dev/trails/commit/fde5516ad396faa718936b10ff658b3ade3383b9): Trail-native vocabulary cutover. Breaking API field renames across all packages:
82
+
83
+ - Trail spec: `run:` → `blaze:`, `follow:` → `crosses:`, `services:` → `resources:`, `metadata:` → `meta:`, `emits:` → `fires:`
84
+ - Runtime: `ctx.follow()` → `ctx.cross()`, `ctx.emit()` → `ctx.fire()`, `ctx.signal` (abort) → `ctx.abortSignal`
85
+ - Entry points: `trailhead(app)` → `surface(app)`
86
+ - Package rename: `@ontrails/crumbs` / `@ontrails/tracker` → `@ontrails/tracing`
87
+ - Wrapper types: retired gate/middleware vocabulary in favor of `Layer` and `layers`
88
+ - Package taxonomy: retired connector vocabulary in favor of adapters
89
+
90
+ ### Patch Changes
91
+
92
+ - [`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.
93
+ - [`da6e2ca`](https://github.com/outfitter-dev/trails/commit/da6e2caeb06f150042148f10f03a6a9dae5648d1): Cleanup and hardening pass across all packages.
94
+
95
+ **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.
96
+
97
+ **cli**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `surface()` with opt-out via `validate: false`.
98
+
99
+ **http**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `surface()` with opt-out.
100
+
101
+ **mcp**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `surface()` with opt-out.
102
+
103
+ **warden**: Project-aware rule context preserved in trail wrappers.
104
+
105
+ - [`6944147`](https://github.com/outfitter-dev/trails/commit/694414712949a1107235684a2492ac982ed39a20): Complete trifecta for config, permits, and tracker (formerly tracks)
106
+
107
+ - **config**: Add `configResource`, `config.trail`, and `config.workspace` trails with full `defineConfig`, `resolve`, `describe`, `explain`, `doctor`, and code generation support
108
+ - **permits**: Add `authResource` and `auth.verify` trail for runtime authorization checks
109
+ - **tracing**: Rename tracks to tracing; add `tracingResource` and `tracing.status` trail for structured signal tracking
110
+ - **cli**: Fix build flag handling and improve bootstrap scaffolding
111
+ - **testing**: Expand test context helpers and example-based testing utilities
112
+ - **core/mcp/http**: Internal alignment for resource and composition updates
113
+
114
+ - [`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.
115
+ - [`6300f70`](https://github.com/outfitter-dev/trails/commit/6300f709bb6dffc0e6cc82479fe8d0204c52bbba): Refresh source comments and test labels for retired connector terminology as adapter guardrails become strict.
116
+ - [`20d7a5c`](https://github.com/outfitter-dev/trails/commit/20d7a5c8e675fd3ecd8c29441bbd8a99b5c64ed0): Enforce the shared safe error projection policy for public error bodies, diagnostics, serialized payloads, and CLI stderr.
117
+ - [`7065b55`](https://github.com/outfitter-dev/trails/commit/7065b55568dced6df9f8687288842cdbbfd7f6e4): Fix two blocking bugs from real-world migration:
118
+
119
+ - Published packages now resolve correctly (workspace:^ instead of workspace:\*)
120
+ - Error forwarding works across different success types (Err no longer carries phantom T)
121
+
122
+ - [`42a87c1`](https://github.com/outfitter-dev/trails/commit/42a87c1b8691c2fad94ba45175b6eec0219f4594): Fix workspace dependency resolution in published packages. Now using bun publish
123
+ which correctly replaces workspace:^ with actual version numbers.
124
+ - [`8638dae`](https://github.com/outfitter-dev/trails/commit/8638dae66b4003d311f3399b8b830e5b9434c774): Add a public API example for MCP `deriveAnnotations` annotation derivation.
125
+ - [`8638dae`](https://github.com/outfitter-dev/trails/commit/8638dae66b4003d311f3399b8b830e5b9434c774): Add public API examples for the MCP tool metadata keys.
126
+ - [`81373bc`](https://github.com/outfitter-dev/trails/commit/81373bc5e980bb06d56fb06af4f0986f72e318c7): Wave-2 MCP cutover to the app-authored `surfaces` overlay. The overlay's `mcp` bindings are now the authored, lockable default for the MCP surface: a list binding derives one grouped trailhead tool (member selection in `{ trail, input }`, member identity preserved in `{ trail, output }`, deterministic derived description), and a scalar binding derives an additional tool synonym whose MCP-safe name is published verbatim and must expand to exactly one trail. `deriveMcpTools`/`createServer` accept the new `overlays` option; `@ontrails/core` gains `expandMcpSurfaceBindings` and `deriveMcpTrailheadDescription`.
127
+
128
+ The call-site `CreateServerOptions.trailheads` map survives as permanent override-in-context design, not a compatibility bridge: when both channels are present, the call-site map wins at runtime. Warden's new `trailhead-override-divergence` rule (warn) names both sides when a call-site map's binding names or member selectors diverge from the authored overlay default.
129
+
130
+ Topographer now derives `graph.trailheads` from the overlay's `mcp` list bindings in both `deriveTopoGraph` and the store-side graph build, so trailhead facts flow from compiled locks into Wayfinder reads for the first time. The never-wired `DeriveTopoGraphOptions.trailheads` option and the `TopoGraphTrailheadDeclaration`/`TopoGraphTrailheadTrailSelector` types are removed — a beta-window hard cutover of an option no caller could reach; author the equivalent `mcp` list binding in `surfaceOverlay({ mcp })` instead.
131
+
132
+ - [`8638dae`](https://github.com/outfitter-dev/trails/commit/8638dae66b4003d311f3399b8b830e5b9434c774): Add a public API example for the MCP progress callback bridge.
133
+ - [`ee9f3ae`](https://github.com/outfitter-dev/trails/commit/ee9f3ae0c1f42e371bae6568c00bbdfccb4da677): Let Warden fix capabilities declare downstream scan targets and have Regrade
134
+ honor those targets for Warden-backed term-rewrite classes.
135
+
136
+ Dogfood the first safe facet-to-trailhead prose rewrite through project-local
137
+ Warden rules and Regrade.
138
+
139
+ - [`00f7093`](https://github.com/outfitter-dev/trails/commit/00f7093132a50c49b7bc2dcf9eef98f9424fd2e0): Add resources as a first-class primitive.
140
+
141
+ 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()`.
142
+
143
+ **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.
144
+
145
+ **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.
146
+
147
+ **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.
148
+
149
+ **Surfaces:** Resource overrides thread through the CLI, MCP, and HTTP surfaces.
150
+
151
+ **Introspection:** Survey and surface map outputs include resource graph. Topo exposes `.resources`, `.getResource()`, `.hasResource()`, `.listResources()`, `.resourceIds()`, `.resourceCount`.
152
+
153
+ **Docs:** ADR-009 accepted. Unified resource guide, updated vocabulary, getting-started, architecture, and package READMEs.
154
+
155
+ - [`a9fdbc7`](https://github.com/outfitter-dev/trails/commit/a9fdbc7769be77e1ee63d89a4a25d17b9f29d8ed): Clarify surface accommodation doctrine in MCP surface facet metadata and Warden trail-fork coaching guidance.
156
+ - [`820b4ad`](https://github.com/outfitter-dev/trails/commit/820b4ad9c40ea383b3c489a05fe7e4b2328e324f): Add `surfaceOverlay` — the shared surface-naming schema (scalar binding = synonym, list binding = grouped entry, singleton list stays a group) with app-authored/adapter-derived overlay provenance enforced at collection and consumption, and the `surface-overlay-coherence` Warden rule. MCP tool-name derivation moves to `@ontrails/core` (`deriveMcpToolName`) so the surface and governance read one projection; `@ontrails/mcp`'s `deriveToolName` now delegates to it. The coherence rule activates on standard warden runs once fresh derivations collect app-module overlays through the shared compile channel (TRL-1209, next in this stack).
157
+ - [`49c2e7d`](https://github.com/outfitter-dev/trails/commit/49c2e7d5c7c063b9aa6abee1d2932bf3003133cc): Refresh published package README taxonomy to use adapter language instead of retired connector vocabulary.
158
+ - [`2c08afe`](https://github.com/outfitter-dev/trails/commit/2c08afeec7f3c573e3cbc308c75a7ae53281c3c2): Expose MCP trail graph fact resources and enable them for the Trails operator MCP surface.
159
+ - [`f1e6efa`](https://github.com/outfitter-dev/trails/commit/f1e6efa4f383287f0b2196f48185699e7476b18c): Document the Wayfinder MCP resource surface and polish Wayfinder filter dogfood coverage for unified navigation.
160
+ - [`6e63e48`](https://github.com/outfitter-dev/trails/commit/6e63e483617b84cb6868d0c4d58d5b5a8d3b9ed2): Complete the v1 grouped surface-entry vocabulary cutover from facet to trailhead, including Regrade dogfood support for governed string literal renames and composed AST rewrite application.
161
+ - [`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.
162
+ - [`b1fbe57`](https://github.com/outfitter-dev/trails/commit/b1fbe574e6f44d1fecb5e3a000270955c0a77b7b): Publish Bun-validated package tarballs through an npm trusted-publishing adapter
163
+ binding, add exact repository metadata for each public workspace package, and
164
+ correct the native Bun release descriptor to its pack-only runtime boundary.
165
+ - [`5d88104`](https://github.com/outfitter-dev/trails/commit/5d88104c6c269e2ef1e92ba3b9e09a410df10c7b): Polish Trails blaze terminology across package docs and Warden guidance.
166
+ - [`9bec01c`](https://github.com/outfitter-dev/trails/commit/9bec01c620a36202586edad2fb887a9869aab875): Document MCP resource projection and deferred-loading options for cold surface context.
167
+ - [`61497c5`](https://github.com/outfitter-dev/trails/commit/61497c54deaaae2d067af88d0be6db0a5acb5faf): Add v1-minimum public API examples for shipped surface entrypoints.
168
+ - [`df13faf`](https://github.com/outfitter-dev/trails/commit/df13faf0c2cb55804bdfeb65abcea1570efb4c61): Tighten Wayfinder navigation review findings: carry adapter filters into included adapter facts, keep live-source outline off the operator MCP surface until host-root binding exists, make unknown MCP resources protocol errors, route secondary Wayfinder graph populations through unified flags, and keep undeclared string `ctx.compose()` calls as Warden errors.
169
+
170
+ ## 1.0.0-beta.50
171
+
172
+ ## 1.0.0-beta.49
173
+
174
+ ## 1.0.0-beta.48
175
+
176
+ ## 1.0.0-beta.47
177
+
178
+ ## 1.0.0-beta.46
179
+
180
+ ## 1.0.0-beta.45
181
+
182
+ ## 1.0.0-beta.44
183
+
184
+ ### Patch Changes
185
+
186
+ - [`b1fbe57`](https://github.com/outfitter-dev/trails/commit/b1fbe574e6f44d1fecb5e3a000270955c0a77b7b): Publish Bun-validated package tarballs through an npm trusted-publishing adapter
187
+ binding, add exact repository metadata for each public workspace package, and
188
+ correct the native Bun release descriptor to its pack-only runtime boundary.
189
+
190
+ ## 1.0.0-beta.43
191
+
192
+ ### Minor Changes
193
+
194
+ - [`88a6a62`](https://github.com/outfitter-dev/trails/commit/88a6a62a9e9e230ca6d368fa78dc3ece6c816204): Complete the v1 classification-first cutover from projection/project vocabulary
195
+ to derive/derived for contract-owned fact production and render/rendered for
196
+ surface presentation. Public type, helper, rule, relation, and report names move
197
+ without compatibility aliases; ordinary repository/project nouns remain
198
+ explicit preserves or structured review inventory.
199
+
200
+ ## 1.0.0-beta.42
201
+
202
+ ## 1.0.0-beta.41
203
+
204
+ ## 1.0.0-beta.40
205
+
206
+ ### Minor Changes
207
+
208
+ - [`5adb995`](https://github.com/outfitter-dev/trails/commit/5adb99551c2dda6190d46cce7f60bb08d63c99aa): Complete the v1 hard cutover from the authored `blaze` field to
209
+ `implementation` across trail contracts, surface projections, tests, examples,
210
+ and public source-analysis helpers. Existing applications must rename authored
211
+ trail behavior fields and direct trail-object access before upgrading.
212
+
213
+ ## 1.0.0-beta.39
214
+
215
+ ### Patch Changes
216
+
217
+ - [`81373bc`](https://github.com/outfitter-dev/trails/commit/81373bc5e980bb06d56fb06af4f0986f72e318c7): Wave-2 MCP cutover to the app-authored `surfaces` overlay. The overlay's `mcp` bindings are now the authored, lockable default for the MCP surface: a list binding derives one grouped trailhead tool (member selection in `{ trail, input }`, member identity preserved in `{ trail, output }`, deterministic derived description), and a scalar binding derives an additional tool synonym whose MCP-safe name is published verbatim and must expand to exactly one trail. `deriveMcpTools`/`createServer` accept the new `overlays` option; `@ontrails/core` gains `expandMcpSurfaceBindings` and `deriveMcpTrailheadDescription`.
218
+
219
+ The call-site `CreateServerOptions.trailheads` map survives as permanent override-in-context design, not a compatibility bridge: when both channels are present, the call-site map wins at runtime. Warden's new `trailhead-override-divergence` rule (warn) names both sides when a call-site map's binding names or member selectors diverge from the authored overlay default.
220
+
221
+ Topographer now derives `graph.trailheads` from the overlay's `mcp` list bindings in both `deriveTopoGraph` and the store-side graph build, so trailhead facts flow from compiled locks into Wayfinder reads for the first time. The never-wired `DeriveTopoGraphOptions.trailheads` option and the `TopoGraphTrailheadDeclaration`/`TopoGraphTrailheadTrailSelector` types are removed — a beta-window hard cutover of an option no caller could reach; author the equivalent `mcp` list binding in `surfaceOverlay({ mcp })` instead.
222
+
223
+ - [`820b4ad`](https://github.com/outfitter-dev/trails/commit/820b4ad9c40ea383b3c489a05fe7e4b2328e324f): Add `surfaceOverlay` — the shared surface-naming schema (scalar binding = synonym, list binding = grouped entry, singleton list stays a group) with app-authored/adapter-derived overlay provenance enforced at collection and consumption, and the `surface-overlay-coherence` Warden rule. MCP tool-name derivation moves to `@ontrails/core` (`deriveMcpToolName`) so the surface and governance read one projection; `@ontrails/mcp`'s `deriveToolName` now delegates to it. The coherence rule activates on standard warden runs once fresh derivations collect app-module overlays through the shared compile channel (TRL-1209, next in this stack).
224
+
225
+ ## 1.0.0-beta.38
226
+
227
+ ## 1.0.0-beta.37
228
+
229
+ ## 1.0.0-beta.36
230
+
231
+ ### Patch Changes
232
+
233
+ - [`6e63e48`](https://github.com/outfitter-dev/trails/commit/6e63e483617b84cb6868d0c4d58d5b5a8d3b9ed2): Complete the v1 grouped surface-entry vocabulary cutover from facet to trailhead, including Regrade dogfood support for governed string literal renames and composed AST rewrite application.
234
+
235
+ ## 1.0.0-beta.35
236
+
237
+ ## 1.0.0-beta.34
238
+
239
+ ## 1.0.0-beta.33
240
+
241
+ ## 1.0.0-beta.32
242
+
243
+ ### Patch Changes
244
+
245
+ - Updated dependencies [3e5c0fc]
246
+ - Updated dependencies [f3c4fef]
247
+ - Updated dependencies [cb0a9d8]
248
+ - Updated dependencies [21c6dda]
249
+ - Updated dependencies [fe72b84]
250
+ - @ontrails/core@1.0.0-beta.32
251
+
252
+ ## 1.0.0-beta.31
253
+
254
+ ### Patch Changes
255
+
256
+ - ee9f3ae: Let Warden fix capabilities declare downstream scan targets and have Regrade
257
+ honor those targets for Warden-backed term-rewrite classes.
258
+
259
+ Dogfood the first safe facet-to-trailhead prose rewrite through project-local
260
+ Warden rules and Regrade.
261
+
262
+ - Updated dependencies [4cd5d4e]
263
+ - Updated dependencies [38907cc]
264
+ - @ontrails/core@1.0.0-beta.31
265
+
266
+ ## 1.0.0-beta.30
267
+
268
+ ### Patch Changes
269
+
270
+ - @ontrails/core@1.0.0-beta.30
271
+
272
+ ## 1.0.0-beta.29
273
+
274
+ ### Patch Changes
275
+
276
+ - @ontrails/core@1.0.0-beta.29
277
+
278
+ ## 1.0.0-beta.28
279
+
280
+ ### Patch Changes
281
+
282
+ - @ontrails/core@1.0.0-beta.28
283
+
284
+ ## 1.0.0-beta.27
285
+
286
+ ### Patch Changes
287
+
288
+ - @ontrails/core@1.0.0-beta.27
289
+
290
+ ## 1.0.0-beta.26
291
+
292
+ ### Patch Changes
293
+
294
+ - Updated dependencies [1307568]
295
+ - Updated dependencies [371d19e]
296
+ - @ontrails/core@1.0.0-beta.26
297
+
298
+ ## 1.0.0-beta.25
299
+
300
+ ### Patch Changes
301
+
302
+ - a9fdbc7: Clarify surface accommodation doctrine in MCP surface facet metadata and Warden trail-fork coaching guidance.
303
+ - 2c08afe: Expose MCP trail graph fact resources and enable them for the Trails operator MCP surface.
304
+ - f1e6efa: Document the Wayfinder MCP resource surface and polish Wayfinder filter dogfood coverage for unified navigation.
305
+ - df13faf: Tighten Wayfinder navigation review findings: carry adapter filters into included adapter facts, keep live-source outline off the operator MCP surface until host-root binding exists, make unknown MCP resources protocol errors, route secondary Wayfinder graph populations through unified flags, and keep undeclared string `ctx.compose()` calls as Warden errors.
306
+ - Updated dependencies [c36aca9]
307
+ - Updated dependencies [3befcf1]
308
+ - Updated dependencies [a4f9cf6]
309
+ - Updated dependencies [9bcf34e]
310
+ - @ontrails/core@1.0.0-beta.25
311
+
312
+ ## 1.0.0-beta.24
313
+
314
+ ### Patch Changes
315
+
316
+ - @ontrails/core@1.0.0-beta.24
317
+
318
+ ## 1.0.0-beta.23
319
+
320
+ ### Patch Changes
321
+
322
+ - @ontrails/core@1.0.0-beta.23
323
+
324
+ ## 1.0.0-beta.22
325
+
326
+ ### Patch Changes
327
+
328
+ - @ontrails/core@1.0.0-beta.22
329
+
330
+ ## 1.0.0-beta.21
331
+
332
+ ### Patch Changes
333
+
334
+ - Updated dependencies [99523f2]
335
+ - @ontrails/core@1.0.0-beta.21
336
+
337
+ ## 1.0.0-beta.20
338
+
339
+ ### Minor Changes
340
+
341
+ - accb9ec: Add MCP surface facets, MCP resource projection for cold context, and deferred-loading metadata hints.
342
+
343
+ ### Patch Changes
344
+
345
+ - 9bec01c: Document MCP resource projection and deferred-loading options for cold surface context.
346
+ - Updated dependencies [851a2a3]
347
+ - @ontrails/core@1.0.0-beta.20
348
+
349
+ ## 1.0.0-beta.19
350
+
351
+ ### Patch Changes
352
+
353
+ - 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.
354
+ - 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.
355
+ - 8638dae: Add a public API example for MCP `deriveAnnotations` annotation derivation.
356
+ - 8638dae: Add public API examples for the MCP tool metadata keys.
357
+ - 8638dae: Add a public API example for the MCP progress callback bridge.
358
+ - 84f56a5: Project live trail-version metadata on CLI, HTTP, and MCP surfaces and thread explicit surface version selection into shared trail execution.
359
+ - 5d88104: Polish Trails blaze terminology across package docs and Warden guidance.
360
+ - Updated dependencies [e41c382]
361
+ - Updated dependencies [1eb5bdc]
362
+ - Updated dependencies [f8d80b9]
363
+ - Updated dependencies [846a597]
364
+ - Updated dependencies [223aaad]
365
+ - Updated dependencies [3125f4d]
366
+ - Updated dependencies [2494dc6]
367
+ - Updated dependencies [2d53717]
368
+ - Updated dependencies [16cb740]
369
+ - Updated dependencies [8894ecb]
370
+ - Updated dependencies [fdf7ec9]
371
+ - Updated dependencies [d76be13]
372
+ - Updated dependencies [84f56a5]
373
+ - Updated dependencies [431b04c]
374
+ - Updated dependencies [5d88104]
375
+ - Updated dependencies [f04a9ef]
376
+ - @ontrails/core@1.0.0-beta.19
377
+
378
+ ## 1.0.0-beta.18
379
+
380
+ ### Patch Changes
381
+
382
+ - @ontrails/core@1.0.0-beta.18
383
+
384
+ ## 1.0.0-beta.17
385
+
386
+ ### Patch Changes
387
+
388
+ - 61497c5: Add v1-minimum public API examples for shipped surface entrypoints.
389
+ - Updated dependencies [3dc8254]
390
+ - @ontrails/core@1.0.0-beta.17
391
+
392
+ ## 1.0.0-beta.16
393
+
394
+ ### Minor Changes
395
+
396
+ - 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`).
397
+
398
+ ### Patch Changes
399
+
400
+ - 6300f70: Refresh source comments and test labels for retired connector terminology as adapter guardrails become strict.
401
+ - 20d7a5c: Enforce the shared safe error projection policy for public error bodies, diagnostics, serialized payloads, and CLI stderr.
402
+ - 49c2e7d: Refresh published package README taxonomy to use adapter language instead of retired connector vocabulary.
403
+ - Updated dependencies [73622ae]
404
+ - Updated dependencies [6300f70]
405
+ - Updated dependencies [d172013]
406
+ - Updated dependencies [c3fc5c3]
407
+ - Updated dependencies [20d7a5c]
408
+ - Updated dependencies [be5fb46]
409
+ - Updated dependencies [e898cc4]
410
+ - Updated dependencies [3395234]
411
+ - Updated dependencies [bcdc484]
412
+ - Updated dependencies [331e3a9]
413
+ - Updated dependencies [4399fdb]
414
+ - Updated dependencies [4b8d13b]
415
+ - Updated dependencies [112b9f2]
416
+ - Updated dependencies [893025e]
417
+ - Updated dependencies [eec5e9d]
418
+ - Updated dependencies [ebd4434]
419
+ - Updated dependencies [863d473]
420
+ - Updated dependencies [344f2f7]
421
+ - Updated dependencies [26f9ffd]
422
+ - Updated dependencies [10eae9a]
423
+ - Updated dependencies [22c6c06]
424
+ - @ontrails/core@1.0.0-beta.16
425
+
426
+ ## 1.0.0-beta.15
427
+
428
+ ### Patch Changes
429
+
430
+ - Updated dependencies [4ad6b25]
431
+ - @ontrails/core@1.0.0-beta.15
432
+
433
+ ## 1.0.0-beta.14
434
+
435
+ ### Minor Changes
436
+
437
+ - 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.
438
+
439
+ ### Patch Changes
440
+
441
+ - Updated dependencies [69057e9]
442
+ - @ontrails/core@1.0.0-beta.14
443
+
444
+ ## 1.0.0-beta.13
445
+
446
+ ### Minor Changes
447
+
448
+ - Trail-native vocabulary cutover. Breaking API field renames across all packages:
449
+
450
+ - Trail spec: `run:` → `blaze:`, `follow:` → `crosses:`, `services:` → `provisions:`, `metadata:` → `meta:`, `emits:` → `signals:`
451
+ - Runtime: `ctx.follow()` → `ctx.cross()`, `ctx.emit()` → `ctx.signal()`, `ctx.signal` (abort) → `ctx.abortSignal`
452
+ - Entry points: `blaze(app)` → `trailhead(app)`
453
+ - Package rename: `@ontrails/crumbs` → `@ontrails/tracker`
454
+ - Wrapper types: `Layer` → `Gate`, `layers`/`middleware` → `gates`
455
+ - Transport: `surface` → `trailhead`, `adapter` → `connector`
456
+
457
+ ### Patch Changes
458
+
459
+ - 6944147: Complete trifecta for config, permits, and tracker (formerly tracks)
460
+
461
+ - **config**: Add `configProvision`, `configGate`, `config.trail`, and `config.workspace` trails with full `defineConfig`, `resolve`, `describe`, `explain`, `doctor`, and code generation support
462
+ - **permits**: Add `authService` and `auth.verify` trail for runtime authorization checks
463
+ - **tracker**: Rename tracks to tracker; add `trackerProvision` and `tracker.status` trail for structured signal tracking
464
+ - **cli**: Fix build flag handling and improve bootstrap scaffolding
465
+ - **testing**: Expand test context helpers and example-based testing utilities
466
+ - **core/mcp/http**: Internal alignment for provision and composition updates
467
+
468
+ - Updated dependencies [6944147]
469
+ - Updated dependencies
470
+ - @ontrails/core@1.0.0-beta.13
471
+
472
+ ## 1.0.0-beta.12
473
+
474
+ ### Patch Changes
475
+
476
+ - Complete trifecta for config, permits, and tracker (formerly tracks)
477
+
478
+ - **config**: Add `configProvision`, `config.gate`, `config.trail`, and `config.workspace` trails with full `defineConfig`, `resolve`, `describe`, `explain`, `doctor`, and code generation support
479
+ - **permits**: Add `authProvision` and `auth.verify` trail for runtime authorization checks
480
+ - **tracker**: Rename tracks to tracker; add `trackerProvision` and `tracker.status` trail for structured event tracking
481
+ - **cli**: Fix build flag handling and improve bootstrap scaffolding
482
+ - **testing**: Expand test context helpers and example-based testing utilities
483
+ - **core/mcp/http**: Internal alignment for provision and composition updates
484
+
485
+ - Updated dependencies
486
+ - @ontrails/core@1.0.0-beta.12
487
+
488
+ ## 1.0.0-beta.11
489
+
490
+ ### Patch Changes
491
+
492
+ - Add provisions as a first-class primitive.
493
+
494
+ 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()`.
495
+
496
+ **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.
497
+
498
+ **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.
499
+
500
+ **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.
501
+
502
+ **Trailheads:** Provision overrides thread through `run` and `trailhead` on CLI, MCP, and HTTP.
503
+
504
+ **Introspection:** Survey and trailhead map outputs include provision graph. Topo exposes `.provisions`, `.getProvision()`, `.hasProvision()`, `.listProvisions()`, `.provisionIds()`, `.provisionCount`.
505
+
506
+ **Docs:** ADR-009 accepted. Unified provisions guide, updated vocabulary, getting-started, architecture, and package READMEs.
507
+
508
+ - Updated dependencies
509
+ - @ontrails/core@1.0.0-beta.11
510
+
511
+ ## 1.0.0-beta.10
512
+
513
+ ### Patch Changes
514
+
515
+ - Cleanup and hardening pass across all packages.
516
+
517
+ **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.
518
+
519
+ **cli**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out via `validate: false`.
520
+
521
+ **http**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out.
522
+
523
+ **mcp**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out.
524
+
525
+ **warden**: Project-aware rule context preserved in trail wrappers.
526
+
527
+ - Updated dependencies
528
+ - @ontrails/core@1.0.0-beta.10
529
+
530
+ ## 1.0.0-beta.9
531
+
532
+ ### Minor Changes
533
+
534
+ - Consolidated improvements across all trailhead packages.
535
+
536
+ **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.
537
+
538
+ **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.
539
+
540
+ **mcp**: Return `Result` from `buildMcpTools()` on collision instead of throwing.
541
+
542
+ **cli**: Verify exception catching via centralized `executeTrail`.
543
+
544
+ **testing**: Cross-context awareness improvements.
545
+
546
+ **warden**: Refactor rules as composable trails with examples.
547
+
548
+ **schema**: Error code and empty body fixes.
549
+
550
+ ### Patch Changes
551
+
552
+ - Updated dependencies
553
+ - @ontrails/core@1.0.0-beta.9
554
+
555
+ ## 1.0.0-beta.8
556
+
557
+ ### Patch Changes
558
+
559
+ - @ontrails/core@1.0.0-beta.8
560
+
561
+ ## 1.0.0-beta.7
562
+
563
+ ### Patch Changes
564
+
565
+ - @ontrails/core@1.0.0-beta.7
566
+
567
+ ## 1.0.0-beta.6
568
+
569
+ ### Patch Changes
570
+
571
+ - Updated dependencies
572
+ - @ontrails/core@1.0.0-beta.6
573
+
574
+ ## 1.0.0-beta.5
575
+
576
+ ### Patch Changes
577
+
578
+ - Updated dependencies
579
+ - @ontrails/core@1.0.0-beta.5
580
+
581
+ ## 1.0.0-beta.4
582
+
583
+ ### Major Changes
584
+
585
+ - API simplification: unified trail model, intent enum, run, metadata.
586
+
587
+ **BREAKING CHANGES:**
588
+
589
+ - `hike()` removed — use `trail()` with optional `crosses: [...]` field
590
+ - `follows` renamed to `crosses` (matching `ctx.cross()`)
591
+ - `topo.hikes` removed — single `topo.trails` map
592
+ - `kind: 'hike'` removed — everything is `kind: 'trail'`
593
+ - `readOnly`/`destructive` booleans replaced by `intent: 'read' | 'write' | 'destroy'`
594
+ - `implementation` field renamed to `run`
595
+ - `markers` field renamed to `metadata`
596
+ - `testHike` renamed to `testCrosses`, `HikeScenario` to `CrossScenario`
597
+ - `trailhead()` now returns the trailhead handle (`Command` for CLI, `Server` for MCP)
598
+
599
+ ### Patch Changes
600
+
601
+ - Updated dependencies
602
+ - @ontrails/core@1.0.0-beta.4
603
+
604
+ ## 1.0.0-beta.3
605
+
606
+ ### Minor Changes
607
+
608
+ - Bug fixes across all trailhead packages found via parallel Codex review.
609
+
610
+ **core**: Fix Result.toJson false circular detection on DAGs, deserializeError subclass round-trip, topo cross-kind ID collisions, validateTopo multi-node cycle detection, error example input validation bypass, and deriveFields array type collapse.
611
+
612
+ **cli**: Switch trailhead to parseAsync for proper async error handling, add boolean flag negation (--no-flag), and strict number parsing that rejects partial input.
613
+
614
+ **mcp**: Align BlobRef with core (including ReadableStream support) and detect tool-name collisions after normalization.
615
+
616
+ **testing**: Include hikes in testContracts validation, with cross-context awareness.
617
+
618
+ **warden**: Collect hike detour targets, validate detour refs in hike specs, and stop implementation-returns-result from walking into nested function bodies.
619
+
620
+ ### Patch Changes
621
+
622
+ - Updated dependencies
623
+ - @ontrails/core@1.0.0-beta.3
624
+
625
+ ## 1.0.0-beta.2
626
+
627
+ ### Patch Changes
628
+
629
+ - Fix workspace dependency resolution in published packages. Now using bun publish
630
+ which correctly replaces workspace:^ with actual version numbers.
631
+ - Updated dependencies
632
+ - @ontrails/core@1.0.0-beta.2
633
+
634
+ ## 1.0.0-beta.1
635
+
636
+ ### Patch Changes
637
+
638
+ - Fix two blocking bugs from real-world migration:
639
+ - Published packages now resolve correctly (workspace:^ instead of workspace:\*)
640
+ - Error forwarding works across different success types (Err no longer carries phantom T)
641
+ - Updated dependencies
642
+ - @ontrails/core@1.0.0-beta.1
643
+
644
+ ## 1.0.0-beta.0
645
+
646
+ ### Minor Changes
647
+
648
+ - Initial v1 beta release of the Trails framework.
649
+
650
+ - **@ontrails/core** — Result type, error taxonomy, trail/hike/event/topo, validateTopo, validateInput/Output, deriveFields, patterns, redaction, branded types, resilience
651
+ - **@ontrails/cli** — CLI trailhead connector, Commander integration, flag derivation, gates
652
+ - **@ontrails/mcp** — MCP trailhead connector, tool generation, annotations, progress bridge
653
+ - **@ontrails/logging** — Structured logging, sinks, formatters, LogTape connector
654
+ - **@ontrails/testing** — testAll, testExamples, testTrail, testHike, testContracts, testDetours, trailhead harnesses
655
+ - **@ontrails/warden** — AST-based code convention rules via oxc-parser, drift detection, CI formatters
656
+ - **@ontrails/schema** — Trailhead map generation, hashing, semantic diffing
657
+
658
+ ### Patch Changes
659
+
660
+ - Updated dependencies
661
+ - @ontrails/core@1.0.0-beta.0