@ontrails/trails 1.0.0-beta.5 → 1.0.0-beta.50

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 (175) hide show
  1. package/CHANGELOG.md +1213 -4
  2. package/README.md +29 -0
  3. package/package.json +35 -7
  4. package/src/app.ts +147 -3
  5. package/src/cli.ts +358 -11
  6. package/src/completions.ts +240 -0
  7. package/src/lifecycle-source-io.ts +33 -0
  8. package/src/load-app-mirror.ts +202 -0
  9. package/src/local-state-io.ts +173 -0
  10. package/src/mcp-app.ts +42 -0
  11. package/src/mcp-options.ts +92 -0
  12. package/src/mcp.ts +8 -0
  13. package/src/project-writes.ts +377 -0
  14. package/src/regrade/audit.ts +571 -0
  15. package/src/regrade/config.ts +152 -0
  16. package/src/regrade/history.ts +636 -0
  17. package/src/regrade/lifecycle.ts +76 -0
  18. package/src/regrade/live-api-preserve.ts +123 -0
  19. package/src/regrade/plan-artifact.ts +461 -0
  20. package/src/regrade/plan-derivation.ts +301 -0
  21. package/src/regrade/prepared-run.ts +259 -0
  22. package/src/regrade/receipt-history.ts +446 -0
  23. package/src/regrade/source-transaction.ts +185 -0
  24. package/src/release/bindings.ts +58 -0
  25. package/src/release/check.ts +1146 -0
  26. package/src/release/cli-bundle.ts +575 -0
  27. package/src/release/config.ts +73 -0
  28. package/src/release/contract-facts.ts +425 -0
  29. package/src/release/homebrew.ts +219 -0
  30. package/src/release/index.ts +180 -0
  31. package/src/release/lock-roundtrip-smoke.ts +230 -0
  32. package/src/release/native-bun-publish.ts +964 -0
  33. package/src/release/native-bun-registry.ts +830 -0
  34. package/src/release/notes-cli.ts +171 -0
  35. package/src/release/notes.ts +390 -0
  36. package/src/release/pack-coherence.ts +455 -0
  37. package/src/release/package-route-facts.ts +146 -0
  38. package/src/release/packed-artifacts-smoke.ts +236 -0
  39. package/src/release/policy.ts +1700 -0
  40. package/src/release/semver.ts +104 -0
  41. package/src/release/smoke.ts +56 -0
  42. package/src/release/wayfinder-dogfood-smoke.ts +760 -0
  43. package/src/retired-topo-command.ts +36 -0
  44. package/src/run-adapter-check.ts +76 -0
  45. package/src/run-collision.ts +126 -0
  46. package/src/run-completions-install.ts +179 -0
  47. package/src/run-example.ts +149 -0
  48. package/src/run-examples.ts +148 -0
  49. package/src/run-quiet.ts +75 -0
  50. package/src/run-regrade-progress.ts +47 -0
  51. package/src/run-release-check.ts +74 -0
  52. package/src/run-schema.ts +74 -0
  53. package/src/run-trace.ts +273 -0
  54. package/src/run-warden.ts +39 -0
  55. package/src/run-watch.ts +432 -0
  56. package/src/run-wayfind-outline.ts +170 -0
  57. package/src/scaffold-version-sync.ts +183 -0
  58. package/src/scaffold-versions.generated.ts +12 -0
  59. package/src/trails/adapter-check.ts +244 -0
  60. package/src/trails/add-surface.ts +99 -45
  61. package/src/trails/add-trail.ts +84 -37
  62. package/src/trails/add-verify.ts +100 -30
  63. package/src/trails/compile.ts +58 -0
  64. package/src/trails/completions-complete.ts +165 -0
  65. package/src/trails/completions.ts +47 -0
  66. package/src/trails/create-adapter.ts +785 -0
  67. package/src/trails/create-scaffold.ts +402 -106
  68. package/src/trails/create-versions.ts +62 -0
  69. package/src/trails/create.ts +186 -72
  70. package/src/trails/deprecate.ts +59 -0
  71. package/src/trails/dev-clean.ts +82 -0
  72. package/src/trails/dev-reset.ts +50 -0
  73. package/src/trails/dev-stats.ts +72 -0
  74. package/src/trails/dev-support.ts +360 -0
  75. package/src/trails/doctor.ts +77 -0
  76. package/src/trails/draft-promote.ts +949 -0
  77. package/src/trails/guide.ts +70 -68
  78. package/src/trails/load-app.ts +1123 -15
  79. package/src/trails/operator-context.ts +66 -0
  80. package/src/trails/project.ts +17 -3
  81. package/src/trails/regrade.ts +4497 -0
  82. package/src/trails/release-check.ts +113 -0
  83. package/src/trails/release-smoke.ts +49 -0
  84. package/src/trails/revise.ts +53 -0
  85. package/src/trails/root-dir.ts +21 -0
  86. package/src/trails/run-example.ts +475 -0
  87. package/src/trails/run-examples.ts +129 -0
  88. package/src/trails/run.ts +434 -0
  89. package/src/trails/scaffold-json.ts +58 -0
  90. package/src/trails/survey.ts +877 -214
  91. package/src/trails/topo-activation.ts +14 -0
  92. package/src/trails/topo-constants.ts +2 -0
  93. package/src/trails/topo-history.ts +47 -0
  94. package/src/trails/topo-output-schemas.ts +259 -0
  95. package/src/trails/topo-pin.ts +38 -0
  96. package/src/trails/topo-read-support.ts +368 -0
  97. package/src/trails/topo-reports.ts +809 -0
  98. package/src/trails/topo-store-support.ts +323 -0
  99. package/src/trails/topo-support.ts +228 -0
  100. package/src/trails/topo-unpin.ts +61 -0
  101. package/src/trails/topo.ts +92 -0
  102. package/src/trails/validate.ts +27 -0
  103. package/src/trails/version-lifecycle-support.ts +936 -0
  104. package/src/trails/warden-guide.ts +134 -0
  105. package/src/trails/warden.ts +198 -58
  106. package/src/trails/wayfind-outline.ts +876 -0
  107. package/src/trails/wayfind.ts +1053 -0
  108. package/src/versions.ts +31 -0
  109. package/.turbo/turbo-build.log +0 -1
  110. package/.turbo/turbo-lint.log +0 -3
  111. package/.turbo/turbo-typecheck.log +0 -1
  112. package/__tests__/examples.test.ts +0 -6
  113. package/dist/bin/trails.d.ts +0 -3
  114. package/dist/bin/trails.d.ts.map +0 -1
  115. package/dist/bin/trails.js +0 -4
  116. package/dist/bin/trails.js.map +0 -1
  117. package/dist/src/app.d.ts +0 -2
  118. package/dist/src/app.d.ts.map +0 -1
  119. package/dist/src/app.js +0 -11
  120. package/dist/src/app.js.map +0 -1
  121. package/dist/src/clack.d.ts +0 -9
  122. package/dist/src/clack.d.ts.map +0 -1
  123. package/dist/src/clack.js +0 -84
  124. package/dist/src/clack.js.map +0 -1
  125. package/dist/src/cli.d.ts +0 -2
  126. package/dist/src/cli.d.ts.map +0 -1
  127. package/dist/src/cli.js +0 -13
  128. package/dist/src/cli.js.map +0 -1
  129. package/dist/src/trails/add-surface.d.ts +0 -13
  130. package/dist/src/trails/add-surface.d.ts.map +0 -1
  131. package/dist/src/trails/add-surface.js +0 -88
  132. package/dist/src/trails/add-surface.js.map +0 -1
  133. package/dist/src/trails/add-trail.d.ts +0 -10
  134. package/dist/src/trails/add-trail.d.ts.map +0 -1
  135. package/dist/src/trails/add-trail.js +0 -77
  136. package/dist/src/trails/add-trail.js.map +0 -1
  137. package/dist/src/trails/add-verify.d.ts +0 -10
  138. package/dist/src/trails/add-verify.d.ts.map +0 -1
  139. package/dist/src/trails/add-verify.js +0 -67
  140. package/dist/src/trails/add-verify.js.map +0 -1
  141. package/dist/src/trails/create-scaffold.d.ts +0 -15
  142. package/dist/src/trails/create-scaffold.d.ts.map +0 -1
  143. package/dist/src/trails/create-scaffold.js +0 -288
  144. package/dist/src/trails/create-scaffold.js.map +0 -1
  145. package/dist/src/trails/create.d.ts +0 -22
  146. package/dist/src/trails/create.d.ts.map +0 -1
  147. package/dist/src/trails/create.js +0 -121
  148. package/dist/src/trails/create.js.map +0 -1
  149. package/dist/src/trails/guide.d.ts +0 -11
  150. package/dist/src/trails/guide.d.ts.map +0 -1
  151. package/dist/src/trails/guide.js +0 -80
  152. package/dist/src/trails/guide.js.map +0 -1
  153. package/dist/src/trails/load-app.d.ts +0 -4
  154. package/dist/src/trails/load-app.d.ts.map +0 -1
  155. package/dist/src/trails/load-app.js +0 -24
  156. package/dist/src/trails/load-app.js.map +0 -1
  157. package/dist/src/trails/project.d.ts +0 -8
  158. package/dist/src/trails/project.d.ts.map +0 -1
  159. package/dist/src/trails/project.js +0 -43
  160. package/dist/src/trails/project.js.map +0 -1
  161. package/dist/src/trails/survey.d.ts +0 -31
  162. package/dist/src/trails/survey.d.ts.map +0 -1
  163. package/dist/src/trails/survey.js +0 -221
  164. package/dist/src/trails/survey.js.map +0 -1
  165. package/dist/src/trails/warden.d.ts +0 -19
  166. package/dist/src/trails/warden.d.ts.map +0 -1
  167. package/dist/src/trails/warden.js +0 -88
  168. package/dist/src/trails/warden.js.map +0 -1
  169. package/dist/tsconfig.tsbuildinfo +0 -1
  170. package/src/__tests__/create.test.ts +0 -349
  171. package/src/__tests__/guide.test.ts +0 -91
  172. package/src/__tests__/load-app.test.ts +0 -15
  173. package/src/__tests__/survey.test.ts +0 -159
  174. package/src/__tests__/warden.test.ts +0 -74
  175. package/tsconfig.json +0 -9
