@weave-kit/engine 0.8.0 → 0.9.0

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 (147) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/adapters/graphql/http.js +1 -1
  3. package/dist/adapters/graphql/http.js.map +1 -1
  4. package/dist/adapters/graphql/loader.d.ts.map +1 -1
  5. package/dist/adapters/graphql/loader.js +2 -2
  6. package/dist/adapters/graphql/loader.js.map +1 -1
  7. package/dist/adapters/graphql/resolvers.d.ts.map +1 -1
  8. package/dist/adapters/graphql/resolvers.js +3 -2
  9. package/dist/adapters/graphql/resolvers.js.map +1 -1
  10. package/dist/adapters/graphql/types.d.ts +2 -0
  11. package/dist/adapters/graphql/types.d.ts.map +1 -1
  12. package/dist/adapters/mcp/generate.d.ts.map +1 -1
  13. package/dist/adapters/mcp/generate.js +1 -0
  14. package/dist/adapters/mcp/generate.js.map +1 -1
  15. package/dist/adapters/mcp/http.d.ts +2 -0
  16. package/dist/adapters/mcp/http.d.ts.map +1 -1
  17. package/dist/adapters/mcp/http.js +6 -1
  18. package/dist/adapters/mcp/http.js.map +1 -1
  19. package/dist/adapters/mcp/index.d.ts +2 -0
  20. package/dist/adapters/mcp/index.d.ts.map +1 -1
  21. package/dist/adapters/mcp/index.js +2 -1
  22. package/dist/adapters/mcp/index.js.map +1 -1
  23. package/dist/adapters/mcp/tools.d.ts.map +1 -1
  24. package/dist/adapters/mcp/tools.js +13 -4
  25. package/dist/adapters/mcp/tools.js.map +1 -1
  26. package/dist/adapters/rest/plugin.d.ts.map +1 -1
  27. package/dist/adapters/rest/plugin.js +11 -8
  28. package/dist/adapters/rest/plugin.js.map +1 -1
  29. package/dist/adapters/rest/workflow.js +8 -8
  30. package/dist/adapters/rest/workflow.js.map +1 -1
  31. package/dist/cli/commands/deploy.d.ts +6 -0
  32. package/dist/cli/commands/deploy.d.ts.map +1 -0
  33. package/dist/cli/commands/deploy.js +88 -0
  34. package/dist/cli/commands/deploy.js.map +1 -0
  35. package/dist/cli/index.js +13 -0
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/cli/types/commands.d.ts +8 -0
  38. package/dist/cli/types/commands.d.ts.map +1 -1
  39. package/dist/cli/types/index.d.ts +1 -1
  40. package/dist/cli/types/index.d.ts.map +1 -1
  41. package/dist/cli/types/values.d.ts +2 -0
  42. package/dist/cli/types/values.d.ts.map +1 -1
  43. package/dist/cli/types/values.js +2 -0
  44. package/dist/cli/types/values.js.map +1 -1
  45. package/dist/core/audit/index.d.ts +2 -2
  46. package/dist/core/audit/index.d.ts.map +1 -1
  47. package/dist/core/audit/index.js +1 -1
  48. package/dist/core/audit/index.js.map +1 -1
  49. package/dist/core/audit/types.d.ts +23 -0
  50. package/dist/core/audit/types.d.ts.map +1 -1
  51. package/dist/core/audit/types.js +11 -0
  52. package/dist/core/audit/types.js.map +1 -1
  53. package/dist/core/storage/apply.d.ts +3 -1
  54. package/dist/core/storage/apply.d.ts.map +1 -1
  55. package/dist/core/storage/apply.js +6 -2
  56. package/dist/core/storage/apply.js.map +1 -1
  57. package/dist/core/storage/index.d.ts +1 -0
  58. package/dist/core/storage/index.d.ts.map +1 -1
  59. package/dist/core/storage/index.js.map +1 -1
  60. package/dist/core/storage/meta.d.ts +4 -3
  61. package/dist/core/storage/meta.d.ts.map +1 -1
  62. package/dist/core/storage/meta.js +5 -4
  63. package/dist/core/storage/meta.js.map +1 -1
  64. package/dist/core/storage/migrate.d.ts +8 -0
  65. package/dist/core/storage/migrate.d.ts.map +1 -1
  66. package/dist/core/storage/migrate.js +33 -12
  67. package/dist/core/storage/migrate.js.map +1 -1
  68. package/dist/core/storage/queryable.d.ts +14 -0
  69. package/dist/core/storage/queryable.d.ts.map +1 -0
  70. package/dist/core/storage/queryable.js +2 -0
  71. package/dist/core/storage/queryable.js.map +1 -0
  72. package/dist/core/storage/system-tables.d.ts +2 -0
  73. package/dist/core/storage/system-tables.d.ts.map +1 -1
  74. package/dist/core/storage/system-tables.js +39 -0
  75. package/dist/core/storage/system-tables.js.map +1 -1
  76. package/dist/core/types/index.d.ts +1 -0
  77. package/dist/core/types/index.d.ts.map +1 -1
  78. package/dist/core/types/index.js +1 -0
  79. package/dist/core/types/index.js.map +1 -1
  80. package/dist/core/types/principal.d.ts +34 -0
  81. package/dist/core/types/principal.d.ts.map +1 -0
  82. package/dist/core/types/principal.js +32 -0
  83. package/dist/core/types/principal.js.map +1 -0
  84. package/dist/runtime/data-access/cursor.d.ts +9 -0
  85. package/dist/runtime/data-access/cursor.d.ts.map +1 -0
  86. package/dist/runtime/data-access/cursor.js +26 -0
  87. package/dist/runtime/data-access/cursor.js.map +1 -0
  88. package/dist/runtime/data-access/index.d.ts +2 -0
  89. package/dist/runtime/data-access/index.d.ts.map +1 -1
  90. package/dist/runtime/data-access/index.js +2 -0
  91. package/dist/runtime/data-access/index.js.map +1 -1
  92. package/dist/runtime/data-access/query.d.ts +1 -1
  93. package/dist/runtime/data-access/query.d.ts.map +1 -1
  94. package/dist/runtime/data-access/query.js +109 -36
  95. package/dist/runtime/data-access/query.js.map +1 -1
  96. package/dist/runtime/data-access/rbac.d.ts +2 -2
  97. package/dist/runtime/data-access/rbac.d.ts.map +1 -1
  98. package/dist/runtime/data-access/rbac.js +86 -47
  99. package/dist/runtime/data-access/rbac.js.map +1 -1
  100. package/dist/runtime/data-access/types.d.ts +24 -9
  101. package/dist/runtime/data-access/types.d.ts.map +1 -1
  102. package/dist/runtime/data-access/types.js +9 -1
  103. package/dist/runtime/data-access/types.js.map +1 -1
  104. package/dist/runtime/engine.d.ts +8 -1
  105. package/dist/runtime/engine.d.ts.map +1 -1
  106. package/dist/runtime/engine.js +40 -13
  107. package/dist/runtime/engine.js.map +1 -1
  108. package/dist/runtime/git/sync.d.ts +18 -3
  109. package/dist/runtime/git/sync.d.ts.map +1 -1
  110. package/dist/runtime/git/sync.js +25 -25
  111. package/dist/runtime/git/sync.js.map +1 -1
  112. package/dist/runtime/metadata/cache.d.ts +17 -5
  113. package/dist/runtime/metadata/cache.d.ts.map +1 -1
  114. package/dist/runtime/metadata/cache.js +46 -19
  115. package/dist/runtime/metadata/cache.js.map +1 -1
  116. package/dist/runtime/metadata/index.d.ts +3 -1
  117. package/dist/runtime/metadata/index.d.ts.map +1 -1
  118. package/dist/runtime/metadata/index.js +2 -1
  119. package/dist/runtime/metadata/index.js.map +1 -1
  120. package/dist/runtime/metadata/revision.d.ts +41 -0
  121. package/dist/runtime/metadata/revision.d.ts.map +1 -0
  122. package/dist/runtime/metadata/revision.js +53 -0
  123. package/dist/runtime/metadata/revision.js.map +1 -0
  124. package/dist/runtime/tools/executor.d.ts.map +1 -1
  125. package/dist/runtime/tools/executor.js +2 -1
  126. package/dist/runtime/tools/executor.js.map +1 -1
  127. package/dist/subsystems/audit/index.d.ts +10 -2
  128. package/dist/subsystems/audit/index.d.ts.map +1 -1
  129. package/dist/subsystems/audit/index.js +14 -1
  130. package/dist/subsystems/audit/index.js.map +1 -1
  131. package/dist/subsystems/audit/outbox.d.ts +33 -0
  132. package/dist/subsystems/audit/outbox.d.ts.map +1 -0
  133. package/dist/subsystems/audit/outbox.js +111 -0
  134. package/dist/subsystems/audit/outbox.js.map +1 -0
  135. package/dist/subsystems/audit/store.d.ts +3 -2
  136. package/dist/subsystems/audit/store.d.ts.map +1 -1
  137. package/dist/subsystems/audit/store.js +9 -7
  138. package/dist/subsystems/audit/store.js.map +1 -1
  139. package/dist/subsystems/script/bridge.d.ts.map +1 -1
  140. package/dist/subsystems/script/bridge.js +2 -1
  141. package/dist/subsystems/script/bridge.js.map +1 -1
  142. package/dist/subsystems/workflow/scheduler.d.ts.map +1 -1
  143. package/dist/subsystems/workflow/scheduler.js +2 -1
  144. package/dist/subsystems/workflow/scheduler.js.map +1 -1
  145. package/dist/version.d.ts +1 -1
  146. package/dist/version.js +1 -1
  147. package/package.json +1 -1
