@datalayer/agent-runtimes 1.0.3 → 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 (275) hide show
  1. package/README.md +35 -119
  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 -104
  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 +1118 -141
  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 +110 -102
  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 +48 -19
  46. package/lib/client/AgentsMixin.js +115 -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 +55 -26
  54. package/lib/components/OutputCard.js +21 -7
  55. package/lib/components/ToolApprovalCard.js +20 -2
  56. package/lib/config/AgentConfiguration.js +3 -3
  57. package/lib/context/ContextDistribution.d.ts +3 -1
  58. package/lib/context/ContextDistribution.js +8 -27
  59. package/lib/context/ContextInspector.d.ts +3 -1
  60. package/lib/context/ContextInspector.js +19 -67
  61. package/lib/context/ContextPanel.d.ts +3 -1
  62. package/lib/context/ContextPanel.js +104 -64
  63. package/lib/context/ContextUsage.d.ts +3 -1
  64. package/lib/context/ContextUsage.js +3 -3
  65. package/lib/context/CostTracker.d.ts +9 -3
  66. package/lib/context/CostTracker.js +26 -47
  67. package/lib/context/CostUsageChart.d.ts +12 -0
  68. package/lib/context/CostUsageChart.js +378 -0
  69. package/lib/context/GraphFlowChart.d.ts +16 -0
  70. package/lib/context/GraphFlowChart.js +182 -0
  71. package/lib/context/TokenUsageChart.d.ts +8 -1
  72. package/lib/context/TokenUsageChart.js +349 -211
  73. package/lib/context/TurnGraphChart.d.ts +39 -0
  74. package/lib/context/TurnGraphChart.js +538 -0
  75. package/lib/context/otelWsPool.d.ts +20 -0
  76. package/lib/context/otelWsPool.js +69 -0
  77. package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -17
  78. package/lib/examples/A2UiComponentGalleryExample.js +315 -522
  79. package/lib/examples/A2UiContactCardExample.d.ts +0 -18
  80. package/lib/examples/A2UiContactCardExample.js +154 -411
  81. package/lib/examples/A2UiRestaurantExample.d.ts +0 -30
  82. package/lib/examples/A2UiRestaurantExample.js +114 -212
  83. package/lib/examples/A2UiViewerExample.d.ts +0 -18
  84. package/lib/examples/A2UiViewerExample.js +283 -532
  85. package/lib/examples/AgUiBackendToolRenderingExample.js +1 -1
  86. package/lib/examples/AgUiHaikuGenUiExample.d.ts +1 -1
  87. package/lib/examples/AgUiHaikuGenUiExample.js +1 -1
  88. package/lib/examples/AgentCheckpointsExample.js +14 -34
  89. package/lib/examples/AgentCodemodeExample.d.ts +4 -6
  90. package/lib/examples/AgentCodemodeExample.js +591 -175
  91. package/lib/examples/AgentEvalsExample.js +13 -23
  92. package/lib/examples/AgentGuardrailsExample.js +371 -71
  93. package/lib/examples/AgentHooksExample.d.ts +3 -0
  94. package/lib/examples/AgentHooksExample.js +104 -0
  95. package/lib/examples/AgentMCPExample.d.ts +3 -0
  96. package/lib/examples/AgentMCPExample.js +480 -0
  97. package/lib/examples/AgentMemoryExample.js +14 -24
  98. package/lib/examples/AgentMonitoringExample.js +261 -206
  99. package/lib/examples/AgentNotificationsExample.js +50 -24
  100. package/lib/examples/AgentOtelExample.js +2 -3
  101. package/lib/examples/AgentOutputsExample.d.ts +11 -6
  102. package/lib/examples/AgentOutputsExample.js +383 -88
  103. package/lib/examples/AgentParametersExample.d.ts +3 -0
  104. package/lib/examples/AgentParametersExample.js +246 -0
  105. package/lib/examples/AgentSandboxExample.d.ts +2 -2
  106. package/lib/examples/AgentSandboxExample.js +69 -47
  107. package/lib/examples/AgentSkillsExample.js +92 -106
  108. package/lib/examples/{AgentspecExample.js → AgentSpecsExample.js} +10 -21
  109. package/lib/examples/AgentSubagentsExample.d.ts +14 -0
  110. package/lib/examples/AgentSubagentsExample.js +228 -0
  111. package/lib/examples/AgentToolApprovalsExample.js +30 -493
  112. package/lib/examples/AgentTriggersExample.js +1067 -246
  113. package/lib/examples/ChatCustomExample.js +11 -24
  114. package/lib/examples/ChatExample.js +9 -34
  115. package/lib/examples/CopilotKitLexicalExample.js +2 -1
  116. package/lib/examples/CopilotKitNotebookExample.js +2 -1
  117. package/lib/examples/HomeExample.d.ts +15 -0
  118. package/lib/examples/HomeExample.js +77 -0
  119. package/lib/examples/Lexical2Example.js +4 -2
  120. package/lib/examples/{LexicalExample.d.ts → LexicalAgentExample.d.ts} +4 -4
  121. package/lib/examples/{LexicalExample.js → LexicalAgentExample.js} +65 -16
  122. package/lib/examples/{LexicalSidebarExample.d.ts → LexicalAgentSidebarExample.d.ts} +5 -5
  123. package/lib/examples/LexicalAgentSidebarExample.js +261 -0
  124. package/lib/examples/NotebookAgentExample.d.ts +9 -0
  125. package/lib/examples/NotebookAgentExample.js +192 -0
  126. package/lib/examples/{NotebookSidebarExample.d.ts → NotebookAgentSidebarExample.d.ts} +2 -2
  127. package/lib/examples/NotebookAgentSidebarExample.js +221 -0
  128. package/lib/examples/{DatalayerNotebookExample.d.ts → NotebookCollaborationExample.d.ts} +4 -4
  129. package/lib/examples/{DatalayerNotebookExample.js → NotebookCollaborationExample.js} +3 -3
  130. package/lib/examples/NotebookExample.d.ts +4 -7
  131. package/lib/examples/NotebookExample.js +14 -146
  132. package/lib/examples/components/AuthRequiredView.d.ts +6 -0
  133. package/lib/examples/components/AuthRequiredView.js +33 -0
  134. package/lib/examples/components/ErrorView.d.ts +14 -0
  135. package/lib/examples/components/ErrorView.js +20 -0
  136. package/lib/examples/components/ExampleWrapper.d.ts +7 -0
  137. package/lib/examples/components/ExampleWrapper.js +25 -6
  138. package/lib/examples/{ag-ui → components}/haiku/HaikuDisplay.js +1 -1
  139. package/lib/examples/{ag-ui → components}/haiku/InlineHaikuCard.js +1 -1
  140. package/lib/examples/{ag-ui → components}/haiku/index.d.ts +1 -1
  141. package/lib/examples/{ag-ui → components}/haiku/index.js +1 -1
  142. package/lib/examples/components/index.d.ts +5 -0
  143. package/lib/examples/components/index.js +5 -0
  144. package/lib/examples/{ag-ui → components}/weather/index.d.ts +1 -1
  145. package/lib/examples/{ag-ui → components}/weather/index.js +1 -1
  146. package/lib/examples/example-selector.d.ts +17 -4
  147. package/lib/examples/example-selector.js +107 -41
  148. package/lib/examples/index.d.ts +9 -6
  149. package/lib/examples/index.js +9 -6
  150. package/lib/examples/main.d.ts +1 -0
  151. package/lib/examples/main.js +218 -27
  152. package/lib/examples/utils/a2ui.d.ts +18 -0
  153. package/lib/examples/utils/a2ui.js +69 -0
  154. package/lib/examples/utils/a2uiMarkdownProvider.d.ts +7 -0
  155. package/lib/examples/utils/a2uiMarkdownProvider.js +9 -0
  156. package/lib/examples/utils/agentId.d.ts +18 -0
  157. package/lib/examples/utils/agentId.js +54 -0
  158. package/lib/examples/utils/agents/earthquake-detector.json +11 -11
  159. package/lib/examples/utils/agents/sales-forecaster.json +11 -11
  160. package/lib/examples/utils/agents/social-post-generator.json +11 -11
  161. package/lib/examples/utils/agents/stock-market.json +11 -11
  162. package/lib/examples/utils/examplesStore.js +82 -27
  163. package/lib/hooks/index.d.ts +8 -8
  164. package/lib/hooks/index.js +7 -7
  165. package/lib/hooks/useA2A.d.ts +2 -3
  166. package/lib/hooks/useAIAgentsWebSocket.d.ts +43 -4
  167. package/lib/hooks/useAIAgentsWebSocket.js +118 -12
  168. package/lib/hooks/useAcp.d.ts +1 -2
  169. package/lib/hooks/useAgUi.d.ts +1 -1
  170. package/lib/hooks/{useAgents.d.ts → useAgentRuntimes.d.ts} +39 -2
  171. package/lib/hooks/{useAgents.js → useAgentRuntimes.js} +125 -15
  172. package/lib/hooks/useAgentsCatalog.js +1 -1
  173. package/lib/hooks/useAgentsService.d.ts +2 -2
  174. package/lib/hooks/useAgentsService.js +7 -7
  175. package/lib/hooks/useCheckpoints.js +1 -1
  176. package/lib/hooks/useConfig.d.ts +4 -1
  177. package/lib/hooks/useConfig.js +10 -3
  178. package/lib/hooks/useContextSnapshot.d.ts +9 -4
  179. package/lib/hooks/useContextSnapshot.js +9 -37
  180. package/lib/hooks/useMonitoring.js +3 -0
  181. package/lib/hooks/useSandbox.d.ts +20 -8
  182. package/lib/hooks/useSandbox.js +105 -40
  183. package/lib/hooks/useSkills.d.ts +23 -5
  184. package/lib/hooks/useSkills.js +94 -39
  185. package/lib/hooks/useToolApprovals.d.ts +60 -36
  186. package/lib/hooks/useToolApprovals.js +318 -69
  187. package/lib/hooks/useVercelAI.d.ts +1 -1
  188. package/lib/index.d.ts +2 -1
  189. package/lib/index.js +1 -0
  190. package/lib/inference/index.d.ts +0 -1
  191. package/lib/middleware/index.d.ts +0 -1
  192. package/lib/protocols/AGUIAdapter.js +6 -0
  193. package/lib/protocols/VercelAIAdapter.d.ts +9 -0
  194. package/lib/protocols/VercelAIAdapter.js +144 -26
  195. package/lib/shims/json5.d.ts +4 -0
  196. package/lib/shims/json5.js +8 -0
  197. package/lib/specs/agents/agents.d.ts +10 -0
  198. package/lib/specs/agents/agents.js +752 -24
  199. package/lib/specs/envvars.d.ts +1 -0
  200. package/lib/specs/envvars.js +11 -0
  201. package/lib/specs/events.d.ts +1 -0
  202. package/lib/specs/events.js +1 -0
  203. package/lib/specs/index.d.ts +1 -0
  204. package/lib/specs/index.js +1 -0
  205. package/lib/specs/personas.d.ts +41 -0
  206. package/lib/specs/personas.js +168 -0
  207. package/lib/specs/skills.d.ts +2 -1
  208. package/lib/specs/skills.js +23 -5
  209. package/lib/specs/tools.js +3 -0
  210. package/lib/stores/agentRuntimeStore.d.ts +204 -0
  211. package/lib/stores/agentRuntimeStore.js +636 -0
  212. package/lib/stores/index.d.ts +1 -1
  213. package/lib/stores/index.js +1 -1
  214. package/lib/tools/adapters/copilotkit/lexicalHooks.d.ts +1 -2
  215. package/lib/tools/adapters/copilotkit/lexicalHooks.js +1 -3
  216. package/lib/tools/adapters/copilotkit/notebookHooks.d.ts +1 -2
  217. package/lib/tools/adapters/copilotkit/notebookHooks.js +1 -3
  218. package/lib/tools/index.d.ts +0 -2
  219. package/lib/tools/index.js +0 -1
  220. package/lib/types/agentspecs.d.ts +50 -1
  221. package/lib/types/chat.d.ts +309 -8
  222. package/lib/types/context.d.ts +27 -0
  223. package/lib/types/cost.d.ts +2 -2
  224. package/lib/types/index.d.ts +2 -0
  225. package/lib/types/index.js +2 -0
  226. package/lib/types/mcp.d.ts +8 -0
  227. package/lib/types/models.d.ts +2 -2
  228. package/lib/types/personas.d.ts +25 -0
  229. package/lib/types/personas.js +5 -0
  230. package/lib/types/skills.d.ts +43 -1
  231. package/lib/types/stream.d.ts +110 -0
  232. package/lib/types/stream.js +36 -0
  233. package/lib/types/tools.d.ts +2 -0
  234. package/lib/utils/utils.d.ts +9 -5
  235. package/lib/utils/utils.js +9 -5
  236. package/package.json +13 -9
  237. package/scripts/codegen/__pycache__/generate_agents.cpython-313.pyc +0 -0
  238. package/scripts/codegen/__pycache__/generate_events.cpython-313.pyc +0 -0
  239. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  240. package/scripts/codegen/generate_agents.py +106 -7
  241. package/scripts/codegen/generate_events.py +47 -17
  242. package/scripts/codegen/generate_personas.py +319 -0
  243. package/scripts/codegen/generate_skills.py +9 -9
  244. package/scripts/codegen/generate_tools.py +20 -0
  245. package/scripts/sync-jupyter.sh +26 -7
  246. package/style/primer-primitives.css +1 -6
  247. package/lib/api/tool-approvals.d.ts +0 -62
  248. package/lib/api/tool-approvals.js +0 -145
  249. package/lib/examples/LexicalSidebarExample.js +0 -163
  250. package/lib/examples/NotebookSidebarExample.js +0 -119
  251. package/lib/examples/NotebookSimpleExample.d.ts +0 -6
  252. package/lib/examples/NotebookSimpleExample.js +0 -22
  253. package/lib/examples/ag-ui/index.d.ts +0 -10
  254. package/lib/examples/ag-ui/index.js +0 -16
  255. package/lib/hooks/useAgentsRegistry.d.ts +0 -10
  256. package/lib/hooks/useAgentsRegistry.js +0 -20
  257. package/lib/stores/agentsStore.d.ts +0 -123
  258. package/lib/stores/agentsStore.js +0 -270
  259. package/scripts/codegen/__pycache__/generate_envvars.cpython-313.pyc +0 -0
  260. package/scripts/codegen/__pycache__/generate_evals.cpython-313.pyc +0 -0
  261. package/scripts/codegen/__pycache__/generate_guardrails.cpython-313.pyc +0 -0
  262. package/scripts/codegen/__pycache__/generate_mcp_servers.cpython-313.pyc +0 -0
  263. package/scripts/codegen/__pycache__/generate_memory.cpython-313.pyc +0 -0
  264. package/scripts/codegen/__pycache__/generate_models.cpython-313.pyc +0 -0
  265. package/scripts/codegen/__pycache__/generate_notifications.cpython-313.pyc +0 -0
  266. package/scripts/codegen/__pycache__/generate_outputs.cpython-313.pyc +0 -0
  267. package/scripts/codegen/__pycache__/generate_skills.cpython-313.pyc +0 -0
  268. package/scripts/codegen/__pycache__/generate_teams.cpython-313.pyc +0 -0
  269. package/scripts/codegen/__pycache__/generate_tools.cpython-313.pyc +0 -0
  270. package/scripts/codegen/__pycache__/generate_triggers.cpython-313.pyc +0 -0
  271. /package/lib/examples/{AgentspecExample.d.ts → AgentSpecsExample.d.ts} +0 -0
  272. /package/lib/examples/{ag-ui → components}/haiku/HaikuDisplay.d.ts +0 -0
  273. /package/lib/examples/{ag-ui → components}/haiku/InlineHaikuCard.d.ts +0 -0
  274. /package/lib/examples/{ag-ui → components}/weather/InlineWeatherCard.d.ts +0 -0
  275. /package/lib/examples/{ag-ui → components}/weather/InlineWeatherCard.js +0 -0
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import type { EnvvarSpec } from '../types';
10
10
  export declare const ALPHAVANTAGE_API_KEY_SPEC_0_0_1: EnvvarSpec;
