@fabric-harness/databricks 0.16.1 → 0.18.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 (77) hide show
  1. package/dist/agent.d.ts +45 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +206 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/ai.d.ts +19 -0
  6. package/dist/ai.d.ts.map +1 -0
  7. package/dist/ai.js +22 -0
  8. package/dist/ai.js.map +1 -0
  9. package/dist/client.d.ts +37 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +110 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/consumption.d.ts +45 -0
  14. package/dist/consumption.d.ts.map +1 -0
  15. package/dist/consumption.js +85 -0
  16. package/dist/consumption.js.map +1 -0
  17. package/dist/cost-budget-actuals.d.ts +27 -0
  18. package/dist/cost-budget-actuals.d.ts.map +1 -0
  19. package/dist/cost-budget-actuals.js +265 -0
  20. package/dist/cost-budget-actuals.js.map +1 -0
  21. package/dist/embeddings.d.ts +18 -0
  22. package/dist/embeddings.d.ts.map +1 -0
  23. package/dist/embeddings.js +24 -0
  24. package/dist/embeddings.js.map +1 -0
  25. package/dist/feature-serving.d.ts +17 -0
  26. package/dist/feature-serving.d.ts.map +1 -0
  27. package/dist/feature-serving.js +29 -0
  28. package/dist/feature-serving.js.map +1 -0
  29. package/dist/genie.d.ts +22 -0
  30. package/dist/genie.d.ts.map +1 -0
  31. package/dist/genie.js +60 -0
  32. package/dist/genie.js.map +1 -0
  33. package/dist/governance.d.ts +66 -0
  34. package/dist/governance.d.ts.map +1 -0
  35. package/dist/governance.js +111 -0
  36. package/dist/governance.js.map +1 -0
  37. package/dist/identity.d.ts +38 -0
  38. package/dist/identity.d.ts.map +1 -0
  39. package/dist/identity.js +56 -0
  40. package/dist/identity.js.map +1 -0
  41. package/dist/index.d.ts +131 -80
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +105 -227
  44. package/dist/index.js.map +1 -1
  45. package/dist/lakebase.d.ts +49 -0
  46. package/dist/lakebase.d.ts.map +1 -0
  47. package/dist/lakebase.js +25 -0
  48. package/dist/lakebase.js.map +1 -0
  49. package/dist/lakeflow.d.ts +28 -0
  50. package/dist/lakeflow.d.ts.map +1 -0
  51. package/dist/lakeflow.js +75 -0
  52. package/dist/lakeflow.js.map +1 -0
  53. package/dist/mock-provider.d.ts +26 -0
  54. package/dist/mock-provider.d.ts.map +1 -0
  55. package/dist/mock-provider.js +66 -0
  56. package/dist/mock-provider.js.map +1 -0
  57. package/dist/model.d.ts +29 -0
  58. package/dist/model.d.ts.map +1 -0
  59. package/dist/model.js +50 -0
  60. package/dist/model.js.map +1 -0
  61. package/dist/sql-exec.d.ts +17 -0
  62. package/dist/sql-exec.d.ts.map +1 -0
  63. package/dist/sql-exec.js +36 -0
  64. package/dist/sql-exec.js.map +1 -0
  65. package/dist/sql-sandbox.d.ts +1 -1
  66. package/dist/sql-sandbox.d.ts.map +1 -1
  67. package/dist/sql-sandbox.js +1 -1
  68. package/dist/sql-sandbox.js.map +1 -1
  69. package/dist/tools.d.ts +71 -0
  70. package/dist/tools.d.ts.map +1 -0
  71. package/dist/tools.js +176 -0
  72. package/dist/tools.js.map +1 -0
  73. package/dist/vector-search.d.ts +24 -0
  74. package/dist/vector-search.d.ts.map +1 -0
  75. package/dist/vector-search.js +63 -0
  76. package/dist/vector-search.js.map +1 -0
  77. package/package.json +14 -2
