@spine-event-engine/storage-postgres 2.0.0-snapshot.24 → 2.0.0-snapshot.25

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 (45) hide show
  1. package/README.md +31 -14
  2. package/REFERENCE.md +40 -22
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/postgres/agent-history.d.ts +60 -18
  7. package/dist/postgres/agent-history.d.ts.map +1 -1
  8. package/dist/postgres/agent-history.js +114 -37
  9. package/dist/postgres/agent-history.js.map +1 -1
  10. package/dist/postgres/column-mapping.d.ts.map +1 -1
  11. package/dist/postgres/column-mapping.js +6 -3
  12. package/dist/postgres/column-mapping.js.map +1 -1
  13. package/dist/postgres/entity-commit.d.ts +83 -14
  14. package/dist/postgres/entity-commit.d.ts.map +1 -1
  15. package/dist/postgres/entity-commit.js +383 -61
  16. package/dist/postgres/entity-commit.js.map +1 -1
  17. package/dist/postgres/entity-history.d.ts +4 -2
  18. package/dist/postgres/entity-history.d.ts.map +1 -1
  19. package/dist/postgres/entity-history.js +105 -32
  20. package/dist/postgres/entity-history.js.map +1 -1
  21. package/dist/postgres/id-column.d.ts.map +1 -1
  22. package/dist/postgres/id-column.js +6 -3
  23. package/dist/postgres/id-column.js.map +1 -1
  24. package/dist/postgres/record-storage.d.ts +146 -11
  25. package/dist/postgres/record-storage.d.ts.map +1 -1
  26. package/dist/postgres/record-storage.js +200 -27
  27. package/dist/postgres/record-storage.js.map +1 -1
  28. package/dist/postgres/storage-factory.d.ts +265 -22
  29. package/dist/postgres/storage-factory.d.ts.map +1 -1
  30. package/dist/postgres/storage-factory.js +784 -124
  31. package/dist/postgres/storage-factory.js.map +1 -1
  32. package/dist/postgres/table-initializer.d.ts +7 -4
  33. package/dist/postgres/table-initializer.d.ts.map +1 -1
  34. package/dist/postgres/table-initializer.js +21 -15
  35. package/dist/postgres/table-initializer.js.map +1 -1
  36. package/dist/postgres/table-resolver.d.ts +15 -1
  37. package/dist/postgres/table-resolver.d.ts.map +1 -1
  38. package/dist/postgres/table-resolver.js +36 -7
  39. package/dist/postgres/table-resolver.js.map +1 -1
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +5 -5
  42. package/dist/postgres/agent-execution.d.ts +0 -285
  43. package/dist/postgres/agent-execution.d.ts.map +0 -1
  44. package/dist/postgres/agent-execution.js +0 -648
  45. package/dist/postgres/agent-execution.js.map +0 -1
package/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # PostgreSQL storage for Spine TS
2
2
 
