@ontrails/core 1.0.0-beta.13 → 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 (59) hide show
  1. package/.turbo/turbo-lint.log +1 -1
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +2 -1
  4. package/dist/derive.d.ts +6 -0
  5. package/dist/derive.d.ts.map +1 -1
  6. package/dist/derive.js +29 -5
  7. package/dist/derive.js.map +1 -1
  8. package/dist/draft.d.ts +28 -0
  9. package/dist/draft.d.ts.map +1 -0
  10. package/dist/draft.js +156 -0
  11. package/dist/draft.js.map +1 -0
  12. package/dist/index.d.ts +6 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +5 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/internal/topo-saves.d.ts +47 -0
  17. package/dist/internal/topo-saves.d.ts.map +1 -0
  18. package/dist/internal/topo-saves.js +310 -0
  19. package/dist/internal/topo-saves.js.map +1 -0
  20. package/dist/internal/topo-store-read.d.ts +67 -0
  21. package/dist/internal/topo-store-read.d.ts.map +1 -0
  22. package/dist/internal/topo-store-read.js +222 -0
  23. package/dist/internal/topo-store-read.js.map +1 -0
  24. package/dist/internal/topo-store.d.ts +12 -0
  25. package/dist/internal/topo-store.d.ts.map +1 -0
  26. package/dist/internal/topo-store.js +571 -0
  27. package/dist/internal/topo-store.js.map +1 -0
  28. package/dist/internal/trails-db.d.ts +16 -0
  29. package/dist/internal/trails-db.d.ts.map +1 -0
  30. package/dist/internal/trails-db.js +118 -0
  31. package/dist/internal/trails-db.js.map +1 -0
  32. package/dist/topo-store.d.ts +48 -0
  33. package/dist/topo-store.d.ts.map +1 -0
  34. package/dist/topo-store.js +175 -0
  35. package/dist/topo-store.js.map +1 -0
  36. package/dist/validate-established-topo.d.ts +76 -0
  37. package/dist/validate-established-topo.d.ts.map +1 -0
  38. package/dist/validate-established-topo.js +43 -0
  39. package/dist/validate-established-topo.js.map +1 -0
  40. package/dist/validate-topo.d.ts.map +1 -1
  41. package/dist/validate-topo.js +5 -3
  42. package/dist/validate-topo.js.map +1 -1
  43. package/package.json +4 -1
  44. package/src/__tests__/derive.test.ts +58 -1
  45. package/src/__tests__/topo-store-read.test.ts +251 -0
  46. package/src/__tests__/topo-store.test.ts +469 -0
  47. package/src/__tests__/trails-db.test.ts +191 -0
  48. package/src/__tests__/validate-topo.test.ts +167 -0
  49. package/src/derive.ts +39 -8
  50. package/src/draft.ts +334 -0
  51. package/src/index.ts +30 -1
  52. package/src/internal/topo-saves.ts +429 -0
  53. package/src/internal/topo-store-read.ts +473 -0
  54. package/src/internal/topo-store.ts +1087 -0
  55. package/src/internal/trails-db.ts +189 -0
  56. package/src/topo-store.ts +301 -0
  57. package/src/validate-established-topo.ts +63 -0
  58. package/src/validate-topo.ts +7 -3
  59. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,310 @@
