@datalayer/agent-runtimes 1.0.4 → 1.0.5

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 (267) hide show
  1. package/README.md +34 -0
  2. package/lib/App.js +1 -1
  3. package/lib/agents/AgentDetails.d.ts +22 -1
  4. package/lib/agents/AgentDetails.js +34 -47
  5. package/lib/api/index.d.ts +0 -1
  6. package/lib/api/index.js +4 -2
  7. package/lib/chat/Chat.d.ts +5 -106
  8. package/lib/chat/Chat.js +4 -4
  9. package/lib/chat/ChatFloating.d.ts +7 -140
  10. package/lib/chat/ChatFloating.js +2 -2
  11. package/lib/chat/ChatPopupStandalone.d.ts +8 -47
  12. package/lib/chat/ChatPopupStandalone.js +3 -3
  13. package/lib/chat/ChatSidebar.d.ts +4 -69
  14. package/lib/chat/ChatSidebar.js +2 -2
  15. package/lib/chat/ChatStandalone.d.ts +4 -54
  16. package/lib/chat/ChatStandalone.js +3 -3
  17. package/lib/chat/base/ChatBase.js +1083 -157
  18. package/lib/chat/header/ChatHeaderBase.d.ts +11 -6
  19. package/lib/chat/header/ChatHeaderBase.js +18 -16
  20. package/lib/chat/indicators/McpStatusIndicator.d.ts +7 -4
  21. package/lib/chat/indicators/McpStatusIndicator.js +7 -32
  22. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +4 -1
  23. package/lib/chat/indicators/SandboxStatusIndicator.js +9 -9
  24. package/lib/chat/indicators/SkillsStatusIndicator.d.ts +7 -0
  25. package/lib/chat/indicators/SkillsStatusIndicator.js +88 -0
  26. package/lib/chat/indicators/index.d.ts +1 -0
  27. package/lib/chat/indicators/index.js +1 -0
  28. package/lib/chat/messages/ChatMessageList.d.ts +1 -1
  29. package/lib/chat/messages/ChatMessageList.js +108 -113
  30. package/lib/chat/prompt/InputFooter.d.ts +19 -6
  31. package/lib/chat/prompt/InputFooter.js +71 -18
  32. package/lib/chat/prompt/InputPrompt.d.ts +3 -1
  33. package/lib/chat/prompt/InputPrompt.js +4 -4
  34. package/lib/chat/prompt/InputPromptFooter.js +1 -1
  35. package/lib/chat/prompt/InputPromptLexical.d.ts +3 -1
  36. package/lib/chat/prompt/InputPromptLexical.js +12 -5
  37. package/lib/chat/prompt/InputPromptText.d.ts +3 -1
  38. package/lib/chat/prompt/InputPromptText.js +2 -2
  39. package/lib/chat/tools/ToolApprovalBanner.js +1 -1
  40. package/lib/chat/tools/ToolCallDisplay.d.ts +3 -1
  41. package/lib/chat/tools/ToolCallDisplay.js +2 -2
  42. package/lib/chat/usage/TokenUsageBar.js +20 -2
  43. package/lib/client/AgentRuntimesClientContext.d.ts +53 -0
  44. package/lib/client/AgentRuntimesClientContext.js +55 -0
  45. package/lib/client/AgentsMixin.d.ts +0 -18
  46. package/lib/client/AgentsMixin.js +6 -30
  47. package/lib/client/IAgentRuntimesClient.d.ts +215 -0
  48. package/lib/client/IAgentRuntimesClient.js +5 -0
  49. package/lib/client/SdkAgentRuntimesClient.d.ts +151 -0
  50. package/lib/client/SdkAgentRuntimesClient.js +134 -0
  51. package/lib/client/index.d.ts +4 -1
  52. package/lib/client/index.js +3 -1
  53. package/lib/components/NotificationEventCard.js +5 -1
  54. package/lib/config/AgentConfiguration.js +3 -3
  55. package/lib/context/ContextDistribution.d.ts +3 -1
  56. package/lib/context/ContextDistribution.js +8 -27
  57. package/lib/context/ContextInspector.d.ts +3 -1
  58. package/lib/context/ContextInspector.js +19 -67
  59. package/lib/context/ContextPanel.d.ts +3 -1
  60. package/lib/context/ContextPanel.js +104 -64
  61. package/lib/context/ContextUsage.d.ts +3 -1
  62. package/lib/context/ContextUsage.js +3 -3
  63. package/lib/context/CostTracker.d.ts +9 -3
  64. package/lib/context/CostTracker.js +26 -47
  65. package/lib/context/CostUsageChart.d.ts +12 -0
  66. package/lib/context/CostUsageChart.js +378 -0
  67. package/lib/context/GraphFlowChart.d.ts +16 -0
  68. package/lib/context/GraphFlowChart.js +182 -0
  69. package/lib/context/TokenUsageChart.d.ts +8 -1
  70. package/lib/context/TokenUsageChart.js +349 -211
  71. package/lib/context/TurnGraphChart.d.ts +39 -0
  72. package/lib/context/TurnGraphChart.js +538 -0
  73. package/lib/context/otelWsPool.d.ts +20 -0
  74. package/lib/context/otelWsPool.js +69 -0
  75. package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -17
  76. package/lib/examples/A2UiComponentGalleryExample.js +315 -522
  77. package/lib/examples/A2UiContactCardExample.d.ts +0 -18
  78. package/lib/examples/A2UiContactCardExample.js +154 -411
  79. package/lib/examples/A2UiRestaurantExample.d.ts +0 -30
  80. package/lib/examples/A2UiRestaurantExample.js +114 -212
  81. package/lib/examples/A2UiViewerExample.d.ts +0 -18
  82. package/lib/examples/A2UiViewerExample.js +283 -532
  83. package/lib/examples/AgUiBackendToolRenderingExample.js +1 -1
  84. package/lib/examples/AgUiHaikuGenUiExample.d.ts +1 -1
  85. package/lib/examples/AgUiHaikuGenUiExample.js +1 -1
  86. package/lib/examples/AgentCheckpointsExample.js +13 -27
  87. package/lib/examples/AgentCodemodeExample.d.ts +4 -6
  88. package/lib/examples/AgentCodemodeExample.js +591 -169
  89. package/lib/examples/AgentEvalsExample.js +12 -16
  90. package/lib/examples/AgentGuardrailsExample.js +370 -64
  91. package/lib/examples/AgentHooksExample.d.ts +3 -0
  92. package/lib/examples/AgentHooksExample.js +104 -0
  93. package/lib/examples/AgentMCPExample.d.ts +3 -0
  94. package/lib/examples/AgentMCPExample.js +480 -0
  95. package/lib/examples/AgentMemoryExample.js +13 -17
  96. package/lib/examples/AgentMonitoringExample.js +260 -199
  97. package/lib/examples/AgentNotificationsExample.js +49 -17
  98. package/lib/examples/AgentOtelExample.js +2 -3
  99. package/lib/examples/AgentOutputsExample.d.ts +11 -6
  100. package/lib/examples/AgentOutputsExample.js +382 -81
  101. package/lib/examples/AgentParametersExample.d.ts +3 -0
  102. package/lib/examples/AgentParametersExample.js +246 -0
  103. package/lib/examples/AgentSandboxExample.d.ts +2 -2
  104. package/lib/examples/AgentSandboxExample.js +68 -40
  105. package/lib/examples/AgentSkillsExample.js +91 -99
  106. package/lib/examples/{AgentspecExample.js → AgentSpecsExample.js} +10 -21
  107. package/lib/examples/AgentSubagentsExample.d.ts +14 -0
  108. package/lib/examples/AgentSubagentsExample.js +228 -0
  109. package/lib/examples/AgentToolApprovalsExample.js +29 -557
  110. package/lib/examples/AgentTriggersExample.js +819 -565
  111. package/lib/examples/ChatCustomExample.js +11 -24
  112. package/lib/examples/ChatExample.js +7 -24
  113. package/lib/examples/CopilotKitLexicalExample.js +2 -1
  114. package/lib/examples/CopilotKitNotebookExample.js +2 -1
  115. package/lib/examples/HomeExample.d.ts +15 -0
  116. package/lib/examples/HomeExample.js +77 -0
  117. package/lib/examples/Lexical2Example.js +4 -2
  118. package/lib/examples/{LexicalExample.d.ts → LexicalAgentExample.d.ts} +4 -4
  119. package/lib/examples/{LexicalExample.js → LexicalAgentExample.js} +65 -16
  120. package/lib/examples/{LexicalSidebarExample.d.ts → LexicalAgentSidebarExample.d.ts} +5 -5
  121. package/lib/examples/LexicalAgentSidebarExample.js +261 -0
  122. package/lib/examples/NotebookAgentExample.d.ts +9 -0
  123. package/lib/examples/NotebookAgentExample.js +192 -0
  124. package/lib/examples/{NotebookSidebarExample.d.ts → NotebookAgentSidebarExample.d.ts} +2 -2
  125. package/lib/examples/NotebookAgentSidebarExample.js +221 -0
  126. package/lib/examples/{DatalayerNotebookExample.d.ts → NotebookCollaborationExample.d.ts} +4 -4
  127. package/lib/examples/{DatalayerNotebookExample.js → NotebookCollaborationExample.js} +3 -3
  128. package/lib/examples/NotebookExample.d.ts +4 -7
  129. package/lib/examples/NotebookExample.js +14 -146
  130. package/lib/examples/components/AuthRequiredView.d.ts +6 -0
  131. package/lib/examples/components/AuthRequiredView.js +33 -0
  132. package/lib/examples/components/ExampleWrapper.d.ts +7 -0
  133. package/lib/examples/components/ExampleWrapper.js +25 -6
  134. package/lib/examples/{ag-ui → components}/haiku/HaikuDisplay.js +1 -1
  135. package/lib/examples/{ag-ui → components}/haiku/InlineHaikuCard.js +1 -1
  136. package/lib/examples/{ag-ui → components}/haiku/index.d.ts +1 -1
  137. package/lib/examples/{ag-ui → components}/haiku/index.js +1 -1
  138. package/lib/examples/components/index.d.ts +3 -0
  139. package/lib/examples/components/index.js +4 -0
  140. package/lib/examples/{ag-ui → components}/weather/index.d.ts +1 -1
  141. package/lib/examples/{ag-ui → components}/weather/index.js +1 -1
  142. package/lib/examples/example-selector.d.ts +17 -4
  143. package/lib/examples/example-selector.js +107 -41
  144. package/lib/examples/index.d.ts +9 -6
  145. package/lib/examples/index.js +9 -6
  146. package/lib/examples/main.js +217 -27
  147. package/lib/examples/utils/a2ui.d.ts +18 -0
  148. package/lib/examples/utils/a2ui.js +69 -0
  149. package/lib/examples/utils/a2uiMarkdownProvider.d.ts +7 -0
  150. package/lib/examples/utils/a2uiMarkdownProvider.js +9 -0
  151. package/lib/examples/utils/agentId.d.ts +18 -0
  152. package/lib/examples/utils/agentId.js +54 -0
  153. package/lib/examples/utils/agents/earthquake-detector.json +11 -11
  154. package/lib/examples/utils/agents/sales-forecaster.json +11 -11
  155. package/lib/examples/utils/agents/social-post-generator.json +11 -11
  156. package/lib/examples/utils/agents/stock-market.json +11 -11
  157. package/lib/examples/utils/examplesStore.js +82 -27
  158. package/lib/hooks/index.d.ts +8 -8
  159. package/lib/hooks/index.js +7 -7
  160. package/lib/hooks/useA2A.d.ts +2 -3
  161. package/lib/hooks/useAIAgentsWebSocket.d.ts +43 -4
  162. package/lib/hooks/useAIAgentsWebSocket.js +118 -12
  163. package/lib/hooks/useAcp.d.ts +1 -2
  164. package/lib/hooks/useAgUi.d.ts +1 -1
  165. package/lib/hooks/{useAgents.d.ts → useAgentRuntimes.d.ts} +39 -2
  166. package/lib/hooks/{useAgents.js → useAgentRuntimes.js} +125 -15
  167. package/lib/hooks/useAgentsCatalog.js +1 -1
  168. package/lib/hooks/useAgentsService.d.ts +2 -2
  169. package/lib/hooks/useAgentsService.js +7 -7
  170. package/lib/hooks/useCheckpoints.js +1 -1
  171. package/lib/hooks/useConfig.d.ts +4 -1
  172. package/lib/hooks/useConfig.js +10 -3
  173. package/lib/hooks/useContextSnapshot.d.ts +9 -4
  174. package/lib/hooks/useContextSnapshot.js +9 -37
  175. package/lib/hooks/useMonitoring.js +3 -0
  176. package/lib/hooks/useSandbox.d.ts +20 -8
  177. package/lib/hooks/useSandbox.js +105 -40
  178. package/lib/hooks/useSkills.d.ts +23 -5
  179. package/lib/hooks/useSkills.js +94 -39
  180. package/lib/hooks/useToolApprovals.d.ts +60 -36
  181. package/lib/hooks/useToolApprovals.js +318 -69
  182. package/lib/hooks/useVercelAI.d.ts +1 -1
  183. package/lib/index.d.ts +2 -1
  184. package/lib/index.js +1 -0
  185. package/lib/inference/index.d.ts +0 -1
  186. package/lib/middleware/index.d.ts +0 -1
  187. package/lib/protocols/AGUIAdapter.js +6 -0
  188. package/lib/protocols/VercelAIAdapter.d.ts +7 -0
  189. package/lib/protocols/VercelAIAdapter.js +59 -7
  190. package/lib/specs/agents/agents.d.ts +10 -0
  191. package/lib/specs/agents/agents.js +2139 -262
  192. package/lib/specs/agents/index.js +3 -1
  193. package/lib/specs/envvars.d.ts +1 -0
  194. package/lib/specs/envvars.js +38 -20
  195. package/lib/specs/evals.js +6 -6
  196. package/lib/specs/events.d.ts +3 -10
  197. package/lib/specs/events.js +127 -84
  198. package/lib/specs/frontendTools.js +2 -2
  199. package/lib/specs/guardrails.d.ts +0 -7
  200. package/lib/specs/guardrails.js +240 -159
  201. package/lib/specs/index.d.ts +1 -0
  202. package/lib/specs/index.js +1 -0
  203. package/lib/specs/mcpServers.js +35 -6
  204. package/lib/specs/memory.d.ts +0 -2
  205. package/lib/specs/memory.js +4 -17
  206. package/lib/specs/models.js +25 -5
  207. package/lib/specs/notifications.js +102 -18
  208. package/lib/specs/outputs.js +15 -9
  209. package/lib/specs/personas.d.ts +41 -0
  210. package/lib/specs/personas.js +168 -0
  211. package/lib/specs/skills.d.ts +2 -1
  212. package/lib/specs/skills.js +41 -23
  213. package/lib/specs/teams/index.js +3 -1
  214. package/lib/specs/teams/teams.js +468 -348
  215. package/lib/specs/tools.js +4 -4
  216. package/lib/specs/triggers.js +61 -11
  217. package/lib/stores/agentRuntimeStore.d.ts +204 -0
  218. package/lib/stores/agentRuntimeStore.js +636 -0
  219. package/lib/stores/index.d.ts +1 -1
  220. package/lib/stores/index.js +1 -1
  221. package/lib/tools/adapters/copilotkit/lexicalHooks.d.ts +1 -2
  222. package/lib/tools/adapters/copilotkit/lexicalHooks.js +1 -3
  223. package/lib/tools/adapters/copilotkit/notebookHooks.d.ts +1 -2
  224. package/lib/tools/adapters/copilotkit/notebookHooks.js +1 -3
  225. package/lib/tools/index.d.ts +0 -2
  226. package/lib/tools/index.js +0 -1
  227. package/lib/types/agentspecs.d.ts +50 -1
  228. package/lib/types/chat.d.ts +309 -8
  229. package/lib/types/context.d.ts +27 -0
  230. package/lib/types/cost.d.ts +2 -2
  231. package/lib/types/index.d.ts +2 -0
  232. package/lib/types/index.js +2 -0
  233. package/lib/types/mcp.d.ts +8 -0
  234. package/lib/types/models.d.ts +2 -2
  235. package/lib/types/personas.d.ts +25 -0
  236. package/lib/types/personas.js +5 -0
  237. package/lib/types/skills.d.ts +43 -1
  238. package/lib/types/stream.d.ts +110 -0
  239. package/lib/types/stream.js +36 -0
  240. package/lib/utils/utils.d.ts +9 -5
  241. package/lib/utils/utils.js +9 -5
  242. package/package.json +13 -9
  243. package/scripts/codegen/__pycache__/generate_agents.cpython-313.pyc +0 -0
  244. package/scripts/codegen/__pycache__/generate_events.cpython-313.pyc +0 -0
  245. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  246. package/scripts/codegen/generate_agents.py +102 -6
  247. package/scripts/codegen/generate_events.py +35 -13
  248. package/scripts/codegen/generate_personas.py +319 -0
  249. package/scripts/codegen/generate_skills.py +9 -9
  250. package/scripts/sync-jupyter.sh +26 -7
  251. package/lib/api/tool-approvals.d.ts +0 -62
  252. package/lib/api/tool-approvals.js +0 -145
  253. package/lib/examples/LexicalSidebarExample.js +0 -163
  254. package/lib/examples/NotebookSidebarExample.js +0 -119
  255. package/lib/examples/NotebookSimpleExample.d.ts +0 -6
  256. package/lib/examples/NotebookSimpleExample.js +0 -22
  257. package/lib/examples/ag-ui/index.d.ts +0 -10
  258. package/lib/examples/ag-ui/index.js +0 -16
  259. package/lib/hooks/useAgentsRegistry.d.ts +0 -10
  260. package/lib/hooks/useAgentsRegistry.js +0 -20
  261. package/lib/stores/agentsStore.d.ts +0 -123
  262. package/lib/stores/agentsStore.js +0 -270
  263. /package/lib/examples/{AgentspecExample.d.ts → AgentSpecsExample.d.ts} +0 -0
  264. /package/lib/examples/{ag-ui → components}/haiku/HaikuDisplay.d.ts +0 -0
  265. /package/lib/examples/{ag-ui → components}/haiku/InlineHaikuCard.d.ts +0 -0
  266. /package/lib/examples/{ag-ui → components}/weather/InlineWeatherCard.d.ts +0 -0
  267. /package/lib/examples/{ag-ui → components}/weather/InlineWeatherCard.js +0 -0
