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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +61 -16
  3. package/package.json +9 -8
  4. package/src/activation-provenance.ts +111 -0
  5. package/src/activation-source-compatibility.ts +430 -0
  6. package/src/activation-source-projection.ts +221 -0
  7. package/src/activation-source.ts +91 -0
  8. package/src/blob-ref.ts +51 -0
  9. package/src/context.ts +4 -0
  10. package/src/{internal/cross-batch.ts → cross-batch.ts} +3 -11
  11. package/src/detours.ts +8 -0
  12. package/src/draft.ts +4 -0
  13. package/src/error-projection.ts +51 -0
  14. package/src/errors.ts +192 -39
  15. package/src/execute.ts +443 -44
  16. package/src/fire.ts +965 -91
  17. package/src/index.ts +285 -38
  18. package/src/layer-projection.ts +192 -0
  19. package/src/layer.ts +32 -1
  20. package/src/observe.ts +361 -0
  21. package/src/permits.ts +12 -0
  22. package/src/redaction/patterns.ts +6 -3
  23. package/src/resilience.ts +8 -8
  24. package/src/resource-config.ts +477 -44
  25. package/src/resource.ts +21 -1
  26. package/src/result.ts +18 -0
  27. package/src/run.ts +2 -2
  28. package/src/schedule-runtime.ts +689 -0
  29. package/src/schedule.ts +324 -0
  30. package/src/serialization.ts +90 -57
  31. package/src/signal-diagnostics.ts +633 -0
  32. package/src/{internal/signal-ref.ts → signal-ref.ts} +1 -1
  33. package/src/signal.ts +37 -0
  34. package/src/store/accessor-protocol.ts +5 -5
  35. package/src/structured-examples.ts +245 -0
  36. package/src/surface-derivation.ts +91 -0
  37. package/src/surface-filter.ts +7 -13
  38. package/src/topo.ts +386 -6
  39. package/src/tracing.ts +345 -0
  40. package/src/trail.ts +168 -22
  41. package/src/trails/derive-trail.ts +1 -1
  42. package/src/trails/ingest.ts +7 -15
  43. package/src/{internal/trails-db.ts → trails-db.ts} +42 -21
  44. package/src/transport-error-map.ts +146 -28
  45. package/src/types.ts +82 -28
  46. package/src/validate-established-topo.ts +6 -0
  47. package/src/validate-topo.ts +212 -5
  48. package/src/validation.ts +58 -1
  49. package/src/webhook.ts +276 -0
  50. package/src/{internal/zod-wrappers.ts → zod-wrappers.ts} +0 -6
  51. package/.turbo/turbo-build.log +0 -1
  52. package/.turbo/turbo-lint.log +0 -3
  53. package/.turbo/turbo-typecheck.log +0 -1
  54. package/dist/blob-ref.d.ts +0 -20
  55. package/dist/blob-ref.d.ts.map +0 -1
  56. package/dist/blob-ref.js +0 -22
  57. package/dist/blob-ref.js.map +0 -1
  58. package/dist/branded.d.ts +0 -36
  59. package/dist/branded.d.ts.map +0 -1
  60. package/dist/branded.js +0 -89
  61. package/dist/branded.js.map +0 -1
  62. package/dist/collections.d.ts +0 -31
  63. package/dist/collections.d.ts.map +0 -1
  64. package/dist/collections.js +0 -60
  65. package/dist/collections.js.map +0 -1
  66. package/dist/context.d.ts +0 -22
  67. package/dist/context.d.ts.map +0 -1
  68. package/dist/context.js +0 -37
  69. package/dist/context.js.map +0 -1
  70. package/dist/contour.d.ts +0 -81
  71. package/dist/contour.d.ts.map +0 -1
  72. package/dist/contour.js +0 -176
  73. package/dist/contour.js.map +0 -1
  74. package/dist/cross-schema.d.ts +0 -18
  75. package/dist/cross-schema.d.ts.map +0 -1
  76. package/dist/cross-schema.js +0 -29
  77. package/dist/cross-schema.js.map +0 -1
  78. package/dist/derive.d.ts +0 -44
  79. package/dist/derive.d.ts.map +0 -1
  80. package/dist/derive.js +0 -149
  81. package/dist/derive.js.map +0 -1
  82. package/dist/draft.d.ts +0 -28
  83. package/dist/draft.d.ts.map +0 -1
  84. package/dist/draft.js +0 -157
  85. package/dist/draft.js.map +0 -1
  86. package/dist/errors.d.ts +0 -141
  87. package/dist/errors.d.ts.map +0 -1
  88. package/dist/errors.js +0 -185
  89. package/dist/errors.js.map +0 -1
  90. package/dist/execute.d.ts +0 -52
  91. package/dist/execute.d.ts.map +0 -1
  92. package/dist/execute.js +0 -511
  93. package/dist/execute.js.map +0 -1
  94. package/dist/fetch.d.ts +0 -15
  95. package/dist/fetch.d.ts.map +0 -1
  96. package/dist/fetch.js +0 -102
  97. package/dist/fetch.js.map +0 -1
  98. package/dist/fire.d.ts +0 -43
  99. package/dist/fire.d.ts.map +0 -1
  100. package/dist/fire.js +0 -185
  101. package/dist/fire.js.map +0 -1
  102. package/dist/guards.d.ts +0 -17
  103. package/dist/guards.d.ts.map +0 -1
  104. package/dist/guards.js +0 -25
  105. package/dist/guards.js.map +0 -1
  106. package/dist/index.d.ts +0 -59
  107. package/dist/index.d.ts.map +0 -1
  108. package/dist/index.js +0 -61
  109. package/dist/index.js.map +0 -1
  110. package/dist/internal/cross-batch.d.ts +0 -44
  111. package/dist/internal/cross-batch.d.ts.map +0 -1
  112. package/dist/internal/cross-batch.js +0 -58
  113. package/dist/internal/cross-batch.js.map +0 -1
  114. package/dist/internal/fork-ctx.d.ts +0 -41
  115. package/dist/internal/fork-ctx.d.ts.map +0 -1
  116. package/dist/internal/fork-ctx.js +0 -47
  117. package/dist/internal/fork-ctx.js.map +0 -1
  118. package/dist/internal/signal-ref.d.ts +0 -15
  119. package/dist/internal/signal-ref.d.ts.map +0 -1
  120. package/dist/internal/signal-ref.js +0 -41
  121. package/dist/internal/signal-ref.js.map +0 -1
  122. package/dist/internal/topo-saves.d.ts +0 -53
  123. package/dist/internal/topo-saves.d.ts.map +0 -1
  124. package/dist/internal/topo-saves.js +0 -449
  125. package/dist/internal/topo-saves.js.map +0 -1
  126. package/dist/internal/topo-snapshots.d.ts +0 -57
  127. package/dist/internal/topo-snapshots.d.ts.map +0 -1
  128. package/dist/internal/topo-snapshots.js +0 -372
  129. package/dist/internal/topo-snapshots.js.map +0 -1
  130. package/dist/internal/topo-store-read.d.ts +0 -70
  131. package/dist/internal/topo-store-read.d.ts.map +0 -1
  132. package/dist/internal/topo-store-read.js +0 -221
  133. package/dist/internal/topo-store-read.js.map +0 -1
  134. package/dist/internal/topo-store.d.ts +0 -26
  135. package/dist/internal/topo-store.d.ts.map +0 -1
  136. package/dist/internal/topo-store.js +0 -621
  137. package/dist/internal/topo-store.js.map +0 -1
  138. package/dist/internal/tracing.d.ts +0 -98
  139. package/dist/internal/tracing.d.ts.map +0 -1
  140. package/dist/internal/tracing.js +0 -102
  141. package/dist/internal/tracing.js.map +0 -1
  142. package/dist/internal/trails-db.d.ts +0 -16
  143. package/dist/internal/trails-db.d.ts.map +0 -1
  144. package/dist/internal/trails-db.js +0 -118
  145. package/dist/internal/trails-db.js.map +0 -1
  146. package/dist/internal/zod-wrappers.d.ts +0 -40
  147. package/dist/internal/zod-wrappers.d.ts.map +0 -1
  148. package/dist/internal/zod-wrappers.js +0 -59
  149. package/dist/internal/zod-wrappers.js.map +0 -1
  150. package/dist/layer.d.ts +0 -23
  151. package/dist/layer.d.ts.map +0 -1
  152. package/dist/layer.js +0 -21
  153. package/dist/layer.js.map +0 -1
  154. package/dist/path-security.d.ts +0 -28
  155. package/dist/path-security.d.ts.map +0 -1
  156. package/dist/path-security.js +0 -63
  157. package/dist/path-security.js.map +0 -1
  158. package/dist/patterns/bulk.d.ts +0 -15
  159. package/dist/patterns/bulk.d.ts.map +0 -1
  160. package/dist/patterns/bulk.js +0 -14
  161. package/dist/patterns/bulk.js.map +0 -1
  162. package/dist/patterns/change.d.ts +0 -10
  163. package/dist/patterns/change.d.ts.map +0 -1
  164. package/dist/patterns/change.js +0 -10
  165. package/dist/patterns/change.js.map +0 -1
  166. package/dist/patterns/date-range.d.ts +0 -10
  167. package/dist/patterns/date-range.d.ts.map +0 -1
  168. package/dist/patterns/date-range.js +0 -10
  169. package/dist/patterns/date-range.js.map +0 -1
  170. package/dist/patterns/index.d.ts +0 -9
  171. package/dist/patterns/index.d.ts.map +0 -1
  172. package/dist/patterns/index.js +0 -9
  173. package/dist/patterns/index.js.map +0 -1
  174. package/dist/patterns/pagination.d.ts +0 -18
  175. package/dist/patterns/pagination.d.ts.map +0 -1
  176. package/dist/patterns/pagination.js +0 -18
  177. package/dist/patterns/pagination.js.map +0 -1
  178. package/dist/patterns/progress.d.ts +0 -11
  179. package/dist/patterns/progress.d.ts.map +0 -1
  180. package/dist/patterns/progress.js +0 -11
  181. package/dist/patterns/progress.js.map +0 -1
  182. package/dist/patterns/sorting.d.ts +0 -13
  183. package/dist/patterns/sorting.d.ts.map +0 -1
  184. package/dist/patterns/sorting.js +0 -10
  185. package/dist/patterns/sorting.js.map +0 -1
  186. package/dist/patterns/status.d.ts +0 -15
  187. package/dist/patterns/status.d.ts.map +0 -1
  188. package/dist/patterns/status.js +0 -9
  189. package/dist/patterns/status.js.map +0 -1
  190. package/dist/patterns/timestamps.d.ts +0 -10
  191. package/dist/patterns/timestamps.d.ts.map +0 -1
  192. package/dist/patterns/timestamps.js +0 -10
  193. package/dist/patterns/timestamps.js.map +0 -1
  194. package/dist/redaction/index.d.ts +0 -4
  195. package/dist/redaction/index.d.ts.map +0 -1
  196. package/dist/redaction/index.js +0 -3
  197. package/dist/redaction/index.js.map +0 -1
  198. package/dist/redaction/patterns.d.ts +0 -9
  199. package/dist/redaction/patterns.d.ts.map +0 -1
  200. package/dist/redaction/patterns.js +0 -39
  201. package/dist/redaction/patterns.js.map +0 -1
  202. package/dist/redaction/redactor.d.ts +0 -27
  203. package/dist/redaction/redactor.d.ts.map +0 -1
  204. package/dist/redaction/redactor.js +0 -89
  205. package/dist/redaction/redactor.js.map +0 -1
  206. package/dist/resilience.d.ts +0 -34
  207. package/dist/resilience.d.ts.map +0 -1
  208. package/dist/resilience.js +0 -164
  209. package/dist/resilience.js.map +0 -1
  210. package/dist/resource-config.d.ts +0 -22
  211. package/dist/resource-config.d.ts.map +0 -1
  212. package/dist/resource-config.js +0 -210
  213. package/dist/resource-config.js.map +0 -1
  214. package/dist/resource.d.ts +0 -74
  215. package/dist/resource.d.ts.map +0 -1
  216. package/dist/resource.js +0 -61
  217. package/dist/resource.js.map +0 -1
  218. package/dist/result.d.ts +0 -57
  219. package/dist/result.d.ts.map +0 -1
  220. package/dist/result.js +0 -156
  221. package/dist/result.js.map +0 -1
  222. package/dist/run.d.ts +0 -28
  223. package/dist/run.d.ts.map +0 -1
  224. package/dist/run.js +0 -35
  225. package/dist/run.js.map +0 -1
  226. package/dist/serialization.d.ts +0 -27
  227. package/dist/serialization.d.ts.map +0 -1
  228. package/dist/serialization.js +0 -154
  229. package/dist/serialization.js.map +0 -1
  230. package/dist/signal.d.ts +0 -33
  231. package/dist/signal.d.ts.map +0 -1
  232. package/dist/signal.js +0 -17
  233. package/dist/signal.js.map +0 -1
  234. package/dist/store/accessor-protocol.d.ts +0 -51
  235. package/dist/store/accessor-protocol.d.ts.map +0 -1
  236. package/dist/store/accessor-protocol.js +0 -2
  237. package/dist/store/accessor-protocol.js.map +0 -1
  238. package/dist/store/index.d.ts +0 -2
  239. package/dist/store/index.d.ts.map +0 -1
  240. package/dist/store/index.js +0 -2
  241. package/dist/store/index.js.map +0 -1
  242. package/dist/surface-filter.d.ts +0 -13
  243. package/dist/surface-filter.d.ts.map +0 -1
  244. package/dist/surface-filter.js +0 -76
  245. package/dist/surface-filter.js.map +0 -1
  246. package/dist/topo-store.d.ts +0 -62
  247. package/dist/topo-store.d.ts.map +0 -1
  248. package/dist/topo-store.js +0 -319
  249. package/dist/topo-store.js.map +0 -1
  250. package/dist/topo.d.ts +0 -39
  251. package/dist/topo.d.ts.map +0 -1
  252. package/dist/topo.js +0 -241
  253. package/dist/topo.js.map +0 -1
  254. package/dist/trail.d.ts +0 -163
  255. package/dist/trail.d.ts.map +0 -1
  256. package/dist/trail.js +0 -75
  257. package/dist/trail.js.map +0 -1
  258. package/dist/trails/derive-trail.d.ts +0 -66
  259. package/dist/trails/derive-trail.d.ts.map +0 -1
  260. package/dist/trails/derive-trail.js +0 -378
  261. package/dist/trails/derive-trail.js.map +0 -1
  262. package/dist/trails/index.d.ts +0 -5
  263. package/dist/trails/index.d.ts.map +0 -1
  264. package/dist/trails/index.js +0 -3
  265. package/dist/trails/index.js.map +0 -1
  266. package/dist/trails/ingest.d.ts +0 -24
  267. package/dist/trails/ingest.d.ts.map +0 -1
  268. package/dist/trails/ingest.js +0 -63
  269. package/dist/trails/ingest.js.map +0 -1
  270. package/dist/transport-error-map.d.ts +0 -106
  271. package/dist/transport-error-map.d.ts.map +0 -1
  272. package/dist/transport-error-map.js +0 -24
  273. package/dist/transport-error-map.js.map +0 -1
  274. package/dist/type-checks.test-d.d.ts +0 -71
  275. package/dist/type-checks.test-d.d.ts.map +0 -1
  276. package/dist/type-checks.test-d.js +0 -12
  277. package/dist/type-checks.test-d.js.map +0 -1
  278. package/dist/type-utils.d.ts +0 -33
  279. package/dist/type-utils.d.ts.map +0 -1
  280. package/dist/type-utils.js +0 -12
  281. package/dist/type-utils.js.map +0 -1
  282. package/dist/types.d.ts +0 -177
  283. package/dist/types.d.ts.map +0 -1
  284. package/dist/types.js +0 -3
  285. package/dist/types.js.map +0 -1
  286. package/dist/validate-established-topo.d.ts +0 -76
  287. package/dist/validate-established-topo.d.ts.map +0 -1
  288. package/dist/validate-established-topo.js +0 -43
  289. package/dist/validate-established-topo.js.map +0 -1
  290. package/dist/validate-topo.d.ts +0 -24
  291. package/dist/validate-topo.d.ts.map +0 -1
  292. package/dist/validate-topo.js +0 -193
  293. package/dist/validate-topo.js.map +0 -1
  294. package/dist/validation.d.ts +0 -27
  295. package/dist/validation.d.ts.map +0 -1
  296. package/dist/validation.js +0 -165
  297. package/dist/validation.js.map +0 -1
  298. package/dist/workspace.d.ts +0 -25
  299. package/dist/workspace.d.ts.map +0 -1
  300. package/dist/workspace.js +0 -57
  301. package/dist/workspace.js.map +0 -1
  302. package/src/__tests__/blob-ref.test.ts +0 -103
  303. package/src/__tests__/branded.test.ts +0 -148
  304. package/src/__tests__/collections.test.ts +0 -126
  305. package/src/__tests__/context.test.ts +0 -77
  306. package/src/__tests__/contour.test.ts +0 -263
  307. package/src/__tests__/derive-trail.test.ts +0 -668
  308. package/src/__tests__/derive.test.ts +0 -260
  309. package/src/__tests__/errors.test.ts +0 -427
  310. package/src/__tests__/execute.test.ts +0 -1563
  311. package/src/__tests__/fetch.test.ts +0 -217
  312. package/src/__tests__/fire.test.ts +0 -1056
  313. package/src/__tests__/fork-ctx.test.ts +0 -83
  314. package/src/__tests__/guards.test.ts +0 -102
  315. package/src/__tests__/ingest.test.ts +0 -191
  316. package/src/__tests__/layer.test.ts +0 -125
  317. package/src/__tests__/path-security.test.ts +0 -114
  318. package/src/__tests__/patterns.test.ts +0 -273
  319. package/src/__tests__/redaction.test.ts +0 -244
  320. package/src/__tests__/resilience.test.ts +0 -246
  321. package/src/__tests__/resource.test.ts +0 -204
  322. package/src/__tests__/result.test.ts +0 -155
  323. package/src/__tests__/run.test.ts +0 -181
  324. package/src/__tests__/serialization.test.ts +0 -401
  325. package/src/__tests__/service-config.test.ts +0 -224
  326. package/src/__tests__/signal.test.ts +0 -82
  327. package/src/__tests__/surface-filter.test.ts +0 -196
  328. package/src/__tests__/topo-store-read.test.ts +0 -256
  329. package/src/__tests__/topo-store.test.ts +0 -869
  330. package/src/__tests__/topo.test.ts +0 -573
  331. package/src/__tests__/trail-permit.test.ts +0 -60
  332. package/src/__tests__/trail.test.ts +0 -426
  333. package/src/__tests__/trails-db.test.ts +0 -198
  334. package/src/__tests__/transport-error-map.test.ts +0 -82
  335. package/src/__tests__/type-utils.test.ts +0 -118
  336. package/src/__tests__/validate-topo.test.ts +0 -611
  337. package/src/__tests__/validation.test.ts +0 -336
  338. package/src/__tests__/workspace.test.ts +0 -183
  339. package/src/__tests__/zod-wrappers.test.ts +0 -62
  340. package/src/internal/topo-snapshots.ts +0 -517
  341. package/src/internal/topo-store-read.ts +0 -481
  342. package/src/internal/topo-store.ts +0 -1192
  343. package/src/internal/tracing.ts +0 -187
  344. package/src/topo-store.ts +0 -510
  345. package/src/type-checks.test-d.ts +0 -106
  346. package/tsconfig.json +0 -9
  347. package/tsconfig.tests.json +0 -10
  348. package/tsconfig.tsbuildinfo +0 -1