1
+ import { ensureSubsystemSchema } from './trails-db.js';
2
+ const TOPO_SUBSYSTEM = 'topo';
3
+ const TOPO_TABLE_STATEMENTS = [
4
+ `CREATE TABLE IF NOT EXISTS topo_saves (
5
+ id TEXT PRIMARY KEY,
6
+ git_sha TEXT,
7
+ git_dirty INTEGER NOT NULL DEFAULT 0,
8
+ trail_count INTEGER NOT NULL DEFAULT 0,
9
+ signal_count INTEGER NOT NULL DEFAULT 0,
10
+ provision_count INTEGER NOT NULL DEFAULT 0,
11
+ created_at TEXT NOT NULL
12
+ )`,
13
+ `CREATE TABLE IF NOT EXISTS topo_pins (
14
+ name TEXT PRIMARY KEY,
15
+ save_id TEXT NOT NULL,
16
+ created_at TEXT NOT NULL,
17
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id)
18
+ )`,
19
+ `CREATE TABLE IF NOT EXISTS topo_trails (
20
+ id TEXT NOT NULL,
21
+ intent TEXT,
22
+ idempotent INTEGER NOT NULL DEFAULT 0,
23
+ has_output INTEGER NOT NULL DEFAULT 0,
24
+ has_examples INTEGER NOT NULL DEFAULT 0,
25
+ example_count INTEGER NOT NULL DEFAULT 0,
26
+ description TEXT,
27
+ meta TEXT,
28
+ save_id TEXT NOT NULL,
29
+ PRIMARY KEY (id, save_id),
30
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
31
+ )`,
32
+ `CREATE TABLE IF NOT EXISTS topo_crossings (
33
+ source_id TEXT NOT NULL,
34
+ target_id TEXT NOT NULL,
35
+ save_id TEXT NOT NULL,
36
+ PRIMARY KEY (source_id, target_id, save_id),
37
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
38
+ )`,
39
+ `CREATE TABLE IF NOT EXISTS topo_trail_provisions (
40
+ trail_id TEXT NOT NULL,
41
+ provision_id TEXT NOT NULL,
42
+ save_id TEXT NOT NULL,
43
+ PRIMARY KEY (trail_id, provision_id, save_id),
44
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
45
+ )`,
46
+ `CREATE TABLE IF NOT EXISTS topo_provisions (
47
+ id TEXT NOT NULL,
48
+ has_mock INTEGER NOT NULL DEFAULT 0,
49
+ has_health INTEGER NOT NULL DEFAULT 0,
50
+ save_id TEXT NOT NULL,
51
+ PRIMARY KEY (id, save_id),
52
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
53
+ )`,
54
+ `CREATE TABLE IF NOT EXISTS topo_signals (
55
+ id TEXT NOT NULL,
56
+ description TEXT,
57
+ save_id TEXT NOT NULL,
58
+ PRIMARY KEY (id, save_id),
59
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
60
+ )`,
61
+ `CREATE TABLE IF NOT EXISTS topo_trail_signals (
62
+ trail_id TEXT NOT NULL,
63
+ signal_id TEXT NOT NULL,
64
+ save_id TEXT NOT NULL,
65
+ PRIMARY KEY (trail_id, signal_id, save_id),
66
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
67
+ )`,
68
+ `CREATE TABLE IF NOT EXISTS topo_trailheads (
69
+ trail_id TEXT NOT NULL,
70
+ trailhead TEXT NOT NULL,
71
+ derived_name TEXT NOT NULL,
72
+ method TEXT,
73
+ save_id TEXT NOT NULL,
74
+ PRIMARY KEY (trail_id, trailhead, save_id),
75
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
76
+ )`,
77
+ `CREATE TABLE IF NOT EXISTS topo_examples (
78
+ id TEXT PRIMARY KEY,
79
+ trail_id TEXT NOT NULL,
80
+ ordinal INTEGER NOT NULL,
81
+ name TEXT NOT NULL,
82
+ description TEXT,
83
+ input TEXT NOT NULL,
84
+ expected TEXT,
85
+ error TEXT,
86
+ save_id TEXT NOT NULL,
87
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
88
+ )`,
89
+ `CREATE TABLE IF NOT EXISTS topo_schemas (
90
+ owner_id TEXT NOT NULL,
91
+ owner_kind TEXT NOT NULL,
92
+ schema_kind TEXT NOT NULL,
93
+ zod_hash TEXT NOT NULL,
94
+ json_schema TEXT NOT NULL,
95
+ save_id TEXT NOT NULL,
96
+ PRIMARY KEY (owner_id, owner_kind, schema_kind, save_id),
97
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
98
+ )`,
99
+ `CREATE TABLE IF NOT EXISTS topo_exports (
100
+ save_id TEXT PRIMARY KEY,
101
+ trailhead_map TEXT NOT NULL,
102
+ trailhead_hash TEXT NOT NULL,
103
+ serialized_lock TEXT NOT NULL,
104
+ FOREIGN KEY (save_id) REFERENCES topo_saves(id) ON DELETE CASCADE
105
+ )`,
106
+ ];
107
+ const TOPO_INDEX_STATEMENTS = [
108
+ 'CREATE INDEX IF NOT EXISTS idx_topo_saves_created_at ON topo_saves(created_at DESC)',
109
+ 'CREATE INDEX IF NOT EXISTS idx_topo_pins_save_id ON topo_pins(save_id)',
110
+ 'CREATE INDEX IF NOT EXISTS idx_topo_trails_save_id ON topo_trails(save_id)',
111
+ 'CREATE INDEX IF NOT EXISTS idx_topo_crossings_save_id ON topo_crossings(save_id)',
112
+ 'CREATE INDEX IF NOT EXISTS idx_topo_trail_provisions_save_id ON topo_trail_provisions(save_id)',
113
+ 'CREATE INDEX IF NOT EXISTS idx_topo_provisions_save_id ON topo_provisions(save_id)',
114
+ 'CREATE INDEX IF NOT EXISTS idx_topo_signals_save_id ON topo_signals(save_id)',
115
+ 'CREATE INDEX IF NOT EXISTS idx_topo_trail_signals_save_id ON topo_trail_signals(save_id)',
116
+ 'CREATE INDEX IF NOT EXISTS idx_topo_trailheads_save_id ON topo_trailheads(save_id)',
117
+ 'CREATE UNIQUE INDEX IF NOT EXISTS idx_topo_examples_save_trail_ordinal ON topo_examples(save_id, trail_id, ordinal)',
118
+ 'CREATE INDEX IF NOT EXISTS idx_topo_schemas_save_id ON topo_schemas(save_id)',
119
+ `CREATE INDEX IF NOT EXISTS idx_topo_schemas_lookup
120
+ ON topo_schemas(owner_id, owner_kind, schema_kind, zod_hash)`,
121
+ ];
122
+ const rowToSave = (row) => ({
123
+ createdAt: row.created_at,
124
+ gitDirty: row.git_dirty === 1,
125
+ id: row.id,
126
+ provisionCount: row.provision_count,
127
+ signalCount: row.signal_count,
128
+ trailCount: row.trail_count,
129
+ ...(row.git_sha === null ? {} : { gitSha: row.git_sha }),
130
+ });
131
+ const rowToPin = (row) => ({
132
+ createdAt: row.created_at,
133
+ name: row.name,
134
+ saveId: row.save_id,
135
+ });
136
+ const tableExists = (db, tableName) => {
137
+ const row = db
138
+ .query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?")
139
+ .get(tableName);
140
+ return row?.name === tableName;
141
+ };
142
+ const runStatements = (db, statements) => {
143
+ for (const statement of statements) {
144
+ db.run(statement);
145
+ }
146
+ };
147
+ export const ensureTopoHistorySchema = (db) => {
148
+ ensureSubsystemSchema(db, {
149
+ migrate: (currentVersion) => {
150
+ if (currentVersion < 2) {
151
+ runStatements(db, TOPO_TABLE_STATEMENTS);
152
+ runStatements(db, TOPO_INDEX_STATEMENTS);
153
+ }
154
+ if (currentVersion === 2) {
155
+ // v2→v3: add schema cache and export tables
156
+ runStatements(db, TOPO_TABLE_STATEMENTS.slice(10));
157
+ runStatements(db, TOPO_INDEX_STATEMENTS.slice(10));
158
+ }
159
+ },
160
+ subsystem: TOPO_SUBSYSTEM,
161
+ version: 3,
162
+ });
163
+ };
164
+ export const insertTopoSaveRecord = (db, input) => {
165
+ const record = {
166
+ createdAt: input?.createdAt ?? new Date().toISOString(),
167
+ gitDirty: input?.gitDirty ?? false,
168
+ id: input?.id ?? Bun.randomUUIDv7(),
169
+ provisionCount: input?.provisionCount ?? 0,
170
+ signalCount: input?.signalCount ?? 0,
171
+ trailCount: input?.trailCount ?? 0,
172
+ ...(input?.gitSha === undefined ? {} : { gitSha: input.gitSha }),
173
+ };
174
+ db.run(`INSERT INTO topo_saves (
175
+ id, git_sha, git_dirty, trail_count, signal_count, provision_count, created_at
176
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`, [
177
+ record.id,
178
+ record.gitSha ?? null,
179
+ record.gitDirty ? 1 : 0,
180
+ record.trailCount,
181
+ record.signalCount,
182
+ record.provisionCount,
183
+ record.createdAt,
184
+ ]);
185
+ return record;
186
+ };
187
+ export const createTopoSave = (db, input) => {
188
+ ensureTopoHistorySchema(db);
189
+ return insertTopoSaveRecord(db, input);
190
+ };
191
+ export const pinTopoSave = (db, input) => {
192
+ ensureTopoHistorySchema(db);
193
+ const record = {
194
+ createdAt: input.createdAt ?? new Date().toISOString(),
195
+ name: input.name,
196
+ saveId: input.saveId,
197
+ };
198
+ db.run(`INSERT INTO topo_pins (name, save_id, created_at) VALUES (?, ?, ?)
199
+ ON CONFLICT(name) DO UPDATE SET
200
+ save_id = excluded.save_id,
201
+ created_at = excluded.created_at`, [record.name, record.saveId, record.createdAt]);
202
+ return record;
203
+ };
204
+ export const listTopoSaves = (db) => {
205
+ if (!tableExists(db, 'topo_saves')) {
206
+ return [];
207
+ }
208
+ const rows = db
209
+ .query(`SELECT id, git_sha, git_dirty, trail_count, signal_count, provision_count, created_at
210
+ FROM topo_saves
211
+ ORDER BY created_at DESC, id DESC`)
212
+ .all();
213
+ return rows.map(rowToSave);
214
+ };
215
+ export const listTopoPins = (db) => {
216
+ if (!tableExists(db, 'topo_pins')) {
217
+ return [];
218
+ }
219
+ const rows = db
220
+ .query(`SELECT name, save_id, created_at
221
+ FROM topo_pins
222
+ ORDER BY created_at ASC, name ASC`)
223
+ .all();
224
+ return rows.map(rowToPin);
225
+ };
226
+ const countSaves = (db) => {
227
+ const row = db
228
+ .query('SELECT COUNT(*) as count FROM topo_saves')
229
+ .get();
230
+ return row?.count ?? 0;
231
+ };
232
+ export const countTopoSaves = (db) => {
233
+ if (!tableExists(db, 'topo_saves')) {
234
+ return 0;
235
+ }
236
+ return countSaves(db);
237
+ };
238
+ export const countTopoPins = (db) => {
239
+ if (!tableExists(db, 'topo_pins')) {
240
+ return 0;
241
+ }
242
+ const row = db
243
+ .query('SELECT COUNT(*) as count FROM topo_pins')
244
+ .get();
245
+ return row?.count ?? 0;
246
+ };
247
+ export const getTopoSave = (db, id) => {
248
+ if (!tableExists(db, 'topo_saves')) {
249
+ return undefined;
250
+ }
251
+ const row = db
252
+ .query(`SELECT id, git_sha, git_dirty, trail_count, signal_count, provision_count, created_at
253
+ FROM topo_saves
254
+ WHERE id = ?`)
255
+ .get(id);
256
+ return row === null || row === undefined ? undefined : rowToSave(row);
257
+ };
258
+ export const getTopoPin = (db, name) => {
259
+ if (!tableExists(db, 'topo_pins')) {
260
+ return undefined;
261
+ }
262
+ const row = db
263
+ .query(`SELECT name, save_id, created_at
264
+ FROM topo_pins
265
+ WHERE name = ?`)
266
+ .get(name);
267
+ return row === null || row === undefined ? undefined : rowToPin(row);
268
+ };
269
+ export const countPrunableTopoSaves = (db, options) => {
270
+ if (!tableExists(db, 'topo_saves') || !tableExists(db, 'topo_pins')) {
271
+ return 0;
272
+ }
273
+ const row = db
274
+ .query(`SELECT COUNT(*) as count
275
+ FROM (
276
+ SELECT save.id
277
+ FROM topo_saves save
278
+ LEFT JOIN topo_pins pin ON pin.save_id = save.id
279
+ WHERE pin.save_id IS NULL
280
+ ORDER BY save.created_at DESC, save.id DESC
281
+ LIMIT -1 OFFSET ?
282
+ )`)
283
+ .get(options.keep);
284
+ return row?.count ?? 0;
285
+ };
286
+ export const pruneUnpinnedTopoSaves = (db, options) => {
287
+ if (!tableExists(db, 'topo_saves') || !tableExists(db, 'topo_pins')) {
288
+ return 0;
289
+ }
290
+ if (countPrunableTopoSaves(db, options) === 0) {
291
+ return 0;
292
+ }
293
+ db.run(`DELETE FROM topo_saves
294
+ WHERE id IN (
295
+ SELECT save.id
296
+ FROM topo_saves save
297
+ LEFT JOIN topo_pins pin ON pin.save_id = save.id
298
+ WHERE pin.save_id IS NULL
299
+ ORDER BY save.created_at DESC, save.id DESC
300
+ LIMIT -1 OFFSET ?
301
+ )`, [options.keep]);
302
+ return (db.query('SELECT changes() as changes').get()
303
+ ?.changes ?? 0);
304
+ };
305
+ export const unpinTopoSave = (db, name) => {
306
+ ensureTopoHistorySchema(db);
307
+ const result = db.run('DELETE FROM topo_pins WHERE name = ?', [name]);
308
+ return result.changes > 0;
309
+ };
310
+ //# sourceMappingURL=topo-saves.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topo-saves.js","sourceRoot":"","sources":["../../src/internal/topo-saves.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Database, SQLQueryBindings } from 'bun:sqlite';
2
+ import type { TopoPinRecord, TopoSaveRecord } from './topo-saves.js';
3
+ import type { StoredTopoExport } from './topo-store.js';
4
+ export interface TopoStoreRef {
5
+ readonly pin?: string;
6
+ readonly saveId?: string;
7
+ }
8
+ export interface TopoStoreTrailRecord {
9
+ readonly description: string | null;
10
+ readonly exampleCount: number;
11
+ readonly hasExamples: boolean;
12
+ readonly hasOutput: boolean;
13
+ readonly id: string;
14
+ readonly idempotent: boolean;
15
+ readonly intent: 'destroy' | 'read' | 'write';
16
+ readonly kind: 'trail';
17
+ readonly meta: Readonly<Record<string, unknown>> | null;
18
+ readonly safety: '-' | 'destroy' | 'read' | 'write';
19
+ readonly saveId: string;
20
+ }
21
+ export interface TopoStoreExampleRecord {
22
+ readonly description: string | null;
23
+ readonly error: string | null;
24
+ readonly expected: unknown;
25
+ readonly input: unknown;
26
+ readonly name: string;
27
+ readonly ordinal: number;
28
+ }
29
+ export interface TopoStoreTrailDetailRecord extends TopoStoreTrailRecord {
30
+ readonly crosses: readonly string[];
31
+ readonly detours: Readonly<Record<string, readonly string[]>> | null;
32
+ readonly examples: readonly TopoStoreExampleRecord[];
33
+ readonly provisions: readonly string[];
34
+ }
35
+ export interface TopoStoreProvisionRecord {
36
+ readonly description: string | null;
37
+ readonly hasHealth: boolean;
38
+ readonly hasMock: boolean;
39
+ readonly health: 'available' | 'none';
40
+ readonly id: string;
41
+ readonly kind: 'provision';
42
+ readonly lifetime: 'singleton';
43
+ readonly saveId: string;
44
+ readonly usedBy: readonly string[];
45
+ }
46
+ export interface TopoStoreExportRecord extends StoredTopoExport {
47
+ readonly save: TopoSaveRecord;
48
+ }
49
+ export declare const resolveTopoStoreSave: (db: Database, ref?: TopoStoreRef) => TopoSaveRecord | undefined;
50
+ export declare const listTopoStorePins: (db: Database) => readonly TopoPinRecord[];
51
+ export declare const listTopoStoreSaves: (db: Database) => readonly TopoSaveRecord[];
52
+ export declare const getTopoStoreExport: (db: Database, ref?: TopoStoreRef) => TopoStoreExportRecord | undefined;
53
+ export declare const listTopoStoreTrails: (db: Database, options?: {
54
+ readonly intent?: TopoStoreTrailRecord["intent"];
55
+ readonly save?: TopoStoreRef;
56
+ }) => readonly TopoStoreTrailRecord[];
57
+ export declare const getTopoStoreTrail: (db: Database, trailId: string, options?: {
58
+ readonly save?: TopoStoreRef;
59
+ }) => TopoStoreTrailDetailRecord | undefined;
60
+ export declare const listTopoStoreProvisions: (db: Database, options?: {
61
+ readonly save?: TopoStoreRef;
62
+ }) => readonly TopoStoreProvisionRecord[];
63
+ export declare const getTopoStoreProvision: (db: Database, provisionId: string, options?: {
64
+ readonly save?: TopoStoreRef;
65
+ }) => TopoStoreProvisionRecord | undefined;
66
+ export declare const queryTopoStore: <TRow extends Record<string, unknown>>(db: Database, sql: string, bindings?: readonly SQLQueryBindings[]) => readonly TRow[];
67
+ //# sourceMappingURL=topo-store-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topo-store-read.d.ts","sourceRoot":"","sources":["../../src/internal/topo-store-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG7D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B;AAwND,eAAO,MAAM,oBAAoB,GAC/B,IAAI,QAAQ,EACZ,MAAM,YAAY,KACjB,cAAc,GAAG,SAAoC,CAAC;AAEzD,eAAO,MAAM,iBAAiB,GAAI,IAAI,QAAQ,KAAG,SAAS,aAAa,EACrD,CAAC;AAEnB,eAAO,MAAM,kBAAkB,GAAI,IAAI,QAAQ,KAAG,SAAS,cAAc,EACtD,CAAC;AAEpB,eAAO,MAAM,kBAAkB,GAC7B,IAAI,QAAQ,EACZ,MAAM,YAAY,KACjB,qBAAqB,GAAG,SAe1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,IAAI,QAAQ,EACZ,UAAU;IACR,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;CAC9B,KACA,SAAS,oBAAoB,EA+B/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,IAAI,QAAQ,EACZ,SAAS,MAAM,EACf,UAAU;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAA;CAAE,KACzC,0BAA0B,GAAG,SA4B/B,CAAC;AAqBF,eAAO,MAAM,uBAAuB,GAClC,IAAI,QAAQ,EACZ,UAAU;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAA;CAAE,KACzC,SAAS,wBAAwB,EA4BnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,IAAI,QAAQ,EACZ,aAAa,MAAM,EACnB,UAAU;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAA;CAAE,KACzC,wBAAwB,GAAG,SAyB7B,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,IAAI,QAAQ,EACZ,KAAK,MAAM,EACX,WAAW,SAAS,gBAAgB,EAAE,KACrC,SAAS,IAAI,EAG0C,CAAC"}
@@ -0,0 +1,222 @@
1
+ import { ValidationError } from '../errors.js';
2
+ import { getTopoPin, getTopoSave, listTopoPins, listTopoSaves, } from './topo-saves.js';
3
+ import { getStoredTopoExport } from './topo-store.js';
4
+ const ensureSingleRefSelector = (ref) => {
5
+ if (ref?.pin !== undefined && ref.saveId !== undefined) {
6
+ throw new ValidationError('Topo store references may use pin or saveId, not both');
7
+ }
8
+ };
9
+ const normalizeIntent = (intent) => {
10
+ if (intent === 'destroy' || intent === 'read') {
11
+ return intent;
12
+ }
13
+ return 'write';
14
+ };
15
+ const safetyForIntent = (intent) => {
16
+ if (intent === 'destroy') {
17
+ return 'destroy';
18
+ }
19
+ if (intent === 'read') {
20
+ return 'read';
21
+ }
22
+ return 'write';
23
+ };
24
+ const parseMeta = (value) => value === null
25
+ ? null
26
+ : JSON.parse(value);
27
+ const parseJson = (value) => JSON.parse(value);
28
+ const resolveRefSave = (db, ref) => {
29
+ ensureSingleRefSelector(ref);
30
+ if (ref?.saveId !== undefined) {
31
+ return getTopoSave(db, ref.saveId);
32
+ }
33
+ if (ref?.pin !== undefined) {
34
+ const pin = getTopoPin(db, ref.pin);
35
+ return pin === undefined ? undefined : getTopoSave(db, pin.saveId);
36
+ }
37
+ return listTopoSaves(db)[0];
38
+ };
39
+ const readStoredEntry = (db, saveId, kind, id) => {
40
+ const stored = getStoredTopoExport(db, saveId);
41
+ if (stored === undefined) {
42
+ return undefined;
43
+ }
44
+ const map = JSON.parse(stored.trailheadMapJson);
45
+ return map.entries.find((entry) => entry.kind === kind && entry.id === id);
46
+ };
47
+ const mapTrailRow = (row) => {
48
+ const intent = normalizeIntent(row.intent);
49
+ return {
50
+ description: row.description,
51
+ exampleCount: row.example_count,
52
+ hasExamples: row.has_examples === 1,
53
+ hasOutput: row.has_output === 1,
54
+ id: row.id,
55
+ idempotent: row.idempotent === 1,
56
+ intent,
57
+ kind: 'trail',
58
+ meta: parseMeta(row.meta),
59
+ safety: safetyForIntent(intent),
60
+ saveId: row.save_id,
61
+ };
62
+ };
63
+ const readTrailCrossings = (db, saveId, trailId) => db
64
+ .query(`SELECT target_id
65
+ FROM topo_crossings
66
+ WHERE save_id = ? AND source_id = ?
67
+ ORDER BY target_id ASC`)
68
+ .all(saveId, trailId)
69
+ .map((row) => row.target_id);
70
+ const readTrailProvisionIds = (db, saveId, trailId) => db
71
+ .query(`SELECT provision_id
72
+ FROM topo_trail_provisions
73
+ WHERE save_id = ? AND trail_id = ?
74
+ ORDER BY provision_id ASC`)
75
+ .all(saveId, trailId)
76
+ .map((row) => row.provision_id);
77
+ const readTrailExamples = (db, saveId, trailId) => db
78
+ .query(`SELECT ordinal, name, description, input, expected, error
79
+ FROM topo_examples
80
+ WHERE save_id = ? AND trail_id = ?
81
+ ORDER BY ordinal ASC`)
82
+ .all(saveId, trailId)
83
+ .map((row) => ({
84
+ description: row.description,
85
+ error: row.error,
86
+ expected: row.expected === null ? null : parseJson(row.expected),
87
+ input: parseJson(row.input),
88
+ name: row.name,
89
+ ordinal: row.ordinal,
90
+ }));
91
+ const readProvisionUsage = (db, saveId) => {
92
+ const rows = db
93
+ .query(`SELECT provision_id, trail_id
94
+ FROM topo_trail_provisions
95
+ WHERE save_id = ?
96
+ ORDER BY provision_id ASC, trail_id ASC`)
97
+ .all(saveId);
98
+ const usage = new Map();
99
+ for (const row of rows) {
100
+ const trails = usage.get(row.provision_id) ?? [];
101
+ trails.push(row.trail_id);
102
+ usage.set(row.provision_id, trails);
103
+ }
104
+ return new Map([...usage.entries()].map(([id, trails]) => [id, trails]));
105
+ };
106
+ export const resolveTopoStoreSave = (db, ref) => resolveRefSave(db, ref);
107
+ export const listTopoStorePins = (db) => listTopoPins(db);
108
+ export const listTopoStoreSaves = (db) => listTopoSaves(db);
109
+ export const getTopoStoreExport = (db, ref) => {
110
+ const save = resolveRefSave(db, ref);
111
+ if (save === undefined) {
112
+ return undefined;
113
+ }
114
+ const stored = getStoredTopoExport(db, save.id);
115
+ if (stored === undefined) {
116
+ return undefined;
117
+ }
118
+ return {
119
+ ...stored,
120
+ save,
121
+ };
122
+ };
123
+ export const listTopoStoreTrails = (db, options) => {
124
+ const save = resolveRefSave(db, options?.save);
125
+ if (save === undefined) {
126
+ return [];
127
+ }
128
+ const baseQuery = `SELECT id, intent, idempotent, has_output, has_examples, example_count, description, meta, save_id
129
+ FROM topo_trails`;
130
+ let rows;
131
+ if (options?.intent === undefined) {
132
+ rows = db
133
+ .query(`${baseQuery} WHERE save_id = ? ORDER BY id ASC`)
134
+ .all(save.id);
135
+ }
136
+ else if (options.intent === 'write') {
137
+ rows = db
138
+ .query(`${baseQuery} WHERE save_id = ? AND intent = 'write' ORDER BY id ASC`)
139
+ .all(save.id);
140
+ }
141
+ else {
142
+ rows = db
143
+ .query(`${baseQuery} WHERE save_id = ? AND intent = ? ORDER BY id ASC`)
144
+ .all(save.id, options.intent);
145
+ }
146
+ return rows.map(mapTrailRow);
147
+ };
148
+ export const getTopoStoreTrail = (db, trailId, options) => {
149
+ const save = resolveRefSave(db, options?.save);
150
+ if (save === undefined) {
151
+ return undefined;
152
+ }
153
+ const row = db
154
+ .query(`SELECT id, intent, idempotent, has_output, has_examples, example_count, description, meta, save_id
155
+ FROM topo_trails
156
+ WHERE save_id = ? AND id = ?
157
+ LIMIT 1`)
158
+ .get(save.id, trailId);
159
+ if (row === null || row === undefined) {
160
+ return undefined;
161
+ }
162
+ const storedEntry = readStoredEntry(db, save.id, 'trail', trailId);
163
+ return {
164
+ ...mapTrailRow(row),
165
+ crosses: readTrailCrossings(db, save.id, trailId),
166
+ detours: storedEntry?.detours ?? null,
167
+ examples: readTrailExamples(db, save.id, trailId),
168
+ provisions: readTrailProvisionIds(db, save.id, trailId),
169
+ };
170
+ };
171
+ const mapProvisionRow = (row, usedBy, storedEntry) => ({
172
+ description: storedEntry?.description ?? null,
173
+ hasHealth: row.has_health === 1,
174
+ hasMock: row.has_mock === 1,
175
+ health: row.has_health === 1 || storedEntry?.healthcheck === true
176
+ ? 'available'
177
+ : 'none',
178
+ id: row.id,
179
+ kind: 'provision',
180
+ lifetime: 'singleton',
181
+ saveId: row.save_id,
182
+ usedBy,
183
+ });
184
+ export const listTopoStoreProvisions = (db, options) => {
185
+ const save = resolveRefSave(db, options?.save);
186
+ if (save === undefined) {
187
+ return [];
188
+ }
189
+ const usage = readProvisionUsage(db, save.id);
190
+ const rows = db
191
+ .query(`SELECT id, has_mock, has_health, save_id
192
+ FROM topo_provisions
193
+ WHERE save_id = ?
194
+ ORDER BY id ASC`)
195
+ .all(save.id);
196
+ const stored = getStoredTopoExport(db, save.id);
197
+ const entries = stored
198
+ ? JSON.parse(stored.trailheadMapJson).entries
199
+ : [];
200
+ return rows.map((row) => mapProvisionRow(row, usage.get(row.id) ?? [], entries.find((e) => e.kind === 'provision' && e.id === row.id)));
201
+ };
202
+ export const getTopoStoreProvision = (db, provisionId, options) => {
203
+ const save = resolveRefSave(db, options?.save);
204
+ if (save === undefined) {
205
+ return undefined;
206
+ }
207
+ const row = db
208
+ .query(`SELECT id, has_mock, has_health, save_id
209
+ FROM topo_provisions
210
+ WHERE save_id = ? AND id = ?
211
+ LIMIT 1`)
212
+ .get(save.id, provisionId);
213
+ if (row === null || row === undefined) {
214
+ return undefined;
215
+ }
216
+ const usage = readProvisionUsage(db, save.id);
217
+ return mapProvisionRow(row, usage.get(provisionId) ?? [], readStoredEntry(db, save.id, 'provision', provisionId));
218
+ };
219
+ export const queryTopoStore = (db, sql, bindings) => db
220
+ .query(sql)
221
+ .all(...(bindings === undefined ? [] : [...bindings]));
222
+ //# sourceMappingURL=topo-store-read.js.map
@@ -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"}