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

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 (155) hide show
  1. package/.turbo/turbo-lint.log +1 -1
  2. package/CHANGELOG.md +13 -0
  3. package/__tests__/examples.test.ts +29 -4
  4. package/dist/src/app.js +2 -2
  5. package/dist/src/app.js.map +1 -1
  6. package/dist/src/clack.d.ts +1 -1
  7. package/dist/src/clack.js +1 -1
  8. package/dist/src/cli.js +4 -3
  9. package/dist/src/cli.js.map +1 -1
  10. package/dist/src/trails/add-surface.d.ts +3 -3
  11. package/dist/src/trails/add-surface.d.ts.map +1 -1
  12. package/dist/src/trails/add-surface.js +46 -24
  13. package/dist/src/trails/add-surface.js.map +1 -1
  14. package/dist/src/trails/add-trail.d.ts +3 -1
  15. package/dist/src/trails/add-trail.d.ts.map +1 -1
  16. package/dist/src/trails/add-trail.js +38 -11
  17. package/dist/src/trails/add-trail.js.map +1 -1
  18. package/dist/src/trails/add-trailhead.d.ts +1 -1
  19. package/dist/src/trails/add-trailhead.d.ts.map +1 -1
  20. package/dist/src/trails/add-trailhead.js +4 -4
  21. package/dist/src/trails/add-verify.d.ts +1 -1
  22. package/dist/src/trails/add-verify.d.ts.map +1 -1
  23. package/dist/src/trails/add-verify.js +7 -6
  24. package/dist/src/trails/add-verify.js.map +1 -1
  25. package/dist/src/trails/create-scaffold.d.ts +1 -1
  26. package/dist/src/trails/create-scaffold.d.ts.map +1 -1
  27. package/dist/src/trails/create-scaffold.js +10 -3
  28. package/dist/src/trails/create-scaffold.js.map +1 -1
  29. package/dist/src/trails/create.d.ts +10 -14
  30. package/dist/src/trails/create.d.ts.map +1 -1
  31. package/dist/src/trails/create.js +42 -37
  32. package/dist/src/trails/create.js.map +1 -1
  33. package/dist/src/trails/dev-clean.d.ts +4 -4
  34. package/dist/src/trails/dev-clean.d.ts.map +1 -1
  35. package/dist/src/trails/dev-clean.js +22 -21
  36. package/dist/src/trails/dev-clean.js.map +1 -1
  37. package/dist/src/trails/dev-reset.d.ts +1 -1
  38. package/dist/src/trails/dev-reset.d.ts.map +1 -1
  39. package/dist/src/trails/dev-reset.js +3 -2
  40. package/dist/src/trails/dev-reset.js.map +1 -1
  41. package/dist/src/trails/dev-stats.d.ts +4 -4
  42. package/dist/src/trails/dev-stats.d.ts.map +1 -1
  43. package/dist/src/trails/dev-stats.js +19 -19
  44. package/dist/src/trails/dev-stats.js.map +1 -1
  45. package/dist/src/trails/dev-support.d.ts +17 -17
  46. package/dist/src/trails/dev-support.d.ts.map +1 -1
  47. package/dist/src/trails/dev-support.js +60 -57
  48. package/dist/src/trails/dev-support.js.map +1 -1
  49. package/dist/src/trails/draft-promote.d.ts +1 -1
  50. package/dist/src/trails/draft-promote.d.ts.map +1 -1
  51. package/dist/src/trails/draft-promote.js +30 -16
  52. package/dist/src/trails/draft-promote.js.map +1 -1
  53. package/dist/src/trails/guide.d.ts +2 -2
  54. package/dist/src/trails/guide.d.ts.map +1 -1
  55. package/dist/src/trails/guide.js +1 -4
  56. package/dist/src/trails/guide.js.map +1 -1
  57. package/dist/src/trails/load-app.d.ts +7 -1
  58. package/dist/src/trails/load-app.d.ts.map +1 -1
  59. package/dist/src/trails/load-app.js +374 -26
  60. package/dist/src/trails/load-app.js.map +1 -1
  61. package/dist/src/trails/survey.d.ts +5 -5
  62. package/dist/src/trails/survey.d.ts.map +1 -1
  63. package/dist/src/trails/survey.js +51 -29
  64. package/dist/src/trails/survey.js.map +1 -1
  65. package/dist/src/trails/topo-export.d.ts +5 -4
  66. package/dist/src/trails/topo-export.d.ts.map +1 -1
  67. package/dist/src/trails/topo-export.js +4 -7
  68. package/dist/src/trails/topo-export.js.map +1 -1
  69. package/dist/src/trails/topo-history.d.ts +6 -10
  70. package/dist/src/trails/topo-history.d.ts.map +1 -1
  71. package/dist/src/trails/topo-history.js +7 -8
  72. package/dist/src/trails/topo-history.js.map +1 -1
  73. package/dist/src/trails/topo-pin.d.ts +5 -9
  74. package/dist/src/trails/topo-pin.d.ts.map +1 -1
  75. package/dist/src/trails/topo-pin.js +5 -9
  76. package/dist/src/trails/topo-pin.js.map +1 -1
  77. package/dist/src/trails/topo-read-support.d.ts +12 -8
  78. package/dist/src/trails/topo-read-support.d.ts.map +1 -1
  79. package/dist/src/trails/topo-read-support.js +71 -82
  80. package/dist/src/trails/topo-read-support.js.map +1 -1
  81. package/dist/src/trails/topo-reports.d.ts +15 -11
  82. package/dist/src/trails/topo-reports.d.ts.map +1 -1
  83. package/dist/src/trails/topo-reports.js +40 -34
  84. package/dist/src/trails/topo-reports.js.map +1 -1
  85. package/dist/src/trails/topo-show.d.ts +4 -4
  86. package/dist/src/trails/topo-show.d.ts.map +1 -1
  87. package/dist/src/trails/topo-show.js +8 -12
  88. package/dist/src/trails/topo-show.js.map +1 -1
  89. package/dist/src/trails/topo-store-support.d.ts +2 -2
  90. package/dist/src/trails/topo-store-support.d.ts.map +1 -1
  91. package/dist/src/trails/topo-store-support.js +22 -22
  92. package/dist/src/trails/topo-store-support.js.map +1 -1
  93. package/dist/src/trails/topo-support.d.ts +19 -30
  94. package/dist/src/trails/topo-support.d.ts.map +1 -1
  95. package/dist/src/trails/topo-support.js +63 -96
  96. package/dist/src/trails/topo-support.js.map +1 -1
  97. package/dist/src/trails/topo-unpin.d.ts +9 -4
  98. package/dist/src/trails/topo-unpin.d.ts.map +1 -1
  99. package/dist/src/trails/topo-unpin.js +9 -4
  100. package/dist/src/trails/topo-unpin.js.map +1 -1
  101. package/dist/src/trails/topo-verify.d.ts +2 -2
  102. package/dist/src/trails/topo-verify.d.ts.map +1 -1
  103. package/dist/src/trails/topo-verify.js +1 -5
  104. package/dist/src/trails/topo-verify.js.map +1 -1
  105. package/dist/src/trails/topo.d.ts +2 -2
  106. package/dist/src/trails/topo.d.ts.map +1 -1
  107. package/dist/src/trails/topo.js +6 -10
  108. package/dist/src/trails/topo.js.map +1 -1
  109. package/dist/src/trails/warden.d.ts +3 -2
  110. package/dist/src/trails/warden.d.ts.map +1 -1
  111. package/dist/src/trails/warden.js +11 -2
  112. package/dist/src/trails/warden.js.map +1 -1
  113. package/dist/src/versions.d.ts +12 -0
  114. package/dist/src/versions.d.ts.map +1 -0
  115. package/dist/src/versions.js +23 -0
  116. package/dist/src/versions.js.map +1 -0
  117. package/dist/tsconfig.tsbuildinfo +1 -1
  118. package/package.json +8 -8
  119. package/src/__tests__/add-trail.test.ts +97 -0
  120. package/src/__tests__/create.test.ts +91 -27
  121. package/src/__tests__/guide.test.ts +10 -5
  122. package/src/__tests__/load-app.test.ts +365 -4
  123. package/src/__tests__/survey.test.ts +143 -67
  124. package/src/__tests__/topo-dev.test.ts +48 -46
  125. package/src/app.ts +2 -2
  126. package/src/clack.ts +1 -1
  127. package/src/cli.ts +4 -3
  128. package/src/trails/add-surface.ts +150 -0
  129. package/src/trails/add-trail.ts +46 -10
  130. package/src/trails/add-verify.ts +11 -6
  131. package/src/trails/create-scaffold.ts +16 -3
  132. package/src/trails/create.ts +76 -71
  133. package/src/trails/dev-clean.ts +25 -21
  134. package/src/trails/dev-reset.ts +3 -2
  135. package/src/trails/dev-stats.ts +22 -19
  136. package/src/trails/dev-support.ts +88 -86
  137. package/src/trails/draft-promote.ts +70 -35
  138. package/src/trails/guide.ts +1 -4
  139. package/src/trails/load-app.ts +511 -32
  140. package/src/trails/survey.ts +60 -35
  141. package/src/trails/topo-export.ts +5 -9
  142. package/src/trails/topo-history.ts +8 -10
  143. package/src/trails/topo-pin.ts +9 -13
  144. package/src/trails/topo-read-support.ts +103 -106
  145. package/src/trails/topo-reports.ts +54 -47
  146. package/src/trails/topo-show.ts +8 -12
  147. package/src/trails/topo-store-support.ts +36 -28
  148. package/src/trails/topo-support.ts +90 -134
  149. package/src/trails/topo-unpin.ts +11 -6
  150. package/src/trails/topo-verify.ts +1 -5
  151. package/src/trails/topo.ts +6 -10
  152. package/src/trails/warden.ts +12 -3
  153. package/src/versions.ts +43 -0
  154. package/tsconfig.tests.json +10 -0
  155. package/src/trails/add-trailhead.ts +0 -121
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Stored-export pipeline for topo persistence.
3
3
  *