@@ -1,621 +0,0 @@
1
- import { getContourReferences } from '../contour.js';
2
- import { deriveCliPath } from '../derive.js';
3
- import { Result } from '../result.js';
4
- import { validateEstablishedTopo } from '../validate-established-topo.js';
5
- import { zodToJsonSchema } from '../validation.js';
6
- import { ensureTopoSnapshotSchema, insertTopoSnapshotRecord, } from './topo-snapshots.js';
7
- const canonicalLeaf = (value) => {
8
- switch (typeof value) {
9
- case 'bigint': {
10
- return value.toString();
11
- }
12
- case 'function': {
13
- return `[Function:${value.name || 'anonymous'}]`;
14
- }
15
- case 'symbol': {
16
- return `[Symbol:${value.description ?? ''}]`;
17
- }
18
- case 'undefined': {
19
- return '[Undefined]';
20
- }
21
- default: {
22
- return value;
23
- }
24
- }
25
- };
26
- const canonicalObject = (value, visit) => {
27
- const sorted = {};
28
- for (const key of Object.keys(value).toSorted()) {
29
- const next = value[key];
30
- sorted[key] = next === undefined ? '[Undefined]' : visit(next);
31
- }
32
- return sorted;
33
- };
34
- const canonicalize = (value) => {
35
- if (Array.isArray(value)) {
36
- return value.map(canonicalize);
37
- }
38
- if (value instanceof Date) {
39
- return value.toISOString();
40
- }
41
- if (value instanceof RegExp) {
42
- return value.toString();
43
- }
44
- if (value !== null && typeof value === 'object') {
45
- return canonicalObject(value, canonicalize);
46
- }
47
- return canonicalLeaf(value);
48
- };
49
- /**
50
- * Canonicalize a value for schema definition hashing.
51
- *
52
- * Matches the canonicalization logic used in `@ontrails/schema` so that
53
- * schema hashes are consistent regardless of which code path computes them.
54
- * Unlike the general `canonicalize`, this does not convert `Date`, `RegExp`,
55
- * or `undefined` to sentinel strings — Zod `_zod.def` objects are plain
56
- * JSON-serializable structures and both paths must agree on the same encoding.
57
- */
58
- const schemaCanonical = (value) => {
59
- if (Array.isArray(value)) {
60
- return value.map(schemaCanonical);
61
- }
62
- if (value !== null && typeof value === 'object') {
63
- const sorted = {};
64
- for (const key of Object.keys(value).toSorted()) {
65
- sorted[key] = schemaCanonical(value[key]);
66
- }
67
- return sorted;
68
- }
69
- return value;
70
- };
71
- const stableJson = (value) => JSON.stringify(canonicalize(value));
72
- const hashText = (text) => {
73
- const hasher = new Bun.CryptoHasher('sha256');
74
- hasher.update(text);
75
- return hasher.digest('hex');
76
- };
77
- const hashValue = (value) => hashText(stableJson(value));
78
- const parseJsonRecord = (value) => JSON.parse(value);
79
- const schemaDefinitionHash = (schema) => {
80
- const def = typeof schema === 'object' &&
81
- schema !== null &&
82
- '_zod' in schema &&
83
- typeof schema._zod === 'object' &&
84
- schema._zod !== null &&
85
- 'def' in schema._zod
86
- ? schema._zod.def
87
- : schema;
88
- return hashText(JSON.stringify(schemaCanonical(def)));
89
- };
90
- const sortedJsonSchema = (schema) => {
91
- const json = stableJson(zodToJsonSchema(schema));
92
- return {
93
- json,
94
- value: parseJsonRecord(json),
95
- };
96
- };
97
- const sortKeys = (value) => {
98
- const sorted = {};
99
- for (const key of Object.keys(value).toSorted()) {
100
- sorted[key] = value[key];
101
- }
102
- return sorted;
103
- };
104
- const normalizeTrailRows = (trails, snapshotId) => trails.map((trail) => ({
105
- description: trail.description ?? null,
106
- exampleCount: trail.examples?.length ?? 0,
107
- hasExamples: (trail.examples?.length ?? 0) > 0 ? 1 : 0,
108
- hasOutput: trail.output === undefined ? 0 : 1,
109
- id: trail.id,
110
- idempotent: trail.idempotent === true ? 1 : 0,
111
- intent: trail.intent,
112
- meta: trail.meta === undefined ? null : stableJson(trail.meta),
113
- pattern: trail.pattern ?? null,
114
- snapshotId,
115
- }));
116
- const normalizeCrossingRows = (trails, snapshotId) => trails.flatMap((trail) => [...new Set(trail.crosses)].toSorted().map((targetId) => ({
117
- snapshotId,
118
- sourceId: trail.id,
119
- targetId,
120
- })));
121
- export const normalizeFiresRows = (trails, snapshotId) => trails.flatMap((trail) => [...new Set(trail.fires)].toSorted().map((signalId) => ({
122
- signalId,
123
- snapshotId,
124
- trailId: trail.id,
125
- })));
126
- export const normalizeOnRows = (trails, snapshotId) => trails.flatMap((trail) => [...new Set(trail.on)].toSorted().map((signalId) => ({
127
- signalId,
128
- snapshotId,
129
- trailId: trail.id,
130
- })));
131
- const normalizeTrailResourceRows = (trails, snapshotId) => trails.flatMap((trail) => [...new Set(trail.resources.map((resource) => resource.id))]
132
- .toSorted()
133
- .map((resourceId) => ({
134
- resourceId,
135
- snapshotId,
136
- trailId: trail.id,
137
- })));
138
- const normalizeResourceRows = (resources, snapshotId) => resources.map((resource) => ({
139
- hasHealth: resource.health === undefined ? 0 : 1,
140
- hasMock: resource.mock === undefined ? 0 : 1,
141
- id: resource.id,
142
- snapshotId,
143
- }));
144
- const normalizeSignalRows = (signals, snapshotId) => signals.map((signal) => ({
145
- description: signal.description ?? null,
146
- id: signal.id,
147
- snapshotId,
148
- }));
149
- const normalizeTrailSignalRows = (signals, snapshotId) => signals.flatMap((signal) => [...new Set(signal.from)].toSorted().map((trailId) => ({
150
- signalId: signal.id,
151
- snapshotId,
152
- trailId,
153
- })));
154
- /**
155
- * Project surface rows for stored topo.
156
- *
157
- * Currently records only CLI-derived rows. MCP, HTTP, and other surface
158
- * projections are intentionally deferred until the topo-store schema supports
159
- * multi-surface representation. The JSON export (`surface_map` in
160
- * `topo_exports`) is more faithful for now. See ADR-0015 for the target shape.
161
- */
162
- const normalizeSurfaceRows = (trails, snapshotId) => trails.map((trail) => ({
163
- derivedName: deriveCliPath(trail.id).join(' '),
164
- method: null,
165
- snapshotId,
166
- surface: 'cli',
167
- trailId: trail.id,
168
- }));
169
- const buildExampleId = (snapshotId, trailId, ordinal) => `${snapshotId}:${trailId}:${ordinal.toString().padStart(4, '0')}`;
170
- const normalizeExampleRows = (trails, snapshotId) => trails.flatMap((trail) => (trail.examples ?? []).map((example, index) => ({
171
- description: example.description ?? null,
172
- error: example.error ?? null,
173
- expected: example.expected === undefined ? null : stableJson(example.expected),
174
- expectedMatch: example.expectedMatch === undefined
175
- ? null
176
- : stableJson(example.expectedMatch),
177
- id: buildExampleId(snapshotId, trail.id, index),
178
- input: stableJson(example.input),
179
- name: example.name,
180
- ordinal: index,
181
- snapshotId,
182
- trailId: trail.id,
183
- })));
184
- const normalizeTopoProjection = (topo, snapshotId) => {
185
- const trails = topo.list().toSorted((a, b) => a.id.localeCompare(b.id));
186
- const resources = topo
187
- .listResources()
188
- .toSorted((a, b) => a.id.localeCompare(b.id));
189
- const signals = topo
190
- .listSignals()
191
- .toSorted((a, b) => a.id.localeCompare(b.id));
192
- return {
193
- crossings: normalizeCrossingRows(trails, snapshotId),
194
- examples: normalizeExampleRows(trails, snapshotId),
195
- fires: normalizeFiresRows(trails, snapshotId),
196
- on: normalizeOnRows(trails, snapshotId),
197
- resources: normalizeResourceRows(resources, snapshotId),
198
- signals: normalizeSignalRows(signals, snapshotId),
199
- surfaces: normalizeSurfaceRows(trails, snapshotId),
200
- trailResources: normalizeTrailResourceRows(trails, snapshotId),
201
- trailSignals: normalizeTrailSignalRows(signals, snapshotId),
202
- trails: normalizeTrailRows(trails, snapshotId),
203
- };
204
- };
205
- /**
206
- * Look up a cached JSON schema by content hash.
207
- *
208
- * The query matches on `zod_hash` without filtering by `snapshot_id` because the
209
- * cache is intentionally cross-snapshot: if the Zod schema definition has not
210
- * changed (same hash), the serialized JSON Schema is reused regardless of
211
- * which snapshot produced it. This is safe as long as `zodToJsonSchema` is
212
- * deterministic for a given `_def` hash — the `schemaDefinitionHash` pipeline
213
- * guarantees that structurally identical schemas produce the same hash.
214
- */
215
- const readCachedJsonSchema = (db, ownerId, ownerKind, schemaKind, zodHash) => {
216
- const row = db
217
- .query(`SELECT json_schema
218
- FROM topo_schemas
219
- WHERE owner_id = ?
220
- AND owner_kind = ?
221
- AND schema_kind = ?
222
- AND zod_hash = ?
223
- LIMIT 1`)
224
- .get(ownerId, ownerKind, schemaKind, zodHash);
225
- return row?.json_schema;
226
- };
227
- const resolveSchemaRow = (db, ownerId, ownerKind, snapshotId, schemaKind, schema) => {
228
- const zodHash = schemaDefinitionHash(schema);
229
- const cachedJson = readCachedJsonSchema(db, ownerId, ownerKind, schemaKind, zodHash);
230
- if (cachedJson !== undefined) {
231
- return {
232
- row: {
233
- jsonSchema: cachedJson,
234
- ownerId,
235
- ownerKind,
236
- schemaKind,
237
- snapshotId,
238
- zodHash,
239
- },
240
- value: parseJsonRecord(cachedJson),
241
- };
242
- }
243
- const generated = sortedJsonSchema(schema);
244
- return {
245
- row: {
246
- jsonSchema: generated.json,
247
- ownerId,
248
- ownerKind,
249
- schemaKind,
250
- snapshotId,
251
- zodHash,
252
- },
253
- value: generated.value,
254
- };
255
- };
256
- const materializeTrailSchema = (db, snapshotId, trail) => {
257
- const inputSchema = resolveSchemaRow(db, trail.id, 'trail', snapshotId, 'input', trail.input);
258
- if (trail.output === undefined) {
259
- return {
260
- rows: [inputSchema.row],
261
- value: {
262
- input: inputSchema.value,
263
- },
264
- };
265
- }
266
- const outputSchema = resolveSchemaRow(db, trail.id, 'trail', snapshotId, 'output', trail.output);
267
- return {
268
- rows: [inputSchema.row, outputSchema.row],
269
- value: {
270
- input: inputSchema.value,
271
- output: outputSchema.value,
272
- },
273
- };
274
- };
275
- const materializeTrailSchemas = (db, snapshotId, trails) => {
276
- const rows = [];
277
- const trailSchemas = new Map();
278
- for (const trail of trails) {
279
- const materialized = materializeTrailSchema(db, snapshotId, trail);
280
- rows.push(...materialized.rows);
281
- trailSchemas.set(trail.id, materialized.value);
282
- }
283
- return {
284
- rows,
285
- trailSchemas,
286
- };
287
- };
288
- const materializeSignalSchemas = (db, snapshotId, signals) => {
289
- const rows = [];
290
- const signalPayloads = new Map();
291
- for (const signal of signals) {
292
- const payloadSchema = resolveSchemaRow(db, signal.id, 'signal', snapshotId, 'payload', signal.payload);
293
- rows.push(payloadSchema.row);
294
- signalPayloads.set(signal.id, payloadSchema.value);
295
- }
296
- return {
297
- rows,
298
- signalPayloads,
299
- };
300
- };
301
- const materializeSchemas = (db, snapshotId, signals, trails) => {
302
- const trailMaterial = materializeTrailSchemas(db, snapshotId, trails);
303
- const signalMaterial = materializeSignalSchemas(db, snapshotId, signals);
304
- return {
305
- rows: [...trailMaterial.rows, ...signalMaterial.rows],
306
- signalPayloads: signalMaterial.signalPayloads,
307
- trailSchemas: trailMaterial.trailSchemas,
308
- };
309
- };
310
- const extractTrailheads = (raw) => Array.isArray(raw['trailheads'])
311
- ? raw['trailheads'].toSorted()
312
- : [];
313
- const addSafetyMarkers = (entry, trail) => {
314
- if (trail.intent !== 'write') {
315
- entry['intent'] = trail.intent;
316
- }
317
- if (trail.idempotent === true) {
318
- entry['idempotent'] = true;
319
- }
320
- };
321
- const addExtendedMetadata = (entry, raw, trail) => {
322
- if (raw['deprecated'] === true) {
323
- entry['deprecated'] = true;
324
- }
325
- if (typeof raw['replacedBy'] === 'string') {
326
- entry['replacedBy'] = raw['replacedBy'];
327
- }
328
- if (trail.detours.length > 0) {
329
- entry['detours'] = trail.detours.map((d) => ({
330
- maxAttempts: Math.max(1, Math.min(d.maxAttempts ?? 1, 5)),
331
- on: d.on.name,
332
- }));
333
- }
334
- };
335
- const addTrailRelations = (entry, trail) => {
336
- if (trail.crosses.length > 0) {
337
- entry['crosses'] = trail.crosses.toSorted();
338
- }
339
- if (trail.contours.length > 0) {
340
- entry['contours'] = trail.contours
341
- .map((contour) => contour.name)
342
- .toSorted();
343
- }
344
- if (trail.resources.length > 0) {
345
- entry['resources'] = trail.resources
346
- .map((resource) => resource.id)
347
- .toSorted();
348
- }
349
- };
350
- const buildTrailEntryBase = (trail, trailSchema) => {
351
- const raw = trail;
352
- const entry = {
353
- cli: { path: deriveCliPath(trail.id) },
354
- exampleCount: trail.examples?.length ?? 0,
355
- id: trail.id,
356
- input: trailSchema.input,
357
- kind: trail.kind,
358
- trailheads: extractTrailheads(raw),
359
- };
360
- if (trailSchema.output !== undefined) {
361
- entry['output'] = trailSchema.output;
362
- }
363
- if (trail.description !== undefined) {
364
- entry['description'] = trail.description;
365
- }
366
- if (trail.pattern !== undefined) {
367
- entry['pattern'] = trail.pattern;
368
- }
369
- return {
370
- entry,
371
- raw,
372
- };
373
- };
374
- const trailToEntryRecord = (trail, trailSchema) => {
375
- const { entry, raw } = buildTrailEntryBase(trail, trailSchema);
376
- addSafetyMarkers(entry, trail);
377
- addExtendedMetadata(entry, raw, trail);
378
- addTrailRelations(entry, trail);
379
- return sortKeys(entry);
380
- };
381
- const signalToEntryRecord = (signal, payloadSchema) => {
382
- const raw = signal;
383
- const entry = {
384
- exampleCount: 0,
385
- id: signal.id,
386
- input: payloadSchema,
387
- kind: 'signal',
388
- trailheads: extractTrailheads(raw),
389
- };
390
- if (signal.description !== undefined) {
391
- entry['description'] = signal.description;
392
- }
393
- if (raw['deprecated'] === true) {
394
- entry['deprecated'] = true;
395
- }
396
- if (typeof raw['replacedBy'] === 'string') {
397
- entry['replacedBy'] = raw['replacedBy'];
398
- }
399
- return sortKeys(entry);
400
- };
401
- const resourceToEntryRecord = (resource) => {
402
- const entry = {
403
- exampleCount: 0,
404
- id: resource.id,
405
- kind: 'resource',
406
- trailheads: [],
407
- };
408
- if (resource.description !== undefined) {
409
- entry['description'] = resource.description;
410
- }
411
- if (resource.health !== undefined) {
412
- entry['healthcheck'] = true;
413
- }
414
- return sortKeys(entry);
415
- };
416
- const contourToEntryRecord = (contour) => {
417
- const schema = sortedJsonSchema(contour);
418
- const entry = {
419
- exampleCount: contour.examples?.length ?? 0,
420
- id: contour.name,
421
- identity: contour.identity,
422
- kind: 'contour',
423
- schema: schema.value,
424
- trailheads: [],
425
- };
426
- const references = getContourReferences(contour);
427
- if (references.length > 0) {
428
- entry['references'] = references;
429
- }
430
- return sortKeys(entry);
431
- };
432
- const requireTrailSchema = (trailSchemas, trailId) => {
433
- const schema = trailSchemas.get(trailId);
434
- if (schema === undefined) {
435
- throw new Error(`Missing cached trail schema for "${trailId}"`);
436
- }
437
- return schema;
438
- };
439
- const requireSignalPayload = (signalPayloads, signalId) => {
440
- const payload = signalPayloads.get(signalId);
441
- if (payload === undefined) {
442
- throw new Error(`Missing cached signal schema for "${signalId}"`);
443
- }
444
- return payload;
445
- };
446
- const buildSurfaceMap = (contours, generatedAt, resources, signalPayloads, signals, trailSchemas, trails) => {
447
- const entries = [
448
- ...contours.map((contour) => contourToEntryRecord(contour)),
449
- ...trails.map((trail) => trailToEntryRecord(trail, requireTrailSchema(trailSchemas, trail.id))),
450
- ...signals.map((signal) => signalToEntryRecord(signal, requireSignalPayload(signalPayloads, signal.id))),
451
- ...resources.map((resource) => resourceToEntryRecord(resource)),
452
- ].toSorted((a, b) => a.id.localeCompare(b.id));
453
- return {
454
- entries,
455
- generatedAt,
456
- version: '1.0',
457
- };
458
- };
459
- const hashSurfaceMapRecord = (surfaceMap) => {
460
- const { generatedAt: _unused, ...rest } = surfaceMap;
461
- return hashValue(rest);
462
- };
463
- const entryPayload = (entry) => {
464
- const { id: _unusedId, kind: _unusedKind, ...rest } = entry;
465
- return sortKeys(rest);
466
- };
467
- const entriesForKind = (entries, kind) => Object.fromEntries(entries
468
- .filter((entry) => entry.kind === kind)
469
- .map((entry) => [entry.id, entryPayload(entry)]));
470
- const buildSerializedLock = (hash, topo, surfaceMap) => sortKeys({
471
- apps: sortKeys({
472
- [topo.name]: sortKeys({
473
- contours: entriesForKind(surfaceMap.entries, 'contour'),
474
- resources: entriesForKind(surfaceMap.entries, 'resource'),
475
- signals: entriesForKind(surfaceMap.entries, 'signal'),
476
- trails: entriesForKind(surfaceMap.entries, 'trail'),
477
- }),
478
- }),
479
- generatedAt: surfaceMap.generatedAt,
480
- hash,
481
- version: 1,
482
- });
483
- const buildStoredTopoExport = (db, snapshot, topo) => {
484
- const contours = topo
485
- .listContours()
486
- .toSorted((a, b) => a.name.localeCompare(b.name));
487
- const trails = topo.list().toSorted((a, b) => a.id.localeCompare(b.id));
488
- const resources = topo
489
- .listResources()
490
- .toSorted((a, b) => a.id.localeCompare(b.id));
491
- const signals = topo
492
- .listSignals()
493
- .toSorted((a, b) => a.id.localeCompare(b.id));
494
- const schemas = materializeSchemas(db, snapshot.id, signals, trails);
495
- const surfaceMap = buildSurfaceMap(contours, snapshot.createdAt, resources, schemas.signalPayloads, signals, schemas.trailSchemas, trails);
496
- const surfaceHash = hashSurfaceMapRecord(surfaceMap);
497
- const serializedLock = `${JSON.stringify(buildSerializedLock(surfaceHash, topo, surfaceMap), null, 2)}\n`;
498
- return {
499
- exportRow: {
500
- serializedLock,
501
- snapshotId: snapshot.id,
502
- surfaceHash,
503
- surfaceMap: `${JSON.stringify(surfaceMap, null, 2)}\n`,
504
- },
505
- schemaRows: schemas.rows,
506
- };
507
- };
508
- const insertRows = (db, rows, statement, toParams) => {
509
- for (const row of rows) {
510
- db.run(statement, toParams(row));
511
- }
512
- };
513
- const insertProjectedRows = (db, projection) => {
514
- insertRows(db, projection.trails, `INSERT INTO topo_trails (
515
- id, intent, idempotent, has_output, has_examples, example_count, description, pattern, meta, snapshot_id
516
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, (row) => [
517
- row.id,
518
- row.intent,
519
- row.idempotent,
520
- row.hasOutput,
521
- row.hasExamples,
522
- row.exampleCount,
523
- row.description,
524
- row.pattern,
525
- row.meta,
526
- row.snapshotId,
527
- ]);
528
- insertRows(db, projection.crossings, 'INSERT INTO topo_crossings (source_id, target_id, snapshot_id) VALUES (?, ?, ?)', (row) => [row.sourceId, row.targetId, row.snapshotId]);
529
- insertRows(db, projection.trailResources, `INSERT INTO topo_trail_resources (trail_id, resource_id, snapshot_id)
530
- VALUES (?, ?, ?)`, (row) => [row.trailId, row.resourceId, row.snapshotId]);
531
- insertRows(db, projection.resources, `INSERT INTO topo_resources (id, has_mock, has_health, snapshot_id)
532
- VALUES (?, ?, ?, ?)`, (row) => [row.id, row.hasMock, row.hasHealth, row.snapshotId]);
533
- insertRows(db, projection.signals, 'INSERT INTO topo_signals (id, description, snapshot_id) VALUES (?, ?, ?)', (row) => [row.id, row.description, row.snapshotId]);
534
- insertRows(db, projection.trailSignals, `INSERT INTO topo_trail_signals (trail_id, signal_id, snapshot_id)
535
- VALUES (?, ?, ?)`, (row) => [row.trailId, row.signalId, row.snapshotId]);
536
- insertRows(db, projection.fires, `INSERT INTO topo_trail_fires (trail_id, signal_id, snapshot_id)
537
- VALUES (?, ?, ?)`, (row) => [row.trailId, row.signalId, row.snapshotId]);
538
- insertRows(db, projection.on, `INSERT INTO topo_trail_on (trail_id, signal_id, snapshot_id)
539
- VALUES (?, ?, ?)`, (row) => [row.trailId, row.signalId, row.snapshotId]);
540
- insertRows(db, projection.surfaces, `INSERT INTO topo_surfaces (trail_id, surface, derived_name, method, snapshot_id)
541
- VALUES (?, ?, ?, ?, ?)`, (row) => [
542
- row.trailId,
543
- row.surface,
544
- row.derivedName,
545
- row.method,
546
- row.snapshotId,
547
- ]);
548
- insertRows(db, projection.examples, `INSERT INTO topo_examples (
549
- id, trail_id, ordinal, name, description, input, expected, error, snapshot_id
550
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, (row) => [
551
- row.id,
552
- row.trailId,
553
- row.ordinal,
554
- row.name,
555
- row.description,
556
- row.input,
557
- row.expected,
558
- row.error,
559
- row.snapshotId,
560
- ]);
561
- };
562
- const insertSchemaRows = (db, rows) => {
563
- insertRows(db, rows, `INSERT INTO topo_schemas (
564
- owner_id, owner_kind, schema_kind, zod_hash, json_schema, snapshot_id
565
- ) VALUES (?, ?, ?, ?, ?, ?)`, (row) => [
566
- row.ownerId,
567
- row.ownerKind,
568
- row.schemaKind,
569
- row.zodHash,
570
- row.jsonSchema,
571
- row.snapshotId,
572
- ]);
573
- };
574
- const insertStoredExport = (db, exportRow) => {
575
- db.run(`INSERT INTO topo_exports (
576
- snapshot_id, surface_map, surface_hash, serialized_lock
577
- ) VALUES (?, ?, ?, ?)`, [
578
- exportRow.snapshotId,
579
- exportRow.surfaceMap,
580
- exportRow.surfaceHash,
581
- exportRow.serializedLock,
582
- ]);
583
- };
584
- export const getStoredTopoExport = (db, snapshotId) => {
585
- const row = db
586
- .query(`SELECT surface_map, surface_hash, serialized_lock
587
- FROM topo_exports
588
- WHERE snapshot_id = ?`)
589
- .get(snapshotId);
590
- if (row === undefined || row === null) {
591
- return undefined;
592
- }
593
- return {
594
- lockContent: row.serialized_lock,
595
- surfaceHash: row.surface_hash,
596
- surfaceMapJson: row.surface_map,
597
- };
598
- };
599
- export const createTopoSnapshot = (db, topo, input) => {
600
- const validated = validateEstablishedTopo(topo);
601
- if (validated.isErr()) {
602
- return Result.err(validated.error);
603
- }
604
- ensureTopoSnapshotSchema(db);
605
- const snapshotInput = {
606
- ...input,
607
- resourceCount: input?.resourceCount ?? topo.resources.size,
608
- signalCount: input?.signalCount ?? topo.signals.size,
609
- trailCount: input?.trailCount ?? topo.trails.size,
610
- };
611
- const snapshot = db.transaction(() => {
612
- const record = insertTopoSnapshotRecord(db, snapshotInput);
613
- const artifacts = buildStoredTopoExport(db, record, topo);
614
- insertProjectedRows(db, normalizeTopoProjection(topo, record.id));
615
- insertSchemaRows(db, artifacts.schemaRows);
616
- insertStoredExport(db, artifacts.exportRow);
617
- return record;
618
- })();
619
- return Result.ok(snapshot);
620
- };
621
- //# sourceMappingURL=topo-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topo-store.js","sourceRoot":"","sources":["../../src/internal/topo-store.ts"],"names":[],"mappings":"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"}