@databricks/appkit 0.31.0 → 0.33.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/CLAUDE.md +54 -1
- package/NOTICE.md +2 -0
- package/dist/agents/databricks.d.ts.map +1 -1
- package/dist/agents/databricks.js +8 -3
- package/dist/agents/databricks.js.map +1 -1
- package/dist/appkit/package.js +1 -1
- package/dist/beta.d.ts +16 -1
- package/dist/beta.js +14 -1
- package/dist/connectors/index.js +3 -0
- package/dist/connectors/mcp/client.d.ts +85 -0
- package/dist/connectors/mcp/client.d.ts.map +1 -0
- package/dist/connectors/mcp/client.js +296 -0
- package/dist/connectors/mcp/client.js.map +1 -0
- package/dist/connectors/mcp/host-policy.d.ts +51 -0
- package/dist/connectors/mcp/host-policy.d.ts.map +1 -0
- package/dist/connectors/mcp/host-policy.js +168 -0
- package/dist/connectors/mcp/host-policy.js.map +1 -0
- package/dist/connectors/mcp/index.d.ts +3 -0
- package/dist/connectors/mcp/index.js +4 -0
- package/dist/connectors/mcp/types.d.ts +16 -0
- package/dist/connectors/mcp/types.d.ts.map +1 -0
- package/dist/context/index.js +1 -1
- package/dist/core/agent/build-toolkit.d.ts +2 -0
- package/dist/core/agent/build-toolkit.js +45 -0
- package/dist/core/agent/build-toolkit.js.map +1 -0
- package/dist/core/agent/consume-adapter-stream.js +33 -0
- package/dist/core/agent/consume-adapter-stream.js.map +1 -0
- package/dist/core/agent/create-agent.d.ts +27 -0
- package/dist/core/agent/create-agent.d.ts.map +1 -0
- package/dist/core/agent/create-agent.js +50 -0
- package/dist/core/agent/create-agent.js.map +1 -0
- package/dist/core/agent/load-agents.d.ts +72 -0
- package/dist/core/agent/load-agents.d.ts.map +1 -0
- package/dist/core/agent/load-agents.js +268 -0
- package/dist/core/agent/load-agents.js.map +1 -0
- package/dist/core/agent/normalize-result.js +39 -0
- package/dist/core/agent/normalize-result.js.map +1 -0
- package/dist/core/agent/plugins-map.js +44 -0
- package/dist/core/agent/plugins-map.js.map +1 -0
- package/dist/core/agent/run-agent.d.ts +58 -0
- package/dist/core/agent/run-agent.d.ts.map +1 -0
- package/dist/core/agent/run-agent.js +257 -0
- package/dist/core/agent/run-agent.js.map +1 -0
- package/dist/core/agent/system-prompt.js +38 -0
- package/dist/core/agent/system-prompt.js.map +1 -0
- package/dist/core/agent/toolkit-options.js +28 -0
- package/dist/core/agent/toolkit-options.js.map +1 -0
- package/dist/core/agent/toolkit-resolver.js +44 -0
- package/dist/core/agent/toolkit-resolver.js.map +1 -0
- package/dist/core/agent/tools/define-tool.d.ts +66 -0
- package/dist/core/agent/tools/define-tool.d.ts.map +1 -0
- package/dist/core/agent/tools/define-tool.js +50 -0
- package/dist/core/agent/tools/define-tool.js.map +1 -0
- package/dist/core/agent/tools/function-tool.d.ts +38 -0
- package/dist/core/agent/tools/function-tool.d.ts.map +1 -0
- package/dist/core/agent/tools/function-tool.js +22 -0
- package/dist/core/agent/tools/function-tool.js.map +1 -0
- package/dist/core/agent/tools/hosted-tools.d.ts +47 -0
- package/dist/core/agent/tools/hosted-tools.d.ts.map +1 -0
- package/dist/core/agent/tools/hosted-tools.js +67 -0
- package/dist/core/agent/tools/hosted-tools.js.map +1 -0
- package/dist/core/agent/tools/index.d.ts +5 -0
- package/dist/core/agent/tools/index.js +7 -0
- package/dist/core/agent/tools/json-schema.js +24 -0
- package/dist/core/agent/tools/json-schema.js.map +1 -0
- package/dist/core/agent/tools/sql-policy.js +256 -0
- package/dist/core/agent/tools/sql-policy.js.map +1 -0
- package/dist/core/agent/tools/tool.d.ts +63 -0
- package/dist/core/agent/tools/tool.d.ts.map +1 -0
- package/dist/core/agent/tools/tool.js +42 -0
- package/dist/core/agent/tools/tool.js.map +1 -0
- package/dist/core/agent/types.d.ts +299 -0
- package/dist/core/agent/types.d.ts.map +1 -0
- package/dist/core/agent/types.js +12 -0
- package/dist/core/agent/types.js.map +1 -0
- package/dist/core/appkit.d.ts +1 -0
- package/dist/core/appkit.d.ts.map +1 -1
- package/dist/core/appkit.js +31 -4
- package/dist/core/appkit.js.map +1 -1
- package/dist/core/plugin-context.d.ts +133 -0
- package/dist/core/plugin-context.d.ts.map +1 -0
- package/dist/core/plugin-context.js +220 -0
- package/dist/core/plugin-context.js.map +1 -0
- package/dist/index.d.ts +11 -11
- package/dist/internal-telemetry/appkit-log.js +19 -0
- package/dist/internal-telemetry/appkit-log.js.map +1 -0
- package/dist/internal-telemetry/config.js +15 -0
- package/dist/internal-telemetry/config.js.map +1 -0
- package/dist/internal-telemetry/index.js +4 -0
- package/dist/internal-telemetry/reporter.js +132 -0
- package/dist/internal-telemetry/reporter.js.map +1 -0
- package/dist/plugin/plugin.d.ts +18 -3
- package/dist/plugin/plugin.d.ts.map +1 -1
- package/dist/plugin/plugin.js +26 -2
- package/dist/plugin/plugin.js.map +1 -1
- package/dist/plugin/to-plugin.d.ts +3 -2
- package/dist/plugin/to-plugin.d.ts.map +1 -1
- package/dist/plugin/to-plugin.js +7 -4
- package/dist/plugin/to-plugin.js.map +1 -1
- package/dist/plugins/agents/agents.d.ts +186 -0
- package/dist/plugins/agents/agents.d.ts.map +1 -0
- package/dist/plugins/agents/agents.js +979 -0
- package/dist/plugins/agents/agents.js.map +1 -0
- package/dist/plugins/agents/defaults.js +13 -0
- package/dist/plugins/agents/defaults.js.map +1 -0
- package/dist/plugins/agents/event-channel.js +64 -0
- package/dist/plugins/agents/event-channel.js.map +1 -0
- package/dist/plugins/agents/event-translator.js +224 -0
- package/dist/plugins/agents/event-translator.js.map +1 -0
- package/dist/plugins/agents/index.d.ts +4 -0
- package/dist/plugins/agents/index.js +6 -0
- package/dist/plugins/agents/manifest.js +26 -0
- package/dist/plugins/agents/manifest.js.map +1 -0
- package/dist/plugins/agents/schemas.js +51 -0
- package/dist/plugins/agents/schemas.js.map +1 -0
- package/dist/plugins/agents/thread-store.js +58 -0
- package/dist/plugins/agents/thread-store.js.map +1 -0
- package/dist/plugins/agents/tool-approval-gate.js +75 -0
- package/dist/plugins/agents/tool-approval-gate.js.map +1 -0
- package/dist/plugins/analytics/analytics.d.ts +15 -1
- package/dist/plugins/analytics/analytics.d.ts.map +1 -1
- package/dist/plugins/analytics/analytics.js +37 -2
- package/dist/plugins/analytics/analytics.js.map +1 -1
- package/dist/plugins/analytics/index.js +1 -0
- package/dist/plugins/analytics/types.js +15 -0
- package/dist/plugins/analytics/types.js.map +1 -0
- package/dist/plugins/beta-exports.generated.d.ts +2 -0
- package/dist/plugins/beta-exports.generated.js +4 -0
- package/dist/plugins/files/plugin.d.ts +20 -2
- package/dist/plugins/files/plugin.d.ts.map +1 -1
- package/dist/plugins/files/plugin.js +120 -2
- package/dist/plugins/files/plugin.js.map +1 -1
- package/dist/plugins/genie/genie.d.ts +17 -3
- package/dist/plugins/genie/genie.d.ts.map +1 -1
- package/dist/plugins/genie/genie.js +61 -2
- package/dist/plugins/genie/genie.js.map +1 -1
- package/dist/plugins/genie/types.d.ts +10 -2
- package/dist/plugins/genie/types.d.ts.map +1 -1
- package/dist/plugins/jobs/plugin.js +1 -1
- package/dist/plugins/lakebase/index.d.ts +2 -2
- package/dist/plugins/lakebase/index.js +1 -1
- package/dist/plugins/lakebase/lakebase.d.ts +31 -3
- package/dist/plugins/lakebase/lakebase.d.ts.map +1 -1
- package/dist/plugins/lakebase/lakebase.js +77 -5
- package/dist/plugins/lakebase/lakebase.js.map +1 -1
- package/dist/plugins/lakebase/types.d.ts +39 -1
- package/dist/plugins/lakebase/types.d.ts.map +1 -1
- package/dist/plugins/server/index.d.ts +12 -0
- package/dist/plugins/server/index.d.ts.map +1 -1
- package/dist/plugins/server/index.js +47 -10
- package/dist/plugins/server/index.js.map +1 -1
- package/dist/plugins/server/types.d.ts +11 -3
- package/dist/plugins/server/types.d.ts.map +1 -1
- package/dist/shared/src/agent.d.ts +75 -1
- package/dist/shared/src/agent.d.ts.map +1 -1
- package/dist/shared/src/index.d.ts +1 -1
- package/dist/shared/src/plugin.d.ts +8 -0
- package/dist/shared/src/plugin.d.ts.map +1 -1
- package/docs/api/appkit/Class.AppKitMcpClient.md +157 -0
- package/docs/api/appkit/Class.DatabricksAdapter.md +151 -0
- package/docs/api/appkit/Class.Plugin.md +65 -23
- package/docs/api/appkit/Function.agentIdFromMarkdownPath.md +18 -0
- package/docs/api/appkit/Function.createAgent.md +33 -0
- package/docs/api/appkit/Function.createApp.md +10 -8
- package/docs/api/appkit/Function.defineTool.md +26 -0
- package/docs/api/appkit/Function.executeFromRegistry.md +25 -0
- package/docs/api/appkit/Function.functionToolToDefinition.md +16 -0
- package/docs/api/appkit/Function.isFunctionTool.md +16 -0
- package/docs/api/appkit/Function.isHostedTool.md +16 -0
- package/docs/api/appkit/Function.isToolkitEntry.md +18 -0
- package/docs/api/appkit/Function.loadAgentFromFile.md +21 -0
- package/docs/api/appkit/Function.loadAgentsFromDir.md +26 -0
- package/docs/api/appkit/Function.mcpServer.md +28 -0
- package/docs/api/appkit/Function.parseTextToolCalls.md +26 -0
- package/docs/api/appkit/Function.resolveHostedTools.md +16 -0
- package/docs/api/appkit/Function.runAgent.md +26 -0
- package/docs/api/appkit/Function.tool.md +28 -0
- package/docs/api/appkit/Function.toolsFromRegistry.md +20 -0
- package/docs/api/appkit/Interface.AgentAdapter.md +21 -0
- package/docs/api/appkit/Interface.AgentDefinition.md +112 -0
- package/docs/api/appkit/Interface.AgentInput.md +37 -0
- package/docs/api/appkit/Interface.AgentRunContext.md +32 -0
- package/docs/api/appkit/Interface.AgentToolDefinition.md +37 -0
- package/docs/api/appkit/Interface.AgentsPluginConfig.md +241 -0
- package/docs/api/appkit/Interface.AutoInheritToolsConfig.md +27 -0
- package/docs/api/appkit/Interface.BasePluginConfig.md +1 -0
- package/docs/api/appkit/Interface.FunctionTool.md +80 -0
- package/docs/api/appkit/Interface.McpConnectAllResult.md +38 -0
- package/docs/api/appkit/Interface.Message.md +55 -0
- package/docs/api/appkit/Interface.PluginToolkitProvider.md +22 -0
- package/docs/api/appkit/Interface.PromptContext.md +30 -0
- package/docs/api/appkit/Interface.RegisteredAgent.md +75 -0
- package/docs/api/appkit/Interface.RunAgentInput.md +34 -0
- package/docs/api/appkit/Interface.RunAgentResult.md +23 -0
- package/docs/api/appkit/Interface.Thread.md +46 -0
- package/docs/api/appkit/Interface.ThreadStore.md +103 -0
- package/docs/api/appkit/Interface.ToolAnnotations.md +56 -0
- package/docs/api/appkit/Interface.ToolConfig.md +72 -0
- package/docs/api/appkit/Interface.ToolEntry.md +73 -0
- package/docs/api/appkit/Interface.ToolProvider.md +38 -0
- package/docs/api/appkit/Interface.ToolkitEntry.md +59 -0
- package/docs/api/appkit/Interface.ToolkitOptions.md +45 -0
- package/docs/api/appkit/TypeAlias.AgentEvent.md +299 -0
- package/docs/api/appkit/TypeAlias.AgentTool.md +11 -0
- package/docs/api/appkit/TypeAlias.AgentTools.md +8 -0
- package/docs/api/appkit/TypeAlias.AgentToolsFn.md +20 -0
- package/docs/api/appkit/TypeAlias.BaseSystemPromptOption.md +9 -0
- package/docs/api/appkit/TypeAlias.HostedTool.md +10 -0
- package/docs/api/appkit/TypeAlias.Plugins.md +26 -0
- package/docs/api/appkit/TypeAlias.ResolvedToolEntry.md +29 -0
- package/docs/api/appkit/TypeAlias.ToolRegistry.md +6 -0
- package/docs/api/appkit/Variable.agents.md +19 -0
- package/docs/api/appkit.md +113 -62
- package/docs/plugins/agents.md +441 -0
- package/docs/privacy.md +41 -0
- package/llms.txt +54 -1
- package/package.json +4 -2
- package/sbom.cdx.json +1 -1
|
@@ -1,8 +1,39 @@
|
|
|
1
1
|
import { JSONSchema7 } from "json-schema";
|
|
2
2
|
|
|
3
3
|
//#region ../shared/src/agent.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Semantic hint for what the tool does to the world. Drives both the
|
|
6
|
+
* agents-plugin approval gate and the client's approval-card styling.
|
|
7
|
+
*
|
|
8
|
+
* - `read` — observes only; never needs approval.
|
|
9
|
+
* - `write` — creates or appends new state (e.g. saving a new view). Approval
|
|
10
|
+
* required by default. Rendered as a low-severity "writes" card.
|
|
11
|
+
* - `update` — mutates existing state in place (e.g. renaming, toggling).
|
|
12
|
+
* Approval required. Rendered as a medium-severity "updates" card.
|
|
13
|
+
* - `destructive` — deletes or irreversibly mutates (e.g. dropping a view).
|
|
14
|
+
* Approval required. Rendered as a high-severity "destructive" card.
|
|
15
|
+
*
|
|
16
|
+
* Prefer this over the legacy `readOnly`/`destructive` booleans: it lets the
|
|
17
|
+
* UI distinguish "captured a screenshot" from "deleted a dashboard", both of
|
|
18
|
+
* which today are lumped under a single red "destructive" label.
|
|
19
|
+
*/
|
|
20
|
+
type ToolEffect = "read" | "write" | "update" | "destructive";
|
|
4
21
|
interface ToolAnnotations {
|
|
22
|
+
/**
|
|
23
|
+
* Preferred semantic label. When set, drives both the approval gate (fires
|
|
24
|
+
* for `write`/`update`/`destructive`) and the approval-card styling.
|
|
25
|
+
*/
|
|
26
|
+
effect?: ToolEffect;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Prefer {@link effect}. Retained for backward compatibility
|
|
29
|
+
* with tools authored against the original flags and for MCP interop.
|
|
30
|
+
*/
|
|
5
31
|
readOnly?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated Prefer {@link effect} with value `"destructive"`. Retained
|
|
34
|
+
* so existing annotations continue to force the approval gate, and so
|
|
35
|
+
* MCP-style consumers that only read `destructive` still see the hint.
|
|
36
|
+
*/
|
|
6
37
|
destructive?: boolean;
|
|
7
38
|
idempotent?: boolean;
|
|
8
39
|
requiresUserContext?: boolean;
|
|
@@ -13,6 +44,10 @@ interface AgentToolDefinition {
|
|
|
13
44
|
parameters: JSONSchema7;
|
|
14
45
|
annotations?: ToolAnnotations;
|
|
15
46
|
}
|
|
47
|
+
interface ToolProvider {
|
|
48
|
+
getAgentTools(): AgentToolDefinition[];
|
|
49
|
+
executeAgentTool(name: string, args: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
50
|
+
}
|
|
16
51
|
interface Message {
|
|
17
52
|
id: string;
|
|
18
53
|
role: "user" | "assistant" | "system" | "tool";
|
|
@@ -25,6 +60,30 @@ interface ToolCall {
|
|
|
25
60
|
id: string;
|
|
26
61
|
name: string;
|
|
27
62
|
args: unknown;
|
|
63
|
+
/**
|
|
64
|
+
* Vendor-opaque "thought signature" blob attached by Vertex AI / Gemini
|
|
65
|
+
* 2.x models to every function call they emit. Resumed threads must
|
|
66
|
+
* echo this back verbatim on the next request or Vertex rejects with
|
|
67
|
+
* `INVALID_ARGUMENT: function call X is missing a thought_signature`.
|
|
68
|
+
* Stored here so adapters can preserve it across persistence
|
|
69
|
+
* boundaries. Non-Gemini endpoints leave this undefined.
|
|
70
|
+
* See https://docs.cloud.google.com/vertex-ai/generative-ai/docs/thought-signatures
|
|
71
|
+
*/
|
|
72
|
+
thoughtSignature?: string;
|
|
73
|
+
}
|
|
74
|
+
interface Thread {
|
|
75
|
+
id: string;
|
|
76
|
+
userId: string;
|
|
77
|
+
messages: Message[];
|
|
78
|
+
createdAt: Date;
|
|
79
|
+
updatedAt: Date;
|
|
80
|
+
}
|
|
81
|
+
interface ThreadStore {
|
|
82
|
+
create(userId: string): Promise<Thread>;
|
|
83
|
+
get(threadId: string, userId: string): Promise<Thread | null>;
|
|
84
|
+
list(userId: string): Promise<Thread[]>;
|
|
85
|
+
addMessage(threadId: string, userId: string, message: Message): Promise<void>;
|
|
86
|
+
delete(threadId: string, userId: string): Promise<boolean>;
|
|
28
87
|
}
|
|
29
88
|
type AgentEvent = {
|
|
30
89
|
type: "message_delta";
|
|
@@ -52,6 +111,21 @@ type AgentEvent = {
|
|
|
52
111
|
} | {
|
|
53
112
|
type: "metadata";
|
|
54
113
|
data: Record<string, unknown>;
|
|
114
|
+
} | {
|
|
115
|
+
/**
|
|
116
|
+
* Emitted by the agents plugin (not adapters) when a mutating tool call
|
|
117
|
+
* is awaiting human approval — fires for tools annotated with
|
|
118
|
+
* `effect: "write" | "update" | "destructive"` (preferred) or the
|
|
119
|
+
* legacy `destructive: true` boolean. Clients should render an approval
|
|
120
|
+
* prompt and POST to `/chat/approve` with the matching `approvalId` and
|
|
121
|
+
* a `decision` of `approve` or `deny`.
|
|
122
|
+
*/
|
|
123
|
+
type: "approval_pending";
|
|
124
|
+
approvalId: string;
|
|
125
|
+
streamId: string;
|
|
126
|
+
toolName: string;
|
|
127
|
+
args: unknown;
|
|
128
|
+
annotations?: ToolAnnotations;
|
|
55
129
|
};
|
|
56
130
|
interface AgentInput {
|
|
57
131
|
messages: Message[];
|
|
@@ -68,5 +142,5 @@ interface AgentAdapter {
|
|
|
68
142
|
run(input: AgentInput, context: AgentRunContext): AsyncGenerator<AgentEvent, void, unknown>;
|
|
69
143
|
}
|
|
70
144
|
//#endregion
|
|
71
|
-
export { AgentAdapter, AgentEvent, AgentInput, AgentRunContext, AgentToolDefinition, Message, ToolAnnotations, ToolCall };
|
|
145
|
+
export { AgentAdapter, AgentEvent, AgentInput, AgentRunContext, AgentToolDefinition, Message, Thread, ThreadStore, ToolAnnotations, ToolCall, ToolEffect, ToolProvider };
|
|
72
146
|
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","names":[],"sources":["../../../../shared/src/agent.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.d.ts","names":[],"sources":["../../../../shared/src/agent.ts"],"mappings":";;;;;AAsBA;;;;;AAEA;;;;;;;;;KAFY,UAAA;AAAA,UAEK,eAAA;EAkBI;AAGrB;;;EAhBE,MAAA,GAAS,UAAA;EAiBT;;;;EAZA,QAAA;EAec;;;AAGhB;;EAZE,WAAA;EACA,UAAA;EACA,mBAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,WAAA,GAAc,eAAA;AAAA;AAAA,UAGC,YAAA;EACf,aAAA,IAAiB,mBAAA;EACjB,gBAAA,CACE,IAAA,UACA,IAAA,WACA,MAAA,GAAS,WAAA,GACR,OAAA;AAAA;AAAA,UAOY,OAAA;EACf,EAAA;EACA,IAAA;EACA,OAAA;EACA,UAAA;EACA,SAAA,GAAY,QAAA;EACZ,SAAA,EAAW,IAAA;AAAA;AAAA,UAGI,QAAA;EACf,EAAA;EACA,IAAA;EACA,IAAA;EANA;;;;AAGF;;;;;EAaE,gBAAA;AAAA;AAAA,UAGe,MAAA;EACf,EAAA;EACA,MAAA;EACA,QAAA,EAAU,OAAA;EACV,SAAA,EAAW,IAAA;EACX,SAAA,EAAW,IAAA;AAAA;AAAA,UAOI,WAAA;EACf,MAAA,CAAO,MAAA,WAAiB,OAAA,CAAQ,MAAA;EAChC,GAAA,CAAI,QAAA,UAAkB,MAAA,WAAiB,OAAA,CAAQ,MAAA;EAC/C,IAAA,CAAK,MAAA,WAAiB,OAAA,CAAQ,MAAA;EAC9B,UAAA,CAAW,QAAA,UAAkB,MAAA,UAAgB,OAAA,EAAS,OAAA,GAAU,OAAA;EAChE,MAAA,CAAO,QAAA,UAAkB,MAAA,WAAiB,OAAA;AAAA;AAAA,KAOhC,UAAA;EACN,IAAA;EAAuB,OAAA;AAAA;EACvB,IAAA;EAAiB,OAAA;AAAA;EACjB,IAAA;EAAmB,MAAA;EAAgB,IAAA;EAAc,IAAA;AAAA;EAEjD,IAAA;EACA,MAAA;EACA,MAAA;EACA,KAAA;AAAA;EAEA,IAAA;EAAkB,OAAA;AAAA;EAElB,IAAA;EACA,MAAA;EACA,KAAA;AAAA;EAEA,IAAA;EAAkB,IAAA,EAAM,MAAA;AAAA;EA1BN;;;;;;;;EAoClB,IAAA;EACA,UAAA;EACA,QAAA;EACA,QAAA;EACA,IAAA;EACA,WAAA,GAAc,eAAA;AAAA;AAAA,UA+HH,UAAA;EACf,QAAA,EAAU,OAAA;EACV,KAAA,EAAO,mBAAA;EACP,QAAA;EACA,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,eAAA;;EAEf,WAAA,GAAc,IAAA,UAAc,IAAA,cAAkB,OAAA;EAC9C,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,YAAA;EACf,GAAA,CACE,KAAA,EAAO,UAAA,EACP,OAAA,EAAS,eAAA,GACR,cAAA,CAAe,UAAA;AAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AgentAdapter, AgentEvent, AgentInput, AgentRunContext, AgentToolDefinition, Message, ToolAnnotations, ToolCall } from "./agent.js";
|
|
1
|
+
import { AgentAdapter, AgentEvent, AgentInput, AgentRunContext, AgentToolDefinition, Message, Thread, ThreadStore, ToolAnnotations, ToolCall, ToolEffect, ToolProvider } from "./agent.js";
|
|
2
2
|
import { ResourceFieldEntry } from "./schemas/plugin-manifest.generated.js";
|
|
3
3
|
import { BasePlugin, BasePluginConfig, HttpMethod, IAppRequest, IAppResponse, IAppRouter, PluginConstructor, PluginData, PluginEndpointMap, PluginExports, PluginManifest, PluginMap, PluginPhase, ResourceRequirement, RouteConfig, TelemetryOptions, ToPlugin, WithAsUser } from "./plugin.js";
|
|
4
4
|
import { CacheConfig, CacheEntry, CacheStorage } from "./cache.js";
|
|
@@ -13,6 +13,14 @@ interface BasePlugin {
|
|
|
13
13
|
getSkipBodyParsingPaths?(): ReadonlySet<string>;
|
|
14
14
|
exports?(): unknown;
|
|
15
15
|
clientConfig?(): Record<string, unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* Binds runtime dependencies (telemetry, cache, plugin context) after the
|
|
18
|
+
* plugin has been constructed. Called by the AppKit core before `setup()`.
|
|
19
|
+
*/
|
|
20
|
+
attachContext?(deps: {
|
|
21
|
+
context?: unknown;
|
|
22
|
+
telemetryConfig?: TelemetryOptions;
|
|
23
|
+
}): void;
|
|
16
24
|
}
|
|
17
25
|
/** Base configuration interface for AppKit plugins */
|
|
18
26
|
interface BasePluginConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../../../../shared/src/plugin.ts"],"mappings":";;;;;;UAYiB,UAAA;EACf,IAAA;EAEA,qBAAA;EAEA,KAAA,IAAS,OAAA;EAET,YAAA,CAAa,MAAA,EAAQ,OAAA,CAAQ,MAAA;EAE7B,YAAA,IAAgB,iBAAA;EAEhB,uBAAA,KAA4B,WAAA;EAE5B,OAAA;EAEA,YAAA,KAAiB,MAAA;AAAA;;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../../../../shared/src/plugin.ts"],"mappings":";;;;;;UAYiB,UAAA;EACf,IAAA;EAEA,qBAAA;EAEA,KAAA,IAAS,OAAA;EAET,YAAA,CAAa,MAAA,EAAQ,OAAA,CAAQ,MAAA;EAE7B,YAAA,IAAgB,iBAAA;EAEhB,uBAAA,KAA4B,WAAA;EAE5B,OAAA;EAEA,YAAA,KAAiB,MAAA;EAQmB;;;;EAFpC,aAAA,EAAe,IAAA;IACb,OAAA;IACA,eAAA,GAAkB,gBAAA;EAAA;AAAA;;UAKL,gBAAA;EACf,IAAA;EACA,IAAA;EAAA,CAEC,GAAA;EAMD,SAAA,GAAY,gBAAA;AAAA;AAAA,KAGF,gBAAA;EAGN,MAAA;EACA,OAAA;EACA,IAAA;AAAA;AAAA,KAQM,WAAA;;;;;KAMA,iBAAA,KACN,gBAAA,YACM,UAAA,GAAa,UAAA,UAEvB,MAAA,EAAQ,CAAA,KACL,CAAA;EACH,cAAA,GAAiB,MAAA;EACjB,KAAA,GAAQ,WAAA;EA7BoB;;AAG9B;;EA+BE,QAAA,EAAU,cAAA;EA/BgB;;;;EAoC1B,uBAAA,EAAyB,MAAA,EAAQ,CAAA,GAAI,mBAAA;AAAA;AAvBvC;;;;;AAMA;;;;AANA,UAmCiB,cAAA,wCACP,IAAA,CACN,gBAAA;EAGF,IAAA,EAAM,KAAA;EACN,SAAA;IACE,QAAA,EAAU,IAAA,CAAK,mBAAA;IACf,QAAA,EAAU,IAAA,CAAK,mBAAA;EAAA;EAEjB,MAAA;IACE,MAAA,EAAQ,WAAA;EAAA;AAAA;;;;;;;;;UAYK,mBAAA,SAA4B,qBAAA;EAC3C,MAAA,EAAQ,MAAA,SAAe,kBAAA;EACvB,QAAA;AAAA;;;;;;KAoCU,aAAA,WAAwB,UAAA,IAClC,CAAA,sCAAqC,CAAA,GAAI,MAAA;;;;;;;;KAS/B,UAAA,QAAkB,GAAA,cAAgB,IAAA,mBAC1C,GAAA,GACA,GAAA;EAjEA;;;;;EAuEE,MAAA,GAAS,GAAA,EAAK,WAAA,KAAgB,GAAA;AAAA;;AAxDpC;;;;;;;KAmEY,SAAA,oBACS,UAAA,CAAW,iBAAA,gCAExB,CAAA,YAAa,CAAA,WAAY,UAAA,CAC7B,aAAA,CAAc,YAAA,CAAa,CAAA;;KAKnB,UAAA;EAAwB,MAAA,EAAQ,CAAA;EAAG,MAAA,EAAQ,CAAA;EAAG,IAAA,EAAM,CAAA;AAAA;;KAEpD,QAAA,4BACV,MAAA,GAAS,CAAA,KACN,UAAA,CAAW,CAAA,EAAG,CAAA,EAAG,CAAA;;KAGV,UAAA,GAAa,OAAA,CAAQ,MAAA;AAAA,KACrB,YAAA,GAAe,OAAA,CAAQ,QAAA;AAAA,KACvB,WAAA,GAAc,OAAA,CAAQ,OAAA;AAAA,KAEtB,UAAA;AAAA,KAEA,WAAA;EAnDwB,+DAqDlC,IAAA;EACA,MAAA,EAAQ,UAAA;EACR,IAAA;EACA,OAAA,GAAU,GAAA,EAAK,WAAA,EAAa,GAAA,EAAK,YAAA,KAAiB,OAAA,QAvDH;EAyD/C,eAAA;AAAA;;KAIU,iBAAA,GAAoB,MAAA"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Class: AppKitMcpClient
|
|
2
|
+
|
|
3
|
+
Lightweight MCP client for Databricks-hosted MCP servers.
|
|
4
|
+
|
|
5
|
+
Uses raw fetch() with JSON-RPC 2.0 over HTTP — no @modelcontextprotocol/sdk or LangChain dependency. Supports the Streamable HTTP transport only (POST with JSON-RPC request, single JSON-RPC response). Implements exactly four methods: `initialize`, `notifications/initialized`, `tools/list`, `tools/call`. No prompts/resources/completion/sampling.
|
|
6
|
+
|
|
7
|
+
All outbound URLs are gated by an McpHostPolicy: unallowlisted hosts are rejected before the first byte is sent, and workspace credentials are only forwarded to the same-origin workspace. See `mcp-host-policy.ts`.
|
|
8
|
+
|
|
9
|
+
Rationale for hand-rolling JSON-RPC instead of `@modelcontextprotocol/sdk`: see the file-level comment at the top of this module.
|
|
10
|
+
|
|
11
|
+
## Constructors[](#constructors "Direct link to Constructors")
|
|
12
|
+
|
|
13
|
+
### Constructor[](#constructor "Direct link to Constructor")
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
new AppKitMcpClient(
|
|
17
|
+
workspaceHost: string,
|
|
18
|
+
authenticate: () => Promise<Record<string, string>>,
|
|
19
|
+
policy: McpHostPolicy,
|
|
20
|
+
options: {
|
|
21
|
+
dnsLookup?: DnsLookup;
|
|
22
|
+
fetchImpl?: (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
23
|
+
}): AppKitMcpClient;
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
#### Parameters[](#parameters "Direct link to Parameters")
|
|
28
|
+
|
|
29
|
+
| Parameter | Type |
|
|
30
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
31
|
+
| `workspaceHost` | `string` |
|
|
32
|
+
| `authenticate` | () => `Promise`<`Record`<`string`, `string`>> |
|
|
33
|
+
| `policy` | `McpHostPolicy` |
|
|
34
|
+
| `options` | { `dnsLookup?`: `DnsLookup`; `fetchImpl?`: (`input`: `string` \| `URL` \| `Request`, `init?`: `RequestInit`) => `Promise`<`Response`>; } |
|
|
35
|
+
| `options.dnsLookup?` | `DnsLookup` |
|
|
36
|
+
| `options.fetchImpl?` | (`input`: `string` \| `URL` \| `Request`, `init?`: `RequestInit`) => `Promise`<`Response`> |
|
|
37
|
+
|
|
38
|
+
#### Returns[](#returns "Direct link to Returns")
|
|
39
|
+
|
|
40
|
+
`AppKitMcpClient`
|
|
41
|
+
|
|
42
|
+
## Methods[](#methods "Direct link to Methods")
|
|
43
|
+
|
|
44
|
+
### callTool()[](#calltool "Direct link to callTool()")
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
callTool(
|
|
48
|
+
qualifiedName: string,
|
|
49
|
+
args: unknown,
|
|
50
|
+
authHeaders?: Record<string, string>,
|
|
51
|
+
callerSignal?: AbortSignal): Promise<string>;
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### Parameters[](#parameters-1 "Direct link to Parameters")
|
|
56
|
+
|
|
57
|
+
| Parameter | Type |
|
|
58
|
+
| --------------- | ---------------------------- |
|
|
59
|
+
| `qualifiedName` | `string` |
|
|
60
|
+
| `args` | `unknown` |
|
|
61
|
+
| `authHeaders?` | `Record`<`string`, `string`> |
|
|
62
|
+
| `callerSignal?` | `AbortSignal` |
|
|
63
|
+
|
|
64
|
+
#### Returns[](#returns-1 "Direct link to Returns")
|
|
65
|
+
|
|
66
|
+
`Promise`<`string`>
|
|
67
|
+
|
|
68
|
+
***
|
|
69
|
+
|
|
70
|
+
### canForwardWorkspaceAuth()[](#canforwardworkspaceauth "Direct link to canForwardWorkspaceAuth()")
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
canForwardWorkspaceAuth(serverName: string): boolean;
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Whether the named MCP server may receive workspace-scoped auth headers (e.g., an OBO bearer token from an end-user request). Callers should gate auth-forwarding decisions on this to prevent credential exfiltration to non-workspace hosts.
|
|
78
|
+
|
|
79
|
+
#### Parameters[](#parameters-2 "Direct link to Parameters")
|
|
80
|
+
|
|
81
|
+
| Parameter | Type |
|
|
82
|
+
| ------------ | -------- |
|
|
83
|
+
| `serverName` | `string` |
|
|
84
|
+
|
|
85
|
+
#### Returns[](#returns-2 "Direct link to Returns")
|
|
86
|
+
|
|
87
|
+
`boolean`
|
|
88
|
+
|
|
89
|
+
***
|
|
90
|
+
|
|
91
|
+
### close()[](#close "Direct link to close()")
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
close(): Promise<void>;
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
#### Returns[](#returns-3 "Direct link to Returns")
|
|
99
|
+
|
|
100
|
+
`Promise`<`void`>
|
|
101
|
+
|
|
102
|
+
***
|
|
103
|
+
|
|
104
|
+
### connect()[](#connect "Direct link to connect()")
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
connect(endpoint: McpEndpointConfig): Promise<void>;
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### Parameters[](#parameters-3 "Direct link to Parameters")
|
|
112
|
+
|
|
113
|
+
| Parameter | Type |
|
|
114
|
+
| ---------- | ------------------- |
|
|
115
|
+
| `endpoint` | `McpEndpointConfig` |
|
|
116
|
+
|
|
117
|
+
#### Returns[](#returns-4 "Direct link to Returns")
|
|
118
|
+
|
|
119
|
+
`Promise`<`void`>
|
|
120
|
+
|
|
121
|
+
***
|
|
122
|
+
|
|
123
|
+
### connectAll()[](#connectall "Direct link to connectAll()")
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
connectAll(endpoints: McpEndpointConfig[]): Promise<McpConnectAllResult>;
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Connects every endpoint in parallel and returns a structured summary so callers can distinguish "all connected" from "some failed".
|
|
131
|
+
|
|
132
|
+
Returning the result instead of throwing is deliberate: one misconfigured MCP server should not take down the entire agents plugin at boot, and the agents plugin uses the summary to warn at startup with the failed-endpoint names. Errors are also logged here so a caller that ignores the return still gets per-endpoint diagnostics.
|
|
133
|
+
|
|
134
|
+
#### Parameters[](#parameters-4 "Direct link to Parameters")
|
|
135
|
+
|
|
136
|
+
| Parameter | Type |
|
|
137
|
+
| ----------- | ---------------------- |
|
|
138
|
+
| `endpoints` | `McpEndpointConfig`\[] |
|
|
139
|
+
|
|
140
|
+
#### Returns[](#returns-5 "Direct link to Returns")
|
|
141
|
+
|
|
142
|
+
`Promise`<[`McpConnectAllResult`](./docs/api/appkit/Interface.McpConnectAllResult.md)>
|
|
143
|
+
|
|
144
|
+
`connected` lists the endpoint names that initialised successfully; `failed` carries `{ name, error }` for the rest.
|
|
145
|
+
|
|
146
|
+
***
|
|
147
|
+
|
|
148
|
+
### getAllToolDefinitions()[](#getalltooldefinitions "Direct link to getAllToolDefinitions()")
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
getAllToolDefinitions(): AgentToolDefinition[];
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
#### Returns[](#returns-6 "Direct link to Returns")
|
|
156
|
+
|
|
157
|
+
[`AgentToolDefinition`](./docs/api/appkit/Interface.AgentToolDefinition.md)\[]
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Class: DatabricksAdapter
|
|
2
|
+
|
|
3
|
+
Adapter that talks directly to Databricks Model Serving `/invocations` endpoint.
|
|
4
|
+
|
|
5
|
+
No dependency on the Vercel AI SDK or LangChain. Uses raw `fetch()` to POST OpenAI-compatible payloads and parses the SSE stream itself. Calls `authenticate()` per-request so tokens are always fresh.
|
|
6
|
+
|
|
7
|
+
Handles both structured `tool_calls` responses and text-based tool call fallback parsing for models that output tool calls as text.
|
|
8
|
+
|
|
9
|
+
## Examples[](#examples "Direct link to Examples")
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { createApp, createAgent, agents } from "@databricks/appkit";
|
|
13
|
+
import { DatabricksAdapter } from "@databricks/appkit/beta";
|
|
14
|
+
import { WorkspaceClient } from "@databricks/sdk-experimental";
|
|
15
|
+
|
|
16
|
+
const adapter = DatabricksAdapter.fromServingEndpoint({
|
|
17
|
+
workspaceClient: new WorkspaceClient({}),
|
|
18
|
+
endpointName: "my-endpoint",
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
await createApp({
|
|
22
|
+
plugins: [
|
|
23
|
+
agents({
|
|
24
|
+
agents: {
|
|
25
|
+
assistant: createAgent({
|
|
26
|
+
instructions: "You are a helpful assistant.",
|
|
27
|
+
model: adapter,
|
|
28
|
+
}),
|
|
29
|
+
},
|
|
30
|
+
}),
|
|
31
|
+
],
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
const adapter = new DatabricksAdapter({
|
|
38
|
+
endpointUrl: "https://host/serving-endpoints/my-endpoint/invocations",
|
|
39
|
+
authenticate: async () => ({ Authorization: `Bearer ${token}` }),
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Implements[](#implements "Direct link to Implements")
|
|
45
|
+
|
|
46
|
+
* [`AgentAdapter`](./docs/api/appkit/Interface.AgentAdapter.md)
|
|
47
|
+
|
|
48
|
+
## Constructors[](#constructors "Direct link to Constructors")
|
|
49
|
+
|
|
50
|
+
### Constructor[](#constructor "Direct link to Constructor")
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
new DatabricksAdapter(options: DatabricksAdapterOptions): DatabricksAdapter;
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### Parameters[](#parameters "Direct link to Parameters")
|
|
58
|
+
|
|
59
|
+
| Parameter | Type |
|
|
60
|
+
| --------- | -------------------------- |
|
|
61
|
+
| `options` | `DatabricksAdapterOptions` |
|
|
62
|
+
|
|
63
|
+
#### Returns[](#returns "Direct link to Returns")
|
|
64
|
+
|
|
65
|
+
`DatabricksAdapter`
|
|
66
|
+
|
|
67
|
+
## Methods[](#methods "Direct link to Methods")
|
|
68
|
+
|
|
69
|
+
### run()[](#run "Direct link to run()")
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
run(input: AgentInput, context: AgentRunContext): AsyncGenerator<AgentEvent, void, unknown>;
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### Parameters[](#parameters-1 "Direct link to Parameters")
|
|
77
|
+
|
|
78
|
+
| Parameter | Type |
|
|
79
|
+
| --------- | ------------------------------------------------------------------------- |
|
|
80
|
+
| `input` | [`AgentInput`](./docs/api/appkit/Interface.AgentInput.md) |
|
|
81
|
+
| `context` | [`AgentRunContext`](./docs/api/appkit/Interface.AgentRunContext.md) |
|
|
82
|
+
|
|
83
|
+
#### Returns[](#returns-1 "Direct link to Returns")
|
|
84
|
+
|
|
85
|
+
`AsyncGenerator`<[`AgentEvent`](./docs/api/appkit/TypeAlias.AgentEvent.md), `void`, `unknown`>
|
|
86
|
+
|
|
87
|
+
#### Implementation of[](#implementation-of "Direct link to Implementation of")
|
|
88
|
+
|
|
89
|
+
[`AgentAdapter`](./docs/api/appkit/Interface.AgentAdapter.md).[`run`](./docs/api/appkit/Interface.AgentAdapter.md#run)
|
|
90
|
+
|
|
91
|
+
***
|
|
92
|
+
|
|
93
|
+
### fromModelServing()[](#frommodelserving "Direct link to fromModelServing()")
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
static fromModelServing(endpointName?: string, options?: ModelServingOptions): Promise<DatabricksAdapter>;
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Creates a DatabricksAdapter from a Model Serving endpoint name. Auto-creates a WorkspaceClient internally. Reads the endpoint name from the argument or the `DATABRICKS_SERVING_ENDPOINT_NAME` env var.
|
|
101
|
+
|
|
102
|
+
#### Parameters[](#parameters-2 "Direct link to Parameters")
|
|
103
|
+
|
|
104
|
+
| Parameter | Type |
|
|
105
|
+
| --------------- | --------------------- |
|
|
106
|
+
| `endpointName?` | `string` |
|
|
107
|
+
| `options?` | `ModelServingOptions` |
|
|
108
|
+
|
|
109
|
+
#### Returns[](#returns-2 "Direct link to Returns")
|
|
110
|
+
|
|
111
|
+
`Promise`<`DatabricksAdapter`>
|
|
112
|
+
|
|
113
|
+
#### Example[](#example "Direct link to Example")
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
// Reads endpoint from DATABRICKS_SERVING_ENDPOINT_NAME env var
|
|
117
|
+
const adapter = await DatabricksAdapter.fromModelServing();
|
|
118
|
+
|
|
119
|
+
// Explicit endpoint
|
|
120
|
+
const adapter = await DatabricksAdapter.fromModelServing("my-endpoint");
|
|
121
|
+
|
|
122
|
+
// With options
|
|
123
|
+
const adapter = await DatabricksAdapter.fromModelServing("my-endpoint", {
|
|
124
|
+
maxSteps: 5,
|
|
125
|
+
maxTokens: 2048,
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
***
|
|
131
|
+
|
|
132
|
+
### fromServingEndpoint()[](#fromservingendpoint "Direct link to fromServingEndpoint()")
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
static fromServingEndpoint(options: ServingEndpointOptions): Promise<DatabricksAdapter>;
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Creates a DatabricksAdapter for a Databricks Model Serving endpoint.
|
|
140
|
+
|
|
141
|
+
Routes through the shared `connectors/serving/stream` helper, which delegates to the SDK's `apiClient.request({ raw: true })`. That gives the adapter centralised URL encoding + authentication with the rest of the serving surface — no bespoke `fetch()` + `authenticate()` plumbing.
|
|
142
|
+
|
|
143
|
+
#### Parameters[](#parameters-3 "Direct link to Parameters")
|
|
144
|
+
|
|
145
|
+
| Parameter | Type |
|
|
146
|
+
| --------- | ------------------------ |
|
|
147
|
+
| `options` | `ServingEndpointOptions` |
|
|
148
|
+
|
|
149
|
+
#### Returns[](#returns-3 "Direct link to Returns")
|
|
150
|
+
|
|
151
|
+
`Promise`<`DatabricksAdapter`>
|