@@ -0,0 +1,66 @@
1
+ function estimateUsage(messages) {
2
+ const chars = messages.reduce((sum, m) => sum + m.content.length, 0);
3
+ return { totalTokens: Math.ceil(chars / 4) };
4
+ }
5
+ /**
6
+ * A deterministic `ModelProvider` for Databricks agent tests and init templates.
7
+ * Returns structured responses for SQL/table-info tool calls without requiring
8
+ * real Databricks credentials.
9
+ */
10
+ export class MockDatabricksModelProvider {
11
+ name = 'mock-databricks';
12
+ options;
13
+ constructor(options = {}) {
14
+ this.options = options;
15
+ }
16
+ async generate(request) {
17
+ const latest = [...request.messages].reverse().find((m) => m.role === 'user');
18
+ const text = latest?.content ?? '';
19
+ // Check prompt-to-response map first
20
+ if (this.options.responses) {
21
+ for (const [key, value] of Object.entries(this.options.responses)) {
22
+ if (text.toLowerCase().includes(key.toLowerCase())) {
23
+ if (typeof value === 'string') {
24
+ return {
25
+ message: { role: 'assistant', content: value },
26
+ usage: estimateUsage([...request.messages, { content: value }]) ?? { totalTokens: 0 },
27
+ };
28
+ }
29
+ return value;
30
+ }
31
+ }
32
+ }
33
+ // Return default tool calls if configured
34
+ if (this.options.defaultToolCalls && this.options.defaultToolCalls.length > 0) {
35
+ return {
36
+ toolCalls: this.options.defaultToolCalls,
37
+ usage: estimateUsage(request.messages) ?? { totalTokens: 0 },
38
+ };
39
+ }
40
+ // Fallback to default text or a generic mock response
41
+ const content = this.options.defaultText ?? `Mock Databricks response: ${text}`;
42
+ return {
43
+ message: { role: 'assistant', content },
44
+ usage: estimateUsage([...request.messages, { content }]) ?? { totalTokens: 0 },
45
+ };
46
+ }
47
+ async *stream(request) {
48
+ const response = await this.generate(request);
49
+ if (response.message?.content) {
50
+ yield { textDelta: response.message.content };
51
+ }
52
+ if (response.toolCalls) {
53
+ for (const toolCall of response.toolCalls) {
54
+ yield {
55
+ done: {
56
+ toolCalls: [toolCall],
57
+ ...(response.usage !== undefined ? { usage: response.usage } : {}),
58
+ },
59
+ };
60
+ return;
61
+ }
62
+ }
63
+ yield { done: response };
64
+ }
65
+ }
66
+ //# sourceMappingURL=mock-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-provider.js","sourceRoot":"","sources":["../src/mock-provider.ts"],"names":[],"mappings":"AAeA,SAAS,aAAa,CAAC,QAAoC;IACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,2BAA2B;IAC7B,IAAI,GAAG,iBAAiB,CAAC;IACjB,OAAO,CAAqC;IAE7D,YAAY,UAA8C,EAAE;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAClC,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QAEnC,qCAAqC;QACrC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,OAAO;4BACL,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;4BAC9C,KAAK,EAAE,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE;yBACtF,CAAC;oBACJ,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9E,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;gBACxC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE;aAC7D,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,6BAA6B,IAAI,EAAE,CAAC;QAChF,OAAO;YACL,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;YACvC,KAAK,EAAE,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE;SAC/E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAAqB;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YAC9B,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC1C,MAAM;oBACJ,IAAI,EAAE;wBACJ,SAAS,EAAE,CAAC,QAAQ,CAAC;wBACrB,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnE;iBACF,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import type { ModelProvider } from '@fabric-harness/sdk';
2
+ export interface DatabricksModelOptions {
3
+ /** Workspace host, e.g. https://adb-1234567890.0.cloud.databricks.com */
4
+ host: string;
5
+ /**
6
+ * Bearer token, or a resolver awaited per request. Pass a resolver for OAuth principal tokens
7
+ * (service-principal / on-behalf-of) so long-lived agents don't pin a stale token.
8
+ */
9
+ token: string | (() => string | Promise<string>);
10
+ /** Serving-endpoint name used when a request doesn't specify a model. */
11
+ defaultModel?: string;
12
+ headers?: Record<string, string>;
13
+ }
14
+ /**
15
+ * Mosaic AI Model Serving provider. Databricks serving endpoints expose an OpenAI-compatible chat
16
+ * API at `<host>/serving-endpoints/chat/completions` with the endpoint name carried as the `model`
17
+ * field, so this is a thin configuration of {@link OpenAICompatibleModelProvider} — streaming,
18
+ * tool-calls and reasoning effort come for free.
19
+ */
20
+ export declare function databricksFoundationModelProvider(options: DatabricksModelOptions): ModelProvider;
21
+ /**
22
+ * Register `databricks/<endpoint>` and `mosaic-ai/<endpoint>` model refs so they resolve via
23
+ * `FABRIC_MODEL` / `init({ model })`. Idempotent. Call this explicitly (the `databricks()` bundle
24
+ * does it for you) — registration is NOT an import side-effect, since the package is `sideEffects:
25
+ * false` and a self-registering import could be tree-shaken. Credentials are read from
26
+ * `providers.databricks` then env (`DATABRICKS_HOST`, `DATABRICKS_TOKEN`/`DATABRICKS_API_KEY`).
27
+ */
28
+ export declare function registerDatabricksModelProvider(): void;
29
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa,CAUhG;AAmBD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAKtD"}
package/dist/model.js ADDED
@@ -0,0 +1,50 @@
1
+ import { OpenAICompatibleModelProvider, registerModelProvider } from '@fabric-harness/sdk';
2
+ /**
3
+ * Mosaic AI Model Serving provider. Databricks serving endpoints expose an OpenAI-compatible chat
4
+ * API at `<host>/serving-endpoints/chat/completions` with the endpoint name carried as the `model`
5
+ * field, so this is a thin configuration of {@link OpenAICompatibleModelProvider} — streaming,
6
+ * tool-calls and reasoning effort come for free.
7
+ */
8
+ export function databricksFoundationModelProvider(options) {
9
+ const baseUrl = `${options.host.replace(/\/$/, '')}/serving-endpoints`;
10
+ return new OpenAICompatibleModelProvider({
11
+ name: 'databricks',
12
+ baseUrl,
13
+ apiKey: typeof options.token === 'string' ? options.token : '',
14
+ ...(typeof options.token === 'function' ? { tokenProvider: options.token } : {}),
15
+ ...(options.defaultModel !== undefined ? { defaultModel: options.defaultModel } : {}),
16
+ ...(options.headers !== undefined ? { headers: options.headers } : {}),
17
+ });
18
+ }
19
+ const factory = (parsed, providers, env, warnings) => {
20
+ const settings = providers?.databricks ?? providers?.['mosaic-ai'];
21
+ const host = settings?.baseUrl ?? env.DATABRICKS_HOST;
22
+ if (!host)
23
+ throw new Error('Missing Databricks host. Set DATABRICKS_HOST or providers.databricks.baseUrl.');
24
+ const token = settings?.apiKey?.trim() || env[settings?.apiKeyEnv ?? 'DATABRICKS_TOKEN']?.trim() || env.DATABRICKS_API_KEY?.trim();
25
+ if (!token)
26
+ throw new Error('Missing Databricks token. Set DATABRICKS_TOKEN or providers.databricks.apiKey/apiKeyEnv.');
27
+ return {
28
+ model: parsed.modelId,
29
+ provider: databricksFoundationModelProvider({ host, token, defaultModel: parsed.modelId }),
30
+ providerName: 'databricks',
31
+ modelId: parsed.modelId,
32
+ warnings,
33
+ };
34
+ };
35
+ let registered = false;
36
+ /**
37
+ * Register `databricks/<endpoint>` and `mosaic-ai/<endpoint>` model refs so they resolve via
38
+ * `FABRIC_MODEL` / `init({ model })`. Idempotent. Call this explicitly (the `databricks()` bundle
39
+ * does it for you) — registration is NOT an import side-effect, since the package is `sideEffects:
40
+ * false` and a self-registering import could be tree-shaken. Credentials are read from
41
+ * `providers.databricks` then env (`DATABRICKS_HOST`, `DATABRICKS_TOKEN`/`DATABRICKS_API_KEY`).
42
+ */
43
+ export function registerDatabricksModelProvider() {
44
+ if (registered)
45
+ return;
46
+ registered = true;
47
+ registerModelProvider('databricks', factory);
48
+ registerModelProvider('mosaic-ai', factory);
49
+ }
50
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAgB3F;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAAC,OAA+B;IAC/E,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC;IACvE,OAAO,IAAI,6BAA6B,CAAC;QACvC,IAAI,EAAE,YAAY;QAClB,OAAO;QACP,MAAM,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC9D,GAAG,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,GAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;IACzE,MAAM,QAAQ,GAAG,SAAS,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,QAAQ,EAAE,OAAO,IAAI,GAAG,CAAC,eAAe,CAAC;IACtD,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;IAC5G,MAAM,KAAK,GAAG,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,SAAS,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACnI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;IACxH,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,OAAO;QACrB,QAAQ,EAAE,iCAAiC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1F,YAAY,EAAE,YAAY;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B;IAC7C,IAAI,UAAU;QAAE,OAAO;IACvB,UAAU,GAAG,IAAI,CAAC;IAClB,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { JsonObject } from '@fabric-harness/sdk';
2
+ import type { DatabricksRestClient } from './client.js';
3
+ export interface SqlParameter {
4
+ name: string;
5
+ value: string;
6
+ /** SQL type for the named marker (e.g. 'DATE'). Defaults to STRING on the Databricks side. */
7
+ type?: string;
8
+ }
9
+ export interface StatementPoll {
10
+ intervalMs: number;
11
+ timeoutMs: number;
12
+ }
13
+ /** Submit a parameterized SQL statement and poll to a terminal state. Named parameters → injection-safe. */
14
+ export declare function runStatement(client: DatabricksRestClient, warehouseId: string, statement: string, parameters: SqlParameter[], poll: StatementPoll): Promise<unknown>;
15
+ /** Map a statement response's columns + rows into objects keyed by column name. */
16
+ export declare function parseStatementRows(response: unknown): JsonObject[];
17
+ //# sourceMappingURL=sql-exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-exec.d.ts","sourceRoot":"","sources":["../src/sql-exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,4GAA4G;AAC5G,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,EAAE,CAUlE"}
@@ -0,0 +1,36 @@
1
+ const TERMINAL_STATES = new Set(['SUCCEEDED', 'FAILED', 'CANCELED', 'CLOSED']);
2
+ /** Submit a parameterized SQL statement and poll to a terminal state. Named parameters → injection-safe. */
3
+ export async function runStatement(client, warehouseId, statement, parameters, poll) {
4
+ const submit = await client.post('/api/2.0/sql/statements', {
5
+ warehouse_id: warehouseId,
6
+ statement,
7
+ wait_timeout: '30s',
8
+ disposition: 'INLINE',
9
+ ...(parameters.length > 0 ? { parameters } : {}),
10
+ });
11
+ if (TERMINAL_STATES.has(submit.status?.state ?? ''))
12
+ return submit;
13
+ const id = submit.statement_id;
14
+ if (!id)
15
+ return submit;
16
+ const deadline = Date.now() + poll.timeoutMs;
17
+ let current = submit;
18
+ while (!TERMINAL_STATES.has(current.status?.state ?? '') && Date.now() < deadline) {
19
+ await new Promise((resolve) => setTimeout(resolve, poll.intervalMs));
20
+ current = await client.get(`/api/2.0/sql/statements/${encodeURIComponent(id)}`);
21
+ }
22
+ return current;
23
+ }
24
+ /** Map a statement response's columns + rows into objects keyed by column name. */
25
+ export function parseStatementRows(response) {
26
+ const res = response;
27
+ const columns = res.manifest?.schema?.columns ?? res.manifest?.columns ?? [];
28
+ const names = columns.map((c) => c.name);
29
+ const rows = res.result?.data_array ?? [];
30
+ return rows.map((row) => {
31
+ const record = {};
32
+ names.forEach((name, i) => { record[name] = row[i]; });
33
+ return record;
34
+ });
35
+ }
36
+ //# sourceMappingURL=sql-exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-exec.js","sourceRoot":"","sources":["../src/sql-exec.ts"],"names":[],"mappings":"AAsBA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE/E,4GAA4G;AAC5G,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAA4B,EAC5B,WAAmB,EACnB,SAAiB,EACjB,UAA0B,EAC1B,IAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAoB,yBAAyB,EAAE;QAC7E,YAAY,EAAE,WAAW;QACzB,SAAS;QACT,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,QAAQ;QACrB,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC,CAAC;IACH,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;QAAE,OAAO,MAAM,CAAC;IACnE,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;IAC/B,IAAI,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7C,IAAI,OAAO,GAAsB,MAAM,CAAC;IACxC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAClF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACrE,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAoB,2BAA2B,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB,CAAC,QAAiB;IAClD,MAAM,GAAG,GAAG,QAA6B,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { SandboxEnv } from '@fabric-harness/sdk';
2
- import { DatabricksRestClient } from './index.js';
2
+ import { DatabricksRestClient } from './client.js';
3
3
  /**
4
4
  * Sandbox backend that maps `exec(command)` to a Databricks SQL Statement
5
5
  * Execution API call against a SQL Warehouse. Useful for data agents whose
@@ -1 +1 @@
1
- {"version":3,"file":"sql-sandbox.d.ts","sourceRoot":"","sources":["../src/sql-sandbox.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC/B,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AASD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,UAAU,CAsFrF"}
1
+ {"version":3,"file":"sql-sandbox.d.ts","sourceRoot":"","sources":["../src/sql-sandbox.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC/B,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AASD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,UAAU,CAsFrF"}
@@ -1,5 +1,5 @@
1
1
  import { createRemoteSandboxEnv } from '@fabric-harness/sdk';
2
- import { DatabricksRestClient } from './index.js';
2
+ import { DatabricksRestClient } from './client.js';
3
3
  export function databricksSqlSandbox(options) {
4
4
  const client = options.client ?? new DatabricksRestClient({
5
5
  host: options.host,
@@ -1 +1 @@
1
- {"version":3,"file":"sql-sandbox.js","sourceRoot":"","sources":["../src/sql-sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAsDlD,MAAM,UAAU,oBAAoB,CAAC,OAAoC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,oBAAoB,CAAC;QACxD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5C,MAAM,GAAG,GAAqB;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAoB,yBAAyB,EAAE;oBAC/E,YAAY,EAAE,OAAO,CAAC,WAAW;oBACjC,SAAS,EAAE,OAAO;oBAClB,YAAY,EAAE,GAAG,kBAAkB,GAAG;oBACtC,eAAe,EAAE,QAAQ;oBACzB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD,CAAC,CAAC;gBACH,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBAC/E,OAAO;wBACL,OAAO;wBACP,QAAQ,EAAE,CAAC;wBACX,MAAM,EAAE,EAAE;wBACV,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,aAAa,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;wBAC9E,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;qBACnC,CAAC;gBACJ,CAAC;gBACD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YAC1F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO;oBACP,QAAQ,EAAE,CAAC;oBACX,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI;YACjB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,IAAI;YACvB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO;YAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI;YACb,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;oBAAE,SAAS;gBAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,KAAK,KAA0D,CAAC;QACtE,KAAK,CAAC,EAAE,CAAC,IAAI;YACX,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACpC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC;oBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;KACF,CAAC;IACF,OAAO,sBAAsB,CAAC,GAAG,EAAE;QACjC,GAAG,EAAE,YAAY;QACjB,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE;KAChL,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,QAA2B,EAAE,MAAuB;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC;IAC/C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"sql-sandbox.js","sourceRoot":"","sources":["../src/sql-sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAsDnD,MAAM,UAAU,oBAAoB,CAAC,OAAoC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,oBAAoB,CAAC;QACxD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5C,MAAM,GAAG,GAAqB;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAoB,yBAAyB,EAAE;oBAC/E,YAAY,EAAE,OAAO,CAAC,WAAW;oBACjC,SAAS,EAAE,OAAO;oBAClB,YAAY,EAAE,GAAG,kBAAkB,GAAG;oBACtC,eAAe,EAAE,QAAQ;oBACzB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD,CAAC,CAAC;gBACH,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBAC/E,OAAO;wBACL,OAAO;wBACP,QAAQ,EAAE,CAAC;wBACX,MAAM,EAAE,EAAE;wBACV,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,aAAa,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;wBAC9E,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;qBACnC,CAAC;gBACJ,CAAC;gBACD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YAC1F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO;oBACP,QAAQ,EAAE,CAAC;oBACX,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI;YACjB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,IAAI;YACvB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO;YAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI;YACb,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;oBAAE,SAAS;gBAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,KAAK,KAA0D,CAAC;QACtE,KAAK,CAAC,EAAE,CAAC,IAAI;YACX,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACpC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC;oBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;KACF,CAAC;IACF,OAAO,sBAAsB,CAAC,GAAG,EAAE;QACjC,GAAG,EAAE,YAAY;QACjB,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE;KAChL,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,QAA2B,EAAE,MAAuB;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC;IAC/C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACnE,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { FilesystemSource, JsonObject, ToolDef } from '@fabric-harness/sdk';
2
+ import type { DatabricksRestClient } from './client.js';
3
+ export interface DatabricksSqlToolOptions {
4
+ warehouseId: string;
5
+ name?: string;
6
+ description?: string;
7
+ waitTimeout?: string;
8
+ disposition?: 'INLINE' | 'EXTERNAL_LINKS';
9
+ }
10
+ export declare function databricksSqlTool(client: DatabricksRestClient, options: DatabricksSqlToolOptions): ToolDef<{
11
+ statement: string;
12
+ catalog?: string;
13
+ schema?: string;
14
+ }, unknown>;
15
+ export declare function databricksRunJobTool(client: DatabricksRestClient, options?: {
16
+ name?: string;
17
+ description?: string;
18
+ }): ToolDef<{
19
+ jobId: number;
20
+ notebookParams?: JsonObject;
21
+ pythonParams?: string[];
22
+ jarParams?: string[];
23
+ }, unknown>;
24
+ export declare function databricksNotebookTool(client: DatabricksRestClient, options?: {
25
+ name?: string;
26
+ description?: string;
27
+ existingClusterId?: string;
28
+ }): ToolDef<{
29
+ notebookPath: string;
30
+ baseParameters?: JsonObject;
31
+ runName?: string;
32
+ }, unknown>;
33
+ export declare function databricksMlflowLogMetricTool(client: DatabricksRestClient, options?: {
34
+ name?: string;
35
+ description?: string;
36
+ }): ToolDef<{
37
+ runId: string;
38
+ key: string;
39
+ value: number;
40
+ step?: number;
41
+ timestamp?: number;
42
+ }, unknown>;
43
+ export declare function databricksMlflowLogParamTool(client: DatabricksRestClient, options?: {
44
+ name?: string;
45
+ description?: string;
46
+ }): ToolDef<{
47
+ runId: string;
48
+ key: string;
49
+ value: string;
50
+ }, unknown>;
51
+ export declare function unityCatalogTablesTool(client: DatabricksRestClient, options?: {
52
+ name?: string;
53
+ description?: string;
54
+ }): ToolDef<{
55
+ catalog: string;
56
+ schema: string;
57
+ }, unknown>;
58
+ export declare function databricksTableInfoTool(client: DatabricksRestClient, options?: {
59
+ name?: string;
60
+ description?: string;
61
+ }): ToolDef<{
62
+ fullName: string;
63
+ }, unknown>;
64
+ export interface DatabricksWorkspaceSourceOptions {
65
+ name?: string;
66
+ include?: (path: string) => boolean;
67
+ recursive?: boolean;
68
+ format?: 'SOURCE' | 'HTML' | 'JUPYTER' | 'DBC';
69
+ }
70
+ export declare function databricksWorkspaceSource(client: DatabricksRestClient, rootPath: string, options?: DatabricksWorkspaceSourceOptions): FilesystemSource;
71
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/dist/tools.js ADDED
@@ -0,0 +1,176 @@
1
+ export function databricksSqlTool(client, options) {
2
+ return {
3
+ name: options.name ?? 'databricks_sql',
4
+ description: options.description ?? 'Run a SQL statement on a Databricks SQL Warehouse.',
5
+ inputSchema: {
6
+ type: 'object',
7
+ additionalProperties: false,
8
+ properties: {
9
+ statement: { type: 'string' },
10
+ catalog: { type: 'string' },
11
+ schema: { type: 'string' },
12
+ },
13
+ required: ['statement'],
14
+ },
15
+ metadata: { effect: 'execute', provider: 'databricks', service: 'sql' },
16
+ execute: (input) => client.post('/api/2.0/sql/statements', {
17
+ warehouse_id: options.warehouseId,
18
+ statement: input.statement,
19
+ wait_timeout: options.waitTimeout ?? '30s',
20
+ disposition: options.disposition ?? 'INLINE',
21
+ ...(input.catalog ? { catalog: input.catalog } : {}),
22
+ ...(input.schema ? { schema: input.schema } : {}),
23
+ }),
24
+ };
25
+ }
26
+ export function databricksRunJobTool(client, options = {}) {
27
+ return {
28
+ name: options.name ?? 'databricks_run_job',
29
+ description: options.description ?? 'Trigger an existing Databricks job by job id.',
30
+ inputSchema: {
31
+ type: 'object',
32
+ additionalProperties: false,
33
+ properties: {
34
+ jobId: { type: 'number' },
35
+ notebookParams: { type: 'object', additionalProperties: true },
36
+ pythonParams: { type: 'array', items: { type: 'string' } },
37
+ jarParams: { type: 'array', items: { type: 'string' } },
38
+ },
39
+ required: ['jobId'],
40
+ },
41
+ metadata: { effect: 'execute', provider: 'databricks', service: 'jobs' },
42
+ execute: (input) => client.post('/api/2.1/jobs/run-now', {
43
+ job_id: input.jobId,
44
+ ...(input.notebookParams ? { notebook_params: input.notebookParams } : {}),
45
+ ...(input.pythonParams ? { python_params: input.pythonParams } : {}),
46
+ ...(input.jarParams ? { jar_params: input.jarParams } : {}),
47
+ }),
48
+ };
49
+ }
50
+ export function databricksNotebookTool(client, options = {}) {
51
+ return {
52
+ name: options.name ?? 'databricks_run_notebook',
53
+ description: options.description ?? 'Submit a one-off Databricks notebook run.',
54
+ inputSchema: {
55
+ type: 'object',
56
+ additionalProperties: false,
57
+ properties: {
58
+ notebookPath: { type: 'string' },
59
+ baseParameters: { type: 'object', additionalProperties: true },
60
+ runName: { type: 'string' },
61
+ },
62
+ required: ['notebookPath'],
63
+ },
64
+ metadata: { effect: 'execute', provider: 'databricks', service: 'jobs' },
65
+ execute: (input) => client.post('/api/2.1/jobs/runs/submit', {
66
+ run_name: input.runName ?? `fabric-harness:${input.notebookPath}`,
67
+ ...(options.existingClusterId ? { existing_cluster_id: options.existingClusterId } : {}),
68
+ notebook_task: {
69
+ notebook_path: input.notebookPath,
70
+ ...(input.baseParameters ? { base_parameters: input.baseParameters } : {}),
71
+ },
72
+ }),
73
+ };
74
+ }
75
+ export function databricksMlflowLogMetricTool(client, options = {}) {
76
+ return {
77
+ name: options.name ?? 'databricks_mlflow_log_metric',
78
+ description: options.description ?? 'Log a metric to an MLflow run hosted in Databricks.',
79
+ inputSchema: {
80
+ type: 'object',
81
+ additionalProperties: false,
82
+ properties: {
83
+ runId: { type: 'string' },
84
+ key: { type: 'string' },
85
+ value: { type: 'number' },
86
+ step: { type: 'number' },
87
+ timestamp: { type: 'number' },
88
+ },
89
+ required: ['runId', 'key', 'value'],
90
+ },
91
+ metadata: { effect: 'write', provider: 'databricks', service: 'mlflow' },
92
+ execute: (input) => client.post('/api/2.0/mlflow/runs/log-metric', {
93
+ run_id: input.runId,
94
+ key: input.key,
95
+ value: input.value,
96
+ timestamp: input.timestamp ?? Date.now(),
97
+ ...(input.step !== undefined ? { step: input.step } : {}),
98
+ }),
99
+ };
100
+ }
101
+ export function databricksMlflowLogParamTool(client, options = {}) {
102
+ return {
103
+ name: options.name ?? 'databricks_mlflow_log_param',
104
+ description: options.description ?? 'Log a parameter to an MLflow run hosted in Databricks.',
105
+ inputSchema: {
106
+ type: 'object',
107
+ additionalProperties: false,
108
+ properties: { runId: { type: 'string' }, key: { type: 'string' }, value: { type: 'string' } },
109
+ required: ['runId', 'key', 'value'],
110
+ },
111
+ metadata: { effect: 'write', provider: 'databricks', service: 'mlflow' },
112
+ execute: (input) => client.post('/api/2.0/mlflow/runs/log-parameter', { run_id: input.runId, key: input.key, value: input.value }),
113
+ };
114
+ }
115
+ export function unityCatalogTablesTool(client, options = {}) {
116
+ return {
117
+ name: options.name ?? 'databricks_unity_catalog_tables',
118
+ description: options.description ?? 'List Unity Catalog tables in a catalog and schema.',
119
+ inputSchema: {
120
+ type: 'object',
121
+ additionalProperties: false,
122
+ properties: { catalog: { type: 'string' }, schema: { type: 'string' } },
123
+ required: ['catalog', 'schema'],
124
+ },
125
+ metadata: { effect: 'read', provider: 'databricks', service: 'unity-catalog' },
126
+ execute: (input) => client.get('/api/2.1/unity-catalog/tables', { catalog_name: input.catalog, schema_name: input.schema }),
127
+ };
128
+ }
129
+ export function databricksTableInfoTool(client, options = {}) {
130
+ return {
131
+ name: options.name ?? 'databricks_table_info',
132
+ description: options.description ?? 'Describe a Unity Catalog table (columns, types, comment) by its full name (catalog.schema.table).',
133
+ inputSchema: {
134
+ type: 'object',
135
+ additionalProperties: false,
136
+ properties: { fullName: { type: 'string' } },
137
+ required: ['fullName'],
138
+ },
139
+ metadata: { effect: 'read', provider: 'databricks', service: 'unity-catalog' },
140
+ execute: (input) => client.get(`/api/2.1/unity-catalog/tables/${encodeURIComponent(input.fullName)}`),
141
+ };
142
+ }
143
+ export function databricksWorkspaceSource(client, rootPath, options = {}) {
144
+ const include = options.include ?? (() => true);
145
+ return {
146
+ name: options.name ?? `databricks-workspace:${rootPath}`,
147
+ async *entries() {
148
+ yield* walkWorkspace(client, rootPath, rootPath, include, options.recursive ?? true, options.format ?? 'SOURCE');
149
+ },
150
+ };
151
+ }
152
+ async function* walkWorkspace(client, root, current, include, recursive, format) {
153
+ const listing = await client.get('/api/2.0/workspace/list', { path: current });
154
+ for (const object of listing.objects ?? []) {
155
+ if (object.object_type === 'DIRECTORY') {
156
+ if (recursive)
157
+ yield* walkWorkspace(client, root, object.path, include, recursive, format);
158
+ continue;
159
+ }
160
+ const relative = object.path.slice(root.length).replace(/^\/+/, '');
161
+ if (!relative || !include(relative))
162
+ continue;
163
+ const exported = await client.get('/api/2.0/workspace/export', { path: object.path, format });
164
+ yield { path: relative, content: exported.content ? base64ToBytes(exported.content) : new Uint8Array() };
165
+ }
166
+ }
167
+ function base64ToBytes(value) {
168
+ if (typeof Buffer !== 'undefined')
169
+ return new Uint8Array(Buffer.from(value, 'base64'));
170
+ const binary = atob(value);
171
+ const bytes = new Uint8Array(binary.length);
172
+ for (let i = 0; i < binary.length; i += 1)
173
+ bytes[i] = binary.charCodeAt(i);
174
+ return bytes;
175
+ }
176
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { EmbeddingProvider, Retriever } from '@fabric-harness/sdk';
2
+ import type { DatabricksRestClient } from './client.js';
3
+ export interface DatabricksVectorSearchOptions {
4
+ client: DatabricksRestClient;
5
+ /** Full index name: `catalog.schema.index`. */
6
+ index: string;
7
+ /** Column that holds the chunk text returned to the model. */
8
+ textColumn: string;
9
+ /** Columns to retrieve. Defaults to `[textColumn]` plus `idColumn` when set. */
10
+ columns?: string[];
11
+ /** Column to surface as `RetrievedChunk.id`. */
12
+ idColumn?: string;
13
+ /**
14
+ * `'text'` (default) for Databricks-managed-embedding indexes (send `query_text`); `'vector'` for
15
+ * self-managed / direct-access indexes (embed the query via `embeddings` and send `query_vector`).
16
+ */
17
+ queryType?: 'text' | 'vector';
18
+ /** Required when `queryType: 'vector'`. */
19
+ embeddings?: EmbeddingProvider;
20
+ name?: string;
21
+ }
22
+ /** Databricks Mosaic AI Vector Search as a {@link Retriever}. Runs under the bundle's UC principal. */
23
+ export declare function databricksVectorSearch(options: DatabricksVectorSearchOptions): Retriever;
24
+ //# sourceMappingURL=vector-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-search.d.ts","sourceRoot":"","sources":["../src/vector-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAA+C,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,oBAAoB,CAAC;IAC7B,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AASD,uGAAuG;AACvG,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,SAAS,CAyBxF"}