@datalayer/agent-runtimes 0.0.10 → 0.0.12

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 (138) hide show
  1. package/README.md +2 -2
  2. package/lib/Agent.d.ts +29 -0
  3. package/lib/Agent.js +131 -0
  4. package/lib/AgentLexical.d.ts +34 -0
  5. package/lib/AgentLexical.js +296 -0
  6. package/lib/AgentNotebook.d.ts +19 -0
  7. package/lib/AgentNotebook.js +192 -0
  8. package/lib/agent-lexical-main.d.ts +1 -0
  9. package/lib/agent-lexical-main.js +11 -0
  10. package/lib/agent-main.d.ts +1 -0
  11. package/lib/agent-main.js +11 -0
  12. package/lib/agent-notebook-main.d.ts +1 -0
  13. package/lib/agent-notebook-main.js +12 -0
  14. package/lib/components/AgentConfiguration.d.ts +33 -21
  15. package/lib/components/AgentConfiguration.js +76 -21
  16. package/lib/components/chat/components/AgentDetails.d.ts +3 -1
  17. package/lib/components/chat/components/AgentDetails.js +164 -6
  18. package/lib/components/chat/components/Chat.d.ts +29 -3
  19. package/lib/components/chat/components/Chat.js +64 -59
  20. package/lib/components/chat/components/ChatFloating.d.ts +34 -12
  21. package/lib/components/chat/components/ChatFloating.js +54 -21
  22. package/lib/components/chat/components/ChatInline.d.ts +5 -1
  23. package/lib/components/chat/components/ChatInline.js +8 -1
  24. package/lib/components/chat/components/ChatSidebar.d.ts +6 -1
  25. package/lib/components/chat/components/ChatSidebar.js +2 -2
  26. package/lib/components/chat/components/ChatStandalone.d.ts +6 -1
  27. package/lib/components/chat/components/ChatStandalone.js +2 -2
  28. package/lib/components/chat/components/ContextDistribution.js +2 -2
  29. package/lib/components/chat/components/ContextInspector.js +4 -2
  30. package/lib/components/chat/components/ContextPanel.js +1 -6
  31. package/lib/components/chat/components/base/ChatBase.d.ts +49 -8
  32. package/lib/components/chat/components/base/ChatBase.js +544 -149
  33. package/lib/components/chat/components/base/InputPrompt.d.ts +42 -0
  34. package/lib/components/chat/components/base/InputPrompt.js +131 -0
  35. package/lib/components/chat/components/index.d.ts +3 -3
  36. package/lib/components/chat/components/index.js +1 -1
  37. package/lib/components/chat/components/parts/ReasoningPart.js +2 -4
  38. package/lib/components/chat/components/parts/TextPart.js +2 -70
  39. package/lib/components/chat/components/styles/streamdownStyles.d.ts +23 -0
  40. package/lib/components/chat/components/styles/streamdownStyles.js +319 -0
  41. package/lib/components/chat/index.d.ts +1 -1
  42. package/lib/components/chat/index.js +1 -1
  43. package/lib/components/chat/inference/DatalayerInferenceProvider.js +16 -12
  44. package/lib/components/chat/inference/SelfHostedInferenceProvider.js +16 -12
  45. package/lib/components/chat/protocols/AGUIAdapter.d.ts +10 -3
  46. package/lib/components/chat/protocols/AGUIAdapter.js +123 -44
  47. package/lib/components/chat/types/tool.d.ts +5 -2
  48. package/lib/components/index.d.ts +2 -19
  49. package/lib/components/index.js +1 -10
  50. package/lib/config/index.d.ts +0 -3
  51. package/lib/config/index.js +0 -3
  52. package/lib/examples/A2UiRestaurantExample.js +1 -1
  53. package/lib/examples/AgentRuntimeChatExample.d.ts +15 -0
  54. package/lib/examples/AgentRuntimeChatExample.js +126 -0
  55. package/lib/examples/{AgentSpaceFormExample.d.ts → AgentRuntimeFormExample.d.ts} +3 -3
  56. package/lib/examples/{AgentSpaceFormExample.js → AgentRuntimeFormExample.js} +61 -17
  57. package/lib/examples/AgentRuntimeLexicalExample.js +6 -3
  58. package/lib/examples/AgentRuntimeLexicalSidebarExample.js +8 -1
  59. package/lib/examples/AgentRuntimeNotebookExample.js +6 -5
  60. package/lib/examples/CopilotKitNotebookExample.js +2 -2
  61. package/lib/examples/JupyterNotebookExample.js +2 -2
  62. package/lib/{components → examples/components}/Header.d.ts +2 -1
  63. package/lib/{components → examples/components}/HeaderControls.js +1 -1
  64. package/lib/{components → examples/components}/LexicalEditor.d.ts +6 -1
  65. package/lib/{components → examples/components}/LexicalEditor.js +4 -4
  66. package/lib/{components → examples/components}/MainContent.d.ts +1 -1
  67. package/lib/{components → examples/components}/MainContent.js +7 -5
  68. package/lib/examples/components/index.d.ts +16 -0
  69. package/lib/examples/components/index.js +13 -0
  70. package/lib/examples/example-selector.js +2 -1
  71. package/lib/examples/index.d.ts +1 -1
  72. package/lib/examples/index.js +1 -1
  73. package/lib/examples/main.js +2 -2
  74. package/lib/examples/stores/examplesStore.d.ts +2 -23
  75. package/lib/index.d.ts +2 -1
  76. package/lib/index.js +1 -0
  77. package/lib/lexical/ChatInlinePlugin.d.ts +13 -2
  78. package/lib/lexical/ChatInlinePlugin.js +41 -179
  79. package/lib/lexical/index.d.ts +1 -0
  80. package/lib/lexical/index.js +1 -0
  81. package/lib/lexical/useChatInlineToolbarItems.d.ts +28 -0
  82. package/lib/lexical/useChatInlineToolbarItems.js +163 -0
  83. package/lib/runtime/useAgentRuntime.d.ts +1 -1
  84. package/lib/runtime/useAgentRuntime.js +1 -1
  85. package/lib/specs/agents/codeai/agents.d.ts +28 -0
  86. package/lib/specs/agents/codeai/agents.js +151 -0
  87. package/lib/specs/agents/codeai/index.d.ts +1 -0
  88. package/lib/specs/agents/codeai/index.js +5 -0
  89. package/lib/{config → specs/agents/codemode-paper}/agents.d.ts +4 -6
  90. package/lib/specs/agents/codemode-paper/agents.js +308 -0
  91. package/lib/specs/agents/codemode-paper/index.d.ts +1 -0
  92. package/lib/specs/agents/codemode-paper/index.js +5 -0
  93. package/lib/specs/agents/datalayer-ai/agents.d.ts +31 -0
  94. package/lib/{config → specs/agents/datalayer-ai}/agents.js +42 -184
  95. package/lib/specs/agents/datalayer-ai/index.d.ts +1 -0
  96. package/lib/specs/agents/datalayer-ai/index.js +5 -0
  97. package/lib/specs/agents/index.d.ts +21 -0
  98. package/lib/specs/agents/index.js +47 -0
  99. package/lib/specs/envvars.d.ts +29 -0
  100. package/lib/specs/envvars.js +125 -0
  101. package/lib/specs/index.d.ts +5 -0
  102. package/lib/specs/index.js +9 -0
  103. package/lib/{config → specs}/mcpServers.d.ts +2 -1
  104. package/lib/{config → specs}/mcpServers.js +47 -1
  105. package/lib/specs/models.d.ts +68 -0
  106. package/lib/specs/models.js +239 -0
  107. package/lib/{config → specs}/skills.d.ts +2 -0
  108. package/lib/{config → specs}/skills.js +6 -0
  109. package/lib/state/substates/AIAgentState.d.ts +0 -1
  110. package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.d.ts +11 -22
  111. package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.js +5 -5
  112. package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +6 -6
  113. package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +4 -4
  114. package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +6 -6
  115. package/lib/tools/adapters/agent-runtimes/notebookHooks.js +4 -4
  116. package/lib/{types.d.ts → types/Types.d.ts} +42 -8
  117. package/lib/types/index.d.ts +1 -0
  118. package/lib/types/index.js +1 -0
  119. package/package.json +11 -5
  120. package/scripts/codegen/generate_agents.py +608 -157
  121. package/scripts/codegen/generate_envvars.py +302 -0
  122. package/scripts/codegen/generate_mcp_servers.py +33 -21
  123. package/scripts/codegen/generate_models.py +486 -0
  124. package/scripts/codegen/generate_skills.py +21 -8
  125. package/style/primer-primitives.css +22 -0
  126. package/lib/components/chat/components/elements/ChatInputPrompt.d.ts +0 -37
  127. package/lib/components/chat/components/elements/ChatInputPrompt.js +0 -150
  128. /package/lib/{components → examples/components}/FooterMetrics.d.ts +0 -0
  129. /package/lib/{components → examples/components}/FooterMetrics.js +0 -0
  130. /package/lib/{components → examples/components}/Header.js +0 -0
  131. /package/lib/{components → examples/components}/HeaderControls.d.ts +0 -0
  132. /package/lib/{components → examples/components}/MockFileBrowser.d.ts +0 -0
  133. /package/lib/{components → examples/components}/MockFileBrowser.js +0 -0
  134. /package/lib/{components → examples/components}/SessionTabs.d.ts +0 -0
  135. /package/lib/{components → examples/components}/SessionTabs.js +0 -0
  136. /package/lib/{components → examples/components}/TimeTravel.d.ts +0 -0
  137. /package/lib/{components → examples/components}/TimeTravel.js +0 -0
  138. /package/lib/{types.js → types/Types.js} +0 -0
