@ontrails/trails 1.0.0-beta.15 → 1.0.0-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/CHANGELOG.md +197 -2
  2. package/README.md +27 -0
  3. package/package.json +19 -8
  4. package/src/app.ts +15 -5
  5. package/src/cli.ts +303 -10
  6. package/src/completions.ts +240 -0
  7. package/src/load-app-mirror.ts +160 -0
  8. package/src/local-state-io.ts +153 -0
  9. package/src/project-writes.ts +320 -0
  10. package/src/run-collision.ts +125 -0
  11. package/src/run-completions-install.ts +179 -0
  12. package/src/run-example.ts +149 -0
  13. package/src/run-examples.ts +148 -0
  14. package/src/run-quiet.ts +75 -0
  15. package/src/run-trace.ts +273 -0
  16. package/src/run-warden.ts +39 -0
  17. package/src/run-watch.ts +432 -0
  18. package/src/scaffold-versions.generated.ts +12 -0
  19. package/src/trails/add-surface.ts +45 -23
  20. package/src/trails/add-trail.ts +27 -17
  21. package/src/trails/add-verify.ts +57 -17
  22. package/src/trails/completions-complete.ts +165 -0
  23. package/src/trails/completions.ts +47 -0
  24. package/src/trails/create-scaffold.ts +86 -33
  25. package/src/trails/create.ts +11 -3
  26. package/src/trails/dev-clean.ts +6 -1
  27. package/src/trails/dev-reset.ts +6 -1
  28. package/src/trails/dev-stats.ts +6 -1
  29. package/src/trails/dev-support.ts +29 -17
  30. package/src/trails/draft-promote.ts +289 -80
  31. package/src/trails/guide.ts +54 -34
  32. package/src/trails/load-app.ts +251 -56
  33. package/src/trails/root-dir.ts +21 -0
  34. package/src/trails/run-example.ts +482 -0
  35. package/src/trails/run-examples.ts +141 -0
  36. package/src/trails/run.ts +403 -0
  37. package/src/trails/survey.ts +506 -200
  38. package/src/trails/topo-activation.ts +385 -0
  39. package/src/trails/topo-compile.ts +55 -0
  40. package/src/trails/topo-history.ts +6 -1
  41. package/src/trails/topo-output-schemas.ts +175 -0
  42. package/src/trails/topo-pin.ts +19 -6
  43. package/src/trails/topo-read-support.ts +171 -228
  44. package/src/trails/topo-reports.ts +400 -25
  45. package/src/trails/topo-store-support.ts +43 -19
  46. package/src/trails/topo-support.ts +18 -28
  47. package/src/trails/topo-unpin.ts +6 -1
  48. package/src/trails/topo-verify.ts +18 -5
  49. package/src/trails/topo.ts +60 -23
  50. package/src/trails/warden-guide.ts +121 -0
  51. package/src/trails/warden.ts +137 -56
  52. package/src/versions.ts +3 -18
  53. package/.turbo/turbo-build.log +0 -1
  54. package/.turbo/turbo-lint.log +0 -3
  55. package/.turbo/turbo-typecheck.log +0 -1
  56. package/__tests__/examples.test.ts +0 -45
  57. package/dist/bin/trails.d.ts +0 -3
  58. package/dist/bin/trails.d.ts.map +0 -1
  59. package/dist/bin/trails.js +0 -4
  60. package/dist/bin/trails.js.map +0 -1
  61. package/dist/src/app.d.ts +0 -2
  62. package/dist/src/app.d.ts.map +0 -1
  63. package/dist/src/app.js +0 -22
  64. package/dist/src/app.js.map +0 -1
  65. package/dist/src/clack.d.ts +0 -9
  66. package/dist/src/clack.d.ts.map +0 -1
  67. package/dist/src/clack.js +0 -84
  68. package/dist/src/clack.js.map +0 -1
  69. package/dist/src/cli.d.ts +0 -2
  70. package/dist/src/cli.d.ts.map +0 -1
  71. package/dist/src/cli.js +0 -14
  72. package/dist/src/cli.js.map +0 -1
  73. package/dist/src/trails/add-surface.d.ts +0 -13
  74. package/dist/src/trails/add-surface.d.ts.map +0 -1
  75. package/dist/src/trails/add-surface.js +0 -110
  76. package/dist/src/trails/add-surface.js.map +0 -1
  77. package/dist/src/trails/add-trail.d.ts +0 -12
  78. package/dist/src/trails/add-trail.d.ts.map +0 -1
  79. package/dist/src/trails/add-trail.js +0 -104
  80. package/dist/src/trails/add-trail.js.map +0 -1
  81. package/dist/src/trails/add-trailhead.d.ts +0 -13
  82. package/dist/src/trails/add-trailhead.d.ts.map +0 -1
  83. package/dist/src/trails/add-trailhead.js +0 -88
  84. package/dist/src/trails/add-trailhead.js.map +0 -1
  85. package/dist/src/trails/add-verify.d.ts +0 -10
  86. package/dist/src/trails/add-verify.d.ts.map +0 -1
  87. package/dist/src/trails/add-verify.js +0 -68
  88. package/dist/src/trails/add-verify.js.map +0 -1
  89. package/dist/src/trails/create-scaffold.d.ts +0 -15
  90. package/dist/src/trails/create-scaffold.d.ts.map +0 -1
  91. package/dist/src/trails/create-scaffold.js +0 -295
  92. package/dist/src/trails/create-scaffold.js.map +0 -1
  93. package/dist/src/trails/create.d.ts +0 -18
  94. package/dist/src/trails/create.d.ts.map +0 -1
  95. package/dist/src/trails/create.js +0 -126
  96. package/dist/src/trails/create.js.map +0 -1
  97. package/dist/src/trails/dev-clean.d.ts +0 -9
  98. package/dist/src/trails/dev-clean.d.ts.map +0 -1
  99. package/dist/src/trails/dev-clean.js +0 -66
  100. package/dist/src/trails/dev-clean.js.map +0 -1
  101. package/dist/src/trails/dev-reset.d.ts +0 -6
  102. package/dist/src/trails/dev-reset.d.ts.map +0 -1
  103. package/dist/src/trails/dev-reset.js +0 -39
  104. package/dist/src/trails/dev-reset.js.map +0 -1
  105. package/dist/src/trails/dev-stats.d.ts +0 -7
  106. package/dist/src/trails/dev-stats.d.ts.map +0 -1
  107. package/dist/src/trails/dev-stats.js +0 -61
  108. package/dist/src/trails/dev-stats.js.map +0 -1
  109. package/dist/src/trails/dev-support.d.ts +0 -64
  110. package/dist/src/trails/dev-support.d.ts.map +0 -1
  111. package/dist/src/trails/dev-support.js +0 -181
  112. package/dist/src/trails/dev-support.js.map +0 -1
  113. package/dist/src/trails/draft-promote.d.ts +0 -18
  114. package/dist/src/trails/draft-promote.d.ts.map +0 -1
  115. package/dist/src/trails/draft-promote.js +0 -400
  116. package/dist/src/trails/draft-promote.js.map +0 -1
  117. package/dist/src/trails/guide.d.ts +0 -21
  118. package/dist/src/trails/guide.d.ts.map +0 -1
  119. package/dist/src/trails/guide.js +0 -61
  120. package/dist/src/trails/guide.js.map +0 -1
  121. package/dist/src/trails/load-app.d.ts +0 -12
  122. package/dist/src/trails/load-app.d.ts.map +0 -1
  123. package/dist/src/trails/load-app.js +0 -415
  124. package/dist/src/trails/load-app.js.map +0 -1
  125. package/dist/src/trails/project.d.ts +0 -8
  126. package/dist/src/trails/project.d.ts.map +0 -1
  127. package/dist/src/trails/project.js +0 -54
  128. package/dist/src/trails/project.js.map +0 -1
  129. package/dist/src/trails/survey.d.ts +0 -18
  130. package/dist/src/trails/survey.d.ts.map +0 -1
  131. package/dist/src/trails/survey.js +0 -234
  132. package/dist/src/trails/survey.js.map +0 -1
  133. package/dist/src/trails/topo-constants.d.ts +0 -3
  134. package/dist/src/trails/topo-constants.d.ts.map +0 -1
  135. package/dist/src/trails/topo-constants.js +0 -3
  136. package/dist/src/trails/topo-constants.js.map +0 -1
  137. package/dist/src/trails/topo-export.d.ts +0 -19
  138. package/dist/src/trails/topo-export.d.ts.map +0 -1
  139. package/dist/src/trails/topo-export.js +0 -31
  140. package/dist/src/trails/topo-export.js.map +0 -1
  141. package/dist/src/trails/topo-history.d.ts +0 -20
  142. package/dist/src/trails/topo-history.d.ts.map +0 -1
  143. package/dist/src/trails/topo-history.js +0 -32
  144. package/dist/src/trails/topo-history.js.map +0 -1
  145. package/dist/src/trails/topo-pin.d.ts +0 -17
  146. package/dist/src/trails/topo-pin.d.ts.map +0 -1
  147. package/dist/src/trails/topo-pin.js +0 -31
  148. package/dist/src/trails/topo-pin.js.map +0 -1
  149. package/dist/src/trails/topo-read-support.d.ts +0 -58
  150. package/dist/src/trails/topo-read-support.d.ts.map +0 -1
  151. package/dist/src/trails/topo-read-support.js +0 -167
  152. package/dist/src/trails/topo-read-support.js.map +0 -1
  153. package/dist/src/trails/topo-reports.d.ts +0 -54
  154. package/dist/src/trails/topo-reports.d.ts.map +0 -1
  155. package/dist/src/trails/topo-reports.js +0 -128
  156. package/dist/src/trails/topo-reports.js.map +0 -1
  157. package/dist/src/trails/topo-show.d.ts +0 -23
  158. package/dist/src/trails/topo-show.d.ts.map +0 -1
  159. package/dist/src/trails/topo-show.js +0 -49
  160. package/dist/src/trails/topo-show.js.map +0 -1
  161. package/dist/src/trails/topo-store-support.d.ts +0 -13
  162. package/dist/src/trails/topo-store-support.d.ts.map +0 -1
  163. package/dist/src/trails/topo-store-support.js +0 -55
  164. package/dist/src/trails/topo-store-support.js.map +0 -1
  165. package/dist/src/trails/topo-support.d.ts +0 -76
  166. package/dist/src/trails/topo-support.d.ts.map +0 -1
  167. package/dist/src/trails/topo-support.js +0 -132
  168. package/dist/src/trails/topo-support.js.map +0 -1
  169. package/dist/src/trails/topo-unpin.d.ts +0 -20
  170. package/dist/src/trails/topo-unpin.d.ts.map +0 -1
  171. package/dist/src/trails/topo-unpin.js +0 -44
  172. package/dist/src/trails/topo-unpin.js.map +0 -1
  173. package/dist/src/trails/topo-verify.d.ts +0 -5
  174. package/dist/src/trails/topo-verify.d.ts.map +0 -1
  175. package/dist/src/trails/topo-verify.js +0 -24
  176. package/dist/src/trails/topo-verify.js.map +0 -1
  177. package/dist/src/trails/topo.d.ts +0 -5
  178. package/dist/src/trails/topo.d.ts.map +0 -1
  179. package/dist/src/trails/topo.js +0 -63
  180. package/dist/src/trails/topo.js.map +0 -1
  181. package/dist/src/trails/warden.d.ts +0 -20
  182. package/dist/src/trails/warden.d.ts.map +0 -1
  183. package/dist/src/trails/warden.js +0 -98
  184. package/dist/src/trails/warden.js.map +0 -1
  185. package/dist/src/versions.d.ts +0 -12
  186. package/dist/src/versions.d.ts.map +0 -1
  187. package/dist/src/versions.js +0 -23
  188. package/dist/src/versions.js.map +0 -1
  189. package/dist/tsconfig.tsbuildinfo +0 -1
  190. package/src/__tests__/add-trail.test.ts +0 -97
  191. package/src/__tests__/create.test.ts +0 -415
  192. package/src/__tests__/draft-promote.test.ts +0 -144
  193. package/src/__tests__/guide.test.ts +0 -96
  194. package/src/__tests__/load-app.test.ts +0 -419
  195. package/src/__tests__/survey.test.ts +0 -377
  196. package/src/__tests__/topo-dev.test.ts +0 -426
  197. package/src/__tests__/warden.test.ts +0 -74
  198. package/src/trails/topo-export.ts +0 -35
  199. package/src/trails/topo-show.ts +0 -54
  200. package/tsconfig.json +0 -9
  201. package/tsconfig.tests.json +0 -10