3
+ See [storage layout and database preparation](https://github.com/SpineEventEngine/spine-ts/blob/master/docs/STORAGE_LAYOUT.md) for
4
+ physical structures, tenant placement, prerequisites, and customization.
5
+
3
6
  `@spine-event-engine/storage-postgres` stores Spine TS records in PostgreSQL.
4
7
  It is a separate provider package; the existing `storage-mysql` package remains
5
8
  the MySQL provider. PostgreSQL support currently targets PostgreSQL 16 or newer,
@@ -8,9 +11,10 @@ with live acceptance recorded against PostgreSQL 16.15 and 18.6.
8
11
  This is an experimental snapshot package. Use Node 24 or newer. For the precise
9
12
  public API and operational rules, see the [coding-agent reference](REFERENCE.md).
10
13
 
11
- Agent repositories can use this factory to retain accepted work and conversation
12
- history across restarts. Their state and execution completion are saved together
13
- in PostgreSQL; a model call does not keep a database transaction open.
14
+ Agent repositories can use this factory to retain state, typed admission receipts,
15
+ and conversation history across restarts. An interrupted Agent handler does not
16
+ restart from those records. Atomic live Agent commits save accepted state and
17
+ audit together; a model call does not keep a database transaction open.
14
18
 
15
19
  ## Install
16
20
 
@@ -47,27 +51,40 @@ try {
47
51
  if (stored?.value !== "task-42") throw new Error("The record was not stored.");
48
52
  } finally {
49
53
  records.close();
50
- factory.close();
54
+ await factory.close();
51
55
  }
52
56
  ```
53
57
 
54
58
  The URL must include a database name. Use `postgres:` or `postgresql:` URLs;
55
59
  credentials should come from the deployment environment. TLS options, pool
56
60
  limits, connection timeout, and an explicit schema are configured through the
57
- factory options. When no schema is supplied, the factory resolves
58
- `current_schema()` once and uses that validated schema for all later operations.
59
-
60
- For multitenancy, configure one database and pool per complete generated
61
- `TenantId`. A schema is not a substitute for the database boundary. Duplicate
62
- tenant or database targets are rejected during construction.
61
+ factory options. Building the factory and creating a record handle do not open
62
+ a connection. Call `await factory.checkConnection()` for a read-only check of
63
+ the shared database; it opens and closes a temporary pool unless normal storage
64
+ use already opened one. When no schema is supplied, the first awaited use
65
+ resolves the server's `current_schema()` and retains that schema for later use.
66
+
67
+ For multitenancy, set the shared database with `setOptions()` and select tenant
68
+ databases with `setTenantOptions()` or `setTenantResolver()`. The resolver may be
69
+ asynchronous and is called only on first use of a tenant. Distinct tenants must
70
+ resolve to distinct databases; a schema is not a substitute for that boundary.
71
+ The shared database may coincide with a tenant database only when their record
72
+ families do not map to the same physical table.
63
73
 
64
74
  ## Lifecycle and operations
65
75
 
66
76
  Tables are initialized lazily and checked against the expected PostgreSQL
67
- layout. Each acquired client is released; history maintenance applies deletion
68
- pages independently. Call `factory.close()` when the application stops; it is
69
- idempotent and drains live handles and pools. A closed factory cannot create new
70
- handles.
77
+ layout. Provider integrations can prepare declared record, Entity current and
78
+ enabled history, and Agent audit families through
79
+ `StoragePreparations.for(factory)`. Creation verifies the resulting layout;
80
+ check mode only inspects existing tables and audit indexes, and a compatible
81
+ check avoids later creation SQL for the same family. Explicit preparation uses
82
+ and releases a temporary pool when no runtime pool exists; otherwise it reuses
83
+ the retained runtime pool. Each acquired
84
+ client is released; history maintenance applies deletion
85
+ pages independently. Await `factory.close()` when the application stops; it is
86
+ idempotent, drains admitted work and pools, and reports cleanup failures. A
87
+ closed factory cannot create new handles or check a connection.
71
88
 
72
89
  The provider supports record CRUD, compare-and-set, immutable append, Entity
73
90
  state and event history, declared-column filtering, sorting, limits, offsets,
package/REFERENCE.md CHANGED
@@ -6,7 +6,7 @@ agents.
6
6
  ## Public entry point
7
7
 
8
8
  Import `PostgresStorageFactory`, `PostgresStorageFactoryBuilder`,
9
- `PostgresStorageFactoryOptions`, `PostgresTenantStorageOptions`,
9
+ `PostgresStorageFactoryOptions`, `PostgresTenantStorageOptions`, `PostgresTenantResolver`,
10
10
  `PostgresEntityStorageHandle`, `PostgresTableSpec`,
11
11
  `PostgresCreateOperation`, `PostgresCreateOperationFactory`, and
12
12
  `PostgresColumnSpec` from the package root. Provider errors are
@@ -16,19 +16,37 @@ Import `PostgresStorageFactory`, `PostgresStorageFactoryBuilder`,
16
16
 
17
17
  ## Configuration
18
18
 
19
- `PostgresStorageFactory.newBuilder().setOptions(options).build()` configures a
20
- single database and schema. `setTenantOptions(entries)` configures one database
21
- and pool per complete generated `TenantId`; every operation selects its tenant
22
- pool before table, metadata, transaction, lock, or data work. Options include a
19
+ `PostgresStorageFactory.newBuilder().setOptions(options).build()` assembles a
20
+ logical factory without connecting. Shared `setOptions()` is required;
21
+ `setTenantOptions(entries)` or `setTenantResolver(resolver)` additionally selects
22
+ one database per complete generated `TenantId`. The two tenant selection modes
23
+ cannot be combined. A resolver may return options asynchronously; concurrent
24
+ first uses of one tenant share resolution, failed attempts may retry, and a
25
+ successful binding stays fixed for this factory. Options include a
23
26
  PostgreSQL URL, pool maximum, connection timeout, TLS CA/certificate/key,
24
27
  server-certificate verification, and optional schema name. URLs must include a
25
28
  database and cannot bypass the explicit options model with fragments or driver
26
- parameters. The factory proves configured connections during build and
27
- sanitizes provider errors.
29
+ parameters. `checkConnection()` checks only the shared destination using
30
+ read-only SQL; it does not resolve tenants, create tables, or check a model.
31
+ Provider integrations can use `StoragePreparations.for(factory)` to create or
32
+ check a declared Record, Entity current/enabled history, or surviving Agent
33
+ audit family. Check mode inspects the selected tenant's actual schema, table,
34
+ and required audit indexes without DDL or custom creation SQL. A successful
35
+ compatible preparation is reused by later handles and operations in this
36
+ factory. Explicit preparation uses and releases a temporary pool when no runtime
37
+ pool exists; otherwise it reuses the retained runtime pool. Failed requirements
38
+ can be retried without discarding
39
+ earlier compatible families.
40
+
41
+ The default shared registry converts message-valued IDs and columns using
42
+ generated descriptors registered on module import. A registry supplied with
43
+ `setStringifierRegistry(registry)` is snapshotted at factory construction.
44
+ `setEventStoreTable(contextName, table, role?)` selects one physical Event Store
45
+ table for the exact bounded-context name and domain or system role.
28
46
 
29
47
  PostgreSQL creates tables but not databases or schemas. A missing schema is a
30
- configuration error. Without an explicit schema, `current_schema()` is resolved
31
- once while building the target and the validated result is qualified into every
48
+ configuration error on `checkConnection()` or first use. Without an explicit schema, `current_schema()`
49
+ is resolved from the server on first use and the validated result qualifies every
32
50
  table and metadata statement.
33
51
 
34
52
  ## Physical layout and queries
@@ -96,23 +114,23 @@ B-tree entry limits still apply to exceptionally long record IDs. Pages use
96
114
  bounded SQL chunks and sum serialized entry bytes; a fetched chunk can be
97
115
  larger than the returned byte budget.
98
116
 
99
- ## Agent execution
117
+ ## Agent live persistence
100
118
 
101
- Agent execution records and per-instance pending entries are stored in separate
102
- tenant database tables. Indexed queries select the next eligible instance and
103
- the first unresolved signal within it. Required B-tree indexes use complete
104
- binary-comparable ordering keys and are checked before admission.
105
-
106
- Claims, history updates and conditional Entity completion use the same native
107
- transaction connection. Completion compares the original Entity Version before
108
- writing the resulting state, history, preferences and outgoing Commands. Reopening
109
- a factory can read the saved work. No database transaction remains open while a
110
- model request runs.
119
+ Agent audit entries use the indexed tenant-scoped `agent_history` family above.
120
+ `appendAll()` writes the complete immutable group in one PostgreSQL transaction.
121
+ Live Agent completion uses `EntityCommitStorage.commitAgent()` to compare the
122
+ exact Entity state image and model preferences, and to commit state, preference,
123
+ and history changes atomically. A no-op or preference-only turn does not need a
124
+ new Entity Version. The typed admission receipt is a separate record family;
125
+ it is not a replayable execution record. No database transaction remains open
126
+ while a model request runs. Factory shutdown drains admitted operations before
127
+ closing their retained connections.
111
128
 
112
129
  ## Lifecycle and errors
113
130
 
114
- `factory.close()` is idempotent, closes registered handles, prevents new handle
115
- creation, and drains pools. Record and Entity handles can close independently.
131
+ Await `factory.close()` to observe cleanup failures. It synchronously prevents new handle
132
+ creation, waits for admitted Entity commits, then closes registered handles and pools.
133
+ Repeated calls return the same completion. Record and Entity handles can close independently.
116
134
  Acquired clients are released in `finally` blocks. History maintenance applies
117
135
  each deletion page independently. Top-level provider error messages and public
118
136
  responses omit URLs, credentials, SQL text, and driver details. The original
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { PostgresStorageFactory, type PostgresCreateOperation, type PostgresCreateOperationFactory, type PostgresColumnSpec, type PostgresStorageFactoryBuilder, type PostgresStorageFactoryOptions, type PostgresTableSpec, type PostgresTenantStorageOptions, } from "./postgres/storage-factory.js";
1
+ export { PostgresStorageFactory, type PostgresCreateOperation, type PostgresCreateOperationFactory, type PostgresColumnSpec, type PostgresStorageFactoryBuilder, type PostgresStorageFactoryOptions, type PostgresTableSpec, type PostgresTenantStorageOptions, type PostgresTenantResolver, } from "./postgres/storage-factory.js";
2
2
  export type { PostgresDdlType } from "./postgres/data-type.js";
3
3
  export { PostgresStorageConfigurationError, PostgresStorageConnectionError, PostgresStorageDataError, PostgresStorageOperationError, PostgresStorageSchemaError, } from "./postgres/errors.js";
4
4
  export type { PostgresEntityStorageHandle } from "./postgres/entity-history.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,GAC5B,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,sBAAsB,GAQvB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,sBAAsB,GASvB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import type { AgentHistoryEntry } from "@spine-event-engine/proto/agent";
2
- import type { AgentHistoryRecord } from "@spine-event-engine/proto/generated/spine/server/agent/history_record_pb.js";
3
- import { type AgentHistoryPage, type AgentHistoryRead, type AgentHistoryStorage, type AgentHistoryStorageInput } from "@spine-event-engine/storage/provider";
4
- import { PostgresRecordStorage } from "./record-storage.js";
2
+ import { type AgentHistoryRecord } from "@spine-event-engine/proto/generated/spine/server/agent/history_record_pb.js";
3
+ import { type AgentHistoryPage, type AgentHistoryCapacity, type AgentHistoryRead, type AgentHistoryStorage, type AgentHistoryStorageInput } from "@spine-event-engine/storage/provider";
4
+ import type { StoragePreparationMode } from "@spine-event-engine/storage/provider";
5
+ import type { PoolClient } from "pg";
6
+ import { PostgresRecordStorage, type OnPublicOperation } from "./record-storage.js";
5
7
  /**
6
8
  * Hashes complete identities into bounded physical IDs and indexed scope keys.
7
9
  */
@@ -23,13 +25,21 @@ export declare class PostgresAgentHistory<Id> implements AgentHistoryStorage<Id>
23
25
  #private;
24
26
  private readonly input;
25
27
  private readonly records;
28
+ private readonly onAdmit;
29
+ private readonly onPrepare?;
30
+ /**
31
+ * Native PostgreSQL Agent history capacity declaration.
32
+ */
33
+ readonly capacity: AgentHistoryCapacity;
26
34
  /**
27
35
  * Binds one typed Agent repository to the provider record handle.
28
36
  *
29
37
  * @param input Repository and complete tenant scope.
30
38
  * @param records Native record-family storage.
39
+ * @param onAdmit Admits complete public Agent-history operations.
40
+ * @param onPrepare Optionally uses factory-shared index readiness.
31
41
  */
32
- constructor(input: AgentHistoryStorageInput<Id>, records: PostgresRecordStorage<string, AgentHistoryRecord>);
42
+ constructor(input: AgentHistoryStorageInput<Id>, records: PostgresRecordStorage<string, AgentHistoryRecord>, onAdmit: OnPublicOperation, onPrepare?: ((mode: StoragePreparationMode) => Promise<void>) | undefined);
33
43
  /**
34
44
  * Writes one original entry or confirms byte-identical content.
35
45
  *
@@ -38,6 +48,21 @@ export declare class PostgresAgentHistory<Id> implements AgentHistoryStorage<Id>
38
48
  * @returns Completion after immutable storage confirms the entry.
39
49
  */
40
50
  append(entityId: Id, entry: AgentHistoryEntry): Promise<void>;
51
+ /**
52
+ * Writes atomically writes one captured immutable Agent audit group.
53
+ * @param entityId Typed Agent identifier.
54
+ * @param entries Complete history rows.
55
+ * @returns Completion after the group commits.
56
+ */
57
+ appendAll(entityId: Id, entries: readonly AgentHistoryEntry[]): Promise<void>;
58
+ /**
59
+ * Writes an admitted immutable group on one rollback-capable transaction.
60
+ *
61
+ * @param entityId Typed Entity identifier.
62
+ * @param entries Complete immutable history group.
63
+ * @returns Completion after the complete immutable audit group commits atomically.
64
+ */
65
+ private appendAllAdmitted;
41
66
  /**
42
67
  * Reads a bounded indexed page in full Timestamp/category/UTF-8 order.
43
68
  *
@@ -46,9 +71,13 @@ export declare class PostgresAgentHistory<Id> implements AgentHistoryStorage<Id>
46
71
  */
47
72
  read(request: AgentHistoryRead<Id>): Promise<AgentHistoryPage>;
48
73
  /**
49
-
74
+ * Reads an admitted Agent-history page.
75
+ * @param request Typed Agent view and continuation limits.
76
+ * @returns Original entries and continuation status.
77
+ */
78
+ private readAdmitted;
79
+ /**
50
80
  * Closes this handle without deleting stored records.
51
-
52
81
  */
53
82
  close(): void;
54
83
  /**
@@ -63,16 +92,6 @@ export declare class PostgresAgentHistory<Id> implements AgentHistoryStorage<Id>
63
92
  * @returns Completion after all three definitions are validated.
64
93
  */
65
94
  private initialize;
66
- /**
67
- * Rejects an existing same-name index with incomplete columns or collation.
68
- *
69
- * @param client Acquired PostgreSQL client.
70
- * @param table Validated physical table name.
71
- * @param name Fixed required index name.
72
- * @param columns Required complete binary-order columns.
73
- * @returns Completion after the index definition is checked.
74
- */
75
- private ensureIndex;
76
95
  /**
77
96
  * Reads a bounded native page with complete scope and view predicates.
78
97
  *
@@ -105,10 +124,33 @@ export declare class PostgresAgentHistory<Id> implements AgentHistoryStorage<Id>
105
124
  */
106
125
  private key;
107
126
  /**
108
-
109
127
  * Rejects calls after this handle closes.
110
-
111
128
  */
112
129
  private requireOpen;
113
130
  }
131
+ /**
132
+ * Verifies the fixed Agent audit indexes without changing a checked database.
133
+ */
134
+ export declare const PostgresAgentIndexes: {
135
+ /**
136
+ * Prepares each required Agent audit index.
137
+ *
138
+ * @param client Acquired client.
139
+ * @param table Qualified audit table.
140
+ * @param mode Preparation mode.
141
+ * @returns Completion after all three indexes match.
142
+ */
143
+ prepare(client: PoolClient, table: string, mode: StoragePreparationMode): Promise<void>;
144
+ /**
145
+ * Validates one fixed index and creates it only in create mode.
146
+ *
147
+ * @param client Acquired client.
148
+ * @param table Qualified audit table.
149
+ * @param name Fixed index name.
150
+ * @param columns Required columns.
151
+ * @param mode Preparation mode.
152
+ * @returns Completion after exact index validation.
153
+ */
154
+ ensure(client: PoolClient, table: string, name: string, columns: string, mode: StoragePreparationMode): Promise<void>;
155
+ };
114
156
  //# sourceMappingURL=agent-history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-history.d.ts","sourceRoot":"","sources":["../../src/postgres/agent-history.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6EAA6E,CAAC;AACtH,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;;OAKG;iBACU,MAAM,GAAG,MAAM;CAG7B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,oBAAoB,CAAC,EAAE,CAAE,YAAW,mBAAmB,CAAC,EAAE,CAAC;;IAoBpE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B;;;;;OAKG;gBAEgB,KAAK,EAAE,wBAAwB,CAAC,EAAE,CAAC,EACnC,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAG7E;;;;;;OAMG;IACG,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnE;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAYpE;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAIb;;;;OAIG;YACW,UAAU;IA0BxB;;;;;;;;OAQG;YACW,WAAW;IA6BzB;;;;;;;;OAQG;YACW,KAAK;IAyBnB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAkBrB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;;OAKG;IACH,OAAO,CAAC,GAAG;IAMX;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAGpB"}
1
+ {"version":3,"file":"agent-history.d.ts","sourceRoot":"","sources":["../../src/postgres/agent-history.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6EAA6E,CAAC;AACrF,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGpF;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;;OAKG;iBACU,MAAM,GAAG,MAAM;CAG7B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,oBAAoB,CAAC,EAAE,CAAE,YAAW,mBAAmB,CAAC,EAAE,CAAC;;IAyBpE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IA3B7B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAqB;IAY5D;;;;;;;OAOG;gBAEgB,KAAK,EAAE,wBAAwB,CAAC,EAAE,CAAC,EACnC,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC1D,OAAO,EAAE,iBAAiB,EAC1B,SAAS,CAAC,GAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,aAAA;IAG9E;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E;;;;;;OAMG;YACW,iBAAiB;IAiB/B;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI9D;;;;OAIG;YACW,YAAY;IAY1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAOb;;;;OAIG;YACW,UAAU;IAmBxB;;;;;;;;OAQG;YACW,KAAK;IAyBnB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAkBrB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;;OAKG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,OAAO,CAAC,WAAW;CAGpB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAC/B;;;;;;;OAOG;oBACmB,UAAU,SAAS,MAAM,QAAQ,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7F;;;;;;;;;OASG;mBAEO,UAAU,SACX,MAAM,QACP,MAAM,WACH,MAAM,QACT,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;CAwBjB,CAAC"}
@@ -12,9 +12,12 @@
12
12
  * the License.
13
13
  */
14
14
  import { createHash } from "node:crypto";
15
+ import { clone } from "@bufbuild/protobuf";
16
+ import { AgentHistoryRecordSchema, } from "@spine-event-engine/proto/generated/spine/server/agent/history_record_pb.js";
15
17
  import { AgentHistoryKeys, AgentHistoryPages, } from "@spine-event-engine/storage/provider";
16
18
  import { AgentHistoryRecords } from "@spine-event-engine/storage/provider";
17
19
  import { PostgresRecordStorage } from "./record-storage.js";
20
+ import { PostgresStorageOperationError } from "./errors.js";
18
21
  /**
19
22
  * Hashes complete identities into bounded physical IDs and indexed scope keys.
20
23
  */
@@ -37,14 +40,18 @@ export const AgentHistoryHash = {
37
40
  export class PostgresAgentHistory {
38
41
  input;
39
42
  records;
43
+ onAdmit;
44
+ onPrepare;
45
+ /**
46
+ * Native PostgreSQL Agent history capacity declaration.
47
+ */
48
+ capacity = Object.freeze({});
40
49
  /**
41
50
  * Records whether this handle accepts calls.
42
51
  */
43
52
  #open = true;
44
53
  /**
45
-
46
54
  * Reuses one table and index preparation promise.
47
-
48
55
  */
49
56
  #ready;
50
57
  /**
@@ -52,10 +59,14 @@ export class PostgresAgentHistory {
52
59
  *
53
60
  * @param input Repository and complete tenant scope.
54
61
  * @param records Native record-family storage.
62
+ * @param onAdmit Admits complete public Agent-history operations.
63
+ * @param onPrepare Optionally uses factory-shared index readiness.
55
64
  */
56
- constructor(input, records) {
65
+ constructor(input, records, onAdmit, onPrepare) {
57
66
  this.input = input;
58
67
  this.records = records;
68
+ this.onAdmit = onAdmit;
69
+ this.onPrepare = onPrepare;
59
70
  }
60
71
  /**
61
72
  * Writes one original entry or confirms byte-identical content.
@@ -64,10 +75,37 @@ export class PostgresAgentHistory {
64
75
  * @param entry Complete history entry.
65
76
  * @returns Completion after immutable storage confirms the entry.
66
77
  */
67
- async append(entityId, entry) {
78
+ append(entityId, entry) {
79
+ return this.appendAll(entityId, [entry]);
80
+ }
81
+ /**
82
+ * Writes atomically writes one captured immutable Agent audit group.
83
+ * @param entityId Typed Agent identifier.
84
+ * @param entries Complete history rows.
85
+ * @returns Completion after the group commits.
86
+ */
87
+ appendAll(entityId, entries) {
88
+ return this.onAdmit(() => this.appendAllAdmitted(entityId, entries));
89
+ }
90
+ /**
91
+ * Writes an admitted immutable group on one rollback-capable transaction.
92
+ *
93
+ * @param entityId Typed Entity identifier.
94
+ * @param entries Complete immutable history group.
95
+ * @returns Completion after the complete immutable audit group commits atomically.
96
+ */
97
+ async appendAllAdmitted(entityId, entries) {
68
98
  this.requireOpen();
99
+ const key = this.key(entityId);
100
+ const records = entries.map((entry) => clone(AgentHistoryRecordSchema, AgentHistoryRecords.record(this.input.stateType, key, entry)));
101
+ if (records.length === 0)
102
+ return;
69
103
  await this.ready();
70
- await this.records.writeImmutable(AgentHistoryRecords.record(this.input.stateType, this.key(entityId), entry));
104
+ const executor = this.records.historyExecutor();
105
+ await executor.transaction(async (client) => {
106
+ for (const record of records)
107
+ await executor.appendImmutable(client, record);
108
+ });
71
109
  }
72
110
  /**
73
111
  * Reads a bounded indexed page in full Timestamp/category/UTF-8 order.
@@ -75,7 +113,15 @@ export class PostgresAgentHistory {
75
113
  * @param request Typed Agent, view, continuation, and response limits.
76
114
  * @returns Original entries and continuation status.
77
115
  */
78
- async read(request) {
116
+ read(request) {
117
+ return this.onAdmit(() => this.readAdmitted(request));
118
+ }
119
+ /**
120
+ * Reads an admitted Agent-history page.
121
+ * @param request Typed Agent view and continuation limits.
122
+ * @returns Original entries and continuation status.
123
+ */
124
+ async readAdmitted(request) {
79
125
  this.requireOpen();
80
126
  await this.ready();
81
127
  const agentKey = this.key(request.entityId);
@@ -84,9 +130,7 @@ export class PostgresAgentHistory {
84
130
  return AgentHistoryPages.read(request, after, (cursor, limit) => this.fetch(agentKey, request, cursor, limit));
85
131
  }
86
132
  /**
87
-
88
133
  * Closes this handle without deleting stored records.
89
-
90
134
  */
91
135
  close() {
92
136
  if (!this.#open)
@@ -100,7 +144,10 @@ export class PostgresAgentHistory {
100
144
  * @returns Shared preparation promise for this handle.
101
145
  */
102
146
  ready() {
103
- return (this.#ready ??= this.initialize());
147
+ return (this.#ready ??= this.initialize().catch((error) => {
148
+ this.#ready = undefined;
149
+ throw error;
150
+ }));
104
151
  }
105
152
  /**
106
153
  * Creates each native index idempotently on the shared record family.
@@ -110,36 +157,22 @@ export class PostgresAgentHistory {
110
157
  async initialize() {
111
158
  const executor = this.records.historyExecutor();
112
159
  await executor.prepare();
160
+ if (this.onPrepare !== undefined) {
161
+ try {
162
+ await this.onPrepare("create");
163
+ }
164
+ catch (error) {
165
+ throw new PostgresStorageOperationError("PostgreSQL record operation failed.", {
166
+ cause: error,
167
+ });
168
+ }
169
+ return;
170
+ }
113
171
  await executor.using(async (client) => {
114
172
  const table = executor.table();
115
- await this.ensureIndex(client, table, "agent_history_full", 'scope_digest, order_key COLLATE "C"');
116
- await this.ensureIndex(client, table, "agent_history_category", 'scope_digest, category, order_key COLLATE "C"');
117
- await this.ensureIndex(client, table, "agent_history_conversation", 'scope_digest, conversation_digest, order_key COLLATE "C"');
173
+ await PostgresAgentIndexes.prepare(client, table, "create");
118
174
  });
119
175
  }
120
- /**
121
- * Rejects an existing same-name index with incomplete columns or collation.
122
- *
123
- * @param client Acquired PostgreSQL client.
124
- * @param table Validated physical table name.
125
- * @param name Fixed required index name.
126
- * @param columns Required complete binary-order columns.
127
- * @returns Completion after the index definition is checked.
128
- */
129
- async ensureIndex(client, table, name, columns) {
130
- await client.query(`CREATE INDEX IF NOT EXISTS "${name}" ON ${table} (${columns})`);
131
- const result = await client.query("SELECT pg_get_indexdef(i.indexrelid) AS definition, i.indisvalid, i.indisready " +
132
- "FROM pg_index i " +
133
- "JOIN pg_class c ON c.oid=i.indexrelid WHERE i.indrelid=to_regclass($1) AND c.relname=$2", [table, name]);
134
- const index = result.rows[0];
135
- const definition = index?.definition ?? "";
136
- if (!index?.indisvalid ||
137
- !index.indisready ||
138
- !definition.includes(" USING btree ") ||
139
- !definition.includes(`(${columns})`) ||
140
- definition.includes(" WHERE "))
141
- throw new Error("PostgreSQL Agent history index is incompatible.");
142
- }
143
176
  /**
144
177
  * Reads a bounded native page with complete scope and view predicates.
145
178
  *
@@ -213,13 +246,57 @@ export class PostgresAgentHistory {
213
246
  return key;
214
247
  }
215
248
  /**
216
-
217
249
  * Rejects calls after this handle closes.
218
-
219
250
  */
220
251
  requireOpen() {
221
252
  if (!this.#open)
222
253
  throw new Error("Agent history storage handle is closed.");
223
254
  }
224
255
  }
256
+ /**
257
+ * Verifies the fixed Agent audit indexes without changing a checked database.
258
+ */
259
+ export const PostgresAgentIndexes = {
260
+ /**
261
+ * Prepares each required Agent audit index.
262
+ *
263
+ * @param client Acquired client.
264
+ * @param table Qualified audit table.
265
+ * @param mode Preparation mode.
266
+ * @returns Completion after all three indexes match.
267
+ */
268
+ async prepare(client, table, mode) {
269
+ for (const [name, columns] of [
270
+ ["agent_history_full", 'scope_digest, order_key COLLATE "C"'],
271
+ ["agent_history_category", 'scope_digest, category, order_key COLLATE "C"'],
272
+ ["agent_history_conversation", 'scope_digest, conversation_digest, order_key COLLATE "C"'],
273
+ ])
274
+ await this.ensure(client, table, name, columns, mode);
275
+ },
276
+ /**
277
+ * Validates one fixed index and creates it only in create mode.
278
+ *
279
+ * @param client Acquired client.
280
+ * @param table Qualified audit table.
281
+ * @param name Fixed index name.
282
+ * @param columns Required columns.
283
+ * @param mode Preparation mode.
284
+ * @returns Completion after exact index validation.
285
+ */
286
+ async ensure(client, table, name, columns, mode) {
287
+ if (mode === "create")
288
+ await client.query(`CREATE INDEX IF NOT EXISTS "${name}" ON ${table} (${columns})`);
289
+ const result = await client.query("SELECT pg_get_indexdef(i.indexrelid) AS definition, i.indisvalid, i.indisready " +
290
+ "FROM pg_index i " +
291
+ "JOIN pg_class c ON c.oid=i.indexrelid WHERE i.indrelid=to_regclass($1) AND c.relname=$2", [table, name]);
292
+ const index = result.rows[0];
293
+ const definition = index?.definition ?? "";
294
+ if (!index?.indisvalid ||
295
+ !index.indisready ||
296
+ !definition.includes(" USING btree ") ||
297
+ !definition.includes(`(${columns})`) ||
298
+ definition.includes(" WHERE "))
299
+ throw new Error("PostgreSQL Agent history index is incompatible.");
300
+ },
301
+ };
225
302
  //# sourceMappingURL=agent-history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-history.js","sourceRoot":"","sources":["../../src/postgres/agent-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-history.js","sourceRoot":"","sources":["../../src/postgres/agent-history.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"column-mapping.d.ts","sourceRoot":"","sources":["../../src/postgres/column-mapping.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKxD;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,aAAa,CAAC,iBAAiB,CAAC;;IAG5E;;;;OAIG;gBACS,YAAY,GAAE,mBAA+C;IAIzE;;;;;;OAMG;IACH,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,CAAC;IAWzE;;;;OAIG;IACH,MAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAGrD"}
1
+ {"version":3,"file":"column-mapping.d.ts","sourceRoot":"","sources":["../../src/postgres/column-mapping.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA8B,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKxD;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,aAAa,CAAC,iBAAiB,CAAC;;IAG5E;;;;OAIG;gBACS,YAAY,GAAE,mBAAgD;IAO1E;;;;;;OAMG;IACH,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,CAAC;IAWzE;;;;OAIG;IACH,MAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAGrD"}
@@ -12,7 +12,7 @@
12
12
  * the License.
13
13
  */
14
14
  import { ScalarType } from "@bufbuild/protobuf";
15
- import { StringifierRegistry } from "@spine-event-engine/core";
15
+ import { defaultStringifierRegistry, StringifierRegistry } from "@spine-event-engine/core";
16
16
  const timestampType = "google.protobuf.Timestamp";
17
17
  const versionType = "spine.core.Version";
18
18
  /**
@@ -28,8 +28,11 @@ export class PostgresColumnMapping {
28
28
  *
29
29
  * @param stringifiers Provides schema-bound message stringifiers.
30
30
  */
31
- constructor(stringifiers = new StringifierRegistry()) {
32
- this.#stringifiers = new StringifierRegistry(stringifiers);
31
+ constructor(stringifiers = defaultStringifierRegistry) {
32
+ this.#stringifiers =
33
+ stringifiers === defaultStringifierRegistry
34
+ ? stringifiers
35
+ : new StringifierRegistry(stringifiers);
33
36
  }
34
37
  /**
35
38
  * Returns the native conversion for one declared column type.
@@ -1 +1 @@
1
- {"version":3,"file":"column-mapping.js","sourceRoot":"","sources":["../../src/postgres/column-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAS/D,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IACvB,aAAa,CAAsB;IAE5C;;;;OAIG;IACH,YAAY,eAAoC,IAAI,mBAAmB,EAAE;QACvE,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;OAMG;IACH,EAAE,CAAI,IAAyB;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAA0B,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,aAAa;YACzC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,WAAW;YACvC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,OAA8B,CAAC,CAAC,QAAQ,CAAC,KAAgB,CAAC,CAAC;IAClG,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C;;;;;;OAMG;IACH,MAAM,CAAI,IAAgB;QACxB,KAAK,IAAI,CAAC;QACV,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAA0B,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,KAAc;QACtB,MAAM,SAAS,GAAG,KAA6D,CAAC;QAChF,OAAO,SAAS,CAAC,OAAO,GAAG,WAAc,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAc;QACpB,OAAQ,KAAqC,CAAC,MAAM,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"column-mapping.js","sourceRoot":"","sources":["../../src/postgres/column-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAS3F,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IACvB,aAAa,CAAsB;IAE5C;;;;OAIG;IACH,YAAY,eAAoC,0BAA0B;QACxE,IAAI,CAAC,aAAa;YAChB,YAAY,KAAK,0BAA0B;gBACzC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,EAAE,CAAI,IAAyB;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAA0B,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,aAAa;YACzC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,WAAW;YACvC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,OAA8B,CAAC,CAAC,QAAQ,CAAC,KAAgB,CAAC,CAAC;IAClG,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C;;;;;;OAMG;IACH,MAAM,CAAI,IAAgB;QACxB,KAAK,IAAI,CAAC;QACV,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAA0B,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,KAAc;QACtB,MAAM,SAAS,GAAG,KAA6D,CAAC;QAChF,OAAO,SAAS,CAAC,OAAO,GAAG,WAAc,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAc;QACpB,OAAQ,KAAqC,CAAC,MAAM,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}