@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.
- package/README.md +34 -0
- package/lib/App.js +1 -1
- package/lib/agents/AgentDetails.d.ts +22 -1
- package/lib/agents/AgentDetails.js +34 -47
- package/lib/api/index.d.ts +0 -1
- package/lib/api/index.js +4 -2
- package/lib/chat/Chat.d.ts +5 -106
- package/lib/chat/Chat.js +4 -4
- package/lib/chat/ChatFloating.d.ts +7 -140
- package/lib/chat/ChatFloating.js +2 -2
- package/lib/chat/ChatPopupStandalone.d.ts +8 -47
- package/lib/chat/ChatPopupStandalone.js +3 -3
- package/lib/chat/ChatSidebar.d.ts +4 -69
- package/lib/chat/ChatSidebar.js +2 -2
- package/lib/chat/ChatStandalone.d.ts +4 -54
- package/lib/chat/ChatStandalone.js +3 -3
- package/lib/chat/base/ChatBase.js +1083 -157
- package/lib/chat/header/ChatHeaderBase.d.ts +11 -6
- package/lib/chat/header/ChatHeaderBase.js +18 -16
- package/lib/chat/indicators/McpStatusIndicator.d.ts +7 -4
- package/lib/chat/indicators/McpStatusIndicator.js +7 -32
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +4 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +9 -9
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +7 -0
- package/lib/chat/indicators/SkillsStatusIndicator.js +88 -0
- package/lib/chat/indicators/index.d.ts +1 -0
- package/lib/chat/indicators/index.js +1 -0
- package/lib/chat/messages/ChatMessageList.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.js +108 -113
- package/lib/chat/prompt/InputFooter.d.ts +19 -6
- package/lib/chat/prompt/InputFooter.js +71 -18
- package/lib/chat/prompt/InputPrompt.d.ts +3 -1
- package/lib/chat/prompt/InputPrompt.js +4 -4
- package/lib/chat/prompt/InputPromptFooter.js +1 -1
- package/lib/chat/prompt/InputPromptLexical.d.ts +3 -1
- package/lib/chat/prompt/InputPromptLexical.js +12 -5
- package/lib/chat/prompt/InputPromptText.d.ts +3 -1
- package/lib/chat/prompt/InputPromptText.js +2 -2
- package/lib/chat/tools/ToolApprovalBanner.js +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +3 -1
- package/lib/chat/tools/ToolCallDisplay.js +2 -2
- package/lib/chat/usage/TokenUsageBar.js +20 -2
- package/lib/client/AgentRuntimesClientContext.d.ts +53 -0
- package/lib/client/AgentRuntimesClientContext.js +55 -0
- package/lib/client/AgentsMixin.d.ts +0 -18
- package/lib/client/AgentsMixin.js +6 -30
- package/lib/client/IAgentRuntimesClient.d.ts +215 -0
- package/lib/client/IAgentRuntimesClient.js +5 -0
- package/lib/client/SdkAgentRuntimesClient.d.ts +151 -0
- package/lib/client/SdkAgentRuntimesClient.js +134 -0
- package/lib/client/index.d.ts +4 -1
- package/lib/client/index.js +3 -1
- package/lib/components/NotificationEventCard.js +5 -1
- package/lib/config/AgentConfiguration.js +3 -3
- package/lib/context/ContextDistribution.d.ts +3 -1
- package/lib/context/ContextDistribution.js +8 -27
- package/lib/context/ContextInspector.d.ts +3 -1
- package/lib/context/ContextInspector.js +19 -67
- package/lib/context/ContextPanel.d.ts +3 -1
- package/lib/context/ContextPanel.js +104 -64
- package/lib/context/ContextUsage.d.ts +3 -1
- package/lib/context/ContextUsage.js +3 -3
- package/lib/context/CostTracker.d.ts +9 -3
- package/lib/context/CostTracker.js +26 -47
- package/lib/context/CostUsageChart.d.ts +12 -0
- package/lib/context/CostUsageChart.js +378 -0
- package/lib/context/GraphFlowChart.d.ts +16 -0
- package/lib/context/GraphFlowChart.js +182 -0
- package/lib/context/TokenUsageChart.d.ts +8 -1
- package/lib/context/TokenUsageChart.js +349 -211
- package/lib/context/TurnGraphChart.d.ts +39 -0
- package/lib/context/TurnGraphChart.js +538 -0
- package/lib/context/otelWsPool.d.ts +20 -0
- package/lib/context/otelWsPool.js +69 -0
- package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -17
- package/lib/examples/A2UiComponentGalleryExample.js +315 -522
- package/lib/examples/A2UiContactCardExample.d.ts +0 -18
- package/lib/examples/A2UiContactCardExample.js +154 -411
- package/lib/examples/A2UiRestaurantExample.d.ts +0 -30
- package/lib/examples/A2UiRestaurantExample.js +114 -212
- package/lib/examples/A2UiViewerExample.d.ts +0 -18
- package/lib/examples/A2UiViewerExample.js +283 -532
- package/lib/examples/AgUiBackendToolRenderingExample.js +1 -1
- package/lib/examples/AgUiHaikuGenUiExample.d.ts +1 -1
- package/lib/examples/AgUiHaikuGenUiExample.js +1 -1
- package/lib/examples/AgentCheckpointsExample.js +13 -27
- package/lib/examples/AgentCodemodeExample.d.ts +4 -6
- package/lib/examples/AgentCodemodeExample.js +591 -169
- package/lib/examples/AgentEvalsExample.js +12 -16
- package/lib/examples/AgentGuardrailsExample.js +370 -64
- package/lib/examples/AgentHooksExample.d.ts +3 -0
- package/lib/examples/AgentHooksExample.js +104 -0
- package/lib/examples/AgentMCPExample.d.ts +3 -0
- package/lib/examples/AgentMCPExample.js +480 -0
- package/lib/examples/AgentMemoryExample.js +13 -17
- package/lib/examples/AgentMonitoringExample.js +260 -199
- package/lib/examples/AgentNotificationsExample.js +49 -17
- package/lib/examples/AgentOtelExample.js +2 -3
- package/lib/examples/AgentOutputsExample.d.ts +11 -6
- package/lib/examples/AgentOutputsExample.js +382 -81
- package/lib/examples/AgentParametersExample.d.ts +3 -0
- package/lib/examples/AgentParametersExample.js +246 -0
- package/lib/examples/AgentSandboxExample.d.ts +2 -2
- package/lib/examples/AgentSandboxExample.js +68 -40
- package/lib/examples/AgentSkillsExample.js +91 -99
- package/lib/examples/{AgentspecExample.js → AgentSpecsExample.js} +10 -21
- package/lib/examples/AgentSubagentsExample.d.ts +14 -0
- package/lib/examples/AgentSubagentsExample.js +228 -0
- package/lib/examples/AgentToolApprovalsExample.js +29 -557
- package/lib/examples/AgentTriggersExample.js +819 -565
- package/lib/examples/ChatCustomExample.js +11 -24
- package/lib/examples/ChatExample.js +7 -24
- package/lib/examples/CopilotKitLexicalExample.js +2 -1
- package/lib/examples/CopilotKitNotebookExample.js +2 -1
- package/lib/examples/HomeExample.d.ts +15 -0
- package/lib/examples/HomeExample.js +77 -0
- package/lib/examples/Lexical2Example.js +4 -2
- package/lib/examples/{LexicalExample.d.ts → LexicalAgentExample.d.ts} +4 -4
- package/lib/examples/{LexicalExample.js → LexicalAgentExample.js} +65 -16
- package/lib/examples/{LexicalSidebarExample.d.ts → LexicalAgentSidebarExample.d.ts} +5 -5
- package/lib/examples/LexicalAgentSidebarExample.js +261 -0
- package/lib/examples/NotebookAgentExample.d.ts +9 -0
- package/lib/examples/NotebookAgentExample.js +192 -0
- package/lib/examples/{NotebookSidebarExample.d.ts → NotebookAgentSidebarExample.d.ts} +2 -2
- package/lib/examples/NotebookAgentSidebarExample.js +221 -0
- package/lib/examples/{DatalayerNotebookExample.d.ts → NotebookCollaborationExample.d.ts} +4 -4
- package/lib/examples/{DatalayerNotebookExample.js → NotebookCollaborationExample.js} +3 -3
- package/lib/examples/NotebookExample.d.ts +4 -7
- package/lib/examples/NotebookExample.js +14 -146
- package/lib/examples/components/AuthRequiredView.d.ts +6 -0
- package/lib/examples/components/AuthRequiredView.js +33 -0
- package/lib/examples/components/ExampleWrapper.d.ts +7 -0
- package/lib/examples/components/ExampleWrapper.js +25 -6
- package/lib/examples/{ag-ui → components}/haiku/HaikuDisplay.js +1 -1
- package/lib/examples/{ag-ui → components}/haiku/InlineHaikuCard.js +1 -1
- package/lib/examples/{ag-ui → components}/haiku/index.d.ts +1 -1
- package/lib/examples/{ag-ui → components}/haiku/index.js +1 -1
- package/lib/examples/components/index.d.ts +3 -0
- package/lib/examples/components/index.js +4 -0
- package/lib/examples/{ag-ui → components}/weather/index.d.ts +1 -1
- package/lib/examples/{ag-ui → components}/weather/index.js +1 -1
- package/lib/examples/example-selector.d.ts +17 -4
- package/lib/examples/example-selector.js +107 -41
- package/lib/examples/index.d.ts +9 -6
- package/lib/examples/index.js +9 -6
- package/lib/examples/main.js +217 -27
- package/lib/examples/utils/a2ui.d.ts +18 -0
- package/lib/examples/utils/a2ui.js +69 -0
- package/lib/examples/utils/a2uiMarkdownProvider.d.ts +7 -0
- package/lib/examples/utils/a2uiMarkdownProvider.js +9 -0
- package/lib/examples/utils/agentId.d.ts +18 -0
- package/lib/examples/utils/agentId.js +54 -0
- package/lib/examples/utils/agents/earthquake-detector.json +11 -11
- package/lib/examples/utils/agents/sales-forecaster.json +11 -11
- package/lib/examples/utils/agents/social-post-generator.json +11 -11
- package/lib/examples/utils/agents/stock-market.json +11 -11
- package/lib/examples/utils/examplesStore.js +82 -27
- package/lib/hooks/index.d.ts +8 -8
- package/lib/hooks/index.js +7 -7
- package/lib/hooks/useA2A.d.ts +2 -3
- package/lib/hooks/useAIAgentsWebSocket.d.ts +43 -4
- package/lib/hooks/useAIAgentsWebSocket.js +118 -12
- package/lib/hooks/useAcp.d.ts +1 -2
- package/lib/hooks/useAgUi.d.ts +1 -1
- package/lib/hooks/{useAgents.d.ts → useAgentRuntimes.d.ts} +39 -2
- package/lib/hooks/{useAgents.js → useAgentRuntimes.js} +125 -15
- package/lib/hooks/useAgentsCatalog.js +1 -1
- package/lib/hooks/useAgentsService.d.ts +2 -2
- package/lib/hooks/useAgentsService.js +7 -7
- package/lib/hooks/useCheckpoints.js +1 -1
- package/lib/hooks/useConfig.d.ts +4 -1
- package/lib/hooks/useConfig.js +10 -3
- package/lib/hooks/useContextSnapshot.d.ts +9 -4
- package/lib/hooks/useContextSnapshot.js +9 -37
- package/lib/hooks/useMonitoring.js +3 -0
- package/lib/hooks/useSandbox.d.ts +20 -8
- package/lib/hooks/useSandbox.js +105 -40
- package/lib/hooks/useSkills.d.ts +23 -5
- package/lib/hooks/useSkills.js +94 -39
- package/lib/hooks/useToolApprovals.d.ts +60 -36
- package/lib/hooks/useToolApprovals.js +318 -69
- package/lib/hooks/useVercelAI.d.ts +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +1 -0
- package/lib/inference/index.d.ts +0 -1
- package/lib/middleware/index.d.ts +0 -1
- package/lib/protocols/AGUIAdapter.js +6 -0
- package/lib/protocols/VercelAIAdapter.d.ts +7 -0
- package/lib/protocols/VercelAIAdapter.js +59 -7
- package/lib/specs/agents/agents.d.ts +10 -0
- package/lib/specs/agents/agents.js +2139 -262
- package/lib/specs/agents/index.js +3 -1
- package/lib/specs/envvars.d.ts +1 -0
- package/lib/specs/envvars.js +38 -20
- package/lib/specs/evals.js +6 -6
- package/lib/specs/events.d.ts +3 -10
- package/lib/specs/events.js +127 -84
- package/lib/specs/frontendTools.js +2 -2
- package/lib/specs/guardrails.d.ts +0 -7
- package/lib/specs/guardrails.js +240 -159
- package/lib/specs/index.d.ts +1 -0
- package/lib/specs/index.js +1 -0
- package/lib/specs/mcpServers.js +35 -6
- package/lib/specs/memory.d.ts +0 -2
- package/lib/specs/memory.js +4 -17
- package/lib/specs/models.js +25 -5
- package/lib/specs/notifications.js +102 -18
- package/lib/specs/outputs.js +15 -9
- package/lib/specs/personas.d.ts +41 -0
- package/lib/specs/personas.js +168 -0
- package/lib/specs/skills.d.ts +2 -1
- package/lib/specs/skills.js +41 -23
- package/lib/specs/teams/index.js +3 -1
- package/lib/specs/teams/teams.js +468 -348
- package/lib/specs/tools.js +4 -4
- package/lib/specs/triggers.js +61 -11
- package/lib/stores/agentRuntimeStore.d.ts +204 -0
- package/lib/stores/agentRuntimeStore.js +636 -0
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -1
- package/lib/tools/adapters/copilotkit/lexicalHooks.d.ts +1 -2
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +1 -3
- package/lib/tools/adapters/copilotkit/notebookHooks.d.ts +1 -2
- package/lib/tools/adapters/copilotkit/notebookHooks.js +1 -3
- package/lib/tools/index.d.ts +0 -2
- package/lib/tools/index.js +0 -1
- package/lib/types/agentspecs.d.ts +50 -1
- package/lib/types/chat.d.ts +309 -8
- package/lib/types/context.d.ts +27 -0
- package/lib/types/cost.d.ts +2 -2
- package/lib/types/index.d.ts +2 -0
- package/lib/types/index.js +2 -0
- package/lib/types/mcp.d.ts +8 -0
- package/lib/types/models.d.ts +2 -2
- package/lib/types/personas.d.ts +25 -0
- package/lib/types/personas.js +5 -0
- package/lib/types/skills.d.ts +43 -1
- package/lib/types/stream.d.ts +110 -0
- package/lib/types/stream.js +36 -0
- package/lib/utils/utils.d.ts +9 -5
- package/lib/utils/utils.js +9 -5
- package/package.json +13 -9
- package/scripts/codegen/__pycache__/generate_agents.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_events.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/generate_agents.py +102 -6
- package/scripts/codegen/generate_events.py +35 -13
- package/scripts/codegen/generate_personas.py +319 -0
- package/scripts/codegen/generate_skills.py +9 -9
- package/scripts/sync-jupyter.sh +26 -7
- package/lib/api/tool-approvals.d.ts +0 -62
- package/lib/api/tool-approvals.js +0 -145
- package/lib/examples/LexicalSidebarExample.js +0 -163
- package/lib/examples/NotebookSidebarExample.js +0 -119
- package/lib/examples/NotebookSimpleExample.d.ts +0 -6
- package/lib/examples/NotebookSimpleExample.js +0 -22
- package/lib/examples/ag-ui/index.d.ts +0 -10
- package/lib/examples/ag-ui/index.js +0 -16
- package/lib/hooks/useAgentsRegistry.d.ts +0 -10
- package/lib/hooks/useAgentsRegistry.js +0 -20
- package/lib/stores/agentsStore.d.ts +0 -123
- package/lib/stores/agentsStore.js +0 -270
- /package/lib/examples/{AgentspecExample.d.ts → AgentSpecsExample.d.ts} +0 -0
- /package/lib/examples/{ag-ui → components}/haiku/HaikuDisplay.d.ts +0 -0
- /package/lib/examples/{ag-ui → components}/haiku/InlineHaikuCard.d.ts +0 -0
- /package/lib/examples/{ag-ui → components}/weather/InlineWeatherCard.d.ts +0 -0
- /package/lib/examples/{ag-ui → components}/weather/InlineWeatherCard.js +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
import { ALPHAVANTAGE_MCP_SERVER_0_0_1, CHART_MCP_SERVER_0_0_1, EARTHDATA_MCP_SERVER_0_0_1, EURUS_MCP_SERVER_0_0_1, FILESYSTEM_MCP_SERVER_0_0_1, GITHUB_MCP_SERVER_0_0_1, GOOGLE_WORKSPACE_MCP_SERVER_0_0_1, KAGGLE_MCP_SERVER_0_0_1, SALESFORCE_MCP_SERVER_0_0_1, SLACK_MCP_SERVER_0_0_1, TAVILY_MCP_SERVER_0_0_1, } from '../mcpServers';
|
|
6
|
-
import { CRAWL_SKILL_SPEC_0_0_1, EVENTS_SKILL_SPEC_0_0_1, GITHUB_SKILL_SPEC_0_0_1, JOKES_SKILL_SPEC_0_0_1, PDF_SKILL_SPEC_0_0_1, TEXT_SUMMARIZER_SKILL_SPEC_0_0_1, } from '../skills';
|
|
6
|
+
import { CRAWL_SKILL_SPEC_0_0_1, DATALAYER_WHOAMI_SKILL_SPEC_0_0_1, EVENTS_SKILL_SPEC_0_0_1, GITHUB_SKILL_SPEC_0_0_1, JOKES_SKILL_SPEC_0_0_1, PDF_SKILL_SPEC_0_0_1, TEXT_SUMMARIZER_SKILL_SPEC_0_0_1, } from '../skills';
|
|
7
7
|
import { RUNTIME_ECHO_TOOL_SPEC_0_0_1, RUNTIME_SEND_MAIL_TOOL_SPEC_0_0_1, RUNTIME_SENSITIVE_ECHO_TOOL_SPEC_0_0_1, } from '../tools';
|
|
8
8
|
import { JUPYTER_NOTEBOOK_FRONTEND_TOOL_SPEC_0_0_1, LEXICAL_DOCUMENT_FRONTEND_TOOL_SPEC_0_0_1, } from '../frontendTools';
|
|
9
9
|
// ============================================================================
|
|
@@ -11,42 +11,44 @@ import { JUPYTER_NOTEBOOK_FRONTEND_TOOL_SPEC_0_0_1, LEXICAL_DOCUMENT_FRONTEND_TO
|
|
|
11
11
|
// ============================================================================
|
|
12
12
|
const MCP_SERVER_MAP = {
|
|
13
13
|
'alphavantage:0.0.1': ALPHAVANTAGE_MCP_SERVER_0_0_1,
|
|
14
|
-
|
|
14
|
+
alphavantage: ALPHAVANTAGE_MCP_SERVER_0_0_1,
|
|
15
15
|
'chart:0.0.1': CHART_MCP_SERVER_0_0_1,
|
|
16
|
-
|
|
16
|
+
chart: CHART_MCP_SERVER_0_0_1,
|
|
17
17
|
'earthdata:0.0.1': EARTHDATA_MCP_SERVER_0_0_1,
|
|
18
|
-
|
|
18
|
+
earthdata: EARTHDATA_MCP_SERVER_0_0_1,
|
|
19
19
|
'eurus:0.0.1': EURUS_MCP_SERVER_0_0_1,
|
|
20
|
-
|
|
20
|
+
eurus: EURUS_MCP_SERVER_0_0_1,
|
|
21
21
|
'filesystem:0.0.1': FILESYSTEM_MCP_SERVER_0_0_1,
|
|
22
|
-
|
|
22
|
+
filesystem: FILESYSTEM_MCP_SERVER_0_0_1,
|
|
23
23
|
'github:0.0.1': GITHUB_MCP_SERVER_0_0_1,
|
|
24
|
-
|
|
24
|
+
github: GITHUB_MCP_SERVER_0_0_1,
|
|
25
25
|
'google-workspace:0.0.1': GOOGLE_WORKSPACE_MCP_SERVER_0_0_1,
|
|
26
26
|
'google-workspace': GOOGLE_WORKSPACE_MCP_SERVER_0_0_1,
|
|
27
27
|
'kaggle:0.0.1': KAGGLE_MCP_SERVER_0_0_1,
|
|
28
|
-
|
|
28
|
+
kaggle: KAGGLE_MCP_SERVER_0_0_1,
|
|
29
29
|
'salesforce:0.0.1': SALESFORCE_MCP_SERVER_0_0_1,
|
|
30
|
-
|
|
30
|
+
salesforce: SALESFORCE_MCP_SERVER_0_0_1,
|
|
31
31
|
'slack:0.0.1': SLACK_MCP_SERVER_0_0_1,
|
|
32
|
-
|
|
32
|
+
slack: SLACK_MCP_SERVER_0_0_1,
|
|
33
33
|
'tavily:0.0.1': TAVILY_MCP_SERVER_0_0_1,
|
|
34
|
-
|
|
34
|
+
tavily: TAVILY_MCP_SERVER_0_0_1,
|
|
35
35
|
};
|
|
36
36
|
/**
|
|
37
37
|
* Map skill IDs to SkillSpec objects, converting to AgentSkillSpec shape.
|
|
38
38
|
*/
|
|
39
39
|
const SKILL_MAP = {
|
|
40
40
|
'crawl:0.0.1': CRAWL_SKILL_SPEC_0_0_1,
|
|
41
|
-
|
|
41
|
+
crawl: CRAWL_SKILL_SPEC_0_0_1,
|
|
42
|
+
'datalayer-whoami:0.0.1': DATALAYER_WHOAMI_SKILL_SPEC_0_0_1,
|
|
43
|
+
'datalayer-whoami': DATALAYER_WHOAMI_SKILL_SPEC_0_0_1,
|
|
42
44
|
'events:0.0.1': EVENTS_SKILL_SPEC_0_0_1,
|
|
43
|
-
|
|
45
|
+
events: EVENTS_SKILL_SPEC_0_0_1,
|
|
44
46
|
'github:0.0.1': GITHUB_SKILL_SPEC_0_0_1,
|
|
45
|
-
|
|
47
|
+
github: GITHUB_SKILL_SPEC_0_0_1,
|
|
46
48
|
'jokes:0.0.1': JOKES_SKILL_SPEC_0_0_1,
|
|
47
|
-
|
|
49
|
+
jokes: JOKES_SKILL_SPEC_0_0_1,
|
|
48
50
|
'pdf:0.0.1': PDF_SKILL_SPEC_0_0_1,
|
|
49
|
-
|
|
51
|
+
pdf: PDF_SKILL_SPEC_0_0_1,
|
|
50
52
|
'text-summarizer:0.0.1': TEXT_SUMMARIZER_SKILL_SPEC_0_0_1,
|
|
51
53
|
'text-summarizer': TEXT_SUMMARIZER_SKILL_SPEC_0_0_1,
|
|
52
54
|
};
|
|
@@ -89,13 +91,30 @@ export const ANALYZE_CAMPAIGN_PERFORMANCE_AGENT_SPEC_0_0_1 = {
|
|
|
89
91
|
version: '0.0.1',
|
|
90
92
|
name: 'Analyze Campaign Performance',
|
|
91
93
|
description: `A multi-agent team that unifies marketing data from Google Ads, Meta, TikTok, LinkedIn, GA4, CRM, and email platforms. Normalises metrics into a unified view, detects performance anomalies in real time, and generates budget reallocation recommendations to maximise ROAS.`,
|
|
92
|
-
tags: [
|
|
94
|
+
tags: [
|
|
95
|
+
'marketing',
|
|
96
|
+
'media',
|
|
97
|
+
'campaigns',
|
|
98
|
+
'analytics',
|
|
99
|
+
'advertising',
|
|
100
|
+
'social-media',
|
|
101
|
+
],
|
|
93
102
|
enabled: false,
|
|
94
|
-
model: 'bedrock:us.anthropic.claude-
|
|
95
|
-
mcpServers: [
|
|
96
|
-
|
|
103
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
104
|
+
mcpServers: [
|
|
105
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
106
|
+
MCP_SERVER_MAP['slack:0.0.1'],
|
|
107
|
+
],
|
|
108
|
+
skills: [
|
|
109
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
110
|
+
toAgentSkillSpec(SKILL_MAP['crawl:0.0.1']),
|
|
111
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
112
|
+
],
|
|
97
113
|
tools: [],
|
|
98
|
-
frontendTools: [
|
|
114
|
+
frontendTools: [
|
|
115
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
116
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
117
|
+
],
|
|
99
118
|
environmentName: 'ai-agents-env',
|
|
100
119
|
icon: 'megaphone',
|
|
101
120
|
emoji: '📢',
|
|
@@ -105,7 +124,7 @@ export const ANALYZE_CAMPAIGN_PERFORMANCE_AGENT_SPEC_0_0_1 = {
|
|
|
105
124
|
'Which campaigns have abnormal CPA trends?',
|
|
106
125
|
'Generate a budget reallocation recommendation',
|
|
107
126
|
'Compare ROAS across Google Ads vs Meta this month',
|
|
108
|
-
|
|
127
|
+
"What's the projected impact of shifting 20% budget to TikTok?",
|
|
109
128
|
],
|
|
110
129
|
welcomeMessage: "Hello! I'm the Campaign Performance Analytics team. We unify data from all your ad platforms, normalise metrics, detect anomalies in real time, and recommend budget reallocations to maximise your ROAS across channels.\n",
|
|
111
130
|
welcomeNotebook: undefined,
|
|
@@ -117,17 +136,78 @@ export const ANALYZE_CAMPAIGN_PERFORMANCE_AGENT_SPEC_0_0_1 = {
|
|
|
117
136
|
goal: `Unify marketing data from Google Ads, Meta, TikTok, LinkedIn, GA4, and email platforms. Normalise metrics into a single cross-channel view with unified CPA, ROAS, and CTR definitions. Detect performance anomalies in real time and generate budget reallocation recommendations to maximise ROAS.`,
|
|
118
137
|
protocol: 'vercel-ai',
|
|
119
138
|
uiExtension: 'a2ui',
|
|
120
|
-
trigger: {
|
|
139
|
+
trigger: {
|
|
140
|
+
type: 'schedule',
|
|
141
|
+
cron: '0 */4 * * *',
|
|
142
|
+
description: 'Every 4 hours for cross-platform campaign data sync and analysis',
|
|
143
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
144
|
+
},
|
|
121
145
|
modelConfig: undefined,
|
|
122
146
|
mcpServerTools: undefined,
|
|
123
|
-
guardrails: [
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
147
|
+
guardrails: [
|
|
148
|
+
{
|
|
149
|
+
name: 'Marketing Analytics Agent',
|
|
150
|
+
identity_provider: 'google',
|
|
151
|
+
identity_name: 'marketing-bot@acme.com',
|
|
152
|
+
permissions: {
|
|
153
|
+
'read:data': true,
|
|
154
|
+
'write:data': false,
|
|
155
|
+
'execute:code': true,
|
|
156
|
+
'access:internet': true,
|
|
157
|
+
'send:email': false,
|
|
158
|
+
'deploy:production': false,
|
|
159
|
+
},
|
|
160
|
+
data_handling: { pii_detection: true, pii_action: 'redact' },
|
|
161
|
+
approval_policy: {
|
|
162
|
+
require_manual_approval_for: [
|
|
163
|
+
'Pausing campaigns with daily spend above $1,000',
|
|
164
|
+
'Budget reallocation above 20% of channel spend',
|
|
165
|
+
'Any automated bid adjustments',
|
|
166
|
+
],
|
|
167
|
+
auto_approved: [
|
|
168
|
+
'Data collection and metric normalisation',
|
|
169
|
+
'Anomaly detection and alerting',
|
|
170
|
+
'Report generation',
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
token_limits: { per_run: '50K', per_day: '400K', per_month: '5M' },
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
evals: [
|
|
177
|
+
{
|
|
178
|
+
name: 'Data Ingestion Completeness',
|
|
179
|
+
category: 'coding',
|
|
180
|
+
task_count: 400,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
name: 'Anomaly Detection Precision',
|
|
184
|
+
category: 'reasoning',
|
|
185
|
+
task_count: 300,
|
|
186
|
+
},
|
|
187
|
+
{ name: 'ROAS Optimisation Impact', category: 'coding', task_count: 200 },
|
|
188
|
+
],
|
|
189
|
+
codemode: { enabled: true, token_reduction: '~85%', speedup: '~2× faster' },
|
|
190
|
+
output: {
|
|
191
|
+
formats: ['Dashboard', 'PDF', 'Spreadsheet'],
|
|
192
|
+
template: 'Campaign Performance Report',
|
|
193
|
+
storage: '/outputs/campaign-analytics/',
|
|
194
|
+
},
|
|
195
|
+
advanced: {
|
|
196
|
+
cost_limit: '$5.00 per run',
|
|
197
|
+
time_limit: '600 seconds',
|
|
198
|
+
max_iterations: 40,
|
|
199
|
+
validation: 'All metrics must reconcile with platform-reported figures within 2%. Budget recommendations must not exceed total allocated budget.\n',
|
|
200
|
+
},
|
|
128
201
|
authorizationPolicy: '',
|
|
129
|
-
notifications: {
|
|
202
|
+
notifications: {
|
|
203
|
+
email: 'marketing@company.com',
|
|
204
|
+
slack: '#campaign-analytics',
|
|
205
|
+
},
|
|
130
206
|
memory: 'ephemeral',
|
|
207
|
+
preHooks: undefined,
|
|
208
|
+
postHooks: undefined,
|
|
209
|
+
parameters: undefined,
|
|
210
|
+
subagents: undefined,
|
|
131
211
|
};
|
|
132
212
|
export const ANALYZE_SUPPORT_TICKETS_AGENT_SPEC_0_0_1 = {
|
|
133
213
|
id: 'analyze-support-tickets',
|
|
@@ -136,11 +216,21 @@ export const ANALYZE_SUPPORT_TICKETS_AGENT_SPEC_0_0_1 = {
|
|
|
136
216
|
description: `A multi-agent team that triages incoming support tickets, categorizes by urgency and topic, identifies recurring patterns, and generates resolution recommendations with escalation paths.`,
|
|
137
217
|
tags: ['analytics', 'data', 'support', 'tickets'],
|
|
138
218
|
enabled: false,
|
|
139
|
-
model: 'bedrock:us.anthropic.claude-
|
|
140
|
-
mcpServers: [
|
|
141
|
-
|
|
219
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
220
|
+
mcpServers: [
|
|
221
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
222
|
+
MCP_SERVER_MAP['slack:0.0.1'],
|
|
223
|
+
],
|
|
224
|
+
skills: [
|
|
225
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
226
|
+
toAgentSkillSpec(SKILL_MAP['crawl:0.0.1']),
|
|
227
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
228
|
+
],
|
|
142
229
|
tools: [],
|
|
143
|
-
frontendTools: [
|
|
230
|
+
frontendTools: [
|
|
231
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
232
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
233
|
+
],
|
|
144
234
|
environmentName: 'ai-agents-env',
|
|
145
235
|
icon: 'issue-opened',
|
|
146
236
|
emoji: '🎫',
|
|
@@ -161,17 +251,56 @@ export const ANALYZE_SUPPORT_TICKETS_AGENT_SPEC_0_0_1 = {
|
|
|
161
251
|
goal: `Triage incoming support tickets by urgency, categorize by topic and sentiment, identify recurring patterns, and generate resolution recommendations with escalation paths for critical issues.`,
|
|
162
252
|
protocol: 'vercel-ai',
|
|
163
253
|
uiExtension: 'a2ui',
|
|
164
|
-
trigger: {
|
|
254
|
+
trigger: {
|
|
255
|
+
type: 'schedule',
|
|
256
|
+
cron: '0 */2 * * *',
|
|
257
|
+
description: 'Every 2 hours',
|
|
258
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
259
|
+
},
|
|
165
260
|
modelConfig: undefined,
|
|
166
261
|
mcpServerTools: undefined,
|
|
167
|
-
guardrails: [
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
262
|
+
guardrails: [
|
|
263
|
+
{
|
|
264
|
+
name: 'Restricted Viewer',
|
|
265
|
+
identity_provider: 'datalayer',
|
|
266
|
+
identity_name: 'support-bot@acme.com',
|
|
267
|
+
permissions: {
|
|
268
|
+
'read:data': true,
|
|
269
|
+
'write:data': false,
|
|
270
|
+
'execute:code': true,
|
|
271
|
+
'access:internet': true,
|
|
272
|
+
'send:email': false,
|
|
273
|
+
'deploy:production': false,
|
|
274
|
+
},
|
|
275
|
+
token_limits: { per_run: '40K', per_day: '400K', per_month: '4M' },
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
evals: [
|
|
279
|
+
{ name: 'Triage Accuracy', category: 'reasoning', task_count: 400 },
|
|
280
|
+
{ name: 'Pattern Detection', category: 'coding', task_count: 200 },
|
|
281
|
+
],
|
|
282
|
+
codemode: { enabled: true, token_reduction: '~80%', speedup: '~1.5× faster' },
|
|
283
|
+
output: {
|
|
284
|
+
formats: ['JSON', 'Dashboard'],
|
|
285
|
+
template: 'Support Ticket Analysis Report',
|
|
286
|
+
storage: '/outputs/support-analysis/',
|
|
287
|
+
},
|
|
288
|
+
advanced: {
|
|
289
|
+
cost_limit: '$4.00 per run',
|
|
290
|
+
time_limit: '300 seconds',
|
|
291
|
+
max_iterations: 40,
|
|
292
|
+
validation: 'All tickets must receive a priority classification',
|
|
293
|
+
},
|
|
172
294
|
authorizationPolicy: '',
|
|
173
|
-
notifications: {
|
|
295
|
+
notifications: {
|
|
296
|
+
email: 'patricia.j@company.com',
|
|
297
|
+
slack: '#support-analysis',
|
|
298
|
+
},
|
|
174
299
|
memory: 'ephemeral',
|
|
300
|
+
preHooks: undefined,
|
|
301
|
+
postHooks: undefined,
|
|
302
|
+
parameters: undefined,
|
|
303
|
+
subagents: undefined,
|
|
175
304
|
};
|
|
176
305
|
export const AUDIT_INVENTORY_LEVELS_AGENT_SPEC_0_0_1 = {
|
|
177
306
|
id: 'audit-inventory-levels',
|
|
@@ -180,11 +309,20 @@ export const AUDIT_INVENTORY_LEVELS_AGENT_SPEC_0_0_1 = {
|
|
|
180
309
|
description: `A multi-agent team that monitors inventory levels across warehouses, detects discrepancies between physical and system counts, forecasts demand by SKU, and generates automated reorder recommendations.`,
|
|
181
310
|
tags: ['finance', 'automation', 'inventory', 'supply-chain'],
|
|
182
311
|
enabled: false,
|
|
183
|
-
model: 'bedrock:us.anthropic.claude-
|
|
184
|
-
mcpServers: [
|
|
185
|
-
|
|
312
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
313
|
+
mcpServers: [
|
|
314
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
315
|
+
MCP_SERVER_MAP['slack:0.0.1'],
|
|
316
|
+
],
|
|
317
|
+
skills: [
|
|
318
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
319
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
320
|
+
],
|
|
186
321
|
tools: [],
|
|
187
|
-
frontendTools: [
|
|
322
|
+
frontendTools: [
|
|
323
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
324
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
325
|
+
],
|
|
188
326
|
environmentName: 'ai-agents-env',
|
|
189
327
|
icon: 'package',
|
|
190
328
|
emoji: '📦',
|
|
@@ -205,17 +343,53 @@ export const AUDIT_INVENTORY_LEVELS_AGENT_SPEC_0_0_1 = {
|
|
|
205
343
|
goal: `Monitor inventory levels across all warehouses every 6 hours. Detect discrepancies between system and physical counts, forecast demand by SKU, generate reorder recommendations, and compile audit reports with findings.`,
|
|
206
344
|
protocol: 'vercel-ai',
|
|
207
345
|
uiExtension: 'a2ui',
|
|
208
|
-
trigger: {
|
|
346
|
+
trigger: {
|
|
347
|
+
type: 'schedule',
|
|
348
|
+
cron: '0 */6 * * *',
|
|
349
|
+
description: 'Every 6 hours',
|
|
350
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
351
|
+
},
|
|
209
352
|
modelConfig: undefined,
|
|
210
353
|
mcpServerTools: undefined,
|
|
211
|
-
guardrails: [
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
354
|
+
guardrails: [
|
|
355
|
+
{
|
|
356
|
+
name: 'Google Workspace Agent',
|
|
357
|
+
identity_provider: 'google',
|
|
358
|
+
identity_name: 'inventory-bot@acme.com',
|
|
359
|
+
permissions: {
|
|
360
|
+
'read:data': true,
|
|
361
|
+
'write:data': true,
|
|
362
|
+
'execute:code': true,
|
|
363
|
+
'access:internet': true,
|
|
364
|
+
'send:email': true,
|
|
365
|
+
'deploy:production': false,
|
|
366
|
+
},
|
|
367
|
+
token_limits: { per_run: '100K', per_day: '800K', per_month: '8M' },
|
|
368
|
+
},
|
|
369
|
+
],
|
|
370
|
+
evals: [
|
|
371
|
+
{ name: 'Inventory Accuracy', category: 'coding', task_count: 500 },
|
|
372
|
+
{ name: 'Forecast Precision', category: 'reasoning', task_count: 300 },
|
|
373
|
+
],
|
|
374
|
+
codemode: { enabled: true, token_reduction: '~90%', speedup: '~2× faster' },
|
|
375
|
+
output: {
|
|
376
|
+
formats: ['PDF', 'Spreadsheet', 'Dashboard'],
|
|
377
|
+
template: 'Inventory Audit Report',
|
|
378
|
+
storage: '/outputs/inventory-audit/',
|
|
379
|
+
},
|
|
380
|
+
advanced: {
|
|
381
|
+
cost_limit: '$12.00 per run',
|
|
382
|
+
time_limit: '900 seconds',
|
|
383
|
+
max_iterations: 80,
|
|
384
|
+
validation: 'All warehouse counts must reconcile within 2% tolerance',
|
|
385
|
+
},
|
|
216
386
|
authorizationPolicy: '',
|
|
217
|
-
notifications: {
|
|
387
|
+
notifications: { email: 'linda.m@company.com', slack: '#inventory-ops' },
|
|
218
388
|
memory: 'ephemeral',
|
|
389
|
+
preHooks: undefined,
|
|
390
|
+
postHooks: undefined,
|
|
391
|
+
parameters: undefined,
|
|
392
|
+
subagents: undefined,
|
|
219
393
|
};
|
|
220
394
|
export const AUTOMATE_REGULATORY_REPORTING_AGENT_SPEC_0_0_1 = {
|
|
221
395
|
id: 'automate-regulatory-reporting',
|
|
@@ -224,11 +398,20 @@ export const AUTOMATE_REGULATORY_REPORTING_AGENT_SPEC_0_0_1 = {
|
|
|
224
398
|
description: `A multi-agent team that automates end-to-end regulatory reporting for financial institutions. Ingests data from trading systems, risk engines, and accounting platforms, reconciles positions, computes risk metrics, validates against regulatory rules (Basel III/IV, MiFID II, SOX), and generates submission-ready compliance reports with full audit trails.`,
|
|
225
399
|
tags: ['finance', 'compliance', 'regulatory', 'risk', 'banking', 'audit'],
|
|
226
400
|
enabled: false,
|
|
227
|
-
model: 'bedrock:us.anthropic.claude-
|
|
228
|
-
mcpServers: [
|
|
229
|
-
|
|
401
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
402
|
+
mcpServers: [
|
|
403
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
404
|
+
MCP_SERVER_MAP['slack:0.0.1'],
|
|
405
|
+
],
|
|
406
|
+
skills: [
|
|
407
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
408
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
409
|
+
],
|
|
230
410
|
tools: [],
|
|
231
|
-
frontendTools: [
|
|
411
|
+
frontendTools: [
|
|
412
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
413
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
414
|
+
],
|
|
232
415
|
environmentName: 'ai-agents-env',
|
|
233
416
|
icon: 'shield-check',
|
|
234
417
|
emoji: '🏦',
|
|
@@ -250,17 +433,74 @@ export const AUTOMATE_REGULATORY_REPORTING_AGENT_SPEC_0_0_1 = {
|
|
|
250
433
|
goal: `Automate end-to-end regulatory reporting: ingest data from trading and accounting systems, compute risk-weighted assets and capital ratios, reconcile positions, validate against Basel III/IV, MiFID II, and SOX rules, and generate submission-ready compliance reports with full audit trails.`,
|
|
251
434
|
protocol: 'vercel-ai',
|
|
252
435
|
uiExtension: 'a2ui',
|
|
253
|
-
trigger: {
|
|
436
|
+
trigger: {
|
|
437
|
+
type: 'schedule',
|
|
438
|
+
cron: '0 6 3 * *',
|
|
439
|
+
description: 'Monthly on the 3rd at 06:00 for regulatory reporting deadlines',
|
|
440
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
441
|
+
},
|
|
254
442
|
modelConfig: undefined,
|
|
255
443
|
mcpServerTools: undefined,
|
|
256
|
-
guardrails: [
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
444
|
+
guardrails: [
|
|
445
|
+
{
|
|
446
|
+
name: 'Compliance Data Handler',
|
|
447
|
+
identity_provider: 'datalayer',
|
|
448
|
+
identity_name: 'compliance-bot@acme.com',
|
|
449
|
+
permissions: {
|
|
450
|
+
'read:data': true,
|
|
451
|
+
'write:data': false,
|
|
452
|
+
'execute:code': true,
|
|
453
|
+
'access:internet': false,
|
|
454
|
+
'send:email': false,
|
|
455
|
+
'deploy:production': false,
|
|
456
|
+
},
|
|
457
|
+
data_scope: {
|
|
458
|
+
allowed_systems: [
|
|
459
|
+
'trading-platform',
|
|
460
|
+
'risk-engine',
|
|
461
|
+
'accounting-ledger',
|
|
462
|
+
],
|
|
463
|
+
denied_fields: ['*SSN*', '*TaxId*', '*Password*'],
|
|
464
|
+
},
|
|
465
|
+
data_handling: { pii_detection: true, pii_action: 'redact' },
|
|
466
|
+
token_limits: { per_run: '120K', per_day: '600K', per_month: '6M' },
|
|
467
|
+
},
|
|
468
|
+
],
|
|
469
|
+
evals: [
|
|
470
|
+
{ name: 'Risk Metric Accuracy', category: 'coding', task_count: 500 },
|
|
471
|
+
{
|
|
472
|
+
name: 'Regulatory Rule Compliance',
|
|
473
|
+
category: 'reasoning',
|
|
474
|
+
task_count: 300,
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
name: 'Reconciliation Break Detection',
|
|
478
|
+
category: 'coding',
|
|
479
|
+
task_count: 200,
|
|
480
|
+
},
|
|
481
|
+
],
|
|
482
|
+
codemode: { enabled: true, token_reduction: '~90%', speedup: '~2× faster' },
|
|
483
|
+
output: {
|
|
484
|
+
formats: ['PDF', 'XBRL'],
|
|
485
|
+
template: 'Regulatory Compliance Report',
|
|
486
|
+
storage: '/outputs/regulatory-reporting/',
|
|
487
|
+
},
|
|
488
|
+
advanced: {
|
|
489
|
+
cost_limit: '$15.00 per run',
|
|
490
|
+
time_limit: '1200 seconds',
|
|
491
|
+
max_iterations: 60,
|
|
492
|
+
validation: 'All risk metrics must reconcile with source system totals within 0.01% tolerance. Capital ratios must pass Basel III/IV threshold checks.\n',
|
|
493
|
+
},
|
|
261
494
|
authorizationPolicy: '',
|
|
262
|
-
notifications: {
|
|
495
|
+
notifications: {
|
|
496
|
+
email: 'compliance@company.com',
|
|
497
|
+
slack: '#regulatory-reporting',
|
|
498
|
+
},
|
|
263
499
|
memory: 'ephemeral',
|
|
500
|
+
preHooks: undefined,
|
|
501
|
+
postHooks: undefined,
|
|
502
|
+
parameters: undefined,
|
|
503
|
+
subagents: undefined,
|
|
264
504
|
};
|
|
265
505
|
export const CLASSIFY_ROUTE_EMAILS_AGENT_SPEC_0_0_1 = {
|
|
266
506
|
id: 'classify-route-emails',
|
|
@@ -269,11 +509,17 @@ export const CLASSIFY_ROUTE_EMAILS_AGENT_SPEC_0_0_1 = {
|
|
|
269
509
|
description: `A generic email classification and routing agent. Analyzes incoming emails to determine intent (inquiry, complaint, order, support request), assigns priority (critical, high, medium, low), and routes to the appropriate department queue. Works across any industry with email-based workflows.`,
|
|
270
510
|
tags: ['email', 'classification', 'routing', 'horizontal', 'automation'],
|
|
271
511
|
enabled: false,
|
|
272
|
-
model: 'bedrock:us.anthropic.claude-
|
|
512
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
273
513
|
mcpServers: [MCP_SERVER_MAP['slack:0.0.1']],
|
|
274
|
-
skills: [
|
|
514
|
+
skills: [
|
|
515
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
516
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
517
|
+
],
|
|
275
518
|
tools: [],
|
|
276
|
-
frontendTools: [
|
|
519
|
+
frontendTools: [
|
|
520
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
521
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
522
|
+
],
|
|
277
523
|
environmentName: 'ai-agents-env',
|
|
278
524
|
icon: 'mail',
|
|
279
525
|
emoji: '📬',
|
|
@@ -288,17 +534,67 @@ export const CLASSIFY_ROUTE_EMAILS_AGENT_SPEC_0_0_1 = {
|
|
|
288
534
|
goal: `Classify incoming emails by intent (inquiry, complaint, order, support), assign priority (critical/high/medium/low), extract key entities (sender, subject, account ID, product), and route to the correct department queue. Flag urgent items for immediate human review.`,
|
|
289
535
|
protocol: 'vercel-ai',
|
|
290
536
|
uiExtension: 'a2ui',
|
|
291
|
-
trigger: {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
537
|
+
trigger: {
|
|
538
|
+
type: 'event',
|
|
539
|
+
event: 'email_received',
|
|
540
|
+
description: 'Triggered on each incoming email via webhook',
|
|
541
|
+
prompt: "Handle the 'email_received' event and execute the workflow end-to-end.",
|
|
542
|
+
},
|
|
543
|
+
modelConfig: { temperature: 0.1, max_tokens: 2048 },
|
|
544
|
+
mcpServerTools: [
|
|
545
|
+
{
|
|
546
|
+
server: 'Email Gateway',
|
|
547
|
+
tools: [
|
|
548
|
+
{ name: 'fetch_email', approval: 'auto' },
|
|
549
|
+
{ name: 'parse_headers', approval: 'auto' },
|
|
550
|
+
{ name: 'extract_attachments', approval: 'auto' },
|
|
551
|
+
],
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
server: 'Routing Engine',
|
|
555
|
+
tools: [
|
|
556
|
+
{ name: 'assign_queue', approval: 'auto' },
|
|
557
|
+
{ name: 'set_priority', approval: 'auto' },
|
|
558
|
+
{ name: 'escalate_to_human', approval: 'manual' },
|
|
559
|
+
],
|
|
560
|
+
},
|
|
561
|
+
],
|
|
562
|
+
guardrails: [
|
|
563
|
+
{
|
|
564
|
+
name: 'Default Platform User',
|
|
565
|
+
identity_provider: 'datalayer',
|
|
566
|
+
identity_name: 'email-router@acme.com',
|
|
567
|
+
permissions: {
|
|
568
|
+
'read:data': true,
|
|
569
|
+
'write:data': true,
|
|
570
|
+
'execute:code': false,
|
|
571
|
+
'access:internet': true,
|
|
572
|
+
'send:email': false,
|
|
573
|
+
'deploy:production': false,
|
|
574
|
+
},
|
|
575
|
+
token_limits: { per_run: '10K', per_day: '500K', per_month: '5M' },
|
|
576
|
+
},
|
|
577
|
+
],
|
|
578
|
+
evals: [
|
|
579
|
+
{ name: 'Classification Accuracy', category: 'reasoning', task_count: 500 },
|
|
580
|
+
{ name: 'Priority Detection', category: 'reasoning', task_count: 300 },
|
|
581
|
+
{ name: 'Entity Extraction', category: 'coding', task_count: 400 },
|
|
582
|
+
],
|
|
296
583
|
codemode: undefined,
|
|
297
|
-
output: {
|
|
584
|
+
output: {
|
|
585
|
+
type: 'JSON',
|
|
586
|
+
formats: ['JSON'],
|
|
587
|
+
template: 'email-classification-v1',
|
|
588
|
+
storage: 's3://acme-email-logs/',
|
|
589
|
+
},
|
|
298
590
|
advanced: undefined,
|
|
299
591
|
authorizationPolicy: undefined,
|
|
300
|
-
notifications: {
|
|
592
|
+
notifications: { slack: '#email-routing', email: 'ops@acme.com' },
|
|
301
593
|
memory: 'ephemeral',
|
|
594
|
+
preHooks: undefined,
|
|
595
|
+
postHooks: undefined,
|
|
596
|
+
parameters: undefined,
|
|
597
|
+
subagents: undefined,
|
|
302
598
|
};
|
|
303
599
|
export const COMPREHENSIVE_SALES_ANALYTICS_AGENT_SPEC_0_0_1 = {
|
|
304
600
|
id: 'comprehensive-sales-analytics',
|
|
@@ -307,11 +603,21 @@ export const COMPREHENSIVE_SALES_ANALYTICS_AGENT_SPEC_0_0_1 = {
|
|
|
307
603
|
description: `A multi-agent team that replaces a single KPI monitor with four specialized agents: a Data Collector that pulls real-time CRM metrics, an Anomaly Detector that flags statistical outliers, a Trend Analyzer that identifies patterns and forecasts, and a Report Generator that compiles executive dashboards and sends alerts. Together they deliver deeper insights, faster detection, and richer reporting than any single agent could.`,
|
|
308
604
|
tags: ['sales', 'analytics', 'kpi', 'monitoring', 'horizontal'],
|
|
309
605
|
enabled: false,
|
|
310
|
-
model: 'bedrock:us.anthropic.claude-
|
|
311
|
-
mcpServers: [
|
|
312
|
-
|
|
606
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
607
|
+
mcpServers: [
|
|
608
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
609
|
+
MCP_SERVER_MAP['slack:0.0.1'],
|
|
610
|
+
],
|
|
611
|
+
skills: [
|
|
612
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
613
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
614
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
615
|
+
],
|
|
313
616
|
tools: [],
|
|
314
|
-
frontendTools: [
|
|
617
|
+
frontendTools: [
|
|
618
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
619
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
620
|
+
],
|
|
315
621
|
environmentName: 'ai-agents-env',
|
|
316
622
|
icon: 'graph',
|
|
317
623
|
emoji: '📈',
|
|
@@ -329,14 +635,47 @@ export const COMPREHENSIVE_SALES_ANALYTICS_AGENT_SPEC_0_0_1 = {
|
|
|
329
635
|
trigger: undefined,
|
|
330
636
|
modelConfig: undefined,
|
|
331
637
|
mcpServerTools: undefined,
|
|
332
|
-
guardrails: [
|
|
333
|
-
|
|
638
|
+
guardrails: [
|
|
639
|
+
{
|
|
640
|
+
name: 'Sales Analytics Team',
|
|
641
|
+
identity_provider: 'datalayer',
|
|
642
|
+
identity_name: 'sales-analytics@acme.com',
|
|
643
|
+
permissions: {
|
|
644
|
+
'read:data': true,
|
|
645
|
+
'write:data': true,
|
|
646
|
+
'execute:code': true,
|
|
647
|
+
'access:internet': true,
|
|
648
|
+
'send:email': true,
|
|
649
|
+
'deploy:production': false,
|
|
650
|
+
},
|
|
651
|
+
token_limits: { per_run: '100K', per_day: '1M', per_month: '10M' },
|
|
652
|
+
},
|
|
653
|
+
],
|
|
654
|
+
evals: [
|
|
655
|
+
{ name: 'KPI Accuracy', category: 'coding', task_count: 500 },
|
|
656
|
+
{
|
|
657
|
+
name: 'Anomaly Detection Precision',
|
|
658
|
+
category: 'reasoning',
|
|
659
|
+
task_count: 350,
|
|
660
|
+
},
|
|
661
|
+
{ name: 'Trend Forecast Accuracy', category: 'reasoning', task_count: 300 },
|
|
662
|
+
{ name: 'Report Quality', category: 'reasoning', task_count: 200 },
|
|
663
|
+
],
|
|
334
664
|
codemode: undefined,
|
|
335
|
-
output: {
|
|
665
|
+
output: {
|
|
666
|
+
type: 'PDF',
|
|
667
|
+
formats: ['PDF', 'Dashboard', 'JSON'],
|
|
668
|
+
template: 'executive-sales-dashboard-v2',
|
|
669
|
+
storage: 's3://acme-sales-reports/',
|
|
670
|
+
},
|
|
336
671
|
advanced: undefined,
|
|
337
672
|
authorizationPolicy: undefined,
|
|
338
|
-
notifications: {
|
|
673
|
+
notifications: { slack: '#sales-analytics', email: 'leadership@acme.com' },
|
|
339
674
|
memory: 'ephemeral',
|
|
675
|
+
preHooks: undefined,
|
|
676
|
+
postHooks: undefined,
|
|
677
|
+
parameters: undefined,
|
|
678
|
+
subagents: undefined,
|
|
340
679
|
};
|
|
341
680
|
export const CRAWLER_AGENT_SPEC_0_0_1 = {
|
|
342
681
|
id: 'crawler',
|
|
@@ -347,9 +686,15 @@ export const CRAWLER_AGENT_SPEC_0_0_1 = {
|
|
|
347
686
|
enabled: true,
|
|
348
687
|
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
349
688
|
mcpServers: [MCP_SERVER_MAP['tavily:0.0.1']],
|
|
350
|
-
skills: [
|
|
689
|
+
skills: [
|
|
690
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
691
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
692
|
+
],
|
|
351
693
|
tools: [],
|
|
352
|
-
frontendTools: [
|
|
694
|
+
frontendTools: [
|
|
695
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
696
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
697
|
+
],
|
|
353
698
|
environmentName: 'ai-agents-env',
|
|
354
699
|
icon: 'globe',
|
|
355
700
|
emoji: '🌐',
|
|
@@ -386,7 +731,7 @@ export const CRAWLER_AGENT_SPEC_0_0_1 = {
|
|
|
386
731
|
## 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.
|
|
387
732
|
`,
|
|
388
733
|
goal: undefined,
|
|
389
|
-
protocol:
|
|
734
|
+
protocol: undefined,
|
|
390
735
|
uiExtension: undefined,
|
|
391
736
|
trigger: undefined,
|
|
392
737
|
modelConfig: undefined,
|
|
@@ -399,6 +744,10 @@ export const CRAWLER_AGENT_SPEC_0_0_1 = {
|
|
|
399
744
|
authorizationPolicy: undefined,
|
|
400
745
|
notifications: undefined,
|
|
401
746
|
memory: 'ephemeral',
|
|
747
|
+
preHooks: undefined,
|
|
748
|
+
postHooks: undefined,
|
|
749
|
+
parameters: undefined,
|
|
750
|
+
subagents: undefined,
|
|
402
751
|
};
|
|
403
752
|
export const DATA_ACQUISITION_AGENT_SPEC_0_0_1 = {
|
|
404
753
|
id: 'data-acquisition',
|
|
@@ -408,10 +757,20 @@ export const DATA_ACQUISITION_AGENT_SPEC_0_0_1 = {
|
|
|
408
757
|
tags: ['data', 'acquisition', 'kaggle', 'filesystem'],
|
|
409
758
|
enabled: true,
|
|
410
759
|
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
411
|
-
mcpServers: [
|
|
412
|
-
|
|
760
|
+
mcpServers: [
|
|
761
|
+
MCP_SERVER_MAP['kaggle:0.0.1'],
|
|
762
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
763
|
+
MCP_SERVER_MAP['tavily:0.0.1'],
|
|
764
|
+
],
|
|
765
|
+
skills: [
|
|
766
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
767
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
768
|
+
],
|
|
413
769
|
tools: [],
|
|
414
|
-
frontendTools: [
|
|
770
|
+
frontendTools: [
|
|
771
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
772
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
773
|
+
],
|
|
415
774
|
environmentName: 'ai-agents-env',
|
|
416
775
|
icon: 'database',
|
|
417
776
|
emoji: '📊',
|
|
@@ -448,7 +807,7 @@ export const DATA_ACQUISITION_AGENT_SPEC_0_0_1 = {
|
|
|
448
807
|
## 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.
|
|
449
808
|
`,
|
|
450
809
|
goal: undefined,
|
|
451
|
-
protocol:
|
|
810
|
+
protocol: undefined,
|
|
452
811
|
uiExtension: undefined,
|
|
453
812
|
trigger: undefined,
|
|
454
813
|
modelConfig: undefined,
|
|
@@ -461,19 +820,87 @@ export const DATA_ACQUISITION_AGENT_SPEC_0_0_1 = {
|
|
|
461
820
|
authorizationPolicy: undefined,
|
|
462
821
|
notifications: undefined,
|
|
463
822
|
memory: 'ephemeral',
|
|
823
|
+
preHooks: undefined,
|
|
824
|
+
postHooks: undefined,
|
|
825
|
+
parameters: undefined,
|
|
826
|
+
subagents: undefined,
|
|
827
|
+
};
|
|
828
|
+
export const DATALAYER_AGENT_SPEC_0_0_1 = {
|
|
829
|
+
id: 'datalayer-agent',
|
|
830
|
+
version: '0.0.1',
|
|
831
|
+
name: 'Datalayer Agent',
|
|
832
|
+
description: `Datalayer-focused assistant that can inspect the authenticated user profile using datalayer-skills.`,
|
|
833
|
+
tags: ['datalayer', 'iam', 'profile', 'identity'],
|
|
834
|
+
enabled: false,
|
|
835
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
836
|
+
mcpServers: [],
|
|
837
|
+
skills: [toAgentSkillSpec(SKILL_MAP['datalayer-whoami:0.0.1'])],
|
|
838
|
+
tools: [],
|
|
839
|
+
frontendTools: [
|
|
840
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
841
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
842
|
+
],
|
|
843
|
+
environmentName: 'ai-agents-env',
|
|
844
|
+
icon: 'person',
|
|
845
|
+
emoji: '👤',
|
|
846
|
+
color: '#14B8A6',
|
|
847
|
+
suggestions: [
|
|
848
|
+
'Who am I on Datalayer?',
|
|
849
|
+
'Show my Datalayer profile details',
|
|
850
|
+
'What roles do I currently have in Datalayer?',
|
|
851
|
+
],
|
|
852
|
+
welcomeMessage: "Hi! I'm the Datalayer Agent. I can help you retrieve and summarize your authenticated Datalayer profile.\n",
|
|
853
|
+
welcomeNotebook: undefined,
|
|
854
|
+
welcomeDocument: undefined,
|
|
855
|
+
sandboxVariant: 'jupyter',
|
|
856
|
+
systemPrompt: `You are a Datalayer assistant with access to the datalayer-whoami skill. Use it to retrieve the authenticated user's profile when requested. If DATALAYER_API_KEY is missing, clearly ask the user to configure it.
|
|
857
|
+
`,
|
|
858
|
+
systemPromptCodemodeAddons: undefined,
|
|
859
|
+
goal: undefined,
|
|
860
|
+
protocol: undefined,
|
|
861
|
+
uiExtension: undefined,
|
|
862
|
+
trigger: undefined,
|
|
863
|
+
modelConfig: undefined,
|
|
864
|
+
mcpServerTools: undefined,
|
|
865
|
+
guardrails: undefined,
|
|
866
|
+
evals: undefined,
|
|
867
|
+
codemode: undefined,
|
|
868
|
+
output: undefined,
|
|
869
|
+
advanced: undefined,
|
|
870
|
+
authorizationPolicy: undefined,
|
|
871
|
+
notifications: undefined,
|
|
872
|
+
memory: 'ephemeral',
|
|
873
|
+
preHooks: { packages: ['datalayer_skills>=0.1.0'] },
|
|
874
|
+
postHooks: undefined,
|
|
875
|
+
parameters: undefined,
|
|
876
|
+
subagents: undefined,
|
|
464
877
|
};
|
|
465
878
|
export const DEMO_FULL_AGENT_SPEC_0_0_1 = {
|
|
466
879
|
id: 'demo-full',
|
|
467
880
|
version: '0.0.1',
|
|
468
881
|
name: 'Demo with MCP, Skills, Tool Approvals...',
|
|
469
|
-
description: `A full-featured demonstration agent showcasing MCP servers (Tavily web search), skills (GitHub, PDF, crawl, events, text summarizer, jokes), human-in-the-loop tool approval, and frontend tools (Jupyter notebooks, Lexical documents).`,
|
|
882
|
+
description: `A full-featured demonstration agent showcasing MCP servers (Tavily web search), skills (GitHub, PDF, crawl, events, text summarizer, jokes, datalayer whoami), human-in-the-loop tool approval, and frontend tools (Jupyter notebooks, Lexical documents).`,
|
|
470
883
|
tags: ['demo', 'approval', 'human-in-the-loop', 'utility'],
|
|
471
884
|
enabled: true,
|
|
472
885
|
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
473
886
|
mcpServers: [MCP_SERVER_MAP['tavily:0.0.1']],
|
|
474
|
-
skills: [
|
|
475
|
-
|
|
476
|
-
|
|
887
|
+
skills: [
|
|
888
|
+
toAgentSkillSpec(SKILL_MAP['crawl:0.0.1']),
|
|
889
|
+
toAgentSkillSpec(SKILL_MAP['datalayer-whoami:0.0.1']),
|
|
890
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
891
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
892
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
893
|
+
toAgentSkillSpec(SKILL_MAP['text-summarizer:0.0.1']),
|
|
894
|
+
toAgentSkillSpec(SKILL_MAP['jokes:0.0.1']),
|
|
895
|
+
],
|
|
896
|
+
tools: [
|
|
897
|
+
TOOL_MAP['runtime-echo:0.0.1'],
|
|
898
|
+
TOOL_MAP['runtime-sensitive-echo:0.0.1'],
|
|
899
|
+
],
|
|
900
|
+
frontendTools: [
|
|
901
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
902
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
903
|
+
],
|
|
477
904
|
environmentName: 'ai-agents-env',
|
|
478
905
|
icon: 'shield',
|
|
479
906
|
emoji: '🛡️',
|
|
@@ -482,21 +909,272 @@ export const DEMO_FULL_AGENT_SPEC_0_0_1 = {
|
|
|
482
909
|
'list your tools',
|
|
483
910
|
'Search the web for the latest news on AI agents using Tavily.',
|
|
484
911
|
'List my public GitHub repositories and summarize the most active ones.',
|
|
485
|
-
'
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
912
|
+
'Who am I on Datalayer? Summarize my profile.',
|
|
913
|
+
"Echo with text 'hello' and reason 'audit', then share the result.",
|
|
914
|
+
"Echo 'hello world' and share the result in a short sentence.",
|
|
915
|
+
"Call the runtime_sensitive_echo tool with text 'hello' and reason 'audit', then reply with the tool result.",
|
|
916
|
+
"Call the runtime_echo tool with text 'hello world', then reply with the tool result.",
|
|
489
917
|
'Tell me a joke using your skills.',
|
|
490
918
|
],
|
|
491
|
-
welcomeMessage: "Hi! I'm the Tool Approval Demo agent. I have two echo tools — one runs immediately, the other requires your approval before executing. I can also search the web with Tavily
|
|
919
|
+
welcomeMessage: "Hi! I'm the Tool Approval Demo agent. I have two echo tools — one runs immediately, the other requires your approval before executing. I can also search the web with Tavily, tell jokes, and retrieve your Datalayer profile.\n",
|
|
492
920
|
welcomeNotebook: undefined,
|
|
493
921
|
welcomeDocument: undefined,
|
|
494
922
|
sandboxVariant: 'jupyter',
|
|
495
923
|
systemPrompt: `You are a helpful assistant demonstrating the tool approval workflow. You have access to two runtime tools: - runtime_echo: echoes text back immediately, no approval required. - runtime_sensitive_echo: echoes text with a reason, but requires human approval before executing. You also have access to the Tavily MCP server for web search. When asked to list your tools, briefly describe each one and ask the user which to run. IMPORTANT RUNTIME RULE: After every tool call, you MUST produce a final plain-text response summarizing the tool result. Never end your turn with only a tool call. If the user asks for "tool call only" or says "do not write Python code", still run the tool and then provide a short natural-language result message. The final assistant output must be text (string), not only tool calls. Do not call list_skills, load_skill, read_skill_resource, or run_skill_script.
|
|
924
|
+
`,
|
|
925
|
+
systemPromptCodemodeAddons: undefined,
|
|
926
|
+
goal: undefined,
|
|
927
|
+
protocol: undefined,
|
|
928
|
+
uiExtension: undefined,
|
|
929
|
+
trigger: undefined,
|
|
930
|
+
modelConfig: undefined,
|
|
931
|
+
mcpServerTools: undefined,
|
|
932
|
+
guardrails: undefined,
|
|
933
|
+
evals: undefined,
|
|
934
|
+
codemode: undefined,
|
|
935
|
+
output: undefined,
|
|
936
|
+
advanced: undefined,
|
|
937
|
+
authorizationPolicy: undefined,
|
|
938
|
+
notifications: undefined,
|
|
939
|
+
memory: 'ephemeral',
|
|
940
|
+
preHooks: { packages: ['datalayer_skills>=0.1.0'] },
|
|
941
|
+
postHooks: undefined,
|
|
942
|
+
parameters: undefined,
|
|
943
|
+
subagents: undefined,
|
|
944
|
+
};
|
|
945
|
+
export const DEMO_GUARDRAILS_AGENT_SPEC_0_0_1 = {
|
|
946
|
+
id: 'demo-guardrails',
|
|
947
|
+
version: '0.0.1',
|
|
948
|
+
name: 'Demo Guardrails (Cost + Approval)',
|
|
949
|
+
description: `Demonstration agent for guardrails with a strict per-run cost budget and human-in-the-loop approval on sensitive runtime tools.`,
|
|
950
|
+
tags: ['demo', 'guardrails', 'cost', 'approval'],
|
|
951
|
+
enabled: true,
|
|
952
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
953
|
+
mcpServers: [],
|
|
954
|
+
skills: [
|
|
955
|
+
toAgentSkillSpec(SKILL_MAP['jokes:0.0.1']),
|
|
956
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
957
|
+
],
|
|
958
|
+
tools: [
|
|
959
|
+
TOOL_MAP['runtime-echo:0.0.1'],
|
|
960
|
+
TOOL_MAP['runtime-sensitive-echo:0.0.1'],
|
|
961
|
+
],
|
|
962
|
+
frontendTools: [
|
|
963
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
964
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
965
|
+
],
|
|
966
|
+
environmentName: 'ai-agents-env',
|
|
967
|
+
icon: 'shield-check',
|
|
968
|
+
emoji: '🛡️',
|
|
969
|
+
color: '#1F883D',
|
|
970
|
+
suggestions: [
|
|
971
|
+
"Call runtime_echo with text 'hello world' and summarize the result.",
|
|
972
|
+
"Call runtime_sensitive_echo with text 'audit me' and reason 'governance check'.",
|
|
973
|
+
'Tell me a joke and keep the answer under 2 sentences.',
|
|
974
|
+
],
|
|
975
|
+
welcomeMessage: 'Hi! I am the Guardrails demo agent. I enforce a strict per-run cost budget and require manual approval for sensitive tool calls.\n',
|
|
976
|
+
welcomeNotebook: undefined,
|
|
977
|
+
welcomeDocument: undefined,
|
|
978
|
+
sandboxVariant: 'jupyter',
|
|
979
|
+
systemPrompt: 'You are a guardrails demonstration assistant. You can call runtime_echo directly. You must request human approval before running runtime_sensitive_echo. Always provide a concise plain-text summary after each tool execution.\n',
|
|
980
|
+
systemPromptCodemodeAddons: undefined,
|
|
981
|
+
goal: undefined,
|
|
982
|
+
protocol: undefined,
|
|
983
|
+
uiExtension: undefined,
|
|
984
|
+
trigger: undefined,
|
|
985
|
+
modelConfig: undefined,
|
|
986
|
+
mcpServerTools: undefined,
|
|
987
|
+
guardrails: [
|
|
988
|
+
{
|
|
989
|
+
name: 'Guardrails Demo User',
|
|
990
|
+
identity_provider: 'datalayer',
|
|
991
|
+
identity_name: 'guardrails-demo@acme.com',
|
|
992
|
+
permissions: {
|
|
993
|
+
'read:data': true,
|
|
994
|
+
'write:data': false,
|
|
995
|
+
'execute:code': true,
|
|
996
|
+
'access:internet': false,
|
|
997
|
+
'send:email': false,
|
|
998
|
+
'deploy:production': false,
|
|
999
|
+
},
|
|
1000
|
+
token_limits: {
|
|
1001
|
+
per_run: '25K',
|
|
1002
|
+
per_day: '150K',
|
|
1003
|
+
per_month: '1M',
|
|
1004
|
+
},
|
|
1005
|
+
cost_budget: {
|
|
1006
|
+
per_run_usd: 0.01,
|
|
1007
|
+
on_budget_exceeded: 'stop',
|
|
1008
|
+
},
|
|
1009
|
+
tool_approval: {
|
|
1010
|
+
tools: ['runtime[-_]sensitive[-_]echo'],
|
|
1011
|
+
timeout: '0h5m0s',
|
|
1012
|
+
},
|
|
1013
|
+
},
|
|
1014
|
+
],
|
|
1015
|
+
evals: undefined,
|
|
1016
|
+
codemode: undefined,
|
|
1017
|
+
output: undefined,
|
|
1018
|
+
advanced: undefined,
|
|
1019
|
+
authorizationPolicy: undefined,
|
|
1020
|
+
notifications: undefined,
|
|
1021
|
+
memory: 'ephemeral',
|
|
1022
|
+
preHooks: undefined,
|
|
1023
|
+
postHooks: undefined,
|
|
1024
|
+
parameters: undefined,
|
|
1025
|
+
subagents: undefined,
|
|
1026
|
+
};
|
|
1027
|
+
export const DEMO_HOOKS_AGENT_SPEC_0_0_1 = {
|
|
1028
|
+
id: 'demo-hooks',
|
|
1029
|
+
version: '0.0.1',
|
|
1030
|
+
name: 'Demo Hooks Agent',
|
|
1031
|
+
description: `Demonstrates pre-hooks and post-hooks executed in the sandbox lifecycle.`,
|
|
1032
|
+
tags: ['demo', 'hooks', 'lifecycle'],
|
|
1033
|
+
enabled: true,
|
|
1034
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1035
|
+
mcpServers: [],
|
|
1036
|
+
skills: [],
|
|
1037
|
+
tools: [TOOL_MAP['runtime-echo:0.0.1']],
|
|
1038
|
+
frontendTools: [],
|
|
1039
|
+
environmentName: 'ai-agents-env',
|
|
1040
|
+
icon: 'zap',
|
|
1041
|
+
emoji: '🪝',
|
|
1042
|
+
color: '#0E7490',
|
|
1043
|
+
suggestions: [
|
|
1044
|
+
'Read the pre-hook marker file at /tmp/agent_runtimes_pre_hook_demo.txt using execute_code.',
|
|
1045
|
+
'Print the hook_ran_at and hook_name variables that the pre-hook set in the sandbox.',
|
|
1046
|
+
"Run execute_code to verify that the 'rich' package was installed by the pre-hook.",
|
|
1047
|
+
'Show me all variables that the pre-hook defined in the sandbox namespace.',
|
|
1048
|
+
],
|
|
1049
|
+
welcomeMessage: "I ran a pre-hook before starting up. It installed the 'rich' package, wrote a marker file, and set several sandbox variables (hook_name, hook_ran_at, hook_env). Ask me to read the file or inspect those variables.\n",
|
|
1050
|
+
welcomeNotebook: undefined,
|
|
1051
|
+
welcomeDocument: undefined,
|
|
1052
|
+
sandboxVariant: 'eval',
|
|
1053
|
+
systemPrompt: `You are a demo assistant for lifecycle hooks.
|
|
1054
|
+
The sandbox pre-hook ran before this agent started and did three things:
|
|
1055
|
+
1. Installed the Python package 'rich' (pip install). 2. Wrote a UTF-8 marker file to /tmp/agent_runtimes_pre_hook_demo.txt
|
|
1056
|
+
with the content: "pre-hook executed for demo-hooks at <timestamp>".
|
|
1057
|
+
3. Defined these Python variables in the sandbox namespace:
|
|
1058
|
+
- hook_name (str) - "demo-hooks:pre"
|
|
1059
|
+
- hook_ran_at (str) - ISO-8601 timestamp of when the pre-hook ran
|
|
1060
|
+
- hook_env (dict) - subset of os.environ captured at hook time
|
|
1061
|
+
|
|
1062
|
+
A post-hook is also configured — it will write /tmp/agent_runtimes_post_hook_demo.txt when the agent shuts down.
|
|
1063
|
+
When the user asks about hooks, use execute_code to show concrete evidence: read the marker file, print the variables, or import rich to confirm it was installed.
|
|
1064
|
+
`,
|
|
1065
|
+
systemPromptCodemodeAddons: undefined,
|
|
1066
|
+
goal: undefined,
|
|
1067
|
+
protocol: undefined,
|
|
1068
|
+
uiExtension: undefined,
|
|
1069
|
+
trigger: undefined,
|
|
1070
|
+
modelConfig: undefined,
|
|
1071
|
+
mcpServerTools: undefined,
|
|
1072
|
+
guardrails: undefined,
|
|
1073
|
+
evals: undefined,
|
|
1074
|
+
codemode: undefined,
|
|
1075
|
+
output: undefined,
|
|
1076
|
+
advanced: undefined,
|
|
1077
|
+
authorizationPolicy: undefined,
|
|
1078
|
+
notifications: undefined,
|
|
1079
|
+
memory: 'ephemeral',
|
|
1080
|
+
preHooks: {
|
|
1081
|
+
packages: ['rich'],
|
|
1082
|
+
sandbox: [
|
|
1083
|
+
'import datetime\nimport os\nfrom pathlib import Path\n\nhook_name = "demo-hooks:pre"\nhook_ran_at = datetime.datetime.now().isoformat()\nhook_env = {\n k: os.environ[k]\n for k in ("PATH", "HOME", "DATALAYER_CODE_SANDBOX_VARIANT")\n if k in os.environ\n}\n\nPath(\'/tmp/agent_runtimes_pre_hook_demo.txt\').write_text(\n f\'pre-hook executed for demo-hooks at {hook_ran_at}\\n\',\n encoding=\'utf-8\',\n)\nprint(f"[demo-hooks] pre-hook done: hook_ran_at={hook_ran_at!r}")\n',
|
|
1084
|
+
],
|
|
1085
|
+
},
|
|
1086
|
+
postHooks: {
|
|
1087
|
+
sandbox: [
|
|
1088
|
+
"import datetime\nfrom pathlib import Path\n\npost_ran_at = datetime.datetime.now().isoformat()\nPath('/tmp/agent_runtimes_post_hook_demo.txt').write_text(\n f'post-hook executed for demo-hooks at {post_ran_at}\\n',\n encoding='utf-8',\n)\nprint(f\"[demo-hooks] post-hook done: post_ran_at={post_ran_at!r}\")\n",
|
|
1089
|
+
],
|
|
1090
|
+
},
|
|
1091
|
+
parameters: undefined,
|
|
1092
|
+
subagents: undefined,
|
|
1093
|
+
};
|
|
1094
|
+
export const DEMO_MCP_AGENT_SPEC_0_0_1 = {
|
|
1095
|
+
id: 'demo-mcp',
|
|
1096
|
+
version: '0.0.1',
|
|
1097
|
+
name: 'Demo MCP',
|
|
1098
|
+
description: `Demo agent using MCP servers directly (without codemode conversion).`,
|
|
1099
|
+
tags: ['demo', 'mcp', 'tavily'],
|
|
1100
|
+
enabled: true,
|
|
1101
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1102
|
+
mcpServers: [MCP_SERVER_MAP['tavily:0.0.1']],
|
|
1103
|
+
skills: [toAgentSkillSpec(SKILL_MAP['jokes:0.0.1'])],
|
|
1104
|
+
tools: [],
|
|
1105
|
+
frontendTools: [
|
|
1106
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1107
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1108
|
+
],
|
|
1109
|
+
environmentName: 'ai-agents-env',
|
|
1110
|
+
icon: 'search',
|
|
1111
|
+
emoji: '🔍',
|
|
1112
|
+
color: '#0969DA',
|
|
1113
|
+
suggestions: [
|
|
1114
|
+
'Search the web for recent updates about MCP and summarize key findings',
|
|
1115
|
+
],
|
|
1116
|
+
welcomeMessage: "Hi! I'm the MCP demo agent. I use MCP tools directly without codemode.\n",
|
|
1117
|
+
welcomeNotebook: undefined,
|
|
1118
|
+
welcomeDocument: undefined,
|
|
1119
|
+
sandboxVariant: undefined,
|
|
1120
|
+
systemPrompt: `You are a helpful assistant with access to MCP tools. Use Tavily MCP tools to retrieve web information when needed. Do not claim codemode capabilities.
|
|
496
1121
|
`,
|
|
497
1122
|
systemPromptCodemodeAddons: undefined,
|
|
498
1123
|
goal: undefined,
|
|
499
1124
|
protocol: 'vercel-ai',
|
|
1125
|
+
uiExtension: 'a2ui',
|
|
1126
|
+
trigger: undefined,
|
|
1127
|
+
modelConfig: undefined,
|
|
1128
|
+
mcpServerTools: undefined,
|
|
1129
|
+
guardrails: undefined,
|
|
1130
|
+
evals: undefined,
|
|
1131
|
+
codemode: { enabled: false },
|
|
1132
|
+
output: undefined,
|
|
1133
|
+
advanced: undefined,
|
|
1134
|
+
authorizationPolicy: undefined,
|
|
1135
|
+
notifications: undefined,
|
|
1136
|
+
memory: 'ephemeral',
|
|
1137
|
+
preHooks: undefined,
|
|
1138
|
+
postHooks: undefined,
|
|
1139
|
+
parameters: undefined,
|
|
1140
|
+
subagents: undefined,
|
|
1141
|
+
};
|
|
1142
|
+
export const DEMO_MONITORING_AGENT_SPEC_0_0_1 = {
|
|
1143
|
+
id: 'demo-monitoring',
|
|
1144
|
+
version: '0.0.1',
|
|
1145
|
+
name: 'Demo Monitoring Agent',
|
|
1146
|
+
description: `Monitoring-focused demo agent with Tavily MCP tools and the datalayer-skills whoami capability for profile-aware assistance.`,
|
|
1147
|
+
tags: ['demo', 'monitoring', 'mcp', 'tavily', 'datalayer-skills'],
|
|
1148
|
+
enabled: true,
|
|
1149
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1150
|
+
mcpServers: [MCP_SERVER_MAP['tavily:0.0.1']],
|
|
1151
|
+
skills: [
|
|
1152
|
+
toAgentSkillSpec(SKILL_MAP['datalayer-whoami:0.0.1']),
|
|
1153
|
+
toAgentSkillSpec(SKILL_MAP['jokes:0.0.1']),
|
|
1154
|
+
],
|
|
1155
|
+
tools: [],
|
|
1156
|
+
frontendTools: [
|
|
1157
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1158
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1159
|
+
],
|
|
1160
|
+
environmentName: 'ai-agents-env',
|
|
1161
|
+
icon: 'graph',
|
|
1162
|
+
emoji: '📈',
|
|
1163
|
+
color: '#0EA5E9',
|
|
1164
|
+
suggestions: [
|
|
1165
|
+
'Search the web for recent AI observability updates using Tavily and summarize the highlights.',
|
|
1166
|
+
'Who am I on Datalayer and what can I monitor in this session?',
|
|
1167
|
+
'Explain my last turn token and cost behavior in a concise summary.',
|
|
1168
|
+
],
|
|
1169
|
+
welcomeMessage: "Hi! I'm the Monitoring Demo agent. I can use Tavily for web context and datalayer-skills to inspect your authenticated Datalayer identity.\n",
|
|
1170
|
+
welcomeNotebook: undefined,
|
|
1171
|
+
welcomeDocument: undefined,
|
|
1172
|
+
sandboxVariant: 'jupyter',
|
|
1173
|
+
systemPrompt: `You are a monitoring-oriented assistant. Use Tavily MCP tools for current web information when useful. Use the datalayer-whoami skill when the user asks about identity, profile, or account context. Keep explanations concise and practical.
|
|
1174
|
+
`,
|
|
1175
|
+
systemPromptCodemodeAddons: undefined,
|
|
1176
|
+
goal: undefined,
|
|
1177
|
+
protocol: undefined,
|
|
500
1178
|
uiExtension: undefined,
|
|
501
1179
|
trigger: undefined,
|
|
502
1180
|
modelConfig: undefined,
|
|
@@ -509,6 +1187,10 @@ export const DEMO_FULL_AGENT_SPEC_0_0_1 = {
|
|
|
509
1187
|
authorizationPolicy: undefined,
|
|
510
1188
|
notifications: undefined,
|
|
511
1189
|
memory: 'ephemeral',
|
|
1190
|
+
preHooks: { packages: ['datalayer_skills>=0.1.0'] },
|
|
1191
|
+
postHooks: undefined,
|
|
1192
|
+
parameters: undefined,
|
|
1193
|
+
subagents: undefined,
|
|
512
1194
|
};
|
|
513
1195
|
export const DEMO_ONE_TRIGGER_APPROVAL_AGENT_SPEC_0_0_1 = {
|
|
514
1196
|
id: 'demo-one-trigger-approval',
|
|
@@ -530,23 +1212,31 @@ export const DEMO_ONE_TRIGGER_APPROVAL_AGENT_SPEC_0_0_1 = {
|
|
|
530
1212
|
welcomeMessage: undefined,
|
|
531
1213
|
welcomeNotebook: undefined,
|
|
532
1214
|
welcomeDocument: undefined,
|
|
533
|
-
sandboxVariant:
|
|
1215
|
+
sandboxVariant: undefined,
|
|
534
1216
|
systemPrompt: undefined,
|
|
535
1217
|
systemPromptCodemodeAddons: undefined,
|
|
536
|
-
goal: `
|
|
537
|
-
protocol:
|
|
1218
|
+
goal: `Use the runtime_sensitive_echo tool once.`,
|
|
1219
|
+
protocol: undefined,
|
|
538
1220
|
uiExtension: undefined,
|
|
539
|
-
trigger: {
|
|
1221
|
+
trigger: {
|
|
1222
|
+
type: 'once',
|
|
1223
|
+
description: 'Run once with approval and terminate',
|
|
1224
|
+
prompt: 'Use the runtime_sensitive_echo tool once.',
|
|
1225
|
+
},
|
|
540
1226
|
modelConfig: undefined,
|
|
541
1227
|
mcpServerTools: undefined,
|
|
542
1228
|
guardrails: undefined,
|
|
543
1229
|
evals: undefined,
|
|
544
|
-
codemode:
|
|
1230
|
+
codemode: { enabled: false },
|
|
545
1231
|
output: undefined,
|
|
546
1232
|
advanced: undefined,
|
|
547
1233
|
authorizationPolicy: undefined,
|
|
548
1234
|
notifications: undefined,
|
|
549
1235
|
memory: 'ephemeral',
|
|
1236
|
+
preHooks: undefined,
|
|
1237
|
+
postHooks: undefined,
|
|
1238
|
+
parameters: undefined,
|
|
1239
|
+
subagents: undefined,
|
|
550
1240
|
};
|
|
551
1241
|
export const DEMO_ONE_TRIGGER_AGENT_SPEC_0_0_1 = {
|
|
552
1242
|
id: 'demo-one-trigger',
|
|
@@ -557,7 +1247,10 @@ export const DEMO_ONE_TRIGGER_AGENT_SPEC_0_0_1 = {
|
|
|
557
1247
|
enabled: true,
|
|
558
1248
|
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
559
1249
|
mcpServers: [],
|
|
560
|
-
skills: [
|
|
1250
|
+
skills: [
|
|
1251
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
1252
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
1253
|
+
],
|
|
561
1254
|
tools: [TOOL_MAP['runtime-echo:0.0.1']],
|
|
562
1255
|
frontendTools: [FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1']],
|
|
563
1256
|
environmentName: 'ai-agents-env',
|
|
@@ -572,9 +1265,13 @@ export const DEMO_ONE_TRIGGER_AGENT_SPEC_0_0_1 = {
|
|
|
572
1265
|
systemPrompt: undefined,
|
|
573
1266
|
systemPromptCodemodeAddons: undefined,
|
|
574
1267
|
goal: `Run a one-shot task: list the user's top 3 public and top 3 private GitHub repositories, ranked by recent activity, and provide a brief summary of each.`,
|
|
575
|
-
protocol:
|
|
1268
|
+
protocol: undefined,
|
|
576
1269
|
uiExtension: undefined,
|
|
577
|
-
trigger: {
|
|
1270
|
+
trigger: {
|
|
1271
|
+
type: 'once',
|
|
1272
|
+
description: 'Run once and terminate',
|
|
1273
|
+
prompt: "List the user's top 3 public and top 3 private GitHub repositories, ranked by recent activity, and provide a brief summary of each.",
|
|
1274
|
+
},
|
|
578
1275
|
modelConfig: undefined,
|
|
579
1276
|
mcpServerTools: undefined,
|
|
580
1277
|
guardrails: undefined,
|
|
@@ -585,6 +1282,142 @@ export const DEMO_ONE_TRIGGER_AGENT_SPEC_0_0_1 = {
|
|
|
585
1282
|
authorizationPolicy: undefined,
|
|
586
1283
|
notifications: undefined,
|
|
587
1284
|
memory: 'ephemeral',
|
|
1285
|
+
preHooks: undefined,
|
|
1286
|
+
postHooks: undefined,
|
|
1287
|
+
parameters: undefined,
|
|
1288
|
+
subagents: undefined,
|
|
1289
|
+
};
|
|
1290
|
+
export const DEMO_OUTPUTS_AGENT_SPEC_0_0_1 = {
|
|
1291
|
+
id: 'demo-outputs',
|
|
1292
|
+
version: '0.0.1',
|
|
1293
|
+
name: 'Outputs Demo Agent',
|
|
1294
|
+
description: `Demonstrates rich output rendering. Ask it to produce a Markdown table, a JSON payload, an ASCII/ECharts chart spec, or a downloadable file — the Outputs panel will auto-switch to the matching tab.`,
|
|
1295
|
+
tags: ['demo', 'outputs', 'rendering'],
|
|
1296
|
+
enabled: true,
|
|
1297
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1298
|
+
mcpServers: [],
|
|
1299
|
+
skills: [toAgentSkillSpec(SKILL_MAP['events:0.0.1'])],
|
|
1300
|
+
tools: [TOOL_MAP['runtime-echo:0.0.1']],
|
|
1301
|
+
frontendTools: [
|
|
1302
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1303
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1304
|
+
],
|
|
1305
|
+
environmentName: 'ai-agents-env',
|
|
1306
|
+
icon: 'graph',
|
|
1307
|
+
emoji: '📤',
|
|
1308
|
+
color: '#8B5CF6',
|
|
1309
|
+
suggestions: [
|
|
1310
|
+
'Generate a Markdown table of the top 5 US cities by population, with columns City, State, Population.',
|
|
1311
|
+
'Return a JSON object describing a fictitious product catalog with 3 items (id, name, price, tags).',
|
|
1312
|
+
'Produce a bar chart ECharts spec (JSON) showing monthly sales for Jan–Jun.',
|
|
1313
|
+
'Create a downloadable CSV file with sample sales data for the last 7 days and output it inside a ```csv fenced block named sales.csv.',
|
|
1314
|
+
],
|
|
1315
|
+
welcomeMessage: 'Hi! I render rich outputs. Try one of the suggestions to produce a Markdown table, JSON, a chart spec, or a downloadable file — the side panel will switch to the matching tab automatically.\n',
|
|
1316
|
+
welcomeNotebook: undefined,
|
|
1317
|
+
welcomeDocument: undefined,
|
|
1318
|
+
sandboxVariant: 'jupyter',
|
|
1319
|
+
systemPrompt: `You are an Outputs Demo Agent. Your job is to showcase rich output rendering. For every user request, pick exactly ONE of the following output formats and produce the content inside a single fenced code block so the UI can detect and render it:
|
|
1320
|
+
|
|
1321
|
+
1. TABLE — a GitHub-flavored Markdown table (pipe syntax). No fences.
|
|
1322
|
+
2. JSON — a valid JSON object inside a \`\`\`json fenced block.
|
|
1323
|
+
3. CHART — an ECharts \`option\` JSON spec inside a \`\`\`json fenced
|
|
1324
|
+
block whose first line is \`// chart\`. Must include
|
|
1325
|
+
\`xAxis\`, \`yAxis\`, and \`series\`.
|
|
1326
|
+
4. FILE — a downloadable text artifact inside a fenced block whose
|
|
1327
|
+
info string is the file extension (e.g. \`\`\`csv,
|
|
1328
|
+
\`\`\`md, \`\`\`txt). Start the block with a comment line
|
|
1329
|
+
\`# filename: <name.ext>\` so the UI can label the file.
|
|
1330
|
+
|
|
1331
|
+
Always add a 1–2 sentence natural-language preamble before the fenced block (or before the Markdown table). Never mix two output types in a single response. Keep the payloads small (≤ 30 rows / ≤ 2 KB).
|
|
1332
|
+
`,
|
|
1333
|
+
systemPromptCodemodeAddons: undefined,
|
|
1334
|
+
goal: undefined,
|
|
1335
|
+
protocol: undefined,
|
|
1336
|
+
uiExtension: undefined,
|
|
1337
|
+
trigger: undefined,
|
|
1338
|
+
modelConfig: undefined,
|
|
1339
|
+
mcpServerTools: undefined,
|
|
1340
|
+
guardrails: undefined,
|
|
1341
|
+
evals: undefined,
|
|
1342
|
+
codemode: undefined,
|
|
1343
|
+
output: undefined,
|
|
1344
|
+
advanced: undefined,
|
|
1345
|
+
authorizationPolicy: undefined,
|
|
1346
|
+
notifications: undefined,
|
|
1347
|
+
memory: 'ephemeral',
|
|
1348
|
+
preHooks: undefined,
|
|
1349
|
+
postHooks: undefined,
|
|
1350
|
+
parameters: undefined,
|
|
1351
|
+
subagents: undefined,
|
|
1352
|
+
};
|
|
1353
|
+
export const DEMO_PARAMETERS_AGENT_SPEC_0_0_1 = {
|
|
1354
|
+
id: 'demo-parameters',
|
|
1355
|
+
version: '0.0.1',
|
|
1356
|
+
name: 'Demo Parameters Agent',
|
|
1357
|
+
description: `Demonstrates launch-time parameterization with JSON schema validation.`,
|
|
1358
|
+
tags: ['demo', 'parameters', 'schema'],
|
|
1359
|
+
enabled: true,
|
|
1360
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1361
|
+
mcpServers: [],
|
|
1362
|
+
skills: [],
|
|
1363
|
+
tools: [TOOL_MAP['runtime-echo:0.0.1']],
|
|
1364
|
+
frontendTools: [],
|
|
1365
|
+
environmentName: 'ai-agents-env',
|
|
1366
|
+
icon: 'sliders',
|
|
1367
|
+
emoji: '🎛️',
|
|
1368
|
+
color: '#0F766E',
|
|
1369
|
+
suggestions: [
|
|
1370
|
+
'Use execute_code to print(demo_params) from the sandbox, then explain the value.',
|
|
1371
|
+
"Use execute_code to print('demo_params =', demo_params).",
|
|
1372
|
+
],
|
|
1373
|
+
welcomeMessage: 'This runtime was launched for project {{project}} and role {{role}}.\n',
|
|
1374
|
+
welcomeNotebook: undefined,
|
|
1375
|
+
welcomeDocument: undefined,
|
|
1376
|
+
sandboxVariant: 'jupyter',
|
|
1377
|
+
systemPrompt: `You are an assistant dedicated to {{project}}. Assume the user is a {{role}} and answer in a {{tone}} style. A sandbox pre-hook set a Python variable named demo_params with value {{demo_params}}.
|
|
1378
|
+
`,
|
|
1379
|
+
systemPromptCodemodeAddons: undefined,
|
|
1380
|
+
goal: undefined,
|
|
1381
|
+
protocol: undefined,
|
|
1382
|
+
uiExtension: undefined,
|
|
1383
|
+
trigger: undefined,
|
|
1384
|
+
modelConfig: undefined,
|
|
1385
|
+
mcpServerTools: undefined,
|
|
1386
|
+
guardrails: undefined,
|
|
1387
|
+
evals: undefined,
|
|
1388
|
+
codemode: undefined,
|
|
1389
|
+
output: undefined,
|
|
1390
|
+
advanced: undefined,
|
|
1391
|
+
authorizationPolicy: undefined,
|
|
1392
|
+
notifications: undefined,
|
|
1393
|
+
memory: 'ephemeral',
|
|
1394
|
+
preHooks: {
|
|
1395
|
+
sandbox: [
|
|
1396
|
+
'demo_params = """{{demo_params}}"""\nprint(f"[demo-parameters] demo_params initialized: {demo_params!r}")\n',
|
|
1397
|
+
],
|
|
1398
|
+
},
|
|
1399
|
+
postHooks: undefined,
|
|
1400
|
+
parameters: {
|
|
1401
|
+
type: 'object',
|
|
1402
|
+
properties: {
|
|
1403
|
+
demo_params: { type: 'string', title: 'Demo Params', default: 'hello' },
|
|
1404
|
+
project: { type: 'string', title: 'Project', default: 'Orbit' },
|
|
1405
|
+
role: {
|
|
1406
|
+
type: 'string',
|
|
1407
|
+
title: 'Role',
|
|
1408
|
+
enum: ['product analyst', 'engineering lead', 'support specialist'],
|
|
1409
|
+
default: 'product analyst',
|
|
1410
|
+
},
|
|
1411
|
+
tone: {
|
|
1412
|
+
type: 'string',
|
|
1413
|
+
title: 'Tone',
|
|
1414
|
+
enum: ['concise', 'detailed'],
|
|
1415
|
+
default: 'concise',
|
|
1416
|
+
},
|
|
1417
|
+
},
|
|
1418
|
+
required: ['project'],
|
|
1419
|
+
},
|
|
1420
|
+
subagents: undefined,
|
|
588
1421
|
};
|
|
589
1422
|
export const DEMO_SIMPLE_AGENT_SPEC_0_0_1 = {
|
|
590
1423
|
id: 'demo-simple',
|
|
@@ -597,7 +1430,10 @@ export const DEMO_SIMPLE_AGENT_SPEC_0_0_1 = {
|
|
|
597
1430
|
mcpServers: [],
|
|
598
1431
|
skills: [toAgentSkillSpec(SKILL_MAP['events:0.0.1'])],
|
|
599
1432
|
tools: [TOOL_MAP['runtime-echo:0.0.1']],
|
|
600
|
-
frontendTools: [
|
|
1433
|
+
frontendTools: [
|
|
1434
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1435
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1436
|
+
],
|
|
601
1437
|
environmentName: 'ai-agents-env',
|
|
602
1438
|
icon: 'agent',
|
|
603
1439
|
emoji: '🤖',
|
|
@@ -616,7 +1452,7 @@ export const DEMO_SIMPLE_AGENT_SPEC_0_0_1 = {
|
|
|
616
1452
|
`,
|
|
617
1453
|
systemPromptCodemodeAddons: undefined,
|
|
618
1454
|
goal: undefined,
|
|
619
|
-
protocol:
|
|
1455
|
+
protocol: undefined,
|
|
620
1456
|
uiExtension: undefined,
|
|
621
1457
|
trigger: undefined,
|
|
622
1458
|
modelConfig: undefined,
|
|
@@ -629,19 +1465,208 @@ export const DEMO_SIMPLE_AGENT_SPEC_0_0_1 = {
|
|
|
629
1465
|
authorizationPolicy: undefined,
|
|
630
1466
|
notifications: undefined,
|
|
631
1467
|
memory: 'ephemeral',
|
|
1468
|
+
preHooks: undefined,
|
|
1469
|
+
postHooks: undefined,
|
|
1470
|
+
parameters: undefined,
|
|
1471
|
+
subagents: undefined,
|
|
1472
|
+
};
|
|
1473
|
+
export const DEMO_SUBAGENTS_AGENT_SPEC_0_0_1 = {
|
|
1474
|
+
id: 'demo-subagents',
|
|
1475
|
+
version: '0.0.1',
|
|
1476
|
+
name: 'Subagents Demo',
|
|
1477
|
+
description: `A demonstration agent that delegates tasks to specialised subagents. It has a researcher subagent for gathering information and a writer subagent for composing clear, structured responses.`,
|
|
1478
|
+
tags: ['demo', 'subagents', 'multi-agent', 'delegation'],
|
|
1479
|
+
enabled: true,
|
|
1480
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1481
|
+
mcpServers: [],
|
|
1482
|
+
skills: [toAgentSkillSpec(SKILL_MAP['events:0.0.1'])],
|
|
1483
|
+
tools: [],
|
|
1484
|
+
frontendTools: [
|
|
1485
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1486
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1487
|
+
],
|
|
1488
|
+
environmentName: 'ai-agents-env',
|
|
1489
|
+
icon: 'people',
|
|
1490
|
+
emoji: '👥',
|
|
1491
|
+
color: '#8B5CF6',
|
|
1492
|
+
suggestions: [
|
|
1493
|
+
'Research the pros and cons of Python async patterns and write a summary.',
|
|
1494
|
+
'Find recent advances in LLM fine-tuning and create a brief report.',
|
|
1495
|
+
'Investigate best practices for REST API design and draft a style guide.',
|
|
1496
|
+
'Analyze the current state of WebAssembly and produce an executive summary.',
|
|
1497
|
+
],
|
|
1498
|
+
welcomeMessage: "Hi! I'm the Subagents Demo agent. I coordinate a team of specialised helpers: a **Researcher** who gathers information and a **Writer** who turns findings into polished prose. Ask me anything and I'll delegate to the right expert!\n",
|
|
1499
|
+
welcomeNotebook: undefined,
|
|
1500
|
+
welcomeDocument: undefined,
|
|
1501
|
+
sandboxVariant: 'jupyter',
|
|
1502
|
+
systemPrompt: `You are a helpful orchestrator agent. You have access to specialised subagents that you can delegate tasks to. Use the 'task' tool to assign work: - Use the 'researcher' subagent for gathering facts, searching for information, and analysis. - Use the 'writer' subagent for composing text, formatting documents, and editing prose. You can run tasks synchronously (wait for result) or asynchronously (fire and forget, check later). Always summarise the delegated results for the user in a clear, helpful way.
|
|
1503
|
+
`,
|
|
1504
|
+
systemPromptCodemodeAddons: undefined,
|
|
1505
|
+
goal: undefined,
|
|
1506
|
+
protocol: undefined,
|
|
1507
|
+
uiExtension: undefined,
|
|
1508
|
+
trigger: undefined,
|
|
1509
|
+
modelConfig: undefined,
|
|
1510
|
+
mcpServerTools: undefined,
|
|
1511
|
+
guardrails: undefined,
|
|
1512
|
+
evals: undefined,
|
|
1513
|
+
codemode: undefined,
|
|
1514
|
+
output: undefined,
|
|
1515
|
+
advanced: undefined,
|
|
1516
|
+
authorizationPolicy: undefined,
|
|
1517
|
+
notifications: undefined,
|
|
1518
|
+
memory: 'ephemeral',
|
|
1519
|
+
preHooks: undefined,
|
|
1520
|
+
postHooks: undefined,
|
|
1521
|
+
parameters: undefined,
|
|
1522
|
+
subagents: {
|
|
1523
|
+
defaultModel: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1524
|
+
includeGeneralPurpose: true,
|
|
1525
|
+
maxNestingDepth: 0,
|
|
1526
|
+
subagents: [
|
|
1527
|
+
{
|
|
1528
|
+
name: 'researcher',
|
|
1529
|
+
description: 'Researches topics, gathers facts, and provides detailed analysis',
|
|
1530
|
+
instructions: 'You are a thorough research assistant. When given a topic: 1. Break it down into key questions 2. Provide well-structured findings with evidence 3. Cite sources or reasoning for each claim 4. Highlight areas of uncertainty or debate Format your response with clear sections and bullet points.\n',
|
|
1531
|
+
preferredMode: 'sync',
|
|
1532
|
+
typicalComplexity: 'moderate',
|
|
1533
|
+
canAskQuestions: true,
|
|
1534
|
+
maxQuestions: 3,
|
|
1535
|
+
},
|
|
1536
|
+
{
|
|
1537
|
+
name: 'writer',
|
|
1538
|
+
description: 'Writes clear, structured content based on research or instructions',
|
|
1539
|
+
instructions: 'You are a skilled technical writer. When given content to write: 1. Organise information into a logical structure 2. Use clear, concise language appropriate for the audience 3. Include headings, bullet points, and formatting for readability 4. Maintain a professional yet approachable tone Always produce complete, publication-ready text.\n',
|
|
1540
|
+
preferredMode: 'sync',
|
|
1541
|
+
typicalComplexity: 'moderate',
|
|
1542
|
+
canAskQuestions: false,
|
|
1543
|
+
},
|
|
1544
|
+
],
|
|
1545
|
+
},
|
|
1546
|
+
};
|
|
1547
|
+
export const DEMO_TAVILY_CODEMODE_AGENT_SPEC_0_0_1 = {
|
|
1548
|
+
id: 'demo-tavily-codemode',
|
|
1549
|
+
version: '0.0.1',
|
|
1550
|
+
name: 'Demo Tavily MCP (Codemode)',
|
|
1551
|
+
description: `Demo agent using the Tavily MCP server with codemode conversion enabled.`,
|
|
1552
|
+
tags: ['demo', 'mcp', 'tavily', 'codemode'],
|
|
1553
|
+
enabled: true,
|
|
1554
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1555
|
+
mcpServers: [MCP_SERVER_MAP['tavily:0.0.1']],
|
|
1556
|
+
skills: [],
|
|
1557
|
+
tools: [],
|
|
1558
|
+
frontendTools: [
|
|
1559
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1560
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1561
|
+
],
|
|
1562
|
+
environmentName: 'ai-agents-env',
|
|
1563
|
+
icon: 'code',
|
|
1564
|
+
emoji: '⚙️',
|
|
1565
|
+
color: '#8250DF',
|
|
1566
|
+
suggestions: [
|
|
1567
|
+
'Extract information from the https://datalayer.ai website and use your sandbox to create a variable "about_datalayer" with that information',
|
|
1568
|
+
],
|
|
1569
|
+
welcomeMessage: "Hi! I'm the Tavily MCP demo agent with codemode enabled. I can use programmatic MCP-converted tools and use the sandbox for follow-up processing.\n",
|
|
1570
|
+
welcomeNotebook: undefined,
|
|
1571
|
+
welcomeDocument: undefined,
|
|
1572
|
+
sandboxVariant: 'jupyter',
|
|
1573
|
+
systemPrompt: `You are a helpful assistant with access to Tavily web search tools converted to programmatic codemode tools. You MUST use the available Tavily tools (tavily_search, tavily_extract) to retrieve information from websites. NEVER try to use Python requests, urllib, or selenium to fetch web pages — always use your Tavily tools. After retrieving information with Tavily, use the sandbox (execute_code) to store results in variables.
|
|
1574
|
+
`,
|
|
1575
|
+
systemPromptCodemodeAddons: undefined,
|
|
1576
|
+
goal: undefined,
|
|
1577
|
+
protocol: 'vercel-ai',
|
|
1578
|
+
uiExtension: 'a2ui',
|
|
1579
|
+
trigger: undefined,
|
|
1580
|
+
modelConfig: undefined,
|
|
1581
|
+
mcpServerTools: undefined,
|
|
1582
|
+
guardrails: undefined,
|
|
1583
|
+
evals: undefined,
|
|
1584
|
+
codemode: { enabled: true, token_reduction: '~90%', speedup: '~2x faster' },
|
|
1585
|
+
output: undefined,
|
|
1586
|
+
advanced: undefined,
|
|
1587
|
+
authorizationPolicy: undefined,
|
|
1588
|
+
notifications: undefined,
|
|
1589
|
+
memory: 'ephemeral',
|
|
1590
|
+
preHooks: undefined,
|
|
1591
|
+
postHooks: undefined,
|
|
1592
|
+
parameters: undefined,
|
|
1593
|
+
subagents: undefined,
|
|
1594
|
+
};
|
|
1595
|
+
export const DEMO_TAVILY_NO_CODEMODE_AGENT_SPEC_0_0_1 = {
|
|
1596
|
+
id: 'demo-tavily-no-codemode',
|
|
1597
|
+
version: '0.0.1',
|
|
1598
|
+
name: 'Demo Tavily MCP (No Codemode)',
|
|
1599
|
+
description: `Demo agent using the Tavily MCP server directly without codemode conversion.`,
|
|
1600
|
+
tags: ['demo', 'mcp', 'tavily', 'codemode'],
|
|
1601
|
+
enabled: true,
|
|
1602
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1603
|
+
mcpServers: [MCP_SERVER_MAP['tavily:0.0.1']],
|
|
1604
|
+
skills: [],
|
|
1605
|
+
tools: [],
|
|
1606
|
+
frontendTools: [
|
|
1607
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1608
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1609
|
+
],
|
|
1610
|
+
environmentName: 'ai-agents-env',
|
|
1611
|
+
icon: 'globe',
|
|
1612
|
+
emoji: '🌐',
|
|
1613
|
+
color: '#0969DA',
|
|
1614
|
+
suggestions: [
|
|
1615
|
+
'Extract information from the https://datalayer.ai website and use your sandbox to create a variable "about_datalayer" with that information',
|
|
1616
|
+
],
|
|
1617
|
+
welcomeMessage: "Hi! I'm the Tavily MCP demo agent without codemode. I can use Tavily tools directly and use the sandbox for follow-up processing.\n",
|
|
1618
|
+
welcomeNotebook: undefined,
|
|
1619
|
+
welcomeDocument: undefined,
|
|
1620
|
+
sandboxVariant: 'jupyter',
|
|
1621
|
+
systemPrompt: `You are a helpful assistant with access to Tavily web search tools. You MUST use the tavily_search or tavily_extract MCP tools to retrieve information from websites. NEVER try to use Python requests, urllib, or selenium to fetch web pages — always use your Tavily tools. After retrieving information with Tavily, use the sandbox (execute_code) to store results in variables.
|
|
1622
|
+
`,
|
|
1623
|
+
systemPromptCodemodeAddons: undefined,
|
|
1624
|
+
goal: undefined,
|
|
1625
|
+
protocol: 'vercel-ai',
|
|
1626
|
+
uiExtension: 'a2ui',
|
|
1627
|
+
trigger: undefined,
|
|
1628
|
+
modelConfig: undefined,
|
|
1629
|
+
mcpServerTools: undefined,
|
|
1630
|
+
guardrails: undefined,
|
|
1631
|
+
evals: undefined,
|
|
1632
|
+
codemode: { enabled: false },
|
|
1633
|
+
output: undefined,
|
|
1634
|
+
advanced: undefined,
|
|
1635
|
+
authorizationPolicy: undefined,
|
|
1636
|
+
notifications: undefined,
|
|
1637
|
+
memory: 'ephemeral',
|
|
1638
|
+
preHooks: undefined,
|
|
1639
|
+
postHooks: undefined,
|
|
1640
|
+
parameters: undefined,
|
|
1641
|
+
subagents: undefined,
|
|
632
1642
|
};
|
|
633
1643
|
export const END_OF_MONTH_SALES_PERFORMANCE_AGENT_SPEC_0_0_1 = {
|
|
634
1644
|
id: 'end-of-month-sales-performance',
|
|
635
1645
|
version: '0.0.1',
|
|
636
1646
|
name: 'End of Month Sales Performance',
|
|
637
1647
|
description: `Consolidates and analyzes end-of-month retail sales data directly from Salesforce. Computes revenue performance vs targets by SKU, detects anomalies in bookings and discounting, explains variances by region/segment/product/SKU, and generates executive-ready sales performance reports with full data lineage.`,
|
|
638
|
-
tags: [
|
|
1648
|
+
tags: [
|
|
1649
|
+
'analytics',
|
|
1650
|
+
'sales',
|
|
1651
|
+
'revenue',
|
|
1652
|
+
'performance',
|
|
1653
|
+
'crm',
|
|
1654
|
+
'finance',
|
|
1655
|
+
'retail',
|
|
1656
|
+
'sku',
|
|
1657
|
+
],
|
|
639
1658
|
enabled: false,
|
|
640
|
-
model: 'bedrock:us.anthropic.claude-
|
|
1659
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
641
1660
|
mcpServers: [MCP_SERVER_MAP['salesforce:0.0.1']],
|
|
642
|
-
skills: [
|
|
1661
|
+
skills: [
|
|
1662
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
1663
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
1664
|
+
],
|
|
643
1665
|
tools: [],
|
|
644
|
-
frontendTools: [
|
|
1666
|
+
frontendTools: [
|
|
1667
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1668
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1669
|
+
],
|
|
645
1670
|
environmentName: 'ai-agents-env',
|
|
646
1671
|
icon: 'graph',
|
|
647
1672
|
emoji: '📊',
|
|
@@ -652,7 +1677,7 @@ export const END_OF_MONTH_SALES_PERFORMANCE_AGENT_SPEC_0_0_1 = {
|
|
|
652
1677
|
'Show top and bottom performing SKUs this month',
|
|
653
1678
|
'Explain the top drivers of variance this month',
|
|
654
1679
|
'Detect unusual discounting patterns by SKU',
|
|
655
|
-
|
|
1680
|
+
"Compare this month's performance vs last month",
|
|
656
1681
|
'Show aggregated performance by sales segment',
|
|
657
1682
|
'Break down revenue by SKU category',
|
|
658
1683
|
],
|
|
@@ -666,17 +1691,153 @@ export const END_OF_MONTH_SALES_PERFORMANCE_AGENT_SPEC_0_0_1 = {
|
|
|
666
1691
|
goal: `Consolidate, validate, and analyze end-of-month Salesforce retail sales data. Compute revenue performance vs targets by SKU, detect anomalies in bookings and discounting, explain variances by region/segment/product/SKU, and generate an executive-ready PDF performance report with full data lineage.`,
|
|
667
1692
|
protocol: 'vercel-ai',
|
|
668
1693
|
uiExtension: 'a2ui',
|
|
669
|
-
trigger: {
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
1694
|
+
trigger: {
|
|
1695
|
+
type: 'schedule',
|
|
1696
|
+
cron: '0 6 1 * *',
|
|
1697
|
+
description: 'Monthly on the 1st at 06:00 to process prior month Salesforce sales performance.\n',
|
|
1698
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
1699
|
+
},
|
|
1700
|
+
modelConfig: { temperature: 0.1, max_tokens: 4096 },
|
|
1701
|
+
mcpServerTools: [
|
|
1702
|
+
{
|
|
1703
|
+
server: 'Salesforce MCP',
|
|
1704
|
+
tools: [
|
|
1705
|
+
{ name: 'fetch_closed_won_opportunities', approval: 'auto' },
|
|
1706
|
+
{ name: 'fetch_pipeline_snapshot', approval: 'auto' },
|
|
1707
|
+
{ name: 'fetch_accounts', approval: 'auto' },
|
|
1708
|
+
{ name: 'fetch_sales_targets', approval: 'auto' },
|
|
1709
|
+
{ name: 'compute_kpis', approval: 'auto' },
|
|
1710
|
+
{ name: 'fetch_sku_performance', approval: 'auto' },
|
|
1711
|
+
{ name: 'detect_revenue_anomalies', approval: 'auto' },
|
|
1712
|
+
{ name: 'export_deal_level_details', approval: 'manual' },
|
|
1713
|
+
{ name: 'generate_sales_report', approval: 'auto' },
|
|
1714
|
+
],
|
|
1715
|
+
},
|
|
1716
|
+
],
|
|
1717
|
+
guardrails: [
|
|
1718
|
+
{
|
|
1719
|
+
name: 'Sales Performance Read-Only Analyst',
|
|
1720
|
+
identity_provider: 'datalayer',
|
|
1721
|
+
identity_name: 'sales-bot@acme.com',
|
|
1722
|
+
permissions: {
|
|
1723
|
+
'read:data': true,
|
|
1724
|
+
'write:data': false,
|
|
1725
|
+
'execute:code': true,
|
|
1726
|
+
'access:internet': false,
|
|
1727
|
+
'send:email': false,
|
|
1728
|
+
'deploy:production': false,
|
|
1729
|
+
},
|
|
1730
|
+
data_scope: {
|
|
1731
|
+
allowed_systems: ['salesforce'],
|
|
1732
|
+
allowed_objects: [
|
|
1733
|
+
'Opportunity',
|
|
1734
|
+
'Account',
|
|
1735
|
+
'User',
|
|
1736
|
+
'Product2',
|
|
1737
|
+
'PricebookEntry',
|
|
1738
|
+
],
|
|
1739
|
+
denied_objects: [
|
|
1740
|
+
'Contact',
|
|
1741
|
+
'Lead',
|
|
1742
|
+
'Case',
|
|
1743
|
+
'Task',
|
|
1744
|
+
'Event',
|
|
1745
|
+
'EmailMessage',
|
|
1746
|
+
'Attachment',
|
|
1747
|
+
'ContentDocument',
|
|
1748
|
+
'ContentVersion',
|
|
1749
|
+
],
|
|
1750
|
+
denied_fields: [
|
|
1751
|
+
'Account.Phone',
|
|
1752
|
+
'Account.BillingStreet',
|
|
1753
|
+
'Account.ShippingStreet',
|
|
1754
|
+
'Account.Website',
|
|
1755
|
+
'Opportunity.Description',
|
|
1756
|
+
'Opportunity.NextStep',
|
|
1757
|
+
'Opportunity.Private_Notes__c',
|
|
1758
|
+
'*SSN*',
|
|
1759
|
+
'*Bank*',
|
|
1760
|
+
'*IBAN*',
|
|
1761
|
+
],
|
|
1762
|
+
},
|
|
1763
|
+
data_handling: {
|
|
1764
|
+
default_aggregation: true,
|
|
1765
|
+
allow_row_level_output: false,
|
|
1766
|
+
max_rows_in_output: 0,
|
|
1767
|
+
max_deal_appendix_rows: 25,
|
|
1768
|
+
redact_fields: ['Account.Name', 'Opportunity.Name'],
|
|
1769
|
+
hash_fields: ['Account.Id', 'Opportunity.Id'],
|
|
1770
|
+
pii_detection: true,
|
|
1771
|
+
pii_action: 'redact',
|
|
1772
|
+
},
|
|
1773
|
+
approval_policy: {
|
|
1774
|
+
require_manual_approval_for: [
|
|
1775
|
+
'Any output containing Account.Name or Opportunity.Name',
|
|
1776
|
+
'Per-rep rankings or compensation-related metrics',
|
|
1777
|
+
'Deal-level breakdown above 10 records',
|
|
1778
|
+
'Any query spanning more than 45 days',
|
|
1779
|
+
'Any report including open pipeline details',
|
|
1780
|
+
],
|
|
1781
|
+
auto_approved: [
|
|
1782
|
+
'Aggregated KPIs by region, segment, or product',
|
|
1783
|
+
'Month-over-month comparisons with aggregated data',
|
|
1784
|
+
],
|
|
1785
|
+
},
|
|
1786
|
+
tool_limits: {
|
|
1787
|
+
max_tool_calls: 25,
|
|
1788
|
+
max_query_rows: 200000,
|
|
1789
|
+
max_query_runtime: '30s',
|
|
1790
|
+
max_time_window_days: 45,
|
|
1791
|
+
},
|
|
1792
|
+
audit: {
|
|
1793
|
+
log_tool_calls: true,
|
|
1794
|
+
log_query_metadata_only: true,
|
|
1795
|
+
retain_days: 30,
|
|
1796
|
+
require_lineage_in_report: true,
|
|
1797
|
+
},
|
|
1798
|
+
content_safety: {
|
|
1799
|
+
treat_crm_text_fields_as_untrusted: true,
|
|
1800
|
+
do_not_follow_instructions_from_data: true,
|
|
1801
|
+
},
|
|
1802
|
+
token_limits: { per_run: '30K', per_day: '300K', per_month: '3M' },
|
|
1803
|
+
},
|
|
1804
|
+
],
|
|
1805
|
+
evals: [
|
|
1806
|
+
{ name: 'KPI Accuracy', category: 'coding', task_count: 400 },
|
|
1807
|
+
{
|
|
1808
|
+
name: 'Variance Explanation Quality',
|
|
1809
|
+
category: 'reasoning',
|
|
1810
|
+
task_count: 200,
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
name: 'Anomaly Detection Precision',
|
|
1814
|
+
category: 'reasoning',
|
|
1815
|
+
task_count: 200,
|
|
1816
|
+
},
|
|
1817
|
+
{
|
|
1818
|
+
name: 'SKU-Level Revenue Reconciliation',
|
|
1819
|
+
category: 'coding',
|
|
1820
|
+
task_count: 150,
|
|
1821
|
+
},
|
|
1822
|
+
],
|
|
1823
|
+
codemode: { enabled: true, token_reduction: '~85%', speedup: '~1.5× faster' },
|
|
1824
|
+
output: {
|
|
1825
|
+
type: 'PDF',
|
|
1826
|
+
template: 'end_of_month_sales_performance_report.pdf',
|
|
1827
|
+
},
|
|
1828
|
+
advanced: {
|
|
1829
|
+
cost_limit: '$3.00 per run',
|
|
1830
|
+
time_limit: '600 seconds',
|
|
1831
|
+
max_iterations: 30,
|
|
1832
|
+
validation: 'All reported revenue figures must reconcile with Salesforce closed-won totals for the selected period, including SKU-level breakdowns. Variances vs targets must be computed and explained at both aggregate and per-SKU levels. All outputs must include a data lineage section listing objects queried, filters applied, and record counts.\n',
|
|
1833
|
+
},
|
|
677
1834
|
authorizationPolicy: '',
|
|
678
|
-
notifications: {
|
|
1835
|
+
notifications: { email: 'cro@company.com', slack: '#sales-performance' },
|
|
679
1836
|
memory: 'ephemeral',
|
|
1837
|
+
preHooks: undefined,
|
|
1838
|
+
postHooks: undefined,
|
|
1839
|
+
parameters: undefined,
|
|
1840
|
+
subagents: undefined,
|
|
680
1841
|
};
|
|
681
1842
|
export const EXTRACT_DATA_FROM_FILES_AGENT_SPEC_0_0_1 = {
|
|
682
1843
|
id: 'extract-data-from-files',
|
|
@@ -685,11 +1846,18 @@ export const EXTRACT_DATA_FROM_FILES_AGENT_SPEC_0_0_1 = {
|
|
|
685
1846
|
description: `A generic data extraction agent that processes unstructured files (PDFs, scanned documents, spreadsheets, images with text) and extracts structured data — tables, key-value pairs, line items, totals. Outputs clean JSON or CSV ready for downstream systems. Applicable to invoices, receipts, forms, medical records, legal documents, and more.`,
|
|
686
1847
|
tags: ['extraction', 'data', 'horizontal', 'automation', 'documents'],
|
|
687
1848
|
enabled: false,
|
|
688
|
-
model: 'bedrock:us.anthropic.claude-
|
|
1849
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
689
1850
|
mcpServers: [MCP_SERVER_MAP['filesystem:0.0.1']],
|
|
690
|
-
skills: [
|
|
1851
|
+
skills: [
|
|
1852
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
1853
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
1854
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
1855
|
+
],
|
|
691
1856
|
tools: [],
|
|
692
|
-
frontendTools: [
|
|
1857
|
+
frontendTools: [
|
|
1858
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1859
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1860
|
+
],
|
|
693
1861
|
environmentName: 'ai-agents-env',
|
|
694
1862
|
icon: 'database',
|
|
695
1863
|
emoji: '🗃️',
|
|
@@ -704,17 +1872,67 @@ export const EXTRACT_DATA_FROM_FILES_AGENT_SPEC_0_0_1 = {
|
|
|
704
1872
|
goal: `Extract structured data from unstructured files. Parse tables, key-value pairs, line items, dates, amounts, and named entities from PDFs, images, spreadsheets, and scanned documents. Output clean JSON and CSV with confidence scores for each extracted field.`,
|
|
705
1873
|
protocol: 'vercel-ai',
|
|
706
1874
|
uiExtension: 'a2ui',
|
|
707
|
-
trigger: {
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
1875
|
+
trigger: {
|
|
1876
|
+
type: 'event',
|
|
1877
|
+
event: 'file_uploaded',
|
|
1878
|
+
description: 'Triggered when new files are dropped into the extraction folder',
|
|
1879
|
+
prompt: "Handle the 'file_uploaded' event and execute the workflow end-to-end.",
|
|
1880
|
+
},
|
|
1881
|
+
modelConfig: { temperature: 0.1, max_tokens: 8192 },
|
|
1882
|
+
mcpServerTools: [
|
|
1883
|
+
{
|
|
1884
|
+
server: 'File Processor',
|
|
1885
|
+
tools: [
|
|
1886
|
+
{ name: 'read_pdf_tables', approval: 'auto' },
|
|
1887
|
+
{ name: 'ocr_image', approval: 'auto' },
|
|
1888
|
+
{ name: 'parse_spreadsheet', approval: 'auto' },
|
|
1889
|
+
],
|
|
1890
|
+
},
|
|
1891
|
+
{
|
|
1892
|
+
server: 'Schema Mapper',
|
|
1893
|
+
tools: [
|
|
1894
|
+
{ name: 'map_to_schema', approval: 'auto' },
|
|
1895
|
+
{ name: 'validate_output', approval: 'auto' },
|
|
1896
|
+
{ name: 'write_to_database', approval: 'manual' },
|
|
1897
|
+
],
|
|
1898
|
+
},
|
|
1899
|
+
],
|
|
1900
|
+
guardrails: [
|
|
1901
|
+
{
|
|
1902
|
+
name: 'Default Platform User',
|
|
1903
|
+
identity_provider: 'datalayer',
|
|
1904
|
+
identity_name: 'extraction-bot@acme.com',
|
|
1905
|
+
permissions: {
|
|
1906
|
+
'read:data': true,
|
|
1907
|
+
'write:data': true,
|
|
1908
|
+
'execute:code': true,
|
|
1909
|
+
'access:internet': false,
|
|
1910
|
+
'send:email': false,
|
|
1911
|
+
'deploy:production': false,
|
|
1912
|
+
},
|
|
1913
|
+
token_limits: { per_run: '40K', per_day: '400K', per_month: '4M' },
|
|
1914
|
+
},
|
|
1915
|
+
],
|
|
1916
|
+
evals: [
|
|
1917
|
+
{ name: 'Table Extraction Accuracy', category: 'coding', task_count: 450 },
|
|
1918
|
+
{ name: 'Key-Value Pair Extraction', category: 'coding', task_count: 380 },
|
|
1919
|
+
{ name: 'Schema Mapping Quality', category: 'reasoning', task_count: 250 },
|
|
1920
|
+
],
|
|
712
1921
|
codemode: undefined,
|
|
713
|
-
output: {
|
|
1922
|
+
output: {
|
|
1923
|
+
type: 'JSON',
|
|
1924
|
+
formats: ['JSON', 'CSV'],
|
|
1925
|
+
template: 'extraction-output-v1',
|
|
1926
|
+
storage: 's3://acme-extractions/',
|
|
1927
|
+
},
|
|
714
1928
|
advanced: undefined,
|
|
715
1929
|
authorizationPolicy: undefined,
|
|
716
|
-
notifications: {
|
|
1930
|
+
notifications: { slack: '#data-extraction', email: 'data-team@acme.com' },
|
|
717
1931
|
memory: 'ephemeral',
|
|
1932
|
+
preHooks: undefined,
|
|
1933
|
+
postHooks: undefined,
|
|
1934
|
+
parameters: undefined,
|
|
1935
|
+
subagents: undefined,
|
|
718
1936
|
};
|
|
719
1937
|
export const FINANCIAL_VIZ_AGENT_SPEC_0_0_1 = {
|
|
720
1938
|
id: 'financial-viz',
|
|
@@ -724,10 +1942,16 @@ export const FINANCIAL_VIZ_AGENT_SPEC_0_0_1 = {
|
|
|
724
1942
|
tags: ['finance', 'stocks', 'visualization', 'charts'],
|
|
725
1943
|
enabled: false,
|
|
726
1944
|
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
727
|
-
mcpServers: [
|
|
1945
|
+
mcpServers: [
|
|
1946
|
+
MCP_SERVER_MAP['alphavantage:0.0.1'],
|
|
1947
|
+
MCP_SERVER_MAP['chart:0.0.1'],
|
|
1948
|
+
],
|
|
728
1949
|
skills: [toAgentSkillSpec(SKILL_MAP['events:0.0.1'])],
|
|
729
1950
|
tools: [],
|
|
730
|
-
frontendTools: [
|
|
1951
|
+
frontendTools: [
|
|
1952
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
1953
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
1954
|
+
],
|
|
731
1955
|
environmentName: 'ai-agents-env',
|
|
732
1956
|
icon: 'trending-up',
|
|
733
1957
|
emoji: '📈',
|
|
@@ -764,7 +1988,7 @@ export const FINANCIAL_VIZ_AGENT_SPEC_0_0_1 = {
|
|
|
764
1988
|
## 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.
|
|
765
1989
|
`,
|
|
766
1990
|
goal: undefined,
|
|
767
|
-
protocol:
|
|
1991
|
+
protocol: undefined,
|
|
768
1992
|
uiExtension: undefined,
|
|
769
1993
|
trigger: undefined,
|
|
770
1994
|
modelConfig: undefined,
|
|
@@ -777,6 +2001,10 @@ export const FINANCIAL_VIZ_AGENT_SPEC_0_0_1 = {
|
|
|
777
2001
|
authorizationPolicy: undefined,
|
|
778
2002
|
notifications: undefined,
|
|
779
2003
|
memory: 'ephemeral',
|
|
2004
|
+
preHooks: undefined,
|
|
2005
|
+
postHooks: undefined,
|
|
2006
|
+
parameters: undefined,
|
|
2007
|
+
subagents: undefined,
|
|
780
2008
|
};
|
|
781
2009
|
export const FINANCIAL_AGENT_SPEC_0_0_1 = {
|
|
782
2010
|
id: 'financial',
|
|
@@ -789,7 +2017,10 @@ export const FINANCIAL_AGENT_SPEC_0_0_1 = {
|
|
|
789
2017
|
mcpServers: [MCP_SERVER_MAP['alphavantage:0.0.1']],
|
|
790
2018
|
skills: [toAgentSkillSpec(SKILL_MAP['events:0.0.1'])],
|
|
791
2019
|
tools: [],
|
|
792
|
-
frontendTools: [
|
|
2020
|
+
frontendTools: [
|
|
2021
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2022
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2023
|
+
],
|
|
793
2024
|
environmentName: 'ai-agents-env',
|
|
794
2025
|
icon: 'trending-up',
|
|
795
2026
|
emoji: '📈',
|
|
@@ -826,7 +2057,7 @@ export const FINANCIAL_AGENT_SPEC_0_0_1 = {
|
|
|
826
2057
|
## 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.
|
|
827
2058
|
`,
|
|
828
2059
|
goal: undefined,
|
|
829
|
-
protocol:
|
|
2060
|
+
protocol: undefined,
|
|
830
2061
|
uiExtension: undefined,
|
|
831
2062
|
trigger: undefined,
|
|
832
2063
|
modelConfig: undefined,
|
|
@@ -839,6 +2070,10 @@ export const FINANCIAL_AGENT_SPEC_0_0_1 = {
|
|
|
839
2070
|
authorizationPolicy: undefined,
|
|
840
2071
|
notifications: undefined,
|
|
841
2072
|
memory: 'ephemeral',
|
|
2073
|
+
preHooks: undefined,
|
|
2074
|
+
postHooks: undefined,
|
|
2075
|
+
parameters: undefined,
|
|
2076
|
+
subagents: undefined,
|
|
842
2077
|
};
|
|
843
2078
|
export const GENERATE_WEEKLY_REPORTS_AGENT_SPEC_0_0_1 = {
|
|
844
2079
|
id: 'generate-weekly-reports',
|
|
@@ -847,19 +2082,28 @@ export const GENERATE_WEEKLY_REPORTS_AGENT_SPEC_0_0_1 = {
|
|
|
847
2082
|
description: `Aggregates data across marketing, sales, and operations departments. Generates structured weekly reports with charts, KPI summaries, trend analysis, and executive-level takeaways.`,
|
|
848
2083
|
tags: ['marketing', 'reports', 'weekly', 'analytics', 'automation'],
|
|
849
2084
|
enabled: false,
|
|
850
|
-
model: 'bedrock:us.anthropic.claude-
|
|
851
|
-
mcpServers: [
|
|
852
|
-
|
|
2085
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
2086
|
+
mcpServers: [
|
|
2087
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
2088
|
+
MCP_SERVER_MAP['slack:0.0.1'],
|
|
2089
|
+
],
|
|
2090
|
+
skills: [
|
|
2091
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
2092
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
2093
|
+
],
|
|
853
2094
|
tools: [],
|
|
854
|
-
frontendTools: [
|
|
2095
|
+
frontendTools: [
|
|
2096
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2097
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2098
|
+
],
|
|
855
2099
|
environmentName: 'ai-agents-env',
|
|
856
2100
|
icon: 'file',
|
|
857
2101
|
emoji: '📝',
|
|
858
2102
|
color: '#cf222e',
|
|
859
2103
|
suggestions: [
|
|
860
|
-
|
|
2104
|
+
"Generate this week's executive report",
|
|
861
2105
|
'Show marketing KPIs for the last 7 days',
|
|
862
|
-
|
|
2106
|
+
"Compare this week's sales to last week",
|
|
863
2107
|
'What were the top operational issues this week?',
|
|
864
2108
|
],
|
|
865
2109
|
welcomeMessage: "Hello! I'm the Weekly Report Generator. Every Monday I aggregate data from marketing, sales, and operations to produce a structured executive report with charts, KPI summaries, and actionable takeaways.\n",
|
|
@@ -872,17 +2116,72 @@ export const GENERATE_WEEKLY_REPORTS_AGENT_SPEC_0_0_1 = {
|
|
|
872
2116
|
goal: `Aggregate data across marketing, sales, and operations departments every Monday. Generate a structured executive report with charts, KPI summaries, trend analysis, and the top 3 actionable takeaways for leadership.`,
|
|
873
2117
|
protocol: 'vercel-ai',
|
|
874
2118
|
uiExtension: 'a2ui',
|
|
875
|
-
trigger: {
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
2119
|
+
trigger: {
|
|
2120
|
+
type: 'schedule',
|
|
2121
|
+
cron: '0 6 * * 1',
|
|
2122
|
+
description: 'Every Monday at 6:00 AM UTC',
|
|
2123
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
2124
|
+
},
|
|
2125
|
+
modelConfig: { temperature: 0.2, max_tokens: 8192 },
|
|
2126
|
+
mcpServerTools: [
|
|
2127
|
+
{
|
|
2128
|
+
server: 'Data Warehouse',
|
|
2129
|
+
tools: [
|
|
2130
|
+
{ name: 'query_marketing_data', approval: 'auto' },
|
|
2131
|
+
{ name: 'query_sales_data', approval: 'auto' },
|
|
2132
|
+
{ name: 'query_operations_data', approval: 'auto' },
|
|
2133
|
+
],
|
|
2134
|
+
},
|
|
2135
|
+
{
|
|
2136
|
+
server: 'Visualization Engine',
|
|
2137
|
+
tools: [
|
|
2138
|
+
{ name: 'generate_charts', approval: 'auto' },
|
|
2139
|
+
{ name: 'create_dashboard', approval: 'auto' },
|
|
2140
|
+
],
|
|
2141
|
+
},
|
|
2142
|
+
{
|
|
2143
|
+
server: 'Document Generator',
|
|
2144
|
+
tools: [
|
|
2145
|
+
{ name: 'compile_report', approval: 'auto' },
|
|
2146
|
+
{ name: 'send_report', approval: 'manual' },
|
|
2147
|
+
],
|
|
2148
|
+
},
|
|
2149
|
+
],
|
|
2150
|
+
guardrails: [
|
|
2151
|
+
{
|
|
2152
|
+
name: 'Data Engineering Power User',
|
|
2153
|
+
identity_provider: 'datalayer',
|
|
2154
|
+
identity_name: 'reports-bot@acme.com',
|
|
2155
|
+
permissions: {
|
|
2156
|
+
'read:data': true,
|
|
2157
|
+
'write:data': true,
|
|
2158
|
+
'execute:code': true,
|
|
2159
|
+
'access:internet': true,
|
|
2160
|
+
'send:email': true,
|
|
2161
|
+
'deploy:production': false,
|
|
2162
|
+
},
|
|
2163
|
+
token_limits: { per_run: '80K', per_day: '500K', per_month: '5M' },
|
|
2164
|
+
},
|
|
2165
|
+
],
|
|
2166
|
+
evals: [
|
|
2167
|
+
{ name: 'Report Completeness', category: 'coding', task_count: 100 },
|
|
2168
|
+
{ name: 'Data Accuracy', category: 'reasoning', task_count: 250 },
|
|
2169
|
+
],
|
|
2170
|
+
codemode: { enabled: true, token_reduction: '~90%', speedup: '~2× faster' },
|
|
2171
|
+
output: { type: 'PDF', template: 'weekly_executive_report.pdf' },
|
|
2172
|
+
advanced: {
|
|
2173
|
+
cost_limit: '$8.00 per run',
|
|
2174
|
+
time_limit: '600 seconds',
|
|
2175
|
+
max_iterations: 60,
|
|
2176
|
+
validation: 'Report must include all department KPIs and trend charts',
|
|
2177
|
+
},
|
|
883
2178
|
authorizationPolicy: '',
|
|
884
|
-
notifications: {
|
|
2179
|
+
notifications: { email: 'robert.w@company.com', slack: '#weekly-reports' },
|
|
885
2180
|
memory: 'ephemeral',
|
|
2181
|
+
preHooks: undefined,
|
|
2182
|
+
postHooks: undefined,
|
|
2183
|
+
parameters: undefined,
|
|
2184
|
+
subagents: undefined,
|
|
886
2185
|
};
|
|
887
2186
|
export const GITHUB_AGENT_SPEC_0_0_1 = {
|
|
888
2187
|
id: 'github-agent',
|
|
@@ -893,9 +2192,15 @@ export const GITHUB_AGENT_SPEC_0_0_1 = {
|
|
|
893
2192
|
enabled: false,
|
|
894
2193
|
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
895
2194
|
mcpServers: [MCP_SERVER_MAP['google-workspace:0.0.1']],
|
|
896
|
-
skills: [
|
|
2195
|
+
skills: [
|
|
2196
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
2197
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
2198
|
+
],
|
|
897
2199
|
tools: [],
|
|
898
|
-
frontendTools: [
|
|
2200
|
+
frontendTools: [
|
|
2201
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2202
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2203
|
+
],
|
|
899
2204
|
environmentName: 'ai-agents-env',
|
|
900
2205
|
icon: 'git-branch',
|
|
901
2206
|
emoji: '🐙',
|
|
@@ -932,7 +2237,7 @@ export const GITHUB_AGENT_SPEC_0_0_1 = {
|
|
|
932
2237
|
## 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.
|
|
933
2238
|
`,
|
|
934
2239
|
goal: undefined,
|
|
935
|
-
protocol:
|
|
2240
|
+
protocol: undefined,
|
|
936
2241
|
uiExtension: undefined,
|
|
937
2242
|
trigger: undefined,
|
|
938
2243
|
modelConfig: undefined,
|
|
@@ -945,6 +2250,10 @@ export const GITHUB_AGENT_SPEC_0_0_1 = {
|
|
|
945
2250
|
authorizationPolicy: undefined,
|
|
946
2251
|
notifications: undefined,
|
|
947
2252
|
memory: 'ephemeral',
|
|
2253
|
+
preHooks: undefined,
|
|
2254
|
+
postHooks: undefined,
|
|
2255
|
+
parameters: undefined,
|
|
2256
|
+
subagents: undefined,
|
|
948
2257
|
};
|
|
949
2258
|
export const INFORMATION_ROUTING_AGENT_SPEC_0_0_1 = {
|
|
950
2259
|
id: 'information-routing',
|
|
@@ -954,10 +2263,16 @@ export const INFORMATION_ROUTING_AGENT_SPEC_0_0_1 = {
|
|
|
954
2263
|
tags: ['workflow', 'communication', 'gdrive'],
|
|
955
2264
|
enabled: false,
|
|
956
2265
|
model: 'bedrock:us.anthropic.claude-opus-4-6-v1',
|
|
957
|
-
mcpServers: [
|
|
2266
|
+
mcpServers: [
|
|
2267
|
+
MCP_SERVER_MAP['google-workspace:0.0.1'],
|
|
2268
|
+
MCP_SERVER_MAP['github:0.0.1'],
|
|
2269
|
+
],
|
|
958
2270
|
skills: [toAgentSkillSpec(SKILL_MAP['events:0.0.1'])],
|
|
959
2271
|
tools: [],
|
|
960
|
-
frontendTools: [
|
|
2272
|
+
frontendTools: [
|
|
2273
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2274
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2275
|
+
],
|
|
961
2276
|
environmentName: 'ai-agents-env',
|
|
962
2277
|
icon: 'share-2',
|
|
963
2278
|
emoji: '🔀',
|
|
@@ -994,7 +2309,7 @@ export const INFORMATION_ROUTING_AGENT_SPEC_0_0_1 = {
|
|
|
994
2309
|
## Token Efficiency Always 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!!!!
|
|
995
2310
|
`,
|
|
996
2311
|
goal: undefined,
|
|
997
|
-
protocol:
|
|
2312
|
+
protocol: undefined,
|
|
998
2313
|
uiExtension: undefined,
|
|
999
2314
|
trigger: undefined,
|
|
1000
2315
|
modelConfig: undefined,
|
|
@@ -1007,6 +2322,10 @@ export const INFORMATION_ROUTING_AGENT_SPEC_0_0_1 = {
|
|
|
1007
2322
|
authorizationPolicy: undefined,
|
|
1008
2323
|
notifications: undefined,
|
|
1009
2324
|
memory: 'ephemeral',
|
|
2325
|
+
preHooks: undefined,
|
|
2326
|
+
postHooks: undefined,
|
|
2327
|
+
parameters: undefined,
|
|
2328
|
+
subagents: undefined,
|
|
1010
2329
|
};
|
|
1011
2330
|
export const MONITOR_SALES_KPIS_AGENT_SPEC_0_0_1 = {
|
|
1012
2331
|
id: 'monitor-sales-kpis',
|
|
@@ -1015,17 +2334,28 @@ export const MONITOR_SALES_KPIS_AGENT_SPEC_0_0_1 = {
|
|
|
1015
2334
|
description: `Monitor and analyze sales KPIs from the CRM system. Generate daily reports summarizing key performance metrics, identify trends, and flag anomalies. Send notifications when KPIs deviate more than 10% from targets.`,
|
|
1016
2335
|
tags: ['support', 'chatbot', 'sales', 'kpi', 'monitoring'],
|
|
1017
2336
|
enabled: false,
|
|
1018
|
-
model: 'bedrock:us.anthropic.claude-
|
|
2337
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1019
2338
|
mcpServers: [MCP_SERVER_MAP['filesystem:0.0.1']],
|
|
1020
|
-
skills: [
|
|
1021
|
-
|
|
1022
|
-
|
|
2339
|
+
skills: [
|
|
2340
|
+
toAgentSkillSpec(SKILL_MAP['github:0.0.1']),
|
|
2341
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
2342
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
2343
|
+
],
|
|
2344
|
+
tools: [
|
|
2345
|
+
TOOL_MAP['runtime-echo:0.0.1'],
|
|
2346
|
+
TOOL_MAP['runtime-sensitive-echo:0.0.1'],
|
|
2347
|
+
TOOL_MAP['runtime-send-mail:0.0.1'],
|
|
2348
|
+
],
|
|
2349
|
+
frontendTools: [
|
|
2350
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2351
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2352
|
+
],
|
|
1023
2353
|
environmentName: 'ai-agents-env',
|
|
1024
2354
|
icon: 'graph',
|
|
1025
2355
|
emoji: '📊',
|
|
1026
2356
|
color: '#2da44e',
|
|
1027
2357
|
suggestions: [
|
|
1028
|
-
|
|
2358
|
+
"Show me today's sales KPI dashboard",
|
|
1029
2359
|
'What are the current revenue trends?',
|
|
1030
2360
|
'Flag any KPIs that deviate more than 10% from targets',
|
|
1031
2361
|
'Generate a weekly summary report',
|
|
@@ -1042,30 +2372,100 @@ export const MONITOR_SALES_KPIS_AGENT_SPEC_0_0_1 = {
|
|
|
1042
2372
|
goal: `Monitor and analyze sales KPIs from the CRM system. Generate daily reports summarizing key performance metrics, identify trends, and flag anomalies. Send notifications when KPIs deviate more than 10% from targets.`,
|
|
1043
2373
|
protocol: 'vercel-ai',
|
|
1044
2374
|
uiExtension: 'a2ui',
|
|
1045
|
-
trigger: {
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
2375
|
+
trigger: {
|
|
2376
|
+
type: 'schedule',
|
|
2377
|
+
cron: '0 8 * * *',
|
|
2378
|
+
description: 'Every day at 8:00 AM UTC',
|
|
2379
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
2380
|
+
},
|
|
2381
|
+
modelConfig: { temperature: 0.3, max_tokens: 4096 },
|
|
2382
|
+
mcpServerTools: [
|
|
2383
|
+
{
|
|
2384
|
+
server: 'CRM Data Server',
|
|
2385
|
+
tools: [
|
|
2386
|
+
{ name: 'get_sales_data', approval: 'auto' },
|
|
2387
|
+
{ name: 'get_customer_list', approval: 'auto' },
|
|
2388
|
+
{ name: 'update_records', approval: 'manual' },
|
|
2389
|
+
],
|
|
2390
|
+
},
|
|
2391
|
+
{
|
|
2392
|
+
server: 'Analytics Server',
|
|
2393
|
+
tools: [
|
|
2394
|
+
{ name: 'run_analysis', approval: 'auto' },
|
|
2395
|
+
{ name: 'generate_charts', approval: 'auto' },
|
|
2396
|
+
],
|
|
2397
|
+
},
|
|
2398
|
+
],
|
|
2399
|
+
guardrails: [
|
|
2400
|
+
{
|
|
2401
|
+
name: 'Default Platform User',
|
|
2402
|
+
identity_provider: 'datalayer',
|
|
2403
|
+
identity_name: 'alice@acme.com',
|
|
2404
|
+
permissions: {
|
|
2405
|
+
'read:data': true,
|
|
2406
|
+
'write:data': true,
|
|
2407
|
+
'execute:code': true,
|
|
2408
|
+
'access:internet': true,
|
|
2409
|
+
'send:email': false,
|
|
2410
|
+
'deploy:production': false,
|
|
2411
|
+
},
|
|
2412
|
+
token_limits: { per_run: '50K', per_day: '500K', per_month: '5M' },
|
|
2413
|
+
},
|
|
2414
|
+
],
|
|
2415
|
+
evals: [
|
|
2416
|
+
{ name: 'SWE-bench', category: 'coding', task_count: 2294 },
|
|
2417
|
+
{ name: 'HumanEval', category: 'coding', task_count: 164 },
|
|
2418
|
+
{ name: 'GPQA Diamond', category: 'reasoning', task_count: 448 },
|
|
2419
|
+
{ name: 'TruthfulQA', category: 'safety', task_count: 817 },
|
|
2420
|
+
],
|
|
2421
|
+
codemode: { enabled: true, token_reduction: '~90%', speedup: '~2× faster' },
|
|
2422
|
+
output: { type: 'Notebook', template: 'kpi_report_template.ipynb' },
|
|
2423
|
+
advanced: {
|
|
2424
|
+
cost_limit: '$5.00 per run',
|
|
2425
|
+
time_limit: '300 seconds',
|
|
2426
|
+
max_iterations: 50,
|
|
2427
|
+
validation: 'Output must contain required KPI fields',
|
|
2428
|
+
checkpoint_interval: 30,
|
|
2429
|
+
context_window: {
|
|
2430
|
+
max_tokens: 100000,
|
|
2431
|
+
eviction_strategy: 'sliding_window',
|
|
2432
|
+
summary_threshold: 0.85,
|
|
2433
|
+
},
|
|
2434
|
+
},
|
|
1053
2435
|
authorizationPolicy: '',
|
|
1054
|
-
notifications: {
|
|
2436
|
+
notifications: { email: 'marcus.r@company.com', slack: '#sales-kpis' },
|
|
1055
2437
|
memory: 'mem0',
|
|
2438
|
+
preHooks: undefined,
|
|
2439
|
+
postHooks: undefined,
|
|
2440
|
+
parameters: undefined,
|
|
2441
|
+
subagents: undefined,
|
|
1056
2442
|
};
|
|
1057
2443
|
export const OPTIMIZE_DYNAMIC_PRICING_AGENT_SPEC_0_0_1 = {
|
|
1058
2444
|
id: 'optimize-dynamic-pricing',
|
|
1059
2445
|
version: '0.0.1',
|
|
1060
2446
|
name: 'Optimize Dynamic Pricing',
|
|
1061
2447
|
description: `Monitors competitor pricing across marketplaces, forecasts demand per SKU, and generates margin-optimised pricing recommendations in real time. Tracks 50K+ SKUs hourly across Amazon, Walmart, and niche channels, combining competitive intelligence with demand signals to maximise margins.`,
|
|
1062
|
-
tags: [
|
|
2448
|
+
tags: [
|
|
2449
|
+
'retail',
|
|
2450
|
+
'e-commerce',
|
|
2451
|
+
'pricing',
|
|
2452
|
+
'analytics',
|
|
2453
|
+
'demand-forecasting',
|
|
2454
|
+
'margins',
|
|
2455
|
+
],
|
|
1063
2456
|
enabled: false,
|
|
1064
|
-
model: 'bedrock:us.anthropic.claude-
|
|
2457
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1065
2458
|
mcpServers: [MCP_SERVER_MAP['filesystem:0.0.1']],
|
|
1066
|
-
skills: [
|
|
2459
|
+
skills: [
|
|
2460
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
2461
|
+
toAgentSkillSpec(SKILL_MAP['crawl:0.0.1']),
|
|
2462
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
2463
|
+
],
|
|
1067
2464
|
tools: [],
|
|
1068
|
-
frontendTools: [
|
|
2465
|
+
frontendTools: [
|
|
2466
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2467
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2468
|
+
],
|
|
1069
2469
|
environmentName: 'ai-agents-env',
|
|
1070
2470
|
icon: 'tag',
|
|
1071
2471
|
emoji: '🏷️',
|
|
@@ -1075,7 +2475,7 @@ export const OPTIMIZE_DYNAMIC_PRICING_AGENT_SPEC_0_0_1 = {
|
|
|
1075
2475
|
'Which SKUs have the highest price elasticity?',
|
|
1076
2476
|
'Generate pricing recommendations for the electronics category',
|
|
1077
2477
|
'Forecast demand for top 100 SKUs next week',
|
|
1078
|
-
|
|
2478
|
+
"What's the projected revenue impact of current recommendations?",
|
|
1079
2479
|
],
|
|
1080
2480
|
welcomeMessage: "Hello! I'm the Dynamic Pricing agent. I monitor competitor prices across 50K+ SKUs hourly, forecast demand using historical and seasonal patterns, and generate margin-optimised pricing recommendations to keep you competitive while maximising profitability.\n",
|
|
1081
2481
|
welcomeNotebook: undefined,
|
|
@@ -1087,30 +2487,109 @@ export const OPTIMIZE_DYNAMIC_PRICING_AGENT_SPEC_0_0_1 = {
|
|
|
1087
2487
|
goal: `Track competitor pricing across 50K+ SKUs hourly on Amazon, Walmart, and niche marketplaces. Forecast demand per SKU-location pair using historical sales, seasonality, and external signals. Generate margin-optimised pricing recommendations with confidence intervals and projected revenue impact.`,
|
|
1088
2488
|
protocol: 'vercel-ai',
|
|
1089
2489
|
uiExtension: 'a2ui',
|
|
1090
|
-
trigger: {
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
2490
|
+
trigger: {
|
|
2491
|
+
type: 'schedule',
|
|
2492
|
+
cron: '0 * * * *',
|
|
2493
|
+
description: 'Hourly competitive price scan and demand forecast update',
|
|
2494
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
2495
|
+
},
|
|
2496
|
+
modelConfig: { temperature: 0.1, max_tokens: 4096 },
|
|
2497
|
+
mcpServerTools: [
|
|
2498
|
+
{
|
|
2499
|
+
server: 'Marketplace Intelligence MCP',
|
|
2500
|
+
tools: [
|
|
2501
|
+
{ name: 'scrape_competitor_prices', approval: 'auto' },
|
|
2502
|
+
{ name: 'fetch_marketplace_listings', approval: 'auto' },
|
|
2503
|
+
{ name: 'detect_new_products', approval: 'auto' },
|
|
2504
|
+
{ name: 'compute_price_elasticity', approval: 'auto' },
|
|
2505
|
+
{ name: 'forecast_demand', approval: 'auto' },
|
|
2506
|
+
{ name: 'generate_price_recommendations', approval: 'manual' },
|
|
2507
|
+
{ name: 'apply_price_changes', approval: 'manual' },
|
|
2508
|
+
],
|
|
2509
|
+
},
|
|
2510
|
+
],
|
|
2511
|
+
guardrails: [
|
|
2512
|
+
{
|
|
2513
|
+
name: 'Pricing Intelligence Analyst',
|
|
2514
|
+
identity_provider: 'datalayer',
|
|
2515
|
+
identity_name: 'pricing-bot@acme.com',
|
|
2516
|
+
permissions: {
|
|
2517
|
+
'read:data': true,
|
|
2518
|
+
'write:data': false,
|
|
2519
|
+
'execute:code': true,
|
|
2520
|
+
'access:internet': true,
|
|
2521
|
+
'send:email': false,
|
|
2522
|
+
'deploy:production': false,
|
|
2523
|
+
},
|
|
2524
|
+
data_handling: { pii_detection: false },
|
|
2525
|
+
approval_policy: {
|
|
2526
|
+
require_manual_approval_for: [
|
|
2527
|
+
'Any price change above 15% from current price',
|
|
2528
|
+
'Bulk price updates affecting more than 100 SKUs',
|
|
2529
|
+
'Below-cost pricing recommendations',
|
|
2530
|
+
],
|
|
2531
|
+
auto_approved: [
|
|
2532
|
+
'Competitive price monitoring and data collection',
|
|
2533
|
+
'Demand forecasting and analysis',
|
|
2534
|
+
'Price recommendations within 15% band',
|
|
2535
|
+
],
|
|
2536
|
+
},
|
|
2537
|
+
token_limits: { per_run: '25K', per_day: '500K', per_month: '10M' },
|
|
2538
|
+
},
|
|
2539
|
+
],
|
|
2540
|
+
evals: [
|
|
2541
|
+
{ name: 'Price Tracking Accuracy', category: 'coding', task_count: 500 },
|
|
2542
|
+
{ name: 'Demand Forecast MAPE', category: 'reasoning', task_count: 300 },
|
|
2543
|
+
{ name: 'Margin Impact', category: 'coding', task_count: 200 },
|
|
2544
|
+
],
|
|
2545
|
+
codemode: { enabled: true, token_reduction: '~90%', speedup: '~2× faster' },
|
|
2546
|
+
output: {
|
|
2547
|
+
formats: ['Dashboard', 'JSON', 'Spreadsheet'],
|
|
2548
|
+
template: 'Dynamic Pricing Report',
|
|
2549
|
+
storage: '/outputs/dynamic-pricing/',
|
|
2550
|
+
},
|
|
2551
|
+
advanced: {
|
|
2552
|
+
cost_limit: '$1.50 per run',
|
|
2553
|
+
time_limit: '300 seconds',
|
|
2554
|
+
max_iterations: 20,
|
|
2555
|
+
validation: 'All recommended prices must maintain minimum margin thresholds. Demand forecasts must include confidence intervals.\n',
|
|
2556
|
+
},
|
|
1098
2557
|
authorizationPolicy: '',
|
|
1099
|
-
notifications: {
|
|
2558
|
+
notifications: {
|
|
2559
|
+
email: 'merchandising@company.com',
|
|
2560
|
+
slack: '#pricing-intelligence',
|
|
2561
|
+
},
|
|
1100
2562
|
memory: 'ephemeral',
|
|
2563
|
+
preHooks: undefined,
|
|
2564
|
+
postHooks: undefined,
|
|
2565
|
+
parameters: undefined,
|
|
2566
|
+
subagents: undefined,
|
|
1101
2567
|
};
|
|
1102
2568
|
export const OPTIMIZE_GRID_OPERATIONS_AGENT_SPEC_0_0_1 = {
|
|
1103
2569
|
id: 'optimize-grid-operations',
|
|
1104
2570
|
version: '0.0.1',
|
|
1105
2571
|
name: 'Optimize Grid Operations',
|
|
1106
2572
|
description: `A multi-agent team that processes millions of IoT sensor data points from smart meters, substations, and renewable generation assets. Predicts equipment failures 2–4 weeks in advance, optimises load balancing across the grid, and reduces unplanned downtime by 50%.`,
|
|
1107
|
-
tags: [
|
|
2573
|
+
tags: [
|
|
2574
|
+
'energy',
|
|
2575
|
+
'utilities',
|
|
2576
|
+
'smart-grid',
|
|
2577
|
+
'iot',
|
|
2578
|
+
'predictive-maintenance',
|
|
2579
|
+
'sustainability',
|
|
2580
|
+
],
|
|
1108
2581
|
enabled: false,
|
|
1109
|
-
model: 'bedrock:us.anthropic.claude-
|
|
2582
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1110
2583
|
mcpServers: [MCP_SERVER_MAP['filesystem:0.0.1']],
|
|
1111
|
-
skills: [
|
|
2584
|
+
skills: [
|
|
2585
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
2586
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
2587
|
+
],
|
|
1112
2588
|
tools: [],
|
|
1113
|
-
frontendTools: [
|
|
2589
|
+
frontendTools: [
|
|
2590
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2591
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2592
|
+
],
|
|
1114
2593
|
environmentName: 'ai-agents-env',
|
|
1115
2594
|
icon: 'zap',
|
|
1116
2595
|
emoji: '⚡',
|
|
@@ -1119,7 +2598,7 @@ export const OPTIMIZE_GRID_OPERATIONS_AGENT_SPEC_0_0_1 = {
|
|
|
1119
2598
|
'Show current grid health across all substations',
|
|
1120
2599
|
'Which assets have anomaly alerts right now?',
|
|
1121
2600
|
'Predict failures for the next 4 weeks',
|
|
1122
|
-
|
|
2601
|
+
"Optimise load balancing for tomorrow's forecast",
|
|
1123
2602
|
'Generate a maintenance schedule for flagged assets',
|
|
1124
2603
|
],
|
|
1125
2604
|
welcomeMessage: "Hello! I'm the Grid Operations team orchestrator. I coordinate four agents — Sensor Ingestion, Anomaly Detector, Failure Predictor, and Grid Balancer — to keep your grid running efficiently with predictive maintenance and intelligent load optimisation.\n",
|
|
@@ -1132,37 +2611,104 @@ export const OPTIMIZE_GRID_OPERATIONS_AGENT_SPEC_0_0_1 = {
|
|
|
1132
2611
|
goal: `Process millions of IoT sensor data points from SCADA systems, smart meters, and renewable assets. Detect equipment anomalies in real time, predict failures 2–4 weeks in advance, and optimise grid load balancing across renewable and conventional sources to reduce unplanned downtime by 50%.`,
|
|
1133
2612
|
protocol: 'vercel-ai',
|
|
1134
2613
|
uiExtension: 'a2ui',
|
|
1135
|
-
trigger: {
|
|
2614
|
+
trigger: {
|
|
2615
|
+
type: 'schedule',
|
|
2616
|
+
cron: '*/5 * * * *',
|
|
2617
|
+
description: 'Every 5 minutes for real-time grid monitoring and optimization',
|
|
2618
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
2619
|
+
},
|
|
1136
2620
|
modelConfig: undefined,
|
|
1137
2621
|
mcpServerTools: undefined,
|
|
1138
|
-
guardrails: [
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
2622
|
+
guardrails: [
|
|
2623
|
+
{
|
|
2624
|
+
name: 'Grid Operations Agent',
|
|
2625
|
+
identity_provider: 'datalayer',
|
|
2626
|
+
identity_name: 'grid-bot@acme.com',
|
|
2627
|
+
permissions: {
|
|
2628
|
+
'read:data': true,
|
|
2629
|
+
'write:data': false,
|
|
2630
|
+
'execute:code': true,
|
|
2631
|
+
'access:internet': false,
|
|
2632
|
+
'send:email': true,
|
|
2633
|
+
'deploy:production': false,
|
|
2634
|
+
},
|
|
2635
|
+
data_handling: { pii_detection: false },
|
|
2636
|
+
approval_policy: {
|
|
2637
|
+
require_manual_approval_for: [
|
|
2638
|
+
'Emergency load shedding recommendations',
|
|
2639
|
+
'Equipment shutdown orders',
|
|
2640
|
+
'Maintenance work orders above $50K',
|
|
2641
|
+
],
|
|
2642
|
+
auto_approved: [
|
|
2643
|
+
'Sensor data ingestion and processing',
|
|
2644
|
+
'Anomaly detection and alerting',
|
|
2645
|
+
'Load balancing recommendations',
|
|
2646
|
+
],
|
|
2647
|
+
},
|
|
2648
|
+
token_limits: { per_run: '60K', per_day: '1M', per_month: '15M' },
|
|
2649
|
+
},
|
|
2650
|
+
],
|
|
2651
|
+
evals: [
|
|
2652
|
+
{ name: 'Anomaly Detection Accuracy', category: 'coding', task_count: 600 },
|
|
2653
|
+
{
|
|
2654
|
+
name: 'Failure Prediction Lead Time',
|
|
2655
|
+
category: 'reasoning',
|
|
2656
|
+
task_count: 300,
|
|
2657
|
+
},
|
|
2658
|
+
{ name: 'Grid Stability Score', category: 'coding', task_count: 200 },
|
|
2659
|
+
],
|
|
2660
|
+
codemode: { enabled: true, token_reduction: '~95%', speedup: '~3× faster' },
|
|
2661
|
+
output: {
|
|
2662
|
+
formats: ['Dashboard', 'PDF', 'JSON'],
|
|
2663
|
+
template: 'Grid Operations Report',
|
|
2664
|
+
storage: '/outputs/grid-operations/',
|
|
2665
|
+
},
|
|
2666
|
+
advanced: {
|
|
2667
|
+
cost_limit: '$6.00 per run',
|
|
2668
|
+
time_limit: '600 seconds',
|
|
2669
|
+
max_iterations: 40,
|
|
2670
|
+
validation: 'All sensor readings must be validated against equipment specifications. Failure predictions must include confidence intervals and risk scores.\n',
|
|
2671
|
+
},
|
|
1143
2672
|
authorizationPolicy: '',
|
|
1144
|
-
notifications: {
|
|
2673
|
+
notifications: { email: 'grid-ops@company.com', slack: '#grid-operations' },
|
|
1145
2674
|
memory: 'ephemeral',
|
|
2675
|
+
preHooks: undefined,
|
|
2676
|
+
postHooks: undefined,
|
|
2677
|
+
parameters: undefined,
|
|
2678
|
+
subagents: undefined,
|
|
1146
2679
|
};
|
|
1147
2680
|
export const PROCESS_CITIZEN_REQUESTS_AGENT_SPEC_0_0_1 = {
|
|
1148
2681
|
id: 'process-citizen-requests',
|
|
1149
2682
|
version: '0.0.1',
|
|
1150
2683
|
name: 'Process Citizen Requests',
|
|
1151
2684
|
description: `A multi-agent team that automates citizen request processing for government agencies. Classifies and triages permits, FOIA requests, and benefit claims from multiple channels. Models policy impacts across population datasets and ensures every automated decision is explainable, auditable, and compliant with transparency mandates.`,
|
|
1152
|
-
tags: [
|
|
2685
|
+
tags: [
|
|
2686
|
+
'government',
|
|
2687
|
+
'public-sector',
|
|
2688
|
+
'civic',
|
|
2689
|
+
'policy',
|
|
2690
|
+
'compliance',
|
|
2691
|
+
'transparency',
|
|
2692
|
+
],
|
|
1153
2693
|
enabled: false,
|
|
1154
|
-
model: 'bedrock:us.anthropic.claude-
|
|
2694
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1155
2695
|
mcpServers: [MCP_SERVER_MAP['filesystem:0.0.1']],
|
|
1156
|
-
skills: [
|
|
2696
|
+
skills: [
|
|
2697
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
2698
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
2699
|
+
],
|
|
1157
2700
|
tools: [],
|
|
1158
|
-
frontendTools: [
|
|
2701
|
+
frontendTools: [
|
|
2702
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2703
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2704
|
+
],
|
|
1159
2705
|
environmentName: 'ai-agents-env',
|
|
1160
2706
|
icon: 'organization',
|
|
1161
2707
|
emoji: '🏛️',
|
|
1162
2708
|
color: '#0550ae',
|
|
1163
2709
|
suggestions: [
|
|
1164
|
-
|
|
1165
|
-
|
|
2710
|
+
"Show today's citizen request intake summary",
|
|
2711
|
+
"What's the current processing backlog by type?",
|
|
1166
2712
|
'Run a policy impact simulation for the proposed zoning change',
|
|
1167
2713
|
'Generate a transparency report for this quarter',
|
|
1168
2714
|
'Which requests are overdue for response?',
|
|
@@ -1177,30 +2723,106 @@ export const PROCESS_CITIZEN_REQUESTS_AGENT_SPEC_0_0_1 = {
|
|
|
1177
2723
|
goal: `Process citizen requests from web portals, email, and scanned documents. Classify by type, urgency, and jurisdiction, route to appropriate departments, model policy impacts across population datasets with Monte Carlo simulation, and generate explainable, auditable decision documentation for public record.`,
|
|
1178
2724
|
protocol: 'vercel-ai',
|
|
1179
2725
|
uiExtension: 'a2ui',
|
|
1180
|
-
trigger: {
|
|
2726
|
+
trigger: {
|
|
2727
|
+
type: 'event',
|
|
2728
|
+
description: 'Triggered on new citizen request submission from any channel',
|
|
2729
|
+
prompt: 'Handle this event trigger: Triggered on new citizen request submission from any channel',
|
|
2730
|
+
},
|
|
1181
2731
|
modelConfig: undefined,
|
|
1182
2732
|
mcpServerTools: undefined,
|
|
1183
|
-
guardrails: [
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
2733
|
+
guardrails: [
|
|
2734
|
+
{
|
|
2735
|
+
name: 'Government Services Agent',
|
|
2736
|
+
identity_provider: 'datalayer',
|
|
2737
|
+
identity_name: 'civic-bot@agency.gov',
|
|
2738
|
+
permissions: {
|
|
2739
|
+
'read:data': true,
|
|
2740
|
+
'write:data': true,
|
|
2741
|
+
'execute:code': true,
|
|
2742
|
+
'access:internet': false,
|
|
2743
|
+
'send:email': true,
|
|
2744
|
+
'deploy:production': false,
|
|
2745
|
+
},
|
|
2746
|
+
data_scope: {
|
|
2747
|
+
denied_fields: ['*SSN*', '*TaxId*', '*BankAccount*', '*CreditCard*'],
|
|
2748
|
+
},
|
|
2749
|
+
data_handling: {
|
|
2750
|
+
pii_detection: true,
|
|
2751
|
+
pii_action: 'redact',
|
|
2752
|
+
default_aggregation: true,
|
|
2753
|
+
},
|
|
2754
|
+
approval_policy: {
|
|
2755
|
+
require_manual_approval_for: [
|
|
2756
|
+
'Benefit denial decisions',
|
|
2757
|
+
'Policy recommendations affecting more than 1,000 citizens',
|
|
2758
|
+
'Any FOIA response containing redacted content',
|
|
2759
|
+
'Escalations to elected officials',
|
|
2760
|
+
],
|
|
2761
|
+
auto_approved: [
|
|
2762
|
+
'Request classification and triage',
|
|
2763
|
+
'Standard permit processing',
|
|
2764
|
+
'Aggregated statistics and reporting',
|
|
2765
|
+
],
|
|
2766
|
+
},
|
|
2767
|
+
token_limits: { per_run: '40K', per_day: '400K', per_month: '5M' },
|
|
2768
|
+
},
|
|
2769
|
+
],
|
|
2770
|
+
evals: [
|
|
2771
|
+
{ name: 'Classification Accuracy', category: 'reasoning', task_count: 500 },
|
|
2772
|
+
{ name: 'Processing Time Reduction', category: 'coding', task_count: 300 },
|
|
2773
|
+
{
|
|
2774
|
+
name: 'Transparency Compliance Score',
|
|
2775
|
+
category: 'safety',
|
|
2776
|
+
task_count: 200,
|
|
2777
|
+
},
|
|
2778
|
+
],
|
|
2779
|
+
codemode: { enabled: true, token_reduction: '~85%', speedup: '~2× faster' },
|
|
2780
|
+
output: {
|
|
2781
|
+
formats: ['PDF', 'JSON', 'Dashboard'],
|
|
2782
|
+
template: 'Citizen Services Report',
|
|
2783
|
+
storage: '/outputs/citizen-requests/',
|
|
2784
|
+
},
|
|
2785
|
+
advanced: {
|
|
2786
|
+
cost_limit: '$4.00 per run',
|
|
2787
|
+
time_limit: '300 seconds',
|
|
2788
|
+
max_iterations: 30,
|
|
2789
|
+
validation: 'All automated decisions must include human-readable explanations. Every action must be logged with timestamps for FOIA compliance.\n',
|
|
2790
|
+
},
|
|
1188
2791
|
authorizationPolicy: '',
|
|
1189
|
-
notifications: {
|
|
2792
|
+
notifications: {
|
|
2793
|
+
email: 'citizen-services@agency.gov',
|
|
2794
|
+
slack: '#citizen-services',
|
|
2795
|
+
},
|
|
1190
2796
|
memory: 'ephemeral',
|
|
2797
|
+
preHooks: undefined,
|
|
2798
|
+
postHooks: undefined,
|
|
2799
|
+
parameters: undefined,
|
|
2800
|
+
subagents: undefined,
|
|
1191
2801
|
};
|
|
1192
2802
|
export const PROCESS_CLINICAL_TRIAL_DATA_AGENT_SPEC_0_0_1 = {
|
|
1193
2803
|
id: 'process-clinical-trial-data',
|
|
1194
2804
|
version: '0.0.1',
|
|
1195
2805
|
name: 'Process Clinical Trial Data',
|
|
1196
2806
|
description: `A multi-agent team that automates clinical trial data processing across dozens of trial sites. Harmonises patient records and lab results to CDISC SDTM format, detects safety signals and adverse events in real time, and prepares submission-ready datasets — all with strict HIPAA and GxP compliance guardrails.`,
|
|
1197
|
-
tags: [
|
|
2807
|
+
tags: [
|
|
2808
|
+
'healthcare',
|
|
2809
|
+
'pharma',
|
|
2810
|
+
'clinical-trials',
|
|
2811
|
+
'patient-data',
|
|
2812
|
+
'compliance',
|
|
2813
|
+
],
|
|
1198
2814
|
enabled: false,
|
|
1199
|
-
model: 'bedrock:us.anthropic.claude-
|
|
2815
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1200
2816
|
mcpServers: [MCP_SERVER_MAP['filesystem:0.0.1']],
|
|
1201
|
-
skills: [
|
|
2817
|
+
skills: [
|
|
2818
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
2819
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
2820
|
+
],
|
|
1202
2821
|
tools: [],
|
|
1203
|
-
frontendTools: [
|
|
2822
|
+
frontendTools: [
|
|
2823
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2824
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2825
|
+
],
|
|
1204
2826
|
environmentName: 'ai-agents-env',
|
|
1205
2827
|
icon: 'heart',
|
|
1206
2828
|
emoji: '🏥',
|
|
@@ -1222,30 +2844,108 @@ export const PROCESS_CLINICAL_TRIAL_DATA_AGENT_SPEC_0_0_1 = {
|
|
|
1222
2844
|
goal: `Process clinical trial data from multiple sites: ingest patient records and lab results, harmonise to CDISC SDTM format with MedDRA coding, screen for adverse events and safety signals in real time, and prepare submission-ready datasets with full validation and audit trails.`,
|
|
1223
2845
|
protocol: 'vercel-ai',
|
|
1224
2846
|
uiExtension: 'a2ui',
|
|
1225
|
-
trigger: {
|
|
2847
|
+
trigger: {
|
|
2848
|
+
type: 'event',
|
|
2849
|
+
description: 'Triggered on new data batch arrival from clinical sites',
|
|
2850
|
+
prompt: 'Handle this event trigger: Triggered on new data batch arrival from clinical sites',
|
|
2851
|
+
},
|
|
1226
2852
|
modelConfig: undefined,
|
|
1227
2853
|
mcpServerTools: undefined,
|
|
1228
|
-
guardrails: [
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
2854
|
+
guardrails: [
|
|
2855
|
+
{
|
|
2856
|
+
name: 'HIPAA Compliant Clinical Agent',
|
|
2857
|
+
identity_provider: 'datalayer',
|
|
2858
|
+
identity_name: 'clinical-bot@acme.com',
|
|
2859
|
+
permissions: {
|
|
2860
|
+
'read:data': true,
|
|
2861
|
+
'write:data': false,
|
|
2862
|
+
'execute:code': true,
|
|
2863
|
+
'access:internet': false,
|
|
2864
|
+
'send:email': false,
|
|
2865
|
+
'deploy:production': false,
|
|
2866
|
+
},
|
|
2867
|
+
data_scope: {
|
|
2868
|
+
denied_fields: [
|
|
2869
|
+
'*SSN*',
|
|
2870
|
+
'*PatientName*',
|
|
2871
|
+
'*DateOfBirth*',
|
|
2872
|
+
'*Address*',
|
|
2873
|
+
'*Phone*',
|
|
2874
|
+
'*Email*',
|
|
2875
|
+
],
|
|
2876
|
+
},
|
|
2877
|
+
data_handling: {
|
|
2878
|
+
pii_detection: true,
|
|
2879
|
+
pii_action: 'redact',
|
|
2880
|
+
default_aggregation: true,
|
|
2881
|
+
},
|
|
2882
|
+
approval_policy: {
|
|
2883
|
+
require_manual_approval_for: [
|
|
2884
|
+
'Any serious adverse event (SAE) escalation',
|
|
2885
|
+
'Patient-level data exports',
|
|
2886
|
+
'Safety signal notifications to regulators',
|
|
2887
|
+
],
|
|
2888
|
+
auto_approved: [
|
|
2889
|
+
'Aggregated site-level statistics',
|
|
2890
|
+
'SDTM dataset transformations',
|
|
2891
|
+
],
|
|
2892
|
+
},
|
|
2893
|
+
token_limits: { per_run: '80K', per_day: '500K', per_month: '5M' },
|
|
2894
|
+
},
|
|
2895
|
+
],
|
|
2896
|
+
evals: [
|
|
2897
|
+
{ name: 'SDTM Mapping Accuracy', category: 'coding', task_count: 500 },
|
|
2898
|
+
{
|
|
2899
|
+
name: 'Adverse Event Detection Rate',
|
|
2900
|
+
category: 'safety',
|
|
2901
|
+
task_count: 300,
|
|
2902
|
+
},
|
|
2903
|
+
{ name: 'Data Quality Score', category: 'reasoning', task_count: 200 },
|
|
2904
|
+
],
|
|
2905
|
+
codemode: { enabled: true, token_reduction: '~95%', speedup: '~3× faster' },
|
|
2906
|
+
output: {
|
|
2907
|
+
formats: ['SDTM Dataset', 'PDF', 'Define.xml'],
|
|
2908
|
+
template: 'Clinical Trial Data Package',
|
|
2909
|
+
storage: '/outputs/clinical-trials/',
|
|
2910
|
+
},
|
|
2911
|
+
advanced: {
|
|
2912
|
+
cost_limit: '$8.00 per run',
|
|
2913
|
+
time_limit: '900 seconds',
|
|
2914
|
+
max_iterations: 50,
|
|
2915
|
+
validation: 'All datasets must pass CDISC SDTM validation rules. PHI must never be sent through the LLM — all patient data processed via Codemode only.\n',
|
|
2916
|
+
},
|
|
1233
2917
|
authorizationPolicy: '',
|
|
1234
|
-
notifications: {
|
|
2918
|
+
notifications: { email: 'clinical-ops@company.com', slack: '#clinical-data' },
|
|
1235
2919
|
memory: 'ephemeral',
|
|
2920
|
+
preHooks: undefined,
|
|
2921
|
+
postHooks: undefined,
|
|
2922
|
+
parameters: undefined,
|
|
2923
|
+
subagents: undefined,
|
|
1236
2924
|
};
|
|
1237
2925
|
export const PROCESS_FINANCIAL_TRANSACTIONS_AGENT_SPEC_0_0_1 = {
|
|
1238
2926
|
id: 'process-financial-transactions',
|
|
1239
2927
|
version: '0.0.1',
|
|
1240
2928
|
name: 'Process Financial Transactions',
|
|
1241
2929
|
description: `Processes and validates financial transactions across accounts. Reconciles balances, detects anomalies, enforces compliance rules, and generates audit-ready transaction reports.`,
|
|
1242
|
-
tags: [
|
|
2930
|
+
tags: [
|
|
2931
|
+
'moderation',
|
|
2932
|
+
'finance',
|
|
2933
|
+
'transactions',
|
|
2934
|
+
'compliance',
|
|
2935
|
+
'reconciliation',
|
|
2936
|
+
],
|
|
1243
2937
|
enabled: false,
|
|
1244
|
-
model: 'bedrock:us.anthropic.claude-
|
|
2938
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1245
2939
|
mcpServers: [MCP_SERVER_MAP['filesystem:0.0.1']],
|
|
1246
|
-
skills: [
|
|
2940
|
+
skills: [
|
|
2941
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
2942
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
2943
|
+
],
|
|
1247
2944
|
tools: [],
|
|
1248
|
-
frontendTools: [
|
|
2945
|
+
frontendTools: [
|
|
2946
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
2947
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
2948
|
+
],
|
|
1249
2949
|
environmentName: 'ai-agents-env',
|
|
1250
2950
|
icon: 'credit-card',
|
|
1251
2951
|
emoji: '💳',
|
|
@@ -1266,17 +2966,65 @@ export const PROCESS_FINANCIAL_TRANSACTIONS_AGENT_SPEC_0_0_1 = {
|
|
|
1266
2966
|
goal: `Process and validate incoming financial transaction batches. Reconcile balances across accounts, run AML compliance checks, flag suspicious transactions for human review, and generate audit-ready reports.`,
|
|
1267
2967
|
protocol: 'vercel-ai',
|
|
1268
2968
|
uiExtension: 'a2ui',
|
|
1269
|
-
trigger: {
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
2969
|
+
trigger: {
|
|
2970
|
+
type: 'event',
|
|
2971
|
+
description: 'Triggered on new transaction batch arrival',
|
|
2972
|
+
prompt: 'Handle this event trigger: Triggered on new transaction batch arrival',
|
|
2973
|
+
},
|
|
2974
|
+
modelConfig: { temperature: 0.1, max_tokens: 4096 },
|
|
2975
|
+
mcpServerTools: [
|
|
2976
|
+
{
|
|
2977
|
+
server: 'Transaction Ledger',
|
|
2978
|
+
tools: [
|
|
2979
|
+
{ name: 'fetch_transactions', approval: 'auto' },
|
|
2980
|
+
{ name: 'validate_transaction', approval: 'auto' },
|
|
2981
|
+
{ name: 'flag_suspicious', approval: 'manual' },
|
|
2982
|
+
{ name: 'reconcile_balances', approval: 'auto' },
|
|
2983
|
+
],
|
|
2984
|
+
},
|
|
2985
|
+
{
|
|
2986
|
+
server: 'Compliance Engine',
|
|
2987
|
+
tools: [
|
|
2988
|
+
{ name: 'check_aml_rules', approval: 'auto' },
|
|
2989
|
+
{ name: 'generate_sar', approval: 'manual' },
|
|
2990
|
+
],
|
|
2991
|
+
},
|
|
2992
|
+
],
|
|
2993
|
+
guardrails: [
|
|
2994
|
+
{
|
|
2995
|
+
name: 'Financial Data Handler',
|
|
2996
|
+
identity_provider: 'datalayer',
|
|
2997
|
+
identity_name: 'finance-bot@acme.com',
|
|
2998
|
+
permissions: {
|
|
2999
|
+
'read:data': true,
|
|
3000
|
+
'write:data': true,
|
|
3001
|
+
'execute:code': true,
|
|
3002
|
+
'access:internet': false,
|
|
3003
|
+
'send:email': false,
|
|
3004
|
+
'deploy:production': false,
|
|
3005
|
+
},
|
|
3006
|
+
token_limits: { per_run: '30K', per_day: '300K', per_month: '3M' },
|
|
3007
|
+
},
|
|
3008
|
+
],
|
|
3009
|
+
evals: [
|
|
3010
|
+
{ name: 'Transaction Accuracy', category: 'coding', task_count: 500 },
|
|
3011
|
+
{ name: 'AML Detection Rate', category: 'safety', task_count: 200 },
|
|
3012
|
+
],
|
|
3013
|
+
codemode: { enabled: true, token_reduction: '~85%', speedup: '~1.5× faster' },
|
|
3014
|
+
output: { type: 'PDF', template: 'transaction_audit_report.pdf' },
|
|
3015
|
+
advanced: {
|
|
3016
|
+
cost_limit: '$3.00 per run',
|
|
3017
|
+
time_limit: '600 seconds',
|
|
3018
|
+
max_iterations: 30,
|
|
3019
|
+
validation: 'All transactions must reconcile to zero net balance',
|
|
3020
|
+
},
|
|
1277
3021
|
authorizationPolicy: '',
|
|
1278
|
-
notifications: {
|
|
3022
|
+
notifications: { email: 'david.t@company.com', slack: '#finance-ops' },
|
|
1279
3023
|
memory: 'ephemeral',
|
|
3024
|
+
preHooks: undefined,
|
|
3025
|
+
postHooks: undefined,
|
|
3026
|
+
parameters: undefined,
|
|
3027
|
+
subagents: undefined,
|
|
1280
3028
|
};
|
|
1281
3029
|
export const SPATIAL_DATA_ANALYSIS_AGENT_SPEC_0_0_1 = {
|
|
1282
3030
|
id: 'spatial-data-analysis',
|
|
@@ -1286,10 +3034,17 @@ export const SPATIAL_DATA_ANALYSIS_AGENT_SPEC_0_0_1 = {
|
|
|
1286
3034
|
tags: ['geospatial', 'climate', 'earth-observation', 'analytics'],
|
|
1287
3035
|
enabled: true,
|
|
1288
3036
|
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1289
|
-
mcpServers: [
|
|
3037
|
+
mcpServers: [
|
|
3038
|
+
MCP_SERVER_MAP['earthdata:0.0.1'],
|
|
3039
|
+
MCP_SERVER_MAP['eurus:0.0.1'],
|
|
3040
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
3041
|
+
],
|
|
1290
3042
|
skills: [toAgentSkillSpec(SKILL_MAP['events:0.0.1'])],
|
|
1291
3043
|
tools: [],
|
|
1292
|
-
frontendTools: [
|
|
3044
|
+
frontendTools: [
|
|
3045
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
3046
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
3047
|
+
],
|
|
1293
3048
|
environmentName: 'ai-agents-env',
|
|
1294
3049
|
icon: 'globe',
|
|
1295
3050
|
emoji: '🛰️',
|
|
@@ -1300,7 +3055,7 @@ export const SPATIAL_DATA_ANALYSIS_AGENT_SPEC_0_0_1 = {
|
|
|
1300
3055
|
'Compare two regions for drought indicators and summarize differences',
|
|
1301
3056
|
'Generate an event log for each processing step',
|
|
1302
3057
|
],
|
|
1303
|
-
welcomeMessage:
|
|
3058
|
+
welcomeMessage: 'Hello, I am the Spatial Data Analysis Agent. I can discover Earthdata datasets, run Eurus-powered spatial analyses, and generate reproducible outputs for geospatial investigations.\n',
|
|
1304
3059
|
welcomeNotebook: undefined,
|
|
1305
3060
|
welcomeDocument: undefined,
|
|
1306
3061
|
sandboxVariant: 'jupyter',
|
|
@@ -1311,7 +3066,7 @@ export const SPATIAL_DATA_ANALYSIS_AGENT_SPEC_0_0_1 = {
|
|
|
1311
3066
|
## Workflow Guidance 1. Discover available Earthdata and Eurus tools. 2. Validate spatial/temporal parameters before execution. 3. Execute transformations in code and keep outputs concise. 4. Persist important run states as events.
|
|
1312
3067
|
`,
|
|
1313
3068
|
goal: undefined,
|
|
1314
|
-
protocol:
|
|
3069
|
+
protocol: undefined,
|
|
1315
3070
|
uiExtension: undefined,
|
|
1316
3071
|
trigger: undefined,
|
|
1317
3072
|
modelConfig: undefined,
|
|
@@ -1324,19 +3079,35 @@ export const SPATIAL_DATA_ANALYSIS_AGENT_SPEC_0_0_1 = {
|
|
|
1324
3079
|
authorizationPolicy: undefined,
|
|
1325
3080
|
notifications: undefined,
|
|
1326
3081
|
memory: 'ephemeral',
|
|
3082
|
+
preHooks: undefined,
|
|
3083
|
+
postHooks: undefined,
|
|
3084
|
+
parameters: undefined,
|
|
3085
|
+
subagents: undefined,
|
|
1327
3086
|
};
|
|
1328
3087
|
export const SUMMARIZE_DOCUMENTS_AGENT_SPEC_0_0_1 = {
|
|
1329
3088
|
id: 'summarize-documents',
|
|
1330
3089
|
version: '0.0.1',
|
|
1331
3090
|
name: 'Summarize Documents',
|
|
1332
3091
|
description: `A generic document summarization agent that processes PDFs, Word files, Markdown, and plain text. Produces structured executive summaries with key findings, action items, and metadata extraction. Useful across every industry vertical — from legal contracts to research papers.`,
|
|
1333
|
-
tags: [
|
|
3092
|
+
tags: [
|
|
3093
|
+
'documents',
|
|
3094
|
+
'summarization',
|
|
3095
|
+
'horizontal',
|
|
3096
|
+
'automation',
|
|
3097
|
+
'productivity',
|
|
3098
|
+
],
|
|
1334
3099
|
enabled: false,
|
|
1335
|
-
model: 'bedrock:us.anthropic.claude-
|
|
3100
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
1336
3101
|
mcpServers: [MCP_SERVER_MAP['filesystem:0.0.1']],
|
|
1337
|
-
skills: [
|
|
3102
|
+
skills: [
|
|
3103
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
3104
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
3105
|
+
],
|
|
1338
3106
|
tools: [],
|
|
1339
|
-
frontendTools: [
|
|
3107
|
+
frontendTools: [
|
|
3108
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
3109
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
3110
|
+
],
|
|
1340
3111
|
environmentName: 'ai-agents-env',
|
|
1341
3112
|
icon: 'file',
|
|
1342
3113
|
emoji: '📄',
|
|
@@ -1351,17 +3122,66 @@ export const SUMMARIZE_DOCUMENTS_AGENT_SPEC_0_0_1 = {
|
|
|
1351
3122
|
goal: `Summarize uploaded documents (PDFs, Word, Markdown, text) into structured executive summaries. Extract key findings, decisions, action items, dates, and named entities. Output a concise summary (max 500 words) plus metadata in JSON format.`,
|
|
1352
3123
|
protocol: 'vercel-ai',
|
|
1353
3124
|
uiExtension: 'a2ui',
|
|
1354
|
-
trigger: {
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
3125
|
+
trigger: {
|
|
3126
|
+
type: 'event',
|
|
3127
|
+
event: 'document_uploaded',
|
|
3128
|
+
description: 'Triggered when a new document is uploaded to the workspace',
|
|
3129
|
+
prompt: "Handle the 'document_uploaded' event and execute the workflow end-to-end.",
|
|
3130
|
+
},
|
|
3131
|
+
modelConfig: { temperature: 0.2, max_tokens: 4096 },
|
|
3132
|
+
mcpServerTools: [
|
|
3133
|
+
{
|
|
3134
|
+
server: 'Document Reader',
|
|
3135
|
+
tools: [
|
|
3136
|
+
{ name: 'read_pdf', approval: 'auto' },
|
|
3137
|
+
{ name: 'read_docx', approval: 'auto' },
|
|
3138
|
+
{ name: 'extract_text', approval: 'auto' },
|
|
3139
|
+
],
|
|
3140
|
+
},
|
|
3141
|
+
{
|
|
3142
|
+
server: 'Output Writer',
|
|
3143
|
+
tools: [
|
|
3144
|
+
{ name: 'write_summary', approval: 'auto' },
|
|
3145
|
+
{ name: 'store_metadata', approval: 'auto' },
|
|
3146
|
+
],
|
|
3147
|
+
},
|
|
3148
|
+
],
|
|
3149
|
+
guardrails: [
|
|
3150
|
+
{
|
|
3151
|
+
name: 'Default Platform User',
|
|
3152
|
+
identity_provider: 'datalayer',
|
|
3153
|
+
identity_name: 'doc-agent@acme.com',
|
|
3154
|
+
permissions: {
|
|
3155
|
+
'read:data': true,
|
|
3156
|
+
'write:data': true,
|
|
3157
|
+
'execute:code': true,
|
|
3158
|
+
'access:internet': false,
|
|
3159
|
+
'send:email': false,
|
|
3160
|
+
'deploy:production': false,
|
|
3161
|
+
},
|
|
3162
|
+
token_limits: { per_run: '30K', per_day: '300K', per_month: '3M' },
|
|
3163
|
+
},
|
|
3164
|
+
],
|
|
3165
|
+
evals: [
|
|
3166
|
+
{ name: 'Summarization Accuracy', category: 'reasoning', task_count: 350 },
|
|
3167
|
+
{ name: 'Key Finding Extraction', category: 'reasoning', task_count: 280 },
|
|
3168
|
+
{ name: 'Action Item Detection', category: 'coding', task_count: 200 },
|
|
3169
|
+
],
|
|
1359
3170
|
codemode: undefined,
|
|
1360
|
-
output: {
|
|
3171
|
+
output: {
|
|
3172
|
+
type: 'Markdown',
|
|
3173
|
+
formats: ['Markdown', 'JSON'],
|
|
3174
|
+
template: 'executive-summary-v1',
|
|
3175
|
+
storage: 's3://acme-summaries/',
|
|
3176
|
+
},
|
|
1361
3177
|
advanced: undefined,
|
|
1362
3178
|
authorizationPolicy: undefined,
|
|
1363
|
-
notifications: {
|
|
3179
|
+
notifications: { slack: '#document-summaries', email: 'team@acme.com' },
|
|
1364
3180
|
memory: 'ephemeral',
|
|
3181
|
+
preHooks: undefined,
|
|
3182
|
+
postHooks: undefined,
|
|
3183
|
+
parameters: undefined,
|
|
3184
|
+
subagents: undefined,
|
|
1365
3185
|
};
|
|
1366
3186
|
export const SYNC_CRM_CONTACTS_AGENT_SPEC_0_0_1 = {
|
|
1367
3187
|
id: 'sync-crm-contacts',
|
|
@@ -1370,11 +3190,20 @@ export const SYNC_CRM_CONTACTS_AGENT_SPEC_0_0_1 = {
|
|
|
1370
3190
|
description: `A multi-agent team that collects and aggregates contact data from multiple CRM sources, analyzes and deduplicates records, writes cleaned data back, and generates sync summary reports.`,
|
|
1371
3191
|
tags: ['sales', 'crm', 'data-sync', 'deduplication'],
|
|
1372
3192
|
enabled: false,
|
|
1373
|
-
model: 'bedrock:us.anthropic.claude-
|
|
1374
|
-
mcpServers: [
|
|
1375
|
-
|
|
3193
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
3194
|
+
mcpServers: [
|
|
3195
|
+
MCP_SERVER_MAP['filesystem:0.0.1'],
|
|
3196
|
+
MCP_SERVER_MAP['slack:0.0.1'],
|
|
3197
|
+
],
|
|
3198
|
+
skills: [
|
|
3199
|
+
toAgentSkillSpec(SKILL_MAP['pdf:0.0.1']),
|
|
3200
|
+
toAgentSkillSpec(SKILL_MAP['events:0.0.1']),
|
|
3201
|
+
],
|
|
1376
3202
|
tools: [],
|
|
1377
|
-
frontendTools: [
|
|
3203
|
+
frontendTools: [
|
|
3204
|
+
FRONTEND_TOOL_MAP['jupyter-notebook:0.0.1'],
|
|
3205
|
+
FRONTEND_TOOL_MAP['lexical-document:0.0.1'],
|
|
3206
|
+
],
|
|
1378
3207
|
environmentName: 'ai-agents-env',
|
|
1379
3208
|
icon: 'people',
|
|
1380
3209
|
emoji: '🔄',
|
|
@@ -1395,17 +3224,53 @@ export const SYNC_CRM_CONTACTS_AGENT_SPEC_0_0_1 = {
|
|
|
1395
3224
|
goal: `Collect and aggregate contact data from multiple CRM sources, analyze and deduplicate records, write cleaned data back to CRM systems, and generate sync summary reports with notifications.`,
|
|
1396
3225
|
protocol: 'vercel-ai',
|
|
1397
3226
|
uiExtension: 'a2ui',
|
|
1398
|
-
trigger: {
|
|
3227
|
+
trigger: {
|
|
3228
|
+
type: 'schedule',
|
|
3229
|
+
cron: '0 2 * * *',
|
|
3230
|
+
description: 'Daily at 02:00 — sync CRM contacts across all sources during off-peak hours.\n',
|
|
3231
|
+
prompt: 'Run the scheduled workflow and produce the configured deliverable.',
|
|
3232
|
+
},
|
|
1399
3233
|
modelConfig: undefined,
|
|
1400
3234
|
mcpServerTools: undefined,
|
|
1401
|
-
guardrails: [
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
3235
|
+
guardrails: [
|
|
3236
|
+
{
|
|
3237
|
+
name: 'GitHub CI Bot',
|
|
3238
|
+
identity_provider: 'github',
|
|
3239
|
+
identity_name: 'ci-bot@acme.com',
|
|
3240
|
+
permissions: {
|
|
3241
|
+
'read:data': true,
|
|
3242
|
+
'write:data': true,
|
|
3243
|
+
'execute:code': true,
|
|
3244
|
+
'access:internet': true,
|
|
3245
|
+
'send:email': true,
|
|
3246
|
+
'deploy:production': false,
|
|
3247
|
+
},
|
|
3248
|
+
token_limits: { per_run: '60K', per_day: '600K', per_month: '6M' },
|
|
3249
|
+
},
|
|
3250
|
+
],
|
|
3251
|
+
evals: [
|
|
3252
|
+
{ name: 'Data Quality', category: 'coding', task_count: 300 },
|
|
3253
|
+
{ name: 'Deduplication Accuracy', category: 'reasoning', task_count: 150 },
|
|
3254
|
+
],
|
|
3255
|
+
codemode: { enabled: true, token_reduction: '~85%', speedup: '~1.5× faster' },
|
|
3256
|
+
output: {
|
|
3257
|
+
formats: ['JSON', 'PDF'],
|
|
3258
|
+
template: 'CRM Sync Report',
|
|
3259
|
+
storage: '/outputs/crm-sync/',
|
|
3260
|
+
},
|
|
3261
|
+
advanced: {
|
|
3262
|
+
cost_limit: '$10.00 per run',
|
|
3263
|
+
time_limit: '600 seconds',
|
|
3264
|
+
max_iterations: 100,
|
|
3265
|
+
validation: 'All CRM records must reconcile after sync',
|
|
3266
|
+
},
|
|
1406
3267
|
authorizationPolicy: '',
|
|
1407
|
-
notifications: {
|
|
3268
|
+
notifications: { email: 'jennifer.c@company.com', slack: '#crm-sync' },
|
|
1408
3269
|
memory: 'ephemeral',
|
|
3270
|
+
preHooks: undefined,
|
|
3271
|
+
postHooks: undefined,
|
|
3272
|
+
parameters: undefined,
|
|
3273
|
+
subagents: undefined,
|
|
1409
3274
|
};
|
|
1410
3275
|
// ============================================================================
|
|
1411
3276
|
// Agent Specs Registry
|
|
@@ -1417,16 +3282,26 @@ export const AGENT_SPECS = {
|
|
|
1417
3282
|
'automate-regulatory-reporting': AUTOMATE_REGULATORY_REPORTING_AGENT_SPEC_0_0_1,
|
|
1418
3283
|
'classify-route-emails': CLASSIFY_ROUTE_EMAILS_AGENT_SPEC_0_0_1,
|
|
1419
3284
|
'comprehensive-sales-analytics': COMPREHENSIVE_SALES_ANALYTICS_AGENT_SPEC_0_0_1,
|
|
1420
|
-
|
|
3285
|
+
crawler: CRAWLER_AGENT_SPEC_0_0_1,
|
|
1421
3286
|
'data-acquisition': DATA_ACQUISITION_AGENT_SPEC_0_0_1,
|
|
3287
|
+
'datalayer-agent': DATALAYER_AGENT_SPEC_0_0_1,
|
|
1422
3288
|
'demo-full': DEMO_FULL_AGENT_SPEC_0_0_1,
|
|
3289
|
+
'demo-guardrails': DEMO_GUARDRAILS_AGENT_SPEC_0_0_1,
|
|
3290
|
+
'demo-hooks': DEMO_HOOKS_AGENT_SPEC_0_0_1,
|
|
3291
|
+
'demo-mcp': DEMO_MCP_AGENT_SPEC_0_0_1,
|
|
3292
|
+
'demo-monitoring': DEMO_MONITORING_AGENT_SPEC_0_0_1,
|
|
1423
3293
|
'demo-one-trigger-approval': DEMO_ONE_TRIGGER_APPROVAL_AGENT_SPEC_0_0_1,
|
|
1424
3294
|
'demo-one-trigger': DEMO_ONE_TRIGGER_AGENT_SPEC_0_0_1,
|
|
3295
|
+
'demo-outputs': DEMO_OUTPUTS_AGENT_SPEC_0_0_1,
|
|
3296
|
+
'demo-parameters': DEMO_PARAMETERS_AGENT_SPEC_0_0_1,
|
|
1425
3297
|
'demo-simple': DEMO_SIMPLE_AGENT_SPEC_0_0_1,
|
|
3298
|
+
'demo-subagents': DEMO_SUBAGENTS_AGENT_SPEC_0_0_1,
|
|
3299
|
+
'demo-tavily-codemode': DEMO_TAVILY_CODEMODE_AGENT_SPEC_0_0_1,
|
|
3300
|
+
'demo-tavily-no-codemode': DEMO_TAVILY_NO_CODEMODE_AGENT_SPEC_0_0_1,
|
|
1426
3301
|
'end-of-month-sales-performance': END_OF_MONTH_SALES_PERFORMANCE_AGENT_SPEC_0_0_1,
|
|
1427
3302
|
'extract-data-from-files': EXTRACT_DATA_FROM_FILES_AGENT_SPEC_0_0_1,
|
|
1428
3303
|
'financial-viz': FINANCIAL_VIZ_AGENT_SPEC_0_0_1,
|
|
1429
|
-
|
|
3304
|
+
financial: FINANCIAL_AGENT_SPEC_0_0_1,
|
|
1430
3305
|
'generate-weekly-reports': GENERATE_WEEKLY_REPORTS_AGENT_SPEC_0_0_1,
|
|
1431
3306
|
'github-agent': GITHUB_AGENT_SPEC_0_0_1,
|
|
1432
3307
|
'information-routing': INFORMATION_ROUTING_AGENT_SPEC_0_0_1,
|
|
@@ -1464,7 +3339,9 @@ export function getAgentSpecs(agentId) {
|
|
|
1464
3339
|
*/
|
|
1465
3340
|
export function listAgentSpecs(prefix) {
|
|
1466
3341
|
const specs = Object.values(AGENT_SPECS);
|
|
1467
|
-
return prefix !== undefined
|
|
3342
|
+
return prefix !== undefined
|
|
3343
|
+
? specs.filter(s => s.id.startsWith(prefix))
|
|
3344
|
+
: specs;
|
|
1468
3345
|
}
|
|
1469
3346
|
/**
|
|
1470
3347
|
* Collect all required environment variables for an agent spec.
|