@@ -1,295 +0,0 @@
1
- /**
2
- * `create.scaffold` trail -- Creates base project structure.
3
- *
4
- * Generates package.json, tsconfig, app.ts, starter trails, and .trails/ directory.
5
- */
6
- import { mkdirSync } from 'node:fs';
7
- import { dirname, join, resolve } from 'node:path';
8
- import { Result, trail } from '@ontrails/core';
9
- import { z } from 'zod';
10
- import { ontrailsPackageRange, scaffoldDependencyVersions, } from '../versions.js';
11
- // ---------------------------------------------------------------------------
12
- // Content generators
13
- // ---------------------------------------------------------------------------
14
- const generatePackageJson = (name) => {
15
- const deps = {
16
- '@ontrails/core': ontrailsPackageRange,
17
- zod: scaffoldDependencyVersions.zod,
18
- };
19
- const pkg = {
20
- dependencies: Object.fromEntries(Object.entries(deps).toSorted(([a], [b]) => a.localeCompare(b))),
21
- devDependencies: Object.fromEntries(Object.entries({
22
- '@types/bun': scaffoldDependencyVersions.bunTypes,
23
- oxlint: scaffoldDependencyVersions.oxlint,
24
- typescript: scaffoldDependencyVersions.typescript,
25
- ultracite: scaffoldDependencyVersions.ultracite,
26
- }).toSorted(([a], [b]) => a.localeCompare(b))),
27
- name,
28
- scripts: {
29
- build: 'tsc -b',
30
- lint: 'oxlint ./src',
31
- test: 'bun test',
32
- typecheck: 'tsc --noEmit',
33
- },
34
- type: 'module',
35
- version: '0.1.0',
36
- };
37
- return JSON.stringify(pkg, null, 2);
38
- };
39
- const TSCONFIG_CONTENT = JSON.stringify({
40
- compilerOptions: {
41
- declaration: true,
42
- module: 'ESNext',
43
- moduleResolution: 'bundler',
44
- noUncheckedIndexedAccess: true,
45
- outDir: 'dist',
46
- rootDir: 'src',
47
- skipLibCheck: true,
48
- strict: true,
49
- target: 'ESNext',
50
- verbatimModuleSyntax: true,
51
- },
52
- include: ['src'],
53
- }, null, 2);
54
- const GITIGNORE_CONTENT = `node_modules/
55
- dist/
56
- *.tsbuildinfo
57
- .trails/_surface.json
58
- `;
59
- const OXLINTRC_CONTENT = JSON.stringify({
60
- extends: ['ultracite'],
61
- }, null, 2);
62
- const OXFMTRC_CONTENT = `{
63
- // ultracite defaults
64
- }
65
- `;
66
- const generateHelloTrail = () => `import { Result, trail } from '@ontrails/core';
67
- import { z } from 'zod';
68
-
69
- export const hello = trail('hello', {
70
- description: 'Say hello',
71
- examples: [
72
- {
73
- expected: { message: 'Hello, world!' },
74
- input: {},
75
- name: 'Default greeting',
76
- },
77
- {
78
- expected: { message: 'Hello, Trails!' },
79
- input: { name: 'Trails' },
80
- name: 'Named greeting',
81
- },
82
- ],
83
- blaze: (input) => {
84
- const name = input.name ?? 'world';
85
- return Result.ok({ message: \`Hello, \${name}!\` });
86
- },
87
- input: z.object({
88
- name: z.string().optional(),
89
- }),
90
- output: z.object({
91
- message: z.string(),
92
- }),
93
- intent: 'read',
94
- });
95
- `;
96
- const generateEntityTrails = () => `import { Result, trail } from '@ontrails/core';
97
- import { z } from 'zod';
98
-
99
- const entitySchema = z.object({
100
- id: z.string(),
101
- name: z.string(),
102
- });
103
-
104
- export const show = trail('entity.show', {
105
- description: 'Show an entity by ID',
106
- examples: [
107
- {
108
- expected: { id: '1', name: 'Example' },
109
- input: { id: '1' },
110
- name: 'Show entity',
111
- },
112
- ],
113
- blaze: (input) => {
114
- return Result.ok({ id: input.id, name: 'Example' });
115
- },
116
- input: z.object({ id: z.string() }),
117
- output: entitySchema,
118
- intent: 'read',
119
- });
120
-
121
- export const add = trail('entity.add', {
122
- description: 'Add a new entity',
123
- examples: [
124
- {
125
- expected: { id: '1', name: 'New' },
126
- input: { name: 'New' },
127
- name: 'Add entity',
128
- },
129
- ],
130
- blaze: (input) => {
131
- return Result.ok({ id: '1', name: input.name });
132
- },
133
- input: z.object({ name: z.string() }),
134
- output: entitySchema,
135
- });
136
- `;
137
- const generateSearchTrail = () => `import { Result, trail } from '@ontrails/core';
138
- import { z } from 'zod';
139
-
140
- export const search = trail('search', {
141
- description: 'Search entities by query',
142
- examples: [
143
- {
144
- expected: { results: [] },
145
- input: { query: 'test' },
146
- name: 'Search entities',
147
- },
148
- ],
149
- blaze: () => {
150
- return Result.ok({ results: [] });
151
- },
152
- input: z.object({ query: z.string() }),
153
- output: z.object({
154
- results: z.array(z.object({ id: z.string(), name: z.string() })),
155
- }),
156
- intent: 'read',
157
- });
158
- `;
159
- const generateOnboardTrail = () => `import { Result, trail } from '@ontrails/core';
160
- import { z } from 'zod';
161
-
162
- export const onboard = trail('entity.onboard', {
163
- description: 'Onboard a new entity end-to-end',
164
- crosses: ['entity.add'],
165
- blaze: async (input, ctx) => {
166
- const result = await ctx.cross('entity.add', { name: input.name });
167
- if (result.isErr()) {
168
- return result;
169
- }
170
- return Result.ok({ onboarded: true });
171
- },
172
- input: z.object({ name: z.string() }),
173
- output: z.object({ onboarded: z.boolean() }),
174
- });
175
- `;
176
- const generateEntitySignals = () => `import { signal } from '@ontrails/core';
177
- import { z } from 'zod';
178
-
179
- export const entityUpdated = signal('entity.updated', {
180
- description: 'Fired when an entity is updated',
181
- payload: z.object({
182
- entityId: z.string(),
183
- updatedAt: z.string(),
184
- }),
185
- });
186
- `;
187
- const generateStore = () => `/** In-memory store for entities. */
188
-
189
- interface Entity {
190
- readonly id: string;
191
- readonly name: string;
192
- }
193
-
194
- const store = new Map<string, Entity>();
195
-
196
- export const getEntity = (id: string): Entity | undefined => store.get(id);
197
- export const addEntity = (entity: Entity): void => {
198
- store.set(entity.id, entity);
199
- };
200
- export const deleteEntity = (id: string): boolean => store.delete(id);
201
- export const listEntities = (): Entity[] => Array.from(store.values());
202
- `;
203
- const starterImports = {
204
- empty: { imports: [], modules: [] },
205
- entity: {
206
- imports: [
207
- "import * as entity from './trails/entity.js';",
208
- "import * as search from './trails/search.js';",
209
- "import * as onboard from './trails/onboard.js';",
210
- "import * as entitySignals from './signals/entity-signals.js';",
211
- ],
212
- modules: ['entity', 'search', 'onboard', 'entitySignals'],
213
- },
214
- hello: {
215
- imports: ["import * as hello from './trails/hello.js';"],
216
- modules: ['hello'],
217
- },
218
- };
219
- const generateAppTs = (name, starter) => {
220
- const { imports, modules } = starterImports[starter];
221
- const topoArgs = modules.length > 0 ? `'${name}', ${modules.join(', ')}` : `'${name}'`;
222
- return [
223
- "import { topo } from '@ontrails/core';",
224
- ...imports,
225
- '',
226
- `export const app = topo(${topoArgs});`,
227
- '',
228
- ].join('\n');
229
- };
230
- // ---------------------------------------------------------------------------
231
- // File collection and writing
232
- // ---------------------------------------------------------------------------
233
- const starterFileGenerators = {
234
- empty: () => [['src/trails/.gitkeep', '']],
235
- entity: () => [
236
- ['src/trails/entity.ts', generateEntityTrails()],
237
- ['src/trails/search.ts', generateSearchTrail()],
238
- ['src/trails/onboard.ts', generateOnboardTrail()],
239
- ['src/signals/entity-signals.ts', generateEntitySignals()],
240
- ['src/store.ts', generateStore()],
241
- ],
242
- hello: () => [['src/trails/hello.ts', generateHelloTrail()]],
243
- };
244
- const collectScaffoldFiles = (name, starter) => new Map([
245
- ['package.json', generatePackageJson(name)],
246
- ['tsconfig.json', TSCONFIG_CONTENT],
247
- ['.gitignore', GITIGNORE_CONTENT],
248
- ['.oxlintrc.json', OXLINTRC_CONTENT],
249
- ['.oxfmtrc.jsonc', OXFMTRC_CONTENT],
250
- ['src/app.ts', generateAppTs(name, starter)],
251
- ...starterFileGenerators[starter](),
252
- ]);
253
- const writeScaffoldFiles = async (projectDir, fileMap) => {
254
- const files = [];
255
- for (const [relativePath, content] of fileMap) {
256
- const fullPath = join(projectDir, relativePath);
257
- mkdirSync(dirname(fullPath), { recursive: true });
258
- await Bun.write(fullPath, content);
259
- files.push(relativePath);
260
- }
261
- return files;
262
- };
263
- // ---------------------------------------------------------------------------
264
- // Trail definition
265
- // ---------------------------------------------------------------------------
266
- export const createScaffold = trail('create.scaffold', {
267
- blaze: async (input) => {
268
- const projectDir = resolve(input.dir ?? '.', input.name);
269
- const starter = (input.starter ?? 'hello');
270
- const fileMap = collectScaffoldFiles(input.name, starter);
271
- const files = await writeScaffoldFiles(projectDir, fileMap);
272
- mkdirSync(join(projectDir, '.trails'), { recursive: true });
273
- return Result.ok({
274
- created: files,
275
- dir: projectDir,
276
- name: input.name,
277
- });
278
- },
279
- description: 'Scaffold a new Trails project',
280
- input: z.object({
281
- dir: z.string().optional().describe('Parent directory'),
282
- name: z.string().describe('Project name'),
283
- starter: z
284
- .enum(['hello', 'entity', 'empty'])
285
- .default('hello')
286
- .describe('Starter trail'),
287
- }),
288
- meta: { internal: true },
289
- output: z.object({
290
- created: z.array(z.string()),
291
- dir: z.string(),
292
- name: z.string(),
293
- }),
294
- });
295
- //# sourceMappingURL=create-scaffold.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-scaffold.js","sourceRoot":"","sources":["../../../src/trails/create-scaffold.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * `create` route -- Create a new Trails project.
3
- *
4
- * Composes create.scaffold, add.surface, and add.verify sub-trails
5
- * via ctx.cross.
6
- */
7
- export declare const createRoute: import("@ontrails/core").Trail<{
8
- name: string;
9
- starter: "empty" | "entity" | "hello";
10
- surfaces: ("cli" | "http" | "mcp")[];
11
- verify: boolean;
12
- dir?: string | undefined;
13
- }, {
14
- created: string[];
15
- dir: string;
16
- name: string;
17
- }, never>;
18
- //# sourceMappingURL=create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/trails/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoGH,eAAO,MAAM,WAAW;;;;;;;aAgBA,MAAM,EAAE;SAAO,MAAM;UAAQ,MAAM;SAsFzD,CAAC"}
@@ -1,126 +0,0 @@
1
- /**
2
- * `create` route -- Create a new Trails project.
3
- *
4
- * Composes create.scaffold, add.surface, and add.verify sub-trails
5
- * via ctx.cross.
6
- */
7
- import { Result, trail } from '@ontrails/core';
8
- import { z } from 'zod';
9
- const buildScaffoldInput = (input) => ({
10
- ...(input.dir === undefined ? {} : { dir: input.dir }),
11
- name: input.name,
12
- starter: input.starter,
13
- });
14
- const buildSurfaceInput = (dir, surface) => ({
15
- dir,
16
- surface,
17
- });
18
- const buildVerifyInput = (input) => ({
19
- ...(input.dir === undefined ? {} : { dir: input.dir }),
20
- name: input.name,
21
- });
22
- const collectSurfaceFiles = async (surfaces, addSurface) => {
23
- const created = [];
24
- for (const surface of surfaces) {
25
- const result = await addSurface(surface);
26
- if (result.isErr()) {
27
- return Result.err(result.error);
28
- }
29
- created.push(result.value.created);
30
- }
31
- return Result.ok(created);
32
- };
33
- const collectVerifyFiles = async (shouldVerify, addVerify) => {
34
- if (!shouldVerify) {
35
- return Result.ok([]);
36
- }
37
- const result = await addVerify();
38
- return result.isErr()
39
- ? Result.err(result.error)
40
- : Result.ok(result.value.created);
41
- };
42
- const collectCreatedFiles = (scaffolded, surfaces, verify) => [...scaffolded, ...surfaces, ...verify];
43
- // ---------------------------------------------------------------------------
44
- // Route definition
45
- // ---------------------------------------------------------------------------
46
- export const createRoute = trail('create', {
47
- blaze: async (input, ctx) => {
48
- if (!ctx.cross) {
49
- return Result.err(new Error('create route requires ctx.cross'));
50
- }
51
- const { cross } = ctx;
52
- const scaffolded = await cross('create.scaffold', buildScaffoldInput(input));
53
- if (scaffolded.isErr()) {
54
- return Result.err(scaffolded.error);
55
- }
56
- const finishCreate = async () => {
57
- const surfaceFiles = await collectSurfaceFiles(input.surfaces, (surface) => cross('add.surface', buildSurfaceInput(scaffolded.value.dir, surface)));
58
- if (surfaceFiles.isErr()) {
59
- return Result.err(surfaceFiles.error);
60
- }
61
- const verifyFiles = await collectVerifyFiles(input.verify, () => cross('add.verify', buildVerifyInput(input)));
62
- if (verifyFiles.isErr()) {
63
- return Result.err(verifyFiles.error);
64
- }
65
- return Result.ok({
66
- created: collectCreatedFiles(scaffolded.value.created, surfaceFiles.value, verifyFiles.value),
67
- dir: scaffolded.value.dir,
68
- name: input.name,
69
- });
70
- };
71
- return finishCreate();
72
- },
73
- crosses: ['create.scaffold', 'add.surface', 'add.verify'],
74
- description: 'Create a new Trails project',
75
- fields: {
76
- starter: {
77
- options: [
78
- {
79
- hint: 'One trail, one example',
80
- label: 'Hello world',
81
- value: 'hello',
82
- },
83
- {
84
- hint: '4 trails, signal, store',
85
- label: 'Entity CRUD',
86
- value: 'entity',
87
- },
88
- { hint: 'Just the structure', label: 'Empty', value: 'empty' },
89
- ],
90
- },
91
- surfaces: {
92
- options: [
93
- { hint: 'Commander-based command line', label: 'CLI', value: 'cli' },
94
- {
95
- hint: 'Model Context Protocol for agents',
96
- label: 'MCP',
97
- value: 'mcp',
98
- },
99
- {
100
- hint: 'Hono-powered HTTP endpoints',
101
- label: 'HTTP',
102
- value: 'http',
103
- },
104
- ],
105
- },
106
- },
107
- input: z.object({
108
- dir: z.string().optional().describe('Parent directory'),
109
- name: z.string().describe('Project name'),
110
- starter: z
111
- .enum(['hello', 'entity', 'empty'])
112
- .default('hello')
113
- .describe('Starter trail'),
114
- surfaces: z
115
- .array(z.enum(['cli', 'http', 'mcp']))
116
- .default(['cli'])
117
- .describe('Surfaces'),
118
- verify: z.boolean().default(true).describe('Include testing + warden'),
119
- }),
120
- output: z.object({
121
- created: z.array(z.string()),
122
- dir: z.string(),
123
- name: z.string(),
124
- }),
125
- });
126
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/trails/create.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export declare const devCleanTrail: import("@ontrails/core").Trail<{
2
- dryRun: boolean;
3
- snapshots: number;
4
- traceAgeMs: number;
5
- traces: number;
6
- yes: boolean;
7
- rootDir?: string | undefined;
8
- }, import("./dev-support.js").DevCleanReport, never>;
9
- //# sourceMappingURL=dev-clean.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-clean.d.ts","sourceRoot":"","sources":["../../../src/trails/dev-clean.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,aAAa;;;;;;;oDAmExB,CAAC"}
@@ -1,66 +0,0 @@
1
- import { Result, ValidationError, trail } from '@ontrails/core';
2
- import { z } from 'zod';
3
- import { cleanDevState, DEFAULT_TOPO_SNAPSHOT_RETENTION, } from './dev-support.js';
4
- import { createIsolatedExampleInput } from './topo-support.js';
5
- export const devCleanTrail = trail('dev.clean', {
6
- blaze: (input, ctx) => {
7
- if (input.dryRun !== true && input.yes !== true) {
8
- return Result.err(new ValidationError('Refusing to clean local state without `--yes` or `--dry-run`.'));
9
- }
10
- const rootDir = input.rootDir ?? ctx.cwd ?? process.cwd();
11
- return Result.ok(cleanDevState({
12
- dryRun: input.dryRun,
13
- maxAge: input.traceAgeMs,
14
- maxRecords: input.traces,
15
- rootDir,
16
- snapshotRetention: input.snapshots,
17
- }));
18
- },
19
- description: 'Prune unpinned topo snapshots and old trace records',
20
- examples: [
21
- {
22
- input: {
23
- dryRun: true,
24
- rootDir: createIsolatedExampleInput('dev-clean').rootDir,
25
- },
26
- name: 'Preview local cleanup',
27
- },
28
- ],
29
- input: z.object({
30
- dryRun: z
31
- .boolean()
32
- .default(true)
33
- .describe('Preview cleanup without changing state'),
34
- rootDir: z.string().optional().describe('Workspace root directory'),
35
- snapshots: z
36
- .number()
37
- .default(DEFAULT_TOPO_SNAPSHOT_RETENTION)
38
- .describe('Unpinned topo snapshots to retain'),
39
- traceAgeMs: z
40
- .number()
41
- .default(7 * 24 * 60 * 60 * 1000)
42
- .describe('Maximum retained trace age in milliseconds'),
43
- traces: z.number().default(10_000).describe('Maximum retained trace count'),
44
- yes: z.boolean().default(false).describe('Confirm destructive changes'),
45
- }),
46
- intent: 'destroy',
47
- output: z.object({
48
- dryRun: z.boolean(),
49
- remaining: z.object({
50
- pinnedCount: z.number(),
51
- snapshotCount: z.number(),
52
- traceCount: z.number(),
53
- }),
54
- removed: z.object({
55
- topoSnapshots: z.number(),
56
- traceRecords: z.number(),
57
- }),
58
- retention: z.object({
59
- snapshots: z.number(),
60
- traceAgeMs: z.number(),
61
- traces: z.number(),
62
- }),
63
- }),
64
- permit: { scopes: ['dev:clean'] },
65
- });
66
- //# sourceMappingURL=dev-clean.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-clean.js","sourceRoot":"","sources":["../../../src/trails/dev-clean.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare const devResetTrail: import("@ontrails/core").Trail<{
2
- dryRun: boolean;
3
- yes: boolean;
4
- rootDir?: string | undefined;
5
- }, import("./dev-support.js").DevResetReport, never>;
6
- //# sourceMappingURL=dev-reset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-reset.d.ts","sourceRoot":"","sources":["../../../src/trails/dev-reset.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa;;;;oDAsCxB,CAAC"}
@@ -1,39 +0,0 @@
1
- import { Result, ValidationError, trail } from '@ontrails/core';
2
- import { z } from 'zod';
3
- import { resetDevState } from './dev-support.js';
4
- import { createIsolatedExampleInput } from './topo-support.js';
5
- export const devResetTrail = trail('dev.reset', {
6
- blaze: (input, ctx) => {
7
- if (input.dryRun !== true && input.yes !== true) {
8
- return Result.err(new ValidationError('Refusing to reset local state without `--yes` or `--dry-run`.'));
9
- }
10
- const rootDir = input.rootDir ?? ctx.cwd ?? process.cwd();
11
- return Result.ok(resetDevState({ dryRun: input.dryRun, rootDir }));
12
- },
13
- description: 'Remove local Trails database artifacts',
14
- examples: [
15
- {
16
- input: {
17
- dryRun: true,
18
- rootDir: createIsolatedExampleInput('dev-reset').rootDir,
19
- },
20
- name: 'Preview local reset',
21
- },
22
- ],
23
- input: z.object({
24
- dryRun: z
25
- .boolean()
26
- .default(true)
27
- .describe('Preview reset without changing state'),
28
- rootDir: z.string().optional().describe('Workspace root directory'),
29
- yes: z.boolean().default(false).describe('Confirm destructive changes'),
30
- }),
31
- intent: 'destroy',
32
- output: z.object({
33
- dryRun: z.boolean(),
34
- removedCount: z.number(),
35
- removedFiles: z.array(z.string()),
36
- }),
37
- permit: { scopes: ['dev:reset'] },
38
- });
39
- //# sourceMappingURL=dev-reset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-reset.js","sourceRoot":"","sources":["../../../src/trails/dev-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,EAAE;IAC9C,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACpB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,GAAG,CACf,IAAI,eAAe,CACjB,+DAA+D,CAChE,CACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,WAAW,EAAE,wCAAwC;IACrD,QAAQ,EAAE;QACR;YACE,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC,OAAO;aACzD;YACD,IAAI,EAAE,qBAAqB;SAC5B;KACF;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,CAAC;aACN,OAAO,EAAE;aACT,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CAAC,sCAAsC,CAAC;QACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACnE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACxE,CAAC;IACF,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;QACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAClC,CAAC;IACF,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE;CAClC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- export declare const devStatsTrail: import("@ontrails/core").Trail<{
2
- snapshots: number;
3
- traceAgeMs: number;
4
- traces: number;
5
- rootDir?: string | undefined;
6
- }, import("./dev-support.js").DevStatsReport, never>;
7
- //# sourceMappingURL=dev-stats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-stats.d.ts","sourceRoot":"","sources":["../../../src/trails/dev-stats.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,aAAa;;;;;oDAyDxB,CAAC"}