@@ -1,7 +1,8 @@
1
1
  import Fastify from 'fastify';
2
2
  import cors from '@fastify/cors';
3
3
  import { join } from 'node:path';
4
- import { DEFAULT_LOCALE, NOOP_AUDIT_SINK, ObjectRegistry, SchemaError, SUPPORTED_LOCALES, createPool, createSlidingWindow, } from '../core/index.js';
4
+ import { createHash } from 'node:crypto';
5
+ import { DEFAULT_LOCALE, NOOP_AUDIT_SINK, ObjectRegistry, SchemaError, SUPPORTED_LOCALES, AUDIT_MODES, createPool, createSlidingWindow, } from '../core/index.js';
5
6
  import { createDataAccess, withRbac } from './data-access/index.js';
6
7
  import { createToolExecutor, loadToolsDir } from './tools/index.js';
7
8
  import { createApprovals } from './tools/index.js';
@@ -87,17 +88,11 @@ export async function buildEngineFromRegistry(registry, config) {
87
88
  }
88
89
  let audit;
89
90
  let bufferedSink;
91
+ let outboxRelay;
90
92
  let auditSink = NOOP_AUDIT_SINK;
91
- if (subsystems.audit?.enabled) {
92
- const { createAudit, createBufferedAuditSink } = await import('../subsystems/audit/index.js');
93
- audit = await createAudit(pool);
94
- bufferedSink = createBufferedAuditSink(audit, subsystems.audit.batch);
95
- auditSink = bufferedSink;
96
- }
97
93
  // live channel: the event bus is created only when adapters.events is
