@ontrails/schema 1.0.0-beta.3 → 1.0.0-beta.5

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.
@@ -1,3 +1,3 @@
1
1
  $ oxlint ./src
2
2
  Found 0 warnings and 0 errors.
3
- Finished in 30ms on 10 files with 93 rules using 24 threads.
3
+ Finished in 18ms on 10 files with 93 rules using 24 threads.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # @ontrails/schema
2
2
 
3
+ ## 1.0.0-beta.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @ontrails/core@1.0.0-beta.5
9
+
10
+ ## 1.0.0-beta.4
11
+
12
+ ### Major Changes
13
+
14
+ - API simplification: unified trail model, intent enum, run, metadata.
15
+
16
+ **BREAKING CHANGES:**
17
+
18
+ - `hike()` removed — use `trail()` with optional `follow: [...]` field
19
+ - `follows` renamed to `follow` (singular, matching `ctx.follow()`)
20
+ - `topo.hikes` removed — single `topo.trails` map
21
+ - `kind: 'hike'` removed — everything is `kind: 'trail'`
22
+ - `readOnly`/`destructive` booleans replaced by `intent: 'read' | 'write' | 'destroy'`
23
+ - `implementation` field renamed to `run`
24
+ - `markers` field renamed to `metadata`
25
+ - `testHike` renamed to `testFollows`, `HikeScenario` to `FollowScenario`
26
+ - `blaze()` now returns the surface handle (`Command` for CLI, `Server` for MCP)
27
+
28
+ ### Patch Changes
29
+
30
+ - Updated dependencies
31
+ - @ontrails/core@1.0.0-beta.4
32
+
3
33
  ## 1.0.0-beta.3
4
34
 
5
35
  ### Patch Changes
package/README.md CHANGED
@@ -19,7 +19,7 @@ if (diff.hasBreaking) {
19
19
  }