@@ -0,0 +1,66 @@
1
+ import type { Result } from '@ontrails/core';
2
+
3
+ import { tryLoadFreshAppLease } from './load-app.js';
4
+ import type { FreshAppLease } from './load-app.js';
5
+ import { resolveTrailRootDir } from './root-dir.js';
6
+
7
+ interface RootDirInput {
8
+ readonly rootDir?: string | undefined;
9
+ }
10
+
11
+ interface FreshAppInput extends RootDirInput {
12
+ readonly module?: string | undefined;
13
+ }
14
+
15
+ interface RootDirContext {
16
+ readonly cwd?: string | undefined;
17
+ }
18
+
19
+ interface FreshAppContext {
20
+ readonly lease: FreshAppLease;
21
+ readonly rootDir: string;
22
+ }
23
+
24
+ export const withOperatorRootDir = async <T>(
25
+ input: RootDirInput,
26
+ ctx: RootDirContext,
27
+ consume: (rootDir: string) => Result<T, Error> | Promise<Result<T, Error>>
28
+ ): Promise<Result<T, Error>> => {
29
+ const rootDirResult = resolveTrailRootDir(input.rootDir, ctx.cwd);
30
+ if (rootDirResult.isErr()) {
31
+ return rootDirResult;
32
+ }
33
+ return await consume(rootDirResult.value);
34
+ };
35
+
36
+ export const withFreshAppLease = async <T>(
37
+ modulePath: string | undefined,
38
+ rootDir: string,
39
+ consume: (
40
+ lease: FreshAppLease
41
+ ) => Result<T, Error> | Promise<Result<T, Error>>
42
+ ): Promise<Result<T, Error>> => {
43
+ const leaseResult = await tryLoadFreshAppLease(modulePath, rootDir);
44
+ if (leaseResult.isErr()) {
45
+ return leaseResult;
46
+ }
47
+ const lease = leaseResult.value;
48
+ try {
49
+ return await consume(lease);
50
+ } finally {
51
+ lease.release();
52
+ }
53
+ };
54
+
55
+ export const withFreshOperatorApp = async <T>(
56
+ input: FreshAppInput,
57
+ ctx: RootDirContext,
58
+ consume: (
59
+ context: FreshAppContext
60
+ ) => Result<T, Error> | Promise<Result<T, Error>>
61
+ ): Promise<Result<T, Error>> =>
62
+ withOperatorRootDir(input, ctx, (rootDir) =>
63
+ withFreshAppLease(input.module, rootDir, (lease) =>
64
+ consume({ lease, rootDir })
65
+ )
66
+ );
@@ -5,10 +5,24 @@
5
5
  import { existsSync } from 'node:fs';
6
6
  import { join } from 'node:path';
7
7
 
8
+ import { isDraftMarkedFile } from '@ontrails/warden';
9
+
8
10
  /** Return all TypeScript entries in a project's src directory. */
9
- const scanSourceEntries = (srcDir: string): string[] => [
10
- ...new Bun.Glob('*.ts').scanSync({ cwd: srcDir }),
11
- ];
11
+ const sourceEntryPriority = (entry: string): number => {
12
+ if (entry === 'app.ts') {
13
+ return 0;
14
+ }
15
+ return isDraftMarkedFile(entry) ? 2 : 1;
16
+ };
17
+
18
+ const scanSourceEntries = (srcDir: string): string[] =>
19
+ [...new Bun.Glob('*.ts').scanSync({ cwd: srcDir })].toSorted((a, b) => {
20
+ const priority = sourceEntryPriority(a) - sourceEntryPriority(b);
21
+ if (priority === 0) {
22
+ return a.localeCompare(b);
23
+ }
24
+ return priority;
25
+ });
12
26
 
13
27
  /** Resolve an entry to an app import if it contains topo(). */
14
28
  const toTopoImport = async (