@ontrails/trails 1.0.0-beta.1 → 1.0.0-beta.11
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/.turbo/turbo-lint.log +1 -1
- package/CHANGELOG.md +154 -0
- package/bin/trails.ts +0 -0
- package/dist/src/clack.d.ts.map +1 -1
- package/dist/src/clack.js +22 -0
- package/dist/src/clack.js.map +1 -1
- package/dist/src/trails/add-surface.js +9 -9
- package/dist/src/trails/add-surface.js.map +1 -1
- package/dist/src/trails/add-trail.d.ts +1 -2
- package/dist/src/trails/add-trail.d.ts.map +1 -1
- package/dist/src/trails/add-trail.js +16 -24
- package/dist/src/trails/add-trail.js.map +1 -1
- package/dist/src/trails/add-verify.js +9 -9
- package/dist/src/trails/add-verify.js.map +1 -1
- package/dist/src/trails/create-scaffold.js +25 -25
- package/dist/src/trails/create-scaffold.js.map +1 -1
- package/dist/src/trails/create.d.ts +1 -1
- package/dist/src/trails/create.js +10 -10
- package/dist/src/trails/create.js.map +1 -1
- package/dist/src/trails/guide.js +12 -12
- package/dist/src/trails/guide.js.map +1 -1
- package/dist/src/trails/survey.d.ts +41 -2
- package/dist/src/trails/survey.d.ts.map +1 -1
- package/dist/src/trails/survey.js +141 -33
- package/dist/src/trails/survey.js.map +1 -1
- package/dist/src/trails/warden.d.ts +1 -1
- package/dist/src/trails/warden.js +28 -28
- package/dist/src/trails/warden.js.map +1 -1
- package/package.json +9 -9
- package/src/__tests__/create.test.ts +7 -7
- package/src/__tests__/guide.test.ts +4 -4
- package/src/__tests__/survey.test.ts +69 -14
- package/src/__tests__/warden.test.ts +2 -2
- package/src/clack.ts +22 -0
- package/src/trails/add-surface.ts +9 -9
- package/src/trails/add-trail.ts +16 -25
- package/src/trails/add-verify.ts +9 -9
- package/src/trails/create-scaffold.ts +27 -27
- package/src/trails/create.ts +10 -10
- package/src/trails/guide.ts +14 -14
- package/src/trails/survey.ts +232 -44
- package/src/trails/warden.ts +33 -33
package/.turbo/turbo-lint.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,159 @@
|
|
|
1
1
|
# trails
|
|
2
2
|
|
|
3
|
+
## 1.0.0-beta.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Add services as a first-class primitive.
|
|
8
|
+
|
|
9
|
+
Services make infrastructure dependencies declarative, injectable, and governable. Define a service with `service()`, declare it on a trail with `services: [db]`, and access it with `db.from(ctx)` or `ctx.service()`.
|
|
10
|
+
|
|
11
|
+
**Core:** `service()` factory, `ServiceSpec<T>`, `ServiceContext`, singleton resolution in `executeTrail`, in-flight creation dedup, `isService` guard, `findDuplicateServiceId`, topo service discovery and validation, `services` field on trail specs.
|
|
12
|
+
|
|
13
|
+
**Testing:** Auto-resolution of `mock` factories in `testAll`, `testExamples`, `testContracts`, and `testFollows`. Explicit `services` overrides with correct precedence (`explicit > ctx.extensions > auto-mock`). Service mock propagation through follow graphs.
|
|
14
|
+
|
|
15
|
+
**Warden:** `service-declarations` rule validates `db.from(ctx)` and `ctx.service()` usage matches declared `services: [...]`. `service-exists` rule validates declared service IDs resolve in project context. Scope-aware AST walking skips nested function boundaries.
|
|
16
|
+
|
|
17
|
+
**Surfaces:** Service overrides thread through `dispatch` and `blaze` on CLI, MCP, and HTTP.
|
|
18
|
+
|
|
19
|
+
**Introspection:** Survey and surface map outputs include service graph. Topo exposes `.services`, `.getService()`, `.hasService()`, `.listServices()`, `.serviceIds()`, `.serviceCount`.
|
|
20
|
+
|
|
21
|
+
**Docs:** ADR-009 accepted. Unified services guide, updated vocabulary, getting-started, architecture, and package READMEs.
|
|
22
|
+
|
|
23
|
+
- Updated dependencies
|
|
24
|
+
- @ontrails/core@1.0.0-beta.11
|
|
25
|
+
- @ontrails/warden@1.0.0-beta.11
|
|
26
|
+
- @ontrails/cli@1.0.0-beta.11
|
|
27
|
+
- @ontrails/schema@1.0.0-beta.11
|
|
28
|
+
- @ontrails/logging@1.0.0-beta.11
|
|
29
|
+
|
|
30
|
+
## 1.0.0-beta.10
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- Updated dependencies
|
|
35
|
+
- @ontrails/core@1.0.0-beta.10
|
|
36
|
+
- @ontrails/cli@1.0.0-beta.10
|
|
37
|
+
- @ontrails/warden@1.0.0-beta.10
|
|
38
|
+
- @ontrails/logging@1.0.0-beta.10
|
|
39
|
+
- @ontrails/schema@1.0.0-beta.10
|
|
40
|
+
|
|
41
|
+
## 1.0.0-beta.9
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- Updated dependencies
|
|
46
|
+
- @ontrails/core@1.0.0-beta.9
|
|
47
|
+
- @ontrails/cli@1.0.0-beta.9
|
|
48
|
+
- @ontrails/schema@1.0.0-beta.9
|
|
49
|
+
- @ontrails/warden@1.0.0-beta.9
|
|
50
|
+
- @ontrails/logging@1.0.0-beta.9
|
|
51
|
+
|
|
52
|
+
## 1.0.0-beta.8
|
|
53
|
+
|
|
54
|
+
### Patch Changes
|
|
55
|
+
|
|
56
|
+
- Updated dependencies
|
|
57
|
+
- @ontrails/schema@1.0.0-beta.8
|
|
58
|
+
- @ontrails/cli@1.0.0-beta.8
|
|
59
|
+
- @ontrails/core@1.0.0-beta.8
|
|
60
|
+
- @ontrails/logging@1.0.0-beta.8
|
|
61
|
+
- @ontrails/warden@1.0.0-beta.8
|
|
62
|
+
|
|
63
|
+
## 1.0.0-beta.7
|
|
64
|
+
|
|
65
|
+
### Minor Changes
|
|
66
|
+
|
|
67
|
+
- HTTP surface and OpenAPI generation.
|
|
68
|
+
|
|
69
|
+
**http**: New `@ontrails/http` package — Hono-based HTTP adapter. `blaze()` 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.
|
|
70
|
+
|
|
71
|
+
**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.
|
|
72
|
+
|
|
73
|
+
**trails**: `trails survey --openapi` outputs the OpenAPI spec for any Trails app.
|
|
74
|
+
|
|
75
|
+
### Patch Changes
|
|
76
|
+
|
|
77
|
+
- Updated dependencies
|
|
78
|
+
- @ontrails/schema@1.0.0-beta.7
|
|
79
|
+
- @ontrails/warden@1.0.0-beta.7
|
|
80
|
+
- @ontrails/cli@1.0.0-beta.7
|
|
81
|
+
- @ontrails/core@1.0.0-beta.7
|
|
82
|
+
- @ontrails/logging@1.0.0-beta.7
|
|
83
|
+
|
|
84
|
+
## 1.0.0-beta.6
|
|
85
|
+
|
|
86
|
+
### Patch Changes
|
|
87
|
+
|
|
88
|
+
- Updated dependencies
|
|
89
|
+
- @ontrails/core@1.0.0-beta.6
|
|
90
|
+
- @ontrails/warden@1.0.0-beta.6
|
|
91
|
+
- @ontrails/cli@1.0.0-beta.6
|
|
92
|
+
- @ontrails/logging@1.0.0-beta.6
|
|
93
|
+
- @ontrails/schema@1.0.0-beta.6
|
|
94
|
+
|
|
95
|
+
## 1.0.0-beta.5
|
|
96
|
+
|
|
97
|
+
### Patch Changes
|
|
98
|
+
|
|
99
|
+
- Updated dependencies
|
|
100
|
+
- @ontrails/core@1.0.0-beta.5
|
|
101
|
+
- @ontrails/warden@1.0.0-beta.5
|
|
102
|
+
- @ontrails/logging@1.0.0-beta.5
|
|
103
|
+
- @ontrails/schema@1.0.0-beta.5
|
|
104
|
+
- @ontrails/cli@1.0.0-beta.5
|
|
105
|
+
|
|
106
|
+
## 1.0.0-beta.4
|
|
107
|
+
|
|
108
|
+
### Major Changes
|
|
109
|
+
|
|
110
|
+
- API simplification: unified trail model, intent enum, run, metadata.
|
|
111
|
+
|
|
112
|
+
**BREAKING CHANGES:**
|
|
113
|
+
|
|
114
|
+
- `hike()` removed — use `trail()` with optional `follow: [...]` field
|
|
115
|
+
- `follows` renamed to `follow` (singular, matching `ctx.follow()`)
|
|
116
|
+
- `topo.hikes` removed — single `topo.trails` map
|
|
117
|
+
- `kind: 'hike'` removed — everything is `kind: 'trail'`
|
|
118
|
+
- `readOnly`/`destructive` booleans replaced by `intent: 'read' | 'write' | 'destroy'`
|
|
119
|
+
- `implementation` field renamed to `run`
|
|
120
|
+
- `markers` field renamed to `metadata`
|
|
121
|
+
- `testHike` renamed to `testFollows`, `HikeScenario` to `FollowScenario`
|
|
122
|
+
- `blaze()` now returns the surface handle (`Command` for CLI, `Server` for MCP)
|
|
123
|
+
|
|
124
|
+
### Patch Changes
|
|
125
|
+
|
|
126
|
+
- Updated dependencies
|
|
127
|
+
- @ontrails/core@1.0.0-beta.4
|
|
128
|
+
- @ontrails/cli@1.0.0-beta.4
|
|
129
|
+
- @ontrails/warden@1.0.0-beta.4
|
|
130
|
+
- @ontrails/schema@1.0.0-beta.4
|
|
131
|
+
- @ontrails/logging@1.0.0-beta.4
|
|
132
|
+
|
|
133
|
+
## 1.0.0-beta.3
|
|
134
|
+
|
|
135
|
+
### Patch Changes
|
|
136
|
+
|
|
137
|
+
- Updated dependencies
|
|
138
|
+
- @ontrails/core@1.0.0-beta.3
|
|
139
|
+
- @ontrails/cli@1.0.0-beta.3
|
|
140
|
+
- @ontrails/warden@1.0.0-beta.3
|
|
141
|
+
- @ontrails/logging@1.0.0-beta.3
|
|
142
|
+
- @ontrails/schema@1.0.0-beta.3
|
|
143
|
+
|
|
144
|
+
## 1.0.0-beta.2
|
|
145
|
+
|
|
146
|
+
### Patch Changes
|
|
147
|
+
|
|
148
|
+
- Fix workspace dependency resolution in published packages. Now using bun publish
|
|
149
|
+
which correctly replaces workspace:^ with actual version numbers.
|
|
150
|
+
- Updated dependencies
|
|
151
|
+
- @ontrails/core@1.0.0-beta.2
|
|
152
|
+
- @ontrails/cli@1.0.0-beta.2
|
|
153
|
+
- @ontrails/logging@1.0.0-beta.2
|
|
154
|
+
- @ontrails/warden@1.0.0-beta.2
|
|
155
|
+
- @ontrails/schema@1.0.0-beta.2
|
|
156
|
+
|
|
3
157
|
## 1.0.0-beta.1
|
|
4
158
|
|
|
5
159
|
### Patch Changes
|
package/bin/trails.ts
CHANGED
|
File without changes
|
package/dist/src/clack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clack.d.ts","sourceRoot":"","sources":["../../src/clack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAuB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"clack.d.ts","sourceRoot":"","sources":["../../src/clack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAuB,MAAM,eAAe,CAAC;AAmF/E,mEAAmE;AACnE,eAAO,MAAM,qBAAqB,EAAE,aAoBnC,CAAC"}
|
package/dist/src/clack.js
CHANGED
|
@@ -35,7 +35,29 @@ const fieldResolvers = {
|
|
|
35
35
|
const raw = await clack.text({ message: field.label });
|
|
36
36
|
return clack.isCancel(raw) ? undefined : Number(raw);
|
|
37
37
|
},
|
|
38
|
+
'number[]': async (field) => {
|
|
39
|
+
const raw = await clack.text({
|
|
40
|
+
message: `${field.label} (comma-separated numbers)`,
|
|
41
|
+
});
|
|
42
|
+
if (clack.isCancel(raw)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
return String(raw)
|
|
46
|
+
.split(',')
|
|
47
|
+
.map((s) => Number(s.trim()));
|
|
48
|
+
},
|
|
38
49
|
string: async (field) => cancelable(await clack.text({ message: field.label })),
|
|
50
|
+
'string[]': async (field) => {
|
|
51
|
+
const raw = await clack.text({
|
|
52
|
+
message: `${field.label} (comma-separated)`,
|
|
53
|
+
});
|
|
54
|
+
if (clack.isCancel(raw)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
return String(raw)
|
|
58
|
+
.split(',')
|
|
59
|
+
.map((s) => s.trim());
|
|
60
|
+
},
|
|
39
61
|
};
|
|
40
62
|
/** Resolve a single field value with Clack. */
|
|
41
63
|
const resolveField = (field) => {
|
package/dist/src/clack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clack.js","sourceRoot":"","sources":["../../src/clack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAExC,+CAA+C;AAC/C,MAAM,UAAU,GAAG,CAAC,KAAY,EAAE,OAAgC,EAAW,EAAE,CAC7E,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS;IACjC,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;AAE9B,8CAA8C;AAC9C,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,EAAE,CACtC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3D,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;IACnC,KAAK,EAAE,MAAM,CAAC,KAAK;CACpB,CAAC,CAAC,IAAI,EAAE,CAAC;AAEZ,kDAAkD;AAClD,MAAM,UAAU,GAAG,KAAK,EAAK,KAAiB,EAA0B,EAAE,CACxE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAIpD,MAAM,cAAc,GAAyC;IAC3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CACvB,UAAU,CACR,MAAM,KAAK,CAAC,OAAO,CAAC;QAClB,YAAY,EAAG,KAAK,CAAC,OAA+B,IAAI,KAAK;QAC7D,OAAO,EAAE,KAAK,CAAC,KAAK;KACrB,CAAC,CACH;IACH,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CACpB,UAAU,CACR,MAAM,KAAK,CAAC,MAAM,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC,KAAK;QACpB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC;KAC/B,CAAC,CACH;IACH,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAC3B,UAAU,CACR,MAAM,KAAK,CAAC,WAAW,CAAC;QACtB,aAAa,EAAG,KAAK,CAAC,OAAgC,IAAI,EAAE;QAC5D,OAAO,EAAE,KAAK,CAAC,KAAK;QACpB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC;KAC/B,CAAC,CACH;IACH,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CACtB,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"clack.js","sourceRoot":"","sources":["../../src/clack.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,7 +64,15 @@ const writeSurfaceEntry = async (cwd, surface) => {
|
|
|
64
64
|
};
|
|
65
65
|
export const addSurface = trail('add.surface', {
|
|
66
66
|
description: 'Add a surface to an existing project',
|
|
67
|
-
|
|
67
|
+
input: z.object({
|
|
68
|
+
dir: z.string().optional().describe('Project directory'),
|
|
69
|
+
surface: z.enum(['cli', 'mcp']).describe('Surface to add'),
|
|
70
|
+
}),
|
|
71
|
+
output: z.object({
|
|
72
|
+
created: z.string(),
|
|
73
|
+
dependency: z.string(),
|
|
74
|
+
}),
|
|
75
|
+
run: async (input) => {
|
|
68
76
|
const cwd = resolve(input.dir ?? '.');
|
|
69
77
|
const { surface } = input;
|
|
70
78
|
const entryFile = getEntryFile(surface);
|
|
@@ -76,13 +84,5 @@ export const addSurface = trail('add.surface', {
|
|
|
76
84
|
dependency: await updatePkgJsonForSurface(cwd, surface),
|
|
77
85
|
});
|
|
78
86
|
},
|
|
79
|
-
input: z.object({
|
|
80
|
-
dir: z.string().optional().describe('Project directory'),
|
|
81
|
-
surface: z.enum(['cli', 'mcp']).describe('Surface to add'),
|
|
82
|
-
}),
|
|
83
|
-
output: z.object({
|
|
84
|
-
created: z.string(),
|
|
85
|
-
dependency: z.string(),
|
|
86
|
-
}),
|
|
87
87
|
});
|
|
88
88
|
//# sourceMappingURL=add-surface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-surface.js","sourceRoot":"","sources":["../../../src/trails/add-surface.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"add-surface.js","sourceRoot":"","sources":["../../../src/trails/add-surface.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* `add.trail` trail -- Scaffold a new trail file with tests.
|
|
3
3
|
*/
|
|
4
4
|
export declare const addTrail: import("@ontrails/core").Trail<{
|
|
5
|
-
destructive: boolean;
|
|
6
5
|
id: string;
|
|
7
|
-
|
|
6
|
+
intent: "read" | "write" | "destroy";
|
|
8
7
|
}, {
|
|
9
8
|
created: string[];
|
|
10
9
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-trail.d.ts","sourceRoot":"","sources":["../../../src/trails/add-trail.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"add-trail.d.ts","sourceRoot":"","sources":["../../../src/trails/add-trail.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+DH,eAAO,MAAM,QAAQ;;;;;EA4BnB,CAAC"}
|
|
@@ -8,15 +8,8 @@ import { z } from 'zod';
|
|
|
8
8
|
// ---------------------------------------------------------------------------
|
|
9
9
|
// Helpers
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
11
|
-
const generateTrailFile = (id,
|
|
12
|
-
const
|
|
13
|
-
if (readOnly) {
|
|
14
|
-
markers.push(' readOnly: true,');
|
|
15
|
-
}
|
|
16
|
-
if (destructive) {
|
|
17
|
-
markers.push(' destructive: true,');
|
|
18
|
-
}
|
|
19
|
-
const markerBlock = markers.length > 0 ? `\n${markers.join('\n')}` : '';
|
|
11
|
+
const generateTrailFile = (id, intent) => {
|
|
12
|
+
const intentLine = intent === 'write' ? '' : `\n intent: '${intent}',`;
|
|
20
13
|
return `import { Result, trail } from '@ontrails/core';
|
|
21
14
|
import { z } from 'zod';
|
|
22
15
|
|
|
@@ -28,10 +21,10 @@ export const ${id.replaceAll('.', '_')} = trail('${id}', {
|
|
|
28
21
|
name: 'TODO: add example',
|
|
29
22
|
},
|
|
30
23
|
],
|
|
31
|
-
|
|
24
|
+
run: async (input) => {
|
|
32
25
|
return Result.ok({ message: 'TODO' });
|
|
33
26
|
},
|
|
34
|
-
input: z.object({}),${
|
|
27
|
+
input: z.object({}),${intentLine}
|
|
35
28
|
output: z.object({ message: z.string() }),
|
|
36
29
|
});
|
|
37
30
|
`;
|
|
@@ -57,15 +50,22 @@ const writeWithDirs = async (filePath, content) => {
|
|
|
57
50
|
};
|
|
58
51
|
export const addTrail = trail('add.trail', {
|
|
59
52
|
description: 'Scaffold a new trail with tests and examples',
|
|
60
|
-
|
|
53
|
+
input: z.object({
|
|
54
|
+
id: z.string().describe('Trail ID (e.g., entity.update)'),
|
|
55
|
+
intent: z
|
|
56
|
+
.enum(['read', 'write', 'destroy'])
|
|
57
|
+
.default('write')
|
|
58
|
+
.describe('Trail intent'),
|
|
59
|
+
}),
|
|
60
|
+
output: z.object({
|
|
61
|
+
created: z.array(z.string()),
|
|
62
|
+
}),
|
|
63
|
+
run: async (input, ctx) => {
|
|
61
64
|
const { id } = input;
|
|
62
65
|
const moduleName = id.replaceAll('.', '-');
|
|
63
66
|
const cwd = resolve(ctx.cwd ?? '.');
|
|
64
67
|
const files = new Map([
|
|
65
|
-
[
|
|
66
|
-
`src/trails/${moduleName}.ts`,
|
|
67
|
-
generateTrailFile(id, input.readOnly, input.destructive),
|
|
68
|
-
],
|
|
68
|
+
[`src/trails/${moduleName}.ts`, generateTrailFile(id, input.intent)],
|
|
69
69
|
[`__tests__/${moduleName}.test.ts`, generateTestFile(id)],
|
|
70
70
|
]);
|
|
71
71
|
for (const [relativePath, content] of files) {
|
|
@@ -73,13 +73,5 @@ export const addTrail = trail('add.trail', {
|
|
|
73
73
|
}
|
|
74
74
|
return Result.ok({ created: [...files.keys()] });
|
|
75
75
|
},
|
|
76
|
-
input: z.object({
|
|
77
|
-
destructive: z.boolean().default(false).describe('Destructive trail'),
|
|
78
|
-
id: z.string().describe('Trail ID (e.g., entity.update)'),
|
|
79
|
-
readOnly: z.boolean().default(false).describe('Read-only trail'),
|
|
80
|
-
}),
|
|
81
|
-
output: z.object({
|
|
82
|
-
created: z.array(z.string()),
|
|
83
|
-
}),
|
|
84
76
|
});
|
|
85
77
|
//# sourceMappingURL=add-trail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-trail.js","sourceRoot":"","sources":["../../../src/trails/add-trail.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG,CACxB,EAAU,EACV,
|
|
1
|
+
{"version":3,"file":"add-trail.js","sourceRoot":"","sources":["../../../src/trails/add-trail.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,15 @@ const updatePackageJsonForVerify = async (projectDir) => {
|
|
|
41
41
|
// ---------------------------------------------------------------------------
|
|
42
42
|
export const addVerify = trail('add.verify', {
|
|
43
43
|
description: 'Add testing and warden verification',
|
|
44
|
-
|
|
44
|
+
input: z.object({
|
|
45
|
+
dir: z.string().optional().describe('Parent directory'),
|
|
46
|
+
name: z.string().describe('Project name'),
|
|
47
|
+
}),
|
|
48
|
+
metadata: { internal: true },
|
|
49
|
+
output: z.object({
|
|
50
|
+
created: z.array(z.string()),
|
|
51
|
+
}),
|
|
52
|
+
run: async (input) => {
|
|
45
53
|
const projectDir = resolve(input.dir ?? '.', input.name);
|
|
46
54
|
const files = [];
|
|
47
55
|
const writeFile = async (relativePath, content) => {
|
|
@@ -55,13 +63,5 @@ export const addVerify = trail('add.verify', {
|
|
|
55
63
|
await updatePackageJsonForVerify(projectDir);
|
|
56
64
|
return Result.ok({ created: files });
|
|
57
65
|
},
|
|
58
|
-
input: z.object({
|
|
59
|
-
dir: z.string().optional().describe('Parent directory'),
|
|
60
|
-
name: z.string().describe('Project name'),
|
|
61
|
-
}),
|
|
62
|
-
markers: { internal: true },
|
|
63
|
-
output: z.object({
|
|
64
|
-
created: z.array(z.string()),
|
|
65
|
-
}),
|
|
66
66
|
});
|
|
67
67
|
//# sourceMappingURL=add-verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-verify.js","sourceRoot":"","sources":["../../../src/trails/add-verify.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,GAAW,EAAE,CACpC;;;;CAID,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAW,EAAE,CACvC;;;;CAID,CAAC;AAEF,2EAA2E;AAC3E,MAAM,eAAe,GAAG,CAAC,GAA4B,EAAQ,EAAE;IAC7D,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAA2B,CAAC;IACzE,OAAO,CAAC,mBAAmB,CAAC,GAAG,aAAa,CAAC;IAC7C,OAAO,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;IAC/B,GAAG,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,WAAW,CACzC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,0BAA0B,GAAG,KAAK,EACtC,UAAkB,EACH,EAAE;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAA4B,CAAC;IACxE,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE;IAC3C,WAAW,EAAE,qCAAqC;IAClD,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"add-verify.js","sourceRoot":"","sources":["../../../src/trails/add-verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,7 +73,7 @@ export const hello = trail('hello', {
|
|
|
73
73
|
name: 'Named greeting',
|
|
74
74
|
},
|
|
75
75
|
],
|
|
76
|
-
|
|
76
|
+
run: (input) => {
|
|
77
77
|
const name = input.name ?? 'world';
|
|
78
78
|
return Result.ok({ message: \`Hello, \${name}!\` });
|
|
79
79
|
},
|
|
@@ -83,7 +83,7 @@ export const hello = trail('hello', {
|
|
|
83
83
|
output: z.object({
|
|
84
84
|
message: z.string(),
|
|
85
85
|
}),
|
|
86
|
-
|
|
86
|
+
intent: 'read',
|
|
87
87
|
});
|
|
88
88
|
`;
|
|
89
89
|
const generateEntityTrails = () => `import { Result, trail } from '@ontrails/core';
|
|
@@ -103,12 +103,12 @@ export const show = trail('entity.show', {
|
|
|
103
103
|
name: 'Show entity',
|
|
104
104
|
},
|
|
105
105
|
],
|
|
106
|
-
|
|
106
|
+
run: (input) => {
|
|
107
107
|
return Result.ok({ id: input.id, name: 'Example' });
|
|
108
108
|
},
|
|
109
109
|
input: z.object({ id: z.string() }),
|
|
110
110
|
output: entitySchema,
|
|
111
|
-
|
|
111
|
+
intent: 'read',
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
export const add = trail('entity.add', {
|
|
@@ -120,7 +120,7 @@ export const add = trail('entity.add', {
|
|
|
120
120
|
name: 'Add entity',
|
|
121
121
|
},
|
|
122
122
|
],
|
|
123
|
-
|
|
123
|
+
run: (input) => {
|
|
124
124
|
return Result.ok({ id: '1', name: input.name });
|
|
125
125
|
},
|
|
126
126
|
input: z.object({ name: z.string() }),
|
|
@@ -139,23 +139,23 @@ export const search = trail('search', {
|
|
|
139
139
|
name: 'Search entities',
|
|
140
140
|
},
|
|
141
141
|
],
|
|
142
|
-
|
|
142
|
+
run: () => {
|
|
143
143
|
return Result.ok({ results: [] });
|
|
144
144
|
},
|
|
145
145
|
input: z.object({ query: z.string() }),
|
|
146
146
|
output: z.object({
|
|
147
147
|
results: z.array(z.object({ id: z.string(), name: z.string() })),
|
|
148
148
|
}),
|
|
149
|
-
|
|
149
|
+
intent: 'read',
|
|
150
150
|
});
|
|
151
151
|
`;
|
|
152
|
-
const
|
|
152
|
+
const generateOnboardTrail = () => `import { Result, trail } from '@ontrails/core';
|
|
153
153
|
import { z } from 'zod';
|
|
154
154
|
|
|
155
|
-
export const onboard =
|
|
155
|
+
export const onboard = trail('entity.onboard', {
|
|
156
156
|
description: 'Onboard a new entity end-to-end',
|
|
157
|
-
|
|
158
|
-
|
|
157
|
+
follow: ['entity.add'],
|
|
158
|
+
run: async (input, ctx) => {
|
|
159
159
|
const result = await ctx.follow('entity.add', { name: input.name });
|
|
160
160
|
if (result.isErr()) {
|
|
161
161
|
return result;
|
|
@@ -228,7 +228,7 @@ const starterFileGenerators = {
|
|
|
228
228
|
entity: () => [
|
|
229
229
|
['src/trails/entity.ts', generateEntityTrails()],
|
|
230
230
|
['src/trails/search.ts', generateSearchTrail()],
|
|
231
|
-
['src/trails/onboard.ts',
|
|
231
|
+
['src/trails/onboard.ts', generateOnboardTrail()],
|
|
232
232
|
['src/events/entity-events.ts', generateEntityEvents()],
|
|
233
233
|
['src/store.ts', generateStore()],
|
|
234
234
|
],
|
|
@@ -258,18 +258,6 @@ const writeScaffoldFiles = async (projectDir, fileMap) => {
|
|
|
258
258
|
// ---------------------------------------------------------------------------
|
|
259
259
|
export const createScaffold = trail('create.scaffold', {
|
|
260
260
|
description: 'Scaffold a new Trails project',
|
|
261
|
-
implementation: async (input) => {
|
|
262
|
-
const projectDir = resolve(input.dir ?? '.', input.name);
|
|
263
|
-
const starter = (input.starter ?? 'hello');
|
|
264
|
-
const fileMap = collectScaffoldFiles(input.name, starter);
|
|
265
|
-
const files = await writeScaffoldFiles(projectDir, fileMap);
|
|
266
|
-
mkdirSync(join(projectDir, '.trails'), { recursive: true });
|
|
267
|
-
return Result.ok({
|
|
268
|
-
created: files,
|
|
269
|
-
dir: projectDir,
|
|
270
|
-
name: input.name,
|
|
271
|
-
});
|
|
272
|
-
},
|
|
273
261
|
input: z.object({
|
|
274
262
|
dir: z.string().optional().describe('Parent directory'),
|
|
275
263
|
name: z.string().describe('Project name'),
|
|
@@ -278,11 +266,23 @@ export const createScaffold = trail('create.scaffold', {
|
|
|
278
266
|
.default('hello')
|
|
279
267
|
.describe('Starter trail'),
|
|
280
268
|
}),
|
|
281
|
-
|
|
269
|
+
metadata: { internal: true },
|
|
282
270
|
output: z.object({
|
|
283
271
|
created: z.array(z.string()),
|
|
284
272
|
dir: z.string(),
|
|
285
273
|
name: z.string(),
|
|
286
274
|
}),
|
|
275
|
+
run: async (input) => {
|
|
276
|
+
const projectDir = resolve(input.dir ?? '.', input.name);
|
|
277
|
+
const starter = (input.starter ?? 'hello');
|
|
278
|
+
const fileMap = collectScaffoldFiles(input.name, starter);
|
|
279
|
+
const files = await writeScaffoldFiles(projectDir, fileMap);
|
|
280
|
+
mkdirSync(join(projectDir, '.trails'), { recursive: true });
|
|
281
|
+
return Result.ok({
|
|
282
|
+
created: files,
|
|
283
|
+
dir: projectDir,
|
|
284
|
+
name: input.name,
|
|
285
|
+
});
|
|
286
|
+
},
|
|
287
287
|
});
|
|
288
288
|
//# sourceMappingURL=create-scaffold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-scaffold.js","sourceRoot":"","sources":["../../../src/trails/create-scaffold.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAU,EAAE;IACnD,MAAM,IAAI,GAA2B;QACnC,gBAAgB,EAAE,aAAa;QAC/B,GAAG,EAAE,QAAQ;KACd,CAAC;IAEF,MAAM,GAAG,GAA4B;QACnC,YAAY,EAAE,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAChE;QACD,IAAI;QACJ,OAAO,EAAE;YACP,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,cAAc;SAC1B;QACD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;KACjB,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CACrC;IACE,eAAe,EAAE;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,QAAQ;QAChB,gBAAgB,EAAE,SAAS;QAC3B,wBAAwB,EAAE,IAAI;QAC9B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,QAAQ;QAChB,oBAAoB,EAAE,IAAI;KAC3B;IACD,OAAO,EAAE,CAAC,KAAK,CAAC;CACjB,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;CAIzB,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CACrC;IACE,OAAO,EAAE,CAAC,WAAW,CAAC;CACvB,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AAEF,MAAM,eAAe,GAAG;;;CAGvB,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAW,EAAE,CACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BD,CAAC;AAEF,MAAM,oBAAoB,GAAG,GAAW,EAAE,CACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCD,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAW,EAAE,CACvC;;;;;;;;;;;;;;;;;;;;;CAqBD,CAAC;AAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"create-scaffold.js","sourceRoot":"","sources":["../../../src/trails/create-scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ interface BlazeInput {
|
|
|
13
13
|
readonly surfaces: readonly Surface[];
|
|
14
14
|
readonly verify: boolean;
|
|
15
15
|
}
|
|
16
|
-
export declare const createRoute: import("@ontrails/core").
|
|
16
|
+
export declare const createRoute: import("@ontrails/core").Trail<BlazeInput, {
|
|
17
17
|
created: string[];
|
|
18
18
|
dir: string;
|
|
19
19
|
name: string;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Composes create.scaffold, add.surface, and add.verify sub-trails
|
|
5
5
|
* via ctx.follow().
|
|
6
6
|
*/
|
|
7
|
-
import { Result,
|
|
7
|
+
import { Result, trail } from '@ontrails/core';
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
const buildScaffoldInput = (input) => ({
|
|
10
10
|
...(input.dir === undefined ? {} : { dir: input.dir }),
|
|
@@ -63,7 +63,7 @@ const runCreate = async (follow, input) => {
|
|
|
63
63
|
// ---------------------------------------------------------------------------
|
|
64
64
|
// Route definition
|
|
65
65
|
// ---------------------------------------------------------------------------
|
|
66
|
-
export const createRoute =
|
|
66
|
+
export const createRoute = trail('create', {
|
|
67
67
|
description: 'Create a new Trails project',
|
|
68
68
|
fields: {
|
|
69
69
|
starter: {
|
|
@@ -74,7 +74,7 @@ export const createRoute = hike('create', {
|
|
|
74
74
|
value: 'hello',
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
|
-
hint: '4 trails,
|
|
77
|
+
hint: '4 trails, event, store',
|
|
78
78
|
label: 'Entity CRUD',
|
|
79
79
|
value: 'entity',
|
|
80
80
|
},
|
|
@@ -92,13 +92,7 @@ export const createRoute = hike('create', {
|
|
|
92
92
|
],
|
|
93
93
|
},
|
|
94
94
|
},
|
|
95
|
-
|
|
96
|
-
implementation: async (input, ctx) => {
|
|
97
|
-
if (!ctx.follow) {
|
|
98
|
-
return Result.err(new Error('create route requires ctx.follow'));
|
|
99
|
-
}
|
|
100
|
-
return await runCreate(ctx.follow, input);
|
|
101
|
-
},
|
|
95
|
+
follow: ['create.scaffold', 'add.surface', 'add.verify'],
|
|
102
96
|
input: z.object({
|
|
103
97
|
dir: z.string().optional().describe('Parent directory'),
|
|
104
98
|
name: z.string().describe('Project name'),
|
|
@@ -117,5 +111,11 @@ export const createRoute = hike('create', {
|
|
|
117
111
|
dir: z.string(),
|
|
118
112
|
name: z.string(),
|
|
119
113
|
}),
|
|
114
|
+
run: async (input, ctx) => {
|
|
115
|
+
if (!ctx.follow) {
|
|
116
|
+
return Result.err(new Error('create route requires ctx.follow'));
|
|
117
|
+
}
|
|
118
|
+
return await runCreate(ctx.follow, input);
|
|
119
|
+
},
|
|
120
120
|
});
|
|
121
121
|
//# sourceMappingURL=create.js.map
|