@@ -13,7 +13,6 @@
13
13
  import type { Constructor } from '@datalayer/core/lib/client/utils/mixins';
14
14
  import type { AgentEvent, CreateAgentEventRequest, GetAgentEventResponse, ListAgentEventsParams, ListAgentEventsResponse, UpdateAgentEventRequest, RunningAgent, AgentUsageSummary, ConversationCheckpoint, AgentNotification, NotificationFilters, OutputArtifact, EvalReport, RunEvalsRequest, ContextUsage, CostUsage, AgentSpec } from '../types';
15
15
  import type { CreateAgentRuntimeRequest, CreateRuntimeApiResponse } from '../types/agents-lifecycle';
16
- import type { ToolApproval, ToolApprovalFilters } from '../types/tool-approvals';
17
16
  /** Agents mixin providing durable agent management. */
18
17
  export declare function AgentsMixin<TBase extends Constructor>(Base: TBase): {
19
18
  new (...args: any[]): {
@@ -53,23 +52,6 @@ export declare function AgentsMixin<TBase extends Constructor>(Base: TBase): {
53
52
  * @returns Usage summary including tokens, cost, iterations
54
53
  */
55
54
  getAgentUsage(podName: string, agentId?: string): Promise<AgentUsageSummary>;
56
- /**
57
- * List tool approval requests, optionally filtered.
58
- * @param filters - Optional filters (status, agentId)
59
- * @returns Array of tool approval records
60
- */
61
- getToolApprovals(filters?: ToolApprovalFilters): Promise<ToolApproval[]>;
62
- /**
63
- * Approve a tool execution request.
64
- * @param approvalId - ID of the approval to approve
65
- */
66
- approveToolRequest(approvalId: string): Promise<void>;
67
- /**
68
- * Reject a tool execution request.
69
- * @param approvalId - ID of the approval to reject
70
- * @param reason - Optional rejection reason
71
- */
72
- rejectToolRequest(approvalId: string, reason?: string): Promise<void>;
73
55
  /**
74
56
  * List notifications, optionally filtered.
75
57
  * @param filters - Optional filters (level, read status)
@@ -3,7 +3,6 @@
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
5
  import * as agents from '../api/agents';
6
- import * as toolApprovals from '../api/tool-approvals';
7
6
  import * as notifications from '../api/notifications';
8
7
  import * as events from '../api/events';
9
8
  import * as output from '../api/output';
@@ -80,35 +79,12 @@ export function AgentsMixin(Base) {
80
79
  // ========================================================================
81
80
  // Tool Approvals
82
81
  // ========================================================================
83
- /**
84
- * List tool approval requests, optionally filtered.
85
- * @param filters - Optional filters (status, agentId)
86
- * @returns Array of tool approval records
87
- */
88
- async getToolApprovals(filters) {
89
- const token = this.getToken();
90
- const baseUrl = this.getIamRunUrl();
91
- return toolApprovals.getToolApprovals(token, filters, baseUrl);
92
- }
93
- /**
94
- * Approve a tool execution request.
95
- * @param approvalId - ID of the approval to approve
96
- */
97
- async approveToolRequest(approvalId) {
98
- const token = this.getToken();
99
- const baseUrl = this.getIamRunUrl();
100
- return toolApprovals.approveToolRequest(token, approvalId, baseUrl);
101
- }
102
- /**
103
- * Reject a tool execution request.
104
- * @param approvalId - ID of the approval to reject
105
- * @param reason - Optional rejection reason
106
- */
107
- async rejectToolRequest(approvalId, reason) {
108
- const token = this.getToken();
109
- const baseUrl = this.getIamRunUrl();
110
- return toolApprovals.rejectToolRequest(token, approvalId, reason, baseUrl);
111
- }
82
+ //
83
+ // Tool approval interactions have been removed from the REST mixin.
84
+ // All approval flows (list / approve / reject / realtime updates) now
85
+ // travel exclusively over the AI Agents websocket stream. Use the
86
+ // `useToolApprovals` React hook (or send `tool_approval_decision`
87
+ // messages directly on the stream) instead.
112
88
  // ========================================================================
113
89
  // Notifications
114
90
  // ========================================================================
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Domain-level interface abstracting every operation the chat component and
3
+ * hooks need against the Datalayer agent runtime platform.
4
+ *
5
+ * Two concrete implementations are expected:
6
+ *
7
+ * 1. `SdkAgentRuntimesClient` — the default browser / Node implementation
8
+ * that delegates to a `DatalayerClient` composed with `AgentsMixin`.
9
+ * Makes real HTTP calls against the configured service URLs.
10
+ *
11
+ * 2. A bridge implementation hosted inside the VSCode webview sandbox (lives
12
+ * in the `vscode-datalayer` extension, not in this package). It implements
13
+ * the same interface but tunnels every call to the extension host via
14
+ * `postMessage` correlation IDs. The extension host answers the calls
15
+ * using its own `SdkAgentRuntimesClient` so the webview never touches the
16
+ * network or the auth token directly.
17
+ *
18
+ * The interface is deliberately transport-agnostic: consumers depend on
19
+ * semantic method names (`listRunningAgents`, `getAgentStatus`) rather
20
+ * than on URLs, fetch options, or WebSocket frames.
21
+ *
22
+ * @module client/IAgentRuntimesClient
23
+ */
24
+ import type { AgentEvent, AgentNotification, AgentUsageSummary, ContextUsage, ConversationCheckpoint, CostUsage, CreateAgentEventRequest, EvalReport, GetAgentEventResponse, ListAgentEventsParams, ListAgentEventsResponse, NotificationFilters, OutputArtifact, RunEvalsRequest, RunningAgent, UpdateAgentEventRequest } from '../types';
25
+ import type { CreateAgentRuntimeRequest, CreateRuntimeApiResponse } from '../types/agents-lifecycle';
26
+ /**
27
+ * Unified client contract for the Datalayer agent-runtimes control plane.
28
+ *
29
+ * Every method corresponds one-to-one with an operation on
30
+ * `AgentsMixin`. Phase 1 of the interface covers the non-streaming
31
+ * surface. Streaming chat (`streamChat`), chat config, history, and related
32
+ * transport-specific operations will be added in a follow-up once
33
+ * `AgentsMixin` grows typed wrappers for them.
34
+ */
35
+ export interface IAgentRuntimesClient {
36
+ /**
37
+ * Lists every running agent across all runtimes the caller can see.
38
+ *
39
+ * @returns Array of running agent summaries.
40
+ */
41
+ listRunningAgents(): Promise<RunningAgent[]>;
42
+ /**
43
+ * Retrieves the detailed status of a specific running agent.
44
+ *
45
+ * @param podName - Pod name hosting the agent.
46
+ * @param agentId - Optional agent ID within the pod (for multi-agent pods).
47
+ *
48
+ * @returns The agent's current status record.
49
+ */
50
+ getAgentStatus(podName: string, agentId?: string): Promise<RunningAgent>;
51
+ /**
52
+ * Pauses a running agent (light checkpoint by default).
53
+ *
54
+ * @param podName - Pod name hosting the agent.
55
+ */
56
+ pauseAgent(podName: string): Promise<void>;
57
+ /**
58
+ * Resumes a previously paused / checkpointed agent.
59
+ *
60
+ * @param podName - Pod name hosting the agent.
61
+ */
62
+ resumeAgent(podName: string): Promise<void>;
63
+ /**
64
+ * Lists conversation checkpoints for an agent.
65
+ *
66
+ * @param podName - Pod name hosting the agent.
67
+ * @param agentId - Optional agent ID within the pod.
68
+ *
69
+ * @returns Array of conversation checkpoints.
70
+ */
71
+ getAgentCheckpoints(podName: string, agentId?: string): Promise<ConversationCheckpoint[]>;
72
+ /**
73
+ * Retrieves the token and cost usage summary for an agent.
74
+ *
75
+ * @param podName - Pod name hosting the agent.
76
+ * @param agentId - Optional agent ID within the pod.
77
+ *
78
+ * @returns Aggregated usage totals.
79
+ */
80
+ getAgentUsage(podName: string, agentId?: string): Promise<AgentUsageSummary>;
81
+ /**
82
+ * Lists agent notifications, optionally filtered by level or read status.
83
+ *
84
+ * @param filters - Optional filter predicates.
85
+ *
86
+ * @returns Array of notifications matching the filters.
87
+ */
88
+ listNotifications(filters?: NotificationFilters): Promise<AgentNotification[]>;
89
+ /**
90
+ * Marks a single notification as read.
91
+ *
92
+ * @param notificationId - ID of the notification.
93
+ */
94
+ markNotificationRead(notificationId: string): Promise<void>;
95
+ /**
96
+ * Marks every notification for the caller as read.
97
+ */
98
+ markAllNotificationsRead(): Promise<void>;
99
+ /**
100
+ * Creates a new event for an agent.
101
+ *
102
+ * @param data - Event payload.
103
+ *
104
+ * @returns The created event wrapped in a success envelope.
105
+ */
106
+ createEvent(data: CreateAgentEventRequest): Promise<{
107
+ success: boolean;
108
+ event: AgentEvent;
109
+ }>;
110
+ /**
111
+ * Lists events for an agent with optional filters.
112
+ *
113
+ * @param agentId - Agent identifier whose events are being listed.
114
+ * @param params - Optional list filters (pagination, type, status).
115
+ *
116
+ * @returns Paginated events response.
117
+ */
118
+ listEvents(agentId: string, params?: Omit<ListAgentEventsParams, 'agent_id'>): Promise<ListAgentEventsResponse>;
119
+ /**
120
+ * Retrieves a single event by identifier.
121
+ *
122
+ * @param agentId - Agent that owns the event.
123
+ * @param eventId - Event identifier.
124
+ *
125
+ * @returns The requested event.
126
+ */
127
+ getEvent(agentId: string, eventId: string): Promise<GetAgentEventResponse>;
128
+ /**
129
+ * Patches an existing event.
130
+ *
131
+ * @param agentId - Agent that owns the event.
132
+ * @param eventId - Event identifier.
133
+ * @param data - Partial event fields to update.
134
+ *
135
+ * @returns The updated event.
136
+ */
137
+ updateEvent(agentId: string, eventId: string, data: UpdateAgentEventRequest): Promise<GetAgentEventResponse>;
138
+ /**
139
+ * Lists every output artifact an agent has generated.
140
+ *
141
+ * @param agentId - Agent identifier.
142
+ *
143
+ * @returns Array of output artifacts.
144
+ */
145
+ getAgentOutputs(agentId: string): Promise<OutputArtifact[]>;
146
+ /**
147
+ * Retrieves a single output artifact by identifier.
148
+ *
149
+ * @param agentId - Agent identifier.
150
+ * @param outputId - Output artifact identifier.
151
+ *
152
+ * @returns The requested output artifact.
153
+ */
154
+ getAgentOutput(agentId: string, outputId: string): Promise<OutputArtifact>;
155
+ /**
156
+ * Generates a new output artifact for an agent.
157
+ *
158
+ * @param agentId - Agent identifier.
159
+ * @param format - Requested output format (e.g. `"pdf"`).
160
+ * @param options - Optional format-specific generation options.
161
+ *
162
+ * @returns The newly generated output artifact.
163
+ */
164
+ generateAgentOutput(agentId: string, format: string, options?: Record<string, unknown>): Promise<OutputArtifact>;
165
+ /**
166
+ * Runs an evaluation batch against an agent.
167
+ *
168
+ * @param agentId - Agent identifier.
169
+ * @param request - Eval configuration payload.
170
+ *
171
+ * @returns Eval report capturing results and metrics.
172
+ */
173
+ runEvals(agentId: string, request: RunEvalsRequest): Promise<EvalReport>;
174
+ /**
175
+ * Lists past eval reports for an agent.
176
+ *
177
+ * @param agentId - Agent identifier.
178
+ *
179
+ * @returns Array of eval reports in reverse-chronological order.
180
+ */
181
+ listEvals(agentId: string): Promise<EvalReport[]>;
182
+ /**
183
+ * Retrieves a single eval report by identifier.
184
+ *
185
+ * @param agentId - Agent identifier.
186
+ * @param evalId - Eval report identifier.
187
+ *
188
+ * @returns The requested eval report.
189
+ */
190
+ getEval(agentId: string, evalId: string): Promise<EvalReport>;
191
+ /**
192
+ * Retrieves the current context window usage for an agent.
193
+ *
194
+ * @param agentId - Agent identifier.
195
+ *
196
+ * @returns Context usage details.
197
+ */
198
+ getContextUsage(agentId: string): Promise<ContextUsage>;
199
+ /**
200
+ * Retrieves the per-model cost usage for an agent.
201
+ *
202
+ * @param agentId - Agent identifier.
203
+ *
204
+ * @returns Cost usage aggregates.
205
+ */
206
+ getCostUsage(agentId: string): Promise<CostUsage>;
207
+ /**
208
+ * Creates a new agent runtime.
209
+ *
210
+ * @param data - Runtime creation parameters.
211
+ *
212
+ * @returns The creation response with the provisioned runtime descriptor.
213
+ */
214
+ createAgentRuntime(data: CreateAgentRuntimeRequest): Promise<CreateRuntimeApiResponse>;
215
+ }
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export {};
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Default implementation of {@link IAgentRuntimesClient} that delegates to a
3
+ * `DatalayerClient` composed with `AgentsMixin`.
4
+ *
5
+ * This is the implementation used by browser, Node, JupyterLab, and standalone
6
+ * examples of the chat component. The VSCode extension provides its own
7
+ * implementation (`BridgeAgentRuntimesClient`) that tunnels calls through a
8
+ * message-passing bridge to an extension-host instance of this same class.
9
+ *
10
+ * @module client/SdkAgentRuntimesClient
11
+ */
12
+ import type { AgentEvent, AgentNotification, AgentUsageSummary, ContextUsage, ConversationCheckpoint, CostUsage, CreateAgentEventRequest, EvalReport, GetAgentEventResponse, ListAgentEventsParams, ListAgentEventsResponse, NotificationFilters, OutputArtifact, RunEvalsRequest, RunningAgent, UpdateAgentEventRequest } from '../types';
13
+ import type { CreateAgentRuntimeRequest, CreateRuntimeApiResponse } from '../types/agents-lifecycle';
14
+ import type { IAgentRuntimesClient } from './IAgentRuntimesClient';
15
+ /**
16
+ * Structural type describing the subset of methods {@link SdkAgentRuntimesClient}
17
+ * needs on the underlying SDK instance. Any `DatalayerClient` composed with
18
+ * `AgentsMixin` satisfies this shape; accepting it structurally avoids a
19
+ * hard type dependency on `@datalayer/core` inside this file, which keeps the
20
+ * default implementation drop-in replaceable in alternative deployments.
21
+ */
22
+ export interface AgentsSdkLike {
23
+ /** Lists every running agent across runtimes the caller can see. */
24
+ getRunningAgents(): Promise<RunningAgent[]>;
25
+ /** Retrieves the detailed status of a specific running agent. */
26
+ getAgentStatus(podName: string, agentId?: string): Promise<RunningAgent>;
27
+ /** Pauses a running agent. */
28
+ pauseAgent(podName: string): Promise<void>;
29
+ /** Resumes a previously paused agent. */
30
+ resumeAgent(podName: string): Promise<void>;
31
+ /** Lists conversation checkpoints for an agent. */
32
+ getAgentCheckpoints(podName: string, agentId?: string): Promise<ConversationCheckpoint[]>;
33
+ /** Retrieves the token and cost usage summary for an agent. */
34
+ getAgentUsage(podName: string, agentId?: string): Promise<AgentUsageSummary>;
35
+ /** Lists agent notifications with optional filters. */
36
+ getNotifications(filters?: NotificationFilters): Promise<AgentNotification[]>;
37
+ /** Marks a single notification as read. */
38
+ markNotificationRead(notificationId: string): Promise<void>;
39
+ /** Marks every notification for the caller as read. */
40
+ markAllNotificationsRead(): Promise<void>;
41
+ /** Creates a new event for an agent. */
42
+ createEvent(data: CreateAgentEventRequest): Promise<{
43
+ success: boolean;
44
+ event: AgentEvent;
45
+ }>;
46
+ /** Lists events for an agent. */
47
+ listEvents(agentId: string, params?: Omit<ListAgentEventsParams, 'agent_id'>): Promise<ListAgentEventsResponse>;
48
+ /** Retrieves a single event. */
49
+ getEvent(agentId: string, eventId: string): Promise<GetAgentEventResponse>;
50
+ /** Updates an event. */
51
+ updateEvent(agentId: string, eventId: string, data: UpdateAgentEventRequest): Promise<GetAgentEventResponse>;
52
+ /** Lists output artifacts for an agent. */
53
+ getAgentOutputs(agentId: string): Promise<OutputArtifact[]>;
54
+ /** Retrieves a single output artifact. */
55
+ getAgentOutput(agentId: string, outputId: string): Promise<OutputArtifact>;
56
+ /** Generates a new output artifact. */
57
+ generateAgentOutput(agentId: string, format: string, options?: Record<string, unknown>): Promise<OutputArtifact>;
58
+ /** Runs an evaluation batch. */
59
+ runEvals(agentId: string, request: RunEvalsRequest): Promise<EvalReport>;
60
+ /** Lists eval reports for an agent. */
61
+ listEvals(agentId: string): Promise<EvalReport[]>;
62
+ /** Retrieves a single eval report. */
63
+ getEval(agentId: string, evalId: string): Promise<EvalReport>;
64
+ /** Retrieves context window usage. */
65
+ getContextUsage(agentId: string): Promise<ContextUsage>;
66
+ /** Retrieves cost usage. */
67
+ getCostUsage(agentId: string): Promise<CostUsage>;
68
+ /** Creates a new agent runtime. */
69
+ createAgentRuntime(data: CreateAgentRuntimeRequest): Promise<CreateRuntimeApiResponse>;
70
+ }
71
+ /**
72
+ * {@link IAgentRuntimesClient} implementation that forwards every call to a
73
+ * pre-composed `DatalayerClient + AgentsMixin` instance.
74
+ *
75
+ * Construct with:
76
+ *
77
+ * ```ts
78
+ * import { DatalayerClient } from '@datalayer/core/lib/client';
79
+ * import { AgentsMixin, SdkAgentRuntimesClient } from '@datalayer/agent-runtimes';
80
+ *
81
+ * const ClientWithAgents = AgentsMixin(DatalayerClient);
82
+ * const sdk = new ClientWithAgents({ iamRunUrl, runtimesRunUrl, spacerRunUrl });
83
+ * const client = new SdkAgentRuntimesClient(sdk);
84
+ * ```
85
+ */
86
+ export declare class SdkAgentRuntimesClient implements IAgentRuntimesClient {
87
+ private readonly sdk;
88
+ /**
89
+ * Constructs the default client.
90
+ *
91
+ * @param sdk - A composed `DatalayerClient + AgentsMixin` instance whose
92
+ * `getToken()` / service URL resolvers already return valid values.
93
+ * When `null`, every method throws — pass a real SDK to use the client.
94
+ */
95
+ constructor(sdk: AgentsSdkLike | null);
96
+ /**
97
+ * Asserts the SDK is available for control-plane operations.
98
+ *
99
+ * @throws When the client was constructed without an SDK.
100
+ *
101
+ * @returns The SDK instance.
102
+ */
103
+ private requireSdk;
104
+ /** @inheritdoc */
105
+ listRunningAgents(): Promise<RunningAgent[]>;
106
+ /** @inheritdoc */
107
+ getAgentStatus(podName: string, agentId?: string): Promise<RunningAgent>;
108
+ /** @inheritdoc */
109
+ pauseAgent(podName: string): Promise<void>;
110
+ /** @inheritdoc */
111
+ resumeAgent(podName: string): Promise<void>;
112
+ /** @inheritdoc */
113
+ getAgentCheckpoints(podName: string, agentId?: string): Promise<ConversationCheckpoint[]>;
114
+ /** @inheritdoc */
115
+ getAgentUsage(podName: string, agentId?: string): Promise<AgentUsageSummary>;
116
+ /** @inheritdoc */
117
+ listNotifications(filters?: NotificationFilters): Promise<AgentNotification[]>;
118
+ /** @inheritdoc */
119
+ markNotificationRead(notificationId: string): Promise<void>;
120
+ /** @inheritdoc */
121
+ markAllNotificationsRead(): Promise<void>;
122
+ /** @inheritdoc */
123
+ createEvent(data: CreateAgentEventRequest): Promise<{
124
+ success: boolean;
125
+ event: AgentEvent;
126
+ }>;
127
+ /** @inheritdoc */
128
+ listEvents(agentId: string, params?: Omit<ListAgentEventsParams, 'agent_id'>): Promise<ListAgentEventsResponse>;
129
+ /** @inheritdoc */
130
+ getEvent(agentId: string, eventId: string): Promise<GetAgentEventResponse>;
131
+ /** @inheritdoc */
132
+ updateEvent(agentId: string, eventId: string, data: UpdateAgentEventRequest): Promise<GetAgentEventResponse>;
133
+ /** @inheritdoc */
134
+ getAgentOutputs(agentId: string): Promise<OutputArtifact[]>;
135
+ /** @inheritdoc */
136
+ getAgentOutput(agentId: string, outputId: string): Promise<OutputArtifact>;
137
+ /** @inheritdoc */
138
+ generateAgentOutput(agentId: string, format: string, options?: Record<string, unknown>): Promise<OutputArtifact>;
139
+ /** @inheritdoc */
140
+ runEvals(agentId: string, request: RunEvalsRequest): Promise<EvalReport>;
141
+ /** @inheritdoc */
142
+ listEvals(agentId: string): Promise<EvalReport[]>;
143
+ /** @inheritdoc */
144
+ getEval(agentId: string, evalId: string): Promise<EvalReport>;
145
+ /** @inheritdoc */
146
+ getContextUsage(agentId: string): Promise<ContextUsage>;
147
+ /** @inheritdoc */
148
+ getCostUsage(agentId: string): Promise<CostUsage>;
149
+ /** @inheritdoc */
150
+ createAgentRuntime(data: CreateAgentRuntimeRequest): Promise<CreateRuntimeApiResponse>;
151
+ }
@@ -0,0 +1,134 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * {@link IAgentRuntimesClient} implementation that forwards every call to a
7
+ * pre-composed `DatalayerClient + AgentsMixin` instance.
8
+ *
9
+ * Construct with:
10
+ *
11
+ * ```ts
12
+ * import { DatalayerClient } from '@datalayer/core/lib/client';
13
+ * import { AgentsMixin, SdkAgentRuntimesClient } from '@datalayer/agent-runtimes';
14
+ *
15
+ * const ClientWithAgents = AgentsMixin(DatalayerClient);
16
+ * const sdk = new ClientWithAgents({ iamRunUrl, runtimesRunUrl, spacerRunUrl });
17
+ * const client = new SdkAgentRuntimesClient(sdk);
18
+ * ```
19
+ */
20
+ export class SdkAgentRuntimesClient {
21
+ sdk;
22
+ /**
23
+ * Constructs the default client.
24
+ *
25
+ * @param sdk - A composed `DatalayerClient + AgentsMixin` instance whose
26
+ * `getToken()` / service URL resolvers already return valid values.
27
+ * When `null`, every method throws — pass a real SDK to use the client.
28
+ */
29
+ constructor(sdk) {
30
+ this.sdk = sdk;
31
+ }
32
+ /**
33
+ * Asserts the SDK is available for control-plane operations.
34
+ *
35
+ * @throws When the client was constructed without an SDK.
36
+ *
37
+ * @returns The SDK instance.
38
+ */
39
+ requireSdk() {
40
+ if (!this.sdk) {
41
+ throw new Error('Control-plane operations require an SDK instance. ' +
42
+ 'Construct SdkAgentRuntimesClient with a DatalayerClient+AgentsMixin.');
43
+ }
44
+ return this.sdk;
45
+ }
46
+ /** @inheritdoc */
47
+ async listRunningAgents() {
48
+ return this.requireSdk().getRunningAgents();
49
+ }
50
+ /** @inheritdoc */
51
+ async getAgentStatus(podName, agentId) {
52
+ return this.requireSdk().getAgentStatus(podName, agentId);
53
+ }
54
+ /** @inheritdoc */
55
+ async pauseAgent(podName) {
56
+ return this.requireSdk().pauseAgent(podName);
57
+ }
58
+ /** @inheritdoc */
59
+ async resumeAgent(podName) {
60
+ return this.requireSdk().resumeAgent(podName);
61
+ }
62
+ /** @inheritdoc */
63
+ async getAgentCheckpoints(podName, agentId) {
64
+ return this.requireSdk().getAgentCheckpoints(podName, agentId);
65
+ }
66
+ /** @inheritdoc */
67
+ async getAgentUsage(podName, agentId) {
68
+ return this.requireSdk().getAgentUsage(podName, agentId);
69
+ }
70
+ /** @inheritdoc */
71
+ async listNotifications(filters) {
72
+ return this.requireSdk().getNotifications(filters);
73
+ }
74
+ /** @inheritdoc */
75
+ async markNotificationRead(notificationId) {
76
+ return this.requireSdk().markNotificationRead(notificationId);
77
+ }
78
+ /** @inheritdoc */
79
+ async markAllNotificationsRead() {
80
+ return this.requireSdk().markAllNotificationsRead();
81
+ }
82
+ /** @inheritdoc */
83
+ async createEvent(data) {
84
+ return this.requireSdk().createEvent(data);
85
+ }
86
+ /** @inheritdoc */
87
+ async listEvents(agentId, params) {
88
+ return this.requireSdk().listEvents(agentId, params);
89
+ }
90
+ /** @inheritdoc */
91
+ async getEvent(agentId, eventId) {
92
+ return this.requireSdk().getEvent(agentId, eventId);
93
+ }
94
+ /** @inheritdoc */
95
+ async updateEvent(agentId, eventId, data) {
96
+ return this.requireSdk().updateEvent(agentId, eventId, data);
97
+ }
98
+ /** @inheritdoc */
99
+ async getAgentOutputs(agentId) {
100
+ return this.requireSdk().getAgentOutputs(agentId);
101
+ }
102
+ /** @inheritdoc */
103
+ async getAgentOutput(agentId, outputId) {
104
+ return this.requireSdk().getAgentOutput(agentId, outputId);
105
+ }
106
+ /** @inheritdoc */
107
+ async generateAgentOutput(agentId, format, options) {
108
+ return this.requireSdk().generateAgentOutput(agentId, format, options);
109
+ }
110
+ /** @inheritdoc */
111
+ async runEvals(agentId, request) {
112
+ return this.requireSdk().runEvals(agentId, request);
113
+ }
114
+ /** @inheritdoc */
115
+ async listEvals(agentId) {
116
+ return this.requireSdk().listEvals(agentId);
117
+ }
118
+ /** @inheritdoc */
119
+ async getEval(agentId, evalId) {
120
+ return this.requireSdk().getEval(agentId, evalId);
121
+ }
122
+ /** @inheritdoc */
123
+ async getContextUsage(agentId) {
124
+ return this.requireSdk().getContextUsage(agentId);
125
+ }
126
+ /** @inheritdoc */
127
+ async getCostUsage(agentId) {
128
+ return this.requireSdk().getCostUsage(agentId);
129
+ }
130
+ /** @inheritdoc */
131
+ async createAgentRuntime(data) {
132
+ return this.requireSdk().createAgentRuntime(data);
133
+ }
134
+ }
@@ -1,6 +1,9 @@
1
1
  /**
2
- * Client mixins for agent-runtimes.
2
+ * Client mixins and domain-level client abstractions for agent-runtimes.
3
3
  *
4
4
  * @module client
5
5
  */
6
6
  export { AgentsMixin } from './AgentsMixin';
7
+ export type { IAgentRuntimesClient } from './IAgentRuntimesClient';
8
+ export { SdkAgentRuntimesClient, type AgentsSdkLike, } from './SdkAgentRuntimesClient';
9
+ export { AgentRuntimesClientProvider, useAgentRuntimesClient, useOptionalAgentRuntimesClient, type AgentRuntimesClientProviderProps, } from './AgentRuntimesClientContext';
@@ -3,8 +3,10 @@
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
5
  /**
6
- * Client mixins for agent-runtimes.
6
+ * Client mixins and domain-level client abstractions for agent-runtimes.
7
7
  *
8
8
  * @module client
9
9
  */
10
10
  export { AgentsMixin } from './AgentsMixin';
11
+ export { SdkAgentRuntimesClient, } from './SdkAgentRuntimesClient';
12
+ export { AgentRuntimesClientProvider, useAgentRuntimesClient, useOptionalAgentRuntimesClient, } from './AgentRuntimesClientContext';
@@ -164,7 +164,11 @@ export function NotificationEventCard({ event, onToggleRead, onDelete, onOpenAge
164
164
  }, children: _jsxs("details", { open: isDetailsExpanded, children: [_jsx("summary", { onClick: e => {
165
165
  e.preventDefault();
166
166
  setIsDetailsExpanded(prev => !prev);
167
- }, style: { cursor: 'pointer', display: 'flex', alignItems: 'center' }, children: _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1 }, children: [_jsx(Box, { sx: {
167
+ }, style: {
168
+ cursor: 'pointer',
169
+ display: 'flex',
170
+ alignItems: 'center',
171
+ }, children: _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1 }, children: [_jsx(Box, { sx: {
168
172
  display: 'flex',
169
173
  alignItems: 'center',
170
174
  color: 'fg.muted',