98
- // enabled (absent = not imported = zero overhead). Its publisher is injected
99
- // into data-access (record.* on committed writes) and the audit sink
100
- // (audit.event dual-emit). schema.changed is exposed via `engine.events`.
94
+ // enabled (absent = not imported = zero overhead). The audit sink streams to
95
+ // it (best-effort/transactional at write time; durable from the relay).
101
96
  const eventsCfg = config.adapters?.events;
102
97
  let eventBus;
103
98
  let eventPublisher;
@@ -105,9 +100,27 @@ export async function buildEngineFromRegistry(registry, config) {
105
100
  const { createEventBus, publisherOf } = await import('../infrastructure/event/index.js');
106
101
  eventBus = createEventBus({ maxEvents: eventsCfg.replay?.maxEvents });
107
102
  eventPublisher = publisherOf(eventBus);
108
- if (auditSink !== NOOP_AUDIT_SINK) {
109
- // decorate the buffered sink so audit events also stream to live
110
- // subscribers (PG persistence and live push stay decoupled)
103
+ }
104
+ if (subsystems.audit?.enabled) {
105
+ const mode = subsystems.audit.mode ?? AUDIT_MODES.BEST_EFFORT;
106
+ const auditMod = await import('../subsystems/audit/index.js');
107
+ audit = await auditMod.createAudit(pool);
108
+ if (mode === AUDIT_MODES.TRANSACTIONAL) {
109
+ auditSink = auditMod.createTransactionalAuditSink(audit);
110
+ }
111
+ else if (mode === AUDIT_MODES.DURABLE) {
112
+ auditSink = auditMod.createOutboxAuditSink(pool);
113
+ outboxRelay = auditMod.startAuditOutboxRelay({
114
+ pool,
115
+ publish: eventPublisher === undefined ? undefined : (event) => eventPublisher.publishAudit(event),
116
+ });
117
+ }
118
+ else {
119
+ bufferedSink = auditMod.createBufferedAuditSink(audit, subsystems.audit.batch);
120
+ auditSink = bufferedSink;
121
+ }
122
+ if (eventPublisher !== undefined && mode !== AUDIT_MODES.DURABLE) {
123
+ // dual-emit to live subscribers (durable publishes from the relay instead)
111
124
  const inner = auditSink;
112
125
  auditSink = {
113
126
  record(event) {
@@ -121,6 +134,7 @@ export async function buildEngineFromRegistry(registry, config) {
121
134
  return inner.recordBatch(events);
122
135
  return Promise.all(events.map((e) => inner.record(e))).then(() => { });
123
136
  },
137
+ ...(inner.recordInTx === undefined ? {} : { recordInTx: inner.recordInTx }),
124
138
  };
125
139
  }
126
140
  }
@@ -381,6 +395,17 @@ export async function buildEngineFromRegistry(registry, config) {
381
395
  // customer-provided IdentityResolver).
382
396
  let mcp;
383
397
  if (mcpCfg?.enabled ?? true) {
398
+ // schema signature: folded into the MCP compiled-surface cache key so a
399
+ // schema change (a reload swapping the registry) invalidates the cache
400
+ const schemaRevision = createHash('sha256')
401
+ .update(JSON.stringify([...registry.list()]
402
+ .map((d) => ({
403
+ n: d.name,
404
+ f: d.fields.map((x) => x.name),
405
+ p: d.permissions ?? null,
406
+ }))
407
+ .sort((a, b) => (a.n < b.n ? -1 : a.n > b.n ? 1 : 0))))
408
+ .digest('hex');
384
409
  mcp = registerMcp(app, {
385
410
  engine: { registry, pool, dataAccess, locale },
386
411
  authenticator,
@@ -391,6 +416,7 @@ export async function buildEngineFromRegistry(registry, config) {
391
416
  tools,
392
417
  directory: identityDirectory,
393
418
  corsOrigin: config.adapters?.rest?.cors?.origin,
419
+ schemaRevision,
394
420
  });
395
421
  }
396
422
  // GraphQL adapter (adapters.graphql): disabled unless explicitly enabled. It
@@ -459,6 +485,7 @@ export async function buildEngineFromRegistry(registry, config) {
459
485
  await graphqlHandle?.close().catch((error) => warn('graphql', error));
460
486
  await workflowScheduler?.close().catch((error) => warn('workflow', error));
461
487
  await script?.close().catch((error) => warn('script', error));
488
+ await outboxRelay?.close().catch((error) => warn('audit outbox', error));
462
489
  await bufferedSink?.flush().catch((error) => warn('audit flush', error));
463
490
  await audit?.close().catch((error) => warn('audit', error));
464
491
  eventBus?.close();
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/runtime/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/runtime/engine.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,10 @@ export interface SyncSchemaOptions {
16
16
  allowedFieldTypes?: readonly string[];
17
17
  /** effective field-type registry (built-ins + user registrations) */
18
18
  fieldTypes?: FieldTypeRegistry;
19
+ /** source git commit recorded on the schema revision (best-effort) */
20
+ sourceCommit?: string;
21
+ /** actor label recorded on the schema revision (best-effort) */
22
+ actor?: string;
19
23
  }
20
24
  export interface SyncResult {
21
25
  registry: ObjectRegistry;
@@ -25,11 +29,22 @@ export interface SyncResult {
25
29
  updated: string[];
26
30
  removed: string[];
27
31
  };
32
+ /** deterministic aggregate hash over the loaded schema files */
33
+ schemaHash: string;
34
+ /** schema revision row written in the same transaction (absent on dryRun) */
35
+ revision?: {
36
+ revision: number;
37
+ created: boolean;
38
+ };
28
39
  }
29
40
  /**
30
- * One-way Git → PG metadata sync (MVP simplification): read schema files →
31
- * validate → migrate DDL → write the PG metadata cache. Returns the registry
32
- * built from disk so callers (e.g. createEngine) can reuse it.
41
+ * One-way Git → PG metadata sync: read schema files → validate → migrate DDL
42
+ * → write the PG metadata cache **+ schema revision in the same transaction**.
43
+ *
44
+ * The DDL, `schema.applied.*` meta, workflow-definition registration, metadata
45
+ * cache and schema revision all commit or roll back as one unit (an advisory
46
+ * xact lock serializes concurrent deploys). Returns the registry built from
47
+ * disk so callers (e.g. createEngine) can reuse it.
33
48
  */
34
49
  export declare function syncSchema(options: SyncSchemaOptions): Promise<SyncResult>;
35
50
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/runtime/git/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoC,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,qEAAqE;IACrE,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2ChF"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/runtime/git/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,qEAAqE;IACrE,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACnD;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsChF"}
@@ -1,10 +1,14 @@
1
- import { ObjectRegistry, SchemaError, createPool, migrate } from '../../core/index.js';
2
- import { syncMetadataCache } from '../metadata/index.js';
1
+ import { ObjectRegistry, SchemaError, migrate } from '../../core/index.js';
2
+ import { computeSchemaHash, syncMetadataCacheOn, writeSchemaRevision, } from '../metadata/index.js';
3
3
  import { loadSchemaDir } from './loader.js';
4
4
  /**
5
- * One-way Git → PG metadata sync (MVP simplification): read schema files →
6
- * validate → migrate DDL → write the PG metadata cache. Returns the registry
7
- * built from disk so callers (e.g. createEngine) can reuse it.
5
+ * One-way Git → PG metadata sync: read schema files → validate → migrate DDL
6
+ * → write the PG metadata cache **+ schema revision in the same transaction**.
7
+ *
8
+ * The DDL, `schema.applied.*` meta, workflow-definition registration, metadata
9
+ * cache and schema revision all commit or roll back as one unit (an advisory
10
+ * xact lock serializes concurrent deploys). Returns the registry built from
11
+ * disk so callers (e.g. createEngine) can reuse it.
8
12
  */
9
13
  export async function syncSchema(options) {
10
14
  const url = options.databaseUrl ?? process.env.DATABASE_URL;
@@ -17,30 +21,26 @@ export async function syncSchema(options) {
17
21
  fieldTypes: options.fieldTypes,
18
22
  });
19
23
  registry.buildGraph({ locale: options.locale });
24
+ const schemaHash = computeSchemaHash(files);
25
+ const entries = files.map((f) => ({ name: f.name, contentHash: f.contentHash, definition: f.object }));
26
+ let cache = { updated: [], removed: [] };
27
+ let revision;
20
28
  const migration = await migrate(registry, {
21
29
  databaseUrl: url,
22
30
  dryRun: options.dryRun,
23
31
  rls: options.rls,
32
+ onCommit: options.dryRun === true
33
+ ? undefined
34
+ : async (client) => {
35
+ cache = await syncMetadataCacheOn(client, entries);
36
+ revision = await writeSchemaRevision(client, {
37
+ contentHash: schemaHash,
38
+ objects: entries.map((e) => e.name),
39
+ sourceCommit: options.sourceCommit,
40
+ actor: options.actor,
41
+ });
42
+ },
24
43
  });
25
- let cache = { updated: [], removed: [] };
26
- if (!options.dryRun) {
27
- const pool = createPool(url);
28
- try {
29
- cache = await syncMetadataCache(pool, files.map((f) => ({ name: f.name, contentHash: f.contentHash, definition: f.object })));
30
- }
31
- catch (error) {
32
- // The DDL (migrate) above is already committed and idempotent. The cache
33
- // write is a separate step — on failure surface it loudly (never a
34
- // silent partial sync leaving Git source of truth vs PG cache drifted);
35
- // a re-run of sync converges.
36
- if (error instanceof SchemaError)
37
- throw error;
38
- throw new Error(`metadata cache write failed after DDL applied (re-run sync to converge): ${error instanceof Error ? error.message : String(error)}`);
39
- }
40
- finally {
41
- await pool.end();
42
- }
43
- }
44
- return { registry, files, migration, cache };
44
+ return { registry, files, migration, cache, schemaHash, revision };
45
45
  }
46
46
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/runtime/git/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyB5C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC5D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CAAC,4BAA4B,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;QACxC,WAAW,EAAE,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,IAAI,KAAK,GAA6C,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,iBAAiB,CAC7B,IAAI,EACJ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CACvF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yEAAyE;YACzE,mEAAmE;YACnE,wEAAwE;YACxE,8BAA8B;YAC9B,IAAI,KAAK,YAAY,WAAW;gBAAE,MAAM,KAAK,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,4EACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/runtime/git/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAiC5C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC5D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CAAC,4BAA4B,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEvG,IAAI,KAAK,GAA6C,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnF,IAAI,QAA4D,CAAC;IAEjE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;QACxC,WAAW,EAAE,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EACN,OAAO,CAAC,MAAM,KAAK,IAAI;YACrB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACf,KAAK,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACnD,QAAQ,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE;oBAC3C,WAAW,EAAE,UAAU;oBACvB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;oBACnC,YAAY,EAAE,OAAO,CAAC,YAAY;oBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;YACL,CAAC;KACR,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACrE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { Pool } from 'pg';
2
+ import type { SqlQueryable } from '../../core/index.js';
2
3
  export interface MetadataRow {
3
4
  objectName: string;
4
5
  contentHash: string;
@@ -10,16 +11,27 @@ export interface MetadataEntry {
10
11
  definition: unknown;
11
12
  }
12
13
  /** read the whole metadata cache keyed by object name */
13
- export declare function readMetadataCache(pool: Pool): Promise<Map<string, MetadataRow>>;
14
- /** upsert metadata cache entries inside a transaction */
14
+ export declare function readMetadataCache(db: SqlQueryable): Promise<Map<string, MetadataRow>>;
15
+ /** upsert metadata cache entries on an existing SqlQueryable (no transaction management) */
16
+ export declare function writeMetadataCacheOn(db: SqlQueryable, entries: MetadataEntry[]): Promise<void>;
17
+ /** upsert metadata cache entries inside its own transaction */
15
18
  export declare function writeMetadataCache(pool: Pool, entries: MetadataEntry[]): Promise<void>;
16
19
  /** drop metadata cache rows for objects that no longer exist on disk */
17
- export declare function invalidateMetadata(pool: Pool, names: string[]): Promise<void>;
20
+ export declare function invalidateMetadata(db: SqlQueryable, names: string[]): Promise<void>;
18
21
  /**
19
- * Bring the metadata cache in sync with the loaded schema files: upsert the
20
- * current definitions and prune rows for removed objects. Returns which
22
+ * Bring the metadata cache in sync on an existing SqlQueryable (no transaction
23
+ * management) — used inside the atomic deploy transaction. Returns which
21
24
  * objects were updated (content hash changed) and removed.
22
25
  */
26
+ export declare function syncMetadataCacheOn(db: SqlQueryable, files: MetadataEntry[]): Promise<{
27
+ updated: string[];
28
+ removed: string[];
29
+ }>;
30
+ /**
31
+ * Bring the metadata cache in sync with the loaded schema files: upsert the
32
+ * current definitions and prune rows for removed objects. Runs in one
33
+ * transaction.
34
+ */
23
35
  export declare function syncMetadataCache(pool: Pool, files: MetadataEntry[]): Promise<{
24
36
  updated: string[];
25
37
  removed: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/runtime/metadata/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAI/B,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,yDAAyD;AACzD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAarF;AAED,yDAAyD;AACzD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5F;AAED,wEAAwE;AACxE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,aAAa,EAAE,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAOnD"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/runtime/metadata/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,yDAAyD;AACzD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAa3F;AAED,4FAA4F;AAC5F,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAapG;AAED,+DAA+D;AAC/D,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5F;AAED,wEAAwE;AACxE,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,aAAa,EAAE,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAOnD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,aAAa,EAAE,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAanD"}
@@ -1,7 +1,7 @@
1
1
  const TABLE = 'weavekit_metadata';
2
2
  /** read the whole metadata cache keyed by object name */
3
- export async function readMetadataCache(pool) {
4
- const result = await pool.query(`SELECT object_name, content_hash, applied_at FROM ${TABLE}`);
3
+ export async function readMetadataCache(db) {
4
+ const result = await db.query(`SELECT object_name, content_hash, applied_at FROM ${TABLE}`);
5
5
  const map = new Map();
6
6
  for (const row of result.rows) {
7
7
  map.set(row.object_name, {
@@ -12,21 +12,27 @@ export async function readMetadataCache(pool) {
12
12
  }
13
13
  return map;
14
14
  }
15
- /** upsert metadata cache entries inside a transaction */
15
+ /** upsert metadata cache entries on an existing SqlQueryable (no transaction management) */
16
+ export async function writeMetadataCacheOn(db, entries) {
17
+ if (entries.length === 0)
18
+ return;
19
+ for (const entry of entries) {
20
+ await db.query(`INSERT INTO ${TABLE} (object_name, content_hash, definition, updated_at)
21
+ VALUES ($1, $2, $3::jsonb, now())
22
+ ON CONFLICT (object_name) DO UPDATE
23
+ SET content_hash = EXCLUDED.content_hash,
24
+ definition = EXCLUDED.definition,
25
+ updated_at = now()`, [entry.name, entry.contentHash, JSON.stringify(entry.definition)]);
26
+ }
27
+ }
28
+ /** upsert metadata cache entries inside its own transaction */
16
29
  export async function writeMetadataCache(pool, entries) {
17
30
  if (entries.length === 0)
18
31
  return;
19
32
  const client = await pool.connect();
20
33
  try {
21
34
  await client.query('BEGIN');
22
- for (const entry of entries) {
23
- await client.query(`INSERT INTO ${TABLE} (object_name, content_hash, definition, updated_at)
24
- VALUES ($1, $2, $3::jsonb, now())
25
- ON CONFLICT (object_name) DO UPDATE
26
- SET content_hash = EXCLUDED.content_hash,
27
- definition = EXCLUDED.definition,
28
- updated_at = now()`, [entry.name, entry.contentHash, JSON.stringify(entry.definition)]);
29
- }
35
+ await writeMetadataCacheOn(client, entries);
30
36
  await client.query('COMMIT');
31
37
  }
32
38
  catch (error) {
@@ -38,22 +44,43 @@ export async function writeMetadataCache(pool, entries) {
38
44
  }
39
45
  }
40
46
  /** drop metadata cache rows for objects that no longer exist on disk */
41
- export async function invalidateMetadata(pool, names) {
47
+ export async function invalidateMetadata(db, names) {
42
48
  if (names.length === 0)
43
49
  return;
44
- await pool.query(`DELETE FROM ${TABLE} WHERE object_name = ANY($1)`, [names]);
50
+ await db.query(`DELETE FROM ${TABLE} WHERE object_name = ANY($1)`, [names]);
45
51
  }
46
52
  /**
47
- * Bring the metadata cache in sync with the loaded schema files: upsert the
48
- * current definitions and prune rows for removed objects. Returns which
53
+ * Bring the metadata cache in sync on an existing SqlQueryable (no transaction
54
+ * management) — used inside the atomic deploy transaction. Returns which
49
55
  * objects were updated (content hash changed) and removed.
50
56
  */
51
- export async function syncMetadataCache(pool, files) {
52
- const existing = await readMetadataCache(pool);
57
+ export async function syncMetadataCacheOn(db, files) {
58
+ const existing = await readMetadataCache(db);
53
59
  const updated = files.filter((f) => existing.get(f.name)?.contentHash !== f.contentHash).map((f) => f.name);
54
60
  const removed = [...existing.keys()].filter((name) => !files.some((f) => f.name === name));
55
- await writeMetadataCache(pool, files);
56
- await invalidateMetadata(pool, removed);
61
+ await writeMetadataCacheOn(db, files);
62
+ await invalidateMetadata(db, removed);
57
63
  return { updated, removed };
58
64
  }
65
+ /**
66
+ * Bring the metadata cache in sync with the loaded schema files: upsert the
67
+ * current definitions and prune rows for removed objects. Runs in one
68
+ * transaction.
69
+ */
70
+ export async function syncMetadataCache(pool, files) {
71
+ const client = await pool.connect();
72
+ try {
73
+ await client.query('BEGIN');
74
+ const result = await syncMetadataCacheOn(client, files);
75
+ await client.query('COMMIT');
76
+ return result;
77
+ }
78
+ catch (error) {
79
+ await client.query('ROLLBACK');
80
+ throw error;
81
+ }
82
+ finally {
83
+ client.release();
84
+ }
85
+ }
59
86
  //# sourceMappingURL=cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/runtime/metadata/cache.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAG,mBAAmB,CAAC;AAclC,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAU;IAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B,qDAAqD,KAAK,EAAE,CAC7D,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAyE,EAAE,CAAC;QACnG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE;YACvB,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,OAAwB;IAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,CAAC,KAAK,CAChB,eAAe,KAAK;;;;;kCAKM,EAC1B,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAClE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,KAAe;IAClE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,8BAA8B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAU,EACV,KAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5G,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/runtime/metadata/cache.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
- export { readMetadataCache, writeMetadataCache, invalidateMetadata, syncMetadataCache, } from './cache.js';
1
+ export { readMetadataCache, writeMetadataCache, writeMetadataCacheOn, invalidateMetadata, syncMetadataCache, syncMetadataCacheOn, } from './cache.js';
2
2
  export type { MetadataRow, MetadataEntry } from './cache.js';
3
+ export { computeSchemaHash, latestSchemaRevision, writeSchemaRevision, } from './revision.js';
4
+ export type { SchemaRevision, SchemaRevisionInput } from './revision.js';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,2 +1,3 @@
1
- export { readMetadataCache, writeMetadataCache, invalidateMetadata, syncMetadataCache, } from './cache.js';
1
+ export { readMetadataCache, writeMetadataCache, writeMetadataCacheOn, invalidateMetadata, syncMetadataCache, syncMetadataCacheOn, } from './cache.js';
2
+ export { computeSchemaHash, latestSchemaRevision, writeSchemaRevision, } from './revision.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { type SqlQueryable } from '../../core/index.js';
2
+ /**
3
+ * Global schema revisions (`weavekit_schema_revision`): an append-only history
4
+ * anchored on a deterministic aggregate content hash over the schema files.
5
+ * This is the "schema revision = database revision = runtime revision" anchor —
6
+ * Git / DB / metadata cache / runtime can all be compared to one id.
7
+ */
8
+ export interface SchemaRevision {
9
+ revision: number;
10
+ contentHash: string;
11
+ parentRevision: number | null;
12
+ sourceCommit: string | null;
13
+ actor: string | null;
14
+ objects: string[];
15
+ status: string;
16
+ createdAt: Date;
17
+ }
18
+ export interface SchemaRevisionInput {
19
+ contentHash: string;
20
+ sourceCommit?: string;
21
+ actor?: string;
22
+ objects: readonly string[];
23
+ status?: string;
24
+ }
25
+ /** deterministic, order-independent aggregate hash over the per-object content hashes */
26
+ export declare function computeSchemaHash(files: readonly {
27
+ name: string;
28
+ contentHash: string;
29
+ }[]): string;
30
+ /** the most recent revision, or null when none has been recorded */
31
+ export declare function latestSchemaRevision(db: SqlQueryable): Promise<SchemaRevision | null>;
32
+ /**
33
+ * Record a schema revision. Idempotent by content hash: when the latest
34
+ * revision already carries the same hash, no new row is written and the
35
+ * existing id is returned. `parent_revision` links the chain.
36
+ */
37
+ export declare function writeSchemaRevision(db: SqlQueryable, input: SchemaRevisionInput): Promise<{
38
+ revision: number;
39
+ created: boolean;
40
+ }>;
41
+ //# sourceMappingURL=revision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision.d.ts","sourceRoot":"","sources":["../../../src/runtime/metadata/revision.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,yFAAyF;AACzF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,GACtD,MAAM,CAMR;AAgBD,oEAAoE;AACpE,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAI3F;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAmBjD"}
@@ -0,0 +1,53 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { SYSTEM_TABLES } from '../../core/index.js';
3
+ const TABLE = SYSTEM_TABLES.SCHEMA_REVISION;
4
+ /** deterministic, order-independent aggregate hash over the per-object content hashes */
5
+ export function computeSchemaHash(files) {
6
+ const canonical = [...files]
7
+ .map((f) => `${f.name}:${f.contentHash}`)
8
+ .sort()
9
+ .join('\n');
10
+ return createHash('sha256').update(canonical, 'utf8').digest('hex');
11
+ }
12
+ function rowToRevision(row) {
13
+ const parent = row.parent_revision;
14
+ return {
15
+ revision: Number(row.revision),
16
+ contentHash: String(row.content_hash),
17
+ parentRevision: parent === null || parent === undefined ? null : Number(parent),
18
+ sourceCommit: row.source_commit ?? null,
19
+ actor: row.actor ?? null,
20
+ objects: row.objects ?? [],
21
+ status: String(row.status),
22
+ createdAt: row.created_at,
23
+ };
24
+ }
25
+ /** the most recent revision, or null when none has been recorded */
26
+ export async function latestSchemaRevision(db) {
27
+ const res = await db.query(`SELECT * FROM ${TABLE} ORDER BY revision DESC LIMIT 1`);
28
+ const row = res.rows[0];
29
+ return row === undefined ? null : rowToRevision(row);
30
+ }
31
+ /**
32
+ * Record a schema revision. Idempotent by content hash: when the latest
33
+ * revision already carries the same hash, no new row is written and the
34
+ * existing id is returned. `parent_revision` links the chain.
35
+ */
36
+ export async function writeSchemaRevision(db, input) {
37
+ const latest = await latestSchemaRevision(db);
38
+ if (latest !== null && latest.contentHash === input.contentHash) {
39
+ return { revision: latest.revision, created: false };
40
+ }
41
+ const res = await db.query(`INSERT INTO ${TABLE} (content_hash, parent_revision, source_commit, actor, objects, status)
42
+ VALUES ($1, $2, $3, $4, $5::jsonb, $6)
43
+ RETURNING revision`, [
44
+ input.contentHash,
45
+ latest?.revision ?? null,
46
+ input.sourceCommit ?? null,
47
+ input.actor ?? null,
48
+ JSON.stringify(input.objects),
49
+ input.status ?? 'active',
50
+ ]);
51
+ return { revision: Number(res.rows[0].revision), created: true };
52
+ }
53
+ //# sourceMappingURL=revision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision.js","sourceRoot":"","sources":["../../../src/runtime/metadata/revision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AA2BvE,MAAM,KAAK,GAAG,aAAa,CAAC,eAAe,CAAC;AAE5C,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAC/B,KAAuD;IAEvD,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;SACxC,IAAI,EAAE;SACN,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,aAAa,CAAC,GAA4B;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC;IACnC,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;QACrC,cAAc,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/E,YAAY,EAAG,GAAG,CAAC,aAA+B,IAAI,IAAI;QAC1D,KAAK,EAAG,GAAG,CAAC,KAAuB,IAAI,IAAI;QAC3C,OAAO,EAAG,GAAG,CAAC,OAA2B,IAAI,EAAE;QAC/C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,SAAS,EAAE,GAAG,CAAC,UAAkB;KAClC,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAgB;IACzD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,KAAK,iCAAiC,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAwC,CAAC;IAC/D,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAgB,EAChB,KAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CACxB,eAAe,KAAK;;wBAEA,EACpB;QACE,KAAK,CAAC,WAAW;QACjB,MAAM,EAAE,QAAQ,IAAI,IAAI;QACxB,KAAK,CAAC,YAAY,IAAI,IAAI;QAC1B,KAAK,CAAC,KAAK,IAAI,IAAI;QACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7B,KAAK,CAAC,MAAM,IAAI,QAAQ;KACzB,CACF,CAAC;IACF,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAA0B,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/runtime/tools/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAuD,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAoB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/T,OAAO,KAAK,EAAE,gBAAgB,EAAkC,MAAM,yBAAyB,CAAC;AAIhG;;;;;;;;;GASG;AAEH,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAQtG;AAED,iHAAiH;AACjH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvG,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAO,GAC9D,cAAc,CAqDhB;AAED,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,UAAU,EAAE,gBAAgB,CAAC;IAC7B,iEAAiE;IACjE,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2EAA2E;IAC3E,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC3F,sFAAsF;IACtF,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChH,uEAAuE;IACvE,SAAS,EAAE,aAAa,CAAC;CAC1B;AAcD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAiH7E;AAED,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/runtime/tools/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAuD,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAoB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/T,OAAO,KAAK,EAAE,gBAAgB,EAAkC,MAAM,yBAAyB,CAAC;AAIhG;;;;;;;;;GASG;AAEH,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAQtG;AAED,iHAAiH;AACjH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvG,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAO,GAC9D,cAAc,CAqDhB;AAED,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,UAAU,EAAE,gBAAgB,CAAC;IAC7B,iEAAiE;IACjE,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2EAA2E;IAC3E,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC3F,sFAAsF;IACtF,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChH,uEAAuE;IACvE,SAAS,EAAE,aAAa,CAAC;CAC1B;AAcD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAkH7E;AAED,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}