@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.
Files changed (218) hide show
  1. package/CLAUDE.md +54 -1
  2. package/NOTICE.md +2 -0
  3. package/dist/agents/databricks.d.ts.map +1 -1
  4. package/dist/agents/databricks.js +8 -3
  5. package/dist/agents/databricks.js.map +1 -1
  6. package/dist/appkit/package.js +1 -1
  7. package/dist/beta.d.ts +16 -1
  8. package/dist/beta.js +14 -1
  9. package/dist/connectors/index.js +3 -0
  10. package/dist/connectors/mcp/client.d.ts +85 -0
  11. package/dist/connectors/mcp/client.d.ts.map +1 -0
  12. package/dist/connectors/mcp/client.js +296 -0
  13. package/dist/connectors/mcp/client.js.map +1 -0
  14. package/dist/connectors/mcp/host-policy.d.ts +51 -0
  15. package/dist/connectors/mcp/host-policy.d.ts.map +1 -0
  16. package/dist/connectors/mcp/host-policy.js +168 -0
  17. package/dist/connectors/mcp/host-policy.js.map +1 -0
  18. package/dist/connectors/mcp/index.d.ts +3 -0
  19. package/dist/connectors/mcp/index.js +4 -0
  20. package/dist/connectors/mcp/types.d.ts +16 -0
  21. package/dist/connectors/mcp/types.d.ts.map +1 -0
  22. package/dist/context/index.js +1 -1
  23. package/dist/core/agent/build-toolkit.d.ts +2 -0
  24. package/dist/core/agent/build-toolkit.js +45 -0
  25. package/dist/core/agent/build-toolkit.js.map +1 -0
  26. package/dist/core/agent/consume-adapter-stream.js +33 -0
  27. package/dist/core/agent/consume-adapter-stream.js.map +1 -0
  28. package/dist/core/agent/create-agent.d.ts +27 -0
  29. package/dist/core/agent/create-agent.d.ts.map +1 -0
  30. package/dist/core/agent/create-agent.js +50 -0
  31. package/dist/core/agent/create-agent.js.map +1 -0
  32. package/dist/core/agent/load-agents.d.ts +72 -0
  33. package/dist/core/agent/load-agents.d.ts.map +1 -0
  34. package/dist/core/agent/load-agents.js +268 -0
  35. package/dist/core/agent/load-agents.js.map +1 -0
  36. package/dist/core/agent/normalize-result.js +39 -0
  37. package/dist/core/agent/normalize-result.js.map +1 -0
  38. package/dist/core/agent/plugins-map.js +44 -0
  39. package/dist/core/agent/plugins-map.js.map +1 -0
  40. package/dist/core/agent/run-agent.d.ts +58 -0
  41. package/dist/core/agent/run-agent.d.ts.map +1 -0
  42. package/dist/core/agent/run-agent.js +257 -0
  43. package/dist/core/agent/run-agent.js.map +1 -0
  44. package/dist/core/agent/system-prompt.js +38 -0
  45. package/dist/core/agent/system-prompt.js.map +1 -0
  46. package/dist/core/agent/toolkit-options.js +28 -0
  47. package/dist/core/agent/toolkit-options.js.map +1 -0
  48. package/dist/core/agent/toolkit-resolver.js +44 -0
  49. package/dist/core/agent/toolkit-resolver.js.map +1 -0
  50. package/dist/core/agent/tools/define-tool.d.ts +66 -0
  51. package/dist/core/agent/tools/define-tool.d.ts.map +1 -0
  52. package/dist/core/agent/tools/define-tool.js +50 -0
  53. package/dist/core/agent/tools/define-tool.js.map +1 -0
  54. package/dist/core/agent/tools/function-tool.d.ts +38 -0
  55. package/dist/core/agent/tools/function-tool.d.ts.map +1 -0
  56. package/dist/core/agent/tools/function-tool.js +22 -0
  57. package/dist/core/agent/tools/function-tool.js.map +1 -0
  58. package/dist/core/agent/tools/hosted-tools.d.ts +47 -0
  59. package/dist/core/agent/tools/hosted-tools.d.ts.map +1 -0
  60. package/dist/core/agent/tools/hosted-tools.js +67 -0
  61. package/dist/core/agent/tools/hosted-tools.js.map +1 -0
  62. package/dist/core/agent/tools/index.d.ts +5 -0
  63. package/dist/core/agent/tools/index.js +7 -0
  64. package/dist/core/agent/tools/json-schema.js +24 -0
  65. package/dist/core/agent/tools/json-schema.js.map +1 -0
  66. package/dist/core/agent/tools/sql-policy.js +256 -0
  67. package/dist/core/agent/tools/sql-policy.js.map +1 -0
  68. package/dist/core/agent/tools/tool.d.ts +63 -0
  69. package/dist/core/agent/tools/tool.d.ts.map +1 -0
  70. package/dist/core/agent/tools/tool.js +42 -0
  71. package/dist/core/agent/tools/tool.js.map +1 -0
  72. package/dist/core/agent/types.d.ts +299 -0
  73. package/dist/core/agent/types.d.ts.map +1 -0
  74. package/dist/core/agent/types.js +12 -0
  75. package/dist/core/agent/types.js.map +1 -0
  76. package/dist/core/appkit.d.ts +1 -0
  77. package/dist/core/appkit.d.ts.map +1 -1
  78. package/dist/core/appkit.js +31 -4
  79. package/dist/core/appkit.js.map +1 -1
  80. package/dist/core/plugin-context.d.ts +133 -0
  81. package/dist/core/plugin-context.d.ts.map +1 -0
  82. package/dist/core/plugin-context.js +220 -0
  83. package/dist/core/plugin-context.js.map +1 -0
  84. package/dist/index.d.ts +11 -11
  85. package/dist/internal-telemetry/appkit-log.js +19 -0
  86. package/dist/internal-telemetry/appkit-log.js.map +1 -0
  87. package/dist/internal-telemetry/config.js +15 -0
  88. package/dist/internal-telemetry/config.js.map +1 -0
  89. package/dist/internal-telemetry/index.js +4 -0
  90. package/dist/internal-telemetry/reporter.js +132 -0
  91. package/dist/internal-telemetry/reporter.js.map +1 -0
  92. package/dist/plugin/plugin.d.ts +18 -3
  93. package/dist/plugin/plugin.d.ts.map +1 -1
  94. package/dist/plugin/plugin.js +26 -2
  95. package/dist/plugin/plugin.js.map +1 -1
  96. package/dist/plugin/to-plugin.d.ts +3 -2
  97. package/dist/plugin/to-plugin.d.ts.map +1 -1
  98. package/dist/plugin/to-plugin.js +7 -4
  99. package/dist/plugin/to-plugin.js.map +1 -1
  100. package/dist/plugins/agents/agents.d.ts +186 -0
  101. package/dist/plugins/agents/agents.d.ts.map +1 -0
  102. package/dist/plugins/agents/agents.js +979 -0
  103. package/dist/plugins/agents/agents.js.map +1 -0
  104. package/dist/plugins/agents/defaults.js +13 -0
  105. package/dist/plugins/agents/defaults.js.map +1 -0
  106. package/dist/plugins/agents/event-channel.js +64 -0
  107. package/dist/plugins/agents/event-channel.js.map +1 -0
  108. package/dist/plugins/agents/event-translator.js +224 -0
  109. package/dist/plugins/agents/event-translator.js.map +1 -0
  110. package/dist/plugins/agents/index.d.ts +4 -0
  111. package/dist/plugins/agents/index.js +6 -0
  112. package/dist/plugins/agents/manifest.js +26 -0
  113. package/dist/plugins/agents/manifest.js.map +1 -0
  114. package/dist/plugins/agents/schemas.js +51 -0
  115. package/dist/plugins/agents/schemas.js.map +1 -0
  116. package/dist/plugins/agents/thread-store.js +58 -0
  117. package/dist/plugins/agents/thread-store.js.map +1 -0
  118. package/dist/plugins/agents/tool-approval-gate.js +75 -0
  119. package/dist/plugins/agents/tool-approval-gate.js.map +1 -0
  120. package/dist/plugins/analytics/analytics.d.ts +15 -1
  121. package/dist/plugins/analytics/analytics.d.ts.map +1 -1
  122. package/dist/plugins/analytics/analytics.js +37 -2
  123. package/dist/plugins/analytics/analytics.js.map +1 -1
  124. package/dist/plugins/analytics/index.js +1 -0
  125. package/dist/plugins/analytics/types.js +15 -0
  126. package/dist/plugins/analytics/types.js.map +1 -0
  127. package/dist/plugins/beta-exports.generated.d.ts +2 -0
  128. package/dist/plugins/beta-exports.generated.js +4 -0
  129. package/dist/plugins/files/plugin.d.ts +20 -2
  130. package/dist/plugins/files/plugin.d.ts.map +1 -1
  131. package/dist/plugins/files/plugin.js +120 -2
  132. package/dist/plugins/files/plugin.js.map +1 -1
  133. package/dist/plugins/genie/genie.d.ts +17 -3
  134. package/dist/plugins/genie/genie.d.ts.map +1 -1
  135. package/dist/plugins/genie/genie.js +61 -2
  136. package/dist/plugins/genie/genie.js.map +1 -1
  137. package/dist/plugins/genie/types.d.ts +10 -2
  138. package/dist/plugins/genie/types.d.ts.map +1 -1
  139. package/dist/plugins/jobs/plugin.js +1 -1
  140. package/dist/plugins/lakebase/index.d.ts +2 -2
  141. package/dist/plugins/lakebase/index.js +1 -1
  142. package/dist/plugins/lakebase/lakebase.d.ts +31 -3
  143. package/dist/plugins/lakebase/lakebase.d.ts.map +1 -1
  144. package/dist/plugins/lakebase/lakebase.js +77 -5
  145. package/dist/plugins/lakebase/lakebase.js.map +1 -1
  146. package/dist/plugins/lakebase/types.d.ts +39 -1
  147. package/dist/plugins/lakebase/types.d.ts.map +1 -1
  148. package/dist/plugins/server/index.d.ts +12 -0
  149. package/dist/plugins/server/index.d.ts.map +1 -1
  150. package/dist/plugins/server/index.js +47 -10
  151. package/dist/plugins/server/index.js.map +1 -1
  152. package/dist/plugins/server/types.d.ts +11 -3
  153. package/dist/plugins/server/types.d.ts.map +1 -1
  154. package/dist/shared/src/agent.d.ts +75 -1
  155. package/dist/shared/src/agent.d.ts.map +1 -1
  156. package/dist/shared/src/index.d.ts +1 -1
  157. package/dist/shared/src/plugin.d.ts +8 -0
  158. package/dist/shared/src/plugin.d.ts.map +1 -1
  159. package/docs/api/appkit/Class.AppKitMcpClient.md +157 -0
  160. package/docs/api/appkit/Class.DatabricksAdapter.md +151 -0
  161. package/docs/api/appkit/Class.Plugin.md +65 -23
  162. package/docs/api/appkit/Function.agentIdFromMarkdownPath.md +18 -0
  163. package/docs/api/appkit/Function.createAgent.md +33 -0
  164. package/docs/api/appkit/Function.createApp.md +10 -8
  165. package/docs/api/appkit/Function.defineTool.md +26 -0
  166. package/docs/api/appkit/Function.executeFromRegistry.md +25 -0
  167. package/docs/api/appkit/Function.functionToolToDefinition.md +16 -0
  168. package/docs/api/appkit/Function.isFunctionTool.md +16 -0
  169. package/docs/api/appkit/Function.isHostedTool.md +16 -0
  170. package/docs/api/appkit/Function.isToolkitEntry.md +18 -0
  171. package/docs/api/appkit/Function.loadAgentFromFile.md +21 -0
  172. package/docs/api/appkit/Function.loadAgentsFromDir.md +26 -0
  173. package/docs/api/appkit/Function.mcpServer.md +28 -0
  174. package/docs/api/appkit/Function.parseTextToolCalls.md +26 -0
  175. package/docs/api/appkit/Function.resolveHostedTools.md +16 -0
  176. package/docs/api/appkit/Function.runAgent.md +26 -0
  177. package/docs/api/appkit/Function.tool.md +28 -0
  178. package/docs/api/appkit/Function.toolsFromRegistry.md +20 -0
  179. package/docs/api/appkit/Interface.AgentAdapter.md +21 -0
  180. package/docs/api/appkit/Interface.AgentDefinition.md +112 -0
  181. package/docs/api/appkit/Interface.AgentInput.md +37 -0
  182. package/docs/api/appkit/Interface.AgentRunContext.md +32 -0
  183. package/docs/api/appkit/Interface.AgentToolDefinition.md +37 -0
  184. package/docs/api/appkit/Interface.AgentsPluginConfig.md +241 -0
  185. package/docs/api/appkit/Interface.AutoInheritToolsConfig.md +27 -0
  186. package/docs/api/appkit/Interface.BasePluginConfig.md +1 -0
  187. package/docs/api/appkit/Interface.FunctionTool.md +80 -0
  188. package/docs/api/appkit/Interface.McpConnectAllResult.md +38 -0
  189. package/docs/api/appkit/Interface.Message.md +55 -0
  190. package/docs/api/appkit/Interface.PluginToolkitProvider.md +22 -0
  191. package/docs/api/appkit/Interface.PromptContext.md +30 -0
  192. package/docs/api/appkit/Interface.RegisteredAgent.md +75 -0
  193. package/docs/api/appkit/Interface.RunAgentInput.md +34 -0
  194. package/docs/api/appkit/Interface.RunAgentResult.md +23 -0
  195. package/docs/api/appkit/Interface.Thread.md +46 -0
  196. package/docs/api/appkit/Interface.ThreadStore.md +103 -0
  197. package/docs/api/appkit/Interface.ToolAnnotations.md +56 -0
  198. package/docs/api/appkit/Interface.ToolConfig.md +72 -0
  199. package/docs/api/appkit/Interface.ToolEntry.md +73 -0
  200. package/docs/api/appkit/Interface.ToolProvider.md +38 -0
  201. package/docs/api/appkit/Interface.ToolkitEntry.md +59 -0
  202. package/docs/api/appkit/Interface.ToolkitOptions.md +45 -0
  203. package/docs/api/appkit/TypeAlias.AgentEvent.md +299 -0
  204. package/docs/api/appkit/TypeAlias.AgentTool.md +11 -0
  205. package/docs/api/appkit/TypeAlias.AgentTools.md +8 -0
  206. package/docs/api/appkit/TypeAlias.AgentToolsFn.md +20 -0
  207. package/docs/api/appkit/TypeAlias.BaseSystemPromptOption.md +9 -0
  208. package/docs/api/appkit/TypeAlias.HostedTool.md +10 -0
  209. package/docs/api/appkit/TypeAlias.Plugins.md +26 -0
  210. package/docs/api/appkit/TypeAlias.ResolvedToolEntry.md +29 -0
  211. package/docs/api/appkit/TypeAlias.ToolRegistry.md +6 -0
  212. package/docs/api/appkit/Variable.agents.md +19 -0
  213. package/docs/api/appkit.md +113 -62
  214. package/docs/plugins/agents.md +441 -0
  215. package/docs/privacy.md +41 -0
  216. package/llms.txt +54 -1
  217. package/package.json +4 -2
  218. 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":";;;UAMiB,eAAA;EACf,QAAA;EACA,WAAA;EACA,UAAA;EACA,mBAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,WAAA,GAAc,eAAA;AAAA;AAAA,UAgBC,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;AAAA;AAAA,KA2BU,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;AAAA,UA0Gb,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
+ {"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;;UAIF,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;AA1BZ;;;;AAAA,KAgCY,iBAAA,KACN,gBAAA,YACM,UAAA,GAAa,UAAA,UAEvB,MAAA,EAAQ,CAAA,KACL,CAAA;EACH,cAAA,GAAiB,MAAA;EACjB,KAAA,GAAQ,WAAA;EA7BR;;;;EAkCA,QAAA,EAAU,cAAA;EA/BgB;;;;EAoC1B,uBAAA,EAAyB,MAAA,EAAQ,CAAA,GAAI,mBAAA;AAAA;;;AAvBvC;;;;;AAMA;;UA6BiB,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;EAlEU;;;;;EAwER,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;EAlDqC,+DAoD/C,IAAA;EACA,MAAA,EAAQ,UAAA;EACR,IAAA;EACA,OAAA,GAAU,GAAA,EAAK,WAAA,EAAa,GAAA,EAAK,YAAA,KAAiB,OAAA,QAvDb;EAyDrC,eAAA;AAAA;;KAIU,iBAAA,GAAoB,MAAA"}
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`>