@ontrails/core 1.0.0-beta.12 → 1.0.0-beta.14

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 (139) hide show
  1. package/.turbo/turbo-lint.log +1 -1
  2. package/CHANGELOG.md +65 -35
  3. package/README.md +21 -20
  4. package/dist/context.d.ts +1 -1
  5. package/dist/context.d.ts.map +1 -1
  6. package/dist/context.js +5 -4
  7. package/dist/context.js.map +1 -1
  8. package/dist/derive.d.ts +14 -3
  9. package/dist/derive.d.ts.map +1 -1
  10. package/dist/derive.js +36 -12
  11. package/dist/derive.js.map +1 -1
  12. package/dist/draft.d.ts +28 -0
  13. package/dist/draft.d.ts.map +1 -0
  14. package/dist/draft.js +156 -0
  15. package/dist/draft.js.map +1 -0
  16. package/dist/event.d.ts +4 -41
  17. package/dist/event.d.ts.map +1 -1
  18. package/dist/event.js +4 -14
  19. package/dist/event.js.map +1 -1
  20. package/dist/execute.d.ts +10 -10
  21. package/dist/execute.d.ts.map +1 -1
  22. package/dist/execute.js +35 -28
  23. package/dist/execute.js.map +1 -1
  24. package/dist/gate.d.ts +17 -0
  25. package/dist/gate.d.ts.map +1 -0
  26. package/dist/gate.js +21 -0
  27. package/dist/gate.js.map +1 -0
  28. package/dist/index.d.ts +16 -9
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +14 -9
  31. package/dist/index.js.map +1 -1
  32. package/dist/internal/topo-saves.d.ts +47 -0
  33. package/dist/internal/topo-saves.d.ts.map +1 -0
  34. package/dist/internal/topo-saves.js +310 -0
  35. package/dist/internal/topo-saves.js.map +1 -0
  36. package/dist/internal/topo-store-read.d.ts +67 -0
  37. package/dist/internal/topo-store-read.d.ts.map +1 -0
  38. package/dist/internal/topo-store-read.js +222 -0
  39. package/dist/internal/topo-store-read.js.map +1 -0
  40. package/dist/internal/topo-store.d.ts +12 -0
  41. package/dist/internal/topo-store.d.ts.map +1 -0
  42. package/dist/internal/topo-store.js +571 -0
  43. package/dist/internal/topo-store.js.map +1 -0
  44. package/dist/internal/trails-db.d.ts +16 -0
  45. package/dist/internal/trails-db.d.ts.map +1 -0
  46. package/dist/internal/trails-db.js +118 -0
  47. package/dist/internal/trails-db.js.map +1 -0
  48. package/dist/layer.d.ts +5 -16
  49. package/dist/layer.d.ts.map +1 -1
  50. package/dist/layer.js +3 -20
  51. package/dist/layer.js.map +1 -1
  52. package/dist/provision-config.d.ts +22 -0
  53. package/dist/provision-config.d.ts.map +1 -0
  54. package/dist/provision-config.js +210 -0
  55. package/dist/provision-config.js.map +1 -0
  56. package/dist/provision.d.ts +71 -0
  57. package/dist/provision.d.ts.map +1 -0
  58. package/dist/provision.js +56 -0
  59. package/dist/provision.js.map +1 -0
  60. package/dist/run.d.ts +27 -0
  61. package/dist/run.d.ts.map +1 -0
  62. package/dist/run.js +34 -0
  63. package/dist/run.js.map +1 -0
  64. package/dist/service-config.d.ts +7 -7
  65. package/dist/service-config.d.ts.map +1 -1
  66. package/dist/service-config.js +75 -73
  67. package/dist/service-config.js.map +1 -1
  68. package/dist/service.d.ts +32 -36
  69. package/dist/service.d.ts.map +1 -1
  70. package/dist/service.js +21 -21
  71. package/dist/service.js.map +1 -1
  72. package/dist/signal.d.ts +33 -0
  73. package/dist/signal.d.ts.map +1 -0
  74. package/dist/signal.js +17 -0
  75. package/dist/signal.js.map +1 -0
  76. package/dist/topo-store.d.ts +48 -0
  77. package/dist/topo-store.d.ts.map +1 -0
  78. package/dist/topo-store.js +175 -0
  79. package/dist/topo-store.js.map +1 -0
  80. package/dist/topo.d.ts +10 -10
  81. package/dist/topo.d.ts.map +1 -1
  82. package/dist/topo.js +48 -35
  83. package/dist/topo.js.map +1 -1
  84. package/dist/trail.d.ts +16 -16
  85. package/dist/trail.d.ts.map +1 -1
  86. package/dist/trail.js +5 -4
  87. package/dist/trail.js.map +1 -1
  88. package/dist/types.d.ts +10 -10
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/types.js +2 -2
  91. package/dist/types.js.map +1 -1
  92. package/dist/validate-established-topo.d.ts +76 -0
  93. package/dist/validate-established-topo.d.ts.map +1 -0
  94. package/dist/validate-established-topo.js +43 -0
  95. package/dist/validate-established-topo.js.map +1 -0
  96. package/dist/validate-topo.d.ts +2 -2
  97. package/dist/validate-topo.d.ts.map +1 -1
  98. package/dist/validate-topo.js +34 -32
  99. package/dist/validate-topo.js.map +1 -1
  100. package/package.json +4 -1
  101. package/src/__tests__/context.test.ts +8 -8
  102. package/src/__tests__/derive.test.ts +58 -1
  103. package/src/__tests__/execute.test.ts +124 -122
  104. package/src/__tests__/{layer.test.ts → gate.test.ts} +26 -26
  105. package/src/__tests__/{dispatch.test.ts → run.test.ts} +39 -39
  106. package/src/__tests__/service-config.test.ts +41 -37
  107. package/src/__tests__/service.test.ts +71 -71
  108. package/src/__tests__/{event.test.ts → signal.test.ts} +15 -15
  109. package/src/__tests__/topo-store-read.test.ts +251 -0
  110. package/src/__tests__/topo-store.test.ts +469 -0
  111. package/src/__tests__/topo.test.ts +54 -54
  112. package/src/__tests__/trail-permit.test.ts +4 -4
  113. package/src/__tests__/trail.test.ts +58 -58
  114. package/src/__tests__/trails-db.test.ts +191 -0
  115. package/src/__tests__/type-utils.test.ts +3 -3
  116. package/src/__tests__/validate-topo.test.ts +205 -38
  117. package/src/context.ts +5 -4
  118. package/src/derive.ts +47 -16
  119. package/src/draft.ts +334 -0
  120. package/src/event.ts +11 -73
  121. package/src/execute.ts +56 -40
  122. package/src/{layer.ts → gate.ts} +13 -13
  123. package/src/index.ts +54 -23
  124. package/src/internal/topo-saves.ts +429 -0
  125. package/src/internal/topo-store-read.ts +473 -0
  126. package/src/internal/topo-store.ts +1087 -0
  127. package/src/internal/trails-db.ts +189 -0
  128. package/src/{service-config.ts → provision-config.ts} +124 -105
  129. package/src/provision.ts +148 -0
  130. package/src/{dispatch.ts → run.ts} +8 -8
  131. package/src/signal.ts +65 -0
  132. package/src/topo-store.ts +301 -0
  133. package/src/topo.ts +74 -52
  134. package/src/trail.ts +23 -22
  135. package/src/types.ts +11 -11
  136. package/src/validate-established-topo.ts +63 -0
  137. package/src/validate-topo.ts +38 -34
  138. package/tsconfig.tsbuildinfo +1 -1
  139. package/src/service.ts +0 -145
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topo-store-read.js","sourceRoot":"","sources":["../../src/internal/topo-store-read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Database } from 'bun:sqlite';
2
+ import { Result } from '../result.js';
3
+ import type { Topo } from '../topo.js';
4
+ import type { CreateTopoSaveInput, TopoSaveRecord } from './topo-saves.js';
5
+ export interface StoredTopoExport {
6
+ readonly lockContent: string;
7
+ readonly trailheadHash: string;
8
+ readonly trailheadMapJson: string;
9
+ }
10
+ export declare const getStoredTopoExport: (db: Database, saveId: string) => StoredTopoExport | undefined;
11
+ export declare const persistEstablishedTopoSave: (db: Database, topo: Topo, input?: CreateTopoSaveInput) => Result<TopoSaveRecord, Error>;
12
+ //# sourceMappingURL=topo-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topo-store.d.ts","sourceRoot":"","sources":["../../src/internal/topo-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAG7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAsG3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAs5BD,eAAO,MAAM,mBAAmB,GAC9B,IAAI,QAAQ,EACZ,QAAQ,MAAM,KACb,gBAAgB,GAAG,SAkBrB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,IAAI,QAAQ,EACZ,MAAM,IAAI,EACV,QAAQ,mBAAmB,KAC1B,MAAM,CAAC,cAAc,EAAE,KAAK,CAyB9B,CAAC"}
@@ -0,0 +1,571 @@
1
+ import { deriveCliPath } from '../derive.js';
2
+ import { Result } from '../result.js';
3
+ import { validateEstablishedTopo } from '../validate-established-topo.js';
4
+ import { zodToJsonSchema } from '../validation.js';
5
+ import { ensureTopoHistorySchema, insertTopoSaveRecord } from './topo-saves.js';
6
+ const canonicalLeaf = (value) => {
7
+ switch (typeof value) {
8
+ case 'bigint': {
9
+ return value.toString();
10
+ }
11
+ case 'function': {
12
+ return `[Function:${value.name || 'anonymous'}]`;
13
+ }
14
+ case 'symbol': {
15
+ return `[Symbol:${value.description ?? ''}]`;
16
+ }
17
+ case 'undefined': {
18
+ return '[Undefined]';
19
+ }
20
+ default: {
21
+ return value;
22
+ }
23
+ }
24
+ };
25
+ const canonicalObject = (value, visit) => {
26
+ const sorted = {};
27
+ for (const key of Object.keys(value).toSorted()) {
28
+ const next = value[key];
29
+ sorted[key] = next === undefined ? '[Undefined]' : visit(next);
30
+ }
31
+ return sorted;
32
+ };
33
+ const canonicalize = (value) => {
34
+ if (Array.isArray(value)) {
35
+ return value.map(canonicalize);
36
+ }
37
+ if (value instanceof Date) {
38
+ return value.toISOString();
39
+ }
40
+ if (value instanceof RegExp) {
41
+ return value.toString();
42
+ }
43
+ if (value !== null && typeof value === 'object') {
44
+ return canonicalObject(value, canonicalize);
45
+ }
46
+ return canonicalLeaf(value);
47
+ };
48
+ /**
49
+ * Canonicalize a value for schema definition hashing.
50
+ *
51
+ * Matches the canonicalization logic used in `@ontrails/schema` so that
52
+ * schema hashes are consistent regardless of which code path computes them.
53
+ * Unlike the general `canonicalize`, this does not convert `Date`, `RegExp`,
54
+ * or `undefined` to sentinel strings — Zod `_zod.def` objects are plain
55
+ * JSON-serializable structures and both paths must agree on the same encoding.
56
+ */
57
+ const schemaCanonical = (value) => {
58
+ if (Array.isArray(value)) {
59
+ return value.map(schemaCanonical);
60
+ }
61
+ if (value !== null && typeof value === 'object') {
62
+ const sorted = {};
63
+ for (const key of Object.keys(value).toSorted()) {
64
+ sorted[key] = schemaCanonical(value[key]);
65
+ }
66
+ return sorted;
67
+ }
68
+ return value;
69
+ };
70
+ const stableJson = (value) => JSON.stringify(canonicalize(value));
71
+ const hashText = (text) => {
72
+ const hasher = new Bun.CryptoHasher('sha256');
73
+ hasher.update(text);
74
+ return hasher.digest('hex');
75
+ };
76
+ const hashValue = (value) => hashText(stableJson(value));
77
+ const parseJsonRecord = (value) => JSON.parse(value);
78
+ const schemaDefinitionHash = (schema) => {
79
+ const def = typeof schema === 'object' &&
80
+ schema !== null &&
81
+ '_zod' in schema &&
82
+ typeof schema._zod === 'object' &&
83
+ schema._zod !== null &&
84
+ 'def' in schema._zod
85
+ ? schema._zod.def
86
+ : schema;
87
+ return hashText(JSON.stringify(schemaCanonical(def)));
88
+ };
89
+ const sortedJsonSchema = (schema) => {
90
+ const json = stableJson(zodToJsonSchema(schema));
91
+ return {
92
+ json,
93
+ value: parseJsonRecord(json),
94
+ };
95
+ };
96
+ const sortKeys = (value) => {
97
+ const sorted = {};
98
+ for (const key of Object.keys(value).toSorted()) {
99
+ sorted[key] = value[key];
100
+ }
101
+ return sorted;
102
+ };
103
+ const normalizeTrailRows = (trails, saveId) => trails.map((trail) => ({
104
+ description: trail.description ?? null,
105
+ exampleCount: trail.examples?.length ?? 0,
106
+ hasExamples: (trail.examples?.length ?? 0) > 0 ? 1 : 0,
107
+ hasOutput: trail.output === undefined ? 0 : 1,
108
+ id: trail.id,
109
+ idempotent: trail.idempotent === true ? 1 : 0,
110
+ intent: trail.intent,
111
+ meta: trail.meta === undefined ? null : stableJson(trail.meta),
112
+ saveId,
113
+ }));
114
+ const normalizeCrossingRows = (trails, saveId) => trails.flatMap((trail) => [...new Set(trail.crosses)].toSorted().map((targetId) => ({
115
+ saveId,
116
+ sourceId: trail.id,
117
+ targetId,
118
+ })));
119
+ const normalizeTrailProvisionRows = (trails, saveId) => trails.flatMap((trail) => [...new Set(trail.provisions.map((provision) => provision.id))]
120
+ .toSorted()
121
+ .map((provisionId) => ({
122
+ provisionId,
123
+ saveId,
124
+ trailId: trail.id,
125
+ })));
126
+ const normalizeProvisionRows = (provisions, saveId) => provisions.map((provision) => ({
127
+ hasHealth: provision.health === undefined ? 0 : 1,
128
+ hasMock: provision.mock === undefined ? 0 : 1,
129
+ id: provision.id,
130
+ saveId,
131
+ }));
132
+ const normalizeSignalRows = (signals, saveId) => signals.map((signal) => ({
133
+ description: signal.description ?? null,
134
+ id: signal.id,
135
+ saveId,
136
+ }));
137
+ const normalizeTrailSignalRows = (signals, saveId) => signals.flatMap((signal) => [...new Set(signal.from)].toSorted().map((trailId) => ({
138
+ saveId,
139
+ signalId: signal.id,
140
+ trailId,
141
+ })));
142
+ /**
143
+ * Project trailhead rows for stored topo.
144
+ *
145
+ * Currently records only CLI-derived rows. MCP, HTTP, and other trailhead
146
+ * projections are intentionally deferred until the topo-store schema supports
147
+ * multi-trailhead representation. The JSON export (`trailhead_map` in
148
+ * `topo_exports`) is more faithful for now. See ADR-0015 for the target shape.
149
+ */
150
+ const normalizeTrailheadRows = (trails, saveId) => trails.map((trail) => ({
151
+ derivedName: deriveCliPath(trail.id).join(' '),
152
+ method: null,
153
+ saveId,
154
+ trailId: trail.id,
155
+ trailhead: 'cli',
156
+ }));
157
+ const buildExampleId = (saveId, trailId, ordinal) => `${saveId}:${trailId}:${ordinal.toString().padStart(4, '0')}`;
158
+ const normalizeExampleRows = (trails, saveId) => trails.flatMap((trail) => (trail.examples ?? []).map((example, index) => ({
159
+ description: example.description ?? null,
160
+ error: example.error ?? null,
161
+ expected: example.expected === undefined ? null : stableJson(example.expected),
162
+ id: buildExampleId(saveId, trail.id, index),
163
+ input: stableJson(example.input),
164
+ name: example.name,
165
+ ordinal: index,
166
+ saveId,
167
+ trailId: trail.id,
168
+ })));
169
+ const normalizeTopoProjection = (topo, saveId) => {
170
+ const trails = topo.list().toSorted((a, b) => a.id.localeCompare(b.id));
171
+ const provisions = topo
172
+ .listProvisions()
173
+ .toSorted((a, b) => a.id.localeCompare(b.id));
174
+ const signals = topo
175
+ .listSignals()
176
+ .toSorted((a, b) => a.id.localeCompare(b.id));
177
+ return {
178
+ crossings: normalizeCrossingRows(trails, saveId),
179
+ examples: normalizeExampleRows(trails, saveId),
180
+ provisions: normalizeProvisionRows(provisions, saveId),
181
+ signals: normalizeSignalRows(signals, saveId),
182
+ trailProvisions: normalizeTrailProvisionRows(trails, saveId),
183
+ trailSignals: normalizeTrailSignalRows(signals, saveId),
184
+ trailheads: normalizeTrailheadRows(trails, saveId),
185
+ trails: normalizeTrailRows(trails, saveId),
186
+ };
187
+ };
188
+ /**
189
+ * Look up a cached JSON schema by content hash.
190
+ *
191
+ * The query matches on `zod_hash` without filtering by `save_id` because the
192
+ * cache is intentionally cross-save: if the Zod schema definition has not
193
+ * changed (same hash), the serialized JSON Schema is reused regardless of
194
+ * which save produced it. This is safe as long as `zodToJsonSchema` is
195
+ * deterministic for a given `_def` hash — the `schemaDefinitionHash` pipeline
196
+ * guarantees that structurally identical schemas produce the same hash.
197
+ */
198
+ const readCachedJsonSchema = (db, ownerId, ownerKind, schemaKind, zodHash) => {
199
+ const row = db
200
+ .query(`SELECT json_schema
201
+ FROM topo_schemas
202
+ WHERE owner_id = ?
203
+ AND owner_kind = ?
204
+ AND schema_kind = ?
205
+ AND zod_hash = ?
206
+ LIMIT 1`)
207
+ .get(ownerId, ownerKind, schemaKind, zodHash);
208
+ return row?.json_schema;
209
+ };
210
+ const resolveSchemaRow = (db, ownerId, ownerKind, saveId, schemaKind, schema) => {
211
+ const zodHash = schemaDefinitionHash(schema);
212
+ const cachedJson = readCachedJsonSchema(db, ownerId, ownerKind, schemaKind, zodHash);
213
+ if (cachedJson !== undefined) {
214
+ return {
215
+ row: {
216
+ jsonSchema: cachedJson,
217
+ ownerId,
218
+ ownerKind,
219
+ saveId,
220
+ schemaKind,
221
+ zodHash,
222
+ },
223
+ value: parseJsonRecord(cachedJson),
224
+ };
225
+ }
226
+ const generated = sortedJsonSchema(schema);
227
+ return {
228
+ row: {
229
+ jsonSchema: generated.json,
230
+ ownerId,
231
+ ownerKind,
232
+ saveId,
233
+ schemaKind,
234
+ zodHash,
235
+ },
236
+ value: generated.value,
237
+ };
238
+ };
239
+ const materializeTrailSchema = (db, saveId, trail) => {
240
+ const inputSchema = resolveSchemaRow(db, trail.id, 'trail', saveId, 'input', trail.input);
241
+ if (trail.output === undefined) {
242
+ return {
243
+ rows: [inputSchema.row],
244
+ value: {
245
+ input: inputSchema.value,
246
+ },
247
+ };
248
+ }
249
+ const outputSchema = resolveSchemaRow(db, trail.id, 'trail', saveId, 'output', trail.output);
250
+ return {
251
+ rows: [inputSchema.row, outputSchema.row],
252
+ value: {
253
+ input: inputSchema.value,
254
+ output: outputSchema.value,
255
+ },
256
+ };
257
+ };
258
+ const materializeTrailSchemas = (db, saveId, trails) => {
259
+ const rows = [];
260
+ const trailSchemas = new Map();
261
+ for (const trail of trails) {
262
+ const materialized = materializeTrailSchema(db, saveId, trail);
263
+ rows.push(...materialized.rows);
264
+ trailSchemas.set(trail.id, materialized.value);
265
+ }
266
+ return {
267
+ rows,
268
+ trailSchemas,
269
+ };
270
+ };
271
+ const materializeSignalSchemas = (db, saveId, signals) => {
272
+ const rows = [];
273
+ const signalPayloads = new Map();
274
+ for (const signal of signals) {
275
+ const payloadSchema = resolveSchemaRow(db, signal.id, 'signal', saveId, 'payload', signal.payload);
276
+ rows.push(payloadSchema.row);
277
+ signalPayloads.set(signal.id, payloadSchema.value);
278
+ }
279
+ return {
280
+ rows,
281
+ signalPayloads,
282
+ };
283
+ };
284
+ const materializeSchemas = (db, saveId, signals, trails) => {
285
+ const trailMaterial = materializeTrailSchemas(db, saveId, trails);
286
+ const signalMaterial = materializeSignalSchemas(db, saveId, signals);
287
+ return {
288
+ rows: [...trailMaterial.rows, ...signalMaterial.rows],
289
+ signalPayloads: signalMaterial.signalPayloads,
290
+ trailSchemas: trailMaterial.trailSchemas,
291
+ };
292
+ };
293
+ const extractTrailheads = (raw) => Array.isArray(raw['trailheads'])
294
+ ? raw['trailheads'].toSorted()
295
+ : [];
296
+ const addSafetyMarkers = (entry, trail) => {
297
+ if (trail.intent !== 'write') {
298
+ entry['intent'] = trail.intent;
299
+ }
300
+ if (trail.idempotent === true) {
301
+ entry['idempotent'] = true;
302
+ }
303
+ };
304
+ const addExtendedMetadata = (entry, raw, trail) => {
305
+ if (raw['deprecated'] === true) {
306
+ entry['deprecated'] = true;
307
+ }
308
+ if (typeof raw['replacedBy'] === 'string') {
309
+ entry['replacedBy'] = raw['replacedBy'];
310
+ }
311
+ if (trail.detours !== undefined) {
312
+ const detours = {};
313
+ for (const key of Object.keys(trail.detours).toSorted()) {
314
+ detours[key] = (trail.detours[key] ?? []).toSorted();
315
+ }
316
+ entry['detours'] = detours;
317
+ }
318
+ };
319
+ const addTrailRelations = (entry, trail) => {
320
+ if (trail.crosses.length > 0) {
321
+ entry['crosses'] = trail.crosses.toSorted();
322
+ }
323
+ if (trail.provisions.length > 0) {
324
+ entry['provisions'] = trail.provisions
325
+ .map((provision) => provision.id)
326
+ .toSorted();
327
+ }
328
+ };
329
+ const buildTrailEntryBase = (trail, trailSchema) => {
330
+ const raw = trail;
331
+ const entry = {
332
+ cli: { path: deriveCliPath(trail.id) },
333
+ exampleCount: trail.examples?.length ?? 0,
334
+ id: trail.id,
335
+ input: trailSchema.input,
336
+ kind: trail.kind,
337
+ trailheads: extractTrailheads(raw),
338
+ };
339
+ if (trailSchema.output !== undefined) {
340
+ entry['output'] = trailSchema.output;
341
+ }
342
+ if (trail.description !== undefined) {
343
+ entry['description'] = trail.description;
344
+ }
345
+ return {
346
+ entry,
347
+ raw,
348
+ };
349
+ };
350
+ const trailToEntryRecord = (trail, trailSchema) => {
351
+ const { entry, raw } = buildTrailEntryBase(trail, trailSchema);
352
+ addSafetyMarkers(entry, trail);
353
+ addExtendedMetadata(entry, raw, trail);
354
+ addTrailRelations(entry, trail);
355
+ return sortKeys(entry);
356
+ };
357
+ const signalToEntryRecord = (signal, payloadSchema) => {
358
+ const raw = signal;
359
+ const entry = {
360
+ exampleCount: 0,
361
+ id: signal.id,
362
+ input: payloadSchema,
363
+ kind: 'signal',
364
+ trailheads: extractTrailheads(raw),
365
+ };
366
+ if (signal.description !== undefined) {
367
+ entry['description'] = signal.description;
368
+ }
369
+ if (raw['deprecated'] === true) {
370
+ entry['deprecated'] = true;
371
+ }
372
+ if (typeof raw['replacedBy'] === 'string') {
373
+ entry['replacedBy'] = raw['replacedBy'];
374
+ }
375
+ return sortKeys(entry);
376
+ };
377
+ const provisionToEntryRecord = (provision) => {
378
+ const entry = {
379
+ exampleCount: 0,
380
+ id: provision.id,
381
+ kind: 'provision',
382
+ trailheads: [],
383
+ };
384
+ if (provision.description !== undefined) {
385
+ entry['description'] = provision.description;
386
+ }
387
+ if (provision.health !== undefined) {
388
+ entry['healthcheck'] = true;
389
+ }
390
+ return sortKeys(entry);
391
+ };
392
+ const requireTrailSchema = (trailSchemas, trailId) => {
393
+ const schema = trailSchemas.get(trailId);
394
+ if (schema === undefined) {
395
+ throw new Error(`Missing cached trail schema for "${trailId}"`);
396
+ }
397
+ return schema;
398
+ };
399
+ const requireSignalPayload = (signalPayloads, signalId) => {
400
+ const payload = signalPayloads.get(signalId);
401
+ if (payload === undefined) {
402
+ throw new Error(`Missing cached signal schema for "${signalId}"`);
403
+ }
404
+ return payload;
405
+ };
406
+ const buildTrailheadMap = (generatedAt, provisions, signalPayloads, signals, trailSchemas, trails) => {
407
+ const entries = [
408
+ ...trails.map((trail) => trailToEntryRecord(trail, requireTrailSchema(trailSchemas, trail.id))),
409
+ ...signals.map((signal) => signalToEntryRecord(signal, requireSignalPayload(signalPayloads, signal.id))),
410
+ ...provisions.map((provision) => provisionToEntryRecord(provision)),
411
+ ].toSorted((a, b) => a.id.localeCompare(b.id));
412
+ return {
413
+ entries,
414
+ generatedAt,
415
+ version: '1.0',
416
+ };
417
+ };
418
+ const hashTrailheadMapRecord = (trailheadMap) => {
419
+ const { generatedAt: _unused, ...rest } = trailheadMap;
420
+ return hashValue(rest);
421
+ };
422
+ const entryPayload = (entry) => {
423
+ const { id: _unusedId, kind: _unusedKind, ...rest } = entry;
424
+ return sortKeys(rest);
425
+ };
426
+ const entriesForKind = (entries, kind) => Object.fromEntries(entries
427
+ .filter((entry) => entry.kind === kind)
428
+ .map((entry) => [entry.id, entryPayload(entry)]));
429
+ const buildSerializedLock = (hash, topo, trailheadMap) => sortKeys({
430
+ apps: sortKeys({
431
+ [topo.name]: sortKeys({
432
+ provisions: entriesForKind(trailheadMap.entries, 'provision'),
433
+ signals: entriesForKind(trailheadMap.entries, 'signal'),
434
+ trails: entriesForKind(trailheadMap.entries, 'trail'),
435
+ }),
436
+ }),
437
+ generatedAt: trailheadMap.generatedAt,
438
+ hash,
439
+ version: 1,
440
+ });
441
+ const buildStoredTopoExport = (db, save, topo) => {
442
+ const trails = topo.list().toSorted((a, b) => a.id.localeCompare(b.id));
443
+ const provisions = topo
444
+ .listProvisions()
445
+ .toSorted((a, b) => a.id.localeCompare(b.id));
446
+ const signals = topo
447
+ .listSignals()
448
+ .toSorted((a, b) => a.id.localeCompare(b.id));
449
+ const schemas = materializeSchemas(db, save.id, signals, trails);
450
+ const trailheadMap = buildTrailheadMap(save.createdAt, provisions, schemas.signalPayloads, signals, schemas.trailSchemas, trails);
451
+ const trailheadHash = hashTrailheadMapRecord(trailheadMap);
452
+ const serializedLock = `${JSON.stringify(buildSerializedLock(trailheadHash, topo, trailheadMap), null, 2)}\n`;
453
+ return {
454
+ exportRow: {
455
+ saveId: save.id,
456
+ serializedLock,
457
+ trailheadHash,
458
+ trailheadMap: `${JSON.stringify(trailheadMap, null, 2)}\n`,
459
+ },
460
+ schemaRows: schemas.rows,
461
+ };
462
+ };
463
+ const insertRows = (db, rows, statement, toParams) => {
464
+ for (const row of rows) {
465
+ db.run(statement, toParams(row));
466
+ }
467
+ };
468
+ const insertProjectedRows = (db, projection) => {
469
+ insertRows(db, projection.trails, `INSERT INTO topo_trails (
470
+ id, intent, idempotent, has_output, has_examples, example_count, description, meta, save_id
471
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, (row) => [
472
+ row.id,
473
+ row.intent,
474
+ row.idempotent,
475
+ row.hasOutput,
476
+ row.hasExamples,
477
+ row.exampleCount,
478
+ row.description,
479
+ row.meta,
480
+ row.saveId,
481
+ ]);
482
+ insertRows(db, projection.crossings, 'INSERT INTO topo_crossings (source_id, target_id, save_id) VALUES (?, ?, ?)', (row) => [row.sourceId, row.targetId, row.saveId]);
483
+ insertRows(db, projection.trailProvisions, `INSERT INTO topo_trail_provisions (trail_id, provision_id, save_id)
484
+ VALUES (?, ?, ?)`, (row) => [row.trailId, row.provisionId, row.saveId]);
485
+ insertRows(db, projection.provisions, `INSERT INTO topo_provisions (id, has_mock, has_health, save_id)
486
+ VALUES (?, ?, ?, ?)`, (row) => [row.id, row.hasMock, row.hasHealth, row.saveId]);
487
+ insertRows(db, projection.signals, 'INSERT INTO topo_signals (id, description, save_id) VALUES (?, ?, ?)', (row) => [row.id, row.description, row.saveId]);
488
+ insertRows(db, projection.trailSignals, `INSERT INTO topo_trail_signals (trail_id, signal_id, save_id)
489
+ VALUES (?, ?, ?)`, (row) => [row.trailId, row.signalId, row.saveId]);
490
+ insertRows(db, projection.trailheads, `INSERT INTO topo_trailheads (trail_id, trailhead, derived_name, method, save_id)
491
+ VALUES (?, ?, ?, ?, ?)`, (row) => [
492
+ row.trailId,
493
+ row.trailhead,
494
+ row.derivedName,
495
+ row.method,
496
+ row.saveId,
497
+ ]);
498
+ insertRows(db, projection.examples, `INSERT INTO topo_examples (
499
+ id, trail_id, ordinal, name, description, input, expected, error, save_id
500
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, (row) => [
501
+ row.id,
502
+ row.trailId,
503
+ row.ordinal,
504
+ row.name,
505
+ row.description,
506
+ row.input,
507
+ row.expected,
508
+ row.error,
509
+ row.saveId,
510
+ ]);
511
+ };
512
+ const insertSchemaRows = (db, rows) => {
513
+ insertRows(db, rows, `INSERT INTO topo_schemas (
514
+ owner_id, owner_kind, schema_kind, zod_hash, json_schema, save_id
515
+ ) VALUES (?, ?, ?, ?, ?, ?)`, (row) => [
516
+ row.ownerId,
517
+ row.ownerKind,
518
+ row.schemaKind,
519
+ row.zodHash,
520
+ row.jsonSchema,
521
+ row.saveId,
522
+ ]);
523
+ };
524
+ const insertStoredExport = (db, exportRow) => {
525
+ db.run(`INSERT INTO topo_exports (
526
+ save_id, trailhead_map, trailhead_hash, serialized_lock
527
+ ) VALUES (?, ?, ?, ?)`, [
528
+ exportRow.saveId,
529
+ exportRow.trailheadMap,
530
+ exportRow.trailheadHash,
531
+ exportRow.serializedLock,
532
+ ]);
533
+ };
534
+ export const getStoredTopoExport = (db, saveId) => {
535
+ const row = db
536
+ .query(`SELECT trailhead_map, trailhead_hash, serialized_lock
537
+ FROM topo_exports
538
+ WHERE save_id = ?`)
539
+ .get(saveId);
540
+ if (row === undefined || row === null) {
541
+ return undefined;
542
+ }
543
+ return {
544
+ lockContent: row.serialized_lock,
545
+ trailheadHash: row.trailhead_hash,
546
+ trailheadMapJson: row.trailhead_map,
547
+ };
548
+ };
549
+ export const persistEstablishedTopoSave = (db, topo, input) => {
550
+ const validated = validateEstablishedTopo(topo);
551
+ if (validated.isErr()) {
552
+ return Result.err(validated.error);
553
+ }
554
+ ensureTopoHistorySchema(db);
555
+ const saveInput = {
556
+ ...input,
557
+ provisionCount: input?.provisionCount ?? topo.provisions.size,
558
+ signalCount: input?.signalCount ?? topo.signals.size,
559
+ trailCount: input?.trailCount ?? topo.trails.size,
560
+ };
561
+ const save = db.transaction(() => {
562
+ const record = insertTopoSaveRecord(db, saveInput);
563
+ const artifacts = buildStoredTopoExport(db, record, topo);
564
+ insertProjectedRows(db, normalizeTopoProjection(topo, record.id));
565
+ insertSchemaRows(db, artifacts.schemaRows);
566
+ insertStoredExport(db, artifacts.exportRow);
567
+ return record;
568
+ })();
569
+ return Result.ok(save);
570
+ };
571
+ //# sourceMappingURL=topo-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topo-store.js","sourceRoot":"","sources":["../../src/internal/topo-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Database } from 'bun:sqlite';
2
+ export interface TrailsDbLocationOptions {
3
+ readonly path?: string;
4
+ readonly rootDir?: string;
5
+ }
6
+ export interface EnsureSubsystemSchemaOptions {
7
+ readonly migrate: (currentVersion: number) => void;
8
+ readonly subsystem: string;
9
+ readonly version: number;
10
+ }
11
+ export declare const resolveTrailsDir: (options?: TrailsDbLocationOptions) => string;
12
+ export declare const resolveTrailsDbPath: (options?: TrailsDbLocationOptions) => string;
13
+ export declare const openWriteTrailsDb: (options?: TrailsDbLocationOptions) => Database;
14
+ export declare const openReadTrailsDb: (options?: TrailsDbLocationOptions) => Database;
15
+ export declare const ensureSubsystemSchema: (db: Database, options: EnsureSubsystemSchemaOptions) => void;
16
+ //# sourceMappingURL=trails-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trails-db.d.ts","sourceRoot":"","sources":["../../src/internal/trails-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2BtC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AASD,eAAO,MAAM,gBAAgB,GAAI,UAAU,uBAAuB,KAAG,MACjB,CAAC;AAErD,eAAO,MAAM,mBAAmB,GAC9B,UAAU,uBAAuB,KAChC,MAGkD,CAAC;AAsFtD,eAAO,MAAM,iBAAiB,GAC5B,UAAU,uBAAuB,KAChC,QAgBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,UAAU,uBAAuB,KAChC,QAUF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,IAAI,QAAQ,EACZ,SAAS,4BAA4B,KACpC,IAYF,CAAC"}