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

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 +215 -2
  2. package/README.md +27 -0
  3. package/package.json +21 -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 +534 -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 +219 -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 +587 -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,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"}
@@ -1,61 +0,0 @@
1
- import { Result, trail } from '@ontrails/core';
2
- import { z } from 'zod';
3
- import { buildDevStats, DEFAULT_TOPO_SNAPSHOT_RETENTION, } from './dev-support.js';
4
- import { createIsolatedExampleInput } from './topo-support.js';
5
- export const devStatsTrail = trail('dev.stats', {
6
- blaze: (input, ctx) => {
7
- const rootDir = input.rootDir ?? ctx.cwd ?? process.cwd();
8
- return Result.ok(buildDevStats({
9
- maxAge: input.traceAgeMs,
10
- maxRecords: input.traces,
11
- rootDir,
12
- snapshotRetention: input.snapshots,
13
- }));
14
- },
15
- description: 'Show local Trails workspace state and retention',
16
- examples: [
17
- {
18
- input: { rootDir: createIsolatedExampleInput('dev-stats').rootDir },
19
- name: 'Show local dev state',
20
- },
21
- ],
22
- input: z.object({
23
- rootDir: z.string().optional().describe('Workspace root directory'),
24
- snapshots: z
25
- .number()
26
- .default(DEFAULT_TOPO_SNAPSHOT_RETENTION)
27
- .describe('Unpinned topo snapshots to retain'),
28
- traceAgeMs: z
29
- .number()
30
- .default(7 * 24 * 60 * 60 * 1000)
31
- .describe('Maximum retained trace age in milliseconds'),
32
- traces: z.number().default(10_000).describe('Maximum retained trace count'),
33
- }),
34
- intent: 'read',
35
- output: z.object({
36
- db: z.object({
37
- exists: z.boolean(),
38
- fileSizeBytes: z.number(),
39
- path: z.string(),
40
- }),
41
- lock: z.object({
42
- exists: z.boolean(),
43
- fileSizeBytes: z.number(),
44
- path: z.string(),
45
- }),
46
- retention: z.object({
47
- snapshots: z.number(),
48
- traceAgeMs: z.number(),
49
- traces: z.number(),
50
- }),
51
- topo: z.object({
52
- pinnedCount: z.number(),
53
- prunableSnapshotCount: z.number(),
54
- snapshotCount: z.number(),
55
- }),
56
- tracing: z.object({
57
- recordCount: z.number(),
58
- }),
59
- }),
60
- });
61
- //# sourceMappingURL=dev-stats.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-stats.js","sourceRoot":"","sources":["../../../src/trails/dev-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,aAAa,EACb,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAC1B,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,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC,EAAE,CACd,aAAa,CAAC;YACZ,MAAM,EAAE,KAAK,CAAC,UAAU;YACxB,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,OAAO;YACP,iBAAiB,EAAE,KAAK,CAAC,SAAS;SACnC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,WAAW,EAAE,iDAAiD;IAC9D,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,EAAE,OAAO,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;YACnE,IAAI,EAAE,sBAAsB;SAC7B;KACF;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACnE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,OAAO,CAAC,+BAA+B,CAAC;aACxC,QAAQ,CAAC,mCAAmC,CAAC;QAChD,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;aAChC,QAAQ,CAAC,4CAA4C,CAAC;QACzD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC5E,CAAC;IACF,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;YACX,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;YACnB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;YACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,CAAC;QACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACb,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;YACnB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;YACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,CAAC;QACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;YAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC;QACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACb,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;YACvB,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE;YACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;SAC1B,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACxB,CAAC;KACH,CAAC;CACH,CAAC,CAAC"}
@@ -1,64 +0,0 @@
1
- export declare const DEFAULT_TOPO_SNAPSHOT_RETENTION = 50;
2
- export interface DevStatsReport {
3
- readonly db: {
4
- readonly exists: boolean;
5
- readonly fileSizeBytes: number;
6
- readonly path: string;
7
- };
8
- readonly lock: {
9
- readonly exists: boolean;
10
- readonly fileSizeBytes: number;
11
- readonly path: string;
12
- };
13
- readonly retention: {
14
- readonly snapshots: number;
15
- readonly traceAgeMs: number;
16
- readonly traces: number;
17
- };
18
- readonly topo: {
19
- readonly pinnedCount: number;
20
- readonly prunableSnapshotCount: number;
21
- readonly snapshotCount: number;
22
- };
23
- readonly tracing: {
24
- readonly recordCount: number;
25
- };
26
- }
27
- export interface DevCleanReport {
28
- readonly dryRun: boolean;
29
- readonly remaining: {
30
- readonly pinnedCount: number;
31
- readonly snapshotCount: number;
32
- readonly traceCount: number;
33
- };
34
- readonly removed: {
35
- readonly topoSnapshots: number;
36
- readonly traceRecords: number;
37
- };
38
- readonly retention: {
39
- readonly snapshots: number;
40
- readonly traceAgeMs: number;
41
- readonly traces: number;
42
- };
43
- }
44
- export interface DevResetReport {
45
- readonly dryRun: boolean;
46
- readonly removedCount: number;
47
- readonly removedFiles: readonly string[];
48
- }
49
- interface DevRetentionOptions {
50
- readonly maxAge?: number;
51
- readonly maxRecords?: number;
52
- readonly rootDir?: string;
53
- readonly snapshotRetention?: number;
54
- }
55
- export declare const buildDevStats: (options?: DevRetentionOptions) => DevStatsReport;
56
- export declare const cleanDevState: (options?: DevRetentionOptions & {
57
- readonly dryRun?: boolean;
58
- }) => DevCleanReport;
59
- export declare const resetDevState: (options?: {
60
- readonly dryRun?: boolean;
61
- readonly rootDir?: string;
62
- }) => DevResetReport;
63
- export {};
64
- //# sourceMappingURL=dev-support.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-support.d.ts","sourceRoot":"","sources":["../../../src/trails/dev-support.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAYlD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE;QACX,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AA+KD,eAAO,MAAM,aAAa,GACxB,UAAU,mBAAmB,KAC5B,cAeF,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,UAAU,mBAAmB,GAAG;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,KAC5D,cAeF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,KAAG,cAqBH,CAAC"}
@@ -1,181 +0,0 @@
1
- import { existsSync, rmSync, statSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { countPinnedSnapshots, countPrunableSnapshots, countTopoSnapshots, pruneUnpinnedSnapshots, } from '@ontrails/core/internal/topo-snapshots';
4
- import { openReadTrailsDb, openWriteTrailsDb, deriveTrailsDbPath, deriveTrailsDir, } from '@ontrails/core/internal/trails-db';
5
- import { DEFAULT_MAX_AGE, DEFAULT_MAX_RECORDS, applyTraceCleanup, countTraceRecords, previewTraceCleanup, } from '@ontrails/tracing/internal/dev-state';
6
- export const DEFAULT_TOPO_SNAPSHOT_RETENTION = 50;
7
- const deriveRootDir = (cwd) => cwd ?? process.cwd();
8
- const removeIfPresent = (filePath) => {
9
- if (!existsSync(filePath)) {
10
- return false;
11
- }
12
- rmSync(filePath, { force: true });
13
- return true;
14
- };
15
- const buildRetention = (options) => ({
16
- snapshots: options?.snapshotRetention ?? DEFAULT_TOPO_SNAPSHOT_RETENTION,
17
- traceAgeMs: options?.maxAge ?? DEFAULT_MAX_AGE,
18
- traces: options?.maxRecords ?? DEFAULT_MAX_RECORDS,
19
- });
20
- const emptyDevClean = (retention, dryRun) => ({
21
- dryRun,
22
- remaining: {
23
- pinnedCount: 0,
24
- snapshotCount: 0,
25
- traceCount: 0,
26
- },
27
- removed: {
28
- topoSnapshots: 0,
29
- traceRecords: 0,
30
- },
31
- retention,
32
- });
33
- const buildLockStats = (lockPath) => ({
34
- exists: existsSync(lockPath),
35
- fileSizeBytes: existsSync(lockPath) ? statSync(lockPath).size : 0,
36
- path: lockPath,
37
- });
38
- const buildDbStats = (dbPath, exists) => ({
39
- exists,
40
- fileSizeBytes: exists ? statSync(dbPath).size : 0,
41
- path: '.trails/trails.db',
42
- });
43
- const emptyDevStats = (dbPath, lockPath, retention) => ({
44
- db: buildDbStats(dbPath, false),
45
- lock: buildLockStats(lockPath),
46
- retention,
47
- topo: {
48
- pinnedCount: 0,
49
- prunableSnapshotCount: 0,
50
- snapshotCount: 0,
51
- },
52
- tracing: {
53
- recordCount: 0,
54
- },
55
- });
56
- const liveDevStats = (db, dbPath, lockPath, retention) => ({
57
- db: buildDbStats(dbPath, true),
58
- lock: buildLockStats(lockPath),
59
- retention,
60
- topo: {
61
- pinnedCount: countPinnedSnapshots(db),
62
- prunableSnapshotCount: countPrunableSnapshots(db, {
63
- keep: retention.snapshots,
64
- }),
65
- snapshotCount: countTopoSnapshots(db),
66
- },
67
- tracing: {
68
- recordCount: countTraceRecords(db),
69
- },
70
- });
71
- const deriveDevStatsContext = (options) => {
72
- const rootDir = deriveRootDir(options?.rootDir);
73
- const dbPath = deriveTrailsDbPath({ rootDir });
74
- const trailsDir = deriveTrailsDir({ rootDir });
75
- const lockPath = join(trailsDir, 'trails.lock');
76
- return {
77
- dbExists: existsSync(dbPath),
78
- dbPath,
79
- lockPath,
80
- retention: buildRetention(options),
81
- rootDir,
82
- };
83
- };
84
- const deriveDevCleanupContext = (options) => {
85
- const rootDir = deriveRootDir(options?.rootDir);
86
- return {
87
- dbPath: deriveTrailsDbPath({ rootDir }),
88
- dryRun: options?.dryRun ?? false,
89
- retention: buildRetention(options),
90
- rootDir,
91
- };
92
- };
93
- const cleanupTraces = (db, context) => context.dryRun
94
- ? previewTraceCleanup(db, {
95
- maxAge: context.retention.traceAgeMs,
96
- maxRecords: context.retention.traces,
97
- })
98
- : applyTraceCleanup(db, {
99
- maxAge: context.retention.traceAgeMs,
100
- maxRecords: context.retention.traces,
101
- });
102
- const cleanupTopoSnapshots = (db, context) => context.dryRun
103
- ? countPrunableSnapshots(db, { keep: context.retention.snapshots })
104
- : pruneUnpinnedSnapshots(db, { keep: context.retention.snapshots });
105
- const buildCleanReport = (db, context) => {
106
- const traceReport = cleanupTraces(db, context);
107
- const topoRemoved = cleanupTopoSnapshots(db, context);
108
- const snapshotCount = countTopoSnapshots(db);
109
- return {
110
- dryRun: context.dryRun,
111
- remaining: {
112
- pinnedCount: countPinnedSnapshots(db),
113
- snapshotCount: context.dryRun
114
- ? snapshotCount - topoRemoved
115
- : snapshotCount,
116
- traceCount: context.dryRun
117
- ? traceReport.remaining - traceReport.removedTotal
118
- : traceReport.remaining,
119
- },
120
- removed: {
121
- topoSnapshots: topoRemoved,
122
- traceRecords: traceReport.removedTotal,
123
- },
124
- retention: context.retention,
125
- };
126
- };
127
- const RESET_FILES = [
128
- '.trails/trails.db',
129
- '.trails/trails.db-shm',
130
- '.trails/trails.db-wal',
131
- '.trails/dev/tracing.db',
132
- '.trails/dev/tracing.db-shm',
133
- '.trails/dev/tracing.db-wal',
134
- ];
135
- const presentResetFiles = (rootDir) => RESET_FILES.filter((relativePath) => existsSync(join(rootDir, relativePath)));
136
- export const buildDevStats = (options) => {
137
- const { dbExists, dbPath, lockPath, retention, rootDir } = deriveDevStatsContext(options);
138
- if (!dbExists) {
139
- return emptyDevStats(dbPath, lockPath, retention);
140
- }
141
- const db = openReadTrailsDb({ rootDir });
142
- try {
143
- return liveDevStats(db, dbPath, lockPath, retention);
144
- }
145
- finally {
146
- db.close();
147
- }
148
- };
149
- export const cleanDevState = (options) => {
150
- const context = deriveDevCleanupContext(options);
151
- if (!existsSync(context.dbPath)) {
152
- return emptyDevClean(context.retention, context.dryRun);
153
- }
154
- const db = context.dryRun
155
- ? openReadTrailsDb({ rootDir: context.rootDir })
156
- : openWriteTrailsDb({ rootDir: context.rootDir });
157
- try {
158
- return buildCleanReport(db, context);
159
- }
160
- finally {
161
- db.close();
162
- }
163
- };
164
- export const resetDevState = (options) => {
165
- const rootDir = deriveRootDir(options?.rootDir);
166
- const files = presentResetFiles(rootDir);
167
- if (options?.dryRun === true) {
168
- return {
169
- dryRun: true,
170
- removedCount: files.length,
171
- removedFiles: files,
172
- };
173
- }
174
- const removedFiles = files.filter((relativePath) => removeIfPresent(join(rootDir, relativePath)));
175
- return {
176
- dryRun: false,
177
- removedCount: removedFiles.length,
178
- removedFiles,
179
- };
180
- };
181
- //# sourceMappingURL=dev-support.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-support.js","sourceRoot":"","sources":["../../../src/trails/dev-support.ts"],"names":[],"mappings":"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"}