20
20
  ```
21
21
 
22
- The surface map captures every trail's input/output schemas (as JSON Schema), safety markers, follows graph, and example counts. The hash goes into `surface.lock` -- a single committed line that CI can check for drift.
22
+ The surface map captures every trail's input/output schemas (as JSON Schema), intent and metadata, follow graph, and example counts. The hash goes into `surface.lock` -- a single committed line that CI can check for drift.
23
23
 
24
24
  ## API
25
25
 
@@ -45,9 +45,9 @@ The diff classifies every change by severity:
45
45
  | Required input field added | breaking |
46
46
  | Input/output field removed | breaking |
47
47
  | Output field type changed | breaking |
48
- | Safety marker changed | warning |
48
+ | Safety property changed | warning |
49
49
  | Trail deprecated | warning |
50
- | Follows changed | warning |
50
+ | Follow changed | warning |
51
51
  | Trail added | info |
52
52
  | Optional input field added | info |
53
53
  | Output field added | info |
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,UAAU,EAEV,UAAU,EAEX,MAAM,YAAY,CAAC;AA8WpB,eAAO,MAAM,eAAe,GAC1B,MAAM,UAAU,EAChB,MAAM,UAAU,KACf,UAkBF,CAAC"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,UAAU,EAEV,UAAU,EAEX,MAAM,YAAY,CAAC;AAiXpB,eAAO,MAAM,eAAe,GAC1B,MAAM,UAAU,EAChB,MAAM,UAAU,KACf,UAkBF,CAAC"}
package/dist/diff.js CHANGED
@@ -115,10 +115,11 @@ const diffSurfaces = (acc, prev, curr) => {
115
115
  };
116
116
  /** Diff safety markers, description, and deprecation. */
117
117
  const diffMetadata = (acc, prev, curr) => {
118
- for (const marker of ['readOnly', 'destructive', 'idempotent']) {
119
- if (prev[marker] !== curr[marker]) {
120
- addDetail(acc, 'warning', `${marker} changed: ${String(prev[marker] ?? false)} -> ${String(curr[marker] ?? false)}`);
121
- }
118
+ if (prev.intent !== curr.intent) {
119
+ addDetail(acc, 'warning', `intent changed: ${String(prev.intent ?? 'write')} -> ${String(curr.intent ?? 'write')}`);
120
+ }
121
+ if (prev.idempotent !== curr.idempotent) {
122
+ addDetail(acc, 'warning', `idempotent changed: ${String(prev.idempotent ?? false)} -> ${String(curr.idempotent ?? false)}`);
122
123
  }
123
124
  if (prev.description !== curr.description) {
124
125
  addDetail(acc, 'info', 'Description updated');
@@ -133,8 +134,8 @@ const diffMetadata = (acc, prev, curr) => {
133
134
  addDetail(acc, 'info', 'Undeprecated');
134
135
  }
135
136
  };
136
- /** Build a follows-changed description from added/removed arrays. */
137
- const buildFollowsMessage = (added, removed) => {
137
+ /** Build a follow-changed description from added/removed arrays. */
138
+ const buildFollowMessage = (added, removed) => {
138
139
  const parts = [];
139
140
  if (added.length > 0) {
140
141
  parts.push(`added "${added.join('", "')}"`);
@@ -142,18 +143,16 @@ const buildFollowsMessage = (added, removed) => {
142
143
  if (removed.length > 0) {
143
144
  parts.push(`removed "${removed.join('", "')}"`);
144
145
  }
145
- return `Follows changed: ${parts.join(', ')}`;
146
+ return `Follow changed: ${parts.join(', ')}`;
146
147
  };
147
- /** Diff follows arrays. */
148
- const diffFollows = (acc, prev, curr) => {
149
- const prevFollows = new Set(prev.follows);
150
- const currFollows = new Set(curr.follows);
151
- const added = [...currFollows].filter((f) => !prevFollows.has(f)).toSorted();
152
- const removed = [...prevFollows]
153
- .filter((f) => !currFollows.has(f))
154
- .toSorted();
148
+ /** Diff follow arrays. */
149
+ const diffFollow = (acc, prev, curr) => {
150
+ const prevFollow = new Set(prev.follow);
151
+ const currFollow = new Set(curr.follow);
152
+ const added = [...currFollow].filter((f) => !prevFollow.has(f)).toSorted();
153
+ const removed = [...prevFollow].filter((f) => !currFollow.has(f)).toSorted();
155
154
  if (added.length > 0 || removed.length > 0) {
156
- addDetail(acc, 'warning', buildFollowsMessage(added, removed));
155
+ addDetail(acc, 'warning', buildFollowMessage(added, removed));
157
156
  }
158
157
  };
159
158
  const diffEntry = (prev, curr) => {
@@ -162,7 +161,7 @@ const diffEntry = (prev, curr) => {
162
161
  diffSchemaFields(acc, 'output', prev.output, curr.output);
163
162
  diffSurfaces(acc, prev, curr);
164
163
  diffMetadata(acc, prev, curr);
165
- diffFollows(acc, prev, curr);
164
+ diffFollow(acc, prev, curr);
166
165
  if (acc.details.length === 0) {
167
166
  return undefined;
168
167
  }
@@ -182,7 +181,7 @@ const diffEntry = (prev, curr) => {
182
181
  *
183
182
  * Classifies each change with a severity:
184
183
  * - `info`: new trail, optional field added, output field added, description change
185
- * - `warning`: safety marker change, deprecation, follows change
184
+ * - `warning`: safety marker change, deprecation, follow change
186
185
  * - `breaking`: trail removed, required input added, field removed, type change, surface removed
187
186
  */
188
187
  /** Find entries added in curr that don't exist in prev. */
package/dist/diff.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAe,IAAI,EAAS,MAAM,gBAAgB,CAAC;AAE/D,OAAO,KAAK,EAAc,UAAU,EAAmB,MAAM,YAAY,CAAC;AAmL1E;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,IAAI,KAAG,UA0B/C,CAAC"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAS,IAAI,EAAS,MAAM,gBAAgB,CAAC;AAEzD,OAAO,KAAK,EAAc,UAAU,EAAmB,MAAM,YAAY,CAAC;AAkK1E;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,IAAI,KAAG,UAqB/C,CAAC"}
package/dist/generate.js CHANGED
@@ -51,11 +51,8 @@ const addSchemas = (entry, t) => {
51
51
  };
52
52
  /** Add safety markers to an entry. */
53
53
  const addSafetyMarkers = (entry, t) => {
54
- if (t.readOnly === true) {
55
- entry['readOnly'] = true;
56
- }
57
- if (t.destructive === true) {
58
- entry['destructive'] = true;
54
+ if (t.intent !== 'write') {
55
+ entry['intent'] = t.intent;
59
56
  }
60
57
  if (t.idempotent === true) {
61
58
  entry['idempotent'] = true;
@@ -95,19 +92,8 @@ const trailToEntry = (t) => {
95
92
  };
96
93
  addSchemas(entry, t);
97
94
  addMetadata(entry, t, raw);
98
- return sortKeys(entry);
99
- };
100
- const hikeToEntry = (r) => {
101
- const base = trailToEntry(r);
102
- const raw = r;
103
- const entry = {
104
- ...base,
105
- follows: r.follows.toSorted(),
106
- kind: 'hike',
107
- };
108
- // Re-check surfaces on the route itself
109
- if (Array.isArray(raw['surfaces'])) {
110
- entry['surfaces'] = raw['surfaces'].toSorted();
95
+ if (t.follow.length > 0) {
96
+ entry['follow'] = t.follow.toSorted();
111
97
  }
112
98
  return sortKeys(entry);
113
99
  };
@@ -152,10 +138,6 @@ export const generateSurfaceMap = (topo) => {
152
138
  for (const t of topo.trails.values()) {
153
139
  entries.push(trailToEntry(t));
154
140
  }
155
- // Collect all hikes
156
- for (const r of topo.hikes.values()) {
157
- entries.push(hikeToEntry(r));
158
- }
159
141
  // Collect all events
160
142
  for (const e of topo.events.values()) {
161
143
  entries.push(eventToEntry(e));
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,16 +5,15 @@
5
5
  export type JsonSchema = Readonly<Record<string, unknown>>;
6
6
  export interface SurfaceMapEntry {
7
7
  readonly id: string;
8
- readonly kind: 'trail' | 'hike' | 'event';
8
+ readonly kind: 'trail' | 'event';
9
9
  readonly surfaces: readonly string[];
10
10
  readonly input?: JsonSchema | undefined;
11
11
  readonly output?: JsonSchema | undefined;
12
- readonly readOnly?: boolean | undefined;
13
- readonly destructive?: boolean | undefined;
12
+ readonly intent?: 'read' | 'write' | 'destroy' | undefined;
14
13
  readonly idempotent?: boolean | undefined;
15
14
  readonly deprecated?: boolean | undefined;
16
15
  readonly replacedBy?: string | undefined;
17
- readonly follows?: readonly string[] | undefined;
16
+ readonly follow?: readonly string[] | undefined;
18
17
  readonly detours?: Readonly<Record<string, readonly string[]>> | undefined;
19
18
  readonly exampleCount: number;
20
19
  readonly description?: string | undefined;
@@ -26,7 +25,7 @@ export interface SurfaceMap {
26
25
  }
27
26
  export interface DiffEntry {
28
27
  readonly id: string;
29
- readonly kind: 'trail' | 'hike' | 'event';
28
+ readonly kind: 'trail' | 'event';
30
29
  readonly change: 'added' | 'removed' | 'modified';
31
30
  readonly severity: 'info' | 'warning' | 'breaking';
32
31
  readonly details: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wDAAwD;AACxD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAM3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAMD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAMD,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wDAAwD;AACxD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAM3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAMD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAMD,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ontrails/schema",
3
- "version": "1.0.0-beta.3",
3
+ "version": "1.0.0-beta.5",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./src/index.ts",
@@ -223,13 +223,13 @@ describe('diffSurfaceMaps', () => {
223
223
  });
224
224
 
225
225
  test('safety marker changed classified as warning', () => {
226
- const prev = surfaceMap([entry({ id: 'data.wipe', readOnly: true })]);
227
- const curr = surfaceMap([entry({ id: 'data.wipe', readOnly: false })]);
226
+ const prev = surfaceMap([entry({ id: 'data.wipe', intent: 'read' })]);
227
+ const curr = surfaceMap([entry({ id: 'data.wipe', intent: 'destroy' })]);
228
228
  const result = diffSurfaceMaps(prev, curr);
229
229
 
230
230
  expect(result.warnings).toHaveLength(1);
231
231
  expect(
232
- result.warnings[0]?.details.some((d) => d.includes('readOnly changed'))
232
+ result.warnings[0]?.details.some((d) => d.includes('intent changed'))
233
233
  ).toBe(true);
234
234
  });
235
235
 
@@ -267,30 +267,30 @@ describe('diffSurfaceMaps', () => {
267
267
  ).toBe(true);
268
268
  });
269
269
 
270
- test('follows changed produces warning', () => {
270
+ test('follow changed produces warning', () => {
271
271
  const prev = surfaceMap([
272
272
  entry({
273
- follows: ['user.get', 'user.lookup'],
273
+ follow: ['user.get', 'user.lookup'],
274
274
  id: 'user.update',
275
- kind: 'hike',
275
+ kind: 'trail',
276
276
  }),
277
277
  ]);
278
278
  const curr = surfaceMap([
279
279
  entry({
280
- follows: ['user.get', 'user.search'],
280
+ follow: ['user.get', 'user.search'],
281
281
  id: 'user.update',
282
- kind: 'hike',
282
+ kind: 'trail',
283
283
  }),
284
284
  ]);
285
285
  const result = diffSurfaceMaps(prev, curr);
286
286
 
287
287
  expect(result.warnings).toHaveLength(1);
288
- const followsDetail = result.warnings[0]?.details.find((d) =>
289
- d.includes('Follows changed')
288
+ const followDetail = result.warnings[0]?.details.find((d) =>
289
+ d.includes('Follow changed')
290
290
  );
291
- expect(followsDetail).toBeDefined();
292
- expect(followsDetail).toContain('search');
293
- expect(followsDetail).toContain('lookup');
291
+ expect(followDetail).toBeDefined();
292
+ expect(followDetail).toContain('search');
293
+ expect(followDetail).toContain('lookup');
294
294
  });
295
295
  });
296
296
 
@@ -300,22 +300,22 @@ describe('diffSurfaceMaps', () => {
300
300
  entry({
301
301
  description: 'old',
302
302
  id: 'a.trail',
303
+ intent: 'read',
303
304
  output: {
304
305
  properties: { removed: { type: 'string' } },
305
306
  type: 'object',
306
307
  },
307
- readOnly: true,
308
308
  }),
309
309
  ]);
310
310
  const curr = surfaceMap([
311
311
  entry({
312
312
  description: 'new',
313
313
  id: 'a.trail',
314
+ intent: 'destroy',
314
315
  output: {
315
316
  properties: {},
316
317
  type: 'object',
317
318
  },
318
- readOnly: false,
319
319
  }),
320
320
  entry({ id: 'b.trail' }),
321
321
  ]);
@@ -1,6 +1,6 @@
1
1
  import { describe, test, expect } from 'bun:test';
2
2
 
3
- import { trail, hike, event, topo, Result } from '@ontrails/core';
3
+ import { trail, event, topo, Result } from '@ontrails/core';
4
4
  import type { Topo } from '@ontrails/core';
5
5
  import { z } from 'zod';
6
6
 
@@ -44,12 +44,12 @@ describe('generateSurfaceMap', () => {
44
44
  describe('entries', () => {
45
45
  test('produces entries for all trails in the topo', () => {
46
46
  const a = trail('a.create', {
47
- implementation: noop,
48
47
  input: z.object({ name: z.string() }),
48
+ run: noop,
49
49
  });
50
50
  const b = trail('b.list', {
51
- implementation: noop,
52
51
  input: z.object({}),
52
+ run: noop,
53
53
  });
54
54
  const tp = topoFrom({ a, b });
55
55
  const map = generateSurfaceMap(tp);
@@ -60,16 +60,16 @@ describe('generateSurfaceMap', () => {
60
60
 
61
61
  test('entries are sorted alphabetically by id', () => {
62
62
  const z2 = trail('z.trail', {
63
- implementation: noop,
64
63
  input: z.object({}),
64
+ run: noop,
65
65
  });
66
66
  const a2 = trail('a.trail', {
67
- implementation: noop,
68
67
  input: z.object({}),
68
+ run: noop,
69
69
  });
70
70
  const m2 = trail('m.trail', {
71
- implementation: noop,
72
71
  input: z.object({}),
72
+ run: noop,
73
73
  });
74
74
  const tp = topoFrom({ a2, m2, z2 });
75
75
  const map = generateSurfaceMap(tp);
@@ -83,9 +83,9 @@ describe('generateSurfaceMap', () => {
83
83
 
84
84
  test('trail with input/output schemas produces valid JSON Schema entries', () => {
85
85
  const t = trail('entity.create', {
86
- implementation: noop,
87
86
  input: z.object({ age: z.number(), name: z.string() }),
88
87
  output: z.object({ id: z.string(), name: z.string() }),
88
+ run: noop,
89
89
  });
90
90
  const map = generateSurfaceMap(topoFrom({ t }));
91
91
  const entry = getFirstEntry(map);
@@ -104,8 +104,8 @@ describe('generateSurfaceMap', () => {
104
104
 
105
105
  test('trail without output schema has output undefined', () => {
106
106
  const t = trail('fire.forget', {
107
- implementation: noop,
108
107
  input: z.object({ msg: z.string() }),
108
+ run: noop,
109
109
  });
110
110
  const tp = topoFrom({ t });
111
111
  const map = generateSurfaceMap(tp);
@@ -113,23 +113,23 @@ describe('generateSurfaceMap', () => {
113
113
  expect(map.entries[0]?.output).toBeUndefined();
114
114
  });
115
115
 
116
- test('hike entries include follows array', () => {
116
+ test('trail entries include follow array when non-empty', () => {
117
117
  const base = trail('user.get', {
118
- implementation: noop,
119
118
  input: z.object({ id: z.string() }),
119
+ run: noop,
120
120
  });
121
- const r = hike('user.update', {
122
- follows: ['user.get'],
123
- implementation: noop,
121
+ const r = trail('user.update', {
122
+ follow: ['user.get'],
124
123
  input: z.object({ id: z.string(), name: z.string() }),
124
+ run: noop,
125
125
  });
126
126
  const tp = topoFrom({ base, r });
127
127
  const map = generateSurfaceMap(tp);
128
- const hikeEntry = map.entries.find((e) => e.id === 'user.update');
129
- expect(hikeEntry).toBeDefined();
128
+ const followEntry = map.entries.find((e) => e.id === 'user.update');
129
+ expect(followEntry).toBeDefined();
130
130
 
131
- expect(hikeEntry?.kind).toBe('hike');
132
- expect(hikeEntry?.follows).toEqual(['user.get']);
131
+ expect(followEntry?.kind).toBe('trail');
132
+ expect(followEntry?.follow).toEqual(['user.get']);
133
133
  });
134
134
 
135
135
  test("event entries are included with kind 'event'", () => {
@@ -149,16 +149,14 @@ describe('generateSurfaceMap', () => {
149
149
  describe('metadata', () => {
150
150
  test('safety markers are included when set', () => {
151
151
  const t = trail('safe.trail', {
152
- destructive: false,
153
152
  idempotent: true,
154
- implementation: noop,
155
153
  input: z.object({}),
156
- readOnly: true,
154
+ intent: 'read',
155
+ run: noop,
157
156
  });
158
157
  const entry = getFirstEntry(generateSurfaceMap(topoFrom({ t })));
159
158
 
160
- expect(entry.readOnly).toBe(true);
161
- expect(entry.destructive).toBeUndefined();
159
+ expect(entry.intent).toBe('read');
162
160
  expect(entry.idempotent).toBe(true);
163
161
  });
164
162
 
@@ -169,9 +167,9 @@ describe('generateSurfaceMap', () => {
169
167
  { expected: { y: 0 }, input: { x: 0 }, name: 'zero' },
170
168
  { expected: { y: -2 }, input: { x: -1 }, name: 'negative' },
171
169
  ],
172
- implementation: noop,
173
170
  input: z.object({ x: z.number() }),
174
171
  output: z.object({ y: z.number() }),
172
+ run: noop,
175
173
  });
176
174
  const tp = topoFrom({ t });
177
175
  const map = generateSurfaceMap(tp);
@@ -185,8 +183,8 @@ describe('generateSurfaceMap', () => {
185
183
  onError: ['notify.admin', 'log.error'],
186
184
  onSuccess: ['cache.invalidate'],
187
185
  },
188
- implementation: noop,
189
186
  input: z.object({}),
187
+ run: noop,
190
188
  });
191
189
  const entry = getFirstEntry(generateSurfaceMap(topoFrom({ t })));
192
190
 
@@ -199,8 +197,8 @@ describe('generateSurfaceMap', () => {
199
197
  test('description is included when present', () => {
200
198
  const t = trail('described', {
201
199
  description: 'A described trail',
202
- implementation: noop,
203
200
  input: z.object({}),
201
+ run: noop,
204
202
  });
205
203
  const tp = topoFrom({ t });
206
204
  const map = generateSurfaceMap(tp);
@@ -213,10 +211,10 @@ describe('generateSurfaceMap', () => {
213
211
  test('determinism: same topo produces identical output', () => {
214
212
  const t = trail('stable', {
215
213
  description: 'Stable trail',
216
- implementation: noop,
217
214
  input: z.object({ a: z.string(), b: z.number() }),
215
+ intent: 'read',
218
216
  output: z.object({ c: z.boolean() }),
219
- readOnly: true,
217
+ run: noop,
220
218
  });
221
219
  const tp = topoFrom({ t });
222
220
 
@@ -229,8 +227,8 @@ describe('generateSurfaceMap', () => {
229
227
 
230
228
  test('version is set to 1.0', () => {
231
229
  const t = trail('v.check', {
232
- implementation: noop,
233
230
  input: z.object({}),
231
+ run: noop,
234
232
  });
235
233
  const tp = topoFrom({ t });
236
234
  const map = generateSurfaceMap(tp);
@@ -240,8 +238,8 @@ describe('generateSurfaceMap', () => {
240
238
 
241
239
  test('generatedAt is an ISO timestamp', () => {
242
240
  const t = trail('ts.check', {
243
- implementation: noop,
244
241
  input: z.object({}),
242
+ run: noop,
245
243
  });
246
244
  const tp = topoFrom({ t });
247
245
  const map = generateSurfaceMap(tp);
package/src/diff.ts CHANGED
@@ -228,14 +228,19 @@ const diffMetadata = (
228
228
  prev: SurfaceMapEntry,
229
229
  curr: SurfaceMapEntry
230
230
  ): void => {
231
- for (const marker of ['readOnly', 'destructive', 'idempotent'] as const) {
232
- if (prev[marker] !== curr[marker]) {
233
- addDetail(
234
- acc,
235
- 'warning',
236
- `${marker} changed: ${String(prev[marker] ?? false)} -> ${String(curr[marker] ?? false)}`
237
- );
238
- }
231
+ if (prev.intent !== curr.intent) {
232
+ addDetail(
233
+ acc,
234
+ 'warning',
235
+ `intent changed: ${String(prev.intent ?? 'write')} -> ${String(curr.intent ?? 'write')}`
236
+ );
237
+ }
238
+ if (prev.idempotent !== curr.idempotent) {
239
+ addDetail(
240
+ acc,
241
+ 'warning',
242
+ `idempotent changed: ${String(prev.idempotent ?? false)} -> ${String(curr.idempotent ?? false)}`
243
+ );
239
244
  }
240
245
  if (prev.description !== curr.description) {
241
246
  addDetail(acc, 'info', 'Description updated');
@@ -250,8 +255,8 @@ const diffMetadata = (
250
255
  }
251
256
  };
252
257
 
253
- /** Build a follows-changed description from added/removed arrays. */
254
- const buildFollowsMessage = (added: string[], removed: string[]): string => {
258
+ /** Build a follow-changed description from added/removed arrays. */
259
+ const buildFollowMessage = (added: string[], removed: string[]): string => {
255
260
  const parts: string[] = [];
256
261
  if (added.length > 0) {
257
262
  parts.push(`added "${added.join('", "')}"`);
@@ -259,23 +264,21 @@ const buildFollowsMessage = (added: string[], removed: string[]): string => {
259
264
  if (removed.length > 0) {
260
265
  parts.push(`removed "${removed.join('", "')}"`);
261
266
  }
262
- return `Follows changed: ${parts.join(', ')}`;
267
+ return `Follow changed: ${parts.join(', ')}`;
263
268
  };
264
269
 
265
- /** Diff follows arrays. */
266
- const diffFollows = (
270
+ /** Diff follow arrays. */
271
+ const diffFollow = (
267
272
  acc: DetailAccumulator,
268
273
  prev: SurfaceMapEntry,
269
274
  curr: SurfaceMapEntry
270
275
  ): void => {
271
- const prevFollows = new Set(prev.follows);
272
- const currFollows = new Set(curr.follows);
273
- const added = [...currFollows].filter((f) => !prevFollows.has(f)).toSorted();
274
- const removed = [...prevFollows]
275
- .filter((f) => !currFollows.has(f))
276
- .toSorted();
276
+ const prevFollow = new Set(prev.follow);
277
+ const currFollow = new Set(curr.follow);
278
+ const added = [...currFollow].filter((f) => !prevFollow.has(f)).toSorted();
279
+ const removed = [...prevFollow].filter((f) => !currFollow.has(f)).toSorted();
277
280
  if (added.length > 0 || removed.length > 0) {
278
- addDetail(acc, 'warning', buildFollowsMessage(added, removed));
281
+ addDetail(acc, 'warning', buildFollowMessage(added, removed));
279
282
  }
280
283
  };
281
284
 
@@ -289,7 +292,7 @@ const diffEntry = (
289
292
  diffSchemaFields(acc, 'output', prev.output, curr.output);
290
293
  diffSurfaces(acc, prev, curr);
291
294
  diffMetadata(acc, prev, curr);
292
- diffFollows(acc, prev, curr);
295
+ diffFollow(acc, prev, curr);
293
296
 
294
297
  if (acc.details.length === 0) {
295
298
  return undefined;
@@ -313,7 +316,7 @@ const diffEntry = (
313
316
  *
314
317
  * Classifies each change with a severity:
315
318
  * - `info`: new trail, optional field added, output field added, description change
316
- * - `warning`: safety marker change, deprecation, follows change
319
+ * - `warning`: safety marker change, deprecation, follow change
317
320
  * - `breaking`: trail removed, required input added, field removed, type change, surface removed
318
321
  */
319
322
  /** Find entries added in curr that don't exist in prev. */
package/src/generate.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import { zodToJsonSchema } from '@ontrails/core';
6
- import type { Event, Hike, Topo, Trail } from '@ontrails/core';
6
+ import type { Event, Topo, Trail } from '@ontrails/core';
7
7
 
8
8
  import type { JsonSchema, SurfaceMap, SurfaceMapEntry } from './types.js';
9
9
 
@@ -70,11 +70,8 @@ const addSafetyMarkers = (
70
70
  entry: Record<string, unknown>,
71
71
  t: Trail<unknown, unknown>
72
72
  ): void => {
73
- if (t.readOnly === true) {
74
- entry['readOnly'] = true;
75
- }
76
- if (t.destructive === true) {
77
- entry['destructive'] = true;
73
+ if (t.intent !== 'write') {
74
+ entry['intent'] = t.intent;
78
75
  }
79
76
  if (t.idempotent === true) {
80
77
  entry['idempotent'] = true;
@@ -127,22 +124,8 @@ const trailToEntry = (t: Trail<unknown, unknown>): SurfaceMapEntry => {
127
124
  addSchemas(entry, t);
128
125
  addMetadata(entry, t, raw);
129
126
 
130
- return sortKeys(entry) as unknown as SurfaceMapEntry;
131
- };
132
-
133
- const hikeToEntry = (r: Hike<unknown, unknown>): SurfaceMapEntry => {
134
- const base = trailToEntry(r as unknown as Trail<unknown, unknown>);
135
- const raw = r as unknown as Record<string, unknown>;
136
-
137
- const entry: Record<string, unknown> = {
138
- ...base,
139
- follows: r.follows.toSorted(),
140
- kind: 'hike',
141
- };
142
-
143
- // Re-check surfaces on the route itself
144
- if (Array.isArray(raw['surfaces'])) {
145
- entry['surfaces'] = (raw['surfaces'] as string[]).toSorted();
127
+ if (t.follow.length > 0) {
128
+ entry['follow'] = t.follow.toSorted();
146
129
  }
147
130
 
148
131
  return sortKeys(entry) as unknown as SurfaceMapEntry;
@@ -198,11 +181,6 @@ export const generateSurfaceMap = (topo: Topo): SurfaceMap => {
198
181
  entries.push(trailToEntry(t as Trail<unknown, unknown>));
199
182
  }
200
183
 
201
- // Collect all hikes
202
- for (const r of topo.hikes.values()) {
203
- entries.push(hikeToEntry(r as Hike<unknown, unknown>));
204
- }
205
-
206
184
  // Collect all events
207
185
  for (const e of topo.events.values()) {
208
186
  entries.push(eventToEntry(e as Event<unknown>));
package/src/types.ts CHANGED
@@ -15,16 +15,15 @@ export type JsonSchema = Readonly<Record<string, unknown>>;
15
15
 
16
16
  export interface SurfaceMapEntry {
17
17
  readonly id: string;
18
- readonly kind: 'trail' | 'hike' | 'event';
18
+ readonly kind: 'trail' | 'event';
19
19
  readonly surfaces: readonly string[];
20
20
  readonly input?: JsonSchema | undefined;
21
21
  readonly output?: JsonSchema | undefined;
22
- readonly readOnly?: boolean | undefined;
23
- readonly destructive?: boolean | undefined;
22
+ readonly intent?: 'read' | 'write' | 'destroy' | undefined;
24
23
  readonly idempotent?: boolean | undefined;
25
24
  readonly deprecated?: boolean | undefined;
26
25
  readonly replacedBy?: string | undefined;
27
- readonly follows?: readonly string[] | undefined;
26
+ readonly follow?: readonly string[] | undefined;
28
27
  readonly detours?: Readonly<Record<string, readonly string[]>> | undefined;
29
28
  readonly exampleCount: number;
30
29
  readonly description?: string | undefined;
@@ -42,7 +41,7 @@ export interface SurfaceMap {
42
41
 
43
42
  export interface DiffEntry {
44
43
  readonly id: string;
45
- readonly kind: 'trail' | 'hike' | 'event';
44
+ readonly kind: 'trail' | 'event';
46
45
  readonly change: 'added' | 'removed' | 'modified';
47
46
  readonly severity: 'info' | 'warning' | 'breaking';
48
47
  readonly details: readonly string[];