@datalayer/agent-runtimes 0.0.9 → 0.0.10

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 +2 -1
  2. package/lib/{examples/components → components}/AgentConfiguration.d.ts +27 -12
  3. package/lib/{examples/components → components}/AgentConfiguration.js +170 -22
  4. package/lib/{examples/components → components}/FooterMetrics.d.ts +1 -2
  5. package/lib/{examples/components → components}/Header.d.ts +1 -6
  6. package/lib/{examples/components → components}/Header.js +5 -39
  7. package/lib/{examples/components → components}/HeaderControls.d.ts +1 -2
  8. package/lib/{examples/components → components}/HeaderControls.js +1 -1
  9. package/lib/{examples/components → components}/LexicalEditor.d.ts +2 -3
  10. package/lib/{examples/components → components}/LexicalEditor.js +2 -2
  11. package/lib/components/MainContent.d.ts +34 -0
  12. package/lib/{examples/components → components}/MainContent.js +18 -9
  13. package/lib/components/McpServerManager.d.ts +30 -0
  14. package/lib/components/McpServerManager.js +331 -0
  15. package/lib/{examples/components → components}/MockFileBrowser.d.ts +1 -2
  16. package/lib/{examples/components → components}/SessionTabs.d.ts +2 -3
  17. package/lib/{examples/components → components}/TimeTravel.d.ts +1 -2
  18. package/lib/components/chat/components/AgentDetails.d.ts +3 -1
  19. package/lib/components/chat/components/AgentDetails.js +323 -31
  20. package/lib/components/chat/components/Chat.d.ts +37 -3
  21. package/lib/components/chat/components/Chat.js +29 -10
  22. package/lib/components/chat/components/ChatFloating.d.ts +27 -2
  23. package/lib/components/chat/components/ChatFloating.js +17 -10
  24. package/lib/components/chat/components/ChatPopupStandalone.js +1 -1
  25. package/lib/components/chat/components/ChatSidebar.d.ts +1 -1
  26. package/lib/components/chat/components/ChatStandalone.d.ts +1 -1
  27. package/lib/components/chat/components/ChatStandalone.js +1 -1
  28. package/lib/components/chat/components/ContextDistribution.d.ts +70 -6
  29. package/lib/components/chat/components/ContextDistribution.js +11 -4
  30. package/lib/components/chat/components/ContextInspector.d.ts +81 -0
  31. package/lib/components/chat/components/ContextInspector.js +261 -0
  32. package/lib/components/chat/components/ContextPanel.d.ts +112 -0
  33. package/lib/components/chat/components/ContextPanel.js +373 -0
  34. package/lib/components/chat/components/base/ChatBase.d.ts +74 -19
  35. package/lib/components/chat/components/base/ChatBase.js +296 -37
  36. package/lib/components/chat/components/index.d.ts +3 -1
  37. package/lib/components/chat/components/index.js +2 -0
  38. package/lib/components/chat/extensions/ExtensionRegistry.d.ts +1 -1
  39. package/lib/components/chat/extensions/index.d.ts +1 -0
  40. package/lib/components/chat/index.d.ts +3 -3
  41. package/lib/components/chat/protocols/AGUIAdapter.js +24 -4
  42. package/lib/components/chat/protocols/VercelAIAdapter.js +35 -1
  43. package/lib/components/chat/store/chatStore.d.ts +2 -3
  44. package/lib/components/chat/store/conversationStore.d.ts +83 -0
  45. package/lib/components/chat/store/conversationStore.js +174 -0
  46. package/lib/components/chat/store/index.d.ts +2 -1
  47. package/lib/components/chat/store/index.js +1 -0
  48. package/lib/components/chat/types/inference.d.ts +17 -0
  49. package/lib/components/chat/types/protocol.d.ts +10 -0
  50. package/lib/components/index.d.ts +23 -0
  51. package/lib/components/index.js +11 -0
  52. package/lib/config/agents.d.ts +33 -0
  53. package/lib/config/agents.js +424 -0
  54. package/lib/config/index.d.ts +4 -0
  55. package/lib/config/index.js +8 -0
  56. package/lib/config/mcpServers.d.ts +18 -0
  57. package/lib/config/mcpServers.js +129 -0
  58. package/lib/config/skills.d.ts +25 -0
  59. package/lib/config/skills.js +54 -0
  60. package/lib/{lib → config}/utils.d.ts +1 -1
  61. package/lib/{lib → config}/utils.js +2 -2
  62. package/lib/examples/AgentRuntimeLexical2Example.d.ts +1 -0
  63. package/lib/examples/AgentRuntimeLexical2Example.js +3 -2
  64. package/lib/examples/AgentRuntimeLexicalExample.d.ts +1 -0
  65. package/lib/examples/AgentRuntimeLexicalExample.js +5 -3
  66. package/lib/examples/AgentRuntimeLexicalSidebarExample.d.ts +1 -0
  67. package/lib/examples/AgentRuntimeLexicalSidebarExample.js +3 -3
  68. package/lib/examples/AgentRuntimeNotebookExample.js +1 -1
  69. package/lib/examples/AgentSpaceFormExample.d.ts +2 -2
  70. package/lib/examples/AgentSpaceFormExample.js +167 -29
  71. package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
  72. package/lib/examples/CopilotKitLexicalExample.js +3 -2
  73. package/lib/examples/index.d.ts +1 -0
  74. package/lib/examples/stores/notebooks/NotebookExample2.ipynb.json +43 -43
  75. package/lib/hooks/useAGUI.d.ts +1 -1
  76. package/lib/hooks/useAGUI.js +1 -1
  77. package/lib/identity/types.d.ts +1 -1
  78. package/lib/index.d.ts +2 -0
  79. package/lib/index.js +1 -0
  80. package/lib/runtime/index.d.ts +3 -0
  81. package/lib/runtime/runtimeStore.d.ts +3 -4
  82. package/lib/runtime/useAgentConnection.d.ts +2 -3
  83. package/lib/runtime/useAgentRuntime.d.ts +2 -3
  84. package/lib/stories/Cell.stories.js +1 -1
  85. package/lib/tools/adapters/agent-runtimes/notebookHooks.js +1 -0
  86. package/lib/tools/adapters/copilotkit/notebookHooks.js +1 -0
  87. package/lib/types.d.ts +150 -0
  88. package/package.json +4 -5
  89. package/scripts/apply-patches.sh +1 -1
  90. package/scripts/codegen/generate_agents.py +452 -0
  91. package/scripts/codegen/generate_mcp_servers.py +424 -0
  92. package/scripts/codegen/generate_skills.py +321 -0
  93. package/scripts/download-ai-elements.py +35 -20
  94. package/scripts/sync-jupyter.sh +6 -0
  95. package/lib/components/ui/accordion.d.ts +0 -7
  96. package/lib/components/ui/accordion.js +0 -22
  97. package/lib/components/ui/alert-dialog.d.ts +0 -14
  98. package/lib/components/ui/alert-dialog.js +0 -43
  99. package/lib/components/ui/alert.d.ts +0 -9
  100. package/lib/components/ui/alert.js +0 -24
  101. package/lib/components/ui/aspect-ratio.d.ts +0 -3
  102. package/lib/components/ui/aspect-ratio.js +0 -11
  103. package/lib/components/ui/avatar.d.ts +0 -6
  104. package/lib/components/ui/avatar.js +0 -18
  105. package/lib/components/ui/badge.d.ts +0 -9
  106. package/lib/components/ui/badge.js +0 -22
  107. package/lib/components/ui/breadcrumb.d.ts +0 -11
  108. package/lib/components/ui/breadcrumb.js +0 -27
  109. package/lib/components/ui/button-group.d.ts +0 -11
  110. package/lib/components/ui/button-group.js +0 -31
  111. package/lib/components/ui/button.d.ts +0 -13
  112. package/lib/components/ui/button.js +0 -39
  113. package/lib/components/ui/calendar.d.ts +0 -8
  114. package/lib/components/ui/calendar.js +0 -80
  115. package/lib/components/ui/card.d.ts +0 -9
  116. package/lib/components/ui/card.js +0 -24
  117. package/lib/components/ui/carousel.d.ts +0 -19
  118. package/lib/components/ui/carousel.js +0 -95
  119. package/lib/components/ui/chart.d.ts +0 -53
  120. package/lib/components/ui/chart.js +0 -136
  121. package/lib/components/ui/checkbox.d.ts +0 -4
  122. package/lib/components/ui/checkbox.js +0 -13
  123. package/lib/components/ui/collapsible.d.ts +0 -5
  124. package/lib/components/ui/collapsible.js +0 -17
  125. package/lib/components/ui/command.d.ts +0 -18
  126. package/lib/components/ui/command.js +0 -38
  127. package/lib/components/ui/context-menu.d.ts +0 -25
  128. package/lib/components/ui/context-menu.js +0 -55
  129. package/lib/components/ui/dialog.d.ts +0 -15
  130. package/lib/components/ui/dialog.js +0 -40
  131. package/lib/components/ui/drawer.d.ts +0 -13
  132. package/lib/components/ui/drawer.js +0 -39
  133. package/lib/components/ui/dropdown-menu.d.ts +0 -25
  134. package/lib/components/ui/dropdown-menu.js +0 -55
  135. package/lib/components/ui/empty.d.ts +0 -11
  136. package/lib/components/ui/empty.js +0 -37
  137. package/lib/components/ui/field.d.ts +0 -24
  138. package/lib/components/ui/field.js +0 -80
  139. package/lib/components/ui/form.d.ts +0 -24
  140. package/lib/components/ui/form.js +0 -63
  141. package/lib/components/ui/hover-card.d.ts +0 -6
  142. package/lib/components/ui/hover-card.js +0 -18
  143. package/lib/components/ui/input-group.d.ts +0 -19
  144. package/lib/components/ui/input-group.js +0 -69
  145. package/lib/components/ui/input-otp.d.ts +0 -11
  146. package/lib/components/ui/input-otp.js +0 -25
  147. package/lib/components/ui/input.d.ts +0 -3
  148. package/lib/components/ui/input.js +0 -6
  149. package/lib/components/ui/item.d.ts +0 -23
  150. package/lib/components/ui/item.js +0 -66
  151. package/lib/components/ui/kbd.d.ts +0 -3
  152. package/lib/components/ui/kbd.js +0 -13
  153. package/lib/components/ui/label.d.ts +0 -4
  154. package/lib/components/ui/label.js +0 -12
  155. package/lib/components/ui/menubar.d.ts +0 -26
  156. package/lib/components/ui/menubar.js +0 -58
  157. package/lib/components/ui/navigation-menu.d.ts +0 -14
  158. package/lib/components/ui/navigation-menu.js +0 -31
  159. package/lib/components/ui/pagination.d.ts +0 -13
  160. package/lib/components/ui/pagination.js +0 -29
  161. package/lib/components/ui/popover.d.ts +0 -7
  162. package/lib/components/ui/popover.js +0 -21
  163. package/lib/components/ui/progress.d.ts +0 -4
  164. package/lib/components/ui/progress.js +0 -12
  165. package/lib/components/ui/radio-group.d.ts +0 -5
  166. package/lib/components/ui/radio-group.js +0 -16
  167. package/lib/components/ui/resizable.d.ts +0 -8
  168. package/lib/components/ui/resizable.js +0 -19
  169. package/lib/components/ui/scroll-area.d.ts +0 -5
  170. package/lib/components/ui/scroll-area.js +0 -17
  171. package/lib/components/ui/select.d.ts +0 -15
  172. package/lib/components/ui/select.js +0 -42
  173. package/lib/components/ui/separator.d.ts +0 -4
  174. package/lib/components/ui/separator.js +0 -12
  175. package/lib/components/ui/sheet.d.ts +0 -13
  176. package/lib/components/ui/sheet.js +0 -44
  177. package/lib/components/ui/sidebar.d.ts +0 -69
  178. package/lib/components/ui/sidebar.js +0 -216
  179. package/lib/components/ui/skeleton.d.ts +0 -2
  180. package/lib/components/ui/skeleton.js +0 -10
  181. package/lib/components/ui/slider.d.ts +0 -4
  182. package/lib/components/ui/slider.js +0 -18
  183. package/lib/components/ui/sonner.d.ts +0 -3
  184. package/lib/components/ui/sonner.js +0 -25
  185. package/lib/components/ui/spinner.d.ts +0 -2
  186. package/lib/components/ui/spinner.js +0 -11
  187. package/lib/components/ui/switch.d.ts +0 -4
  188. package/lib/components/ui/switch.js +0 -12
  189. package/lib/components/ui/table.d.ts +0 -10
  190. package/lib/components/ui/table.js +0 -32
  191. package/lib/components/ui/tabs.d.ts +0 -7
  192. package/lib/components/ui/tabs.js +0 -21
  193. package/lib/components/ui/textarea.d.ts +0 -3
  194. package/lib/components/ui/textarea.js +0 -6
  195. package/lib/components/ui/toast.d.ts +0 -15
  196. package/lib/components/ui/toast.js +0 -38
  197. package/lib/components/ui/toaster.d.ts +0 -1
  198. package/lib/components/ui/toaster.js +0 -14
  199. package/lib/components/ui/toggle-group.d.ts +0 -9
  200. package/lib/components/ui/toggle-group.js +0 -26
  201. package/lib/components/ui/toggle.d.ts +0 -9
  202. package/lib/components/ui/toggle.js +0 -30
  203. package/lib/components/ui/tooltip.d.ts +0 -7
  204. package/lib/components/ui/tooltip.js +0 -21
  205. package/lib/components/vercel-ai-elements/artifact.d.ts +0 -23
  206. package/lib/components/vercel-ai-elements/artifact.js +0 -24
  207. package/lib/components/vercel-ai-elements/code-block.d.ts +0 -17
  208. package/lib/components/vercel-ai-elements/code-block.js +0 -94
  209. package/lib/components/vercel-ai-elements/conversation.d.ts +0 -15
  210. package/lib/components/vercel-ai-elements/conversation.js +0 -21
  211. package/lib/components/vercel-ai-elements/loader.d.ts +0 -5
  212. package/lib/components/vercel-ai-elements/loader.js +0 -8
  213. package/lib/components/vercel-ai-elements/message.d.ts +0 -46
  214. package/lib/components/vercel-ai-elements/message.js +0 -109
  215. package/lib/components/vercel-ai-elements/model-selector.d.ts +0 -35
  216. package/lib/components/vercel-ai-elements/model-selector.js +0 -22
  217. package/lib/components/vercel-ai-elements/prompt-input.d.ts +0 -195
  218. package/lib/components/vercel-ai-elements/prompt-input.js +0 -589
  219. package/lib/components/vercel-ai-elements/reasoning.d.ts +0 -26
  220. package/lib/components/vercel-ai-elements/reasoning.js +0 -80
  221. package/lib/components/vercel-ai-elements/shimmer.d.ts +0 -9
  222. package/lib/components/vercel-ai-elements/shimmer.js +0 -22
  223. package/lib/components/vercel-ai-elements/sources.d.ts +0 -12
  224. package/lib/components/vercel-ai-elements/sources.js +0 -13
  225. package/lib/components/vercel-ai-elements/suggestion.d.ts +0 -10
  226. package/lib/components/vercel-ai-elements/suggestion.js +0 -16
  227. package/lib/components/vercel-ai-elements/tool.d.ts +0 -23
  228. package/lib/components/vercel-ai-elements/tool.js +0 -52
  229. package/lib/examples/components/MainContent.d.ts +0 -19
  230. package/lib/examples/components/index.d.ts +0 -10
  231. package/lib/examples/components/index.js +0 -13
  232. package/lib/examples/vercel-ai-elements/VercelAiElementsShowcase.d.ts +0 -12
  233. package/lib/examples/vercel-ai-elements/VercelAiElementsShowcase.js +0 -69
  234. package/lib/examples/vercel-ai-elements/components/ArtifactShowcase.d.ts +0 -1
  235. package/lib/examples/vercel-ai-elements/components/ArtifactShowcase.js +0 -85
  236. package/lib/examples/vercel-ai-elements/components/CodeBlockShowcase.d.ts +0 -1
  237. package/lib/examples/vercel-ai-elements/components/CodeBlockShowcase.js +0 -62
  238. package/lib/examples/vercel-ai-elements/components/ConversationShowcase.d.ts +0 -1
  239. package/lib/examples/vercel-ai-elements/components/ConversationShowcase.js +0 -51
  240. package/lib/examples/vercel-ai-elements/components/LoaderShowcase.d.ts +0 -1
  241. package/lib/examples/vercel-ai-elements/components/LoaderShowcase.js +0 -9
  242. package/lib/examples/vercel-ai-elements/components/MessageShowcase.d.ts +0 -1
  243. package/lib/examples/vercel-ai-elements/components/MessageShowcase.js +0 -56
  244. package/lib/examples/vercel-ai-elements/components/ModelSelectorShowcase.d.ts +0 -1
  245. package/lib/examples/vercel-ai-elements/components/ModelSelectorShowcase.js +0 -50
  246. package/lib/examples/vercel-ai-elements/components/PromptInputShowcase.d.ts +0 -1
  247. package/lib/examples/vercel-ai-elements/components/PromptInputShowcase.js +0 -16
  248. package/lib/examples/vercel-ai-elements/components/ReasoningShowcase.d.ts +0 -1
  249. package/lib/examples/vercel-ai-elements/components/ReasoningShowcase.js +0 -72
  250. package/lib/examples/vercel-ai-elements/components/ShimmerShowcase.d.ts +0 -1
  251. package/lib/examples/vercel-ai-elements/components/ShimmerShowcase.js +0 -9
  252. package/lib/examples/vercel-ai-elements/components/SourcesShowcase.d.ts +0 -1
  253. package/lib/examples/vercel-ai-elements/components/SourcesShowcase.js +0 -43
  254. package/lib/examples/vercel-ai-elements/components/SuggestionShowcase.d.ts +0 -1
  255. package/lib/examples/vercel-ai-elements/components/SuggestionShowcase.js +0 -31
  256. package/lib/examples/vercel-ai-elements/components/ToolShowcase.d.ts +0 -1
  257. package/lib/examples/vercel-ai-elements/components/ToolShowcase.js +0 -54
  258. package/lib/examples/vercel-ai-elements/index.d.ts +0 -13
  259. package/lib/examples/vercel-ai-elements/index.js +0 -17
  260. package/lib/examples/vercel-ai-elements/main.d.ts +0 -1
  261. package/lib/examples/vercel-ai-elements/main.js +0 -9
  262. package/lib/examples/vercel-ai-elements/showcase.css +0 -128
  263. package/lib/hooks/useToast.d.ts +0 -44
  264. package/lib/hooks/useToast.js +0 -128
  265. package/patches/@datalayer+jupyter-lexical+1.0.8.patch +0 -11628
  266. package/patches/@datalayer+jupyter-react+2.0.2.patch +0 -5338
  267. package/style/showcase-vercel-ai.css +0 -137
  268. /package/lib/{examples/components → components}/FooterMetrics.js +0 -0
  269. /package/lib/{examples/components → components}/MockFileBrowser.js +0 -0
  270. /package/lib/{examples/components → components}/SessionTabs.js +0 -0
  271. /package/lib/{examples/components → components}/TimeTravel.js +0 -0
  272. /package/lib/{models → types}/AIAgent.d.ts +0 -0
  273. /package/lib/{models → types}/AIAgent.js +0 -0
  274. /package/lib/{models → types}/index.d.ts +0 -0
  275. /package/lib/{models → types}/index.js +0 -0
