callman-core 1.43.0 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/ai/prompts/diagram.d.ts.map +1 -1
  2. package/dist/ai/prompts/diagram.js +10 -5
  3. package/dist/ai/prompts/diagram.js.map +1 -1
  4. package/dist/ai/prompts/scenarioNodeReference.d.ts.map +1 -1
  5. package/dist/ai/prompts/scenarioNodeReference.js +17 -6
  6. package/dist/ai/prompts/scenarioNodeReference.js.map +1 -1
  7. package/dist/diagram/geometry.d.ts +1 -0
  8. package/dist/diagram/geometry.d.ts.map +1 -1
  9. package/dist/diagram/geometry.js +15 -0
  10. package/dist/diagram/geometry.js.map +1 -1
  11. package/dist/diagram/ops.d.ts.map +1 -1
  12. package/dist/diagram/ops.js +25 -12
  13. package/dist/diagram/ops.js.map +1 -1
  14. package/dist/diagram/routing/batch.d.ts +2 -0
  15. package/dist/diagram/routing/batch.d.ts.map +1 -1
  16. package/dist/diagram/routing/batch.js +4 -4
  17. package/dist/diagram/routing/batch.js.map +1 -1
  18. package/dist/diagram/routing/index.d.ts +1 -0
  19. package/dist/diagram/routing/index.d.ts.map +1 -1
  20. package/dist/diagram/routing/index.js +1 -0
  21. package/dist/diagram/routing/index.js.map +1 -1
  22. package/dist/diagram/routing/ports.d.ts +14 -0
  23. package/dist/diagram/routing/ports.d.ts.map +1 -0
  24. package/dist/diagram/routing/ports.js +130 -0
  25. package/dist/diagram/routing/ports.js.map +1 -0
  26. package/dist/diagram/routing/sides.d.ts.map +1 -1
  27. package/dist/diagram/routing/sides.js +4 -3
  28. package/dist/diagram/routing/sides.js.map +1 -1
  29. package/dist/diagram/routing/types.d.ts +1 -0
  30. package/dist/diagram/routing/types.d.ts.map +1 -1
  31. package/dist/diagram/routing/types.js.map +1 -1
  32. package/dist/host/connections.d.ts.map +1 -1
  33. package/dist/host/connections.js +7 -0
  34. package/dist/host/connections.js.map +1 -1
  35. package/dist/host/db/db-query-reference.d.ts.map +1 -1
  36. package/dist/host/db/db-query-reference.js +22 -5
  37. package/dist/host/db/db-query-reference.js.map +1 -1
  38. package/dist/host/db/dbBinds.d.ts +20 -0
  39. package/dist/host/db/dbBinds.d.ts.map +1 -0
  40. package/dist/host/db/dbBinds.js +61 -0
  41. package/dist/host/db/dbBinds.js.map +1 -0
  42. package/dist/host/db/dbSessionManager.d.ts +13 -0
  43. package/dist/host/db/dbSessionManager.d.ts.map +1 -0
  44. package/dist/host/db/dbSessionManager.js +165 -0
  45. package/dist/host/db/dbSessionManager.js.map +1 -0
  46. package/dist/host/db/introspection/index.d.ts +1 -0
  47. package/dist/host/db/introspection/index.d.ts.map +1 -1
  48. package/dist/host/db/introspection/index.js +1 -0
  49. package/dist/host/db/introspection/index.js.map +1 -1
  50. package/dist/host/db/introspection/routines.d.ts +38 -0
  51. package/dist/host/db/introspection/routines.d.ts.map +1 -0
  52. package/dist/host/db/introspection/routines.js +439 -0
  53. package/dist/host/db/introspection/routines.js.map +1 -0
  54. package/dist/host/db/mssqlAdapter.d.ts +10 -4
  55. package/dist/host/db/mssqlAdapter.d.ts.map +1 -1
  56. package/dist/host/db/mssqlAdapter.js +144 -34
  57. package/dist/host/db/mssqlAdapter.js.map +1 -1
  58. package/dist/host/db/mysqlAdapter.d.ts +10 -4
  59. package/dist/host/db/mysqlAdapter.d.ts.map +1 -1
  60. package/dist/host/db/mysqlAdapter.js +66 -16
  61. package/dist/host/db/mysqlAdapter.js.map +1 -1
  62. package/dist/host/db/oracleAdapter.d.ts +10 -4
  63. package/dist/host/db/oracleAdapter.d.ts.map +1 -1
  64. package/dist/host/db/oracleAdapter.js +301 -28
  65. package/dist/host/db/oracleAdapter.js.map +1 -1
  66. package/dist/host/db/pgClientConfig.d.ts +10 -1
  67. package/dist/host/db/pgClientConfig.d.ts.map +1 -1
  68. package/dist/host/db/pgClientConfig.js +59 -0
  69. package/dist/host/db/pgClientConfig.js.map +1 -1
  70. package/dist/host/db/pgSession.d.ts +11 -0
  71. package/dist/host/db/pgSession.d.ts.map +1 -0
  72. package/dist/host/db/pgSession.js +62 -0
  73. package/dist/host/db/pgSession.js.map +1 -0
  74. package/dist/host/db/pgSessionManager.d.ts +5 -14
  75. package/dist/host/db/pgSessionManager.d.ts.map +1 -1
  76. package/dist/host/db/pgSessionManager.js +9 -161
  77. package/dist/host/db/pgSessionManager.js.map +1 -1
  78. package/dist/host/db/postgresAdapter.d.ts +2 -4
  79. package/dist/host/db/postgresAdapter.d.ts.map +1 -1
  80. package/dist/host/db/postgresAdapter.js +26 -6
  81. package/dist/host/db/postgresAdapter.js.map +1 -1
  82. package/dist/host/db/queryExecutor.d.ts +2 -4
  83. package/dist/host/db/queryExecutor.d.ts.map +1 -1
  84. package/dist/host/db/queryExecutor.js +35 -23
  85. package/dist/host/db/queryExecutor.js.map +1 -1
  86. package/dist/host/db/sqlState.d.ts +1 -0
  87. package/dist/host/db/sqlState.d.ts.map +1 -1
  88. package/dist/host/db/sqlState.js +20 -0
  89. package/dist/host/db/sqlState.js.map +1 -1
  90. package/dist/host/db/types.d.ts +38 -0
  91. package/dist/host/db/types.d.ts.map +1 -1
  92. package/dist/host/index.d.ts +5 -3
  93. package/dist/host/index.d.ts.map +1 -1
  94. package/dist/host/index.js +8 -6
  95. package/dist/host/index.js.map +1 -1
  96. package/dist/scenario-runner/adapters/db-executor.d.ts +17 -3
  97. package/dist/scenario-runner/adapters/db-executor.d.ts.map +1 -1
  98. package/dist/scenario-runner/adapters/db-executor.js +57 -22
  99. package/dist/scenario-runner/adapters/db-executor.js.map +1 -1
  100. package/dist/scenario-runner/adapters/index.d.ts +1 -1
  101. package/dist/scenario-runner/adapters/index.d.ts.map +1 -1
  102. package/dist/scenario-runner/adapters/index.js +1 -1
  103. package/dist/scenario-runner/adapters/index.js.map +1 -1
  104. package/dist/scenario-runner/adapters/types.d.ts +7 -0
  105. package/dist/scenario-runner/adapters/types.d.ts.map +1 -1
  106. package/dist/scenario-runner/index.d.ts +1 -1
  107. package/dist/scenario-runner/index.d.ts.map +1 -1
  108. package/dist/scenario-runner/index.js +1 -1
  109. package/dist/scenario-runner/index.js.map +1 -1
  110. package/dist/scenario-runner/nodePolicy.d.ts.map +1 -1
  111. package/dist/scenario-runner/nodePolicy.js +3 -0
  112. package/dist/scenario-runner/nodePolicy.js.map +1 -1
  113. package/dist/scenario-runner/runScenario.d.ts +4 -2
  114. package/dist/scenario-runner/runScenario.d.ts.map +1 -1
  115. package/dist/scenario-runner/runScenario.js +47 -12
  116. package/dist/scenario-runner/runScenario.js.map +1 -1
  117. package/dist/scenario-runner/runScenarioWithDataset.d.ts.map +1 -1
  118. package/dist/scenario-runner/runScenarioWithDataset.js +65 -1
  119. package/dist/scenario-runner/runScenarioWithDataset.js.map +1 -1
  120. package/dist/scenario-runner/types.d.ts +21 -1
  121. package/dist/scenario-runner/types.d.ts.map +1 -1
  122. package/dist/script/features/db.d.ts +7 -0
  123. package/dist/script/features/db.d.ts.map +1 -1
  124. package/dist/script/features/db.js +8 -1
  125. package/dist/script/features/db.js.map +1 -1
  126. package/dist/script/pm-api-declarations.d.ts.map +1 -1
  127. package/dist/script/pm-api-declarations.js +24 -0
  128. package/dist/script/pm-api-declarations.js.map +1 -1
  129. package/dist/script/pm-api-metadata.js +1 -1
  130. package/dist/script/pm-api-metadata.js.map +1 -1
  131. package/dist/script/types.d.ts +7 -0
  132. package/dist/script/types.d.ts.map +1 -1
  133. package/dist-cjs/ai/prompts/diagram.js +10 -5
  134. package/dist-cjs/ai/prompts/diagram.js.map +1 -1
  135. package/dist-cjs/ai/prompts/scenarioNodeReference.js +17 -6
  136. package/dist-cjs/ai/prompts/scenarioNodeReference.js.map +1 -1
  137. package/dist-cjs/diagram/geometry.js +17 -1
  138. package/dist-cjs/diagram/geometry.js.map +1 -1
  139. package/dist-cjs/diagram/ops.js +25 -12
  140. package/dist-cjs/diagram/ops.js.map +1 -1
  141. package/dist-cjs/diagram/routing/batch.js +4 -4
  142. package/dist-cjs/diagram/routing/batch.js.map +1 -1
  143. package/dist-cjs/diagram/routing/index.js +1 -0
  144. package/dist-cjs/diagram/routing/index.js.map +1 -1
  145. package/dist-cjs/diagram/routing/ports.js +135 -0
  146. package/dist-cjs/diagram/routing/ports.js.map +1 -0
  147. package/dist-cjs/diagram/routing/sides.js +3 -2
  148. package/dist-cjs/diagram/routing/sides.js.map +1 -1
  149. package/dist-cjs/diagram/routing/types.js.map +1 -1
  150. package/dist-cjs/host/connections.js +7 -0
  151. package/dist-cjs/host/connections.js.map +1 -1
  152. package/dist-cjs/host/db/db-query-reference.js +22 -5
  153. package/dist-cjs/host/db/db-query-reference.js.map +1 -1
  154. package/dist-cjs/host/db/dbBinds.js +71 -0
  155. package/dist-cjs/host/db/dbBinds.js.map +1 -0
  156. package/dist-cjs/host/db/dbSessionManager.js +172 -0
  157. package/dist-cjs/host/db/dbSessionManager.js.map +1 -0
  158. package/dist-cjs/host/db/introspection/index.js +4 -1
  159. package/dist-cjs/host/db/introspection/index.js.map +1 -1
  160. package/dist-cjs/host/db/introspection/routines.js +444 -0
  161. package/dist-cjs/host/db/introspection/routines.js.map +1 -0
  162. package/dist-cjs/host/db/mssqlAdapter.js +146 -35
  163. package/dist-cjs/host/db/mssqlAdapter.js.map +1 -1
  164. package/dist-cjs/host/db/mysqlAdapter.js +68 -17
  165. package/dist-cjs/host/db/mysqlAdapter.js.map +1 -1
  166. package/dist-cjs/host/db/oracleAdapter.js +303 -29
  167. package/dist-cjs/host/db/oracleAdapter.js.map +1 -1
  168. package/dist-cjs/host/db/pgClientConfig.js +61 -1
  169. package/dist-cjs/host/db/pgClientConfig.js.map +1 -1
  170. package/dist-cjs/host/db/pgSession.js +67 -0
  171. package/dist-cjs/host/db/pgSession.js.map +1 -0
  172. package/dist-cjs/host/db/pgSessionManager.js +10 -166
  173. package/dist-cjs/host/db/pgSessionManager.js.map +1 -1
  174. package/dist-cjs/host/db/postgresAdapter.js +25 -5
  175. package/dist-cjs/host/db/postgresAdapter.js.map +1 -1
  176. package/dist-cjs/host/db/queryExecutor.js +34 -22
  177. package/dist-cjs/host/db/queryExecutor.js.map +1 -1
  178. package/dist-cjs/host/db/sqlState.js +22 -1
  179. package/dist-cjs/host/db/sqlState.js.map +1 -1
  180. package/dist-cjs/host/index.js +15 -6
  181. package/dist-cjs/host/index.js.map +1 -1
  182. package/dist-cjs/scenario-runner/adapters/db-executor.js +57 -21
  183. package/dist-cjs/scenario-runner/adapters/db-executor.js.map +1 -1
  184. package/dist-cjs/scenario-runner/adapters/index.js +3 -1
  185. package/dist-cjs/scenario-runner/adapters/index.js.map +1 -1
  186. package/dist-cjs/scenario-runner/index.js +2 -1
  187. package/dist-cjs/scenario-runner/index.js.map +1 -1
  188. package/dist-cjs/scenario-runner/nodePolicy.js +3 -0
  189. package/dist-cjs/scenario-runner/nodePolicy.js.map +1 -1
  190. package/dist-cjs/scenario-runner/runScenario.js +49 -13
  191. package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
  192. package/dist-cjs/scenario-runner/runScenarioWithDataset.js +65 -1
  193. package/dist-cjs/scenario-runner/runScenarioWithDataset.js.map +1 -1
  194. package/dist-cjs/script/features/db.js +8 -1
  195. package/dist-cjs/script/features/db.js.map +1 -1
  196. package/dist-cjs/script/pm-api-declarations.js +24 -0
  197. package/dist-cjs/script/pm-api-declarations.js.map +1 -1
  198. package/dist-cjs/script/pm-api-metadata.js +1 -1
  199. package/dist-cjs/script/pm-api-metadata.js.map +1 -1
  200. package/package.json +1 -1
