@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,90 @@
1
+ import type { CountObjectsInput, CountObjectsResult, ExistsObjectsInput, ExistsObjectsResult, FacetObjectsInput, FacetObjectsResult, LinkDirection, ObjectLinkRow, ObjectQueryCapabilities, ObjectRow, ObjectStorage, QueryObjectsInput, QueryObjectsResult } from "@sixb/core/storage";
2
+ import type { PgStoreClient } from "./transactions";
3
+ /**
4
+ * PostgreSQL-based ObjectStorage implementation.
5
+ *
6
+ * Stores object projections and links. V1 object-query IR pushdown covers the
7
+ * scalar JSONB-property and link-traversal subset declared by queryCapabilities().
8
+ *
9
+ * Requires `search_path` to be set to the Sixb schema on the connection.
10
+ *
11
+ * JSONB handling notes (Bun SQL specifics):
12
+ * - Writes use `${JSON.stringify(v)}::text::jsonb`. The `::text` forces the
13
+ * text wire type so that `::jsonb` parses the JSON text into a proper JSONB
14
+ * value (object, number, etc.) instead of a JSONB string literal.
15
+ * - The `@>` containment operator receives a plain JS object which Bun SQL
16
+ * auto-serialises as JSONB.
17
+ * - Reads return JSONB as native JS types (objects, numbers, booleans) when
18
+ * the data was stored correctly.
19
+ */
20
+ export declare class PgObjectStorage implements ObjectStorage {
21
+ private readonly sql;
22
+ constructor(sql: PgStoreClient);
23
+ queryCapabilities(): ObjectQueryCapabilities;
24
+ queryObjects(params: QueryObjectsInput): Promise<QueryObjectsResult>;
25
+ countObjects(params: CountObjectsInput): Promise<CountObjectsResult>;
26
+ existsObjects(params: ExistsObjectsInput): Promise<ExistsObjectsResult>;
27
+ facetObjects(params: FacetObjectsInput): Promise<FacetObjectsResult>;
28
+ getByPrimaryId(params: {
29
+ projectId: string;
30
+ objectTypeId: string;
31
+ primaryId: string;
32
+ }): Promise<ObjectRow | null>;
33
+ listLinks(params: {
34
+ projectId: string;
35
+ objectTypeId: string;
36
+ objectId: string;
37
+ linkId?: string;
38
+ direction?: LinkDirection;
39
+ }): Promise<readonly ObjectLinkRow[]>;
40
+ getByPrimaryIdBatch(params: {
41
+ projectId: string;
42
+ items: readonly {
43
+ objectTypeId: string;
44
+ primaryId: string;
45
+ }[];
46
+ }): Promise<Map<string, ObjectRow>>;
47
+ listLinksBatch(params: {
48
+ projectId: string;
49
+ items: readonly {
50
+ objectTypeId: string;
51
+ objectId: string;
52
+ linkId: string;
53
+ }[];
54
+ }): Promise<Map<string, ObjectLinkRow[]>>;
55
+ listIncidentLinksBatch(params: {
56
+ projectId: string;
57
+ items: readonly {
58
+ objectTypeId: string;
59
+ objectId: string;
60
+ }[];
61
+ }): Promise<readonly ObjectLinkRow[]>;
62
+ listByPrimaryIdPage(params: {
63
+ projectId: string;
64
+ objectTypeId: string;
65
+ afterPrimaryId?: string;
66
+ limit: number;
67
+ }): Promise<{
68
+ objects: readonly ObjectRow[];
69
+ nextPrimaryId?: string;
70
+ }>;
71
+ list(params: {
72
+ projectId: string;
73
+ objectTypeId?: string | readonly string[];
74
+ primaryIdPrefix?: string;
75
+ primaryIdSuffix?: string;
76
+ updatedAfter?: Date;
77
+ updatedBefore?: Date;
78
+ createdAfter?: Date;
79
+ createdBefore?: Date;
80
+ limit?: number;
81
+ offset?: number;
82
+ orderBy?: "createdAt" | "updatedAt" | "primaryId";
83
+ order?: "asc" | "desc";
84
+ }): Promise<{
85
+ objects: readonly ObjectRow[];
86
+ hasMore: boolean;
87
+ total: number;
88
+ }>;
89
+ }
90
+ //# sourceMappingURL=pg-object-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-object-storage.d.ts","sourceRoot":"","sources":["../src/pg-object-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { FinishPipelineRunInput, FinishPipelineStepRunInput, ListLatestPipelineRunsInput, ListLatestPipelineRunsResult, ListPipelineRunsInput, ListPipelineRunsResult, ListPipelineStepRunsInput, ListPipelineStepRunsResult, PipelineRunRecord, PipelineRunStorage, PipelineStepRunRecord, StartPipelineRunInput, StartPipelineStepRunInput } from "@sixb/core/storage";
2
+ import { type PgStoreClient } from "./transactions";
3
+ export declare class PgPipelineRunStorage implements PipelineRunStorage {
4
+ private readonly sql;
5
+ constructor(sql: PgStoreClient);
6
+ start(input: StartPipelineRunInput): Promise<PipelineRunRecord>;
7
+ finish(input: FinishPipelineRunInput): Promise<PipelineRunRecord>;
8
+ startStep(input: StartPipelineStepRunInput): Promise<PipelineStepRunRecord>;
9
+ finishStep(input: FinishPipelineStepRunInput): Promise<PipelineStepRunRecord>;
10
+ getById(params: {
11
+ projectId: string;
12
+ id: string;
13
+ }): Promise<PipelineRunRecord | null>;
14
+ list(input: ListPipelineRunsInput): Promise<ListPipelineRunsResult>;
15
+ listLatestByPipelineIds(input: ListLatestPipelineRunsInput): Promise<ListLatestPipelineRunsResult>;
16
+ listSteps(input: ListPipelineStepRunsInput): Promise<ListPipelineStepRunsResult>;
17
+ }
18
+ //# sourceMappingURL=pg-pipeline-run-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-pipeline-run-storage.d.ts","sourceRoot":"","sources":["../src/pg-pipeline-run-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAE1B,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAA;AAErE,qBAAa,oBAAqB,YAAW,kBAAkB;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+B/D,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkDjE,SAAS,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkE3E,UAAU,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0D7E,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IASrF,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA6CnE,uBAAuB,CAC3B,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,4BAA4B,CAAC;IAelC,SAAS,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAqDvF"}
@@ -0,0 +1,19 @@
1
+ import type { AdvanceProjectionTelemetryCheckpointInput, FinishProjectionRunInput, ListLatestProjectionRunsInput, ListLatestProjectionRunsResult, ListProjectionRunsInput, ListProjectionRunsResult, LockProjectionRunForMaterializationInput, ProjectionRunClaim, ProjectionRunRecord, ProjectionRunStorage, RecordProjectionMissingTargetInput, StartOrReclaimProjectionRunInput, TelemetryProjectionRunRecord, UpdateProjectionRunInput } from "@sixb/core/storage";
2
+ import { type PgStoreClient } from "./transactions";
3
+ export declare class PgProjectionRunStorage implements ProjectionRunStorage {
4
+ private readonly sql;
5
+ constructor(sql: PgStoreClient);
6
+ startOrReclaim(input: StartOrReclaimProjectionRunInput): Promise<ProjectionRunClaim>;
7
+ lockForMaterialization(input: LockProjectionRunForMaterializationInput): Promise<ProjectionRunRecord>;
8
+ update(input: UpdateProjectionRunInput): Promise<ProjectionRunRecord>;
9
+ finish(input: FinishProjectionRunInput): Promise<ProjectionRunRecord>;
10
+ advanceTelemetryCheckpoint(input: AdvanceProjectionTelemetryCheckpointInput): Promise<TelemetryProjectionRunRecord>;
11
+ recordMissingTarget(input: RecordProjectionMissingTargetInput): Promise<TelemetryProjectionRunRecord>;
12
+ getById(params: {
13
+ projectId: string;
14
+ id: string;
15
+ }): Promise<ProjectionRunRecord | null>;
16
+ list(input: ListProjectionRunsInput): Promise<ListProjectionRunsResult>;
17
+ listLatestByProjectionIds(input: ListLatestProjectionRunsInput): Promise<ListLatestProjectionRunsResult>;
18
+ }
19
+ //# sourceMappingURL=pg-projection-run-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-projection-run-storage.d.ts","sourceRoot":"","sources":["../src/pg-projection-run-storage.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,yCAAyC,EACzC,wBAAwB,EACxB,6BAA6B,EAC7B,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,wCAAwC,EAExC,kBAAkB,EAClB,mBAAmB,EAEnB,oBAAoB,EACpB,kCAAkC,EAClC,gCAAgC,EAChC,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAI3B,OAAO,EAAoB,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAA;AAEvF,qBAAa,sBAAuB,YAAW,oBAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,cAAc,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2GpF,sBAAsB,CAC1B,KAAK,EAAE,wCAAwC,GAC9C,OAAO,CAAC,mBAAmB,CAAC;IAOzB,MAAM,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsBrE,MAAM,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0BrE,0BAA0B,CAC9B,KAAK,EAAE,yCAAyC,GAC/C,OAAO,CAAC,4BAA4B,CAAC;IA6BlC,mBAAmB,CACvB,KAAK,EAAE,kCAAkC,GACxC,OAAO,CAAC,4BAA4B,CAAC;IAwBlC,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IASvF,IAAI,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAyFvE,yBAAyB,CAC7B,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,8BAA8B,CAAC;CAY3C"}
@@ -0,0 +1,25 @@
1
+ import type { RuleEventSubject } from "@sixb/core";
2
+ import type { ListActiveRuleStatesInput, ListActiveRuleStatesResult, ListRuleStatesReconciliationPageInput, ListRuleStatesReconciliationPageResult, RuleStateRecord, RuleStateTransitionEvent, RulesStorage, StoredRuleResolvedEvent, StoredRuleTriggeredEvent } from "@sixb/core/storage";
3
+ import type { PgStoreClient } from "./transactions";
4
+ export declare class PgRulesStorage implements RulesStorage {
5
+ private readonly sql;
6
+ constructor(sql: PgStoreClient);
7
+ getActive(params: {
8
+ projectId: string;
9
+ ruleId: string;
10
+ subject: RuleEventSubject;
11
+ }): Promise<RuleStateRecord | null>;
12
+ getActiveBatch(params: {
13
+ projectId: string;
14
+ items: readonly {
15
+ readonly ruleId: string;
16
+ readonly subject: RuleEventSubject;
17
+ }[];
18
+ }): Promise<readonly RuleStateRecord[]>;
19
+ listActive(input: ListActiveRuleStatesInput): Promise<ListActiveRuleStatesResult>;
20
+ listReconciliationPage(input: ListRuleStatesReconciliationPageInput): Promise<ListRuleStatesReconciliationPageResult>;
21
+ applyTriggered(event: StoredRuleTriggeredEvent): Promise<void>;
22
+ applyResolved(event: StoredRuleResolvedEvent): Promise<void>;
23
+ applyTransitions(events: readonly RuleStateTransitionEvent[]): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=pg-rules-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-rules-storage.d.ts","sourceRoot":"","sources":["../src/pg-rules-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,qCAAqC,EACrC,sCAAsC,EACtC,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,qBAAa,cAAe,YAAW,YAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,SAAS,CAAC,MAAM,EAAE;QACtB,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,gBAAgB,CAAA;KAC1B,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAoB7B,cAAc,CAAC,MAAM,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,SAAS;YACd,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;YACvB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;SACnC,EAAE,CAAA;KACJ,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IA4BjC,UAAU,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAwEjF,sBAAsB,CAC1B,KAAK,EAAE,qCAAqC,GAC3C,OAAO,CAAC,sCAAsC,CAAC;IAsB5C,cAAc,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9D,aAAa,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D,gBAAgB,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAoCnF"}
@@ -0,0 +1,15 @@
1
+ import type { FinishSyncRunInput, ListLatestSyncRunsInput, ListLatestSyncRunsResult, ListSyncRunsInput, ListSyncRunsResult, StartSyncRunInput, SyncRunRecord, SyncRunStorage } from "@sixb/core/storage";
2
+ import { type PgStoreClient } from "./transactions";
3
+ export declare class PgSyncRunStorage implements SyncRunStorage {
4
+ private readonly sql;
5
+ constructor(sql: PgStoreClient);
6
+ start(input: StartSyncRunInput): Promise<SyncRunRecord>;
7
+ finish(input: FinishSyncRunInput): Promise<SyncRunRecord>;
8
+ getById(params: {
9
+ projectId: string;
10
+ id: string;
11
+ }): Promise<SyncRunRecord | null>;
12
+ list(input: ListSyncRunsInput): Promise<ListSyncRunsResult>;
13
+ listLatestBySyncIds(input: ListLatestSyncRunsInput): Promise<ListLatestSyncRunsResult>;
14
+ }
15
+ //# sourceMappingURL=pg-sync-run-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-sync-run-storage.d.ts","sourceRoot":"","sources":["../src/pg-sync-run-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAEjB,aAAa,EACb,cAAc,EACf,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAA;AAErE,qBAAa,gBAAiB,YAAW,cAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAuCvD,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IA2DzD,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IASjF,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkD3D,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAe7F"}
@@ -0,0 +1,32 @@
1
+ import type { TimeseriesHistoryBatchInput, TimeseriesHistoryBatchResult, TimeseriesPoint, TimeseriesStorage } from "@sixb/core/storage";
2
+ import type { PgStoreClient } from "./transactions";
3
+ /**
4
+ * PostgreSQL-based TimeseriesStorage implementation.
5
+ *
6
+ * Stores time-series data with JSONB values and TIMESTAMPTZ timestamps
7
+ * for efficient querying of history and latest values.
8
+ *
9
+ * Requires `search_path` to be set to the Sixb schema on the connection.
10
+ */
11
+ export declare class PgTimeseriesStorage implements TimeseriesStorage {
12
+ private readonly sql;
13
+ constructor(sql: PgStoreClient);
14
+ getHistory(params: {
15
+ projectId: string;
16
+ objectTypeId: string;
17
+ objectId: string;
18
+ propertyId: string;
19
+ from?: Date;
20
+ to?: Date;
21
+ limit?: number;
22
+ order?: "asc" | "desc";
23
+ }): Promise<readonly TimeseriesPoint[]>;
24
+ getHistoryBatch(input: TimeseriesHistoryBatchInput): Promise<readonly TimeseriesHistoryBatchResult[]>;
25
+ getLatest(params: {
26
+ projectId: string;
27
+ objectTypeId: string;
28
+ objectId: string;
29
+ propertyId: string;
30
+ }): Promise<TimeseriesPoint | null>;
31
+ }
32
+ //# sourceMappingURL=pg-timeseries-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-timeseries-storage.d.ts","sourceRoot":"","sources":["../src/pg-timeseries-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,eAAe,EACf,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,iBAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,UAAU,CAAC,MAAM,EAAE;QACvB,SAAS,EAAE,MAAM,CAAA;QACjB,YAAY,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,EAAE,CAAC,EAAE,IAAI,CAAA;QACT,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KACvB,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAuBjC,eAAe,CACnB,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,SAAS,4BAA4B,EAAE,CAAC;IAqF7C,SAAS,CAAC,MAAM,EAAE;QACtB,SAAS,EAAE,MAAM,CAAA;QACjB,YAAY,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;KACnB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;CAWpC"}
@@ -0,0 +1,17 @@
1
+ import type { WebhookDeliveryClaimRecord, WebhookDeliveryKey, WebhookDeliveryRecord, WebhookDeliveryStorage } from "@sixb/core/storage";
2
+ import { type PgStoreClient } from "./transactions";
3
+ export declare class PgWebhookDeliveryStorage implements WebhookDeliveryStorage {
4
+ private readonly sql;
5
+ constructor(sql: PgStoreClient);
6
+ claim(input: WebhookDeliveryKey & {
7
+ receivedAt: string;
8
+ }): Promise<WebhookDeliveryClaimRecord>;
9
+ complete(input: WebhookDeliveryKey & {
10
+ completedAt: string;
11
+ }): Promise<WebhookDeliveryRecord>;
12
+ fail(input: WebhookDeliveryKey & {
13
+ failedAt: string;
14
+ error: string;
15
+ }): Promise<WebhookDeliveryRecord>;
16
+ }
17
+ //# sourceMappingURL=pg-webhook-delivery-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-webhook-delivery-storage.d.ts","sourceRoot":"","sources":["../src/pg-webhook-delivery-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAE1B,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAA;AAErE,qBAAa,wBAAyB,YAAW,sBAAsB;IACzD,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,KAAK,CACT,KAAK,EAAE,kBAAkB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,0BAA0B,CAAC;IAyEhC,QAAQ,CACZ,KAAK,EAAE,kBAAkB,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,qBAAqB,CAAC;IAuB3B,IAAI,CACR,KAAK,EAAE,kBAAkB,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC9D,OAAO,CAAC,qBAAqB,CAAC;CAqBlC"}
@@ -0,0 +1,14 @@
1
+ import type { FinishWebhookRunInput, ListWebhookRunsInput, ListWebhookRunsResult, StartWebhookRunInput, WebhookRunRecord, WebhookRunStorage } from "@sixb/core/storage";
2
+ import { type PgStoreClient } from "./transactions";
3
+ export declare class PgWebhookRunStorage implements WebhookRunStorage {
4
+ private readonly sql;
5
+ constructor(sql: PgStoreClient);
6
+ start(input: StartWebhookRunInput): Promise<WebhookRunRecord>;
7
+ finish(input: FinishWebhookRunInput): Promise<WebhookRunRecord>;
8
+ getById(params: {
9
+ projectId: string;
10
+ id: string;
11
+ }): Promise<WebhookRunRecord | null>;
12
+ list(input: ListWebhookRunsInput): Promise<ListWebhookRunsResult>;
13
+ }
14
+ //# sourceMappingURL=pg-webhook-run-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-webhook-run-storage.d.ts","sourceRoot":"","sources":["../src/pg-webhook-run-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAK3B,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAA;AAErE,qBAAa,mBAAoB,YAAW,iBAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqC7D,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsC/D,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IASpF,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA+CxE"}
@@ -0,0 +1,16 @@
1
+ import type { CancelWorkflowInterventionInput, CreateWorkflowInterventionInput, ExpireWorkflowInterventionInput, ListWorkflowInterventionsInput, ListWorkflowInterventionsResult, SubmitWorkflowInterventionInput, WorkflowInterventionRecord, WorkflowInterventionStorage } from "@sixb/core/storage";
2
+ import { type PgStoreClient } from "./transactions";
3
+ export declare class PgWorkflowInterventionStorage implements WorkflowInterventionStorage {
4
+ private readonly sql;
5
+ constructor(sql: PgStoreClient);
6
+ create(input: CreateWorkflowInterventionInput): Promise<WorkflowInterventionRecord>;
7
+ submit(input: SubmitWorkflowInterventionInput): Promise<WorkflowInterventionRecord>;
8
+ cancel(input: CancelWorkflowInterventionInput): Promise<WorkflowInterventionRecord>;
9
+ expire(input: ExpireWorkflowInterventionInput): Promise<WorkflowInterventionRecord>;
10
+ getById(params: {
11
+ projectId: string;
12
+ id: string;
13
+ }): Promise<WorkflowInterventionRecord | null>;
14
+ list(input: ListWorkflowInterventionsInput): Promise<ListWorkflowInterventionsResult>;
15
+ }
16
+ //# sourceMappingURL=pg-workflow-intervention-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-workflow-intervention-storage.d.ts","sourceRoot":"","sources":["../src/pg-workflow-intervention-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,+BAA+B,EAE/B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,oBAAoB,CAAA;AAI3B,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAA;AAErE,qBAAa,6BAA8B,YAAW,2BAA2B;IACnE,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEzC,MAAM,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAmDnF,MAAM,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAmBnF,MAAM,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAkBnF,MAAM,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAiBnF,OAAO,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,MAAM,CAAA;QACjB,EAAE,EAAE,MAAM,CAAA;KACX,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IASxC,IAAI,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,+BAA+B,CAAC;CAiG5F"}
@@ -0,0 +1,49 @@
1
+ import type { CancelWorkflowAgentNodeRunInput, ConfirmWorkflowAgentNodeRunExecutionOwnershipInput, ConfirmWorkflowRunExecutionOwnershipInput, CreateWorkflowAgentNodeRunInput, FinishWorkflowAgentNodeRunInput, FinishWorkflowNodeRunInput, FinishWorkflowRunInput, ListLatestWorkflowRunsInput, ListLatestWorkflowRunsResult, ListWorkflowAgentNodeRunsInput, ListWorkflowAgentNodeRunsResult, ListWorkflowNodeRunsInput, ListWorkflowNodeRunsResult, ListWorkflowRunsInput, ListWorkflowRunsResult, QueueWorkflowRunInput, ReclaimWorkflowAgentNodeRunInput, ReclaimWorkflowRunInput, ResumeWorkflowRunInput, StartWorkflowAgentNodeRunInput, StartWorkflowNodeRunInput, StartWorkflowRunInput, WaitWorkflowNodeRunInput, WaitWorkflowRunInput, WorkflowAgentNodeRunRecord, WorkflowAgentNodeRunStorage, WorkflowNodeRunRecord, WorkflowNodeRunStorage, WorkflowRunRecord, WorkflowRunStorage } from "@sixb/core/storage";
2
+ import { type PgStoreClient } from "./transactions";
3
+ export declare class PgWorkflowRunStorage implements WorkflowRunStorage {
4
+ private readonly sql;
5
+ readonly nodes: PgWorkflowNodeRunStorage;
6
+ readonly agentNodes: PgWorkflowAgentNodeRunStorage;
7
+ constructor(sql: PgStoreClient);
8
+ queue(input: QueueWorkflowRunInput): Promise<WorkflowRunRecord>;
9
+ start(input: StartWorkflowRunInput): Promise<WorkflowRunRecord>;
10
+ reclaim(input: ReclaimWorkflowRunInput): Promise<WorkflowRunRecord>;
11
+ confirmExecutionOwnership(input: ConfirmWorkflowRunExecutionOwnershipInput): Promise<WorkflowRunRecord>;
12
+ finish(input: FinishWorkflowRunInput): Promise<WorkflowRunRecord>;
13
+ wait(input: WaitWorkflowRunInput): Promise<WorkflowRunRecord>;
14
+ resume(input: ResumeWorkflowRunInput): Promise<WorkflowRunRecord>;
15
+ getById(params: {
16
+ projectId: string;
17
+ id: string;
18
+ }): Promise<WorkflowRunRecord | null>;
19
+ list(input: ListWorkflowRunsInput): Promise<ListWorkflowRunsResult>;
20
+ listLatestByWorkflowIds(input: ListLatestWorkflowRunsInput): Promise<ListLatestWorkflowRunsResult>;
21
+ }
22
+ export declare class PgWorkflowAgentNodeRunStorage implements WorkflowAgentNodeRunStorage {
23
+ private readonly sql;
24
+ constructor(sql: PgStoreClient);
25
+ create(input: CreateWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>;
26
+ start(input: StartWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>;
27
+ reclaim(input: ReclaimWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>;
28
+ confirmExecutionOwnership(input: ConfirmWorkflowAgentNodeRunExecutionOwnershipInput): Promise<WorkflowAgentNodeRunRecord>;
29
+ finish(input: FinishWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>;
30
+ cancel(input: CancelWorkflowAgentNodeRunInput): Promise<WorkflowAgentNodeRunRecord>;
31
+ getByNodeRunId(params: {
32
+ projectId: string;
33
+ nodeRunId: string;
34
+ }): Promise<WorkflowAgentNodeRunRecord | null>;
35
+ list(input: ListWorkflowAgentNodeRunsInput): Promise<ListWorkflowAgentNodeRunsResult>;
36
+ }
37
+ export declare class PgWorkflowNodeRunStorage implements WorkflowNodeRunStorage {
38
+ private readonly sql;
39
+ constructor(sql: PgStoreClient);
40
+ start(input: StartWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>;
41
+ finish(input: FinishWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>;
42
+ wait(input: WaitWorkflowNodeRunInput): Promise<WorkflowNodeRunRecord>;
43
+ getById(params: {
44
+ projectId: string;
45
+ id: string;
46
+ }): Promise<WorkflowNodeRunRecord | null>;
47
+ list(input: ListWorkflowNodeRunsInput): Promise<ListWorkflowNodeRunsResult>;
48
+ }
49
+ //# sourceMappingURL=pg-workflow-run-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-workflow-run-storage.d.ts","sourceRoot":"","sources":["../src/pg-workflow-run-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { SQLClient } from "./pg-client";
2
+ type PgRunListTable = "agent_runs" | "pipeline_runs" | "pipeline_step_runs" | "sync_runs" | "webhook_runs" | "workflow_runs" | "workflow_node_runs" | "workflow_agent_node_runs";
3
+ /** Column projection — `sync_runs` needs the derived `checkpoint_present` flag. */
4
+ type PgRunListSelectList = "*" | "*, checkpoint IS NOT NULL AS checkpoint_present";
5
+ type StartedAtExpression = "started_at" | "COALESCE(started_at, created_at)";
6
+ export declare function hasEmptyStatuses(input: {
7
+ readonly statuses?: readonly unknown[];
8
+ }): boolean;
9
+ export declare function appendRunListFilters(whereClauses: string[], params: unknown[], index: number, input: {
10
+ readonly statuses?: readonly string[];
11
+ readonly startedAfter?: Date;
12
+ readonly startedBefore?: Date;
13
+ }, startedAtExpression?: StartedAtExpression): number;
14
+ export declare function queryRunList<TRow>(input: {
15
+ readonly sql: SQLClient;
16
+ readonly tableName: PgRunListTable;
17
+ readonly whereClauses: readonly string[];
18
+ readonly params: readonly unknown[];
19
+ readonly nextIndex: number;
20
+ readonly order?: "asc" | "desc";
21
+ readonly limit?: number;
22
+ readonly offset?: number;
23
+ readonly selectList?: PgRunListSelectList;
24
+ }): Promise<{
25
+ readonly rows: readonly TRow[];
26
+ readonly total: number;
27
+ readonly hasMore: boolean;
28
+ }>;
29
+ export {};
30
+ //# sourceMappingURL=run-list-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-list-query.d.ts","sourceRoot":"","sources":["../src/run-list-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAA;AAE1D,KAAK,cAAc,GACf,YAAY,GACZ,eAAe,GACf,oBAAoB,GACpB,WAAW,GACX,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,0BAA0B,CAAA;AAE9B,mFAAmF;AACnF,KAAK,mBAAmB,GAAG,GAAG,GAAG,iDAAiD,CAAA;AAClF,KAAK,mBAAmB,GAAG,YAAY,GAAG,kCAAkC,CAAA;AAE5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAAG,OAAO,CAE3F;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,OAAO,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IACL,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAA;CAC9B,EACD,mBAAmB,GAAE,mBAAkC,GACtD,MAAM,CAwBR;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;IAC9C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAA;CAC1C,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAyCjG"}
@@ -0,0 +1,16 @@
1
+ /** The SQLSTATE / system error code carried by a thrown database or connection error. */
2
+ export declare function pgErrorCode(error: unknown): string | undefined;
3
+ /** True when the error is a PostgreSQL unique-constraint violation (SQLSTATE 23505). */
4
+ export declare function isUniqueViolation(error: unknown): boolean;
5
+ /**
6
+ * True when the error is a transient transaction-rollback conflict that is safe to retry by
7
+ * replaying the transaction — a serialization failure (SQLSTATE 40001) or a deadlock (40P01).
8
+ * See {@link RETRYABLE_TRANSACTION_CONFLICT_CODES}.
9
+ */
10
+ export declare function isRetryableTransactionConflict(error: unknown): boolean;
11
+ /**
12
+ * True when the error originates from the connection layer (porsager connection codes, or a
13
+ * Node socket failure surfaced as an `AggregateError`) rather than from a SQL statement.
14
+ */
15
+ export declare function isConnectionError(error: unknown): boolean;
16
+ //# sourceMappingURL=storage-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-errors.d.ts","sourceRoot":"","sources":["../src/storage-errors.ts"],"names":[],"mappings":"AAgCA,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQ9D;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGtE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASzD"}
@@ -0,0 +1,10 @@
1
+ import type { SQL, SQLClient } from "./pg-client";
2
+ export type PgStoreClient = SQL | SQLClient;
3
+ export interface RunPgTransactionOptions {
4
+ /** Open the transaction at `SERIALIZABLE`; omit for the server default (`READ COMMITTED`). */
5
+ readonly isolation?: "serializable";
6
+ }
7
+ export declare function runPgTransaction<T>(sql: PgStoreClient, run: (tx: SQLClient) => Promise<T>, options?: RunPgTransactionOptions): Promise<T>;
8
+ export declare function authLockKey(kind: string, ...parts: readonly string[]): string;
9
+ export declare function lockAdvisoryKeys(sql: SQLClient, keys: readonly string[]): Promise<void>;
10
+ //# sourceMappingURL=transactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,SAAS,CAAA;AAE3C,MAAM,WAAW,uBAAuB;IACtC,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;CACpC;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE7E;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7F"}
@@ -0,0 +1,5 @@
1
+ // Written by scripts/build-package.ts, and published on purpose.
2
+ // Bun applies the nearest tsconfig paths map to every import it resolves, node_modules
3
+ // included. An empty map here keeps a consumer's aliases from sending a module in this
4
+ // directory back into a second copy of its own source.
5
+ { "compilerOptions": { "paths": {} } }
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@sixb/pg",
3
+ "version": "0.0.1",
4
+ "description": "PostgreSQL storage provider for Sixb",
5
+ "keywords": [
6
+ "sixb",
7
+ "bun",
8
+ "storage",
9
+ "postgres",
10
+ "postgresql"
11
+ ],
12
+ "homepage": "https://sixb.ai",
13
+ "bugs": {
14
+ "url": "https://github.com/sixb-ai/sixb/issues"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/sixb-ai/sixb.git",
19
+ "directory": "storage/pg"
20
+ },
21
+ "author": "Sixb contributors",
22
+ "type": "module",
23
+ "main": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "bun": "./src/index.ts",
29
+ "import": "./dist/index.js",
30
+ "default": "./dist/index.js"
31
+ }
32
+ },
33
+ "scripts": {
34
+ "build": "bun ../../scripts/build-package.ts",
35
+ "typecheck": "tsc --noEmit",
36
+ "test:e2e": "bun test --preload ./tests/setup.ts ./tests/*.e2e.ts",
37
+ "prepack": "bun run build"
38
+ },
39
+ "dependencies": {
40
+ "@sixb/core": "0.0.1",
41
+ "postgres": "^3.4.5"
42
+ },
43
+ "devDependencies": {
44
+ "@types/bun": "latest",
45
+ "typescript": "^5.7.0"
46
+ },
47
+ "license": "MIT",
48
+ "engines": {
49
+ "bun": ">=1.3.0"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public"
53
+ },
54
+ "files": [
55
+ "dist",
56
+ "src",
57
+ "README.md",
58
+ "LICENSE"
59
+ ]
60
+ }
@@ -0,0 +1,26 @@
1
+ import type { AgentStorage } from "@sixb/core/storage"
2
+ import type { PgStoreClient } from "../transactions"
3
+ import { PgAgentMessageStore } from "./messages"
4
+ import { PgAgentRunStore } from "./runs"
5
+ import { PgAgentThreadStore } from "./threads"
6
+
7
+ export interface PgAgentStorageOptions {
8
+ readonly sql: PgStoreClient
9
+ }
10
+
11
+ /**
12
+ * PostgreSQL-backed agent persistence: thread / run / message sub-stores sharing one connection.
13
+ * Cross-table writes (reserve + finish touch the thread anchor, append bumps thread stats) run
14
+ * inside `runPgTransaction` with `SELECT ... FOR UPDATE` row locks for single-flight safety.
15
+ */
16
+ export class PgAgentStorage implements AgentStorage {
17
+ readonly threads: PgAgentThreadStore
18
+ readonly runs: PgAgentRunStore
19
+ readonly messages: PgAgentMessageStore
20
+
21
+ constructor(options: PgAgentStorageOptions) {
22
+ this.threads = new PgAgentThreadStore(options.sql)
23
+ this.runs = new PgAgentRunStore(options.sql)
24
+ this.messages = new PgAgentMessageStore(options.sql)
25
+ }
26
+ }
@@ -0,0 +1,5 @@
1
+ export type { PgAgentStorageOptions } from "./agent-storage"
2
+ export { PgAgentStorage } from "./agent-storage"
3
+ export { PgAgentMessageStore } from "./messages"
4
+ export { PgAgentRunStore } from "./runs"
5
+ export { PgAgentThreadStore } from "./threads"