@sixb/pg 0.0.1

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 (152) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/agents/agent-storage.d.ts +20 -0
  4. package/dist/agents/agent-storage.d.ts.map +1 -0
  5. package/dist/agents/index.d.ts +6 -0
  6. package/dist/agents/index.d.ts.map +1 -0
  7. package/dist/agents/messages.d.ts +13 -0
  8. package/dist/agents/messages.d.ts.map +1 -0
  9. package/dist/agents/rows.d.ts +77 -0
  10. package/dist/agents/rows.d.ts.map +1 -0
  11. package/dist/agents/runs.d.ts +25 -0
  12. package/dist/agents/runs.d.ts.map +1 -0
  13. package/dist/agents/threads.d.ts +13 -0
  14. package/dist/agents/threads.d.ts.map +1 -0
  15. package/dist/auth-storage/access-tokens.d.ts +33 -0
  16. package/dist/auth-storage/access-tokens.d.ts.map +1 -0
  17. package/dist/auth-storage/auth-storage.d.ts +41 -0
  18. package/dist/auth-storage/auth-storage.d.ts.map +1 -0
  19. package/dist/auth-storage/group-memberships.d.ts +21 -0
  20. package/dist/auth-storage/group-memberships.d.ts.map +1 -0
  21. package/dist/auth-storage/identities.d.ts +17 -0
  22. package/dist/auth-storage/identities.d.ts.map +1 -0
  23. package/dist/auth-storage/index.d.ts +3 -0
  24. package/dist/auth-storage/index.d.ts.map +1 -0
  25. package/dist/auth-storage/invitations.d.ts +29 -0
  26. package/dist/auth-storage/invitations.d.ts.map +1 -0
  27. package/dist/auth-storage/magic-links.d.ts +28 -0
  28. package/dist/auth-storage/magic-links.d.ts.map +1 -0
  29. package/dist/auth-storage/oidc-attempts.d.ts +18 -0
  30. package/dist/auth-storage/oidc-attempts.d.ts.map +1 -0
  31. package/dist/auth-storage/rows.d.ts +138 -0
  32. package/dist/auth-storage/rows.d.ts.map +1 -0
  33. package/dist/auth-storage/service-account-group-memberships.d.ts +17 -0
  34. package/dist/auth-storage/service-account-group-memberships.d.ts.map +1 -0
  35. package/dist/auth-storage/service-accounts.d.ts +14 -0
  36. package/dist/auth-storage/service-accounts.d.ts.map +1 -0
  37. package/dist/auth-storage/sessions.d.ts +55 -0
  38. package/dist/auth-storage/sessions.d.ts.map +1 -0
  39. package/dist/auth-storage/shared.d.ts +159 -0
  40. package/dist/auth-storage/shared.d.ts.map +1 -0
  41. package/dist/auth-storage/users.d.ts +19 -0
  42. package/dist/auth-storage/users.d.ts.map +1 -0
  43. package/dist/index.d.ts +127 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +11957 -0
  46. package/dist/index.js.map +55 -0
  47. package/dist/latest-run-query.d.ts +24 -0
  48. package/dist/latest-run-query.d.ts.map +1 -0
  49. package/dist/migrations.d.ts +20 -0
  50. package/dist/migrations.d.ts.map +1 -0
  51. package/dist/ontology-storage/commits.d.ts +11 -0
  52. package/dist/ontology-storage/commits.d.ts.map +1 -0
  53. package/dist/ontology-storage/index.d.ts +22 -0
  54. package/dist/ontology-storage/index.d.ts.map +1 -0
  55. package/dist/ontology-storage/materialization-session.d.ts +63 -0
  56. package/dist/ontology-storage/materialization-session.d.ts.map +1 -0
  57. package/dist/ontology-storage/materialization-state.d.ts +69 -0
  58. package/dist/ontology-storage/materialization-state.d.ts.map +1 -0
  59. package/dist/ontology-storage/materialization-writer.d.ts +15 -0
  60. package/dist/ontology-storage/materialization-writer.d.ts.map +1 -0
  61. package/dist/ontology-storage/materializations.d.ts +33 -0
  62. package/dist/ontology-storage/materializations.d.ts.map +1 -0
  63. package/dist/ontology-storage/outbox.d.ts +12 -0
  64. package/dist/ontology-storage/outbox.d.ts.map +1 -0
  65. package/dist/ontology-storage/shared.d.ts +95 -0
  66. package/dist/ontology-storage/shared.d.ts.map +1 -0
  67. package/dist/ontology-storage/sources.d.ts +25 -0
  68. package/dist/ontology-storage/sources.d.ts.map +1 -0
  69. package/dist/pg-action-run-storage.d.ts +21 -0
  70. package/dist/pg-action-run-storage.d.ts.map +1 -0
  71. package/dist/pg-client.d.ts +58 -0
  72. package/dist/pg-client.d.ts.map +1 -0
  73. package/dist/pg-object-query-compiler.d.ts +55 -0
  74. package/dist/pg-object-query-compiler.d.ts.map +1 -0
  75. package/dist/pg-object-storage.d.ts +90 -0
  76. package/dist/pg-object-storage.d.ts.map +1 -0
  77. package/dist/pg-pipeline-run-storage.d.ts +18 -0
  78. package/dist/pg-pipeline-run-storage.d.ts.map +1 -0
  79. package/dist/pg-projection-run-storage.d.ts +19 -0
  80. package/dist/pg-projection-run-storage.d.ts.map +1 -0
  81. package/dist/pg-rules-storage.d.ts +25 -0
  82. package/dist/pg-rules-storage.d.ts.map +1 -0
  83. package/dist/pg-sync-run-storage.d.ts +15 -0
  84. package/dist/pg-sync-run-storage.d.ts.map +1 -0
  85. package/dist/pg-timeseries-storage.d.ts +32 -0
  86. package/dist/pg-timeseries-storage.d.ts.map +1 -0
  87. package/dist/pg-webhook-delivery-storage.d.ts +17 -0
  88. package/dist/pg-webhook-delivery-storage.d.ts.map +1 -0
  89. package/dist/pg-webhook-run-storage.d.ts +14 -0
  90. package/dist/pg-webhook-run-storage.d.ts.map +1 -0
  91. package/dist/pg-workflow-intervention-storage.d.ts +16 -0
  92. package/dist/pg-workflow-intervention-storage.d.ts.map +1 -0
  93. package/dist/pg-workflow-run-storage.d.ts +49 -0
  94. package/dist/pg-workflow-run-storage.d.ts.map +1 -0
  95. package/dist/run-list-query.d.ts +30 -0
  96. package/dist/run-list-query.d.ts.map +1 -0
  97. package/dist/storage-errors.d.ts +16 -0
  98. package/dist/storage-errors.d.ts.map +1 -0
  99. package/dist/transactions.d.ts +10 -0
  100. package/dist/transactions.d.ts.map +1 -0
  101. package/dist/tsconfig.json +5 -0
  102. package/package.json +60 -0
  103. package/src/agents/agent-storage.ts +26 -0
  104. package/src/agents/index.ts +5 -0
  105. package/src/agents/messages.ts +144 -0
  106. package/src/agents/rows.ts +227 -0
  107. package/src/agents/runs.ts +330 -0
  108. package/src/agents/threads.ts +116 -0
  109. package/src/auth-storage/access-tokens.ts +254 -0
  110. package/src/auth-storage/auth-storage.ts +798 -0
  111. package/src/auth-storage/group-memberships.ts +47 -0
  112. package/src/auth-storage/identities.ts +85 -0
  113. package/src/auth-storage/index.ts +2 -0
  114. package/src/auth-storage/invitations.ts +280 -0
  115. package/src/auth-storage/magic-links.ts +140 -0
  116. package/src/auth-storage/oidc-attempts.ts +93 -0
  117. package/src/auth-storage/rows.ts +352 -0
  118. package/src/auth-storage/service-account-group-memberships.ts +150 -0
  119. package/src/auth-storage/service-accounts.ts +154 -0
  120. package/src/auth-storage/sessions.ts +193 -0
  121. package/src/auth-storage/shared.ts +799 -0
  122. package/src/auth-storage/users.ts +196 -0
  123. package/src/index.ts +367 -0
  124. package/src/latest-run-query.ts +42 -0
  125. package/src/migrations/001-initial-schema.sql +1195 -0
  126. package/src/migrations.ts +280 -0
  127. package/src/ontology-storage/commits.ts +115 -0
  128. package/src/ontology-storage/index.ts +35 -0
  129. package/src/ontology-storage/materialization-session.ts +426 -0
  130. package/src/ontology-storage/materialization-state.ts +1109 -0
  131. package/src/ontology-storage/materialization-writer.ts +509 -0
  132. package/src/ontology-storage/materializations.ts +939 -0
  133. package/src/ontology-storage/outbox.ts +216 -0
  134. package/src/ontology-storage/shared.ts +293 -0
  135. package/src/ontology-storage/sources.ts +658 -0
  136. package/src/pg-action-run-storage.ts +657 -0
  137. package/src/pg-client.ts +124 -0
  138. package/src/pg-object-query-compiler.ts +1545 -0
  139. package/src/pg-object-storage.ts +638 -0
  140. package/src/pg-pipeline-run-storage.ts +457 -0
  141. package/src/pg-projection-run-storage.ts +526 -0
  142. package/src/pg-rules-storage.ts +308 -0
  143. package/src/pg-sync-run-storage.ts +263 -0
  144. package/src/pg-timeseries-storage.ts +180 -0
  145. package/src/pg-webhook-delivery-storage.ts +180 -0
  146. package/src/pg-webhook-run-storage.ts +185 -0
  147. package/src/pg-workflow-intervention-storage.ts +339 -0
  148. package/src/pg-workflow-run-storage.ts +1065 -0
  149. package/src/run-list-query.ts +108 -0
  150. package/src/sql.d.ts +4 -0
  151. package/src/storage-errors.ts +72 -0
  152. package/src/transactions.ts +58 -0
