@ontrails/trails 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +1906 -0
  2. package/README.md +48 -0
  3. package/bin/trails.ts +3 -0
  4. package/package.json +57 -0
  5. package/src/app.ts +167 -0
  6. package/src/clack.ts +111 -0
  7. package/src/cli.ts +308 -0
  8. package/src/completions.ts +431 -0
  9. package/src/lifecycle-source-io.ts +33 -0
  10. package/src/load-app-mirror.ts +202 -0
  11. package/src/local-state-io.ts +129 -0
  12. package/src/mcp-app.ts +42 -0
  13. package/src/mcp-options.ts +92 -0
  14. package/src/mcp.ts +8 -0
  15. package/src/project-writes.ts +377 -0
  16. package/src/regrade/audit.ts +571 -0
  17. package/src/regrade/config.ts +152 -0
  18. package/src/regrade/history.ts +636 -0
  19. package/src/regrade/lifecycle.ts +76 -0
  20. package/src/regrade/live-api-preserve.ts +123 -0
  21. package/src/regrade/plan-artifact.ts +515 -0
  22. package/src/regrade/plan-derivation.ts +301 -0
  23. package/src/regrade/prepared-run.ts +259 -0
  24. package/src/regrade/receipt-history.ts +446 -0
  25. package/src/regrade/source-transaction.ts +185 -0
  26. package/src/release/bindings.ts +58 -0
  27. package/src/release/changeset-packages.ts +99 -0
  28. package/src/release/check.ts +1191 -0
  29. package/src/release/cli-bundle.ts +575 -0
  30. package/src/release/config.ts +73 -0
  31. package/src/release/contract-facts.ts +425 -0
  32. package/src/release/homebrew.ts +221 -0
  33. package/src/release/index.ts +180 -0
  34. package/src/release/lock-roundtrip-smoke.ts +255 -0
  35. package/src/release/lock-roundtrip-workspace.ts +107 -0
  36. package/src/release/native-bun-publish.ts +964 -0
  37. package/src/release/native-bun-registry.ts +848 -0
  38. package/src/release/notes-cli.ts +171 -0
  39. package/src/release/notes.ts +390 -0
  40. package/src/release/pack-coherence.ts +455 -0
  41. package/src/release/package-route-facts.ts +146 -0
  42. package/src/release/packed-artifacts-smoke.ts +236 -0
  43. package/src/release/policy.ts +1780 -0
  44. package/src/release/semver.ts +104 -0
  45. package/src/release/smoke.ts +56 -0
  46. package/src/release/stable-version-release.ts +80 -0
  47. package/src/release/wayfinder-dogfood-smoke.ts +762 -0
  48. package/src/release/zero-line-transition.ts +68 -0
  49. package/src/retired-topo-command.ts +36 -0
  50. package/src/run-adapter-check.ts +76 -0
  51. package/src/run-argv.ts +133 -0
  52. package/src/run-collision.ts +126 -0
  53. package/src/run-completions-install.ts +179 -0
  54. package/src/run-example.ts +149 -0
  55. package/src/run-examples.ts +148 -0
  56. package/src/run-quiet.ts +75 -0
  57. package/src/run-regrade-progress.ts +47 -0
  58. package/src/run-release-check.ts +74 -0
  59. package/src/run-schema.ts +74 -0
  60. package/src/run-trace.ts +273 -0
  61. package/src/run-warden.ts +39 -0
  62. package/src/run-watch-project.ts +52 -0
  63. package/src/run-watch.ts +381 -0
  64. package/src/run-wayfind-outline.ts +170 -0
  65. package/src/scaffold-version-sync.ts +183 -0
  66. package/src/scaffold-versions.generated.ts +12 -0
  67. package/src/trails/adapter-check.ts +244 -0
  68. package/src/trails/add-surface.ts +816 -0
  69. package/src/trails/add-trail.ts +141 -0
  70. package/src/trails/add-verify.ts +252 -0
  71. package/src/trails/compile.ts +118 -0
  72. package/src/trails/completions-complete.ts +236 -0
  73. package/src/trails/completions.ts +47 -0
  74. package/src/trails/config-explain.ts +43 -0
  75. package/src/trails/create-adapter.ts +785 -0
  76. package/src/trails/create-scaffold.ts +1215 -0
  77. package/src/trails/create-versions.ts +62 -0
  78. package/src/trails/create.ts +652 -0
  79. package/src/trails/deprecate.ts +59 -0
  80. package/src/trails/dev-clean.ts +80 -0
  81. package/src/trails/dev-reset.ts +48 -0
  82. package/src/trails/dev-stats.ts +71 -0
  83. package/src/trails/dev-support.ts +360 -0
  84. package/src/trails/doctor.ts +77 -0
  85. package/src/trails/draft-promote.ts +949 -0
  86. package/src/trails/guide.ts +106 -0
  87. package/src/trails/load-app.ts +1145 -0
  88. package/src/trails/operator-context.ts +66 -0
  89. package/src/trails/project-context-output.ts +304 -0
  90. package/src/trails/project-context.ts +613 -0
  91. package/src/trails/project.ts +65 -0
  92. package/src/trails/regrade.ts +4951 -0
  93. package/src/trails/release-check.ts +113 -0
  94. package/src/trails/release-smoke.ts +49 -0
  95. package/src/trails/revise.ts +53 -0
  96. package/src/trails/root-dir.ts +21 -0
  97. package/src/trails/run-example.ts +592 -0
  98. package/src/trails/run-examples.ts +149 -0
  99. package/src/trails/run.ts +496 -0
  100. package/src/trails/scaffold-json.ts +60 -0
  101. package/src/trails/scaffold-topo-identity.ts +479 -0
  102. package/src/trails/survey.ts +990 -0
  103. package/src/trails/topo-activation.ts +14 -0
  104. package/src/trails/topo-constants.ts +2 -0
  105. package/src/trails/topo-history.ts +47 -0
  106. package/src/trails/topo-output-schemas.ts +259 -0
  107. package/src/trails/topo-pin.ts +38 -0
  108. package/src/trails/topo-read-support.ts +368 -0
  109. package/src/trails/topo-reports.ts +809 -0
  110. package/src/trails/topo-store-support.ts +323 -0
  111. package/src/trails/topo-support.ts +247 -0
  112. package/src/trails/topo-unpin.ts +61 -0
  113. package/src/trails/topo.ts +92 -0
  114. package/src/trails/validate.ts +348 -0
  115. package/src/trails/version-lifecycle-support.ts +936 -0
  116. package/src/trails/warden-guide.ts +134 -0
  117. package/src/trails/warden.ts +598 -0
  118. package/src/trails/wayfind-diff.ts +716 -0
  119. package/src/trails/wayfind-outline.ts +876 -0
  120. package/src/trails/wayfind.ts +1319 -0
  121. package/src/versions.ts +31 -0