@@ -0,0 +1,62 @@
1
+ // The PostgreSQL side of run-scoped sessions: one live `pg` Client, on which
2
+ // BEGIN, temp tables, GUCs and advisory locks survive between nodes.
3
+ import { loadOptionalModule } from "../lazy.js";
4
+ import { buildPgClientConfig, runPgStatement } from "./pgClientConfig.js";
5
+ const unwrap = (mod) => (mod && mod.default && !mod.Client ? mod.default : mod);
6
+ // Test seam mirroring postgresAdapter's — lets unit tests inject a fake
7
+ // driver without a live server.
8
+ let pgDriverOverride = null;
9
+ export const __setPgSessionDriverForTests = (driver) => {
10
+ pgDriverOverride = driver;
11
+ };
12
+ const loadPgDriver = async () => {
13
+ if (pgDriverOverride)
14
+ return pgDriverOverride;
15
+ try {
16
+ return unwrap(await loadOptionalModule("pg"));
17
+ }
18
+ catch {
19
+ throw new Error("PostgreSQL driver (`pg`) is not installed. Install `pg` to use PostgreSQL sessions.");
20
+ }
21
+ };
22
+ export const openPgSession = async (connection, onLost) => {
23
+ const { Client } = await loadPgDriver();
24
+ const client = new Client(buildPgClientConfig(connection));
25
+ await client.connect();
26
+ // Socket-level errors surface here (killed backend, network drop); the
27
+ // manager marks the session so the next query fails fast with the cause.
28
+ client.on?.("error", (error) => {
29
+ onLost(error instanceof Error ? error.message : "PostgreSQL session connection lost");
30
+ });
31
+ return {
32
+ label: "PostgreSQL",
33
+ exec: async (query, options, inTransaction) => {
34
+ if (!inTransaction)
35
+ return runPgStatement(client, query, options);
36
+ // A failed statement aborts a Postgres transaction. The savepoint keeps
37
+ // the run's transaction alive, so a node that expects an error can be
38
+ // followed by more work and the final ROLLBACK/COMMIT still means it.
39
+ await client.query("SAVEPOINT callman_stmt");
40
+ try {
41
+ const result = await runPgStatement(client, query, options);
42
+ await client.query("RELEASE SAVEPOINT callman_stmt");
43
+ return result;
44
+ }
45
+ catch (error) {
46
+ await client.query("ROLLBACK TO SAVEPOINT callman_stmt").catch(() => undefined);
47
+ throw error;
48
+ }
49
+ },
50
+ begin: async () => {
51
+ await client.query("BEGIN");
52
+ },
53
+ commit: async () => {
54
+ await client.query("COMMIT");
55
+ },
56
+ rollback: async () => {
57
+ await client.query("ROLLBACK");
58
+ },
59
+ close: () => client.end(),
60
+ };
61
+ };
62
+ //# sourceMappingURL=pgSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgSession.js","sourceRoot":"","sources":["../../../src/host/db/pgSession.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,8 @@
1
- import type { DbConnection } from "./types.js";
2
- export type PgSessionTransactionMode = "none" | "rollback" | "commit";
3
- export declare const __setPgSessionDriverForTests: (driver: any | null) => void;
4
- export interface PgSessionExecuteInput {
5
- connection: DbConnection;
6
- runId: string;
7
- transactionMode: PgSessionTransactionMode;
8
- query: string;
9
- params?: unknown[];
10
- }
11
- export declare const executePostgresQueryInSession: (input: PgSessionExecuteInput) => Promise<{
12
- rows: unknown[];
13
- rowCount: number;
14
- }>;
1
+ import { type DbSessionExecuteInput, type DbSessionTransactionMode } from "./dbSessionManager.js";
2
+ export { __setPgSessionDriverForTests } from "./pgSession.js";
3
+ export type PgSessionTransactionMode = DbSessionTransactionMode;
4
+ export type PgSessionExecuteInput = DbSessionExecuteInput;
5
+ export declare const executePostgresQueryInSession: (input: DbSessionExecuteInput) => Promise<import("./types.js").DbStatementResult>;
15
6
  export declare const releasePostgresSessionsForRun: (runId: string, outcome: "commit" | "rollback") => Promise<void>;
