@datalayer/agent-runtimes 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/README.md +34 -0
  2. package/lib/App.js +1 -1
  3. package/lib/agents/AgentDetails.d.ts +22 -1
  4. package/lib/agents/AgentDetails.js +34 -47
  5. package/lib/api/index.d.ts +0 -1
  6. package/lib/api/index.js +4 -2
  7. package/lib/chat/Chat.d.ts +5 -106
  8. package/lib/chat/Chat.js +4 -4
  9. package/lib/chat/ChatFloating.d.ts +7 -140
  10. package/lib/chat/ChatFloating.js +2 -2
  11. package/lib/chat/ChatPopupStandalone.d.ts +8 -47
  12. package/lib/chat/ChatPopupStandalone.js +3 -3
  13. package/lib/chat/ChatSidebar.d.ts +4 -69
  14. package/lib/chat/ChatSidebar.js +2 -2
  15. package/lib/chat/ChatStandalone.d.ts +4 -54
  16. package/lib/chat/ChatStandalone.js +3 -3
  17. package/lib/chat/base/ChatBase.js +1083 -157
  18. package/lib/chat/header/ChatHeaderBase.d.ts +11 -6
  19. package/lib/chat/header/ChatHeaderBase.js +18 -16
  20. package/lib/chat/indicators/McpStatusIndicator.d.ts +7 -4
  21. package/lib/chat/indicators/McpStatusIndicator.js +7 -32
  22. package/lib/chat/indicators/SandboxStatusIndicator.d.ts +4 -1
  23. package/lib/chat/indicators/SandboxStatusIndicator.js +9 -9
  24. package/lib/chat/indicators/SkillsStatusIndicator.d.ts +7 -0
  25. package/lib/chat/indicators/SkillsStatusIndicator.js +88 -0
  26. package/lib/chat/indicators/index.d.ts +1 -0
  27. package/lib/chat/indicators/index.js +1 -0
  28. package/lib/chat/messages/ChatMessageList.d.ts +1 -1
  29. package/lib/chat/messages/ChatMessageList.js +108 -113
  30. package/lib/chat/prompt/InputFooter.d.ts +19 -6
  31. package/lib/chat/prompt/InputFooter.js +71 -18
  32. package/lib/chat/prompt/InputPrompt.d.ts +3 -1
  33. package/lib/chat/prompt/InputPrompt.js +4 -4
  34. package/lib/chat/prompt/InputPromptFooter.js +1 -1
  35. package/lib/chat/prompt/InputPromptLexical.d.ts +3 -1
  36. package/lib/chat/prompt/InputPromptLexical.js +12 -5
  37. package/lib/chat/prompt/InputPromptText.d.ts +3 -1
  38. package/lib/chat/prompt/InputPromptText.js +2 -2
  39. package/lib/chat/tools/ToolApprovalBanner.js +1 -1
  40. package/lib/chat/tools/ToolCallDisplay.d.ts +3 -1
  41. package/lib/chat/tools/ToolCallDisplay.js +2 -2
  42. package/lib/chat/usage/TokenUsageBar.js +20 -2
  43. package/lib/client/AgentRuntimesClientContext.d.ts +53 -0
  44. package/lib/client/AgentRuntimesClientContext.js +55 -0
  45. package/lib/client/AgentsMixin.d.ts +0 -18
  46. package/lib/client/AgentsMixin.js +6 -30
  47. package/lib/client/IAgentRuntimesClient.d.ts +215 -0
  48. package/lib/client/IAgentRuntimesClient.js +5 -0
  49. package/lib/client/SdkAgentRuntimesClient.d.ts +151 -0
  50. package/lib/client/SdkAgentRuntimesClient.js +134 -0
  51. package/lib/client/index.d.ts +4 -1
  52. package/lib/client/index.js +3 -1
  53. package/lib/components/NotificationEventCard.js +5 -1
  54. package/lib/config/AgentConfiguration.js +3 -3
  55. package/lib/context/ContextDistribution.d.ts +3 -1
  56. package/lib/context/ContextDistribution.js +8 -27
  57. package/lib/context/ContextInspector.d.ts +3 -1
  58. package/lib/context/ContextInspector.js +19 -67
  59. package/lib/context/ContextPanel.d.ts +3 -1
  60. package/lib/context/ContextPanel.js +104 -64
  61. package/lib/context/ContextUsage.d.ts +3 -1
  62. package/lib/context/ContextUsage.js +3 -3
  63. package/lib/context/CostTracker.d.ts +9 -3
  64. package/lib/context/CostTracker.js +26 -47
  65. package/lib/context/CostUsageChart.d.ts +12 -0
  66. package/lib/context/CostUsageChart.js +378 -0
  67. package/lib/context/GraphFlowChart.d.ts +16 -0
  68. package/lib/context/GraphFlowChart.js +182 -0
  69. package/lib/context/TokenUsageChart.d.ts +8 -1
  70. package/lib/context/TokenUsageChart.js +349 -211
  71. package/lib/context/TurnGraphChart.d.ts +39 -0
  72. package/lib/context/TurnGraphChart.js +538 -0
  73. package/lib/context/otelWsPool.d.ts +20 -0
  74. package/lib/context/otelWsPool.js +69 -0
  75. package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -17
  76. package/lib/examples/A2UiComponentGalleryExample.js +315 -522
  77. package/lib/examples/A2UiContactCardExample.d.ts +0 -18
  78. package/lib/examples/A2UiContactCardExample.js +154 -411
  79. package/lib/examples/A2UiRestaurantExample.d.ts +0 -30
  80. package/lib/examples/A2UiRestaurantExample.js +114 -212
  81. package/lib/examples/A2UiViewerExample.d.ts +0 -18
  82. package/lib/examples/A2UiViewerExample.js +283 -532
  83. package/lib/examples/AgUiBackendToolRenderingExample.js +1 -1
  84. package/lib/examples/AgUiHaikuGenUiExample.d.ts +1 -1
  85. package/lib/examples/AgUiHaikuGenUiExample.js +1 -1
  86. package/lib/examples/AgentCheckpointsExample.js +13 -27
  87. package/lib/examples/AgentCodemodeExample.d.ts +4 -6
  88. package/lib/examples/AgentCodemodeExample.js +591 -169
  89. package/lib/examples/AgentEvalsExample.js +12 -16
  90. package/lib/examples/AgentGuardrailsExample.js +370 -64
  91. package/lib/examples/AgentHooksExample.d.ts +3 -0
  92. package/lib/examples/AgentHooksExample.js +104 -0
  93. package/lib/examples/AgentMCPExample.d.ts +3 -0
  94. package/lib/examples/AgentMCPExample.js +480 -0
  95. package/lib/examples/AgentMemoryExample.js +13 -17
  96. package/lib/examples/AgentMonitoringExample.js +260 -199
  97. package/lib/examples/AgentNotificationsExample.js +49 -17
  98. package/lib/examples/AgentOtelExample.js +2 -3
  99. package/lib/examples/AgentOutputsExample.d.ts +11 -6
  100. package/lib/examples/AgentOutputsExample.js +382 -81
  101. package/lib/examples/AgentParametersExample.d.ts +3 -0
  102. package/lib/examples/AgentParametersExample.js +246 -0
  103. package/lib/examples/AgentSandboxExample.d.ts +2 -2
  104. package/lib/examples/AgentSandboxExample.js +68 -40
  105. package/lib/examples/AgentSkillsExample.js +91 -99
  106. package/lib/examples/{AgentspecExample.js → AgentSpecsExample.js} +10 -21
  107. package/lib/examples/AgentSubagentsExample.d.ts +14 -0
  108. package/lib/examples/AgentSubagentsExample.js +228 -0
  109. package/lib/examples/AgentToolApprovalsExample.js +29 -557
  110. package/lib/examples/AgentTriggersExample.js +819 -565
  111. package/lib/examples/ChatCustomExample.js +11 -24
  112. package/lib/examples/ChatExample.js +7 -24
  113. package/lib/examples/CopilotKitLexicalExample.js +2 -1
  114. package/lib/examples/CopilotKitNotebookExample.js +2 -1
  115. package/lib/examples/HomeExample.d.ts +15 -0
  116. package/lib/examples/HomeExample.js +77 -0
  117. package/lib/examples/Lexical2Example.js +4 -2
  118. package/lib/examples/{LexicalExample.d.ts → LexicalAgentExample.d.ts} +4 -4
  119. package/lib/examples/{LexicalExample.js → LexicalAgentExample.js} +65 -16
  120. package/lib/examples/{LexicalSidebarExample.d.ts → LexicalAgentSidebarExample.d.ts} +5 -5
  121. package/lib/examples/LexicalAgentSidebarExample.js +261 -0
  122. package/lib/examples/NotebookAgentExample.d.ts +9 -0
  123. package/lib/examples/NotebookAgentExample.js +192 -0
  124. package/lib/examples/{NotebookSidebarExample.d.ts → NotebookAgentSidebarExample.d.ts} +2 -2
  125. package/lib/examples/NotebookAgentSidebarExample.js +221 -0
  126. package/lib/examples/{DatalayerNotebookExample.d.ts → NotebookCollaborationExample.d.ts} +4 -4
  127. package/lib/examples/{DatalayerNotebookExample.js → NotebookCollaborationExample.js} +3 -3
  128. package/lib/examples/NotebookExample.d.ts +4 -7
  129. package/lib/examples/NotebookExample.js +14 -146
  130. package/lib/examples/components/AuthRequiredView.d.ts +6 -0
  131. package/lib/examples/components/AuthRequiredView.js +33 -0
  132. package/lib/examples/components/ExampleWrapper.d.ts +7 -0
  133. package/lib/examples/components/ExampleWrapper.js +25 -6
  134. package/lib/examples/{ag-ui → components}/haiku/HaikuDisplay.js +1 -1
  135. package/lib/examples/{ag-ui → components}/haiku/InlineHaikuCard.js +1 -1
  136. package/lib/examples/{ag-ui → components}/haiku/index.d.ts +1 -1
  137. package/lib/examples/{ag-ui → components}/haiku/index.js +1 -1
  138. package/lib/examples/components/index.d.ts +3 -0
  139. package/lib/examples/components/index.js +4 -0
  140. package/lib/examples/{ag-ui → components}/weather/index.d.ts +1 -1
  141. package/lib/examples/{ag-ui → components}/weather/index.js +1 -1
  142. package/lib/examples/example-selector.d.ts +17 -4
  143. package/lib/examples/example-selector.js +107 -41
  144. package/lib/examples/index.d.ts +9 -6
  145. package/lib/examples/index.js +9 -6
  146. package/lib/examples/main.js +217 -27
  147. package/lib/examples/utils/a2ui.d.ts +18 -0
  148. package/lib/examples/utils/a2ui.js +69 -0
  149. package/lib/examples/utils/a2uiMarkdownProvider.d.ts +7 -0
  150. package/lib/examples/utils/a2uiMarkdownProvider.js +9 -0
  151. package/lib/examples/utils/agentId.d.ts +18 -0
  152. package/lib/examples/utils/agentId.js +54 -0
  153. package/lib/examples/utils/agents/earthquake-detector.json +11 -11
  154. package/lib/examples/utils/agents/sales-forecaster.json +11 -11
  155. package/lib/examples/utils/agents/social-post-generator.json +11 -11
  156. package/lib/examples/utils/agents/stock-market.json +11 -11
  157. package/lib/examples/utils/examplesStore.js +82 -27
  158. package/lib/hooks/index.d.ts +8 -8
  159. package/lib/hooks/index.js +7 -7
  160. package/lib/hooks/useA2A.d.ts +2 -3
  161. package/lib/hooks/useAIAgentsWebSocket.d.ts +43 -4
  162. package/lib/hooks/useAIAgentsWebSocket.js +118 -12
  163. package/lib/hooks/useAcp.d.ts +1 -2
  164. package/lib/hooks/useAgUi.d.ts +1 -1
  165. package/lib/hooks/{useAgents.d.ts → useAgentRuntimes.d.ts} +39 -2
  166. package/lib/hooks/{useAgents.js → useAgentRuntimes.js} +125 -15
  167. package/lib/hooks/useAgentsCatalog.js +1 -1
  168. package/lib/hooks/useAgentsService.d.ts +2 -2
  169. package/lib/hooks/useAgentsService.js +7 -7
  170. package/lib/hooks/useCheckpoints.js +1 -1
  171. package/lib/hooks/useConfig.d.ts +4 -1
  172. package/lib/hooks/useConfig.js +10 -3
  173. package/lib/hooks/useContextSnapshot.d.ts +9 -4
  174. package/lib/hooks/useContextSnapshot.js +9 -37
  175. package/lib/hooks/useMonitoring.js +3 -0
  176. package/lib/hooks/useSandbox.d.ts +20 -8
  177. package/lib/hooks/useSandbox.js +105 -40
  178. package/lib/hooks/useSkills.d.ts +23 -5
  179. package/lib/hooks/useSkills.js +94 -39
  180. package/lib/hooks/useToolApprovals.d.ts +60 -36
  181. package/lib/hooks/useToolApprovals.js +318 -69
  182. package/lib/hooks/useVercelAI.d.ts +1 -1
  183. package/lib/index.d.ts +2 -1
  184. package/lib/index.js +1 -0
  185. package/lib/inference/index.d.ts +0 -1
  186. package/lib/middleware/index.d.ts +0 -1
  187. package/lib/protocols/AGUIAdapter.js +6 -0
  188. package/lib/protocols/VercelAIAdapter.d.ts +7 -0
  189. package/lib/protocols/VercelAIAdapter.js +59 -7
  190. package/lib/specs/agents/agents.d.ts +10 -0
  191. package/lib/specs/agents/agents.js +2139 -262
  192. package/lib/specs/agents/index.js +3 -1
  193. package/lib/specs/envvars.d.ts +1 -0
  194. package/lib/specs/envvars.js +38 -20
  195. package/lib/specs/evals.js +6 -6
  196. package/lib/specs/events.d.ts +3 -10
  197. package/lib/specs/events.js +127 -84
  198. package/lib/specs/frontendTools.js +2 -2
  199. package/lib/specs/guardrails.d.ts +0 -7
  200. package/lib/specs/guardrails.js +240 -159
  201. package/lib/specs/index.d.ts +1 -0
  202. package/lib/specs/index.js +1 -0
  203. package/lib/specs/mcpServers.js +35 -6
  204. package/lib/specs/memory.d.ts +0 -2
  205. package/lib/specs/memory.js +4 -17
  206. package/lib/specs/models.js +25 -5
  207. package/lib/specs/notifications.js +102 -18
  208. package/lib/specs/outputs.js +15 -9
  209. package/lib/specs/personas.d.ts +41 -0
  210. package/lib/specs/personas.js +168 -0
  211. package/lib/specs/skills.d.ts +2 -1
  212. package/lib/specs/skills.js +41 -23
  213. package/lib/specs/teams/index.js +3 -1
  214. package/lib/specs/teams/teams.js +468 -348
  215. package/lib/specs/tools.js +4 -4
  216. package/lib/specs/triggers.js +61 -11
  217. package/lib/stores/agentRuntimeStore.d.ts +204 -0
  218. package/lib/stores/agentRuntimeStore.js +636 -0
  219. package/lib/stores/index.d.ts +1 -1
  220. package/lib/stores/index.js +1 -1
  221. package/lib/tools/adapters/copilotkit/lexicalHooks.d.ts +1 -2
  222. package/lib/tools/adapters/copilotkit/lexicalHooks.js +1 -3
  223. package/lib/tools/adapters/copilotkit/notebookHooks.d.ts +1 -2
  224. package/lib/tools/adapters/copilotkit/notebookHooks.js +1 -3
  225. package/lib/tools/index.d.ts +0 -2
  226. package/lib/tools/index.js +0 -1
  227. package/lib/types/agentspecs.d.ts +50 -1
  228. package/lib/types/chat.d.ts +309 -8
  229. package/lib/types/context.d.ts +27 -0
  230. package/lib/types/cost.d.ts +2 -2
  231. package/lib/types/index.d.ts +2 -0
  232. package/lib/types/index.js +2 -0
  233. package/lib/types/mcp.d.ts +8 -0
  234. package/lib/types/models.d.ts +2 -2
  235. package/lib/types/personas.d.ts +25 -0
  236. package/lib/types/personas.js +5 -0
  237. package/lib/types/skills.d.ts +43 -1
  238. package/lib/types/stream.d.ts +110 -0
  239. package/lib/types/stream.js +36 -0
  240. package/lib/utils/utils.d.ts +9 -5
  241. package/lib/utils/utils.js +9 -5
  242. package/package.json +13 -9
  243. package/scripts/codegen/__pycache__/generate_agents.cpython-313.pyc +0 -0
  244. package/scripts/codegen/__pycache__/generate_events.cpython-313.pyc +0 -0
  245. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  246. package/scripts/codegen/generate_agents.py +102 -6
  247. package/scripts/codegen/generate_events.py +35 -13
  248. package/scripts/codegen/generate_personas.py +319 -0
  249. package/scripts/codegen/generate_skills.py +9 -9
  250. package/scripts/sync-jupyter.sh +26 -7
  251. package/lib/api/tool-approvals.d.ts +0 -62
  252. package/lib/api/tool-approvals.js +0 -145
  253. package/lib/examples/LexicalSidebarExample.js +0 -163
  254. package/lib/examples/NotebookSidebarExample.js +0 -119
  255. package/lib/examples/NotebookSimpleExample.d.ts +0 -6
  256. package/lib/examples/NotebookSimpleExample.js +0 -22
  257. package/lib/examples/ag-ui/index.d.ts +0 -10
  258. package/lib/examples/ag-ui/index.js +0 -16
  259. package/lib/hooks/useAgentsRegistry.d.ts +0 -10
  260. package/lib/hooks/useAgentsRegistry.js +0 -20
  261. package/lib/stores/agentsStore.d.ts +0 -123
  262. package/lib/stores/agentsStore.js +0 -270
  263. /package/lib/examples/{AgentspecExample.d.ts → AgentSpecsExample.d.ts} +0 -0
  264. /package/lib/examples/{ag-ui → components}/haiku/HaikuDisplay.d.ts +0 -0
  265. /package/lib/examples/{ag-ui → components}/haiku/InlineHaikuCard.d.ts +0 -0
  266. /package/lib/examples/{ag-ui → components}/weather/InlineWeatherCard.d.ts +0 -0
  267. /package/lib/examples/{ag-ui → components}/weather/InlineWeatherCard.js +0 -0