@@ -0,0 +1,424 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
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';
7
+ // ============================================================================
8
+ // MCP Server Lookup
9
+ // ============================================================================
10
+ const MCP_SERVER_MAP = {
11
+ alphavantage: ALPHAVANTAGE_MCP_SERVER,
12
+ chart: CHART_MCP_SERVER,
13
+ filesystem: FILESYSTEM_MCP_SERVER,
14
+ github: GITHUB_MCP_SERVER,
15
+ 'google-workspace': GOOGLE_WORKSPACE_MCP_SERVER,
16
+ kaggle: KAGGLE_MCP_SERVER,
17
+ slack: SLACK_MCP_SERVER,
18
+ tavily: TAVILY_MCP_SERVER,
19
+ };
20
+ /**
21
+ * Map skill IDs to SkillSpec objects, converting to AgentSkillSpec shape.
22
+ */
23
+ const SKILL_MAP = {
24
+ crawl: CRAWL_SKILL_SPEC,
25
+ github: GITHUB_SKILL_SPEC,
26
+ pdf: PDF_SKILL_SPEC,
27
+ };
28
+ function toAgentSkillSpec(skill) {
29
+ return {
30
+ id: skill.id,
31
+ name: skill.name,
32
+ description: skill.description,
33
+ version: '1.0.0',
34
+ tags: skill.tags,
35
+ enabled: skill.enabled,
36
+ requiredEnvVars: skill.requiredEnvVars,
37
+ };
38
+ }
39
+ // ============================================================================
40
+ // Agent Specs
41
+ // ============================================================================
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
+ };
81
+ export const CRAWLER_AGENT_SPEC = {
82
+ id: 'crawler',
83
+ name: 'Crawler Agent',
84
+ description: `Web crawling and research agent that searches the web and GitHub repositories for information.`,
85
+ tags: ['web', 'search', 'research', 'crawler', 'github'],
86
+ enabled: false,
87
+ mcpServers: [MCP_SERVER_MAP['tavily']],
88
+ skills: [toAgentSkillSpec(SKILL_MAP['github'])],
89
+ environmentName: 'ai-agents-env',
90
+ icon: 'globe',
91
+ color: '#10B981',
92
+ suggestions: [
93
+ 'Search the web for recent news about AI agents',
94
+ 'Find trending open-source Python projects on GitHub',
95
+ 'Research best practices for building RAG applications',
96
+ 'Compare popular JavaScript frameworks in 2024',
97
+ ],
98
+ 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
+ `,
100
+ systemPromptCodemode: `## IMPORTANT: Be Honest About Your Capabilities NEVER claim to have tools or capabilities you haven't verified.
101
+ ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
102
+ Use this to see what MCP servers you can access.
103
+
104
+ 2. **search_tools** - Progressive tool discovery by natural language query
105
+ Use this to find relevant tools before executing tasks.
106
+
107
+ 3. **get_tool_details** - Get full tool schema and documentation
108
+ Use this to understand tool parameters before calling them.
109
+
110
+ 4. **execute_code** - Run Python code that composes multiple tools
111
+ Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox.
112
+ Variables, functions, and state PERSIST between execute_code calls.
113
+ Import tools using: \`from generated.servers.<server_name> import <function_name>\`
114
+ NEVER use \`import *\` - always use explicit named imports.
115
+
116
+ ## 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
117
+ ## 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.
118
+ `,
119
+ };
120
+ export const DATA_ACQUISITION_AGENT_SPEC = {
121
+ id: 'data-acquisition',
122
+ name: 'Data Acquisition Agent',
123
+ description: `Acquires and manages data from various sources including Kaggle datasets and local filesystem operations.`,
124
+ tags: ['data', 'acquisition', 'kaggle', 'filesystem'],
125
+ enabled: true,
126
+ mcpServers: [
127
+ MCP_SERVER_MAP['kaggle'],
128
+ MCP_SERVER_MAP['filesystem'],
129
+ MCP_SERVER_MAP['tavily'],
130
+ ],
131
+ skills: [toAgentSkillSpec(SKILL_MAP['github'])],
132
+ environmentName: 'ai-agents-env',
133
+ icon: 'database',
134
+ color: '#3B82F6',
135
+ suggestions: [
136
+ 'Find popular machine learning datasets on Kaggle',
137
+ 'Download and explore a dataset for sentiment analysis',
138
+ 'List available files in my workspace',
139
+ 'Search Kaggle for time series forecasting competitions',
140
+ ],
141
+ 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
+ `,
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.
183
+ ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
184
+ Use this to see what MCP servers you can access.
185
+
186
+ 2. **search_tools** - Progressive tool discovery by natural language query
187
+ Use this to find relevant tools before executing tasks.
188
+
189
+ 3. **get_tool_details** - Get full tool schema and documentation
190
+ Use this to understand tool parameters before calling them.
191
+
192
+ 4. **execute_code** - Run Python code that composes multiple tools
193
+ Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox.
194
+ Variables, functions, and state PERSIST between execute_code calls.
195
+ Import tools using: \`from generated.servers.<server_name> import <function_name>\`
196
+ NEVER use \`import *\` - always use explicit named imports.
197
+
198
+ ## 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
199
+ ## 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.
200
+ `,
201
+ };
202
+ export const FINANCIAL_AGENT_SPEC = {
203
+ id: 'financial',
204
+ name: 'Financial Visualization Agent',
205
+ description: `Analyzes financial market data and creates visualizations and charts.`,
206
+ tags: ['finance', 'stocks', 'visualization', 'charts'],
207
+ enabled: false,
208
+ mcpServers: [MCP_SERVER_MAP['alphavantage']],
209
+ skills: [],
210
+ environmentName: 'ai-agents-env',
211
+ icon: 'trending-up',
212
+ color: '#F59E0B',
213
+ suggestions: [
214
+ 'Show me the stock price history for AAPL',
215
+ 'Create a chart comparing MSFT and GOOGL over the last year',
216
+ 'Analyze the trading volume trends for Tesla',
217
+ 'Get the latest market news for tech stocks',
218
+ ],
219
+ 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
+ `,
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.
261
+ ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
262
+ Use this to see what MCP servers you can access.
263
+
264
+ 2. **search_tools** - Progressive tool discovery by natural language query
265
+ Use this to find relevant tools before executing tasks.
266
+
267
+ 3. **get_tool_details** - Get full tool schema and documentation
268
+ Use this to understand tool parameters before calling them.
269
+
270
+ 4. **execute_code** - Run Python code that composes multiple tools
271
+ Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox.
272
+ Variables, functions, and state PERSIST between execute_code calls.
273
+ Import tools using: \`from generated.servers.<server_name> import <function_name>\`
274
+ NEVER use \`import *\` - always use explicit named imports.
275
+
276
+ ## 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
277
+ ## 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.
278
+ `,
279
+ };
280
+ export const GITHUB_AGENT_SPEC = {
281
+ id: 'github-agent',
282
+ name: 'GitHub Agent',
283
+ description: `Manages GitHub repositories, issues, and pull requests with email notification capabilities.`,
284
+ tags: ['github', 'git', 'code', 'email'],
285
+ enabled: false,
286
+ mcpServers: [MCP_SERVER_MAP['google-workspace']],
287
+ skills: [toAgentSkillSpec(SKILL_MAP['github'])],
288
+ environmentName: 'ai-agents-env',
289
+ icon: 'git-branch',
290
+ color: '#6366F1',
291
+ suggestions: [
292
+ 'List my open pull requests across all repositories',
293
+ 'Create an issue for a bug I found in datalayer/ui',
294
+ 'Show recent commits on the main branch',
295
+ 'Search for repositories related to Jupyter notebooks',
296
+ ],
297
+ 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
+ `,
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.
339
+ ## Core Codemode Tools Use these 4 tools to accomplish any task: 1. **list_servers** - List available MCP servers
340
+ Use this to see what MCP servers you can access.
341
+
342
+ 2. **search_tools** - Progressive tool discovery by natural language query
343
+ Use this to find relevant tools before executing tasks.
344
+
345
+ 3. **get_tool_details** - Get full tool schema and documentation
346
+ Use this to understand tool parameters before calling them.
347
+
348
+ 4. **execute_code** - Run Python code that composes multiple tools
349
+ Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox.
350
+ Variables, functions, and state PERSIST between execute_code calls.
351
+ Import tools using: \`from generated.servers.<server_name> import <function_name>\`
352
+ NEVER use \`import *\` - always use explicit named imports.
353
+
354
+ ## 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
355
+ ## 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.
356
+ `,
357
+ };
358
+ export const SIMPLE_AGENT_SPEC = {
359
+ id: 'simple',
360
+ name: 'A Simple Agent',
361
+ description: `A simple conversational agent. No tools, no MCP servers, no skills — just a helpful AI assistant you can chat with.`,
362
+ tags: ['simple', 'chat', 'assistant'],
363
+ enabled: true,
364
+ mcpServers: [],
365
+ skills: [],
366
+ environmentName: 'ai-agents-env',
367
+ icon: 'share-2',
368
+ color: '#6366F1',
369
+ suggestions: [
370
+ 'Tell me a joke',
371
+ 'Explain quantum computing in simple terms',
372
+ 'Help me brainstorm ideas for a weekend project',
373
+ 'Summarize the key points of a topic I describe',
374
+ ],
375
+ 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
+ `,
377
+ systemPromptCodemode: undefined,
378
+ };
379
+ // ============================================================================
380
+ // Agent Specs Registry
381
+ // ============================================================================
382
+ 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,
392
+ };
393
+ /**
394
+ * Get an agent specification by ID.
395
+ */
396
+ export function getAgentSpecs(agentId) {
397
+ return AGENT_SPECS[agentId];
398
+ }
399
+ /**
400
+ * List all available agent specifications.
401
+ */
402
+ export function listAgentSpecs() {
403
+ return Object.values(AGENT_SPECS);
404
+ }
405
+ /**
406
+ * Collect all required environment variables for an agent spec.
407
+ *
408
+ * Iterates over the spec's MCP servers and skills and returns the
409
+ * deduplicated union of their `requiredEnvVars` arrays.
410
+ */
411
+ export function getAgentSpecRequiredEnvVars(spec) {
412
+ const vars = new Set();
413
+ for (const server of spec.mcpServers) {
414
+ for (const v of server.requiredEnvVars ?? []) {
415
+ vars.add(v);
416
+ }
417
+ }
418
+ for (const skill of spec.skills) {
419
+ for (const v of skill.requiredEnvVars ?? []) {
420
+ vars.add(v);
421
+ }
422
+ }
423
+ return Array.from(vars);
424
+ }
@@ -0,0 +1,4 @@
1
+ export * from './mcpServers';
2
+ export * from './agents';
3
+ export * from './skills';
4
+ export * from './utils';
@@ -0,0 +1,8 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export * from './mcpServers';
6
+ export * from './agents';
7
+ export * from './skills';
8
+ export * from './utils';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * MCP Server Catalog
3
+ *
4
+ * Predefined MCP server configurations.
5
+ *
6
+ * This file is AUTO-GENERATED from YAML specifications.
7
+ * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.
8
+ */
9
+ import type { MCPServer } from '../types';
10
+ export declare const ALPHAVANTAGE_MCP_SERVER: MCPServer;
11
+ export declare const CHART_MCP_SERVER: MCPServer;
12
+ export declare const FILESYSTEM_MCP_SERVER: MCPServer;
13
+ export declare const GITHUB_MCP_SERVER: MCPServer;
14
+ export declare const GOOGLE_WORKSPACE_MCP_SERVER: MCPServer;
15
+ export declare const KAGGLE_MCP_SERVER: MCPServer;
16
+ export declare const SLACK_MCP_SERVER: MCPServer;
17
+ export declare const TAVILY_MCP_SERVER: MCPServer;
18
+ export declare const MCP_SERVER_LIBRARY: Record<string, MCPServer>;
@@ -0,0 +1,129 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ // ============================================================================
6
+ // MCP Server Definitions
7
+ // ============================================================================
8
+ export const ALPHAVANTAGE_MCP_SERVER = {
9
+ id: 'alphavantage',
10
+ name: 'Alpha Vantage',
11
+ url: '',
12
+ command: 'uvx',
13
+ args: ['av-mcp==0.2.1', '${ALPHAVANTAGE_API_KEY}'],
14
+ transport: 'stdio',
15
+ enabled: true,
16
+ isAvailable: false,
17
+ tools: [],
18
+ requiredEnvVars: ['ALPHAVANTAGE_API_KEY'],
19
+ };
20
+ export const CHART_MCP_SERVER = {
21
+ id: 'chart',
22
+ name: 'Chart Generator',
23
+ url: '',
24
+ command: 'npx',
25
+ args: ['-y', '@antv/mcp-server-chart'],
26
+ transport: 'stdio',
27
+ enabled: true,
28
+ isAvailable: false,
29
+ tools: [],
30
+ requiredEnvVars: [],
31
+ };
32
+ export const FILESYSTEM_MCP_SERVER = {
33
+ id: 'filesystem',
34
+ name: 'Filesystem',
35
+ url: '',
36
+ command: 'npx',
37
+ args: ['-y', '@modelcontextprotocol/server-filesystem', '$TMPDIR'],
38
+ transport: 'stdio',
39
+ enabled: true,
40
+ isAvailable: false,
41
+ tools: [],
42
+ requiredEnvVars: [],
43
+ };
44
+ export const GITHUB_MCP_SERVER = {
45
+ id: 'github',
46
+ name: 'GitHub',
47
+ url: '',
48
+ command: 'docker',
49
+ args: [
50
+ 'run',
51
+ '-i',
52
+ '--rm',
53
+ '-e',
54
+ 'GITHUB_PERSONAL_ACCESS_TOKEN',
55
+ 'ghcr.io/github/github-mcp-server',
56
+ ],
57
+ transport: 'stdio',
58
+ enabled: true,
59
+ isAvailable: false,
60
+ tools: [],
61
+ requiredEnvVars: ['GITHUB_PERSONAL_ACCESS_TOKEN'],
62
+ };
63
+ export const GOOGLE_WORKSPACE_MCP_SERVER = {
64
+ id: 'google-workspace',
65
+ name: 'Google Workspace',
66
+ url: '',
67
+ command: 'uvx',
68
+ args: ['workspace-mcp'],
69
+ transport: 'stdio',
70
+ enabled: true,
71
+ isAvailable: false,
72
+ tools: [],
73
+ requiredEnvVars: ['GOOGLE_OAUTH_CLIENT_ID', 'GOOGLE_OAUTH_CLIENT_SECRET'],
74
+ };
75
+ export const KAGGLE_MCP_SERVER = {
76
+ id: 'kaggle',
77
+ name: 'Kaggle',
78
+ url: '',
79
+ command: 'npx',
80
+ args: [
81
+ '-y',
82
+ 'mcp-remote',
83
+ 'https://www.kaggle.com/mcp',
84
+ '--header',
85
+ 'Authorization: Bearer ${KAGGLE_TOKEN}',
86
+ ],
87
+ transport: 'stdio',
88
+ enabled: true,
89
+ isAvailable: false,
90
+ tools: [],
91
+ requiredEnvVars: ['KAGGLE_TOKEN'],
92
+ };
93
+ export const SLACK_MCP_SERVER = {
94
+ id: 'slack',
95
+ name: 'Slack',
96
+ url: '',
97
+ command: 'npx',
98
+ args: ['-y', '@datalayer/slack-mcp-server'],
99
+ transport: 'stdio',
100
+ enabled: true,
101
+ isAvailable: false,
102
+ tools: [],
103
+ requiredEnvVars: ['SLACK_BOT_TOKEN', 'SLACK_TEAM_ID', 'SLACK_CHANNEL_IDS'],
104
+ };
105
+ export const TAVILY_MCP_SERVER = {
106
+ id: 'tavily',
107
+ name: 'Tavily Search',
108
+ url: '',
109
+ command: 'npx',
110
+ args: ['-y', 'tavily-mcp'],
111
+ transport: 'stdio',
112
+ enabled: true,
113
+ isAvailable: false,
114
+ tools: [],
115
+ requiredEnvVars: ['TAVILY_API_KEY'],
116
+ };
117
+ // ============================================================================
118
+ // MCP Server Library
119
+ // ============================================================================
120
+ export const MCP_SERVER_LIBRARY = {
121
+ alphavantage: ALPHAVANTAGE_MCP_SERVER,
122
+ chart: CHART_MCP_SERVER,
123
+ filesystem: FILESYSTEM_MCP_SERVER,
124
+ github: GITHUB_MCP_SERVER,
125
+ 'google-workspace': GOOGLE_WORKSPACE_MCP_SERVER,
126
+ kaggle: KAGGLE_MCP_SERVER,
127
+ slack: SLACK_MCP_SERVER,
128
+ tavily: TAVILY_MCP_SERVER,
129
+ };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Skill Catalog
3
+ *
4
+ * Predefined skill configurations.
5
+ *
6
+ * This file is AUTO-GENERATED from YAML specifications.
7
+ * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.
8
+ */
9
+ export interface SkillSpec {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ module: string;
14
+ requiredEnvVars: string[];
15
+ optionalEnvVars: string[];
16
+ dependencies: string[];
17
+ tags: string[];
18
+ enabled: boolean;
19
+ }
20
+ export declare const CRAWL_SKILL_SPEC: SkillSpec;
21
+ export declare const GITHUB_SKILL_SPEC: SkillSpec;
22
+ export declare const PDF_SKILL_SPEC: SkillSpec;
23
+ export declare const SKILL_CATALOG: Record<string, SkillSpec>;
24
+ export declare function getSkillSpecs(): SkillSpec[];
25
+ export declare function getSkillSpec(skillId: string): SkillSpec | undefined;
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ // ============================================================================
6
+ // Skill Definitions
7
+ // ============================================================================
8
+ export const CRAWL_SKILL_SPEC = {
9
+ id: 'crawl',
10
+ name: 'Web Crawl Skill',
11
+ description: 'Web crawling and content extraction capabilities',
12
+ module: 'agent_skills.crawl',
13
+ requiredEnvVars: ['TAVILY_API_KEY'],
14
+ optionalEnvVars: [],
15
+ dependencies: ['requests>=2.31.0', 'beautifulsoup4>=4.12.0'],
16
+ tags: ['web', 'crawl', 'scraping'],
17
+ enabled: true,
18
+ };
19
+ export const GITHUB_SKILL_SPEC = {
20
+ id: 'github',
21
+ name: 'GitHub Skill',
22
+ description: 'GitHub repository management and code operations',
23
+ module: 'agent_skills.github',
24
+ requiredEnvVars: ['GITHUB_TOKEN'],
25
+ optionalEnvVars: [],
26
+ dependencies: ['PyGithub>=2.1.0'],
27
+ tags: ['github', 'git', 'code'],
28
+ enabled: true,
29
+ };
30
+ export const PDF_SKILL_SPEC = {
31
+ id: 'pdf',
32
+ name: 'PDF Processing Skill',
33
+ description: 'PDF document reading, parsing, and extraction',
34
+ module: 'agent_skills.pdf',
35
+ requiredEnvVars: [],
36
+ optionalEnvVars: [],
37
+ dependencies: ['PyPDF2>=3.0.0', 'pdfplumber>=0.10.0'],
38
+ tags: ['pdf', 'documents', 'extraction'],
39
+ enabled: true,
40
+ };
41
+ // ============================================================================
42
+ // Skill Catalog
43
+ // ============================================================================
44
+ export const SKILL_CATALOG = {
45
+ crawl: CRAWL_SKILL_SPEC,
46
+ github: GITHUB_SKILL_SPEC,
47
+ pdf: PDF_SKILL_SPEC,
48
+ };
49
+ export function getSkillSpecs() {
50
+ return Object.values(SKILL_CATALOG);
51
+ }
52
+ export function getSkillSpec(skillId) {
53
+ return SKILL_CATALOG[skillId];
54
+ }
@@ -1,2 +1,2 @@
1
- import { type ClassValue } from "clsx";
1
+ import { type ClassValue } from 'clsx';
2
2
  export declare function cn(...inputs: ClassValue[]): string;