@@ -0,0 +1,24 @@
1
+ import type { SQLClient } from "./pg-client";
2
+ type PgLatestRunTarget = {
3
+ readonly tableName: "pipeline_runs";
4
+ readonly ownerColumn: "pipeline_id";
5
+ } | {
6
+ readonly tableName: "projection_runs";
7
+ readonly ownerColumn: "projection_id";
8
+ } | {
9
+ readonly tableName: "sync_runs";
10
+ readonly ownerColumn: "sync_id";
11
+ } | {
12
+ readonly tableName: "workflow_runs";
13
+ readonly ownerColumn: "workflow_id";
14
+ };
15
+ type PgLatestRunSelectList = "*" | "*, checkpoint IS NOT NULL AS checkpoint_present";
16
+ export declare function queryLatestRunsByOwnerId<TRow>(input: {
17
+ readonly sql: SQLClient;
18
+ readonly ownerIds: readonly string[];
19
+ readonly projectId: string;
20
+ readonly ownerIdFor: (row: TRow) => string;
21
+ readonly selectList?: PgLatestRunSelectList;
22
+ } & PgLatestRunTarget): Promise<readonly TRow[]>;
23
+ export {};
24
+ //# sourceMappingURL=latest-run-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latest-run-query.d.ts","sourceRoot":"","sources":["../src/latest-run-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAA;AAE1D,KAAK,iBAAiB,GAClB;IAAE,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAA;CAAE,CAAA;AAEhF,KAAK,qBAAqB,GAAG,GAAG,GAAG,iDAAiD,CAAA;AAEpF,wBAAsB,wBAAwB,CAAC,IAAI,EACjD,KAAK,EAAE;IACL,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAA;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAA;CAC5C,GAAG,iBAAiB,GACpB,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAuB1B"}
@@ -0,0 +1,20 @@
1
+ import type { StorageMigrator } from "@sixb/core";
2
+ import type { MigrationSet, MigrationStep, MigrationStepOptions } from "@sixb/core/storage";
3
+ import type { SQL } from "./pg-client";
4
+ export interface PostgresMigrationContext {
5
+ exec(sqlText: string): Promise<void>;
6
+ }
7
+ export declare const POSTGRES_STORAGE_ADAPTER_ID = "SixbPostgresStorage";
8
+ export declare function pgSql(id: string, sqlText: string): MigrationStep<PostgresMigrationContext>;
9
+ export declare function pgStep(id: string, up: (context: PostgresMigrationContext) => void | Promise<void>, options?: MigrationStepOptions): MigrationStep<PostgresMigrationContext>;
10
+ export declare function createPostgresStorageMigrators(sql: SQL, schemaName: string): readonly StorageMigrator[];
11
+ export declare function createPostgresMigrator(params: {
12
+ readonly sql: SQL;
13
+ readonly schemaName: string;
14
+ readonly migrations: MigrationSet<PostgresMigrationContext>;
15
+ }): StorageMigrator;
16
+ export declare function migratePostgresStorage(sql: SQL, schemaName: string): Promise<void>;
17
+ export declare function dropSchema(sql: SQL, schemaName: string): Promise<void>;
18
+ export declare function quoteIdent(identifier: string): string;
19
+ export declare const postgresStorageMigrations: MigrationSet<PostgresMigrationContext>;
20
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAGV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACrB,MAAM,oBAAoB,CAAA;AAQ3B,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,aAAa,CAAA;AAEjD,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,2BAA2B,wBAAwB,CAAA;AAEhE,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,wBAAwB,CAAC,CAE1F;AAED,wBAAgB,MAAM,CACpB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC/D,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAAC,wBAAwB,CAAC,CAEzC;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,MAAM,GACjB,SAAS,eAAe,EAAE,CAQ5B;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,wBAAwB,CAAC,CAAA;CAC5D,GAAG,eAAe,CAqBlB;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKrD;AA6KD,eAAO,MAAM,yBAAyB,wCAGpC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { GetOntologyCommitByIdempotencyKeyInput, GetOntologyCommitByIdInput, GetOntologyCommitByOriginInput, ListOntologyCommitsInput, ListOntologyCommitsResult, OntologyCommitRecord, OntologyCommitStorage } from "@sixb/core/storage";
2
+ import { type PgRootOperation } from "./shared";
3
+ export declare class PgOntologyCommitStorage implements OntologyCommitStorage {
4
+ private readonly runRootOperation;
5
+ constructor(runRootOperation: PgRootOperation);
6
+ getByIdempotencyKey(input: GetOntologyCommitByIdempotencyKeyInput): Promise<OntologyCommitRecord | null>;
7
+ getById(input: GetOntologyCommitByIdInput): Promise<OntologyCommitRecord | null>;
8
+ getByOrigin(input: GetOntologyCommitByOriginInput): Promise<OntologyCommitRecord | null>;
9
+ list(input: ListOntologyCommitsInput): Promise<ListOntologyCommitsResult>;
10
+ }
11
+ //# sourceMappingURL=commits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commits.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/commits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sCAAsC,EACtC,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,UAAU,CAAA;AAEjB,qBAAa,uBAAwB,YAAW,qBAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,eAAe;IAExD,mBAAmB,CACvB,KAAK,EAAE,sCAAsC,GAC5C,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAYjC,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAYhF,WAAW,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA4BxF,IAAI,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAuChF"}
@@ -0,0 +1,22 @@
1
+ import type { OntologyStorage } from "@sixb/core/storage";
2
+ import type { SQLClient } from "../pg-client";
3
+ import { PgOntologyCommitStorage } from "./commits";
4
+ import type { PgOntologyTransactionContext } from "./materialization-session";
5
+ import { PgOntologyMaterializationStorage } from "./materializations";
6
+ import { PgOntologyOutboxStorage } from "./outbox";
7
+ import type { PgRootOperation } from "./shared";
8
+ import { PgOntologySourceStorage } from "./sources";
9
+ export declare class PgOntologyStorage implements OntologyStorage {
10
+ readonly commits: PgOntologyCommitStorage;
11
+ readonly sources: PgOntologySourceStorage;
12
+ readonly materializations: PgOntologyMaterializationStorage;
13
+ readonly outbox: PgOntologyOutboxStorage;
14
+ constructor(input: {
15
+ readonly sql: SQLClient;
16
+ readonly runRootOperation: PgRootOperation;
17
+ readonly transactionContext: PgOntologyTransactionContext | null;
18
+ });
19
+ deactivateSessions(): void;
20
+ }
21
+ export type { PgOntologyTransactionContext } from "./materialization-session";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;IACzC,QAAQ,CAAC,gBAAgB,EAAE,gCAAgC,CAAA;IAC3D,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;gBAE5B,KAAK,EAAE;QACjB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;QACvB,QAAQ,CAAC,gBAAgB,EAAE,eAAe,CAAA;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,4BAA4B,GAAG,IAAI,CAAA;KACjE;IAUD,kBAAkB,IAAI,IAAI;CAG3B;AAED,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,63 @@
1
+ import { ProviderMaterializationSessionState, type ProviderMaterializationTransactionLifecycle } from "@sixb/core/internal/ontology-storage-provider";
2
+ import type { MaterializationPlanChunk, MaterializationPlanHeader, MaterializationSession, MaterializationWorkPage, StageMaterializationWorkInput, StreamMaterializationWorkInput } from "@sixb/core/storage";
3
+ import type { SQLClient } from "../pg-client";
4
+ export interface PgOntologyTransactionContext {
5
+ readonly id: object;
6
+ readonly materializations: ProviderMaterializationTransactionLifecycle;
7
+ active: boolean;
8
+ }
9
+ interface WorkCursor {
10
+ readonly majorOrder: number;
11
+ readonly minorOrder: number;
12
+ readonly sortOne: string;
13
+ readonly sortTwo: string;
14
+ readonly recordKey: string;
15
+ }
16
+ export interface PgChunkSequenceProgress {
17
+ readonly appliedPlanCount: number;
18
+ readonly appliedOutboxCount: number;
19
+ readonly appliedPlanCursor: WorkCursor | null;
20
+ readonly appliedEventCursor: WorkCursor | null;
21
+ }
22
+ export declare class PgMaterializationSessionState extends ProviderMaterializationSessionState {
23
+ appliedPlanCursor: WorkCursor | null;
24
+ appliedEventCursor: WorkCursor | null;
25
+ }
26
+ export declare class PgMaterializationSessions {
27
+ private readonly sql;
28
+ private readonly context;
29
+ private readonly sessions;
30
+ private readonly live;
31
+ private tablesReady;
32
+ constructor(sql: SQLClient, context: PgOntologyTransactionContext | null);
33
+ create(header: MaterializationPlanHeader): Promise<PgMaterializationSessionState>;
34
+ require(session: MaterializationSession): PgMaterializationSessionState;
35
+ release(session: PgMaterializationSessionState): Promise<void>;
36
+ deactivateAll(): void;
37
+ stage(input: StageMaterializationWorkInput): Promise<void>;
38
+ stream(input: StreamMaterializationWorkInput): AsyncIterable<MaterializationWorkPage>;
39
+ readObjectExistence(session: PgMaterializationSessionState, refs: readonly {
40
+ readonly objectTypeId: string;
41
+ readonly primaryId: string;
42
+ }[]): Promise<readonly {
43
+ readonly ref: {
44
+ readonly objectTypeId: string;
45
+ readonly primaryId: string;
46
+ };
47
+ readonly exists: boolean;
48
+ }[]>;
49
+ prepareChunkSequence(session: PgMaterializationSessionState, chunk: MaterializationPlanChunk): Promise<PgChunkSequenceProgress>;
50
+ commitChunkSequence(session: PgMaterializationSessionState, progress: PgChunkSequenceProgress): void;
51
+ count(session: PgMaterializationSessionState, kind: string): Promise<number>;
52
+ laneCounts(session: PgMaterializationSessionState): Promise<{
53
+ readonly apply: number;
54
+ readonly cardinality: number;
55
+ readonly event: number;
56
+ }>;
57
+ assertClassificationCoverage(session: PgMaterializationSessionState): Promise<void>;
58
+ private readLane;
59
+ private ensureTables;
60
+ private deleteWork;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=materialization-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialization-session.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-session.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,mCAAmC,EACnC,KAAK,2CAA2C,EAEjD,MAAM,+CAA+C,CAAA;AACtD,OAAO,KAAK,EAEV,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EAEvB,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAI7C,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,gBAAgB,EAAE,2CAA2C,CAAA;IACtE,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7C,QAAQ,CAAC,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAA;CAC/C;AAED,qBAAa,6BAA8B,SAAQ,mCAAmC;IACpF,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAO;IAC3C,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAO;CAC7C;AAWD,qBAAa,yBAAyB;IAMlC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuD;IAChF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2C;IAChE,OAAO,CAAC,WAAW,CAAQ;gBAGR,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAGzD,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAevF,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,6BAA6B;IAgBjE,OAAO,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IASpE,aAAa,IAAI,IAAI;IAQf,KAAK,CAAC,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CzD,MAAM,CAAC,KAAK,EAAE,8BAA8B,GAAG,aAAa,CAAC,uBAAuB,CAAC;IA2BtF,mBAAmB,CACvB,OAAO,EAAE,6BAA6B,EACtC,IAAI,EAAE,SAAS;QAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,GAC7E,OAAO,CACR,SAAS;QACP,QAAQ,CAAC,GAAG,EAAE;YAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;QAC3E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KACzB,EAAE,CACJ;IAuBK,oBAAoB,CACxB,OAAO,EAAE,6BAA6B,EACtC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,uBAAuB,CAAC;IA+CnC,mBAAmB,CACjB,OAAO,EAAE,6BAA6B,EACtC,QAAQ,EAAE,uBAAuB,GAChC,IAAI;IAOD,KAAK,CAAC,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ5E,UAAU,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC;QAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KACvB,CAAC;IAaI,4BAA4B,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;YAmC3E,QAAQ;YAqBR,YAAY;YA2CZ,UAAU;CASzB"}
@@ -0,0 +1,69 @@
1
+ import type { OntologyLinkRef, OntologyObjectRef, TelemetrySeriesRef } from "@sixb/core/internal/materialization";
2
+ import type { MaterializationLinkScopeState, MaterializationLinkState, MaterializationObjectState, SourceReplacementLinkState, SourceReplacementObjectState, StoredTelemetryPoint } from "@sixb/core/storage";
3
+ import type { SQLClient } from "../pg-client";
4
+ export declare const PG_MATERIALIZATION_WORK_TABLE = "ontology_materialization_work";
5
+ export declare const PG_REPLACEMENT_WORK_TABLE = "ontology_replacement_work";
6
+ export type ReplacementIdentity = {
7
+ readonly kind: "object";
8
+ readonly ref: OntologyObjectRef;
9
+ readonly sortKey: string;
10
+ readonly diffRequired: true;
11
+ } | {
12
+ readonly kind: "link";
13
+ readonly ref: OntologyLinkRef;
14
+ readonly sortKey: string;
15
+ readonly diffRequired: boolean;
16
+ };
17
+ interface ReplacementIdentityInput {
18
+ readonly sessionId: string;
19
+ readonly sourceId: string;
20
+ readonly candidateMaterializationId: string;
21
+ readonly previousMaterializationId: string | null;
22
+ readonly kind: "object" | "link";
23
+ readonly pageRows: number;
24
+ }
25
+ export declare class PgMaterializationStateReader {
26
+ private readonly sql;
27
+ readonly projectId: string;
28
+ constructor(sql: SQLClient, projectId: string);
29
+ objectState(ref: OntologyObjectRef): Promise<MaterializationObjectState>;
30
+ objectStates(refs: readonly OntologyObjectRef[]): Promise<readonly MaterializationObjectState[]>;
31
+ linkState(ref: OntologyLinkRef): Promise<MaterializationLinkState>;
32
+ linkStates(refs: readonly OntologyLinkRef[]): Promise<readonly MaterializationLinkState[]>;
33
+ exactPoint(series: TelemetrySeriesRef, at: string, lock?: boolean): Promise<StoredTelemetryPoint | null>;
34
+ exactPoints(points: readonly {
35
+ readonly series: TelemetrySeriesRef;
36
+ readonly at: string;
37
+ }[], lock?: boolean): Promise<readonly StoredTelemetryPoint[]>;
38
+ linkScopes(scopes: readonly {
39
+ readonly source: OntologyObjectRef;
40
+ readonly linkId: string;
41
+ }[]): Promise<readonly MaterializationLinkScopeState[]>;
42
+ linkScope(source: OntologyObjectRef, linkId: string): Promise<MaterializationLinkScopeState>;
43
+ incidentLinks(objects: readonly OntologyObjectRef[], pageRows: number): AsyncIterable<OntologyLinkRef[]>;
44
+ replacementIdentities(input: ReplacementIdentityInput): AsyncIterable<ReplacementIdentity[]>;
45
+ replacementObjectStates(sourceId: string, candidateMaterializationId: string, refs: readonly OntologyObjectRef[]): Promise<readonly SourceReplacementObjectState[]>;
46
+ replacementLinkStates(sourceId: string, candidateMaterializationId: string, materializationIds: readonly string[], identities: readonly Extract<ReplacementIdentity, {
47
+ readonly kind: "link";
48
+ }>[]): Promise<readonly SourceReplacementLinkState[]>;
49
+ effectiveObjectRevision(ref: OntologyObjectRef, lock?: boolean): Promise<{
50
+ readonly version: number;
51
+ readonly lastCommitId: string | null;
52
+ } | null>;
53
+ effectiveObjectRevisions(refs: readonly OntologyObjectRef[], lock?: boolean): Promise<ReadonlyMap<string, {
54
+ readonly version: number;
55
+ readonly lastCommitId: string | null;
56
+ }>>;
57
+ effectiveLinkLastCommit(ref: OntologyLinkRef, lock?: boolean): Promise<string | null | undefined>;
58
+ effectiveLinkLastCommits(refs: readonly OntologyLinkRef[], lock?: boolean): Promise<ReadonlyMap<string, string | null>>;
59
+ overrideLastCommit(kind: "object" | "link", entityKey: string): Promise<string | null>;
60
+ private replacementSources;
61
+ private prepareReplacementIdentities;
62
+ private prepareReplacementObjects;
63
+ private prepareReplacementLinks;
64
+ }
65
+ export declare function objectSortExpression(alias?: string): string;
66
+ export declare function linkSortExpression(alias?: string): string;
67
+ export declare function pointSortExpression(alias?: string): string;
68
+ export {};
69
+ //# sourceMappingURL=materialization-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialization-state.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { MaterializationPlanChunk } from "@sixb/core/storage";
2
+ import type { SQLClient } from "../pg-client";
3
+ /** Applies one already-validated exact plan chunk in bounded PostgreSQL batches. */
4
+ export declare class PgMaterializationWriter {
5
+ private readonly sql;
6
+ constructor(sql: SQLClient);
7
+ apply(projectId: string, commitId: string, chunk: MaterializationPlanChunk): Promise<void>;
8
+ private applyOverrides;
9
+ private applyEffective;
10
+ private applyObjects;
11
+ private applyLinks;
12
+ private applyTimeseries;
13
+ private applyOutbox;
14
+ }
15
+ //# sourceMappingURL=materialization-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialization-writer.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG7C,oFAAoF;AACpF,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAErC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;YAOlF,cAAc;YAgFd,cAAc;YAqDd,YAAY;YA+DZ,UAAU;YAqEV,eAAe;YA+Ff,WAAW;CAwC1B"}
@@ -0,0 +1,33 @@
1
+ import type { ApplyMaterializationChunkInput, ApplyMaterializationResult, FinalizeMaterializationInput, MaterializationObjectExistence, MaterializationPlanHeader, MaterializationSession, MaterializationStatePage, MaterializationWorkPage, OntologyMaterializationStorage, ReadMaterializationObjectExistenceInput, SourceReplacementStatePage, StageMaterializationWorkInput, StreamMaterializationStateInput, StreamMaterializationWorkInput, StreamSourceReplacementStateInput } from "@sixb/core/storage";
2
+ import type { SQLClient } from "../pg-client";
3
+ import { type PgOntologyTransactionContext } from "./materialization-session";
4
+ export declare class PgOntologyMaterializationStorage implements OntologyMaterializationStorage {
5
+ private readonly sql;
6
+ private readonly sessions;
7
+ private readonly writer;
8
+ constructor(sql: SQLClient, context: PgOntologyTransactionContext | null);
9
+ begin(input: MaterializationPlanHeader): Promise<MaterializationSession>;
10
+ streamState(input: StreamMaterializationStateInput): AsyncIterable<MaterializationStatePage>;
11
+ streamSourceReplacementState(input: StreamSourceReplacementStateInput): AsyncIterable<SourceReplacementStatePage>;
12
+ stageWork(input: StageMaterializationWorkInput): Promise<void>;
13
+ streamWork(input: StreamMaterializationWorkInput): AsyncIterable<MaterializationWorkPage>;
14
+ readObjectExistence(input: ReadMaterializationObjectExistenceInput): Promise<readonly MaterializationObjectExistence[]>;
15
+ applyChunk(input: ApplyMaterializationChunkInput): Promise<void>;
16
+ finalize(input: FinalizeMaterializationInput): Promise<ApplyMaterializationResult>;
17
+ deactivateSessions(): void;
18
+ private requireReplacement;
19
+ private assertCommitAbsent;
20
+ private assertSources;
21
+ private assertSourceRow;
22
+ private assertObject;
23
+ private assertLink;
24
+ private assertFinalization;
25
+ private assertFinalCardinality;
26
+ private projectionCounts;
27
+ private telemetrySummary;
28
+ private activateSource;
29
+ private insertCommit;
30
+ private getActiveSource;
31
+ private getSource;
32
+ }
33
+ //# sourceMappingURL=materializations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializations.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materializations.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,8BAA8B,EAC9B,0BAA0B,EAC1B,4BAA4B,EAC5B,8BAA8B,EAC9B,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EAEvB,8BAA8B,EAC9B,uCAAuC,EAEvC,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,EAClC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAA;AAoClC,qBAAa,gCAAiC,YAAW,8BAA8B;IAKnF,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAG7B,GAAG,EAAE,SAAS,EAC/B,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAMxC,KAAK,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAuDvE,WAAW,CAChB,KAAK,EAAE,+BAA+B,GACrC,aAAa,CAAC,wBAAwB,CAAC;IAqDnC,4BAA4B,CACjC,KAAK,EAAE,iCAAiC,GACvC,aAAa,CAAC,0BAA0B,CAAC;IA0FtC,SAAS,CAAC,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,UAAU,CAAC,KAAK,EAAE,8BAA8B,GAAG,aAAa,CAAC,uBAAuB,CAAC;IAKnF,mBAAmB,CACvB,KAAK,EAAE,uCAAuC,GAC7C,OAAO,CAAC,SAAS,8BAA8B,EAAE,CAAC;IAK/C,UAAU,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,QAAQ,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAYxF,kBAAkB,IAAI,IAAI;YAIZ,kBAAkB;YA4DlB,kBAAkB;YAmDlB,aAAa;IAoB3B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,UAAU;YAqBJ,kBAAkB;YAqDlB,sBAAsB;YA4CtB,gBAAgB;YA2DhB,gBAAgB;YAiChB,cAAc;YA4Gd,YAAY;YAkCZ,eAAe;YAcf,SAAS;CAgBxB"}
@@ -0,0 +1,12 @@
1
+ import type { ClaimedOntologyOutboxRow, ClaimOntologyOutboxInput, CompleteOntologyOutboxLeaseInput, OntologyOutboxStorage, OntologyOutboxSummary, PurgePublishedOntologyOutboxInput, RescheduleOntologyOutboxLeaseInput, SummarizeOntologyOutboxInput } from "@sixb/core/storage";
2
+ import { type PgRootOperation } from "./shared";
3
+ export declare class PgOntologyOutboxStorage implements OntologyOutboxStorage {
4
+ private readonly runRootOperation;
5
+ constructor(runRootOperation: PgRootOperation);
6
+ claim(input: ClaimOntologyOutboxInput): Promise<readonly ClaimedOntologyOutboxRow[]>;
7
+ markPublished(input: CompleteOntologyOutboxLeaseInput): Promise<void>;
8
+ reschedule(input: RescheduleOntologyOutboxLeaseInput): Promise<void>;
9
+ purgePublished(input: PurgePublishedOntologyOutboxInput): Promise<number>;
10
+ summarize(input: SummarizeOntologyOutboxInput): Promise<OntologyOutboxSummary>;
11
+ }
12
+ //# sourceMappingURL=outbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/outbox.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,gCAAgC,EAChC,qBAAqB,EACrB,qBAAqB,EACrB,iCAAiC,EACjC,kCAAkC,EAClC,4BAA4B,EAC7B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,UAAU,CAAA;AAEjB,qBAAa,uBAAwB,YAAW,qBAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,eAAe;IAExD,KAAK,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC;IAmDpF,aAAa,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrE,UAAU,CAAC,KAAK,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BpE,cAAc,CAAC,KAAK,EAAE,iCAAiC,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBzE,SAAS,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA0BrF"}
@@ -0,0 +1,95 @@
1
+ import { MaterializationConflictError } from "@sixb/core/internal/materialization";
2
+ import type { AssertSourceMaterializationExecutionInput, OntologyCommitRecord, OntologyOutboxRecord, OntologySourceRecord, StageSourceAssertion } from "@sixb/core/storage";
3
+ import type { SQLClient } from "../pg-client";
4
+ export { assertNonblank, assertNonnegativeInteger, assertPositiveInteger, assertTimestamp, canonicalJson, linkRefFromColumns, objectRefFromColumns, originColumns, originWhere, sourceEntityKey, } from "@sixb/core/internal/ontology-storage-provider";
5
+ export type PgRootOperation = <T>(run: (sql: SQLClient) => Promise<T>) => Promise<T>;
6
+ export interface PgOntologyCommitRow {
7
+ readonly project_id: string;
8
+ readonly id: string;
9
+ readonly idempotency_key: string;
10
+ readonly request_hash: string;
11
+ readonly origin_kind: string;
12
+ readonly origin_run_id: string | null;
13
+ readonly origin_batch_ordinal: number | string | null;
14
+ readonly origin: unknown;
15
+ readonly actor: unknown | null;
16
+ readonly ontology_revision: string;
17
+ readonly projection_revision: string | null;
18
+ readonly ownership_hash: string | null;
19
+ readonly intent: unknown;
20
+ readonly result: unknown;
21
+ readonly committed_at: Date | string;
22
+ }
23
+ export interface PgOntologySourceRow {
24
+ readonly project_id: string;
25
+ readonly source_id: string;
26
+ readonly materialization_id: string;
27
+ readonly projection_run_id: string;
28
+ readonly projection_kind: "object" | "link";
29
+ readonly protocol: "replacement";
30
+ readonly status: OntologySourceRecord["status"];
31
+ readonly execution_token: string | null;
32
+ readonly dataset_id: string;
33
+ readonly dataset_version_id: string;
34
+ readonly dataset_version_created_at: Date | string;
35
+ readonly projection_revision: string;
36
+ readonly ownership_hash: string;
37
+ readonly ontology_revision: string;
38
+ readonly root_count: number | string | null;
39
+ readonly assertion_count: number | string | null;
40
+ readonly created_at: Date | string;
41
+ readonly ready_at: Date | string | null;
42
+ readonly activated_at: Date | string | null;
43
+ readonly terminal_at: Date | string | null;
44
+ readonly last_commit_id: string | null;
45
+ readonly updated_at: Date | string;
46
+ }
47
+ export interface PgOntologySourceAssertionRow {
48
+ readonly project_id: string;
49
+ readonly source_id: string;
50
+ readonly materialization_id: string;
51
+ readonly entity_kind: "object" | "link";
52
+ readonly entity_key: unknown;
53
+ readonly entity_sort_key: string;
54
+ readonly root_kind: "object" | "link";
55
+ readonly root_key: unknown;
56
+ readonly root_sort_key: string;
57
+ readonly staging_ordinal: number | string;
58
+ readonly root: unknown;
59
+ readonly assertion: unknown;
60
+ }
61
+ export interface PgOntologyOverrideRow {
62
+ readonly entity_kind: "object" | "link";
63
+ readonly value: unknown;
64
+ readonly last_commit_id: string;
65
+ readonly updated_at: Date | string;
66
+ }
67
+ export interface PgOntologyOutboxRow {
68
+ readonly envelope: unknown;
69
+ readonly available_at: Date | string;
70
+ readonly attempts: number | string;
71
+ readonly lease_id: string | null;
72
+ readonly lease_expires_at: Date | string | null;
73
+ readonly published_at: Date | string | null;
74
+ readonly last_error: string | null;
75
+ readonly created_at: Date | string;
76
+ }
77
+ export declare function jsonParameter(sql: SQLClient, value: unknown): ReturnType<SQLClient["json"]>;
78
+ export declare function jsonKeyParameter(sql: SQLClient, canonicalKey: string): ReturnType<SQLClient["json"]>;
79
+ export declare function toIsoString(value: Date | string): string;
80
+ export declare function optionalIsoString(value: Date | string | null): string | null;
81
+ export declare function databaseSafeInteger(value: number | string, label: string): number;
82
+ export declare function sourceRecord(row: PgOntologySourceRow): OntologySourceRecord;
83
+ export declare function sourceAssertion(row: PgOntologySourceAssertionRow): StageSourceAssertion;
84
+ export declare function commitRecord(row: PgOntologyCommitRow): OntologyCommitRecord;
85
+ export declare function outboxRecord(row: PgOntologyOutboxRow): OntologyOutboxRecord;
86
+ export declare function assertProjectionExecution(sql: SQLClient, input: {
87
+ readonly projectId: string;
88
+ readonly sourceId: string;
89
+ readonly projectionRunId: string;
90
+ readonly executionToken: string;
91
+ readonly identity?: AssertSourceMaterializationExecutionInput["identity"];
92
+ }): Promise<void>;
93
+ export declare function requireRow<T>(row: T | undefined, kind: ConstructorParameters<typeof MaterializationConflictError>[0], message: string): T;
94
+ export declare function ontologyLockKey(kind: string, ...parts: readonly string[]): string;
95
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { AbandonSourceMaterializationCandidateInput, BeginSourceMaterializationInput, CleanupTerminalSourceMaterializationsInput, CleanupTerminalSourceMaterializationsResult, GetActiveOntologySourceInput, MarkSourceMaterializationReadyInput, OntologySourceRecord, OntologySourceStorage, ReclaimSourceMaterializationInput, StageSourceRowsInput, StageSourceRowsResult, SummarizeTerminalSourceMaterializationsInput, TerminalSourceMaterializationSummary } from "@sixb/core/storage";
2
+ import { type PgRootOperation } from "./shared";
3
+ export declare class PgOntologySourceStorage implements OntologySourceStorage {
4
+ private readonly runRootOperation;
5
+ constructor(runRootOperation: PgRootOperation);
6
+ beginMaterialization(input: BeginSourceMaterializationInput): Promise<OntologySourceRecord>;
7
+ stageRows(input: StageSourceRowsInput): Promise<StageSourceRowsResult>;
8
+ markReady(input: MarkSourceMaterializationReadyInput): Promise<OntologySourceRecord>;
9
+ getActive(input: GetActiveOntologySourceInput): Promise<OntologySourceRecord | null>;
10
+ abandon(input: AbandonSourceMaterializationCandidateInput): Promise<OntologySourceRecord>;
11
+ abandon(input: ReclaimSourceMaterializationInput): Promise<OntologySourceRecord | null>;
12
+ cleanupTerminal(input: CleanupTerminalSourceMaterializationsInput): Promise<CleanupTerminalSourceMaterializationsResult>;
13
+ summarizeTerminal(input: SummarizeTerminalSourceMaterializationsInput): Promise<TerminalSourceMaterializationSummary>;
14
+ private abandonCandidate;
15
+ private abandonForReclaim;
16
+ private transitionToAbandoned;
17
+ private assertReadyState;
18
+ private findStageRows;
19
+ private insertStageRows;
20
+ private assertExecution;
21
+ private getRunCandidate;
22
+ private getManifest;
23
+ private requireManifest;
24
+ }
25
+ //# sourceMappingURL=sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/sources.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,0CAA0C,EAG1C,+BAA+B,EAC/B,0CAA0C,EAC1C,2CAA2C,EAC3C,4BAA4B,EAC5B,mCAAmC,EACnC,oBAAoB,EACpB,qBAAqB,EACrB,iCAAiC,EACjC,oBAAoB,EACpB,qBAAqB,EACrB,4CAA4C,EAC5C,oCAAoC,EACrC,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAUL,KAAK,eAAe,EAIrB,MAAM,UAAU,CAAA;AAEjB,qBAAa,uBAAwB,YAAW,qBAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,eAAe;IAExD,oBAAoB,CACxB,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,oBAAoB,CAAC;IA6E1B,SAAS,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0BtE,SAAS,CAAC,KAAK,EAAE,mCAAmC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuDpF,SAAS,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAapF,OAAO,CAAC,KAAK,EAAE,0CAA0C,GAAG,OAAO,CAAC,oBAAoB,CAAC;IACzF,OAAO,CAAC,KAAK,EAAE,iCAAiC,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAavF,eAAe,CACnB,KAAK,EAAE,0CAA0C,GAChD,OAAO,CAAC,2CAA2C,CAAC;IA6DjD,iBAAiB,CACrB,KAAK,EAAE,4CAA4C,GAClD,OAAO,CAAC,oCAAoC,CAAC;YAqBlC,gBAAgB;YA2BhB,iBAAiB;YA2BjB,qBAAqB;YA+BrB,gBAAgB;YAmFhB,aAAa;YAuBb,eAAe;IAmE7B,OAAO,CAAC,eAAe;YAkBT,eAAe;YAef,WAAW;YAkBX,eAAe;CAW9B"}
@@ -0,0 +1,21 @@
1
+ import type { ActionRunRecord, ActionRunStorage, EnterActionRunPhaseInput, FinishActionRunInput, ListActionRunsInput, ListActionRunsResult, LockActionMaterializationRunInput, QueueActionRunInput, RecordActionEffectsInput, RecordActionWritebackInput, StartActionRunInput } from "@sixb/core/storage";
2
+ import { type PgStoreClient } from "./transactions";
3
+ export declare class PgActionRunStorage implements ActionRunStorage {
4
+ private readonly sql;
5
+ constructor(sql: PgStoreClient);
6
+ lockForMaterialization(input: LockActionMaterializationRunInput): Promise<ActionRunRecord>;
7
+ queue(input: QueueActionRunInput): Promise<ActionRunRecord>;
8
+ private requeueAfterEnqueueFailure;
9
+ start(input: StartActionRunInput): Promise<ActionRunRecord>;
10
+ enterPhase(input: EnterActionRunPhaseInput): Promise<ActionRunRecord>;
11
+ recordWriteback(input: RecordActionWritebackInput): Promise<ActionRunRecord>;
12
+ recordEffects(input: RecordActionEffectsInput): Promise<ActionRunRecord>;
13
+ finish(input: FinishActionRunInput): Promise<ActionRunRecord>;
14
+ getById(params: {
15
+ projectId: string;
16
+ id: string;
17
+ }): Promise<ActionRunRecord | null>;
18
+ list(input: ListActionRunsInput): Promise<ListActionRunsResult>;
19
+ private requireRunningRun;
20
+ }
21
+ //# sourceMappingURL=pg-action-run-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-action-run-storage.d.ts","sourceRoot":"","sources":["../src/pg-action-run-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,eAAe,EACf,gBAAgB,EAEhB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAU3B,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAA;AAErE,qBAAa,kBAAmB,YAAW,gBAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,sBAAsB,CAAC,KAAK,EAAE,iCAAiC,GAAG,OAAO,CAAC,eAAe,CAAC;IAyB1F,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;YAyEnD,0BAA0B;IA+ClC,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IAgC3D,UAAU,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,eAAe,CAAC;IAerE,eAAe,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,eAAe,CAAC;IAuC5E,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,eAAe,CAAC;IAiCxE,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAuC7D,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IASnF,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;YAkHvD,iBAAiB;CAwBhC"}
@@ -0,0 +1,58 @@
1
+ import postgres from "postgres";
2
+ /**
3
+ * Connection handle backing every Postgres storage adapter.
4
+ *
5
+ * This is the porsager `postgres` pool — not Bun's built-in SQL. bun:sql's pool orphaned
6
+ * connections under request bursts (a query whose client disconnected mid-flight left its
7
+ * connection checked out but never returned), so the pool drained to zero usable slots and
8
+ * the whole API hung until a restart. porsager's pool reclaims connections reliably, which
9
+ * is the actual fix for that wedge.
10
+ *
11
+ * Queries declare their row type per call (`` sql<RowType[]>`...` ``) rather than via an open
12
+ * generic, so results are typed without `as` casts.
13
+ */
14
+ export type SQL = postgres.Sql<Record<string, never>>;
15
+ /**
16
+ * A query runner that may be the pool or an open transaction. Adapters that run the same
17
+ * statement on either should accept this rather than {@link SQL} (only the pool exposes
18
+ * `begin`/`reserve`/`end`).
19
+ */
20
+ export type SQLClient = postgres.ISql<Record<string, never>>;
21
+ /**
22
+ * A value accepted as a positional parameter by {@link SQLClient.unsafe}. Dynamically built
23
+ * parameter arrays (from the query-IR compiler / run-list helpers) are cast to this since
24
+ * their element types can't be inferred statically.
25
+ */
26
+ export type SqlParameter = postgres.ParameterOrJSON<never>;
27
+ export interface CreatePgClientOptions {
28
+ readonly connectionString?: string;
29
+ readonly host?: string;
30
+ readonly port?: number;
31
+ readonly database?: string;
32
+ readonly user?: string;
33
+ readonly password?: string;
34
+ /** Maximum pooled connections. */
35
+ readonly max: number;
36
+ /** Schema pinned via `search_path` on every connection. */
37
+ readonly schemaName: string;
38
+ /** Close idle connections after this many ms (frees slots back to the server). Default 30s. */
39
+ readonly idleTimeoutMillis?: number;
40
+ /** Per-connection `statement_timeout` (ms). Unset = no timeout. */
41
+ readonly statementTimeoutMillis?: number;
42
+ /** Per-connection `idle_in_transaction_session_timeout` (ms). Unset = no timeout. */
43
+ readonly idleInTransactionSessionTimeoutMillis?: number;
44
+ /** Seconds to wait when establishing a connection. Default 10. */
45
+ readonly connectTimeoutMillis?: number;
46
+ /**
47
+ * Whether porsager creates server-side prepared statements (its default; faster against a
48
+ * direct Postgres connection). Keep `true` for a direct connection. Behind a transaction-mode
49
+ * pooler, prepared statements are supported by PgBouncer >= 1.21 (Oct 2023) when
50
+ * `max_prepared_statements > 0`; set `false` only for an older PgBouncer or when that setting
51
+ * is 0. (The blanket incompatibility in porsager#93 predates PgBouncer 1.21.)
52
+ */
53
+ readonly prepare?: boolean;
54
+ readonly ssl?: boolean | "require" | "prefer";
55
+ }
56
+ /** Build a configured porsager `postgres` pool. */
57
+ export declare function createPgClient(options: CreatePgClientOptions): SQL;
58
+ //# sourceMappingURL=pg-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-client.d.ts","sourceRoot":"","sources":["../src/pg-client.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAW/B;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AAErD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AAE5D;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;AAE1D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,+FAA+F;IAC/F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,mEAAmE;IACnE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC,qFAAqF;IACrF,QAAQ,CAAC,qCAAqC,CAAC,EAAE,MAAM,CAAA;IACvD,kEAAkE;IAClE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;CAC9C;AAKD,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,GAAG,CAkDlE"}
@@ -0,0 +1,55 @@
1
+ import { type ObjectQuery, type QueryScalarKind } from "@sixb/core";
2
+ export interface PgObjectQueryPageRow {
3
+ object_type_id: string;
4
+ primary_id: string;
5
+ properties: unknown;
6
+ _cursor_properties?: unknown;
7
+ }
8
+ export interface CompiledPgObjectQuery {
9
+ sql: string;
10
+ args: unknown[];
11
+ totalSql: string;
12
+ totalArgs: unknown[];
13
+ order: CompiledOrder;
14
+ hasMoreProbe?: CompiledHasMoreProbe;
15
+ hasMore(rowCount: number, total?: number): boolean;
16
+ trimRows<T>(rows: readonly T[]): readonly T[];
17
+ nextPageToken(rows: readonly PgObjectQueryPageRow[], rowCount: number): string | undefined;
18
+ }
19
+ export interface CompiledPgScalarQuery {
20
+ sql: string;
21
+ args: unknown[];
22
+ }
23
+ export interface CompiledPgFacetQuery {
24
+ sql: string;
25
+ args: unknown[];
26
+ }
27
+ interface CompiledHasMoreProbe {
28
+ sql: string;
29
+ args: unknown[];
30
+ hasMore(rowCount: number): boolean;
31
+ }
32
+ interface CompiledOrder {
33
+ sql: string;
34
+ args: unknown[];
35
+ fields: readonly CompiledOrderField[];
36
+ propertyColumn: string;
37
+ }
38
+ type CompiledOrderField = {
39
+ kind: "property";
40
+ propertyId: string;
41
+ direction: "asc" | "desc";
42
+ scalarKind?: QueryScalarKind;
43
+ } | {
44
+ kind: "column";
45
+ column: "object_type_id" | "primary_id";
46
+ direction: "asc" | "desc";
47
+ };
48
+ export declare function compilePgObjectQuery(projectId: string, query: ObjectQuery, options?: {
49
+ includeTotal?: boolean;
50
+ }): CompiledPgObjectQuery;
51
+ export declare function compilePgObjectCountQuery(projectId: string, query: ObjectQuery): CompiledPgScalarQuery;
52
+ export declare function compilePgObjectExistsQuery(projectId: string, query: ObjectQuery): CompiledPgScalarQuery;
53
+ export declare function compilePgObjectFacetQuery(projectId: string, query: ObjectQuery, propertyId: string, limit: number): CompiledPgFacetQuery;
54
+ export {};
55
+ //# sourceMappingURL=pg-object-query-compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-object-query-compiler.d.ts","sourceRoot":"","sources":["../src/pg-object-query-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAKhB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,EAAE,CAAA;IACpB,KAAK,EAAE,aAAa,CAAA;IACpB,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAClD,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAA;IAC7C,aAAa,CAAC,IAAI,EAAE,SAAS,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAC3F;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;CAChB;AAED,UAAU,oBAAoB;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CACnC;AAgBD,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACrC,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,KAAK,kBAAkB,GACnB;IACE,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,eAAe,CAAA;CAC7B,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,gBAAgB,GAAG,YAAY,CAAA;IACvC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAC1B,CAAA;AAmBL,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,qBAAqB,CAevB;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,GACjB,qBAAqB,CASvB;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,GACjB,qBAAqB,CAUvB;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAkBtB"}