@arbium/enterprise-agent-connect 0.1.1 → 0.1.2-dev.9022f22

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 (231) hide show
  1. package/README.md +164 -12
  2. package/dist/connectors/dell-techdirect/index.d.ts +8 -0
  3. package/dist/connectors/dell-techdirect/tools.d.ts +2 -0
  4. package/dist/connectors/dell-techdirect/vendor.d.ts +6 -0
  5. package/dist/connectors/dynamics-365/connector.json +228 -0
  6. package/dist/connectors/dynamics-365/index.d.ts +8 -0
  7. package/dist/connectors/dynamics-365/index.js +10 -0
  8. package/dist/connectors/dynamics-365/index.js.map +1 -0
  9. package/dist/connectors/dynamics-365/tools.d.ts +35 -0
  10. package/dist/connectors/dynamics-365/tools.js +806 -0
  11. package/dist/connectors/dynamics-365/tools.js.map +1 -0
  12. package/dist/connectors/dynamics-365/vendor.d.ts +9 -0
  13. package/dist/connectors/dynamics-365/vendor.js +110 -0
  14. package/dist/connectors/dynamics-365/vendor.js.map +1 -0
  15. package/dist/connectors/entra/index.d.ts +2 -0
  16. package/dist/connectors/entra/tools.d.ts +14 -0
  17. package/dist/connectors/fedex/index.d.ts +8 -0
  18. package/dist/connectors/fedex/tools.d.ts +3 -0
  19. package/dist/connectors/fedex/vendor.d.ts +7 -0
  20. package/dist/connectors/gong/connector.json +127 -0
  21. package/dist/connectors/gong/index.d.ts +8 -0
  22. package/dist/connectors/gong/index.js +7 -0
  23. package/dist/connectors/gong/index.js.map +1 -0
  24. package/dist/connectors/gong/tools.d.ts +8 -0
  25. package/dist/connectors/gong/tools.js +424 -0
  26. package/dist/connectors/gong/tools.js.map +1 -0
  27. package/dist/connectors/gong/vendor.d.ts +4 -0
  28. package/dist/connectors/gong/vendor.js +89 -0
  29. package/dist/connectors/gong/vendor.js.map +1 -0
  30. package/dist/connectors/http/index.d.ts +34 -0
  31. package/dist/connectors/http/index.js +154 -64
  32. package/dist/connectors/http/index.js.map +1 -1
  33. package/dist/connectors/intune/index.d.ts +2 -0
  34. package/dist/connectors/intune/tools.d.ts +12 -0
  35. package/dist/connectors/jamf/connector.json +182 -0
  36. package/dist/connectors/jamf/index.d.ts +8 -0
  37. package/dist/connectors/jamf/index.js +7 -0
  38. package/dist/connectors/jamf/index.js.map +1 -0
  39. package/dist/connectors/jamf/tools.d.ts +7 -0
  40. package/dist/connectors/jamf/tools.js +659 -0
  41. package/dist/connectors/jamf/tools.js.map +1 -0
  42. package/dist/connectors/jamf/vendor.d.ts +5 -0
  43. package/dist/connectors/jamf/vendor.js +70 -0
  44. package/dist/connectors/jamf/vendor.js.map +1 -0
  45. package/dist/connectors/jira/connector.json +144 -1
  46. package/dist/connectors/jira/index.d.ts +8 -0
  47. package/dist/connectors/jira/jql.d.ts +4 -0
  48. package/dist/connectors/jira/tools.d.ts +3 -0
  49. package/dist/connectors/jira/vendor.d.ts +3 -0
  50. package/dist/connectors/jira/vendor.js +8 -2
  51. package/dist/connectors/jira/vendor.js.map +1 -1
  52. package/dist/connectors/microsoft/client.d.ts +66 -0
  53. package/dist/connectors/microsoft/client.js +26 -8
  54. package/dist/connectors/microsoft/client.js.map +1 -1
  55. package/dist/connectors/netsuite/connector.json +317 -0
  56. package/dist/connectors/netsuite/index.d.ts +8 -0
  57. package/dist/connectors/netsuite/index.js +7 -0
  58. package/dist/connectors/netsuite/index.js.map +1 -0
  59. package/dist/connectors/netsuite/tools.d.ts +24 -0
  60. package/dist/connectors/netsuite/tools.js +447 -0
  61. package/dist/connectors/netsuite/tools.js.map +1 -0
  62. package/dist/connectors/netsuite/vendor.d.ts +26 -0
  63. package/dist/connectors/netsuite/vendor.js +247 -0
  64. package/dist/connectors/netsuite/vendor.js.map +1 -0
  65. package/dist/connectors/odata/index.d.ts +33 -0
  66. package/dist/connectors/odata/index.js +460 -0
  67. package/dist/connectors/odata/index.js.map +1 -0
  68. package/dist/connectors/okta/connector.json +194 -0
  69. package/dist/connectors/okta/index.d.ts +8 -0
  70. package/dist/connectors/okta/index.js +7 -0
  71. package/dist/connectors/okta/index.js.map +1 -0
  72. package/dist/connectors/okta/tools.d.ts +6 -0
  73. package/dist/connectors/okta/tools.js +429 -0
  74. package/dist/connectors/okta/tools.js.map +1 -0
  75. package/dist/connectors/okta/vendor.d.ts +14 -0
  76. package/dist/connectors/okta/vendor.js +204 -0
  77. package/dist/connectors/okta/vendor.js.map +1 -0
  78. package/dist/connectors/outlook-calendar/index.d.ts +2 -0
  79. package/dist/connectors/outlook-calendar/tools.d.ts +65 -0
  80. package/dist/connectors/outlook-mail/index.d.ts +2 -0
  81. package/dist/connectors/outlook-mail/tools.d.ts +8 -0
  82. package/dist/connectors/salesforce/index.d.ts +8 -0
  83. package/dist/connectors/salesforce/soql.d.ts +3 -0
  84. package/dist/connectors/salesforce/tools.d.ts +9 -0
  85. package/dist/connectors/salesforce/vendor.d.ts +3 -0
  86. package/dist/connectors/salesforce/vendor.js +9 -3
  87. package/dist/connectors/salesforce/vendor.js.map +1 -1
  88. package/dist/connectors/sap-s4hana/connector.json +264 -0
  89. package/dist/connectors/sap-s4hana/index.d.ts +8 -0
  90. package/dist/connectors/sap-s4hana/index.js +7 -0
  91. package/dist/connectors/sap-s4hana/index.js.map +1 -0
  92. package/dist/connectors/sap-s4hana/tools.d.ts +4 -0
  93. package/dist/connectors/sap-s4hana/tools.js +761 -0
  94. package/dist/connectors/sap-s4hana/tools.js.map +1 -0
  95. package/dist/connectors/sap-s4hana/vendor.d.ts +5 -0
  96. package/dist/connectors/sap-s4hana/vendor.js +176 -0
  97. package/dist/connectors/sap-s4hana/vendor.js.map +1 -0
  98. package/dist/connectors/servicenow/connector.json +228 -0
  99. package/dist/connectors/servicenow/index.d.ts +8 -0
  100. package/dist/connectors/servicenow/index.js +7 -0
  101. package/dist/connectors/servicenow/index.js.map +1 -0
  102. package/dist/connectors/servicenow/tools.d.ts +4 -0
  103. package/dist/connectors/servicenow/tools.js +884 -0
  104. package/dist/connectors/servicenow/tools.js.map +1 -0
  105. package/dist/connectors/servicenow/vendor.d.ts +3 -0
  106. package/dist/connectors/servicenow/vendor.js +106 -0
  107. package/dist/connectors/servicenow/vendor.js.map +1 -0
  108. package/dist/connectors/sharepoint-files/excel.d.ts +16 -0
  109. package/dist/connectors/sharepoint-files/index.d.ts +8 -0
  110. package/dist/connectors/sharepoint-files/index.js.map +1 -1
  111. package/dist/connectors/sharepoint-files/tools.d.ts +52 -0
  112. package/dist/connectors/sharepoint-files/vendor.d.ts +11 -0
  113. package/dist/connectors/slack/connector.json +148 -0
  114. package/dist/connectors/slack/index.d.ts +8 -0
  115. package/dist/connectors/slack/index.js +7 -0
  116. package/dist/connectors/slack/index.js.map +1 -0
  117. package/dist/connectors/slack/tools.d.ts +3 -0
  118. package/dist/connectors/slack/tools.js +355 -0
  119. package/dist/connectors/slack/tools.js.map +1 -0
  120. package/dist/connectors/slack/vendor.d.ts +17 -0
  121. package/dist/connectors/slack/vendor.js +189 -0
  122. package/dist/connectors/slack/vendor.js.map +1 -0
  123. package/dist/connectors/soap/index.d.ts +16 -0
  124. package/dist/connectors/soap/index.js +248 -0
  125. package/dist/connectors/soap/index.js.map +1 -0
  126. package/dist/connectors/soap/xml.d.ts +12 -0
  127. package/dist/connectors/soap/xml.js +126 -0
  128. package/dist/connectors/soap/xml.js.map +1 -0
  129. package/dist/connectors/sql/engines.d.ts +58 -0
  130. package/dist/connectors/sql/engines.js +292 -0
  131. package/dist/connectors/sql/engines.js.map +1 -0
  132. package/dist/connectors/sql/index.d.ts +16 -0
  133. package/dist/connectors/sql/index.js +214 -0
  134. package/dist/connectors/sql/index.js.map +1 -0
  135. package/dist/connectors/teams/index.d.ts +2 -0
  136. package/dist/connectors/teams/tools.d.ts +7 -0
  137. package/dist/connectors/teams/tools.js +3 -2
  138. package/dist/connectors/teams/tools.js.map +1 -1
  139. package/dist/connectors/workday/connector.json +188 -0
  140. package/dist/connectors/workday/index.d.ts +8 -0
  141. package/dist/connectors/workday/index.js +7 -0
  142. package/dist/connectors/workday/index.js.map +1 -0
  143. package/dist/connectors/workday/tools.d.ts +33 -0
  144. package/dist/connectors/workday/tools.js +410 -0
  145. package/dist/connectors/workday/tools.js.map +1 -0
  146. package/dist/connectors/workday/vendor.d.ts +18 -0
  147. package/dist/connectors/workday/vendor.js +199 -0
  148. package/dist/connectors/workday/vendor.js.map +1 -0
  149. package/dist/packages/connector-kit/src/branding.d.ts +57 -0
  150. package/dist/packages/connector-kit/src/certificate.d.ts +19 -0
  151. package/dist/packages/connector-kit/src/common.d.ts +36 -0
  152. package/dist/packages/connector-kit/src/common.js +4 -1
  153. package/dist/packages/connector-kit/src/common.js.map +1 -1
  154. package/dist/packages/connector-kit/src/connector.d.ts +1356 -0
  155. package/dist/packages/connector-kit/src/connector.js +634 -53
  156. package/dist/packages/connector-kit/src/connector.js.map +1 -1
  157. package/dist/packages/connector-kit/src/fetch.d.ts +6 -0
  158. package/dist/packages/connector-kit/src/fetch.js +44 -0
  159. package/dist/packages/connector-kit/src/fetch.js.map +1 -0
  160. package/dist/packages/connector-kit/src/index.d.ts +5 -0
  161. package/dist/packages/connector-kit/src/index.js +6 -0
  162. package/dist/packages/connector-kit/src/index.js.map +1 -0
  163. package/dist/packages/connector-kit/src/oauth.d.ts +15 -0
  164. package/dist/packages/connector-kit/src/oauth.js +25 -6
  165. package/dist/packages/connector-kit/src/oauth.js.map +1 -1
  166. package/dist/packages/connector-kit/src/types.d.ts +87 -0
  167. package/dist/packages/connector-kit/src/types.js.map +1 -1
  168. package/dist/packages/server/migrations/0007_app_events.sql +110 -0
  169. package/dist/packages/server/migrations/rollback/to-legacy.sql +3 -0
  170. package/dist/packages/server/src/api.d.ts +3730 -0
  171. package/dist/packages/server/src/api.js +137 -1
  172. package/dist/packages/server/src/api.js.map +1 -1
  173. package/dist/packages/server/src/app.d.ts +23 -0
  174. package/dist/packages/server/src/app.js +24 -1
  175. package/dist/packages/server/src/app.js.map +1 -1
  176. package/dist/packages/server/src/builtin.d.ts +5 -0
  177. package/dist/packages/server/src/builtin.js +18 -0
  178. package/dist/packages/server/src/builtin.js.map +1 -1
  179. package/dist/packages/server/src/consent.d.ts +27 -0
  180. package/dist/packages/server/src/events/admin.d.ts +156 -0
  181. package/dist/packages/server/src/events/admin.js +255 -0
  182. package/dist/packages/server/src/events/admin.js.map +1 -0
  183. package/dist/packages/server/src/events/deliver.d.ts +43 -0
  184. package/dist/packages/server/src/events/deliver.js +129 -0
  185. package/dist/packages/server/src/events/deliver.js.map +1 -0
  186. package/dist/packages/server/src/events/runtime.d.ts +28 -0
  187. package/dist/packages/server/src/events/runtime.js +400 -0
  188. package/dist/packages/server/src/events/runtime.js.map +1 -0
  189. package/dist/packages/server/src/events/store.d.ts +172 -0
  190. package/dist/packages/server/src/events/store.js +275 -0
  191. package/dist/packages/server/src/events/store.js.map +1 -0
  192. package/dist/packages/server/src/index.d.ts +40 -0
  193. package/dist/packages/server/src/index.js +68 -11
  194. package/dist/packages/server/src/index.js.map +1 -1
  195. package/dist/packages/server/src/migrate.d.ts +11 -0
  196. package/dist/packages/server/src/openapi.d.ts +4 -0
  197. package/dist/packages/server/src/openapi.js +2 -2
  198. package/dist/packages/server/src/openapi.js.map +1 -1
  199. package/dist/packages/server/src/queue.d.ts +10 -0
  200. package/dist/packages/server/src/queue.js +45 -0
  201. package/dist/packages/server/src/queue.js.map +1 -0
  202. package/dist/packages/server/src/secrets.d.ts +19 -0
  203. package/dist/packages/server/src/server.d.ts +1 -0
  204. package/dist/packages/server/src/server.js +14 -1
  205. package/dist/packages/server/src/server.js.map +1 -1
  206. package/dist/packages/server/src/service.d.ts +767 -0
  207. package/dist/packages/server/src/service.js +19 -3
  208. package/dist/packages/server/src/service.js.map +1 -1
  209. package/dist/packages/server/src/store.d.ts +157 -0
  210. package/dist/packages/server/src/store.js +4 -0
  211. package/dist/packages/server/src/store.js.map +1 -1
  212. package/dist/packages/server/src/teams/activity.d.ts +123 -0
  213. package/dist/packages/server/src/teams/activity.js +6 -5
  214. package/dist/packages/server/src/teams/activity.js.map +1 -1
  215. package/dist/packages/server/src/teams/admin.d.ts +335 -0
  216. package/dist/packages/server/src/teams/admin.js +1 -1
  217. package/dist/packages/server/src/teams/admin.js.map +1 -1
  218. package/dist/packages/server/src/teams/approval.d.ts +57 -0
  219. package/dist/packages/server/src/teams/bot.d.ts +25 -0
  220. package/dist/packages/server/src/teams/claude.d.ts +46 -0
  221. package/dist/packages/server/src/teams/jwt.d.ts +17 -0
  222. package/dist/packages/server/src/teams/package.d.ts +79 -0
  223. package/dist/packages/server/src/teams/provision.d.ts +84 -0
  224. package/dist/packages/server/src/teams/runner.d.ts +80 -0
  225. package/dist/packages/server/src/teams/runner.js +50 -6
  226. package/dist/packages/server/src/teams/runner.js.map +1 -1
  227. package/dist/packages/server/src/teams/runtime.d.ts +91 -0
  228. package/dist/packages/server/src/teams/runtime.js +25 -47
  229. package/dist/packages/server/src/teams/runtime.js.map +1 -1
  230. package/dist/packages/server/src/teams/store.d.ts +233 -0
  231. package/package.json +28 -2