@@ -118,7 +118,11 @@ export const BEDROCK_US_ANTHROPIC_CLAUDE_3_5_HAIKU_20241022_V1_0_0_0_1 = {
118
118
  description: 'Claude Haiku 3.5 via AWS Bedrock - fast and efficient',
119
119
  provider: 'bedrock',
120
120
  default: false,
121
- requiredEnvVars: ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_DEFAULT_REGION'],
121
+ requiredEnvVars: [
122
+ 'AWS_ACCESS_KEY_ID',
123
+ 'AWS_SECRET_ACCESS_KEY',
124
+ 'AWS_DEFAULT_REGION',
125
+ ],
122
126
  };
123
127
  export const BEDROCK_US_ANTHROPIC_CLAUDE_OPUS_4_6_V1_0_0_1 = {
124
128
  id: 'bedrock:us.anthropic.claude-opus-4-6-v1',
@@ -127,7 +131,11 @@ export const BEDROCK_US_ANTHROPIC_CLAUDE_OPUS_4_6_V1_0_0_1 = {
127
131
  description: 'Claude Opus 4.6 via AWS Bedrock',
128
132
  provider: 'bedrock',
129
133
  default: false,
130
- requiredEnvVars: ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_DEFAULT_REGION'],
134
+ requiredEnvVars: [
135
+ 'AWS_ACCESS_KEY_ID',
136
+ 'AWS_SECRET_ACCESS_KEY',
137
+ 'AWS_DEFAULT_REGION',
138
+ ],
131
139
  };
132
140
  export const BEDROCK_US_ANTHROPIC_CLAUDE_OPUS_4_20250514_V1_0_0_0_1 = {
133
141
  id: 'bedrock:us.anthropic.claude-opus-4-20250514-v1:0',
@@ -136,7 +144,11 @@ export const BEDROCK_US_ANTHROPIC_CLAUDE_OPUS_4_20250514_V1_0_0_0_1 = {
136
144
  description: 'Claude Opus 4 via AWS Bedrock - highest capability',
137
145
  provider: 'bedrock',
138
146
  default: false,
139
- requiredEnvVars: ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_DEFAULT_REGION'],
147
+ requiredEnvVars: [
148
+ 'AWS_ACCESS_KEY_ID',
149
+ 'AWS_SECRET_ACCESS_KEY',
150
+ 'AWS_DEFAULT_REGION',
151
+ ],
140
152
  };
141
153
  export const BEDROCK_US_ANTHROPIC_CLAUDE_SONNET_4_5_20250929_V1_0_0_0_1 = {
142
154
  id: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
@@ -145,7 +157,11 @@ export const BEDROCK_US_ANTHROPIC_CLAUDE_SONNET_4_5_20250929_V1_0_0_0_1 = {
145
157
  description: 'Claude Sonnet 4.5 via AWS Bedrock - balanced performance',
146
158
  provider: 'bedrock',
147
159
  default: true,
148
- requiredEnvVars: ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_DEFAULT_REGION'],
160
+ requiredEnvVars: [
161
+ 'AWS_ACCESS_KEY_ID',
162
+ 'AWS_SECRET_ACCESS_KEY',
163
+ 'AWS_DEFAULT_REGION',
164
+ ],
149
165
  };
150
166
  export const BEDROCK_US_ANTHROPIC_CLAUDE_SONNET_4_20250514_V1_0_0_0_1 = {
151
167
  id: 'bedrock:us.anthropic.claude-sonnet-4-20250514-v1:0',
@@ -154,7 +170,11 @@ export const BEDROCK_US_ANTHROPIC_CLAUDE_SONNET_4_20250514_V1_0_0_0_1 = {
154
170
  description: 'Claude Sonnet 4 via AWS Bedrock - strong reasoning',
155
171
  provider: 'bedrock',
156
172
  default: false,
157
- requiredEnvVars: ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_DEFAULT_REGION'],
173
+ requiredEnvVars: [
174
+ 'AWS_ACCESS_KEY_ID',
175
+ 'AWS_SECRET_ACCESS_KEY',
176
+ 'AWS_DEFAULT_REGION',
177
+ ],
158
178
  };
159
179
  export const OPENAI_GPT_4_1_MINI_0_0_1 = {
160
180
  id: 'openai:gpt-4.1-mini',
@@ -14,9 +14,27 @@ export const API_PUSH_NOTIFICATION_SPEC_0_0_1 = {
14
14
  available: false,
15
15
  coming_soon: true,
16
16
  fields: [
17
- { name: 'url', label: 'Endpoint URL', type: 'string', required: true, placeholder: 'https://api.example.com/agent-results' },
18
- { name: 'secret', label: 'Signing Secret', type: 'string', required: false, placeholder: 'Optional HMAC secret for payload signing' },
19
- { name: 'include_output', label: 'Include Output', type: 'boolean', required: false, default: true },
17
+ {
18
+ name: 'url',
19
+ label: 'Endpoint URL',
20
+ type: 'string',
21
+ required: true,
22
+ placeholder: 'https://api.example.com/agent-results',
23
+ },
24
+ {
25
+ name: 'secret',
26
+ label: 'Signing Secret',
27
+ type: 'string',
28
+ required: false,
29
+ placeholder: 'Optional HMAC secret for payload signing',
30
+ },
31
+ {
32
+ name: 'include_output',
33
+ label: 'Include Output',
34
+ type: 'boolean',
35
+ required: false,
36
+ default: true,
37
+ },
20
38
  ],
21
39
  };
22
40
  export const EMAIL_NOTIFICATION_SPEC_0_0_1 = {
@@ -28,9 +46,27 @@ export const EMAIL_NOTIFICATION_SPEC_0_0_1 = {
28
46
  available: true,
29
47
  coming_soon: false,
30
48
  fields: [
31
- { name: 'recipients', label: 'Recipients', type: 'string', required: true, placeholder: 'ops@company.com, team-lead@company.com' },
32
- { name: 'subject_template', label: 'Subject Template', type: 'string', required: false, placeholder: '[Agent] {{agent_name}} — {{event_type}}' },
33
- { name: 'include_output', label: 'Include Output', type: 'boolean', required: false, default: true },
49
+ {
50
+ name: 'recipients',
51
+ label: 'Recipients',
52
+ type: 'string',
53
+ required: true,
54
+ placeholder: 'ops@company.com, team-lead@company.com',
55
+ },
56
+ {
57
+ name: 'subject_template',
58
+ label: 'Subject Template',
59
+ type: 'string',
60
+ required: false,
61
+ placeholder: '[Agent] {{agent_name}} — {{event_type}}',
62
+ },
63
+ {
64
+ name: 'include_output',
65
+ label: 'Include Output',
66
+ type: 'boolean',
67
+ required: false,
68
+ default: true,
69
+ },
34
70
  ],
35
71
  };
36
72
  export const SLACK_NOTIFICATION_SPEC_0_0_1 = {
@@ -42,9 +78,27 @@ export const SLACK_NOTIFICATION_SPEC_0_0_1 = {
42
78
  available: true,
43
79
  coming_soon: false,
44
80
  fields: [
45
- { name: 'channel', label: 'Channel', type: 'string', required: true, placeholder: '#sales-analytics' },
46
- { name: 'mention_on_failure', label: 'Mention on Failure', type: 'string', required: false, placeholder: '@oncall-team' },
47
- { name: 'include_output', label: 'Include Output', type: 'boolean', required: false, default: false },
81
+ {
82
+ name: 'channel',
83
+ label: 'Channel',
84
+ type: 'string',
85
+ required: true,
86
+ placeholder: '#sales-analytics',
87
+ },
88
+ {
89
+ name: 'mention_on_failure',
90
+ label: 'Mention on Failure',
91
+ type: 'string',
92
+ required: false,
93
+ placeholder: '@oncall-team',
94
+ },
95
+ {
96
+ name: 'include_output',
97
+ label: 'Include Output',
98
+ type: 'boolean',
99
+ required: false,
100
+ default: false,
101
+ },
48
102
  ],
49
103
  };
50
104
  export const TEAMS_NOTIFICATION_SPEC_0_0_1 = {
@@ -56,8 +110,20 @@ export const TEAMS_NOTIFICATION_SPEC_0_0_1 = {
56
110
  available: false,
57
111
  coming_soon: true,
58
112
  fields: [
59
- { name: 'webhook_url', label: 'Webhook URL', type: 'string', required: true, placeholder: 'https://outlook.office.com/webhook/...' },
60
- { name: 'include_output', label: 'Include Output', type: 'boolean', required: false, default: false },
113
+ {
114
+ name: 'webhook_url',
115
+ label: 'Webhook URL',
116
+ type: 'string',
117
+ required: true,
118
+ placeholder: 'https://outlook.office.com/webhook/...',
119
+ },
120
+ {
121
+ name: 'include_output',
122
+ label: 'Include Output',
123
+ type: 'boolean',
124
+ required: false,
125
+ default: false,
126
+ },
61
127
  ],
62
128
  };
63
129
  export const WEBHOOK_NOTIFICATION_SPEC_0_0_1 = {
@@ -69,9 +135,27 @@ export const WEBHOOK_NOTIFICATION_SPEC_0_0_1 = {
69
135
  available: false,
70
136
  coming_soon: true,
71
137
  fields: [
72
- { name: 'url', label: 'Webhook URL', type: 'string', required: true, placeholder: 'https://api.example.com/agent-events' },
73
- { name: 'secret', label: 'Signing Secret', type: 'string', required: false, placeholder: 'Optional HMAC secret for payload signing' },
74
- { name: 'include_output', label: 'Include Output', type: 'boolean', required: false, default: true },
138
+ {
139
+ name: 'url',
140
+ label: 'Webhook URL',
141
+ type: 'string',
142
+ required: true,
143
+ placeholder: 'https://api.example.com/agent-events',
144
+ },
145
+ {
146
+ name: 'secret',
147
+ label: 'Signing Secret',
148
+ type: 'string',
149
+ required: false,
150
+ placeholder: 'Optional HMAC secret for payload signing',
151
+ },
152
+ {
153
+ name: 'include_output',
154
+ label: 'Include Output',
155
+ type: 'boolean',
156
+ required: false,
157
+ default: true,
158
+ },
75
159
  ],
76
160
  };
77
161
  // ============================================================================
@@ -79,10 +163,10 @@ export const WEBHOOK_NOTIFICATION_SPEC_0_0_1 = {
79
163
  // ============================================================================
80
164
  export const NOTIFICATION_CATALOG = {
81
165
  'api-push': API_PUSH_NOTIFICATION_SPEC_0_0_1,
82
- 'email': EMAIL_NOTIFICATION_SPEC_0_0_1,
83
- 'slack': SLACK_NOTIFICATION_SPEC_0_0_1,
84
- 'teams': TEAMS_NOTIFICATION_SPEC_0_0_1,
85
- 'webhook': WEBHOOK_NOTIFICATION_SPEC_0_0_1,
166
+ email: EMAIL_NOTIFICATION_SPEC_0_0_1,
167
+ slack: SLACK_NOTIFICATION_SPEC_0_0_1,
168
+ teams: TEAMS_NOTIFICATION_SPEC_0_0_1,
169
+ webhook: WEBHOOK_NOTIFICATION_SPEC_0_0_1,
86
170
  };
87
171
  export function getNotificationSpecs() {
88
172
  return Object.values(NOTIFICATION_CATALOG);
@@ -33,7 +33,11 @@ export const DOCUMENT_OUTPUT_SPEC_0_0_1 = {
33
33
  icon: 'file',
34
34
  supports_template: true,
35
35
  supports_storage: true,
36
- mime_types: ['application/pdf', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'text/markdown'],
36
+ mime_types: [
37
+ 'application/pdf',
38
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
39
+ 'text/markdown',
40
+ ],
37
41
  };
38
42
  export const EMAIL_OUTPUT_SPEC_0_0_1 = {
39
43
  id: 'email',
@@ -73,19 +77,21 @@ export const SPREADSHEET_OUTPUT_SPEC_0_0_1 = {
73
77
  icon: 'table',
74
78
  supports_template: true,
75
79
  supports_storage: true,
76
- mime_types: ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
80
+ mime_types: [
81
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
82
+ ],
77
83
  };
78
84
  // ============================================================================
79
85
  // Output Catalog
80
86
  // ============================================================================
81
87
  export const OUTPUT_CATALOG = {
82
- 'csv': CSV_OUTPUT_SPEC_0_0_1,
83
- 'dashboard': DASHBOARD_OUTPUT_SPEC_0_0_1,
84
- 'document': DOCUMENT_OUTPUT_SPEC_0_0_1,
85
- 'email': EMAIL_OUTPUT_SPEC_0_0_1,
86
- 'json': JSON_OUTPUT_SPEC_0_0_1,
87
- 'notebook': NOTEBOOK_OUTPUT_SPEC_0_0_1,
88
- 'spreadsheet': SPREADSHEET_OUTPUT_SPEC_0_0_1,
88
+ csv: CSV_OUTPUT_SPEC_0_0_1,
89
+ dashboard: DASHBOARD_OUTPUT_SPEC_0_0_1,
90
+ document: DOCUMENT_OUTPUT_SPEC_0_0_1,
91
+ email: EMAIL_OUTPUT_SPEC_0_0_1,
92
+ json: JSON_OUTPUT_SPEC_0_0_1,
93
+ notebook: NOTEBOOK_OUTPUT_SPEC_0_0_1,
94
+ spreadsheet: SPREADSHEET_OUTPUT_SPEC_0_0_1,
89
95
  };
90
96
  export function getOutputSpecs() {
91
97
  return Object.values(OUTPUT_CATALOG);
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Persona Catalog
3
+ *
4
+ * Predefined Persona configurations built on top of agent specs.
5
+ *
6
+ * This file is AUTO-GENERATED from YAML specifications.
7
+ * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.
8
+ */
9
+ import type { PersonaSpec } from '../types';
10
+ export declare const Personas: {
11
+ readonly CODE: "code";
12
+ readonly FORECASTER: "forecaster";
13
+ readonly INTRUSION: "intrusion";
14
+ readonly JOVYAN: "jovyan";
15
+ readonly MARKETING: "marketing";
16
+ readonly PENTEST: "pentest";
17
+ readonly PHARMA: "pharma";
18
+ readonly POIROT: "poirot";
19
+ readonly SENTINEL: "sentinel";
20
+ readonly TRADER: "trader";
21
+ readonly TUTOR: "tutor";
22
+ readonly TWIN: "twin";
23
+ };
24
+ export type PersonaId = (typeof Personas)[keyof typeof Personas];
25
+ export declare const CODE_PERSONA_0_0_1: PersonaSpec;
26
+ export declare const FORECASTER_PERSONA_0_0_1: PersonaSpec;
27
+ export declare const INTRUSION_PERSONA_0_0_1: PersonaSpec;
28
+ export declare const JOVYAN_PERSONA_0_0_1: PersonaSpec;
29
+ export declare const MARKETING_PERSONA_0_0_1: PersonaSpec;
30
+ export declare const PENTEST_PERSONA_0_0_1: PersonaSpec;
31
+ export declare const PHARMA_PERSONA_0_0_1: PersonaSpec;
32
+ export declare const POIROT_PERSONA_0_0_1: PersonaSpec;
33
+ export declare const SENTINEL_PERSONA_0_0_1: PersonaSpec;
34
+ export declare const TRADER_PERSONA_0_0_1: PersonaSpec;
35
+ export declare const TUTOR_PERSONA_0_0_1: PersonaSpec;
36
+ export declare const TWIN_PERSONA_0_0_1: PersonaSpec;
37
+ export declare const PERSONA_CATALOGUE: Record<string, PersonaSpec>;
38
+ /** Get a persona specification by ID. */
39
+ export declare function getPersona(personaId: string): PersonaSpec | undefined;
40
+ /** List all available personas. */
41
+ export declare function listPersonas(): PersonaSpec[];
@@ -0,0 +1,168 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ // ============================================================================
6
+ // Personas Enum
7
+ // ============================================================================
8
+ export const Personas = {
9
+ CODE: 'code',
10
+ FORECASTER: 'forecaster',
11
+ INTRUSION: 'intrusion',
12
+ JOVYAN: 'jovyan',
13
+ MARKETING: 'marketing',
14
+ PENTEST: 'pentest',
15
+ PHARMA: 'pharma',
16
+ POIROT: 'poirot',
17
+ SENTINEL: 'sentinel',
18
+ TRADER: 'trader',
19
+ TUTOR: 'tutor',
20
+ TWIN: 'twin',
21
+ };
22
+ // ============================================================================
23
+ // Persona Definitions
24
+ // ============================================================================
25
+ export const CODE_PERSONA_0_0_1 = {
26
+ id: 'code',
27
+ version: '0.0.1',
28
+ name: 'Code',
29
+ description: 'A pragmatic coding companion focused on writing, reviewing and refactoring software. Pairs well with editors, terminals and code execution sandboxes.',
30
+ tags: ['coding', 'development', 'engineering', 'assistant'],
31
+ icon: 'code',
32
+ emoji: '🧑‍💻',
33
+ };
34
+ export const FORECASTER_PERSONA_0_0_1 = {
35
+ id: 'forecaster',
36
+ version: '0.0.1',
37
+ name: 'Forecaster',
38
+ description: 'A predictive-analytics persona that builds and explains time-series forecasts — sales pipelines, demand planning, revenue projection and scenario analysis.',
39
+ tags: ['forecasting', 'analytics', 'sales', 'time-series'],
40
+ icon: 'graph',
41
+ emoji: '📈',
42
+ };
43
+ export const INTRUSION_PERSONA_0_0_1 = {
44
+ id: 'intrusion',
45
+ version: '0.0.1',
46
+ name: 'Intrusion',
47
+ description: 'A defensive security persona focused on intrusion detection, log analysis, threat hunting and incident response across networks, endpoints and cloud workloads.',
48
+ tags: ['security', 'intrusion-detection', 'threat-hunting', 'blue-team'],
49
+ icon: 'shield-lock',
50
+ emoji: '🛡️',
51
+ };
52
+ export const JOVYAN_PERSONA_0_0_1 = {
53
+ id: 'jovyan',
54
+ version: '0.0.1',
55
+ name: 'Jovyan',
56
+ description: 'A Jupyter-native companion that lives in notebooks and lexical documents, runs cells, inspects kernels and helps you explore data, narratives and computations.',
57
+ tags: ['jupyter', 'notebook', 'data-science', 'kernels'],
58
+ icon: 'zap',
59
+ emoji: '🪐',
60
+ };
61
+ export const MARKETING_PERSONA_0_0_1 = {
62
+ id: 'marketing',
63
+ version: '0.0.1',
64
+ name: 'Marketing',
65
+ description: 'A creative marketing persona that drafts campaigns, social posts, newsletters and product copy — adapting tone, channel and audience to maximize engagement.',
66
+ tags: ['marketing', 'content', 'social-media', 'copywriting'],
67
+ icon: 'megaphone',
68
+ emoji: '📣',
69
+ };
70
+ export const PENTEST_PERSONA_0_0_1 = {
71
+ id: 'pentest',
72
+ version: '0.0.1',
73
+ name: 'Pentest',
74
+ description: 'An offensive security persona that helps with authorized penetration testing — reconnaissance, vulnerability assessment, exploit reasoning and reporting.',
75
+ tags: ['security', 'penetration-testing', 'red-team', 'vulnerability'],
76
+ icon: 'bug',
77
+ emoji: '🕷️',
78
+ };
79
+ export const PHARMA_PERSONA_0_0_1 = {
80
+ id: 'pharma',
81
+ version: '0.0.1',
82
+ name: 'Pharma',
83
+ description: 'A life-sciences persona for pharmaceutical and clinical workflows — literature review, trial data exploration, regulatory reporting and drug-safety signal triage.',
84
+ tags: ['pharma', 'life-sciences', 'clinical', 'regulatory'],
85
+ icon: 'beaker',
86
+ emoji: '💊',
87
+ };
88
+ export const POIROT_PERSONA_0_0_1 = {
89
+ id: 'poirot',
90
+ version: '0.0.1',
91
+ name: 'Poirot',
92
+ description: 'A meticulous detective persona for investigative workflows — root cause analysis, evidence correlation, timeline reconstruction and hypothesis testing across heterogeneous data.',
93
+ tags: ['investigation', 'root-cause', 'forensics', 'reasoning'],
94
+ icon: 'search',
95
+ emoji: '🕵️',
96
+ };
97
+ export const SENTINEL_PERSONA_0_0_1 = {
98
+ id: 'sentinel',
99
+ version: '0.0.1',
100
+ name: 'Sentinel',
101
+ description: 'A vigilant monitoring persona for real-time signal detection, anomaly spotting and early-warning alerts — including use cases such as seismic activity, infrastructure health and live event streams.',
102
+ tags: ['monitoring', 'detection', 'alerting', 'real-time', 'earthquake'],
103
+ icon: 'shield',
104
+ emoji: '🛰️',
105
+ };
106
+ export const TRADER_PERSONA_0_0_1 = {
107
+ id: 'trader',
108
+ version: '0.0.1',
109
+ name: 'Trader',
110
+ description: 'A markets persona for stock and portfolio analysis — quote retrieval, technical indicators, portfolio tracking and trading research workflows.',
111
+ tags: ['finance', 'stocks', 'markets', 'portfolio'],
112
+ icon: 'pulse',
113
+ emoji: '💹',
114
+ };
115
+ export const TUTOR_PERSONA_0_0_1 = {
116
+ id: 'tutor',
117
+ version: '0.0.1',
118
+ name: 'Tutor',
119
+ description: "A patient teaching companion that explains concepts, walks through examples step by step, asks questions and adapts its style to the learner's level.",
120
+ tags: ['education', 'learning', 'teaching', 'mentorship'],
121
+ icon: 'book',
122
+ emoji: '🎓',
123
+ };
124
+ export const TWIN_PERSONA_0_0_1 = {
125
+ id: 'twin',
126
+ version: '0.0.1',
127
+ name: 'Twin',
128
+ description: 'A digital twin of you — mirrors your context, preferences and history to assist with personal productivity, decision making and continuity across tools and sessions.',
129
+ tags: ['personal', 'productivity', 'context', 'assistant'],
130
+ icon: 'person',
131
+ emoji: '👤',
132
+ };
133
+ // ============================================================================
134
+ // Persona Catalog
135
+ // ============================================================================
136
+ export const PERSONA_CATALOGUE = {
137
+ code: CODE_PERSONA_0_0_1,
138
+ forecaster: FORECASTER_PERSONA_0_0_1,
139
+ intrusion: INTRUSION_PERSONA_0_0_1,
140
+ jovyan: JOVYAN_PERSONA_0_0_1,
141
+ marketing: MARKETING_PERSONA_0_0_1,
142
+ pentest: PENTEST_PERSONA_0_0_1,
143
+ pharma: PHARMA_PERSONA_0_0_1,
144
+ poirot: POIROT_PERSONA_0_0_1,
145
+ sentinel: SENTINEL_PERSONA_0_0_1,
146
+ trader: TRADER_PERSONA_0_0_1,
147
+ tutor: TUTOR_PERSONA_0_0_1,
148
+ twin: TWIN_PERSONA_0_0_1,
149
+ };
150
+ function resolvePersonaId(personaId) {
151
+ if (personaId in PERSONA_CATALOGUE)
152
+ return personaId;
153
+ const idx = personaId.lastIndexOf(':');
154
+ if (idx > 0) {
155
+ const base = personaId.slice(0, idx);
156
+ if (base in PERSONA_CATALOGUE)
157
+ return base;
158
+ }
159
+ return personaId;
160
+ }
161
+ /** Get a persona specification by ID. */
162
+ export function getPersona(personaId) {
163
+ return PERSONA_CATALOGUE[resolvePersonaId(personaId)];
164
+ }
165
+ /** List all available personas. */
166
+ export function listPersonas() {
167
+ return Object.values(PERSONA_CATALOGUE);
168
+ }
@@ -8,11 +8,12 @@
8
8
  */
9
9
  import type { SkillSpec } from '../types';
10
10
  export declare const CRAWL_SKILL_SPEC_0_0_1: SkillSpec;
11
+ export declare const DATALAYER_WHOAMI_SKILL_SPEC_0_0_1: SkillSpec;
11
12
  export declare const EVENTS_SKILL_SPEC_0_0_1: SkillSpec;
12
13
  export declare const GITHUB_SKILL_SPEC_0_0_1: SkillSpec;
13
14
  export declare const JOKES_SKILL_SPEC_0_0_1: SkillSpec;
14
15
  export declare const PDF_SKILL_SPEC_0_0_1: SkillSpec;
15
16
  export declare const TEXT_SUMMARIZER_SKILL_SPEC_0_0_1: SkillSpec;
16
- export declare const SKILL_CATALOG: Record<string, SkillSpec>;
17
+ export declare const SKILLS_CATALOG: Record<string, SkillSpec>;
17
18
  export declare function getSkillSpecs(): SkillSpec[];
18
19
  export declare function getSkillSpec(skillId: string): SkillSpec | undefined;
@@ -14,14 +14,31 @@ export const CRAWL_SKILL_SPEC_0_0_1 = {
14
14
  package: undefined,
15
15
  method: undefined,
16
16
  path: undefined,
17
- requiredEnvVars: ["TAVILY_API_KEY:0.0.1"],
17
+ requiredEnvVars: ['TAVILY_API_KEY:0.0.1'],
18
18
  optionalEnvVars: [],
19
- dependencies: ["requests>=2.31.0", "beautifulsoup4>=4.12.0"],
20
- tags: ["web", "crawl", "scraping"],
19
+ dependencies: ['requests>=2.31.0', 'beautifulsoup4>=4.12.0'],
20
+ tags: ['web', 'crawl', 'scraping'],
21
21
  icon: 'globe',
22
22
  emoji: '🌐',
23
23
  enabled: true,
24
24
  };
25
+ export const DATALAYER_WHOAMI_SKILL_SPEC_0_0_1 = {
26
+ id: 'datalayer-whoami',
27
+ version: '0.0.1',
28
+ name: 'Datalayer Whoami Skill',
29
+ description: 'Retrieve the authenticated Datalayer user profile using the datalayer-skills package.',
30
+ module: 'datalayer_skills.skills.whoami',
31
+ package: undefined,
32
+ method: undefined,
33
+ path: undefined,
34
+ requiredEnvVars: ['DATALAYER_API_KEY:0.0.1'],
35
+ optionalEnvVars: [],
36
+ dependencies: ['datalayer_skills>=0.1.0'],
37
+ tags: ['datalayer', 'iam', 'identity', 'profile'],
38
+ icon: 'person',
39
+ emoji: '👤',
40
+ enabled: true,
41
+ };
25
42
  export const EVENTS_SKILL_SPEC_0_0_1 = {
26
43
  id: 'events',
27
44
  version: '0.0.1',
@@ -33,8 +50,8 @@ export const EVENTS_SKILL_SPEC_0_0_1 = {
33
50
  path: undefined,
34
51
  requiredEnvVars: [],
35
52
  optionalEnvVars: [],
36
- dependencies: ["httpx>=0.27.0"],
37
- tags: ["events", "orchestration", "automation"],
53
+ dependencies: ['httpx>=0.27.0'],
54
+ tags: ['events', 'orchestration', 'automation'],
38
55
  icon: 'bell',
39
56
  emoji: '📅',
40
57
  enabled: true,
@@ -48,10 +65,10 @@ export const GITHUB_SKILL_SPEC_0_0_1 = {
48
65
  package: undefined,
49
66
  method: undefined,
50
67
  path: undefined,
51
- requiredEnvVars: ["GITHUB_TOKEN:0.0.1"],
68
+ requiredEnvVars: ['GITHUB_TOKEN:0.0.1'],
52
69
  optionalEnvVars: [],
53
- dependencies: ["PyGithub>=2.1.0"],
54
- tags: ["github", "git", "code"],
70
+ dependencies: ['PyGithub>=2.1.0'],
71
+ tags: ['github', 'git', 'code'],
55
72
  icon: 'mark-github',
56
73
  emoji: '🐙',
57
74
  enabled: true,
@@ -68,7 +85,7 @@ export const JOKES_SKILL_SPEC_0_0_1 = {
68
85
  requiredEnvVars: [],
69
86
  optionalEnvVars: [],
70
87
  dependencies: [],
71
- tags: ["fun", "humor", "demo"],
88
+ tags: ['fun', 'humor', 'demo'],
72
89
  icon: 'smiley',
73
90
  emoji: '😄',
74
91
  enabled: true,
@@ -84,8 +101,8 @@ export const PDF_SKILL_SPEC_0_0_1 = {
84
101
  path: undefined,
85
102
  requiredEnvVars: [],
86
103
  optionalEnvVars: [],
87
- dependencies: ["PyPDF2>=3.0.0", "pdfplumber>=0.10.0"],
88
- tags: ["pdf", "documents", "extraction"],
104
+ dependencies: ['PyPDF2>=3.0.0', 'pdfplumber>=0.10.0'],
105
+ tags: ['pdf', 'documents', 'extraction'],
89
106
  icon: 'file',
90
107
  emoji: '📄',
91
108
  enabled: true,
@@ -101,8 +118,8 @@ export const TEXT_SUMMARIZER_SKILL_SPEC_0_0_1 = {
101
118
  path: undefined,
102
119
  requiredEnvVars: [],
103
120
  optionalEnvVars: [],
104
- dependencies: ["agent-skills>=0.0.1"],
105
- tags: ["nlp", "summarization", "text-processing"],
121
+ dependencies: ['agent-skills>=0.0.1'],
122
+ tags: ['nlp', 'summarization', 'text-processing'],
106
123
  icon: 'note',
107
124
  emoji: '📝',
108
125
  enabled: true,
@@ -110,28 +127,29 @@ export const TEXT_SUMMARIZER_SKILL_SPEC_0_0_1 = {
110
127
  // ============================================================================
111
128
  // Skill Catalog
112
129
  // ============================================================================
113
- export const SKILL_CATALOG = {
114
- 'crawl': CRAWL_SKILL_SPEC_0_0_1,
115
- 'events': EVENTS_SKILL_SPEC_0_0_1,
116
- 'github': GITHUB_SKILL_SPEC_0_0_1,
117
- 'jokes': JOKES_SKILL_SPEC_0_0_1,
118
- 'pdf': PDF_SKILL_SPEC_0_0_1,
130
+ export const SKILLS_CATALOG = {
131
+ crawl: CRAWL_SKILL_SPEC_0_0_1,
132
+ 'datalayer-whoami': DATALAYER_WHOAMI_SKILL_SPEC_0_0_1,
133
+ events: EVENTS_SKILL_SPEC_0_0_1,
134
+ github: GITHUB_SKILL_SPEC_0_0_1,
135
+ jokes: JOKES_SKILL_SPEC_0_0_1,
136
+ pdf: PDF_SKILL_SPEC_0_0_1,
119
137
  'text-summarizer': TEXT_SUMMARIZER_SKILL_SPEC_0_0_1,
120
138
  };
121
139
  export function getSkillSpecs() {
122
- return Object.values(SKILL_CATALOG);
140
+ return Object.values(SKILLS_CATALOG);
123
141
  }
124
142
  function resolveSkillId(skillId) {
125
- if (skillId in SKILL_CATALOG)
143
+ if (skillId in SKILLS_CATALOG)
126
144
  return skillId;
127
145
  const idx = skillId.lastIndexOf(':');
128
146
  if (idx > 0) {
129
147
  const base = skillId.slice(0, idx);
130
- if (base in SKILL_CATALOG)
148
+ if (base in SKILLS_CATALOG)
131
149
  return base;
132
150
  }
133
151
  return skillId;
134
152
  }
135
153
  export function getSkillSpec(skillId) {
136
- return SKILL_CATALOG[resolveSkillId(skillId)];
154
+ return SKILLS_CATALOG[resolveSkillId(skillId)];
137
155
  }
@@ -31,5 +31,7 @@ export function getTeamSpec(teamId) {
31
31
  */
32
32
  export function listTeamSpecs(prefix) {
33
33
  const specs = Object.values(TEAM_SPECS);
34
- return prefix !== undefined ? specs.filter(s => s.id.startsWith(prefix)) : specs;
34
+ return prefix !== undefined
35
+ ? specs.filter(s => s.id.startsWith(prefix))
36
+ : specs;
35
37
  }