@fabric-harness/databricks 0.15.0 → 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.
- package/dist/agent.d.ts +45 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +206 -0
- package/dist/agent.js.map +1 -0
- package/dist/ai.d.ts +19 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +22 -0
- package/dist/ai.js.map +1 -0
- package/dist/client.d.ts +37 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +110 -0
- package/dist/client.js.map +1 -0
- package/dist/consumption.d.ts +45 -0
- package/dist/consumption.d.ts.map +1 -0
- package/dist/consumption.js +85 -0
- package/dist/consumption.js.map +1 -0
- package/dist/cost-budget-actuals.d.ts +27 -0
- package/dist/cost-budget-actuals.d.ts.map +1 -0
- package/dist/cost-budget-actuals.js +265 -0
- package/dist/cost-budget-actuals.js.map +1 -0
- package/dist/embeddings.d.ts +18 -0
- package/dist/embeddings.d.ts.map +1 -0
- package/dist/embeddings.js +24 -0
- package/dist/embeddings.js.map +1 -0
- package/dist/feature-serving.d.ts +17 -0
- package/dist/feature-serving.d.ts.map +1 -0
- package/dist/feature-serving.js +29 -0
- package/dist/feature-serving.js.map +1 -0
- package/dist/genie.d.ts +22 -0
- package/dist/genie.d.ts.map +1 -0
- package/dist/genie.js +60 -0
- package/dist/genie.js.map +1 -0
- package/dist/governance.d.ts +66 -0
- package/dist/governance.d.ts.map +1 -0
- package/dist/governance.js +111 -0
- package/dist/governance.js.map +1 -0
- package/dist/identity.d.ts +38 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +56 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +131 -80
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +105 -227
- package/dist/index.js.map +1 -1
- package/dist/lakebase.d.ts +49 -0
- package/dist/lakebase.d.ts.map +1 -0
- package/dist/lakebase.js +25 -0
- package/dist/lakebase.js.map +1 -0
- package/dist/lakeflow.d.ts +28 -0
- package/dist/lakeflow.d.ts.map +1 -0
- package/dist/lakeflow.js +75 -0
- package/dist/lakeflow.js.map +1 -0
- package/dist/mock-provider.d.ts +26 -0
- package/dist/mock-provider.d.ts.map +1 -0
- package/dist/mock-provider.js +66 -0
- package/dist/mock-provider.js.map +1 -0
- package/dist/model.d.ts +29 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +50 -0
- package/dist/model.js.map +1 -0
- package/dist/sql-exec.d.ts +17 -0
- package/dist/sql-exec.d.ts.map +1 -0
- package/dist/sql-exec.js +36 -0
- package/dist/sql-exec.js.map +1 -0
- package/dist/sql-sandbox.d.ts +1 -1
- package/dist/sql-sandbox.d.ts.map +1 -1
- package/dist/sql-sandbox.js +1 -1
- package/dist/sql-sandbox.js.map +1 -1
- package/dist/tools.d.ts +71 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +176 -0
- package/dist/tools.js.map +1 -0
- package/dist/vector-search.d.ts +24 -0
- package/dist/vector-search.d.ts.map +1 -0
- package/dist/vector-search.js +63 -0
- package/dist/vector-search.js.map +1 -0
- 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":"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"}
|
package/dist/model.d.ts
ADDED
|
@@ -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"}
|
package/dist/sql-exec.js
ADDED
|
@@ -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"}
|
package/dist/sql-sandbox.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SandboxEnv } from '@fabric-harness/sdk';
|
|
2
|
-
import { DatabricksRestClient } from './
|
|
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,
|
|
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"}
|
package/dist/sql-sandbox.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRemoteSandboxEnv } from '@fabric-harness/sdk';
|
|
2
|
-
import { DatabricksRestClient } from './
|
|
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,
|
package/dist/sql-sandbox.js.map
CHANGED
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"sql-sandbox.js","sourceRoot":"","sources":["../src/sql-sandbox.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
ADDED
|
@@ -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"}
|