@@ -0,0 +1,292 @@
1
+ import { createRequire } from "node:module";
2
+ import postgres from "postgres";
3
+ export const DEFAULT_PORT = { postgres: 5432, sqlserver: 1433, mysql: 3306, oracle: 1521 };
4
+ // The module imported for each engine; its package is the part before any "/".
5
+ export const DRIVER = { sqlserver: "mssql", mysql: "mysql2/promise", oracle: "oracledb" };
6
+ const POOL_MAX = 3;
7
+ const IDLE_SECONDS = 60;
8
+ const CONNECT_SECONDS = 10;
9
+ /** Splits on :name, skipping quoted text, comments and casts (::type). */
10
+ export function parseStatement(sql) {
11
+ const parts = [];
12
+ const names = [];
13
+ let start = 0;
14
+ let i = 0;
15
+ while (i < sql.length) {
16
+ const c = sql[i];
17
+ const close = c === "'" || c === '"' || c === "`"
18
+ ? c
19
+ : sql.startsWith("--", i)
20
+ ? "\n"
21
+ : sql.startsWith("/*", i)
22
+ ? "*/"
23
+ : null;
24
+ if (close) {
25
+ const end = sql.indexOf(close, i + (close.length === 2 ? 2 : 1));
26
+ i = end < 0 ? sql.length : end + close.length;
27
+ continue;
28
+ }
29
+ const name = c === ":" && sql[i - 1] !== ":" && /^:([a-z][a-z0-9_]*)/.exec(sql.slice(i));
30
+ if (name) {
31
+ parts.push(sql.slice(start, i));
32
+ names.push(name[1]);
33
+ i += name[0].length;
34
+ start = i;
35
+ continue;
36
+ }
37
+ i++;
38
+ }
39
+ parts.push(sql.slice(start));
40
+ return { parts, names };
41
+ }
42
+ const render = (s, placeholder) => s.parts.reduce((out, part, i) => out + placeholder(s.names[i - 1], i - 1) + part);
43
+ /** Throws when the engine's driver is not installed, naming what to install. */
44
+ export function assertDriver(engine, app, resolve = createRequire(import.meta.url).resolve) {
45
+ if (engine === "postgres")
46
+ return;
47
+ try {
48
+ resolve(DRIVER[engine]);
49
+ }
50
+ catch {
51
+ throw new Error(`${app} reaches ${engine}, whose driver is not installed: npm install ${DRIVER[engine].split("/")[0]}`);
52
+ }
53
+ }
54
+ const load = (name) => import(name).then((m) => m.default ?? m);
55
+ export async function openEngine(engine, target, driver) {
56
+ if (engine === "postgres")
57
+ return pgEngine(target, driver ?? postgres);
58
+ const loaded = driver ?? (await load(DRIVER[engine]));
59
+ if (engine === "sqlserver")
60
+ return sqlServerEngine(target, loaded);
61
+ if (engine === "mysql")
62
+ return mySqlEngine(target, loaded);
63
+ return oracleEngine(target, loaded);
64
+ }
65
+ // Rolls a read back, whatever it did.
66
+ class Rollback extends Error {
67
+ }
68
+ export function pgEngine(t, pg) {
69
+ const sql = pg({
70
+ host: t.host,
71
+ port: t.port,
72
+ database: t.database,
73
+ username: t.user,
74
+ password: t.password,
75
+ ssl: t.tls === "off" ? false : { rejectUnauthorized: t.tls === "verify", servername: t.host },
76
+ max: POOL_MAX,
77
+ idle_timeout: IDLE_SECONDS,
78
+ connect_timeout: CONNECT_SECONDS,
79
+ onnotice: () => { },
80
+ });
81
+ return {
82
+ async run({ statement, values, write, maxRows, timeoutMs, check }) {
83
+ const order = [...new Set(statement.names)];
84
+ const text = render(statement, (name) => `$${order.indexOf(name) + 1}`);
85
+ const params = order.map((n) => values[n]);
86
+ let out;
87
+ await sql
88
+ .begin(write ? "read write" : "read only", async (tx) => {
89
+ await tx.unsafe(`set local statement_timeout = ${Math.floor(timeoutMs)}`);
90
+ if (write) {
91
+ const result = await tx.unsafe(text, params);
92
+ out = { rows: [...result], rowsAffected: result.count ?? null };
93
+ }
94
+ else {
95
+ let rows = [];
96
+ // A cursor stops the server after maxRows + 1 rows.
97
+ for await (const batch of tx.unsafe(text, params).cursor(maxRows + 1)) {
98
+ rows = batch;
99
+ break;
100
+ }
101
+ out = { rows, rowsAffected: null };
102
+ }
103
+ check(out);
104
+ if (!write)
105
+ throw new Rollback();
106
+ })
107
+ .catch((error) => {
108
+ if (!(error instanceof Rollback))
109
+ throw error;
110
+ });
111
+ return out;
112
+ },
113
+ async version() {
114
+ const [row] = await sql `select version() as v`;
115
+ return String(row.v);
116
+ },
117
+ close: () => sql.end(),
118
+ };
119
+ }
120
+ export function sqlServerEngine(t, mssql) {
121
+ const pool = new mssql.ConnectionPool({
122
+ server: t.host,
123
+ port: t.port,
124
+ database: t.database,
125
+ user: t.user,
126
+ password: t.password,
127
+ pool: { max: POOL_MAX, min: 0, idleTimeoutMillis: IDLE_SECONDS * 1000 },
128
+ connectionTimeout: CONNECT_SECONDS * 1000,
129
+ options: {
130
+ encrypt: t.tls !== "off",
131
+ trustServerCertificate: t.tls === "insecure",
132
+ readOnlyIntent: t.readOnly,
133
+ },
134
+ });
135
+ // Connected on first use, and again on the next call after a failed attempt.
136
+ let connecting = null;
137
+ const connected = () => (connecting ??= pool.connect().catch((error) => {
138
+ connecting = null;
139
+ throw error;
140
+ }));
141
+ return {
142
+ async run({ statement, values, write, maxRows, timeoutMs, check }) {
143
+ await connected();
144
+ const tx = new mssql.Transaction(pool);
145
+ await tx.begin();
146
+ try {
147
+ const request = new mssql.Request(tx, { requestTimeout: timeoutMs });
148
+ for (const name of new Set(statement.names))
149
+ request.input(name, values[name]);
150
+ // ROWCOUNT stops a read after maxRows + 1 rows; a write is never cut short.
151
+ const text = render(statement, (name) => `@${name}`);
152
+ const result = await request.query(write ? text : `set rowcount ${maxRows + 1};\n${text}`);
153
+ const out = {
154
+ rows: (result.recordset ?? []),
155
+ rowsAffected: write ? result.rowsAffected.reduce((a, b) => a + b, 0) : null,
156
+ };
157
+ check(out);
158
+ await (write ? tx.commit() : tx.rollback());
159
+ return out;
160
+ }
161
+ catch (error) {
162
+ // The server may already have rolled it back (e.g. after a timeout).
163
+ await tx.rollback().catch(() => { });
164
+ throw error;
165
+ }
166
+ },
167
+ async version() {
168
+ await connected();
169
+ const result = await pool.request().query("select @@version as v");
170
+ return String(result.recordset[0].v).split("\n")[0];
171
+ },
172
+ close: () => pool.close(),
173
+ };
174
+ }
175
+ export function mySqlEngine(t, mysql) {
176
+ const pool = mysql.createPool({
177
+ host: t.host,
178
+ port: t.port,
179
+ database: t.database,
180
+ user: t.user,
181
+ password: t.password,
182
+ ssl: t.tls === "off" ? undefined : { rejectUnauthorized: t.tls === "verify" },
183
+ connectionLimit: POOL_MAX,
184
+ maxIdle: 0,
185
+ idleTimeout: IDLE_SECONDS * 1000,
186
+ connectTimeout: CONNECT_SECONDS * 1000,
187
+ supportBigNumbers: true,
188
+ bigNumberStrings: true,
189
+ });
190
+ return {
191
+ async run({ statement, values, write, maxRows, timeoutMs, check }) {
192
+ const conn = await pool.getConnection();
193
+ try {
194
+ // Session settings outlive the call on a pooled connection, so each call sets its own.
195
+ await conn.query(`set session sql_select_limit = ${write ? "default" : maxRows + 1}`);
196
+ await conn.query(`start transaction ${write ? "read write" : "read only"}`);
197
+ try {
198
+ // execute: a server-side prepared statement, the values never in the text.
199
+ const [result] = await conn.execute({ sql: render(statement, () => "?"), timeout: timeoutMs }, statement.names.map((n) => values[n] ?? null));
200
+ const out = Array.isArray(result)
201
+ ? { rows: result, rowsAffected: null }
202
+ : { rows: [], rowsAffected: write ? result.affectedRows : null };
203
+ check(out);
204
+ await conn.query(write ? "commit" : "rollback");
205
+ return out;
206
+ }
207
+ catch (error) {
208
+ await conn.query("rollback").catch(() => { });
209
+ throw error;
210
+ }
211
+ }
212
+ finally {
213
+ conn.release();
214
+ }
215
+ },
216
+ async version() {
217
+ const [rows] = await pool.query("select version() as v");
218
+ return String(rows[0].v);
219
+ },
220
+ close: () => pool.end(),
221
+ };
222
+ }
223
+ export function oracleEngine(t, oracledb) {
224
+ const options = {
225
+ user: t.user,
226
+ password: t.password,
227
+ connectString: `${t.tls === "verify" ? "tcps://" : ""}${t.host}:${t.port}/${t.database}`,
228
+ sslServerDNMatch: t.tls === "verify",
229
+ poolMin: 0,
230
+ poolMax: POOL_MAX,
231
+ poolIncrement: 1,
232
+ poolTimeout: IDLE_SECONDS,
233
+ connectTimeout: CONNECT_SECONDS,
234
+ };
235
+ let pool = null;
236
+ // Large text and binary columns as values, not LOB handles.
237
+ const fetchTypeHandler = (meta) => meta.dbType === oracledb.DB_TYPE_CLOB || meta.dbType === oracledb.DB_TYPE_NCLOB
238
+ ? { type: oracledb.STRING }
239
+ : meta.dbType === oracledb.DB_TYPE_BLOB
240
+ ? { type: oracledb.BUFFER }
241
+ : undefined;
242
+ const connection = async () => {
243
+ pool ??= oracledb.createPool(options).catch((error) => {
244
+ pool = null;
245
+ throw error;
246
+ });
247
+ return (await pool).getConnection();
248
+ };
249
+ return {
250
+ async run({ statement, values, write, maxRows, timeoutMs, check }) {
251
+ const conn = await connection();
252
+ try {
253
+ conn.callTimeout = timeoutMs;
254
+ if (!write)
255
+ await conn.execute("set transaction read only");
256
+ const binds = Object.fromEntries([...new Set(statement.names)].map((n) => [n, values[n]]));
257
+ const result = await conn.execute(render(statement, (name) => `:${name}`), binds, {
258
+ outFormat: oracledb.OUT_FORMAT_OBJECT,
259
+ maxRows: write ? 0 : maxRows + 1,
260
+ autoCommit: false,
261
+ fetchTypeHandler,
262
+ });
263
+ const out = {
264
+ rows: (result.rows ?? []),
265
+ rowsAffected: write ? (result.rowsAffected ?? 0) : null,
266
+ };
267
+ check(out);
268
+ await (write ? conn.commit() : conn.rollback());
269
+ return out;
270
+ }
271
+ catch (error) {
272
+ await conn.rollback().catch(() => { });
273
+ throw error;
274
+ }
275
+ finally {
276
+ await conn.close();
277
+ }
278
+ },
279
+ async version() {
280
+ const conn = await connection();
281
+ try {
282
+ await conn.execute("select 1 from dual");
283
+ return `Oracle ${conn.oracleServerVersionString}`;
284
+ }
285
+ finally {
286
+ await conn.close();
287
+ }
288
+ },
289
+ close: async () => (await pool)?.close(0),
290
+ };
291
+ }
292
+ //# sourceMappingURL=engines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engines.js","sourceRoot":"","sources":["../../../connectors/sql/engines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAwChC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3F,+EAA+E;AAC/E,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAW,CAAC;AACnG,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,KAAK,GACT,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;YACjC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;oBACvB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,CAAC;QACf,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpB,KAAK,GAAG,CAAC,CAAC;YACV,SAAS;QACX,CAAC;QACD,CAAC,EAAE,CAAC;IACN,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,CAAY,EAAE,WAAoD,EAAE,EAAE,CACpF,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAEpF,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAC1B,MAAwB,EACxB,GAAW,EACX,UAAoC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO;IAE1E,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO;IAClC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,YAAY,MAAM,gDAAgD,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CACvG,CAAC;IACJ,CAAC;AACH,CAAC;AAID,MAAM,IAAI,GAAG,CAAC,IAAY,EAAmB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;AAEzF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAwB,EACxB,MAAc,EACd,MAAe;IAEf,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,sCAAsC;AACtC,MAAM,QAAS,SAAQ,KAAK;CAAG;AAE/B,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,EAAU;IAC5C,MAAM,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,IAAI;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE;QAC7F,GAAG,EAAE,QAAQ;QACb,YAAY,EAAE,YAAY;QAC1B,eAAe,EAAE,eAAe;QAChC,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;KACnB,CAAC,CAAC;IACH,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;YAC/D,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,GAAiD,CAAC;YACtD,MAAM,GAAG;iBACN,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;gBAC9D,MAAM,EAAE,CAAC,MAAM,CAAC,iCAAiC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC1E,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC7C,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,GAAS,EAAE,CAAC;oBACpB,oDAAoD;oBACpD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;wBACtE,IAAI,GAAG,KAAK,CAAC;wBACb,MAAM;oBACR,CAAC;oBACD,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;gBACrC,CAAC;gBACD,KAAK,CAAC,GAAG,CAAC,CAAC;gBACX,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,QAAQ,EAAE,CAAC;YACnC,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC;oBAAE,MAAM,KAAK,CAAC;YAChD,CAAC,CAAC,CAAC;YACL,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAA,uBAAuB,CAAC;YAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,KAAa;IACtD,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC;QACpC,MAAM,EAAE,CAAC,CAAC,IAAI;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,iBAAiB,EAAE,YAAY,GAAG,IAAI,EAAE;QACvE,iBAAiB,EAAE,eAAe,GAAG,IAAI;QACzC,OAAO,EAAE;YACP,OAAO,EAAE,CAAC,CAAC,GAAG,KAAK,KAAK;YACxB,sBAAsB,EAAE,CAAC,CAAC,GAAG,KAAK,UAAU;YAC5C,cAAc,EAAE,CAAC,CAAC,QAAQ;SAC3B;KACF,CAAC,CAAC;IACH,6EAA6E;IAC7E,IAAI,UAAU,GAA4B,IAAI,CAAC;IAC/C,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACtD,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC,CAAC;IACN,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;YAC/D,MAAM,SAAS,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;gBACrE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/E,4EAA4E;gBAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC3F,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAS;oBACtC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAE,MAAM,CAAC,YAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;iBAC1F,CAAC;gBACF,KAAK,CAAC,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5C,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qEAAqE;gBACrE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACpC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,SAAS,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACnE,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,KAAa;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;QAC7E,eAAe,EAAE,QAAQ;QACzB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,YAAY,GAAG,IAAI;QAChC,cAAc,EAAE,eAAe,GAAG,IAAI;QACtC,iBAAiB,EAAE,IAAI;QACvB,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;YAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,uFAAuF;gBACvF,MAAM,IAAI,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtF,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC5E,IAAI,CAAC;oBACH,2EAA2E;oBAC3E,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EACzD,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAC9C,CAAC;oBACF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;wBAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,MAAc,EAAE,YAAY,EAAE,IAAI,EAAE;wBAC9C,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAE,MAAM,CAAC,YAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/E,KAAK,CAAC,GAAG,CAAC,CAAC;oBACX,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;oBAChD,OAAO,GAAG,CAAC;gBACb,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAC7C,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,QAAgB;IACtD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,aAAa,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;QACxF,gBAAgB,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ;QACpC,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,QAAQ;QACjB,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,YAAY;QACzB,cAAc,EAAE,eAAe;KAChC,CAAC;IACF,IAAI,IAAI,GAA2B,IAAI,CAAC;IACxC,4DAA4D;IAC5D,MAAM,gBAAgB,GAAG,CAAC,IAAyB,EAAE,EAAE,CACrD,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,aAAa;QAC7E,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE;QAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,YAAY;YACrC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE;YAC3B,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC7D,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,IAAK,CAAC,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC,CAAC;IACF,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;YAC/D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;gBAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EACvC,KAAK,EACL;oBACE,SAAS,EAAE,QAAQ,CAAC,iBAAiB;oBACrC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;oBAChC,UAAU,EAAE,KAAK;oBACjB,gBAAgB;iBACjB,CACF,CAAC;gBACF,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAS;oBACjC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;iBACxD,CAAC;gBACF,KAAK,CAAC,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChD,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACtC,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBACzC,OAAO,UAAU,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACpD,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC1C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type Toolset } from "../../packages/connector-kit/src/common.js";
2
+ import type { Connector, SqlApp } from "../../packages/connector-kit/src/connector.js";
3
+ import { type Vendor } from "../../packages/connector-kit/src/types.js";
4
+ import { openEngine } from "./engines.js";
5
+ export declare const MAX_ANSWER_BYTES: number;
6
+ export declare function sqlVendor(connector: Connector, open?: typeof openEngine): Vendor;
7
+ export declare function sqlTools(app: SqlApp): Toolset;
8
+ /** Binds to any connector with an `sql` block; createAgentConnect uses it for those. */
9
+ declare const _default: {
10
+ id: string;
11
+ create: ({ connector }: import("../../packages/connector-kit/src/connector.js").ConnectorContext) => {
12
+ vendor: Vendor;
13
+ toolset: Toolset;
14
+ };
15
+ };
16
+ export default _default;
@@ -0,0 +1,214 @@
1
+ import { createHash } from "node:crypto";
2
+ import { z } from "zod";
3
+ import { audited, Denied, json, listLimit, VendorFailed, } from "../../packages/connector-kit/src/common.js";
4
+ import { ConnectError, } from "../../packages/connector-kit/src/types.js";
5
+ import { assertDriver, DEFAULT_PORT, openEngine, parseStatement, } from "./engines.js";
6
+ // The generic module behind every connector.json with an `sql` block: an app reached as a
7
+ // database. Each tool runs the one statement its definition holds, with the agent's values
8
+ // bound as params.
9
+ export const MAX_ANSWER_BYTES = 1024 * 1024;
10
+ const message = (error) => (error instanceof Error ? error.message : String(error));
11
+ export function sqlVendor(connector, open = openEngine) {
12
+ const app = connector.sql;
13
+ const port = app.port ?? DEFAULT_PORT[app.engine];
14
+ const tools = new Map(app.tools.map((t) => [t.name, { ...t, statement: parseStatement(t.sql) }]));
15
+ // ponytail: a pool per credential, never closed; an old one only idles at 0 connections.
16
+ const pools = new Map();
17
+ function engine(c, write) {
18
+ const target = {
19
+ host: app.host,
20
+ port,
21
+ database: app.database,
22
+ user: c.config[app.auth.user],
23
+ password: c.secret[app.auth.password],
24
+ tls: app.tls,
25
+ // Only SQL Server opens a read-only connection; elsewhere one pool serves both.
26
+ readOnly: app.engine === "sqlserver" && !write,
27
+ };
28
+ const key = createHash("sha256")
29
+ .update(JSON.stringify([target.user, target.password, target.readOnly]))
30
+ .digest("hex");
31
+ let pool = pools.get(key);
32
+ if (!pool) {
33
+ pool = open(app.engine, target);
34
+ pools.set(key, pool);
35
+ pool.catch(() => pools.delete(key));
36
+ }
37
+ return pool;
38
+ }
39
+ return {
40
+ async connect(fields) {
41
+ const config = {
42
+ host: `${app.host}:${port}/${app.database}`,
43
+ };
44
+ const secret = {};
45
+ for (const f of connector.fields) {
46
+ const value = fields[f.id]?.trim() ?? "";
47
+ if (!value && f.optional)
48
+ continue;
49
+ if (!value)
50
+ throw new ConnectError(`Enter ${f.label}`);
51
+ (f.secret ? secret : config)[f.id] = value;
52
+ }
53
+ return { config, secret, accountLabel: config[connector.accountKey] ?? config.host };
54
+ },
55
+ async call(c, request) {
56
+ const tool = tools.get(request.path.slice(1));
57
+ if (!tool)
58
+ throw new Error(`${connector.id} has no query ${request.path}`);
59
+ const { values, answerLimits } = request.body;
60
+ try {
61
+ const out = await (await engine(c, tool.write)).run({
62
+ statement: tool.statement,
63
+ values,
64
+ write: tool.write,
65
+ maxRows: app.maxRows,
66
+ timeoutMs: app.timeoutSeconds * 1000,
67
+ check: ({ rows, rowsAffected }) => {
68
+ if (!answerLimits.length)
69
+ return;
70
+ const undone = tool.write ? "; nothing was changed" : "";
71
+ // A change returning fewer rows than it made cannot be checked: refused.
72
+ if (rows.length < (rowsAffected ?? 0))
73
+ throw new Denied(`This change cannot be checked against this agent's limits${undone}`);
74
+ for (const a of answerLimits)
75
+ if (!rows.every((row) => within(row, a.column, a.values)))
76
+ throw new Denied(`The answer's ${a.column} is outside this agent's limits${undone}`);
77
+ },
78
+ });
79
+ return { status: 200, data: out };
80
+ }
81
+ catch (error) {
82
+ if (error instanceof Denied)
83
+ throw error;
84
+ throw new ConnectError(`The database refused the call: ${message(error)}`);
85
+ }
86
+ },
87
+ checks: {
88
+ // A trivial query proving the address, the sign-in and the database name.
89
+ async database(c) {
90
+ try {
91
+ return { values: [await (await engine(c, false)).version()] };
92
+ }
93
+ catch (error) {
94
+ throw new ConnectError(`Could not reach the database: ${message(error)}`);
95
+ }
96
+ },
97
+ },
98
+ };
99
+ }
100
+ function within(row, column, values) {
101
+ if (!Object.hasOwn(row, column))
102
+ return false;
103
+ const v = row[column];
104
+ return ((typeof v === "string" || typeof v === "number" || typeof v === "bigint") &&
105
+ values.includes(String(v)));
106
+ }
107
+ // Values JSON can carry: dates as ISO text, bytes as base64, big integers as text.
108
+ function plain(v) {
109
+ if (v instanceof Date)
110
+ return v.toISOString();
111
+ if (Buffer.isBuffer(v) || v instanceof Uint8Array)
112
+ return Buffer.from(v).toString("base64");
113
+ if (typeof v === "bigint")
114
+ return v.toString();
115
+ return v;
116
+ }
117
+ // The rows that fit in maxRows and MAX_ANSWER_BYTES, and whether any were left out.
118
+ function trim(rows, maxRows) {
119
+ const out = [];
120
+ let size = 0;
121
+ for (const row of rows.slice(0, maxRows)) {
122
+ const clean = Object.fromEntries(Object.entries(row).map(([k, v]) => [k, plain(v)]));
123
+ size += Buffer.byteLength(JSON.stringify(clean));
124
+ if (size > MAX_ANSWER_BYTES)
125
+ break;
126
+ out.push(clean);
127
+ }
128
+ return { rows: out, truncated: out.length < rows.length };
129
+ }
130
+ const zodType = {
131
+ string: z.string(),
132
+ number: z.number(),
133
+ integer: z.number().int(),
134
+ boolean: z.boolean(),
135
+ };
136
+ export function sqlTools(app) {
137
+ return {
138
+ names: app.tools.map((t) => t.name),
139
+ register(server, ctx, allowed) {
140
+ for (const tool of app.tools) {
141
+ if (!allowed.has(tool.name))
142
+ continue;
143
+ const shape = Object.fromEntries(Object.entries(tool.params).map(([name, p]) => {
144
+ const type = zodType[p.type].describe(p.description);
145
+ return [name, p.required ? type : type.optional()];
146
+ }));
147
+ server.registerTool(tool.name, {
148
+ description: tool.description,
149
+ inputSchema: z.object(shape).strict(),
150
+ annotations: {
151
+ readOnlyHint: !tool.write,
152
+ destructiveHint: tool.destructive,
153
+ openWorldHint: false,
154
+ },
155
+ }, (args) => audited(ctx, tool.name, JSON.stringify(args).slice(0, 300), async (mark) => {
156
+ for (const [name, p] of Object.entries(tool.params)) {
157
+ const allowedValues = p.limit ? listLimit(ctx.limits, p.limit) : null;
158
+ if (!allowedValues)
159
+ continue;
160
+ // Left out, an optional param would be null, which often means "all of them".
161
+ if (args[name] === undefined)
162
+ throw new Denied(`${name} is required: this agent is limited to some values`);
163
+ if (!allowedValues.includes(String(args[name])))
164
+ throw new Denied(`${name} ${String(args[name])} is outside this agent's limits`);
165
+ }
166
+ const call = {
167
+ values: Object.fromEntries(Object.keys(tool.params).map((name) => [name, args[name] ?? null])),
168
+ answerLimits: tool.answerLimits.flatMap((a) => {
169
+ const values = listLimit(ctx.limits, a.limit);
170
+ return values ? [{ column: a.column, values }] : [];
171
+ }),
172
+ };
173
+ let res;
174
+ try {
175
+ res = await ctx.call({ method: "POST", path: `/${tool.name}`, body: call });
176
+ }
177
+ catch (error) {
178
+ if (error instanceof ConnectError)
179
+ throw new VendorFailed(502, error.message);
180
+ throw error;
181
+ }
182
+ mark(res.status);
183
+ const { rows, rowsAffected } = res.data;
184
+ const answer = trim(rows, app.maxRows);
185
+ return json({
186
+ ...(tool.write ? { rows_affected: rowsAffected } : {}),
187
+ ...answer,
188
+ ...(answer.truncated
189
+ ? { note: `More rows matched than the ${answer.rows.length} returned` }
190
+ : {}),
191
+ });
192
+ }));
193
+ }
194
+ },
195
+ };
196
+ }
197
+ /** Binds to any connector with an `sql` block; createAgentConnect uses it for those. */
198
+ export default {
199
+ id: "sql",
200
+ create: ({ connector }) => {
201
+ const app = connector.sql;
202
+ assertDriver(app.engine, connector.id);
203
+ if (app.engine === "oracle" && app.tls === "insecure")
204
+ throw new Error(`${connector.id}: Oracle checks the server's certificate whenever TLS is on: use verify or off`);
205
+ for (const tool of app.tools) {
206
+ const used = new Set(parseStatement(tool.sql).names);
207
+ const declared = Object.keys(tool.params);
208
+ if (used.size !== declared.length || declared.some((n) => !used.has(n)))
209
+ throw new Error(`${connector.id}: ${tool.name} declares params ${declared.join(", ") || "none"} but its sql uses ${[...used].map((n) => `:${n}`).join(", ") || "none"}`);
210
+ }
211
+ return { vendor: sqlVendor(connector), toolset: sqlTools(app) };
212
+ },
213
+ };
214
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,YAAY,GAEb,MAAM,4CAA4C,CAAC;AAMpD,OAAO,EACL,YAAY,GAGb,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,GAGf,MAAM,cAAc,CAAC;AAEtB,0FAA0F;AAC1F,2FAA2F;AAC3F,mBAAmB;AAEnB,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;AAS5C,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAE7F,MAAM,UAAU,SAAS,CAAC,SAAoB,EAAE,IAAI,GAAG,UAAU;IAC/D,MAAM,GAAG,GAAG,SAAS,CAAC,GAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,yFAAyF;IACzF,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEjD,SAAS,MAAM,CAAC,CAAmB,EAAE,KAAc;QACjD,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI;YACJ,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,gFAAgF;YAChF,QAAQ,EAAE,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,KAAK;SAC/C,CAAC;QACF,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;aAC7B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;aACvE,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,MAAM,MAAM,GAA2B;gBACrC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE;aAC5C,CAAC;YACF,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ;oBAAE,SAAS;gBACnC,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YAC7C,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACvF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC,EAAE,iBAAiB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3E,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAe,CAAC;YACzD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,CAChB,MAAM,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAC5B,CAAC,GAAG,CAAC;oBACJ,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,MAAM;oBACN,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI;oBACpC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE;wBAChC,IAAI,CAAC,YAAY,CAAC,MAAM;4BAAE,OAAO;wBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzD,yEAAyE;wBACzE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC;4BACnC,MAAM,IAAI,MAAM,CACd,4DAA4D,MAAM,EAAE,CACrE,CAAC;wBACJ,KAAK,MAAM,CAAC,IAAI,YAAY;4BAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gCACvD,MAAM,IAAI,MAAM,CACd,gBAAgB,CAAC,CAAC,MAAM,kCAAkC,MAAM,EAAE,CACnE,CAAC;oBACR,CAAC;iBACF,CAAC,CAAC;gBACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,MAAM;oBAAE,MAAM,KAAK,CAAC;gBACzC,MAAM,IAAI,YAAY,CAAC,kCAAkC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,MAAM,EAAE;YACN,0EAA0E;YAC1E,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACd,IAAI,CAAC;oBACH,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAChE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,YAAY,CAAC,iCAAiC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,GAA4B,EAAE,MAAc,EAAE,MAAgB;IAC5E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,CACL,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;QACzE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,KAAK,CAAC,CAAU;IACvB,IAAI,CAAC,YAAY,IAAI;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,UAAU;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5F,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,oFAAoF;AACpF,SAAS,IAAI,CAAC,IAAU,EAAE,OAAe;IACvC,MAAM,GAAG,GAAS,EAAE,CAAC;IACrB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,IAAI,IAAI,GAAG,gBAAgB;YAAE,MAAM;QACnC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,OAAO,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO;YAC3B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;oBACrD,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACrD,CAAC,CAAC,CACH,CAAC;gBACF,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,IAAI,EACT;oBACE,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;oBACrC,WAAW,EAAE;wBACX,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK;wBACzB,eAAe,EAAE,IAAI,CAAC,WAAW;wBACjC,aAAa,EAAE,KAAK;qBACrB;iBACF,EACD,CAAC,IAA6B,EAAE,EAAE,CAChC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACzE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBACpD,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACtE,IAAI,CAAC,aAAa;4BAAE,SAAS;wBAC7B,8EAA8E;wBAC9E,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;4BAC1B,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,oDAAoD,CAAC,CAAC;wBAChF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;4BAC7C,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,iCAAiC,CAAC,CAAC;oBACrF,CAAC;oBACD,MAAM,IAAI,GAAY;wBACpB,MAAM,EAAE,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CACnE;wBACD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;4BAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;4BAC9C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtD,CAAC,CAAC;qBACH,CAAC;oBACF,IAAI,GAAG,CAAC;oBACR,IAAI,CAAC;wBACH,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9E,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,KAAK,YAAY,YAAY;4BAAE,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC9E,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACjB,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,IAGlC,CAAC;oBACF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;oBACvC,OAAO,IAAI,CAAC;wBACV,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtD,GAAG,MAAM;wBACT,GAAG,CAAC,MAAM,CAAC,SAAS;4BAClB,CAAC,CAAC,EAAE,IAAI,EAAE,8BAA8B,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,EAAE;4BACvE,CAAC,CAAC,EAAE,CAAC;qBACR,CAAC,CAAC;gBACL,CAAC,CAAC,CACL,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,eAAe;IACb,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAI,CAAC;QAC3B,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,UAAU;YACnD,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,CAAC,EAAE,gFAAgF,CAChG,CAAC;QACJ,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,qBAAqB,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CACxJ,CAAC;QACN,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAClE,CAAC;CACwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("../microsoft/client.js").BuiltinModule;
2
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { type TeamsAccess } from "../../packages/server/src/teams/runtime.js";
2
+ import { type ToolContext, type Toolset } from "../../packages/connector-kit/src/common.js";
3
+ /** The service gives Teams tools the agent's own bot beside the usual context. */
4
+ export type TeamsToolContext = ToolContext & {
5
+ teams?: TeamsAccess;
6
+ };
7
+ export declare const teamsTools: Toolset;
@@ -12,9 +12,10 @@ const CHAT = /^(19:[A-Za-z0-9_.-]+@(thread\.v2|unq\.gbl\.spaces)|a:[A-Za-z0-9_.-
12
12
  const MESSAGE = /^\d{1,20}$/;
13
13
  const MAX_TEXT = 20_000;
14
14
  function access(ctx) {
15
- if (!ctx.teams)
15
+ const { teams } = ctx;
16
+ if (!teams)
16
17
  throw new Error("Teams tools need the agent's bot");
17
- return ctx.teams;
18
+ return teams;
18
19
  }
19
20
  const teamsLimit = (ctx) => listLimit(ctx.limits, "teams");
20
21
  const channelsLimit = (ctx) => listLimit(ctx.limits, "channels");