@@ -0,0 +1,106 @@
1
+ /**
2
+ * `guide` trail -- Runtime guidance.
3
+ *
4
+ * Lists trails with descriptions and examples. Detailed guidance is planned for post-v1.
5
+ */
6
+
7
+ import { NotFoundError, Result, trail } from '@ontrails/core';
8
+ import { z } from 'zod';
9
+
10
+ import { withFreshOperatorApp } from './operator-context.js';
11
+ import { trailDetailOutput } from './topo-output-schemas.js';
12
+ import {
13
+ deriveCurrentGuideEntries,
14
+ deriveCurrentTopoDetail,
15
+ readSurfaceLayerNamesFromContext,
16
+ } from './topo-read-support.js';
17
+ import { createCurrentAppExampleInput } from './topo-support.js';
18
+
19
+ // ---------------------------------------------------------------------------
20
+ // Types
21
+ // ---------------------------------------------------------------------------
22
+
23
+ interface GuideEntry {
24
+ readonly description: string;
25
+ readonly exampleCount: number;
26
+ readonly id: string;
27
+ readonly kind: 'trail';
28
+ }
29
+
30
+ type GuideTrailOutput =
31
+ | {
32
+ readonly entries: GuideEntry[];
33
+ readonly mode: 'list';
34
+ }
35
+ | {
36
+ readonly detail: z.output<typeof trailDetailOutput>;
37
+ readonly mode: 'detail';
38
+ };
39
+
40
+ const guideTrailInputSchema = z.object({
41
+ module: z.string().optional().describe('Path to the app module'),
42
+ rootDir: z.string().optional().describe('Workspace root directory'),
43
+ trailId: z.string().optional().describe('Trail ID for detailed guidance'),
44
+ });
45
+
46
+ type GuideTrailInput = z.output<typeof guideTrailInputSchema>;
47
+
48
+ // ---------------------------------------------------------------------------
49
+ // Helpers
50
+ // ---------------------------------------------------------------------------
51
+
52
+ export const guideTrail = trail('guide', {
53
+ description: 'Runtime guidance for trails',
54
+ examples: [
55
+ {
56
+ description: 'Lists all trails with descriptions and example counts',
57
+ input: createCurrentAppExampleInput(),
58
+ name: 'List trail guidance',
59
+ },
60
+ ],
61
+ implementation: async (input: GuideTrailInput, ctx) =>
62
+ withFreshOperatorApp<GuideTrailOutput>(input, ctx, ({ lease, rootDir }) => {
63
+ if (input.trailId) {
64
+ const detail = deriveCurrentTopoDetail(lease.app, input.trailId, {
65
+ overlays: lease.overlays,
66
+ rootDir,
67
+ surfaceLayerNames: readSurfaceLayerNamesFromContext(ctx),
68
+ });
69
+ if (detail === undefined || detail.kind !== 'trail') {
70
+ return Result.err(
71
+ new NotFoundError(`Trail not found: ${input.trailId}`)
72
+ );
73
+ }
74
+ return Result.ok({
75
+ detail,
76
+ mode: 'detail' as const,
77
+ });
78
+ }
79
+
80
+ return Result.ok({
81
+ entries: deriveCurrentGuideEntries(lease.app, {
82
+ rootDir,
83
+ }) as GuideEntry[],
84
+ mode: 'list' as const,
85
+ });
86
+ }),
87
+ input: guideTrailInputSchema,
88
+ intent: 'read',
89
+ output: z.discriminatedUnion('mode', [
90
+ z.object({
91
+ entries: z.array(
92
+ z.object({
93
+ description: z.string(),
94
+ exampleCount: z.number(),
95
+ id: z.string(),
96
+ kind: z.literal('trail'),
97
+ })
98
+ ),
99
+ mode: z.literal('list'),
100
+ }),
101
+ z.object({
102
+ detail: trailDetailOutput,
103
+ mode: z.literal('detail'),
104
+ }),
105
+ ]),
106
+ });