11
+ export declare const DATALAYER_API_KEY_SPEC_0_0_1: EnvvarSpec;
11
12
  export declare const GITHUB_TOKEN_SPEC_0_0_1: EnvvarSpec;
12
13
  export declare const GOOGLE_OAUTH_CLIENT_ID_SPEC_0_0_1: EnvvarSpec;
13
14
  export declare const GOOGLE_OAUTH_CLIENT_SECRET_SPEC_0_0_1: EnvvarSpec;
@@ -15,6 +15,16 @@ export const ALPHAVANTAGE_API_KEY_SPEC_0_0_1 = {
15
15
  icon: 'key',
16
16
  emoji: '🔑',
17
17
  };
18
+ export const DATALAYER_API_KEY_SPEC_0_0_1 = {
19
+ id: 'DATALAYER_API_KEY',
20
+ version: '0.0.1',
21
+ name: 'Datalayer API Key',
22
+ description: 'API key for authenticating with Datalayer services, including datalayer-skills such as datalayer-whoami.',
23
+ registrationUrl: 'https://datalayer.app',
24
+ tags: ['authentication', 'api-key', 'datalayer', 'skill'],
25
+ icon: 'key',
26
+ emoji: '🔑',
27
+ };
18
28
  export const GITHUB_TOKEN_SPEC_0_0_1 = {
19
29
  id: 'GITHUB_TOKEN',
20
30
  version: '0.0.1',
@@ -116,6 +126,7 @@ export const TAVILY_API_KEY_SPEC_0_0_1 = {
116
126
  // ============================================================================
117
127
  export const ENVVAR_CATALOG = {
118
128
  ALPHAVANTAGE_API_KEY: ALPHAVANTAGE_API_KEY_SPEC_0_0_1,
129
+ DATALAYER_API_KEY: DATALAYER_API_KEY_SPEC_0_0_1,
119
130
  GITHUB_TOKEN: GITHUB_TOKEN_SPEC_0_0_1,
120
131
  GOOGLE_OAUTH_CLIENT_ID: GOOGLE_OAUTH_CLIENT_ID_SPEC_0_0_1,
121
132
  GOOGLE_OAUTH_CLIENT_SECRET: GOOGLE_OAUTH_CLIENT_SECRET_SPEC_0_0_1,
@@ -13,6 +13,7 @@ export declare const TOOL_APPROVAL_REQUESTED_EVENT_SPEC_0_0_1: EventSpec;
13
13
  export declare const EVENT_KIND_AGENT_ENDED = "agent-ended";
14
14
  export declare const EVENT_KIND_AGENT_STARTED = "agent-started";
15
15
  export declare const EVENT_KIND_TOOL_APPROVAL_REQUESTED = "tool-approval-requested";
16
+ export declare const EVENT_KIND_AGENT_ASSIGNED = "agent-assigned";
16
17
  export declare const EVENT_CATALOG: Record<string, EventSpec>;
17
18
  export declare function getEventSpecs(): EventSpec[];
18
19
  export declare function getEventSpec(eventId: string): EventSpec | undefined;
@@ -155,6 +155,7 @@ export const TOOL_APPROVAL_REQUESTED_EVENT_SPEC_0_0_1 = {
155
155
  export const EVENT_KIND_AGENT_ENDED = 'agent-ended';
156
156
  export const EVENT_KIND_AGENT_STARTED = 'agent-started';
157
157
  export const EVENT_KIND_TOOL_APPROVAL_REQUESTED = 'tool-approval-requested';
158
+ export const EVENT_KIND_AGENT_ASSIGNED = 'agent-assigned';
158
159
  // ============================================================================
159
160
  // Event Catalog
160
161
  // ============================================================================
@@ -13,6 +13,7 @@ export * from './memory';
13
13
  export * from './models';
14
14
  export * from './notifications';
15
15
  export * from './outputs';
16
+ export * from './personas';
16
17
  export * from './skills';
17
18
  export * from './tools';
18
19
  export * from './triggers';
@@ -17,6 +17,7 @@ export * from './memory';
17
17
  export * from './models';
18
18
  export * from './notifications';
19
19
  export * from './outputs';
20
+ export * from './personas';
20
21
  export * from './skills';
21
22
  export * from './tools';
22
23
  export * from './triggers';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Persona Catalog
3
+ *
4
+ * Predefined Persona configurations built on top of agent specs.
5
+ *
6
+ * This file is AUTO-GENERATED from YAML specifications.
7
+ * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.
8
+ */
9
+ import type { PersonaSpec } from '../types';
10
+ export declare const Personas: {
11
+ readonly CODE: "code";
12
+ readonly FORECASTER: "forecaster";
13
+ readonly INTRUSION: "intrusion";
14
+ readonly JOVYAN: "jovyan";
15
+ readonly MARKETING: "marketing";
16
+ readonly PENTEST: "pentest";
17
+ readonly PHARMA: "pharma";
18
+ readonly POIROT: "poirot";
19
+ readonly SENTINEL: "sentinel";
20
+ readonly TRADER: "trader";
21
+ readonly TUTOR: "tutor";
22
+ readonly TWIN: "twin";
23
+ };
24
+ export type PersonaId = (typeof Personas)[keyof typeof Personas];
25
+ export declare const CODE_PERSONA_0_0_1: PersonaSpec;
26
+ export declare const FORECASTER_PERSONA_0_0_1: PersonaSpec;
27
+ export declare const INTRUSION_PERSONA_0_0_1: PersonaSpec;
28
+ export declare const JOVYAN_PERSONA_0_0_1: PersonaSpec;
29
+ export declare const MARKETING_PERSONA_0_0_1: PersonaSpec;
30
+ export declare const PENTEST_PERSONA_0_0_1: PersonaSpec;
31
+ export declare const PHARMA_PERSONA_0_0_1: PersonaSpec;
32
+ export declare const POIROT_PERSONA_0_0_1: PersonaSpec;
33
+ export declare const SENTINEL_PERSONA_0_0_1: PersonaSpec;
34
+ export declare const TRADER_PERSONA_0_0_1: PersonaSpec;
35
+ export declare const TUTOR_PERSONA_0_0_1: PersonaSpec;
36
+ export declare const TWIN_PERSONA_0_0_1: PersonaSpec;
37
+ export declare const PERSONA_CATALOGUE: Record<string, PersonaSpec>;
38
+ /** Get a persona specification by ID. */
39
+ export declare function getPersona(personaId: string): PersonaSpec | undefined;
40
+ /** List all available personas. */
41
+ export declare function listPersonas(): PersonaSpec[];
@@ -0,0 +1,168 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ // ============================================================================
6
+ // Personas Enum
7
+ // ============================================================================
8
+ export const Personas = {
9
+ CODE: 'code',
10
+ FORECASTER: 'forecaster',
11
+ INTRUSION: 'intrusion',
12
+ JOVYAN: 'jovyan',
13
+ MARKETING: 'marketing',
14
+ PENTEST: 'pentest',
15
+ PHARMA: 'pharma',
16
+ POIROT: 'poirot',
17
+ SENTINEL: 'sentinel',
18
+ TRADER: 'trader',
19
+ TUTOR: 'tutor',
20
+ TWIN: 'twin',
21
+ };
22
+ // ============================================================================
23
+ // Persona Definitions
24
+ // ============================================================================
25
+ export const CODE_PERSONA_0_0_1 = {
26
+ id: 'code',
27
+ version: '0.0.1',
28
+ name: 'Code',
29
+ description: 'A pragmatic coding companion focused on writing, reviewing and refactoring software. Pairs well with editors, terminals and code execution sandboxes.',
30
+ tags: ['coding', 'development', 'engineering', 'assistant'],
31
+ icon: 'code',
32
+ emoji: '🧑‍💻',
33
+ };
34
+ export const FORECASTER_PERSONA_0_0_1 = {
35
+ id: 'forecaster',
36
+ version: '0.0.1',
37
+ name: 'Forecaster',
38
+ description: 'A predictive-analytics persona that builds and explains time-series forecasts — sales pipelines, demand planning, revenue projection and scenario analysis.',
39
+ tags: ['forecasting', 'analytics', 'sales', 'time-series'],
40
+ icon: 'graph',
41
+ emoji: '📈',
42
+ };
43
+ export const INTRUSION_PERSONA_0_0_1 = {
44
+ id: 'intrusion',
45
+ version: '0.0.1',
46
+ name: 'Intrusion',
47
+ description: 'A defensive security persona focused on intrusion detection, log analysis, threat hunting and incident response across networks, endpoints and cloud workloads.',
48
+ tags: ['security', 'intrusion-detection', 'threat-hunting', 'blue-team'],
49
+ icon: 'shield-lock',
50
+ emoji: '🛡️',
51
+ };
52
+ export const JOVYAN_PERSONA_0_0_1 = {
53
+ id: 'jovyan',
54
+ version: '0.0.1',
55
+ name: 'Jovyan',
56
+ description: 'A Jupyter-native companion that lives in notebooks and lexical documents, runs cells, inspects kernels and helps you explore data, narratives and computations.',
57
+ tags: ['jupyter', 'notebook', 'data-science', 'kernels'],
58
+ icon: 'zap',
59
+ emoji: '🪐',
60
+ };
61
+ export const MARKETING_PERSONA_0_0_1 = {
62
+ id: 'marketing',
63
+ version: '0.0.1',
64
+ name: 'Marketing',
65
+ description: 'A creative marketing persona that drafts campaigns, social posts, newsletters and product copy — adapting tone, channel and audience to maximize engagement.',
66
+ tags: ['marketing', 'content', 'social-media', 'copywriting'],
67
+ icon: 'megaphone',
68
+ emoji: '📣',
69
+ };
70
+ export const PENTEST_PERSONA_0_0_1 = {
71
+ id: 'pentest',
72
+ version: '0.0.1',
73
+ name: 'Pentest',
74
+ description: 'An offensive security persona that helps with authorized penetration testing — reconnaissance, vulnerability assessment, exploit reasoning and reporting.',
75
+ tags: ['security', 'penetration-testing', 'red-team', 'vulnerability'],
76
+ icon: 'bug',
77
+ emoji: '🕷️',
78
+ };
79
+ export const PHARMA_PERSONA_0_0_1 = {
80
+ id: 'pharma',
81
+ version: '0.0.1',
82
+ name: 'Pharma',
83
+ description: 'A life-sciences persona for pharmaceutical and clinical workflows — literature review, trial data exploration, regulatory reporting and drug-safety signal triage.',
84
+ tags: ['pharma', 'life-sciences', 'clinical', 'regulatory'],
85
+ icon: 'beaker',
86
+ emoji: '💊',
87
+ };
88
+ export const POIROT_PERSONA_0_0_1 = {
89
+ id: 'poirot',
90
+ version: '0.0.1',
91
+ name: 'Poirot',
92
+ description: 'A meticulous detective persona for investigative workflows — root cause analysis, evidence correlation, timeline reconstruction and hypothesis testing across heterogeneous data.',
93
+ tags: ['investigation', 'root-cause', 'forensics', 'reasoning'],
94
+ icon: 'search',
95
+ emoji: '🕵️',
96
+ };
97
+ export const SENTINEL_PERSONA_0_0_1 = {
98
+ id: 'sentinel',
99
+ version: '0.0.1',
100
+ name: 'Sentinel',
101
+ description: 'A vigilant monitoring persona for real-time signal detection, anomaly spotting and early-warning alerts — including use cases such as seismic activity, infrastructure health and live event streams.',
102
+ tags: ['monitoring', 'detection', 'alerting', 'real-time', 'earthquake'],
103
+ icon: 'shield',
104
+ emoji: '🛰️',
105
+ };
106
+ export const TRADER_PERSONA_0_0_1 = {
107
+ id: 'trader',
108
+ version: '0.0.1',
109
+ name: 'Trader',
110
+ description: 'A markets persona for stock and portfolio analysis — quote retrieval, technical indicators, portfolio tracking and trading research workflows.',
111
+ tags: ['finance', 'stocks', 'markets', 'portfolio'],
112
+ icon: 'pulse',
113
+ emoji: '💹',
114
+ };
115
+ export const TUTOR_PERSONA_0_0_1 = {
116
+ id: 'tutor',
117
+ version: '0.0.1',
118
+ name: 'Tutor',
119
+ description: "A patient teaching companion that explains concepts, walks through examples step by step, asks questions and adapts its style to the learner's level.",
120
+ tags: ['education', 'learning', 'teaching', 'mentorship'],
121
+ icon: 'book',
122
+ emoji: '🎓',
123
+ };
124
+ export const TWIN_PERSONA_0_0_1 = {
125
+ id: 'twin',
126
+ version: '0.0.1',
127
+ name: 'Twin',
128
+ description: 'A digital twin of you — mirrors your context, preferences and history to assist with personal productivity, decision making and continuity across tools and sessions.',
129
+ tags: ['personal', 'productivity', 'context', 'assistant'],
130
+ icon: 'person',
131
+ emoji: '👤',
132
+ };
133
+ // ============================================================================
134
+ // Persona Catalog
135
+ // ============================================================================
136
+ export const PERSONA_CATALOGUE = {
137
+ code: CODE_PERSONA_0_0_1,
138
+ forecaster: FORECASTER_PERSONA_0_0_1,
139
+ intrusion: INTRUSION_PERSONA_0_0_1,
140
+ jovyan: JOVYAN_PERSONA_0_0_1,
141
+ marketing: MARKETING_PERSONA_0_0_1,
142
+ pentest: PENTEST_PERSONA_0_0_1,
143
+ pharma: PHARMA_PERSONA_0_0_1,
144
+ poirot: POIROT_PERSONA_0_0_1,
145
+ sentinel: SENTINEL_PERSONA_0_0_1,
146
+ trader: TRADER_PERSONA_0_0_1,
147
+ tutor: TUTOR_PERSONA_0_0_1,
148
+ twin: TWIN_PERSONA_0_0_1,
149
+ };
150
+ function resolvePersonaId(personaId) {
151
+ if (personaId in PERSONA_CATALOGUE)
152
+ return personaId;
153
+ const idx = personaId.lastIndexOf(':');
154
+ if (idx > 0) {
155
+ const base = personaId.slice(0, idx);
156
+ if (base in PERSONA_CATALOGUE)
157
+ return base;
158
+ }
159
+ return personaId;
160
+ }
161
+ /** Get a persona specification by ID. */
162
+ export function getPersona(personaId) {
163
+ return PERSONA_CATALOGUE[resolvePersonaId(personaId)];
164
+ }
165
+ /** List all available personas. */
166
+ export function listPersonas() {
167
+ return Object.values(PERSONA_CATALOGUE);
168
+ }
@@ -8,11 +8,12 @@
8
8
  */
9
9
  import type { SkillSpec } from '../types';
10
10
  export declare const CRAWL_SKILL_SPEC_0_0_1: SkillSpec;
11
+ export declare const DATALAYER_WHOAMI_SKILL_SPEC_0_0_1: SkillSpec;
11
12
  export declare const EVENTS_SKILL_SPEC_0_0_1: SkillSpec;
12
13
  export declare const GITHUB_SKILL_SPEC_0_0_1: SkillSpec;
13
14
  export declare const JOKES_SKILL_SPEC_0_0_1: SkillSpec;
14
15
  export declare const PDF_SKILL_SPEC_0_0_1: SkillSpec;
15
16
  export declare const TEXT_SUMMARIZER_SKILL_SPEC_0_0_1: SkillSpec;
16
- export declare const SKILL_CATALOG: Record<string, SkillSpec>;
17
+ export declare const SKILLS_CATALOG: Record<string, SkillSpec>;
17
18
  export declare function getSkillSpecs(): SkillSpec[];
18
19
  export declare function getSkillSpec(skillId: string): SkillSpec | undefined;
@@ -22,6 +22,23 @@ export const CRAWL_SKILL_SPEC_0_0_1 = {
22
22
  emoji: '🌐',
23
23
  enabled: true,
24
24
  };
25
+ export const DATALAYER_WHOAMI_SKILL_SPEC_0_0_1 = {
26
+ id: 'datalayer-whoami',
27
+ version: '0.0.1',
28
+ name: 'Datalayer Whoami Skill',
29
+ description: 'Retrieve the authenticated Datalayer user profile using the datalayer-skills package.',
30
+ module: 'datalayer_skills.skills.whoami',
31
+ package: undefined,
32
+ method: undefined,
33
+ path: undefined,
34
+ requiredEnvVars: ['DATALAYER_API_KEY:0.0.1'],
35
+ optionalEnvVars: [],
36
+ dependencies: ['datalayer_skills>=0.1.0'],
37
+ tags: ['datalayer', 'iam', 'identity', 'profile'],
38
+ icon: 'person',
39
+ emoji: '👤',
40
+ enabled: true,
41
+ };
25
42
  export const EVENTS_SKILL_SPEC_0_0_1 = {
26
43
  id: 'events',
27
44
  version: '0.0.1',
@@ -110,8 +127,9 @@ export const TEXT_SUMMARIZER_SKILL_SPEC_0_0_1 = {
110
127
  // ============================================================================
111
128
  // Skill Catalog
112
129
  // ============================================================================
113
- export const SKILL_CATALOG = {
130
+ export const SKILLS_CATALOG = {
114
131
  crawl: CRAWL_SKILL_SPEC_0_0_1,
132
+ 'datalayer-whoami': DATALAYER_WHOAMI_SKILL_SPEC_0_0_1,
115
133
  events: EVENTS_SKILL_SPEC_0_0_1,
116
134
  github: GITHUB_SKILL_SPEC_0_0_1,
117
135
  jokes: JOKES_SKILL_SPEC_0_0_1,
@@ -119,19 +137,19 @@ export const SKILL_CATALOG = {
119
137
  'text-summarizer': TEXT_SUMMARIZER_SKILL_SPEC_0_0_1,
120
138
  };
121
139
  export function getSkillSpecs() {
122
- return Object.values(SKILL_CATALOG);
140
+ return Object.values(SKILLS_CATALOG);
123
141
  }
124
142
  function resolveSkillId(skillId) {
125
- if (skillId in SKILL_CATALOG)
143
+ if (skillId in SKILLS_CATALOG)
126
144
  return skillId;
127
145
  const idx = skillId.lastIndexOf(':');
128
146
  if (idx > 0) {
129
147
  const base = skillId.slice(0, idx);
130
- if (base in SKILL_CATALOG)
148
+ if (base in SKILLS_CATALOG)
131
149
  return base;
132
150
  }
133
151
  return skillId;
134
152
  }
135
153
  export function getSkillSpec(skillId) {
136
- return SKILL_CATALOG[resolveSkillId(skillId)];
154
+ return SKILLS_CATALOG[resolveSkillId(skillId)];
137
155
  }
@@ -13,6 +13,7 @@ export const RUNTIME_ECHO_TOOL_SPEC_0_0_1 = {
13
13
  tags: ['runtime', 'utility'],
14
14
  enabled: true,
15
15
  approval: 'auto',
16
+ timeout: undefined,
16
17
  requiresApproval: false,
17
18
  runtime: {
18
19
  language: 'python',
@@ -30,6 +31,7 @@ export const RUNTIME_SEND_MAIL_TOOL_SPEC_0_0_1 = {
30
31
  tags: ['runtime', 'approval', 'mail'],
31
32
  enabled: true,
32
33
  approval: 'manual',
34
+ timeout: undefined,
33
35
  requiresApproval: true,
34
36
  runtime: {
35
37
  language: 'python',
@@ -47,6 +49,7 @@ export const RUNTIME_SENSITIVE_ECHO_TOOL_SPEC_0_0_1 = {
47
49
  tags: ['runtime', 'approval'],
48
50
  enabled: true,
49
51
  approval: 'manual',
52
+ timeout: undefined,
50
53
  requiresApproval: true,
51
54
  runtime: {
52
55
  language: 'python',
@@ -0,0 +1,204 @@
1
+ import type { ServiceManager } from '@jupyterlab/services';
2
+ import type { IRuntimeOptions } from '@datalayer/core/lib/stateful/runtimes/apis';
3
+ import type { AgentStatus, AgentConnection, AgentConfig, Protocol } from '../types';
4
+ import type { AgentStreamSnapshotPayload, AgentStreamToolApprovalPayload, CodemodeStatusData } from '../types/stream';
5
+ import type { ContextSnapshotData } from '../types/context';
6
+ import type { McpToolsetsStatusResponse } from '../types/mcp';
7
+ import type { LoadedSkillInfo } from '../types/skills';
8
+ /**
9
+ * A URL-addressable agent that has been previously connected.
10
+ * May originate from an agent runtime pod OR from the stable agents service.
11
+ */
12
+ export interface AgentRegistryEntry {
13
+ id: string;
14
+ name: string;
15
+ description: string;
16
+ baseUrl: string;
17
+ protocol: Protocol;
18
+ status: AgentStatus;
19
+ error?: string | null;
20
+ lastUpdated: number;
21
+ documentId?: string;
22
+ runtimeId?: string;
23
+ author?: string;
24
+ avatarUrl?: string;
25
+ }
26
+ export type AgentRuntimeWsState = 'closed' | 'connecting' | 'connected';
27
+ export interface LocalTokenTurn {
28
+ turnNumber: number;
29
+ timestampMs: number;
30
+ systemPromptTokens: number;
31
+ toolsDescriptionTokens: number;
32
+ userMessageTokens: number;
33
+ aiMessageTokens: number;
34
+ toolsUsageTokens: number;
35
+ totalTokens: number;
36
+ }
37
+ export interface LocalCostPoint {
38
+ timestampMs: number;
39
+ cumulativeUsd: number;
40
+ }
41
+ export interface MonitoringCacheEntry {
42
+ tokenTurns: LocalTokenTurn[];
43
+ costPoints: LocalCostPoint[];
44
+ }
45
+ export declare function getMonitoringCacheKey(serviceName?: string, agentId?: string): string;
46
+ export interface AgentRuntimeStoreState {
47
+ agents: readonly AgentRegistryEntry[];
48
+ runtime: AgentConnection | null;
49
+ status: AgentStatus;
50
+ error: string | null;
51
+ isLaunching: boolean;
52
+ wsState: AgentRuntimeWsState;
53
+ approvals: AgentStreamToolApprovalPayload[];
54
+ pendingApprovalCount: number;
55
+ contextSnapshot: ContextSnapshotData | null;
56
+ costUsage: ContextSnapshotData['costUsage'] | null;
57
+ mcpStatus: McpToolsetsStatusResponse | null;
58
+ codemodeStatus: CodemodeStatusData | null;
59
+ fullContext: Record<string, unknown> | null;
60
+ monitoringCache: Record<string, MonitoringCacheEntry>;
61
+ loadedSkillsByAgentId: Record<string, LoadedSkillInfo[]>;
62
+ }
63
+ export interface AgentRuntimeStoreActions {
64
+ upsertAgent: (agent: Partial<AgentRegistryEntry> & {
65
+ id: string;
66
+ baseUrl: string;
67
+ protocol: Protocol;
68
+ }) => void;
69
+ getAgentById: (id: string) => AgentRegistryEntry | undefined;
70
+ getAgentByUrl: (baseUrl: string, protocol: Protocol) => AgentRegistryEntry | undefined;
71
+ updateAgentStatus: (id: string, status: AgentStatus, error?: string | null) => void;
72
+ toggleAgentStatus: (id: string) => void;
73
+ deleteAgent: (id: string) => void;
74
+ clearAgents: () => void;
75
+ setLoadedSkillsForAgent: (agentId: string, skills: LoadedSkillInfo[]) => void;
76
+ getLoadedSkillsForAgent: (agentId: string) => LoadedSkillInfo[];
77
+ clearLoadedSkillsForAgent: (agentId: string) => void;
78
+ launchAgent: (options: IRuntimeOptions) => Promise<AgentConnection>;
79
+ connectAgent: (connection: {
80
+ podName: string;
81
+ environmentName: string;
82
+ serviceManager?: ServiceManager.IManager;
83
+ jupyterBaseUrl?: string;
84
+ kernelId?: string;
85
+ }) => void;
86
+ createAgent: (config?: AgentConfig) => Promise<Pick<AgentConnection, 'agentId' | 'endpoint' | 'isReady'>>;
87
+ disconnect: () => void;
88
+ clearError: () => void;
89
+ setError: (error: string) => void;
90
+ setWsState: (state: AgentRuntimeWsState) => void;
91
+ setWs: (ws: WebSocket | null, agentId?: string) => void;
92
+ applySnapshot: (payload: AgentStreamSnapshotPayload) => void;
93
+ upsertApproval: (approval: AgentStreamToolApprovalPayload) => void;
94
+ removeApproval: (approvalId: string) => void;
95
+ sendDecision: (approvalId: string, approved: boolean, note?: string, toolCallId?: string, agentId?: string) => boolean;
96
+ requestRefresh: (agentId?: string) => boolean;
97
+ sendRawMessage: (payload: Record<string, unknown>, agentId?: string) => boolean;
98
+ appendLocalTokenTurn: (params: {
99
+ serviceName?: string;
100
+ agentId?: string;
101
+ timestampMs: number;
102
+ promptTokens: number;
103
+ completionTokens: number;
104
+ totalTokens: number;
105
+ }) => void;
106
+ mergeTokenTurns: (params: {
107
+ serviceName?: string;
108
+ agentId?: string;
109
+ turns: LocalTokenTurn[];
110
+ }) => void;
111
+ appendLocalTokenTurnFull: (params: {
112
+ serviceName?: string;
113
+ agentId?: string;
114
+ timestampMs: number;
115
+ systemPromptTokens: number;
116
+ toolsDescriptionTokens: number;
117
+ userMessageTokens: number;
118
+ aiMessageTokens: number;
119
+ toolsUsageTokens: number;
120
+ totalTokens: number;
121
+ }) => void;
122
+ upsertLocalCostPoint: (params: {
123
+ serviceName?: string;
124
+ agentId?: string;
125
+ timestampMs: number;
126
+ cumulativeUsd: number;
127
+ }) => void;
128
+ mergeCostPoints: (params: {
129
+ serviceName?: string;
130
+ agentId?: string;
131
+ points: LocalCostPoint[];
132
+ }) => void;
133
+ reset: () => void;
134
+ resetWs: () => void;
135
+ }
136
+ export type AgentRuntimeStore = AgentRuntimeStoreState & AgentRuntimeStoreActions;
137
+ export declare const agentRuntimeStore: Omit<Omit<import("zustand").StoreApi<AgentRuntimeStore>, "subscribe"> & {
138
+ subscribe: {
139
+ (listener: (selectedState: AgentRuntimeStore, previousSelectedState: AgentRuntimeStore) => void): () => void;
140
+ <U>(selector: (state: AgentRuntimeStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
141
+ equalityFn?: ((a: U, b: U) => boolean) | undefined;
142
+ fireImmediately?: boolean;
143
+ } | undefined): () => void;
144
+ };
145
+ }, "persist"> & {
146
+ persist: {
147
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AgentRuntimeStore, unknown>>) => void;
148
+ clearStorage: () => void;
149
+ rehydrate: () => Promise<void> | void;
150
+ hasHydrated: () => boolean;
151
+ onHydrate: (fn: (state: AgentRuntimeStore) => void) => () => void;
152
+ onFinishHydration: (fn: (state: AgentRuntimeStore) => void) => () => void;
153
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<AgentRuntimeStore, unknown>>;
154
+ };
155
+ };
156
+ export declare function useAgentRuntimeStore(): AgentRuntimeStore;
157
+ export declare function useAgentRuntimeStore<T>(selector: (state: AgentRuntimeStore) => T): T;
158
+ export declare const useAgentRuntimeConnection: () => AgentConnection | null;
159
+ export declare const useAgentRuntimeStatus: () => AgentStatus;
160
+ export declare const useAgentRuntimeError: () => string | null;
161
+ export declare const useAgentRuntimeIsLaunching: () => boolean;
162
+ export declare const useAgentRuntimeApprovals: () => AgentStreamToolApprovalPayload[];
163
+ export declare const useAgentRuntimePendingCount: () => number;
164
+ export declare const useAgentRuntimeMcpStatus: () => McpToolsetsStatusResponse | null;
165
+ export declare const useAgentRuntimeFullContext: () => Record<string, unknown> | null;
166
+ export declare const useAgentRuntimeContextSnapshot: () => ContextSnapshotData | null;
167
+ export declare const useAgentRuntimeCostUsage: () => {
168
+ lastTurnCostUsd: number;
169
+ cumulativeCostUsd: number;
170
+ perRunBudgetUsd: number | null;
171
+ cumulativeBudgetUsd: number | null;
172
+ requestCount: number;
173
+ totalTokensUsed: number;
174
+ modelBreakdown: Array<{
175
+ model: string;
176
+ inputTokens: number;
177
+ outputTokens: number;
178
+ costUsd: number;
179
+ requests: number;
180
+ }>;
181
+ runs: Array<{
182
+ timestamp: string;
183
+ model: string;
184
+ inputTokens: number;
185
+ outputTokens: number;
186
+ runCostUsd: number;
187
+ cumulativeCostUsd: number;
188
+ pricePerInputToken: number | null;
189
+ pricePerOutputToken: number | null;
190
+ pricingResolved: boolean;
191
+ }>;
192
+ lastUpdated: string | null;
193
+ } | null | undefined;
194
+ export declare const useAgentRuntimeCodemodeStatus: () => CodemodeStatusData | null;
195
+ export declare const useAgentRuntimeWsState: () => AgentRuntimeWsState;
196
+ export declare const useAgentRuntimeLoadedSkills: (agentId?: string) => LoadedSkillInfo[];
197
+ export declare const getAgentRuntimeState: () => AgentRuntimeStore;
198
+ export declare const subscribeToAgentRuntime: {
199
+ (listener: (selectedState: AgentRuntimeStore, previousSelectedState: AgentRuntimeStore) => void): () => void;
200
+ <U>(selector: (state: AgentRuntimeStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
201
+ equalityFn?: ((a: U, b: U) => boolean) | undefined;
202
+ fireImmediately?: boolean;
203
+ } | undefined): () => void;
204
+ };