@@ -2,28 +2,23 @@
2
2
  * Copyright (c) 2025-2026 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- import { ALPHAVANTAGE_MCP_SERVER, CHART_MCP_SERVER, FILESYSTEM_MCP_SERVER, GITHUB_MCP_SERVER, GOOGLE_WORKSPACE_MCP_SERVER, KAGGLE_MCP_SERVER, SLACK_MCP_SERVER, TAVILY_MCP_SERVER, } from './mcpServers';
6
- import { CRAWL_SKILL_SPEC, GITHUB_SKILL_SPEC, PDF_SKILL_SPEC } from './skills';
5
+ import { ALPHAVANTAGE_MCP_SERVER, FILESYSTEM_MCP_SERVER, GOOGLE_WORKSPACE_MCP_SERVER, KAGGLE_MCP_SERVER, TAVILY_MCP_SERVER, } from '../../mcpServers';
6
+ import { GITHUB_SKILL_SPEC } from '../../skills';
7
7
  // ============================================================================
8
8
  // MCP Server Lookup
9
9
  // ============================================================================
10
10
  const MCP_SERVER_MAP = {
11
11
  alphavantage: ALPHAVANTAGE_MCP_SERVER,
12
- chart: CHART_MCP_SERVER,
13
12
  filesystem: FILESYSTEM_MCP_SERVER,
14
- github: GITHUB_MCP_SERVER,
15
13
  'google-workspace': GOOGLE_WORKSPACE_MCP_SERVER,
16
14
  kaggle: KAGGLE_MCP_SERVER,
17
- slack: SLACK_MCP_SERVER,
18
15
  tavily: TAVILY_MCP_SERVER,
19
16
  };