16
7
  export declare const closeAllPostgresSessions: () => Promise<void>;
17
8
  export declare const __getPgSessionCountForTests: () => number;
@@ -1 +1 @@
1
- {"version":3,"file":"pgSessionManager.d.ts","sourceRoot":"","sources":["../../../src/host/db/pgSessionManager.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AA0BtE,eAAO,MAAM,4BAA4B,GAAI,QAAQ,GAAG,GAAG,IAAI,KAAG,IAEjE,CAAC;AA4FF,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,YAAY,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,wBAAwB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,6BAA6B,GACxC,OAAO,qBAAqB,KAC3B,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA+B/C,CAAC;AAKF,eAAO,MAAM,6BAA6B,GACxC,OAAO,MAAM,EACb,SAAS,QAAQ,GAAG,UAAU,KAC7B,OAAO,CAAC,IAAI,CAYd,CAAC;AAGF,eAAO,MAAM,wBAAwB,QAAa,OAAO,CAAC,IAAI,CAQ7D,CAAC;AAGF,eAAO,MAAM,2BAA2B,QAAO,MAAuB,CAAC"}
1
+ {"version":3,"file":"pgSessionManager.d.ts","sourceRoot":"","sources":["../../../src/host/db/pgSessionManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,CAAC;AAChE,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAE1D,eAAO,MAAM,6BAA6B,mFAAqB,CAAC;AAChE,eAAO,MAAM,6BAA6B,kEAA0B,CAAC;AACrE,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,2BAA2B,cAA8B,CAAC"}
@@ -1,162 +1,10 @@
1
- // Run-scoped PostgreSQL sessions for scenario db nodes (`useSession`).
2
- //
3
- // One live `pg` Client per (runId, connection identity). All session-joined
4
- // nodes of a run share that client, so `BEGIN`, temp tables, GUCs and
5
- // advisory locks survive between nodes — the foundation of the
6
- // seed → call function → assert → ROLLBACK stored-function testing pattern.
7
- //
8
- // Modeled on callman-backend's kafka-client-pool: lazy open, per-session
9
- // serialization, idle sweeper, explicit shutdown hook. Postgres-only by
10
- // design — other providers reject `useSession` at the host driver.
11
- import { loadOptionalModule } from "../lazy.js";
12
- import { buildPgClientConfig, runPgQuery } from "./pgClientConfig.js";
13
- const IDLE_SWEEP_INTERVAL_MS = 60_000;
14
- const IDLE_SESSION_TTL_MS = 5 * 60_000;
15
- const sessions = new Map();
16
- let sweeper = null;
17
- const unwrap = (mod) => (mod && mod.default && !mod.Client ? mod.default : mod);
18
- // Test seam mirroring postgresAdapter's — lets unit tests inject a fake
19
- // driver without a live server.
20
- let pgDriverOverride = null;
21
- export const __setPgSessionDriverForTests = (driver) => {
22
- pgDriverOverride = driver;
23
- };
24
- const loadPgDriver = async () => {
25
- if (pgDriverOverride)
26
- return pgDriverOverride;
27
- try {
28
- return unwrap(await loadOptionalModule("pg"));
29
- }
30
- catch {
31
- throw new Error("PostgreSQL driver (`pg`) is not installed. Install `pg` to use PostgreSQL sessions.");
32
- }
33
- };
34
- // Connection identity participates in the key so two different connections
35
- // in one run never share a client, even if their `id`s degenerate to the
36
- // same normalized placeholder.
37
- const sessionKey = (runId, connection) => [
38
- runId,
39
- connection.id,
40
- connection.connectionString ?? "",
41
- connection.host,
42
- String(connection.port),
43
- connection.database ?? "",
44
- connection.username,
45
- ].join("::");
46
- const ensureSweeper = () => {
47
- if (sweeper)
48
- return;
49
- sweeper = setInterval(() => {
50
- const now = Date.now();
51
- for (const [key, entry] of sessions) {
52
- if (now - entry.lastUsedAtMs > IDLE_SESSION_TTL_MS) {
53
- sessions.delete(key);
54
- void destroyEntry(entry, "rollback");
55
- }
56
- }
57
- if (sessions.size === 0 && sweeper) {
58
- clearInterval(sweeper);
59
- sweeper = null;
60
- }
61
- }, IDLE_SWEEP_INTERVAL_MS);
62
- // Never keep the host process alive just for the sweeper.
63
- sweeper.unref?.();
64
- };
65
- const destroyEntry = async (entry, outcome) => {
66
- try {
67
- const client = await entry.clientPromise;
68
- if (entry.transactionOpen && !entry.poisoned) {
69
- try {
70
- await client.query(outcome === "commit" ? "COMMIT" : "ROLLBACK");
71
- }
72
- catch {
73
- // The transaction dies with the connection either way.
74
- }
75
- }
76
- try {
77
- await client.end();
78
- }
79
- catch {
80
- // Best-effort teardown.
81
- }
82
- }
83
- catch {
84
- // Client never connected — nothing to tear down.
85
- }
86
- };
87
- const openEntry = (runId, connection) => {
88
- const entry = {
89
- clientPromise: (async () => {
90
- const { Client } = await loadPgDriver();
91
- const client = new Client(buildPgClientConfig(connection));
92
- await client.connect();
93
- // Socket-level errors surface here (killed backend, network drop);
94
- // mark the session so the next query fails fast with the cause.
95
- client.on?.("error", (error) => {
96
- entry.poisoned =
97
- error instanceof Error ? error.message : "PostgreSQL session connection lost";
98
- });
99
- return client;
100
- })(),
101
- chain: Promise.resolve(),
102
- transactionOpen: false,
103
- poisoned: null,
104
- lastUsedAtMs: Date.now(),
105
- runId,
106
- };
107
- return entry;
108
- };
109
- export const executePostgresQueryInSession = async (input) => {
110
- const key = sessionKey(input.runId, input.connection);
111
- let entry = sessions.get(key);
112
- if (!entry) {
113
- entry = openEntry(input.runId, input.connection);
114
- sessions.set(key, entry);
115
- ensureSweeper();
116
- }
117
- const run = entry.chain.then(async () => {
118
- if (entry.poisoned) {
119
- throw new Error(`PostgreSQL session is unusable: ${entry.poisoned}`);
120
- }
121
- const client = await entry.clientPromise;
122
- if (input.transactionMode !== "none" && !entry.transactionOpen) {
123
- await client.query("BEGIN");
124
- entry.transactionOpen = true;
125
- }
126
- return runPgQuery(client, input.query, input.params ?? []);
127
- });
128
- // The chain must survive a failed query (SQL errors are normal in
129
- // expectError flows) — swallow for chaining purposes only.
130
- entry.chain = run.then(() => undefined, () => undefined).then(() => {
131
- entry.lastUsedAtMs = Date.now();
132
- });
133
- return run;
134
- };
135
- // Close every session belonging to `runId` — COMMIT/ROLLBACK per the run
136
- // outcome, then end the client. Queued statements finish (or fail) first
137
- // thanks to the serialization chain.
138
- export const releasePostgresSessionsForRun = async (runId, outcome) => {
139
- const owned = [];
140
- for (const [key, entry] of sessions) {
141
- if (entry.runId === runId)
142
- owned.push([key, entry]);
143
- }
144
- await Promise.all(owned.map(async ([key, entry]) => {
145
- sessions.delete(key);
146
- await entry.chain;
147
- await destroyEntry(entry, outcome);
148
- }));
149
- };
150
- // Shutdown hook for hosts (backend process exit, CLI end, electron quit).
151
- export const closeAllPostgresSessions = async () => {
152
- const all = Array.from(sessions.values());
153
- sessions.clear();
154
- if (sweeper) {
155
- clearInterval(sweeper);
156
- sweeper = null;
157
- }
158
- await Promise.all(all.map((entry) => destroyEntry(entry, "rollback")));
159
- };
160
- // Introspection for tests.
161
- export const __getPgSessionCountForTests = () => sessions.size;
1
+ // The original, Postgres-named surface of run-scoped sessions. Sessions now
2
+ // cover every SQL engine (dbSessionManager); hosts and tests that import these
3
+ // names keep working.
4
+ import { __getDbSessionCountForTests, closeAllDbSessions, executeInDbSession, releaseDbSessionsForRun, } from "./dbSessionManager.js";
5
+ export { __setPgSessionDriverForTests } from "./pgSession.js";
6
+ export const executePostgresQueryInSession = executeInDbSession;
7
+ export const releasePostgresSessionsForRun = releaseDbSessionsForRun;
8
+ export const closeAllPostgresSessions = closeAllDbSessions;
9
+ export const __getPgSessionCountForTests = __getDbSessionCountForTests;
162
10
  //# sourceMappingURL=pgSessionManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pgSessionManager.js","sourceRoot":"","sources":["../../../src/host/db/pgSessionManager.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,4EAA4E;AAC5E,sEAAsE;AACtE,+DAA+D;AAC/D,4EAA4E;AAC5E,EAAE;AACF,yEAAyE;AACzE,wEAAwE;AACxE,mEAAmE;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAiBtE,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,MAAM,mBAAmB,GAAG,CAAC,GAAG,MAAM,CAAC;AAEvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;AACnD,IAAI,OAAO,GAA0C,IAAI,CAAC;AAE1D,MAAM,MAAM,GAAG,CAAC,GAAQ,EAAO,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE1F,wEAAwE;AACxE,gCAAgC;AAChC,IAAI,gBAAgB,GAAQ,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAkB,EAAQ,EAAE;IACvE,gBAAgB,GAAG,MAAM,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,IAAkB,EAAE;IAC5C,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,2EAA2E;AAC3E,yEAAyE;AACzE,+BAA+B;AAC/B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,UAAwB,EAAU,EAAE,CACrE;IACE,KAAK;IACL,UAAU,CAAC,EAAE;IACb,UAAU,CAAC,gBAAgB,IAAI,EAAE;IACjC,UAAU,CAAC,IAAI;IACf,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IACvB,UAAU,CAAC,QAAQ,IAAI,EAAE;IACzB,UAAU,CAAC,QAAQ;CACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEf,MAAM,aAAa,GAAG,GAAS,EAAE;IAC/B,IAAI,OAAO;QAAE,OAAO;IACpB,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACpC,IAAI,GAAG,GAAG,KAAK,CAAC,YAAY,GAAG,mBAAmB,EAAE,CAAC;gBACnD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,KAAK,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC3B,0DAA0D;IACzD,OAAkC,CAAC,KAAK,EAAE,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EACxB,KAAqB,EACrB,OAA8B,EACf,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC;QACzC,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,uDAAuD;YACzD,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,UAAwB,EAAkB,EAAE;IAC5E,MAAM,KAAK,GAAmB;QAC5B,aAAa,EAAE,CAAC,KAAK,IAAI,EAAE;YACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,mEAAmE;YACnE,gEAAgE;YAChE,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAc,EAAE,EAAE;gBACtC,KAAK,CAAC,QAAQ;oBACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC;YAClF,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,EAAE;QACJ,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;QACxB,eAAe,EAAE,KAAK;QACtB,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;QACxB,KAAK;KACN,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAChD,KAA4B,EACoB,EAAE;IAClD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACjD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACtC,IAAI,KAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,KAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,KAAM,CAAC,eAAe,EAAE,CAAC;YAChE,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,kEAAkE;IAClE,2DAA2D;IAC3D,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC,IAAI,CAAC,GAAG,EAAE;QACV,KAAM,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,yEAAyE;AACzE,yEAAyE;AACzE,qCAAqC;AACrC,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAChD,KAAa,EACb,OAA8B,EACf,EAAE;IACjB,MAAM,KAAK,GAAoC,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC/B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC,KAAK,CAAC;QAClB,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,IAAmB,EAAE;IAChE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,IAAI,OAAO,EAAE,CAAC;QACZ,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"pgSessionManager.js","sourceRoot":"","sources":["../../../src/host/db/pgSessionManager.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,sBAAsB;AAEtB,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,GAGxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAK9D,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAC;AAChE,MAAM,CAAC,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAC3D,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAC"}
@@ -1,11 +1,9 @@
1
- import type { DbConnection } from "./types.js";
1
+ import type { DbConnection, DbExecuteOptions, DbStatementResult } from "./types.js";
2
2
  import { type DbQueryTimings } from "./dbTimings.js";
3
3
  export declare const __setPostgresDriverForTests: (driver: any | null) => void;
4
4
  export declare const withPostgresClient: <T>(connection: DbConnection, fn: (client: any) => Promise<T>) => Promise<T>;
5
5
  export declare const testPostgresConnection: (connection: DbConnection) => Promise<void>;
6
- export declare const executePostgresQuery: (connection: DbConnection, query: string, params?: unknown[]) => Promise<{
7
- rows: unknown[];
8
- rowCount: number;
6
+ export declare const executePostgresQuery: (connection: DbConnection, query: string, paramsOrOptions?: unknown[] | DbExecuteOptions) => Promise<DbStatementResult & {
9
7
  timings?: DbQueryTimings;
10
8
  }>;
11
9
  //# sourceMappingURL=postgresAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgresAdapter.d.ts","sourceRoot":"","sources":["../../../src/host/db/postgresAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAcnF,eAAO,MAAM,2BAA2B,GAAI,QAAQ,GAAG,GAAG,IAAI,KAAG,IAEhE,CAAC;AAiBF,eAAO,MAAM,kBAAkB,GAAU,CAAC,EAAG,YAAY,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CASjH,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,YAAY,YAAY,KAAG,OAAO,CAAC,IAAI,CASnF,CAAC;AAqDF,eAAO,MAAM,oBAAoB,GAC/B,YAAY,YAAY,EACxB,OAAO,MAAM,EACb,SAAQ,OAAO,EAAO,KACrB,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,CAoBzE,CAAC"}
1
+ {"version":3,"file":"postgresAdapter.d.ts","sourceRoot":"","sources":["../../../src/host/db/postgresAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpF,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAcnF,eAAO,MAAM,2BAA2B,GAAI,QAAQ,GAAG,GAAG,IAAI,KAAG,IAEhE,CAAC;AAiBF,eAAO,MAAM,kBAAkB,GAAU,CAAC,EAAG,YAAY,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CASjH,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,YAAY,YAAY,KAAG,OAAO,CAAC,IAAI,CASnF,CAAC;AA0EF,eAAO,MAAM,oBAAoB,GAC/B,YAAY,YAAY,EACxB,OAAO,MAAM,EACb,kBAAiB,OAAO,EAAE,GAAG,gBAAqB,KACjD,OAAO,CAAC,iBAAiB,GAAG;IAAE,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,CAuB1D,CAAC"}
@@ -3,7 +3,7 @@
3
3
  // modes) and query execution are shared with the session manager through
4
4
  // pgClientConfig.ts.
5
5
  import { loadOptionalModule } from "../lazy.js";
6
- import { buildPgClientConfig, runPgQuery } from "./pgClientConfig.js";
6
+ import { buildPgClientConfig, runPgStatement } from "./pgClientConfig.js";
7
7
  import { emptyDbTimings, startDbTimer } from "./dbTimings.js";
8
8
  import { acquirePooled, getDbPoolSettings, getOrCreateDbPool, isDbPoolingEnabled, isSessionMutatingStatement, markReleased, } from "./dbPool.js";
9
9
  const unwrap = (mod) => (mod && mod.default && !mod.Client ? mod.default : mod);
@@ -47,8 +47,25 @@ export const testPostgresConnection = async (connection) => {
47
47
  await client.end();
48
48
  }
49
49
  };
50
+ // A cursor only lives inside a transaction, so a one-shot statement that hands
51
+ // one back runs in its own.
52
+ const runPgOnClient = async (client, query, options) => {
53
+ if (!options.binds?.some((bind) => bind.type === "cursor")) {
54
+ return runPgStatement(client, query, options);
55
+ }
56
+ await client.query("BEGIN");
57
+ try {
58
+ const result = await runPgStatement(client, query, options);
59
+ await client.query("COMMIT");
60
+ return result;
61
+ }
62
+ catch (error) {
63
+ await client.query("ROLLBACK").catch(() => undefined);
64
+ throw error;
65
+ }
66
+ };
50
67
  // Pooled path (configureDbPooling): one pg.Pool per connection identity.
51
- const executePostgresQueryPooled = async (connection, query, params) => {
68
+ const executePostgresQueryPooled = async (connection, query, options) => {
52
69
  const settings = getDbPoolSettings();
53
70
  const entry = await getOrCreateDbPool(connection, async () => {
54
71
  const { Pool } = await loadPgDriver();
@@ -76,7 +93,7 @@ const executePostgresQueryPooled = async (connection, query, params) => {
76
93
  let failed = false;
77
94
  const queryTimer = startDbTimer();
78
95
  try {
79
- const result = await runPgQuery(client, query, params);
96
+ const result = await runPgOnClient(client, query, options);
80
97
  timings.queryMs = queryTimer();
81
98
  return { ...result, timings };
82
99
  }
@@ -91,9 +108,12 @@ const executePostgresQueryPooled = async (connection, query, params) => {
91
108
  timings.closeMs = closeTimer();
92
109
  }
93
110
  };
94
- export const executePostgresQuery = async (connection, query, params = []) => {
111
+ export const executePostgresQuery = async (connection, query, paramsOrOptions = []) => {
112
+ const options = Array.isArray(paramsOrOptions)
113
+ ? { params: paramsOrOptions }
114
+ : paramsOrOptions;
95
115
  if (isDbPoolingEnabled()) {
96
- return executePostgresQueryPooled(connection, query, params);
116
+ return executePostgresQueryPooled(connection, query, options);
97
117
  }
98
118
  const { Client } = await loadPgDriver();
99
119
  const timings = emptyDbTimings();
@@ -103,7 +123,7 @@ export const executePostgresQuery = async (connection, query, params = []) => {
103
123
  timings.connectMs = connectTimer();
104
124
  const queryTimer = startDbTimer();
105
125
  try {
106
- const result = await runPgQuery(client, query, params);
126
+ const result = await runPgOnClient(client, query, options);
107
127
  timings.queryMs = queryTimer();
108
128
  return { ...result, timings };
109
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"postgresAdapter.js","sourceRoot":"","sources":["../../../src/host/db/postgresAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgresAdapter.js","sourceRoot":"","sources":["../../../src/host/db/postgresAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { DbQueryTimings } from "./dbTimings.js";
2
- import type { DbConnection, DbConnectionInput, DbConnectionTestResult, DbQueryExecutionResult, ExecuteDbQueryPayload } from "./types.js";
2
+ import type { DbConnection, DbConnectionInput, DbConnectionTestResult, DbExecuteOptions, DbQueryExecutionResult, DbStatementResult, ExecuteDbQueryPayload } from "./types.js";
3
3
  export declare const executeResolvedDbQuery: (input: {
4
4
  connection: DbConnectionInput;
5
5
  resolvedQuery: string;
@@ -8,9 +8,7 @@ export declare const executeResolvedDbQuery: (input: {
8
8
  runId: string;
9
9
  transactionMode: "none" | "rollback" | "commit";
10
10
  };
11
- }) => Promise<{
12
- rows: unknown[];
13
- rowCount: number;
11
+ } & Omit<DbExecuteOptions, "params">) => Promise<DbStatementResult & {
14
12
  timings?: DbQueryTimings;
15
13
  }>;
16
14
  export declare const normalizeConnectionInput: (connectionInput: DbConnectionInput) => DbConnection;
@@ -1 +1 @@
1
- {"version":3,"file":"queryExecutor.d.ts","sourceRoot":"","sources":["../../../src/host/db/queryExecutor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAerD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AA8BpB,eAAO,MAAM,sBAAsB,GAAI,OAAO;IAC5C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAA;KAAE,CAAC;CAC9E,KAAG,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,CAmB1E,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,iBAAiB,iBAAiB,KAAG,YA0B5E,CAAC;AAIH,eAAO,MAAM,gBAAgB,GAC3B,iBAAiB,iBAAiB,KACjC,OAAO,CAAC,sBAAsB,CA8BhC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,qBAAqB,KAC7B,OAAO,CAAC,sBAAsB,CA2EhC,CAAC"}
1
+ {"version":3,"file":"queryExecutor.d.ts","sourceRoot":"","sources":["../../../src/host/db/queryExecutor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAerD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AA6BpB,eAAO,MAAM,sBAAsB,GACjC,OAAO;IACL,UAAU,EAAE,iBAAiB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAA;KAAE,CAAC;CAC9E,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,KACnC,OAAO,CAAC,iBAAiB,GAAG;IAAE,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,CAmB1D,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,iBAAiB,iBAAiB,KAAG,YA0B5E,CAAC;AAIH,eAAO,MAAM,gBAAgB,GAC3B,iBAAiB,iBAAiB,KACjC,OAAO,CAAC,sBAAsB,CA8BhC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,qBAAqB,KAC7B,OAAO,CAAC,sBAAsB,CAkFhC,CAAC"}
@@ -7,23 +7,23 @@ import { executeMongoQuery, parseMongoCommandText, testMongoConnection } from ".
7
7
  import { executeMysqlQuery, testMysqlConnection } from "./mysqlAdapter.js";
8
8
  import { executeOracleQuery, getOracleClientErrorCode, testOracleConnection, } from "./oracleAdapter.js";
9
9
  import { executePostgresQuery, testPostgresConnection } from "./postgresAdapter.js";
10
- import { executePostgresQueryInSession } from "./pgSessionManager.js";
10
+ import { executeInDbSession } from "./dbSessionManager.js";
11
11
  import { describeDbError } from "./dbErrors.js";
12
- import { extractSqlState } from "./sqlState.js";
12
+ import { extractDbErrorCode, extractSqlState } from "./sqlState.js";
13
13
  import { resolveTemplate } from "./templateResolver.js";
14
14
  import { executeMssqlQuery, testMssqlConnection } from "./mssqlAdapter.js";
15
- const executeAgainstConnection = async (connection, resolvedQuery, params = []) => {
15
+ const executeAgainstConnection = async (connection, resolvedQuery, options = {}) => {
16
16
  switch (connection.type) {
17
17
  case "mongo":
18
18
  return executeMongoQuery(connection, await parseMongoCommandText(resolvedQuery));
19
19
  case "postgres":
20
- return executePostgresQuery(connection, resolvedQuery, params);
20
+ return executePostgresQuery(connection, resolvedQuery, options);
21
21
  case "mysql":
22
- return executeMysqlQuery(connection, resolvedQuery, params);
22
+ return executeMysqlQuery(connection, resolvedQuery, options);
23
23
  case "mssql":
24
- return executeMssqlQuery(connection, resolvedQuery, params);
24
+ return executeMssqlQuery(connection, resolvedQuery, options);
25
25
  default:
26
- return executeOracleQuery(connection, resolvedQuery);
26
+ return executeOracleQuery(connection, resolvedQuery, options);
27
27
  }
28
28
  };
29
29
  // Pre-resolved dispatcher: dispatch an ALREADY template-resolved query to the
@@ -31,25 +31,28 @@ const executeAgainstConnection = async (connection, resolvedQuery, params = [])
31
31
  // the scenario / `databaseExecutor` path (core's scenario runner resolves the
32
32
  // template before calling the host), so hosts must not duplicate adapter logic.
33
33
  //
34
- // `session` (additive) routes the query through the run-scoped Postgres
35
- // session instead of a one-shot client — see pgSessionManager. Only Postgres
36
- // supports sessions; other providers fail with an actionable message so a
37
- // `useSession` node never silently runs autocommit.
34
+ // `session` (additive) routes the query through the run-scoped session instead
35
+ // of a one-shot connection — see dbSessionManager. MongoDB has none and fails
36
+ // with an actionable message so a `useSession` node never silently autocommits.
38
37
  export const executeResolvedDbQuery = (input) => {
39
38
  const connection = normalizeConnectionInput(input.connection);
39
+ const options = {
40
+ params: input.params ?? [],
41
+ binds: input.binds,
42
+ captureOutput: input.captureOutput,
43
+ timeoutMs: input.timeoutMs,
44
+ signal: input.signal,
45
+ };
40
46
  if (input.session) {
41
- if (connection.type !== "postgres") {
42
- return Promise.reject(new Error(`Scenario DB sessions are only supported for PostgreSQL connections (got "${connection.type}"). Disable 'Run in scenario transaction' on this node.`));
43
- }
44
- return executePostgresQueryInSession({
47
+ return executeInDbSession({
45
48
  connection,
46
49
  runId: input.session.runId,
47
50
  transactionMode: input.session.transactionMode,
48
51
  query: input.resolvedQuery,
49
- params: input.params ?? [],
52
+ ...options,
50
53
  });
51
54
  }
52
- return executeAgainstConnection(connection, input.resolvedQuery, input.params ?? []);
55
+ return executeAgainstConnection(connection, input.resolvedQuery, options);
53
56
  };
54
57
  export const normalizeConnectionInput = (connectionInput) => ({
55
58
  id: connectionInput.id?.trim() || "runtime-connection",
@@ -136,18 +139,21 @@ export const executeQuery = async (payload) => {
136
139
  }
137
140
  try {
138
141
  const resolvedQuery = resolveTemplate(payload.query, payload.context ?? {});
139
- if (payload.session && connection.type !== "postgres") {
140
- throw new Error(`Scenario DB sessions are only supported for PostgreSQL connections (got "${connection.type}"). Disable 'Run in scenario transaction' on this node.`);
141
- }
142
+ const options = {
143
+ params: payload.params ?? [],
144
+ binds: payload.binds,
145
+ captureOutput: payload.captureOutput,
146
+ timeoutMs: payload.timeoutMs,
147
+ };
142
148
  const result = payload.session
143
- ? await executePostgresQueryInSession({
149
+ ? await executeInDbSession({
144
150
  connection,
145
151
  runId: payload.session.runId,
146
152
  transactionMode: payload.session.transactionMode,
147
153
  query: resolvedQuery,
148
- params: payload.params ?? [],
154
+ ...options,
149
155
  })
150
- : await executeAgainstConnection(connection, resolvedQuery, payload.params ?? []);
156
+ : await executeAgainstConnection(connection, resolvedQuery, options);
151
157
  return {
152
158
  success: true,
153
159
  phase: payload.phase,
@@ -158,11 +164,15 @@ export const executeQuery = async (payload) => {
158
164
  resolvedQuery,
159
165
  rows: result.rows,
160
166
  rowCount: result.rowCount,
167
+ ...(result.out ? { out: result.out } : {}),
168
+ ...(result.output ? { output: result.output } : {}),
169
+ ...(result.resultSets ? { resultSets: result.resultSets } : {}),
161
170
  durationMs: Math.round(performance.now() - startedAt),
162
171
  executedAt: new Date().toISOString(),
163
172
  };
164
173
  }
165
174
  catch (error) {
175
+ const dbOutput = error?.dbOutput;
166
176
  return {
167
177
  success: false,
168
178
  phase: payload.phase,
@@ -179,6 +189,8 @@ export const executeQuery = async (payload) => {
179
189
  executedAt: new Date().toISOString(),
180
190
  error: error instanceof Error ? error.message : String(error),
181
191
  ...(extractSqlState(error) ? { sqlState: extractSqlState(error) } : {}),
192
+ ...(extractDbErrorCode(error) ? { dbErrorCode: extractDbErrorCode(error) } : {}),
193
+ ...(dbOutput ? { output: dbOutput } : {}),
182
194
  ...(getOracleClientErrorCode(error) ? { errorCode: getOracleClientErrorCode(error) } : {}),
183
195
  ...(describeDbError(error) ? { diagnosis: describeDbError(error) ?? undefined } : {}),
184
196
  };
@@ -1 +1 @@
1
- {"version":3,"file":"queryExecutor.js","sourceRoot":"","sources":["../../../src/host/db/queryExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queryExecutor.js","sourceRoot":"","sources":["../../../src/host/db/queryExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare const extractSqlState: (error: unknown) => string | undefined;
2
+ export declare const extractDbErrorCode: (error: unknown) => string | undefined;
2
3
  //# sourceMappingURL=sqlState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlState.d.ts","sourceRoot":"","sources":["../../../src/host/db/sqlState.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAOzD,CAAC"}
1
+ {"version":3,"file":"sqlState.d.ts","sourceRoot":"","sources":["../../../src/host/db/sqlState.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAOzD,CAAC;AAKF,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAmB5D,CAAC"}
@@ -11,4 +11,24 @@ export const extractSqlState = (error) => {
11
11
  ? candidate
12
12
  : undefined;
13
13
  };
14
+ // The engine's own error code, for engines whose errors are not SQLSTATE
15
+ // classified: "ORA-20001", "MSSQL-50000", "ER_SIGNAL_EXCEPTION". `.dbErrorCode`
16
+ // is checked first so hosts can carry it across their own error types.
17
+ export const extractDbErrorCode = (error) => {
18
+ if (!error || typeof error !== "object")
19
+ return undefined;
20
+ const record = error;
21
+ if (typeof record.dbErrorCode === "string" && record.dbErrorCode)
22
+ return record.dbErrorCode;
23
+ if (typeof record.errorNum === "number" && record.errorNum > 0) {
24
+ return `ORA-${String(record.errorNum).padStart(5, "0")}`;
25
+ }
26
+ if (typeof record.number === "number" && record.number > 0)
27
+ return `MSSQL-${record.number}`;
28
+ if (typeof record.code === "string" && /^(ORA-\d+|ER_[A-Z0-9_]+)$/.test(record.code)) {
29
+ return record.code;
30
+ }
31
+ const inMessage = typeof record.message === "string" ? record.message.match(/\bORA-\d{5}\b/) : null;
32
+ return inMessage?.[0];
33
+ };
14
34
  //# sourceMappingURL=sqlState.js.map