4
- * Extracted from topo-support.ts so this branch (trl-131) owns its own file,
5
- * keeping absorb routing clean across the stack.
4
+ * Extracted from topo-support.ts to isolate store persistence concerns,
5
+ * keeping module boundaries clean.
6
6
  */
7
7
  import type { Topo } from '@ontrails/core';
8
8
  import { Result } from '@ontrails/core';
@@ -1 +1 @@
1
- {"version":3,"file":"topo-store-support.d.ts","sourceRoot":"","sources":["../../../src/trails/topo-store-support.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAiB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAcvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAmD1D,eAAO,MAAM,iBAAiB,GAC5B,KAAK,IAAI,EACT,UAAU;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KACtC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAmBzC,CAAC"}
1
+ {"version":3,"file":"topo-store-support.d.ts","sourceRoot":"","sources":["../../../src/trails/topo-store-support.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAiB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAavD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA4D1D,eAAO,MAAM,iBAAiB,GAC5B,KAAK,IAAI,EACT,UAAU;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KACtC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAmBzC,CAAC"}
@@ -1,52 +1,52 @@
1
1
  /**
2
2
  * Stored-export pipeline for topo persistence.
3
3
  *
4
- * Extracted from topo-support.ts so this branch (trl-131) owns its own file,
5
- * keeping absorb routing clean across the stack.
4
+ * Extracted from topo-support.ts to isolate store persistence concerns,
5
+ * keeping module boundaries clean.
6
6
  */
7
7
  import { InternalError, Result } from '@ontrails/core';
8
- import { getStoredTopoExport, persistEstablishedTopoSave, } from '@ontrails/core/internal/topo-store';
9
- import { openWriteTrailsDb, resolveTrailsDir, } from '@ontrails/core/internal/trails-db';
10
- import { writeTrailheadLock, writeTrailheadMap } from '@ontrails/schema';
11
- import { currentGitState, resolveRootDir, topoCounts } from './topo-support.js';
8
+ import { createTopoSnapshot, getStoredTopoExport, } from '@ontrails/core/internal/topo-store';
9
+ import { openWriteTrailsDb, deriveTrailsDir, } from '@ontrails/core/internal/trails-db';
10
+ import { writeSurfaceLock, writeSurfaceMap } from '@ontrails/schema';
11
+ import { deriveRootDir, deriveTopoCounts, readGitState, } from './topo-support.js';
12
12
  const persistAndReadStoredExport = (app, db, rootDir) => {
13
- const saveResult = persistEstablishedTopoSave(db, app, {
14
- ...currentGitState(rootDir),
15
- ...topoCounts(app),
13
+ const snapshotResult = createTopoSnapshot(db, app, {
14
+ ...readGitState(rootDir),
15
+ ...deriveTopoCounts(app),
16
16
  });
17
- if (saveResult.isErr()) {
18
- return saveResult;
17
+ if (snapshotResult.isErr()) {
18
+ return snapshotResult;
19
19
  }
20
- const save = saveResult.value;
21
- const storedExport = getStoredTopoExport(db, save.id);
20
+ const snapshot = snapshotResult.value;
21
+ const storedExport = getStoredTopoExport(db, snapshot.id);
22
22
  if (storedExport === undefined) {
23
- return Result.err(new InternalError(`Missing stored topo export for save "${save.id}"`));
23
+ return Result.err(new InternalError(`Missing stored topo export for snapshot "${snapshot.id}"`));
24
24
  }
25
25
  return Result.ok({
26
- save,
26
+ snapshot,
27
27
  storedExport,
28
28
  });
29
29
  };
30
30
  const writeStoredExportArtifacts = async (storedExport, trailsDir) => {
31
- const mapPath = await writeTrailheadMap(JSON.parse(storedExport.trailheadMapJson), { dir: trailsDir });
32
- const lockPath = await writeTrailheadLock(JSON.parse(storedExport.lockContent), { dir: trailsDir });
31
+ const mapPath = await writeSurfaceMap(JSON.parse(storedExport.surfaceMapJson), { dir: trailsDir });
32
+ const lockPath = await writeSurfaceLock(JSON.parse(storedExport.lockContent), { dir: trailsDir });
33
33
  return {
34
- hash: storedExport.trailheadHash,
34
+ hash: storedExport.surfaceHash,
35
35
  lockPath,
36
36
  mapPath,
37
37
  };
38
38
  };
39
39
  export const exportCurrentTopo = async (app, options) => {
40
- const rootDir = resolveRootDir(options?.rootDir);
40
+ const rootDir = deriveRootDir(options?.rootDir);
41
41
  const db = openWriteTrailsDb({ rootDir });
42
42
  try {
43
43
  const persisted = persistAndReadStoredExport(app, db, rootDir);
44
44
  if (persisted.isErr()) {
45
45
  return persisted;
46
46
  }
47
- const { save, storedExport } = persisted.value;
48
- const artifacts = await writeStoredExportArtifacts(storedExport, resolveTrailsDir({ rootDir }));
49
- return Result.ok({ ...artifacts, save });
47
+ const { snapshot, storedExport } = persisted.value;
48
+ const artifacts = await writeStoredExportArtifacts(storedExport, deriveTrailsDir({ rootDir }));
49
+ return Result.ok({ ...artifacts, snapshot });
50
50
  }
51
51
  finally {
52
52
  db.close();
@@ -1 +1 @@
1
- {"version":3,"file":"topo-store-support.js","sourceRoot":"","sources":["../../../src/trails/topo-store-support.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGzE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhF,MAAM,0BAA0B,GAAG,CACjC,GAAS,EACT,EAAwC,EACxC,OAAe,EAC0D,EAAE;IAC3E,MAAM,UAAU,GAAG,0BAA0B,CAAC,EAAE,EAAE,GAAG,EAAE;QACrD,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3B,GAAG,UAAU,CAAC,GAAG,CAAC;KACnB,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;IAC9B,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEtD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,GAAG,CACf,IAAI,aAAa,CAAC,wCAAwC,IAAI,CAAC,EAAE,GAAG,CAAC,CACtE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,EAAE,CAAC;QACf,IAAI;QACJ,YAAY;KACb,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,KAAK,EACtC,YAA8B,EAC9B,SAAiB,EACiD,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAiB,EACzD,EAAE,GAAG,EAAE,SAAS,EAAE,CACnB,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CACvC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAkB,EACrD,EAAE,GAAG,EAAE,SAAS,EAAE,CACnB,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,YAAY,CAAC,aAAa;QAChC,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,GAAS,EACT,OAAuC,EACG,EAAE;IAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,0BAA0B,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAChD,YAAY,EACZ,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAC9B,CAAC;QACF,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"topo-store-support.js","sourceRoot":"","sources":["../../../src/trails/topo-store-support.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,MAAM,0BAA0B,GAAG,CACjC,GAAS,EACT,EAAwC,EACxC,OAAe,EAIf,EAAE;IACF,MAAM,cAAc,GAAG,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE;QACjD,GAAG,YAAY,CAAC,OAAO,CAAC;QACxB,GAAG,gBAAgB,CAAC,GAAG,CAAC;KACzB,CAAC,CAAC;IACH,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;IACtC,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,GAAG,CACf,IAAI,aAAa,CACf,4CAA4C,QAAQ,CAAC,EAAE,GAAG,CAC3D,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,EAAE,CAAC;QACf,QAAQ;QACR,YAAY;KACb,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,KAAK,EACtC,YAA8B,EAC9B,SAAiB,EACiD,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAe,EACrD,EAAE,GAAG,EAAE,SAAS,EAAE,CACnB,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAgB,EACnD,EAAE,GAAG,EAAE,SAAS,EAAE,CACnB,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,YAAY,CAAC,WAAW;QAC9B,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,GAAS,EACT,OAAuC,EACG,EAAE;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,0BAA0B,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAChD,YAAY,EACZ,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAC7B,CAAC;QACF,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC"}
@@ -1,29 +1,20 @@
1
- import type { Topo } from '@ontrails/core';
2
- import type { TopoPinRecord, TopoSaveRecord } from '@ontrails/core/internal/topo-saves';
1
+ import type { Topo, TopoSnapshot } from '@ontrails/core';
3
2
  import { z } from 'zod';
4
3
  import type { BriefReport, SurveyListReport } from './topo-reports.js';
5
- /** Output schema for a topo save record. Shared across topo trails. */
6
- export declare const topoSaveOutput: z.ZodObject<{
4
+ /** Output schema for a topo snapshot record. Shared across topo trails. */
5
+ export declare const topoSnapshotOutput: z.ZodObject<{
7
6
  createdAt: z.ZodString;
8
7
  gitDirty: z.ZodBoolean;
9
8
  gitSha: z.ZodOptional<z.ZodString>;
10
9
  id: z.ZodString;
11
- provisionCount: z.ZodNumber;
10
+ pinnedAs: z.ZodOptional<z.ZodString>;
11
+ resourceCount: z.ZodNumber;
12
12
  signalCount: z.ZodNumber;
13
13
  trailCount: z.ZodNumber;
14
14
  }, z.core.$strip>;
15
- /** Output schema for a topo pin record. Shared across topo trails. */
16
- export declare const topoPinOutput: z.ZodObject<{
17
- createdAt: z.ZodString;
18
- name: z.ZodString;
19
- saveId: z.ZodString;
20
- }, z.core.$strip>;
21
15
  export declare const DEFAULT_APP_MODULE = "./src/app.ts";
22
16
  export declare const DEFAULT_TOPO_HISTORY_LIMIT = 10;
23
17
  export declare const LOCK_PATH = ".trails/trails.lock";
24
- export declare const LEGACY_LOCK_PATH = ".trails/trailhead.lock";
25
- /** Resolve the lockfile path, preferring the current name with legacy fallback. */
26
- export declare const resolveLockPath: (trailsDir: string) => string;
27
18
  export interface TopoSummaryReport {
28
19
  readonly app: BriefReport;
29
20
  readonly dbPath: string;
@@ -34,16 +25,15 @@ export interface TopoSummaryReport {
34
25
  export interface TopoHistoryReport {
35
26
  readonly dbPath: string;
36
27
  readonly limit: number;
37
- readonly pinCount: number;
38
- readonly pins: TopoPinRecord[];
39
- readonly saveCount: number;
40
- readonly saves: TopoSaveRecord[];
28
+ readonly pinnedCount: number;
29
+ readonly snapshotCount: number;
30
+ readonly snapshots: TopoSnapshot[];
41
31
  }
42
32
  export interface TopoExportReport {
43
33
  readonly hash: string;
44
34
  readonly lockPath: string;
45
35
  readonly mapPath: string;
46
- readonly save: TopoSaveRecord;
36
+ readonly snapshot: TopoSnapshot;
47
37
  }
48
38
  export interface TopoVerifyReport {
49
39
  readonly committedHash: string;
@@ -51,37 +41,36 @@ export interface TopoVerifyReport {
51
41
  readonly lockPath: string;
52
42
  readonly stale: false;
53
43
  }
54
- export declare const resolveRootDir: (cwd?: string) => string;
55
- export declare const currentGitState: (rootDir: string) => {
44
+ export declare const deriveRootDir: (cwd?: string) => string;
45
+ export declare const readGitState: (rootDir: string) => {
56
46
  readonly gitDirty: boolean;
57
47
  readonly gitSha?: string;
58
48
  };
59
- export declare const topoCounts: (app: Topo) => Pick<TopoSaveRecord, "provisionCount" | "signalCount" | "trailCount">;
60
- export declare const isolatedExampleInput: (name: string) => {
49
+ export declare const deriveTopoCounts: (app: Topo) => Pick<TopoSnapshot, "resourceCount" | "signalCount" | "trailCount">;
50
+ export declare const createIsolatedExampleInput: (name: string) => {
61
51
  readonly module: string;
62
52
  readonly rootDir: string;
63
53
  };
64
- export declare const createCurrentTopoSave: (app: Topo, options?: {
54
+ export declare const createCurrentTopoSnapshot: (app: Topo, options?: {
65
55
  readonly rootDir?: string;
66
- }) => TopoSaveRecord;
56
+ }) => TopoSnapshot;
67
57
  export declare const listTopoHistory: (options?: {
68
58
  readonly limit?: number;
69
59
  readonly rootDir?: string;
70
60
  }) => TopoHistoryReport;
71
- export declare const pinCurrentTopo: (app: Topo, input: {
61
+ export declare const pinCurrentTopoSnapshot: (app: Topo, input: {
72
62
  readonly name: string;
73
63
  readonly rootDir?: string;
74
64
  }) => {
75
- readonly pin: TopoPinRecord;
76
- readonly save: TopoSaveRecord;
65
+ readonly snapshot: TopoSnapshot;
77
66
  };
78
- export declare const removeTopoPin: (input: {
67
+ export declare const removePinnedTopoSnapshot: (input: {
79
68
  readonly dryRun: boolean;
80
69
  readonly name: string;
81
70
  readonly rootDir?: string;
82
71
  }) => {
83
72
  readonly dryRun: boolean;
84
- readonly pin?: TopoPinRecord;
85
73
  readonly removed: boolean;
74
+ readonly snapshot?: TopoSnapshot;
86
75
  };
87
76
  //# sourceMappingURL=topo-support.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"topo-support.d.ts","sourceRoot":"","sources":["../../../src/trails/topo-support.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"topo-support.d.ts","sourceRoot":"","sources":["../../../src/trails/topo-support.ts"],"names":[],"mappings":"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"}
@@ -2,41 +2,25 @@ import { existsSync, mkdirSync, rmSync } from 'node:fs';
2
2
  import { tmpdir } from 'node:os';
3
3
  import { join } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
- import { getTopoPin, listTopoPins, listTopoSaves, pinTopoSave, unpinTopoSave, } from '@ontrails/core/internal/topo-saves';
6
- import { persistEstablishedTopoSave } from '@ontrails/core/internal/topo-store';
7
- import { openReadTrailsDb, openWriteTrailsDb, resolveTrailsDbPath, } from '@ontrails/core/internal/trails-db';
5
+ import { createTopoSnapshot as persistTopoSnapshot, listTopoSnapshots as readTopoSnapshots, pinTopoSnapshot, unpinTopoSnapshot, } from '@ontrails/core';
6
+ import { deriveTrailsDbPath } from '@ontrails/core/internal/trails-db';
8
7
  import { z } from 'zod';
9
- /** Output schema for a topo save record. Shared across topo trails. */
10
- export const topoSaveOutput = z.object({
8
+ /** Output schema for a topo snapshot record. Shared across topo trails. */
9
+ export const topoSnapshotOutput = z.object({
11
10
  createdAt: z.string(),
12
11
  gitDirty: z.boolean(),
13
12
  gitSha: z.string().optional(),
14
13
  id: z.string(),
15
- provisionCount: z.number(),
14
+ pinnedAs: z.string().optional(),
15
+ resourceCount: z.number(),
16
16
  signalCount: z.number(),
17
17
  trailCount: z.number(),
18
18
  });
19
- /** Output schema for a topo pin record. Shared across topo trails. */
20
- export const topoPinOutput = z.object({
21
- createdAt: z.string(),
22
- name: z.string(),
23
- saveId: z.string(),
24
- });
25
19
  export const DEFAULT_APP_MODULE = './src/app.ts';
26
20
  export const DEFAULT_TOPO_HISTORY_LIMIT = 10;
27
21
  export const LOCK_PATH = '.trails/trails.lock';
28
- export const LEGACY_LOCK_PATH = '.trails/trailhead.lock';
29
- /** Resolve the lockfile path, preferring the current name with legacy fallback. */
30
- export const resolveLockPath = (trailsDir) => {
31
- const primary = join(trailsDir, 'trails.lock');
32
- if (existsSync(primary)) {
33
- return primary;
34
- }
35
- const legacy = join(trailsDir, 'trailhead.lock');
36
- return existsSync(legacy) ? legacy : primary;
37
- };
38
22
  const EXAMPLE_APP_MODULE = fileURLToPath(new URL('../app.ts', import.meta.url));
39
- export const resolveRootDir = (cwd) => cwd ?? process.cwd();
23
+ export const deriveRootDir = (cwd) => cwd ?? process.cwd();
40
24
  const safeGit = (cwd, args) => {
41
25
  const proc = Bun.spawnSync({
42
26
  cmd: ['git', '-C', cwd, ...args],
@@ -49,7 +33,7 @@ const safeGit = (cwd, args) => {
49
33
  const text = Buffer.from(proc.stdout).toString('utf8').trim();
50
34
  return text.length === 0 ? undefined : text;
51
35
  };
52
- export const currentGitState = (rootDir) => {
36
+ export const readGitState = (rootDir) => {
53
37
  const gitSha = safeGit(rootDir, ['rev-parse', 'HEAD']);
54
38
  const status = safeGit(rootDir, ['status', '--porcelain']);
55
39
  return {
@@ -57,31 +41,31 @@ export const currentGitState = (rootDir) => {
57
41
  ...(gitSha === undefined ? {} : { gitSha }),
58
42
  };
59
43
  };
60
- export const topoCounts = (app) => ({
61
- provisionCount: app.provisions.size,
44
+ export const deriveTopoCounts = (app) => ({
45
+ resourceCount: app.resources.size,
62
46
  signalCount: app.signals.size,
63
47
  trailCount: app.trails.size,
64
48
  });
65
49
  const emptyTopoHistory = (dbPath, limit) => ({
66
50
  dbPath,
67
51
  limit,
68
- pinCount: 0,
69
- pins: [],
70
- saveCount: 0,
71
- saves: [],
52
+ pinnedCount: 0,
53
+ snapshotCount: 0,
54
+ snapshots: [],
72
55
  });
73
- const collectedTopoHistory = (dbPath, limit, pins, allSaves) => ({
56
+ const collectTopoHistory = (dbPath, limit, snapshots) => ({
74
57
  dbPath,
75
58
  limit,
76
- pinCount: pins.length,
77
- pins: [...pins],
78
- saveCount: allSaves.length,
79
- saves: allSaves.slice(0, limit),
59
+ pinnedCount: snapshots.filter((snapshot) => snapshot.pinnedAs !== undefined)
60
+ .length,
61
+ snapshotCount: snapshots.length,
62
+ snapshots: snapshots.slice(0, limit),
63
+ });
64
+ const buildSnapshotInput = (app, rootDir) => ({
65
+ ...readGitState(rootDir),
66
+ ...deriveTopoCounts(app),
80
67
  });
81
- const removeTopoPinWithDb = (input, pin, db) => input.dryRun
82
- ? { dryRun: true, pin, removed: false }
83
- : { dryRun: false, pin, removed: unpinTopoSave(db, input.name) };
84
- export const isolatedExampleInput = (name) => {
68
+ export const createIsolatedExampleInput = (name) => {
85
69
  const rootDir = join(tmpdir(), 'ontrails-trails-examples', name);
86
70
  rmSync(rootDir, { force: true, recursive: true });
87
71
  mkdirSync(rootDir, { recursive: true });
@@ -90,76 +74,59 @@ export const isolatedExampleInput = (name) => {
90
74
  rootDir,
91
75
  };
92
76
  };
93
- export const createCurrentTopoSave = (app, options) => {
94
- const rootDir = resolveRootDir(options?.rootDir);
95
- const db = openWriteTrailsDb({ rootDir });
96
- try {
97
- const result = persistEstablishedTopoSave(db, app, {
98
- ...currentGitState(rootDir),
99
- ...topoCounts(app),
100
- });
101
- if (result.isErr()) {
102
- throw result.error;
103
- }
104
- return result.value;
105
- }
106
- finally {
107
- db.close();
77
+ export const createCurrentTopoSnapshot = (app, options) => {
78
+ const rootDir = deriveRootDir(options?.rootDir);
79
+ const result = persistTopoSnapshot(app, {
80
+ rootDir,
81
+ ...buildSnapshotInput(app, rootDir),
82
+ });
83
+ if (result.isErr()) {
84
+ throw result.error;
108
85
  }
86
+ return result.value;
109
87
  };
110
88
  export const listTopoHistory = (options) => {
111
- const rootDir = resolveRootDir(options?.rootDir);
89
+ const rootDir = deriveRootDir(options?.rootDir);
112
90
  const limit = options?.limit ?? DEFAULT_TOPO_HISTORY_LIMIT;
113
- const dbPath = resolveTrailsDbPath({ rootDir });
91
+ const dbPath = deriveTrailsDbPath({ rootDir });
114
92
  if (!existsSync(dbPath)) {
115
93
  return emptyTopoHistory(dbPath, limit);
116
94
  }
117
- const db = openReadTrailsDb({ rootDir });
118
- try {
119
- return collectedTopoHistory(dbPath, limit, listTopoPins(db), listTopoSaves(db));
120
- }
121
- finally {
122
- db.close();
123
- }
95
+ return collectTopoHistory(dbPath, limit, readTopoSnapshots({ rootDir }));
124
96
  };
125
- export const pinCurrentTopo = (app, input) => {
126
- const rootDir = resolveRootDir(input.rootDir);
127
- const db = openWriteTrailsDb({ rootDir });
128
- try {
129
- const result = persistEstablishedTopoSave(db, app, {
130
- ...currentGitState(rootDir),
131
- ...topoCounts(app),
132
- });
133
- if (result.isErr()) {
134
- throw result.error;
135
- }
136
- const pin = pinTopoSave(db, {
137
- name: input.name,
138
- saveId: result.value.id,
139
- });
140
- return { pin, save: result.value };
97
+ export const pinCurrentTopoSnapshot = (app, input) => {
98
+ const rootDir = deriveRootDir(input.rootDir);
99
+ const created = persistTopoSnapshot(app, {
100
+ rootDir,
101
+ ...buildSnapshotInput(app, rootDir),
102
+ });
103
+ if (created.isErr()) {
104
+ throw created.error;
141
105
  }
142
- finally {
143
- db.close();
106
+ const snapshot = pinTopoSnapshot(created.value.id, input.name, {
107
+ rootDir,
108
+ });
109
+ if (snapshot === undefined) {
110
+ throw new Error(`Missing topo snapshot "${created.value.id}" to pin`);
144
111
  }
112
+ return { snapshot };
145
113
  };
146
- export const removeTopoPin = (input) => {
147
- const rootDir = resolveRootDir(input.rootDir);
148
- if (!existsSync(resolveTrailsDbPath({ rootDir }))) {
114
+ export const removePinnedTopoSnapshot = (input) => {
115
+ const rootDir = deriveRootDir(input.rootDir);
116
+ if (!existsSync(deriveTrailsDbPath({ rootDir }))) {
149
117
  return { dryRun: input.dryRun, removed: false };
150
118
  }
151
- const db = input.dryRun
152
- ? openReadTrailsDb({ rootDir })
153
- : openWriteTrailsDb({ rootDir });
154
- try {
155
- const pin = getTopoPin(db, input.name);
156
- if (pin === undefined) {
157
- return { dryRun: input.dryRun, removed: false };
158
- }
159
- return removeTopoPinWithDb(input, pin, db);
160
- }
161
- finally {
162
- db.close();
119
+ if (input.dryRun) {
120
+ const snapshot = readTopoSnapshots({ pinned: true, rootDir }).find((candidate) => candidate.pinnedAs === input.name);
121
+ return snapshot === undefined
122
+ ? { dryRun: true, removed: false }
123
+ : { dryRun: true, removed: false, snapshot };
163
124
  }
125
+ const snapshot = unpinTopoSnapshot(input.name, { rootDir });
126
+ return {
127
+ dryRun: false,
128
+ removed: snapshot !== undefined,
129
+ ...(snapshot === undefined ? {} : { snapshot }),
130
+ };
164
131
  };
165
132
  //# sourceMappingURL=topo-support.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"topo-support.js","sourceRoot":"","sources":["../../../src/trails/topo-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAOzC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAEzD,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAU,EAAE;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACjD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/C,CAAC,CAAC;AACF,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAiChF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAY,EAAU,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAE7E,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,IAAuB,EAAsB,EAAE;IAC3E,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;QACzB,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAe,EAC2C,EAAE;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3D,OAAO;QACL,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QACnC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,GAAS,EAC8D,EAAE,CAAC,CAAC;IAC3E,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI;IACnC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;IAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;CAC5B,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CACvB,MAAc,EACd,KAAa,EACM,EAAE,CAAC,CAAC;IACvB,MAAM;IACN,KAAK;IACL,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,EAAE;CACV,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAC3B,MAAc,EACd,KAAa,EACb,IAA8B,EAC9B,QAAmC,EAChB,EAAE,CAAC,CAAC;IACvB,MAAM;IACN,KAAK;IACL,QAAQ,EAAE,IAAI,CAAC,MAAM;IACrB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,SAAS,EAAE,QAAQ,CAAC,MAAM;IAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAC1B,KAA0D,EAC1D,GAAkB,EAClB,EAAuC,EAKvC,EAAE,CACF,KAAK,CAAC,MAAM;IACV,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IACvC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAErE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAY,EAC2C,EAAE;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO;QACL,MAAM,EAAE,kBAAkB;QAC1B,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,GAAS,EACT,OAAuC,EACvB,EAAE;IAClB,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,0BAA0B,CAAC,EAAE,EAAE,GAAG,EAAE;YACjD,GAAG,eAAe,CAAC,OAAO,CAAC;YAC3B,GAAG,UAAU,CAAC,GAAG,CAAC;SACnB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YACnB,MAAM,MAAM,CAAC,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAG/B,EAAqB,EAAE;IACtB,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,0BAA0B,CAAC;IAC3D,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,OAAO,oBAAoB,CACzB,MAAM,EACN,KAAK,EACL,YAAY,CAAC,EAAE,CAAC,EAChB,aAAa,CAAC,EAAE,CAAC,CAClB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAS,EACT,KAA2D,EACK,EAAE;IAClE,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,0BAA0B,CAAC,EAAE,EAAE,GAAG,EAAE;YACjD,GAAG,eAAe,CAAC,OAAO,CAAC;YAC3B,GAAG,UAAU,CAAC,GAAG,CAAC;SACnB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YACnB,MAAM,MAAM,CAAC,KAAK,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;SACxB,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAI7B,EAIC,EAAE;IACF,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM;QACrB,CAAC,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClD,CAAC;QACD,OAAO,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"topo-support.js","sourceRoot":"","sources":["../../../src/trails/topo-support.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,15 @@ export declare const topoUnpinTrail: import("@ontrails/core").Trail<{
6
6
  }, {
7
7
  dryRun: boolean;
8
8
  removed: boolean;
9
- pin?: {
9
+ snapshot?: {
10
10
  createdAt: string;
11
- name: string;
12
- saveId: string;
11
+ gitDirty: boolean;
12
+ id: string;
13
+ resourceCount: number;
14
+ signalCount: number;
15
+ trailCount: number;
16
+ gitSha?: string | undefined;
17
+ pinnedAs?: string | undefined;
13
18
  } | undefined;
14
- }>;
19
+ }, never>;
15
20
  //# sourceMappingURL=topo-unpin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"topo-unpin.d.ts","sourceRoot":"","sources":["../../../src/trails/topo-unpin.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAyCzB,CAAC"}
1
+ {"version":3,"file":"topo-unpin.d.ts","sourceRoot":"","sources":["../../../src/trails/topo-unpin.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;SA8CzB,CAAC"}
@@ -1,19 +1,23 @@
1
1
  import { Result, ValidationError, trail } from '@ontrails/core';
2
2
  import { z } from 'zod';
3
- import { isolatedExampleInput, removeTopoPin, topoPinOutput, } from './topo-support.js';
3
+ import { createIsolatedExampleInput, removePinnedTopoSnapshot, topoSnapshotOutput, } from './topo-support.js';
4
4
  export const topoUnpinTrail = trail('topo.unpin', {
5
5
  blaze: (input, ctx) => {
6
6
  if (input.dryRun !== true && input.yes !== true) {
7
7
  return Result.err(new ValidationError('Refusing to remove a pin without `--yes` or `--dry-run`.'));
8
8
  }
9
9
  const rootDir = input.rootDir ?? ctx.cwd ?? process.cwd();
10
- return Result.ok(removeTopoPin({ dryRun: input.dryRun, name: input.name, rootDir }));
10
+ return Result.ok(removePinnedTopoSnapshot({
11
+ dryRun: input.dryRun,
12
+ name: input.name,
13
+ rootDir,
14
+ }));
11
15
  },
12
16
  description: 'Remove a named topo pin',
13
17
  examples: [
14
18
  {
15
19
  input: {
16
- ...isolatedExampleInput('topo-unpin'),
20
+ ...createIsolatedExampleInput('topo-unpin'),
17
21
  dryRun: true,
18
22
  name: 'before-auth-refactor',
19
23
  },
@@ -32,8 +36,9 @@ export const topoUnpinTrail = trail('topo.unpin', {
32
36
  intent: 'destroy',
33
37
  output: z.object({
34
38
  dryRun: z.boolean(),
35
- pin: topoPinOutput.optional(),
36
39
  removed: z.boolean(),
40
+ snapshot: topoSnapshotOutput.optional(),
37
41
  }),
42
+ permit: { scopes: ['topo:delete'] },
38
43
  });
39
44
  //# sourceMappingURL=topo-unpin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"topo-unpin.js","sourceRoot":"","sources":["../../../src/trails/topo-unpin.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,EACL,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,EAAE;IAChD,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,0DAA0D,CAC3D,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,CACd,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CACnE,CAAC;IACJ,CAAC;IACD,WAAW,EAAE,yBAAyB;IACtC,QAAQ,EAAE;QACR;YACE,KAAK,EAAE;gBACL,GAAG,oBAAoB,CAAC,YAAY,CAAC;gBACrC,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,sBAAsB;aAC7B;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,4CAA4C,CAAC;QACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QACrC,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,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE;QAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;KACrB,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"topo-unpin.js","sourceRoot":"","sources":["../../../src/trails/topo-unpin.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,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,EAAE;IAChD,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,0DAA0D,CAC3D,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,CACd,wBAAwB,CAAC;YACvB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO;SACR,CAAC,CACH,CAAC;IACJ,CAAC;IACD,WAAW,EAAE,yBAAyB;IACtC,QAAQ,EAAE;QACR;YACE,KAAK,EAAE;gBACL,GAAG,0BAA0B,CAAC,YAAY,CAAC;gBAC3C,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,sBAAsB;aAC7B;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,4CAA4C,CAAC;QACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QACrC,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,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EAAE;KACxC,CAAC;IACF,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE;CACpC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare const topoVerifyTrail: import("@ontrails/core").Trail<{
2
- module: string;
2
+ module?: string | undefined;
3
3
  rootDir?: string | undefined;
4
- }, import("./topo-support.js").TopoVerifyReport>;
4
+ }, import("./topo-support.js").TopoVerifyReport, never>;
5
5
  //# sourceMappingURL=topo-verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"topo-verify.d.ts","sourceRoot":"","sources":["../../../src/trails/topo-verify.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe;;;gDAqB1B,CAAC"}
1
+ {"version":3,"file":"topo-verify.d.ts","sourceRoot":"","sources":["../../../src/trails/topo-verify.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe;;;uDAkB1B,CAAC"}
@@ -2,7 +2,6 @@ import { trail } from '@ontrails/core';
2
2
  import { z } from 'zod';
3
3
  import { loadApp } from './load-app.js';
4
4
  import { verifyCurrentTopo } from './topo-read-support.js';
5
- import { DEFAULT_APP_MODULE } from './topo-support.js';
6
5
  export const topoVerifyTrail = trail('topo.verify', {
7
6
  blaze: async (input, ctx) => {
8
7
  const rootDir = input.rootDir ?? ctx.cwd ?? process.cwd();
@@ -11,10 +10,7 @@ export const topoVerifyTrail = trail('topo.verify', {
11
10
  },
12
11
  description: 'Verify that the committed lockfile matches the current topo',
13
12
  input: z.object({
14
- module: z
15
- .string()
16
- .default(DEFAULT_APP_MODULE)
17
- .describe('Path to the app module'),
13
+ module: z.string().optional().describe('Path to the app module'),
18
14
  rootDir: z.string().optional().describe('Workspace root directory'),
19
15
  }),
20
16
  intent: 'read',
@@ -1 +1 @@
1
- {"version":3,"file":"topo-verify.js","sourceRoot":"","sources":["../../../src/trails/topo-verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,EAAE;IAClD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,iBAAiB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,WAAW,EAAE,6DAA6D;IAC1E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,OAAO,CAAC,kBAAkB,CAAC;aAC3B,QAAQ,CAAC,wBAAwB,CAAC;QACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACpE,CAAC;IACF,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;KACxB,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"topo-verify.js","sourceRoot":"","sources":["../../../src/trails/topo-verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,EAAE;IAClD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,iBAAiB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,WAAW,EAAE,6DAA6D;IAC1E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACpE,CAAC;IACF,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;KACxB,CAAC;CACH,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare const topoTrail: import("@ontrails/core").Trail<{
2
- module: string;
2
+ module?: string | undefined;
3
3
  rootDir?: string | undefined;
4
- }, import("./topo-support.js").TopoSummaryReport>;
4
+ }, import("./topo-support.js").TopoSummaryReport, never>;
5
5
  //# sourceMappingURL=topo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"topo.d.ts","sourceRoot":"","sources":["../../../src/trails/topo.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,SAAS;;;iDAsBpB,CAAC"}
1
+ {"version":3,"file":"topo.d.ts","sourceRoot":"","sources":["../../../src/trails/topo.ts"],"names":[],"mappings":"AAiDA,eAAO,MAAM,SAAS;;;wDAmBpB,CAAC"}