20
17
  /**
21
18
  * Map skill IDs to SkillSpec objects, converting to AgentSkillSpec shape.
22
19
  */
23
20
  const SKILL_MAP = {
24
- crawl: CRAWL_SKILL_SPEC,
25
21
  github: GITHUB_SKILL_SPEC,
26
- pdf: PDF_SKILL_SPEC,
27
22
  };
28
23
  function toAgentSkillSpec(skill) {
29
24
  return {
@@ -39,55 +34,20 @@ function toAgentSkillSpec(skill) {
39
34
  // ============================================================================
40
35
  // Agent Specs
41
36
  // ============================================================================
42
- export const CRAWLER_MCP_AGENT_SPEC = {
43
- id: 'crawler-mcp',
44
- name: 'Crawler Agent (MCP)',
45
- description: `Web crawling and research agent that searches the web and GitHub repositories for information.`,
46
- tags: ['web', 'search', 'research', 'crawler', 'github'],
47
- enabled: false,
48
- mcpServers: [MCP_SERVER_MAP['tavily'], MCP_SERVER_MAP['github']],
49
- skills: [],
50
- environmentName: 'ai-agents-env',
51
- icon: 'globe',
52
- color: '#10B981',
53
- suggestions: [
54
- 'Search the web for recent news about AI agents',
55
- 'Find trending open-source Python projects on GitHub',
56
- 'Research best practices for building RAG applications',
57
- 'Compare popular JavaScript frameworks in 2024',
58
- ],
59
- systemPrompt: `You are a web crawling and research assistant with access to Tavily search and GitHub tools. Use Tavily to search the web for current information and search GitHub repositories for relevant projects. Synthesize information from multiple sources and provide clear summaries with sources cited.
60
- `,
61
- systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
62
- ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
63
- Use this to see what MCP servers you can access.
64
-
65
- 2. **search_tools** - Progressive tool discovery by natural language query
66
- Use this to find relevant tools before executing tasks.
67
-
68
- 3. **get_tool_details** - Get full tool schema and documentation
69
- Use this to understand tool parameters before calling them.
70
-
71
- 4. **execute_code** - Run Python code that composes multiple tools
72
- Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox.
73
- Variables, functions, and state PERSIST between execute_code calls.
74
- Import tools using: \`from generated.servers.<server_name> import <function_name>\`
75
- NEVER use \`import *\` - always use explicit named imports.
76
-
77
- ## Recommended Workflow 1. **Discover**: Use list_servers and search_tools to find relevant tools 2. **Understand**: Use get_tool_details to check parameters 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed
78
- ## Token Efficiency When possible, chain multiple tool calls in a single execute_code block. This reduces output tokens by processing intermediate results in code rather than returning them. If you want to examine results, print subsets, preview (maximum 20 first characters) and/or counts instead of full data, this is really important.
79
- `,
80
- };
37
+ // Datalayer Ai Agents
38
+ // ============================================================================
81
39
  export const CRAWLER_AGENT_SPEC = {
82
- id: 'crawler',
40
+ id: 'datalayer-ai/crawler',
83
41
  name: 'Crawler Agent',
84
42
  description: `Web crawling and research agent that searches the web and GitHub repositories for information.`,
85
43
  tags: ['web', 'search', 'research', 'crawler', 'github'],
86
44
  enabled: false,
45
+ model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
87
46
  mcpServers: [MCP_SERVER_MAP['tavily']],
88
47
  skills: [toAgentSkillSpec(SKILL_MAP['github'])],
89
48
  environmentName: 'ai-agents-env',
90
49
  icon: 'globe',
50
+ emoji: '🌐',
91
51
  color: '#10B981',
92
52
  suggestions: [
93
53
  'Search the web for recent news about AI agents',
@@ -95,9 +55,10 @@ export const CRAWLER_AGENT_SPEC = {
95
55
  'Research best practices for building RAG applications',
96
56
  'Compare popular JavaScript frameworks in 2024',
97
57
  ],
58
+ sandboxVariant: 'jupyter',
98
59
  systemPrompt: `You are a web crawling and research assistant with access to Tavily search and GitHub tools. Use Tavily to search the web for current information and search GitHub repositories for relevant projects. Synthesize information from multiple sources and provide clear summaries with sources cited.
99
60
  `,
100
- systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
61
+ systemPromptCodemodeAddons: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
101
62
  ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
102
63
  Use this to see what MCP servers you can access.
103
64
 
@@ -118,11 +79,12 @@ export const CRAWLER_AGENT_SPEC = {
118
79
  `,
119
80
  };
120
81
  export const DATA_ACQUISITION_AGENT_SPEC = {
121
- id: 'data-acquisition',
82
+ id: 'datalayer-ai/data-acquisition',
122
83
  name: 'Data Acquisition Agent',
123
84
  description: `Acquires and manages data from various sources including Kaggle datasets and local filesystem operations.`,
124
85
  tags: ['data', 'acquisition', 'kaggle', 'filesystem'],
125
86
  enabled: true,
87
+ model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
126
88
  mcpServers: [
127
89
  MCP_SERVER_MAP['kaggle'],
128
90
  MCP_SERVER_MAP['filesystem'],
@@ -131,6 +93,7 @@ export const DATA_ACQUISITION_AGENT_SPEC = {
131
93
  skills: [toAgentSkillSpec(SKILL_MAP['github'])],
132
94
  environmentName: 'ai-agents-env',
133
95
  icon: 'database',
96
+ emoji: '📊',
134
97
  color: '#3B82F6',
135
98
  suggestions: [
136
99
  'Find popular machine learning datasets on Kaggle',
@@ -138,48 +101,10 @@ export const DATA_ACQUISITION_AGENT_SPEC = {
138
101
  'List available files in my workspace',
139
102
  'Search Kaggle for time series forecasting competitions',
140
103
  ],
104
+ sandboxVariant: 'jupyter',
141
105
  systemPrompt: `You are a data acquisition specialist with access to Kaggle datasets and filesystem tools. You can search for datasets, download data, read and write files, and help users prepare data for analysis. Guide users through finding relevant datasets and organizing their workspace efficiently.
142
106
  `,
143
- systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
144
- ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
145
- Use this to see what MCP servers you can access.
146
-
147
- 2. **search_tools** - Progressive tool discovery by natural language query
148
- Use this to find relevant tools before executing tasks.
149
-
150
- 3. **get_tool_details** - Get full tool schema and documentation
151
- Use this to understand tool parameters before calling them.
152
-
153
- 4. **execute_code** - Run Python code that composes multiple tools
154
- Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox.
155
- Variables, functions, and state PERSIST between execute_code calls.
156
- Import tools using: \`from generated.servers.<server_name> import <function_name>\`
157
- NEVER use \`import *\` - always use explicit named imports.
158
-
159
- ## Recommended Workflow 1. **Discover**: Use list_servers and search_tools to find relevant tools 2. **Understand**: Use get_tool_details to check parameters 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed
160
- ## Token Efficiency When possible, chain multiple tool calls in a single execute_code block. This reduces output tokens by processing intermediate results in code rather than returning them. If you want to examine results, print subsets, preview (maximum 20 first characters) and/or counts instead of full data, this is really important.
161
- `,
162
- };
163
- export const FINANCIAL_VIZ_AGENT_SPEC = {
164
- id: 'financial-viz',
165
- name: 'Financial Visualization Agent (Viz)',
166
- description: `Analyzes financial market data and creates visualizations and charts.`,
167
- tags: ['finance', 'stocks', 'visualization', 'charts'],
168
- enabled: false,
169
- mcpServers: [MCP_SERVER_MAP['alphavantage'], MCP_SERVER_MAP['chart']],
170
- skills: [],
171
- environmentName: 'ai-agents-env',
172
- icon: 'trending-up',
173
- color: '#F59E0B',
174
- suggestions: [
175
- 'Show me the stock price history for AAPL',
176
- 'Create a chart comparing MSFT and GOOGL over the last year',
177
- 'Analyze the trading volume trends for Tesla',
178
- 'Get the latest market news for tech stocks',
179
- ],
180
- systemPrompt: `You are a financial market analyst with access to Alpha Vantage market data and chart generation tools. You can fetch stock prices, analyze trading volumes, create visualizations, and track market trends. Provide clear insights with relevant data points and generate charts to illustrate patterns.
181
- `,
182
- systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
107
+ systemPromptCodemodeAddons: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
183
108
  ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
184
109
  Use this to see what MCP servers you can access.
185
110
 
@@ -200,15 +125,17 @@ export const FINANCIAL_VIZ_AGENT_SPEC = {
200
125
  `,
201
126
  };
202
127
  export const FINANCIAL_AGENT_SPEC = {
203
- id: 'financial',
128
+ id: 'datalayer-ai/financial',
204
129
  name: 'Financial Visualization Agent',
205
130
  description: `Analyzes financial market data and creates visualizations and charts.`,
206
131
  tags: ['finance', 'stocks', 'visualization', 'charts'],
207
132
  enabled: false,
133
+ model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
208
134
  mcpServers: [MCP_SERVER_MAP['alphavantage']],
209
135
  skills: [],
210
136
  environmentName: 'ai-agents-env',
211
137
  icon: 'trending-up',
138
+ emoji: '📈',
212
139
  color: '#F59E0B',
213
140
  suggestions: [
214
141
  'Show me the stock price history for AAPL',
@@ -216,48 +143,10 @@ export const FINANCIAL_AGENT_SPEC = {
216
143
  'Analyze the trading volume trends for Tesla',
217
144
  'Get the latest market news for tech stocks',
218
145
  ],
146
+ sandboxVariant: 'jupyter',
219
147
  systemPrompt: `You are a financial market analyst with access to Alpha Vantage market data tools. You can fetch stock prices, analyze trading volumes, create visualizations, and track market trends. Provide clear insights with relevant data points and suggest visualization approaches when appropriate.
220
148
  `,
221
- systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
222
- ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
223
- Use this to see what MCP servers you can access.
224
-
225
- 2. **search_tools** - Progressive tool discovery by natural language query
226
- Use this to find relevant tools before executing tasks.
227
-
228
- 3. **get_tool_details** - Get full tool schema and documentation
229
- Use this to understand tool parameters before calling them.
230
-
231
- 4. **execute_code** - Run Python code that composes multiple tools
232
- Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox.
233
- Variables, functions, and state PERSIST between execute_code calls.
234
- Import tools using: \`from generated.servers.<server_name> import <function_name>\`
235
- NEVER use \`import *\` - always use explicit named imports.
236
-
237
- ## Recommended Workflow 1. **Discover**: Use list_servers and search_tools to find relevant tools 2. **Understand**: Use get_tool_details to check parameters 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed
238
- ## Token Efficiency When possible, chain multiple tool calls in a single execute_code block. This reduces output tokens by processing intermediate results in code rather than returning them. If you want to examine results, print subsets, preview (maximum 20 first characters) and/or counts instead of full data, this is really important.
239
- `,
240
- };
241
- export const GITHUB_AGENT_MCP_AGENT_SPEC = {
242
- id: 'github-agent-mcp',
243
- name: 'GitHub Agent',
244
- description: `Manages GitHub repositories, issues, and pull requests with email notification capabilities.`,
245
- tags: ['github', 'git', 'code', 'email'],
246
- enabled: false,
247
- mcpServers: [MCP_SERVER_MAP['github'], MCP_SERVER_MAP['google-workspace']],
248
- skills: [],
249
- environmentName: 'ai-agents-env',
250
- icon: 'git-branch',
251
- color: '#6366F1',
252
- suggestions: [
253
- 'List my open pull requests across all repositories',
254
- 'Create an issue for a bug I found in datalayer/ui',
255
- 'Show recent commits on the main branch',
256
- 'Search for repositories related to Jupyter notebooks',
257
- ],
258
- systemPrompt: `You are a GitHub assistant with access to GitHub repository tools and Google Workspace for email notifications. You can list and search repositories, issues, and pull requests, create new issues, review PRs, search code, and send email notifications. Always confirm repository names before creating issues/PRs and provide clear summaries when listing multiple items.
259
- `,
260
- systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
149
+ systemPromptCodemodeAddons: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
261
150
  ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
262
151
  Use this to see what MCP servers you can access.
263
152
 
@@ -278,15 +167,17 @@ export const GITHUB_AGENT_MCP_AGENT_SPEC = {
278
167
  `,
279
168
  };
280
169
  export const GITHUB_AGENT_SPEC = {
281
- id: 'github-agent',
170
+ id: 'datalayer-ai/github-agent',
282
171
  name: 'GitHub Agent',
283
172
  description: `Manages GitHub repositories, issues, and pull requests with email notification capabilities.`,
284
173
  tags: ['github', 'git', 'code', 'email'],
285
174
  enabled: false,
175
+ model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
286
176
  mcpServers: [MCP_SERVER_MAP['google-workspace']],
287
177
  skills: [toAgentSkillSpec(SKILL_MAP['github'])],
288
178
  environmentName: 'ai-agents-env',
289
179
  icon: 'git-branch',
180
+ emoji: '🐙',
290
181
  color: '#6366F1',
291
182
  suggestions: [
292
183
  'List my open pull requests across all repositories',
@@ -294,48 +185,10 @@ export const GITHUB_AGENT_SPEC = {
294
185
  'Show recent commits on the main branch',
295
186
  'Search for repositories related to Jupyter notebooks',
296
187
  ],
188
+ sandboxVariant: 'jupyter',
297
189
  systemPrompt: `You are a GitHub assistant with access to GitHub skills and Google Workspace for email notifications. You can list and search repositories, issues, and pull requests, create new issues, review PRs, search code, and send email notifications. Always confirm repository names before creating issues/PRs and provide clear summaries when listing multiple items.
298
190
  `,
299
- systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
300
- ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
301
- Use this to see what MCP servers you can access.
302
-
303
- 2. **search_tools** - Progressive tool discovery by natural language query
304
- Use this to find relevant tools before executing tasks.
305
-
306
- 3. **get_tool_details** - Get full tool schema and documentation
307
- Use this to understand tool parameters before calling them.
308
-
309
- 4. **execute_code** - Run Python code that composes multiple tools
310
- Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox.
311
- Variables, functions, and state PERSIST between execute_code calls.
312
- Import tools using: \`from generated.servers.<server_name> import <function_name>\`
313
- NEVER use \`import *\` - always use explicit named imports.
314
-
315
- ## Recommended Workflow 1. **Discover**: Use list_servers and search_tools to find relevant tools 2. **Understand**: Use get_tool_details to check parameters 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed
316
- ## Token Efficiency When possible, chain multiple tool calls in a single execute_code block. This reduces output tokens by processing intermediate results in code rather than returning them. If you want to examine results, print subsets, preview (maximum 20 first characters) and/or counts instead of full data, this is really important.
317
- `,
318
- };
319
- export const INFORMATION_ROUTING_AGENT_SPEC = {
320
- id: 'information-routing',
321
- name: 'Information Routing Agent',
322
- description: `Routes information between Google Drive and Slack, managing document workflows and team communication.`,
323
- tags: ['workflow', 'communication', 'gdrive', 'slack'],
324
- enabled: false,
325
- mcpServers: [MCP_SERVER_MAP['google-workspace'], MCP_SERVER_MAP['slack']],
326
- skills: [],
327
- environmentName: 'ai-agents-env',
328
- icon: 'share-2',
329
- color: '#EC4899',
330
- suggestions: [
331
- 'Find documents shared with me in Google Drive',
332
- "Send a summary of today's meeting notes to the",
333
- 'List recent files in my Drive folder',
334
- 'Post a reminder to Slack about the upcoming deadline',
335
- ],
336
- systemPrompt: `You are an information routing specialist with access to Google Drive and Slack tools. You can find and manage documents in Drive, send messages to Slack channels, and automate workflows between these platforms. Help users coordinate team communication and document management efficiently. Use "#" to denote Slack channels. Do not use file extension when referring to Google Drive documents.
337
- `,
338
- systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
191
+ systemPromptCodemodeAddons: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
339
192
  ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
340
193
  Use this to see what MCP servers you can access.
341
194
 
@@ -356,15 +209,17 @@ export const INFORMATION_ROUTING_AGENT_SPEC = {
356
209
  `,
357
210
  };
358
211
  export const SIMPLE_AGENT_SPEC = {
359
- id: 'simple',
212
+ id: 'datalayer-ai/simple',
360
213
  name: 'A Simple Agent',
361
214
  description: `A simple conversational agent. No tools, no MCP servers, no skills — just a helpful AI assistant you can chat with.`,
362
215
  tags: ['simple', 'chat', 'assistant'],
363
216
  enabled: true,
217
+ model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
364
218
  mcpServers: [],
365
219
  skills: [],
366
220
  environmentName: 'ai-agents-env',
367
221
  icon: 'share-2',
222
+ emoji: '🤖',
368
223
  color: '#6366F1',
369
224
  suggestions: [
370
225
  'Tell me a joke',
@@ -372,23 +227,21 @@ export const SIMPLE_AGENT_SPEC = {
372
227
  'Help me brainstorm ideas for a weekend project',
373
228
  'Summarize the key points of a topic I describe',
374
229
  ],
230
+ sandboxVariant: 'jupyter',
375
231
  systemPrompt: `You are a helpful, friendly AI assistant. You do not have access to any external tools, MCP servers, or skills. Answer questions using your training knowledge, be concise, and let the user know if a question is outside your knowledge.
376
232
  `,
377
- systemPromptCodemode: undefined,
233
+ systemPromptCodemodeAddons: undefined,
378
234
  };
379
235
  // ============================================================================
380
236
  // Agent Specs Registry
381
237
  // ============================================================================
382
238
  export const AGENT_SPECS = {
383
- 'crawler-mcp': CRAWLER_MCP_AGENT_SPEC,
384
- crawler: CRAWLER_AGENT_SPEC,
385
- 'data-acquisition': DATA_ACQUISITION_AGENT_SPEC,
386
- 'financial-viz': FINANCIAL_VIZ_AGENT_SPEC,
387
- financial: FINANCIAL_AGENT_SPEC,
388
- 'github-agent-mcp': GITHUB_AGENT_MCP_AGENT_SPEC,
389
- 'github-agent': GITHUB_AGENT_SPEC,
390
- 'information-routing': INFORMATION_ROUTING_AGENT_SPEC,
391
- simple: SIMPLE_AGENT_SPEC,
239
+ // Datalayer Ai
240
+ 'datalayer-ai/crawler': CRAWLER_AGENT_SPEC,
241
+ 'datalayer-ai/data-acquisition': DATA_ACQUISITION_AGENT_SPEC,
242
+ 'datalayer-ai/financial': FINANCIAL_AGENT_SPEC,
243
+ 'datalayer-ai/github-agent': GITHUB_AGENT_SPEC,
244
+ 'datalayer-ai/simple': SIMPLE_AGENT_SPEC,
392
245
  };
393
246
  /**
394
247
  * Get an agent specification by ID.
@@ -398,9 +251,14 @@ export function getAgentSpecs(agentId) {
398
251
  }
399
252
  /**
400
253
  * List all available agent specifications.
254
+ *
255
+ * @param prefix - If provided, only return specs whose ID starts with this prefix.
401
256
  */
402
- export function listAgentSpecs() {
403
- return Object.values(AGENT_SPECS);
257
+ export function listAgentSpecs(prefix) {
258
+ const specs = Object.values(AGENT_SPECS);
259
+ return prefix !== undefined
260
+ ? specs.filter(s => s.id.startsWith(prefix))
261
+ : specs;
404
262
  }
405
263
  /**
406
264
  * Collect all required environment variables for an agent spec.
@@ -0,0 +1 @@
1
+ export * from './agents';
@@ -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 * from './agents';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Agent Library - Subfolder Organization.
3
+ *
4
+ * THIS FILE IS AUTO-GENERATED. DO NOT EDIT MANUALLY.
5
+ */
6
+ import type { AgentSpec } from '../../types';
7
+ export declare const AGENT_SPECS: Record<string, AgentSpec>;
8
+ /**
9
+ * Get an agent specification by ID.
10
+ */
11
+ export declare function getAgentSpecs(agentId: string): AgentSpec | undefined;
12
+ /**
13
+ * List all available agent specifications.
14
+ *
15
+ * @param prefix - If provided, only return specs whose ID starts with this prefix.
16
+ */
17
+ export declare function listAgentSpecs(prefix?: string): AgentSpec[];
18
+ /**
19
+ * Collect all required environment variables for an agent spec.
20
+ */
21
+ export declare function getAgentSpecRequiredEnvVars(spec: AgentSpec): string[];
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { AGENT_SPECS as CODEAI_AGENTS } from './codeai';
6
+ import { AGENT_SPECS as CODEMODE_PAPER_AGENTS } from './codemode-paper';
7
+ import { AGENT_SPECS as DATALAYER_AI_AGENTS } from './datalayer-ai';
8
+ // Merge all agent specs from subfolders
9
+ export const AGENT_SPECS = {
10
+ ...CODEAI_AGENTS,
11
+ ...CODEMODE_PAPER_AGENTS,
12
+ ...DATALAYER_AI_AGENTS,
13
+ };
14
+ /**
15
+ * Get an agent specification by ID.
16
+ */
17
+ export function getAgentSpecs(agentId) {
18
+ return AGENT_SPECS[agentId];
19
+ }
20
+ /**
21
+ * List all available agent specifications.
22
+ *
23
+ * @param prefix - If provided, only return specs whose ID starts with this prefix.
24
+ */
25
+ export function listAgentSpecs(prefix) {
26
+ const specs = Object.values(AGENT_SPECS);
27
+ return prefix !== undefined
28
+ ? specs.filter(s => s.id.startsWith(prefix))
29
+ : specs;
30
+ }
31
+ /**
32
+ * Collect all required environment variables for an agent spec.
33
+ */
34
+ export function getAgentSpecRequiredEnvVars(spec) {
35
+ const vars = new Set();
36
+ for (const server of spec.mcpServers) {
37
+ for (const v of server.requiredEnvVars ?? []) {
38
+ vars.add(v);
39
+ }
40
+ }
41
+ for (const skill of spec.skills) {
42
+ for (const v of skill.requiredEnvVars ?? []) {
43
+ vars.add(v);
44
+ }
45
+ }
46
+ return Array.from(vars);
47
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Environment Variable Catalog
3
+ *
4
+ * Predefined environment variable specifications.
5
+ *
6
+ * This file is AUTO-GENERATED from YAML specifications.
7
+ * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.
8
+ */
9
+ export interface EnvvarSpec {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ registrationUrl?: string;
14
+ tags: string[];
15
+ icon?: string;
16
+ emoji?: string;
17
+ }
18
+ export declare const ALPHAVANTAGE_API_KEY_SPEC: EnvvarSpec;
19
+ export declare const GITHUB_TOKEN_SPEC: EnvvarSpec;
20
+ export declare const GOOGLE_OAUTH_CLIENT_ID_SPEC: EnvvarSpec;
21
+ export declare const GOOGLE_OAUTH_CLIENT_SECRET_SPEC: EnvvarSpec;
22
+ export declare const HF_TOKEN_SPEC: EnvvarSpec;
23
+ export declare const KAGGLE_TOKEN_SPEC: EnvvarSpec;
24
+ export declare const SLACK_BOT_TOKEN_SPEC: EnvvarSpec;
25
+ export declare const SLACK_CHANNEL_IDS_SPEC: EnvvarSpec;
26
+ export declare const SLACK_TEAM_ID_SPEC: EnvvarSpec;
27
+ export declare const TAVILY_API_KEY_SPEC: EnvvarSpec;
28
+ export declare const ENVVAR_CATALOG: Record<string, EnvvarSpec>;
29
+ export declare function getEnvvarSpec(envvarId: string): EnvvarSpec;
@@ -0,0 +1,125 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ // ============================================================================
6
+ // Environment Variable Definitions
7
+ // ============================================================================
8
+ export const ALPHAVANTAGE_API_KEY_SPEC = {
9
+ id: 'ALPHAVANTAGE_API_KEY',
10
+ name: 'Alpha Vantage API Key',
11
+ description: 'API key for accessing Alpha Vantage financial market data and stock information. Provides real-time and historical stock prices, forex data, and cryptocurrency information.',
12
+ registrationUrl: 'https://www.alphavantage.co/support/#api-key',
13
+ tags: ['authentication', 'api-key', 'finance', 'stocks', 'market-data'],
14
+ icon: 'key',
15
+ emoji: '🔑',
16
+ };
17
+ export const GITHUB_TOKEN_SPEC = {
18
+ id: 'GITHUB_TOKEN',
19
+ name: 'GitHub Token',
20
+ description: 'GitHub API token for repository management and code operations. Required for GitHub MCP server and GitHub skill to interact with GitHub repositories programmatically.',
21
+ registrationUrl: 'https://github.com/settings/tokens',
22
+ tags: ['authentication', 'token', 'github', 'git', 'mcp-server', 'skill'],
23
+ icon: 'key',
24
+ emoji: '🔑',
25
+ };
26
+ export const GOOGLE_OAUTH_CLIENT_ID_SPEC = {
27
+ id: 'GOOGLE_OAUTH_CLIENT_ID',
28
+ name: 'Google OAuth Client ID',
29
+ description: 'OAuth 2.0 client ID for Google Workspace authentication. Required for Google Drive, Gmail, Calendar, and Docs integration through the Google Workspace MCP server.',
30
+ registrationUrl: 'https://console.cloud.google.com/apis/credentials',
31
+ tags: ['authentication', 'oauth', 'google', 'workspace', 'client-id'],
32
+ icon: 'key',
33
+ emoji: '🔑',
34
+ };
35
+ export const GOOGLE_OAUTH_CLIENT_SECRET_SPEC = {
36
+ id: 'GOOGLE_OAUTH_CLIENT_SECRET',
37
+ name: 'Google OAuth Client Secret',
38
+ description: 'OAuth 2.0 client secret for Google Workspace authentication. Used in conjunction with client ID for secure API access to Google services.',
39
+ registrationUrl: 'https://console.cloud.google.com/apis/credentials',
40
+ tags: [
41
+ 'authentication',
42
+ 'oauth',
43
+ 'google',
44
+ 'workspace',
45
+ 'client-secret',
46
+ 'security',
47
+ ],
48
+ icon: 'lock',
49
+ emoji: '🔒',
50
+ };
51
+ export const HF_TOKEN_SPEC = {
52
+ id: 'HF_TOKEN',
53
+ name: 'Hugging Face Token',
54
+ description: 'Access token for Hugging Face API. Required for Hugging Face MCP server authentication. Create a READ token from your settings.',
55
+ registrationUrl: 'https://huggingface.co/settings/tokens',
56
+ tags: ['authentication', 'api-key', 'huggingface', 'machine-learning'],
57
+ icon: 'key',
58
+ emoji: '🔑',
59
+ };
60
+ export const KAGGLE_TOKEN_SPEC = {
61
+ id: 'KAGGLE_TOKEN',
62
+ name: 'Kaggle API Token',
63
+ description: 'API token for accessing Kaggle datasets, competitions, notebooks, and models. Required for Kaggle MCP server authentication.',
64
+ registrationUrl: 'https://www.kaggle.com/settings/account',
65
+ tags: ['authentication', 'api-key', 'kaggle', 'data'],
66
+ icon: 'key',
67
+ emoji: '🔑',
68
+ };
69
+ export const SLACK_BOT_TOKEN_SPEC = {
70
+ id: 'SLACK_BOT_TOKEN',
71
+ name: 'Slack Bot Token',
72
+ description: 'OAuth token for Slack bot authentication. Required for Slack MCP server to send messages, manage channels, and interact with workspace members.',
73
+ registrationUrl: 'https://api.slack.com/apps',
74
+ tags: ['authentication', 'oauth', 'token', 'slack', 'messaging', 'bot'],
75
+ icon: 'key',
76
+ emoji: '🔑',
77
+ };
78
+ export const SLACK_CHANNEL_IDS_SPEC = {
79
+ id: 'SLACK_CHANNEL_IDS',
80
+ name: 'Slack Channel IDs',
81
+ description: 'Comma-separated list of Slack channel IDs that the bot is allowed to access. Restricts bot operations to specific channels for security and organization.',
82
+ tags: ['configuration', 'slack', 'channels', 'identifier'],
83
+ icon: 'hash',
84
+ emoji: undefined,
85
+ };
86
+ export const SLACK_TEAM_ID_SPEC = {
87
+ id: 'SLACK_TEAM_ID',
88
+ name: 'Slack Team ID',
89
+ description: 'Unique identifier for the Slack workspace (team). Required to specify which workspace the bot should connect to.',
90
+ registrationUrl: 'https://api.slack.com/apps',
91
+ tags: ['configuration', 'slack', 'workspace', 'identifier'],
92
+ icon: 'organization',
93
+ emoji: '🏢',
94
+ };
95
+ export const TAVILY_API_KEY_SPEC = {
96
+ id: 'TAVILY_API_KEY',
97
+ name: 'Tavily API Key',
98
+ description: 'API key for Tavily web search and research capabilities. Required for web crawling, content extraction, and search operations.',
99
+ registrationUrl: 'https://tavily.com/api-keys',
100
+ tags: ['authentication', 'api-key', 'search', 'web', 'research'],
101
+ icon: 'key',
102
+ emoji: '🔑',
103
+ };
104
+ // ============================================================================
105
+ // Environment Variable Catalog
106
+ // ============================================================================
107
+ export const ENVVAR_CATALOG = {
108
+ ALPHAVANTAGE_API_KEY: ALPHAVANTAGE_API_KEY_SPEC,
109
+ GITHUB_TOKEN: GITHUB_TOKEN_SPEC,
110
+ GOOGLE_OAUTH_CLIENT_ID: GOOGLE_OAUTH_CLIENT_ID_SPEC,
111
+ GOOGLE_OAUTH_CLIENT_SECRET: GOOGLE_OAUTH_CLIENT_SECRET_SPEC,
112
+ HF_TOKEN: HF_TOKEN_SPEC,
113
+ KAGGLE_TOKEN: KAGGLE_TOKEN_SPEC,
114
+ SLACK_BOT_TOKEN: SLACK_BOT_TOKEN_SPEC,
115
+ SLACK_CHANNEL_IDS: SLACK_CHANNEL_IDS_SPEC,
116
+ SLACK_TEAM_ID: SLACK_TEAM_ID_SPEC,
117
+ TAVILY_API_KEY: TAVILY_API_KEY_SPEC,
118
+ };
119
+ export function getEnvvarSpec(envvarId) {
120
+ const spec = ENVVAR_CATALOG[envvarId];
121
+ if (!spec) {
122
+ throw new Error(`Unknown environment variable: ${envvarId}`);
123
+ }
124
+ return spec;
125
+ }
@@ -0,0 +1,5 @@
1
+ export * from './envvars';
2
+ export * from './mcpServers';
3
+ export * from './agents';
4
+ export * from './skills';
5
+ export * from './models';
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export * from './envvars';
6
+ export * from './mcpServers';
7
+ export * from './agents';
8
+ export * from './skills';
9
+ export * from './models';
@@ -6,12 +6,13 @@
6
6
  * This file is AUTO-GENERATED from YAML specifications.
7
7
  * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.
8
8
  */
9
- import type { MCPServer } from '../types';
9
+ import type { MCPServer } from '../types/Types';
10
10
  export declare const ALPHAVANTAGE_MCP_SERVER: MCPServer;
11
11
  export declare const CHART_MCP_SERVER: MCPServer;
12
12
  export declare const FILESYSTEM_MCP_SERVER: MCPServer;
13
13
  export declare const GITHUB_MCP_SERVER: MCPServer;
14
14
  export declare const GOOGLE_WORKSPACE_MCP_SERVER: MCPServer;
15
+ export declare const HUGGINGFACE_MCP_SERVER: MCPServer;
15
16
  export declare const KAGGLE_MCP_SERVER: MCPServer;
16
17
  export declare const SLACK_MCP_SERVER: MCPServer;
17
18
  export declare const TAVILY_MCP_SERVER: MCPServer;