diff --git a/README.md b/README.md index 1ef162b..fa567fb 100644 --- a/README.md +++ b/README.md @@ -1,484 +1,279 @@ -# ๐Ÿค–๐Ÿ‘ทโ€โ™‚๏ธ Agent Specs + -YAML-based specifications for AI agents, MCP servers, skills, and environment variables. +[![Datalayer](https://assets.datalayer.tech/datalayer-25.svg)](https://datalayer.ai) -## Overview +[![Become a Sponsor](https://img.shields.io/static/v1?label=Become%20a%20Sponsor&message=%E2%9D%A4&logo=GitHub&style=flat&color=1ABC9C)](https://github.com/sponsors/datalayer) -This repository contains declarative specifications in YAML format that define: +# ๐Ÿงพ Agentspecs -### Specification Types -- **Agent Specs** (`agentspecs/agents/`) - Agent configurations organized by category (code-ai/, codemode-paper/, datalayer-ai/) -- **MCP Server Specs** (`agentspecs/mcp-servers/`) - MCP server commands and environment variables -- **Skill Specs** (`agentspecs/skills/`) - Agent skills with dependencies and env vars -- **Envvar Specs** (`agentspecs/envvars/`) - Environment variable definitions with registration URLs +YAML-based specifications for AI agents, MCP servers, skills and more... -These YAML specifications serve as the single source of truth for agent configurations and can be consumed by any system that implements the schema. +## Overview -## Directory Structure +This repository is the source of truth for declarative specs consumed by Agent Runtimes code generation. -``` -agentspecs/ -โ”œโ”€โ”€ agents/ # Agent specifications (organized by category) -โ”‚ โ”œโ”€โ”€ code-ai/ # Code-focused agents -โ”‚ โ”‚ โ”œโ”€โ”€ coder.yaml -โ”‚ โ”‚ โ”œโ”€โ”€ simple.yaml -โ”‚ โ”‚ โ””โ”€โ”€ tux.yaml -โ”‚ โ”œโ”€โ”€ codemode-paper/ # Research paper agents -โ”‚ โ”‚ โ”œโ”€โ”€ crawler-mcp.yaml -โ”‚ โ”‚ โ”œโ”€โ”€ financial-viz.yaml -โ”‚ โ”‚ โ”œโ”€โ”€ information-routing.yaml -โ”‚ โ”‚ โ””โ”€โ”€ task-decomposition.yaml -โ”‚ โ””โ”€โ”€ datalayer-ai/ # Data-focused agents -โ”‚ โ”œโ”€โ”€ data-acquisition.yaml -โ”‚ โ”œโ”€โ”€ github-agent.yaml -โ”‚ โ”œโ”€โ”€ simple.yaml -โ”‚ โ””โ”€โ”€ web-search.yaml -โ”œโ”€โ”€ mcp-servers/ # MCP server specifications -โ”‚ โ”œโ”€โ”€ kaggle.yaml -โ”‚ โ”œโ”€โ”€ github.yaml -โ”‚ โ”œโ”€โ”€ filesystem.yaml -โ”‚ โ”œโ”€โ”€ tavily.yaml -โ”‚ โ””โ”€โ”€ ... -โ”œโ”€โ”€ skills/ # Skill specifications -โ”‚ โ”œโ”€โ”€ data-analysis.yaml -โ”‚ โ””โ”€โ”€ ... -โ”œโ”€โ”€ envvars/ # Environment variable specifications -โ”‚ โ”œโ”€โ”€ KAGGLE_TOKEN.yaml -โ”‚ โ”œโ”€โ”€ GITHUB_TOKEN.yaml -โ”‚ โ”œโ”€โ”€ TAVILY_API_KEY.yaml -โ”‚ โ””โ”€โ”€ ... -โ”œโ”€โ”€ agent-spec.schema.yaml # JSON Schema for validation -โ””โ”€โ”€ README.md # This file -``` +The YAML files in [agentspecs/agentspecs](agentspecs) are compiled into Python and TypeScript catalogs used by runtime and UI layers. -## Agent Specifications - -Agent IDs are automatically prefixed with their folder name, ensuring uniqueness across categories. -For example, an agent in `code-ai/simple.yaml` will have ID `"code-ai/simple"`, while `datalayer-ai/simple.yaml` has ID `"datalayer-ai/simple"`. - -### Required Fields -- **`id`** (string): Unique identifier within folder (kebab-case). The full ID becomes `folder/id` (e.g., `code-ai/simple`) -- **`name`** (string): Display name -- **`description`** (string): Agent capabilities description - -### Optional Fields -- **`tags`** (list): Categorization tags -- **`enabled`** (boolean): Whether agent is active (default: `true`) -- **`mcp_servers`** (list): MCP server IDs to use -- **`skills`** (list): Agent skills -- **`environment_name`** (string): Runtime environment (default: `"ai-agents"`) -- **`icon`** (string): UI icon identifier -- **`emoji`** (string): UI emoji identifier (e.g., `"๐Ÿ“Š"`) -- **`color`** (string): Hex color code (e.g., `"#3B82F6"`) -- **`suggestions`** (list): Chat examples -- **`welcome_message`** (string): Greeting message -- **`system_prompt`** (string): Base system prompt for the agent -- **`system_prompt_codemode_addons`** (string): Additional instructions for Code Mode execution environment -- **`welcome_notebook`** (string): Jupyter notebook path -- **`welcome_document`** (string): Lexical document path - -### Agent Organization - -Agents are organized in subfolders by category: -- **`code-ai/`**: Code-focused agents (coder, simple, tux) -- **`codemode-paper/`**: Research paper agents (crawler-mcp, financial-viz, information-routing, task-decomposition) -- **`datalayer-ai/`**: Data-focused agents (data-acquisition, github-agent, simple, web-search) - -This folder structure: -1. **Prevents ID conflicts**: Multiple agents can have the same base ID (e.g., "simple") in different folders -2. **Improves organization**: Related agents are grouped together -3. **Enables categorization**: Frontend can display agents by category -4. **Maintains clarity**: Full IDs like "code-ai/simple" clearly show the agent's purpose +## Current Repository Structure -### Example -```yaml -# File: agentspecs/agents/codemode-paper/financial-viz.yaml -# Full ID will be: "codemode-paper/financial-viz" -id: financial-viz -name: Financial Visualization Agent (Viz) -description: > - Analyzes financial market data and creates visualizations and charts. +```text +agentspecs/ +โ”œโ”€โ”€ agents/ # Agentspecs +โ”œโ”€โ”€ teams/ # Team orchestration specs +โ”œโ”€โ”€ mcp-servers/ # MCP server specs +โ”œโ”€โ”€ skills/ # Skill specs +โ”œโ”€โ”€ tools/ # Runtime tool specs +โ”œโ”€โ”€ envvars/ # Environment variable specs +โ”œโ”€โ”€ models/ # Model specs +โ”œโ”€โ”€ memory/ # Memory backend specs +โ”œโ”€โ”€ guardrails/ # Guardrail policy specs +โ”œโ”€โ”€ evals/ # Evaluator specs +โ”œโ”€โ”€ benchmarks/ # Benchmark suite specs +โ”œโ”€โ”€ triggers/ # Trigger specs +โ”œโ”€โ”€ outputs/ # Output format specs +โ””โ”€โ”€ notifications/ # Notification channel specs +``` -tags: - - finance - - stocks - - visualization +Current YAML file counts: -enabled: true +- Agents: 26 +- Teams: 9 +- MCP servers: 12 +- Skills: 4 +- Tools: 3 +- Env vars: 10 +- Models: 20 +- Memory backends: 4 +- Guardrails: 6 +- Evals: 9 +- Benchmarks: 8 +- Triggers: 3 +- Outputs: 8 +- Notifications: 4 -mcp_servers: - - alphavantage - - chart +## Versioning -skills: [] +All specs are versioned. -environment_name: ai-agents-env +### Required Version Field -icon: trending-up -emoji: ๐Ÿ“ˆ -color: "#F59E0B" +Each spec includes: -suggestions: - - Show me the stock price history for AAPL - - Create a chart comparing MSFT and GOOGL over the last year - - Analyze the trading volume trends for Tesla +- `id`: logical identifier +- `version`: semantic version string (currently `0.0.1` for all shipped specs) -welcome_message: > - Welcome! I'm the Financial Visualization Agent. I can help you analyze - stock market data, track financial instruments, and create charts to - visualize market trends. +Example: -system_prompt: > - You are a financial market analyst with access to Alpha Vantage market data and chart generation tools. - You can fetch stock prices, analyze trading volumes, create visualizations, and track market trends. - Provide clear insights with relevant data points and generate charts to illustrate patterns. - -system_prompt_codemode_addons: > - ## IMPORTANT: Be Honest About Your Capabilities - NEVER claim to have tools or capabilities you haven't verified. - - ## Core Codemode Tools - Use these 4 tools to accomplish any task: - 1. **list_servers** - List available MCP servers - 2. **search_tools** - Progressive tool discovery by natural language query - 3. **get_tool_details** - Get full tool schema and documentation - 4. **execute_code** - Run Python code that composes multiple tools - - ## Recommended Workflow - 1. **Discover**: Use list_servers and search_tools to find relevant tools - 2. **Understand**: Use get_tool_details to check parameters - 3. **Execute**: Use execute_code to perform multi-step tasks +```yaml +id: data-acquisition +version: 0.0.1 +name: Data Acquisition Agent ``` -## MCP Server Specifications +### Versioned References -### Required Fields -- **`id`** (string): Unique identifier (kebab-case) -- **`name`** (string): Display name -- **`description`** (string): Server capabilities description -- **`command`** (string): Executable command (e.g., `"npx"`, `"python"`) -- **`args`** (list): Command arguments +Cross-spec references should use `id:version` format. -### Optional Fields -- **`transport`** (string): Transport protocol (`"stdio"`, `"remote"`) -- **`envvars`** (list): References to environment variable specification IDs -- **`env`** (dict): Environment variables to set for the server process -- **`tags`** (list): Categorization tags +Examples: -### Environment Variables -Use `${VAR_NAME}` syntax in args for environment variable expansion: ```yaml -args: - - "-m" - - "mcp_remote" - - "--Authorization" - - "Bearer ${KAGGLE_TOKEN}" -``` +mcp_servers: + - tavily:0.0.1 -### Example -```yaml -id: kaggle -name: Kaggle MCP Server -description: Access Kaggle datasets, competitions, and kernels - -command: python -args: - - "-m" - - "mcp_remote" - - "--Authorization" - - "Bearer ${KAGGLE_TOKEN}" - - "--accept" - - "application/json" - - "--" - - "https://mcp.kaggle.com" - -transport: remote +skills: + - github:0.0.1 envvars: - - KAGGLE_TOKEN + - TAVILY_API_KEY:0.0.1 -tags: - - data - - kaggle - - datasets +agent_spec_id: comprehensive-sales-analytics:0.0.1 ``` -## Skill Specifications +### Runtime Catalog Aliases -### Required Fields -- **`id`** (string): Unique identifier (kebab-case) -- **`name`** (string): Display name -- **`description`** (string): Skill capabilities description -- **`module`** (string): Python module path (e.g., `"agent_skills.data_analysis"`) +Generated catalogs are keyed by unversioned id only (e.g. `data-acquisition`). -### Optional Fields -- **`envvars`** (list): References to environment variable specification IDs -- **`optional_env_vars`** (list): Optional environment variables -- **`dependencies`** (list): Required Python packages -- **`tags`** (list): Categorization tags +The `get_*` / `get*Spec` accessor functions accept both bare ids and versioned refs (`data-acquisition:0.0.1`), stripping the version suffix automatically. -### Example -```yaml -id: data-analysis -name: Data Analysis Skill -description: Perform statistical analysis and data visualization +Iterating catalog values (`.values()` / `Object.values()`) returns each spec exactly once โ€” no deduplication is needed. -module: agent_skills.data_analysis +### Default Version During Codegen -envvars: - - OPENAI_API_KEY - -optional_env_vars: - - PLOT_DPI - - CHART_THEME - -dependencies: - - pandas>=2.0.0 - - matplotlib>=3.7.0 - - seaborn>=0.12.0 - - numpy>=1.24.0 - -tags: - - data - - analysis - - visualization -``` +Code generation enforces a default spec version of `0.0.1` if omitted (`scripts/codegen/versioning.py`). -## Environment Variable Specifications +In practice, specs in this repository should always declare `version` explicitly. -### Required Fields -- **`id`** (string): Unique identifier (UPPER_SNAKE_CASE, e.g., `"KAGGLE_TOKEN"`) -- **`name`** (string): Display name -- **`description`** (string): Purpose and usage description +## Spec Types -### Optional Fields -- **`registrationUrl`** (string): URL where users can obtain the variable (e.g., API key registration page) -- **`tags`** (list): Categorization tags +### Agents (`agentspecs/agents`) -### Linking to Specs -Environment variables are linked to MCP servers and skills through the `envvars` field: +Defines agent behavior and runtime defaults. -```yaml -# In MCP server or skill spec -envvars: - - KAGGLE_TOKEN - - GITHUB_TOKEN -``` +Common fields: -### Example -```yaml -id: KAGGLE_TOKEN -name: Kaggle API Token -description: > - API token for accessing Kaggle datasets, competitions, notebooks, and models. - Required for Kaggle MCP server authentication. -registrationUrl: https://www.kaggle.com/settings/account - -tags: - - authentication - - api-key - - kaggle - - data -``` +- `id`, `version`, `name`, `description`, `enabled` +- `model`, `sandbox_variant`, `memory` +- `mcp_servers`, `skills`, `tools` +- `environment_name` +- `icon`, `emoji`, `color` +- `suggestions`, `welcome_message`, `welcome_notebook`, `welcome_document` +- `system_prompt`, `system_prompt_codemode_addons` +- Optional workflow fields such as `goal`, `trigger`, `guardrails`, `evals`, `output`, `notifications`, `advanced` -### Available Environment Variables -See `specs/envvars/` for all defined environment variables: -- **KAGGLE_TOKEN**: Kaggle API authentication -- **GITHUB_TOKEN**: GitHub authentication for MCP server and skills -- **TAVILY_API_KEY**: Tavily search and web crawling -- **ALPHAVANTAGE_API_KEY**: Alpha Vantage financial data -- **SLACK_BOT_TOKEN**: Slack bot authentication -- **SLACK_TEAM_ID**: Slack workspace identifier -- **SLACK_CHANNEL_IDS**: Slack channel access list -- **GOOGLE_OAUTH_CLIENT_ID**: Google Workspace OAuth client ID -- **GOOGLE_OAUTH_CLIENT_SECRET**: Google Workspace OAuth secret +### Teams (`agentspecs/teams`) -## Schema Validation +Defines multi-agent orchestration over an underlying agent spec. -All YAML specifications are validated against the JSON Schema defined in `agent-spec.schema.yaml`. +Common fields: -The schema validates: -- Required fields are present -- ID format (kebab-case for most, UPPER_SNAKE_CASE for envvars) -- Color format (hex codes like `#3B82F6`) -- List and object structures -- Field types and constraints +- `id`, `version`, `name`, `description`, `enabled` +- `agent_spec_id` (versioned) +- `orchestration_protocol`, `execution_mode`, `supervisor` +- `agents` (team members), `reaction_rules`, `health_monitoring` +- `notifications`, `output` +### MCP Servers (`agentspecs/mcp-servers`) +Defines MCP integrations and process startup configuration. -## Creating New Specifications +Common fields: -### Adding a New Agent -1. Choose the appropriate folder: `code-ai/`, `codemode-paper/`, or `datalayer-ai/` -2. Create `agentspecs/agents//my-agent.yaml` -3. The agent ID will automatically become `/my-agent` -4. Follow the Agent Specification format described above +- `id`, `version`, `name`, `description` +- `command`, `args`, `transport` +- `env`, `envvars` (usually versioned) +- `tags`, `icon`, `emoji` -### Adding a New MCP Server -1. Create `agentspecs/mcp-servers/my-server.yaml` -2. Follow the MCP Server Specification format described above +### Skills (`agentspecs/skills`) -### Adding a New Skill -1. Create `agentspecs/skills/my-skill.yaml` -2. Follow the Skill Specification format described above +Defines reusable skill modules. -### Adding a New Environment Variable -1. Create `agentspecs/envvars/MY_VAR.yaml` -2. Use UPPER_SNAKE_CASE for the filename and `id` field -3. Follow the Environment Variable Specification format described above +Common fields: -## Environment Variable References +- `id`, `version`, `name`, `description`, `module` +- `envvars`, `optional_env_vars`, `dependencies` +- `tags`, `icon`, `emoji` -MCP servers and skills can reference environment variables defined in the `envvars/` directory: +### Tools (`agentspecs/tools`) -- **`envvars`**: List of environment variable IDs that are required -- **`optional_env_vars`**: List of environment variable IDs that are optional -- **`env`**: Dictionary of environment variables to set for the server process -- **Variable Expansion**: Use `${VAR_NAME}` syntax in args for runtime expansion +Defines runtime tool metadata and implementation binding. -Example: -```yaml -# MCP server with auth token -args: - - "--Authorization" - - "Bearer ${KAGGLE_TOKEN}" +Common fields: -envvars: - - KAGGLE_TOKEN -``` +- `id`, `version`, `name`, `description`, `enabled` +- `approval` +- `runtime.language`, `runtime.package`, `runtime.method` +- `tags`, `icon`, `emoji` -The `${KAGGLE_TOKEN}` will be expanded at runtime by consuming systems. +### Env Vars (`agentspecs/envvars`) -## Best Practices +Defines environment variable metadata. -1. **Naming**: Use kebab-case for IDs (`data-acquisition`, not `data_acquisition`). Exception: envvars use UPPER_SNAKE_CASE. -2. **Descriptions**: Be specific about capabilities and use cases -3. **Tags**: Use consistent tags across related specs for better categorization -4. **Environment Variables**: Always define envvars in `envvars/` directory and reference them by ID -5. **Dependencies**: Pin major versions for skills (`pandas>=2.0.0`) to avoid breaking changes -6. **Colors**: Use hex color codes consistently (e.g., `#3B82F6` for blue) -7. **Suggestions**: Provide 3-5 clear, actionable example prompts -8. **System Prompts**: Keep base `system_prompt` general, use `system_prompt_codemode_addons` for execution-specific instructions -9. **Organization**: Place agents in appropriate subfolders (code-ai/, codemode-paper/, datalayer-ai/) based on their purpose - -## YAML Guidelines - -### Valid YAML -- Use 2 spaces for indentation (not tabs) -- Quote strings that contain special characters -- Use `>` or `|` for multi-line strings -- Ensure all required fields are present - -### Common Issues -- **Invalid indentation**: Use 2 spaces consistently -- **Missing required fields**: Check schema for required fields (id, name, description) -- **Invalid ID format**: Use kebab-case (lowercase with hyphens) -- **Invalid color codes**: Use 6-digit hex codes starting with # (e.g., `#3B82F6`) -- **Broken references**: Ensure referenced envvars, skills, or mcp_servers exist - -## Contributing - -When adding new specifications: -1. Follow the YAML schema format defined in `agent-spec.schema.yaml` -2. Add appropriate tags for categorization -3. Define environment variables in `envvars/` directory -4. Use consistent naming conventions (kebab-case for most, UPPER_SNAKE_CASE for envvars) -5. Provide clear descriptions and examples -6. Update this README if adding new patterns or conventions - -## Available MCP Servers - -The following MCP servers are defined in `agentspecs/mcp-servers/`: - -- `tavily` - Web search via Tavily API -- `filesystem` - Local filesystem operations -- `github` - GitHub repository operations -- `google-workspace` - Google Workspace integration -- `slack` - Slack messaging -- `kaggle` - Kaggle datasets and competitions -- `alphavantage` - Financial market data -- `chart` - Chart generation - -Reference these server IDs in the `mcp_servers` field of agent specifications. +Common fields: -## Best Practices +- `id`, `version`, `name`, `description` +- `registrationUrl`, `tags`, `icon`, `emoji` -### Naming -- **ID**: kebab-case (`data-acquisition`) -- **Name**: Title Case with "Agent" suffix -- **Constants**: Auto-generated as `SCREAMING_SNAKE_CASE_AGENT_SPEC` +### Models (`agentspecs/models`) -### Colors -- **Blue** (`#3B82F6`): Data and information -- **Green** (`#10B981`): Web and networking -- **Indigo** (`#6366F1`): Development and code -- **Amber** (`#F59E0B`): Finance and analytics -- **Pink** (`#EC4899`): Communication and workflow +Defines model options available to specs. -### Content Guidelines -- **Descriptions**: 1-2 sentences, present tense -- **Suggestions**: 3-5 concrete examples with action verbs -- **Tags**: 2-5 relevant categorization keywords +Common fields: -## Design Principles +- `id`, `version`, `name`, `description`, `provider` +- `default` +- `required_env_vars` -1. **Single Source of Truth**: YAML files are the authoritative specification -2. **Declarative**: Define what agents can do, not how they do it -3. **Composable**: Agents reference MCP servers and skills by ID -4. **Validated**: JSON Schema ensures consistency and correctness -5. **Extensible**: Easy to add new fields or specification types -6. **Human-Readable**: YAML format is easy to read and edit +### Other Catalogs -## Specification Structure +- `memory`: memory backend options +- `guardrails`: security and policy profiles +- `evals`: evaluator definitions +- `benchmarks`: benchmark suites (with evaluator dependencies) +- `triggers`: reusable trigger templates +- `outputs`: output format templates/capabilities +- `notifications`: notification channel templates -### Agent Hierarchy -``` -Agent Specification -โ”œโ”€โ”€ Basic Info (id, name, description, tags) -โ”œโ”€โ”€ Configuration (enabled, environment_name) -โ”œโ”€โ”€ Capabilities -โ”‚ โ”œโ”€โ”€ MCP Servers (references to mcp-servers/*.yaml) -โ”‚ โ””โ”€โ”€ Skills (references to skills/*.yaml) -โ”œโ”€โ”€ UI Customization (icon, emoji, color) -โ”œโ”€โ”€ User Guidance (suggestions, welcome_message) -โ””โ”€โ”€ Prompts - โ”œโ”€โ”€ system_prompt (base instructions) - โ””โ”€โ”€ system_prompt_codemode_addons (execution mode instructions) -``` +## Adding or Updating Specs -### MCP Server Specification -``` -MCP Server Specification -โ”œโ”€โ”€ Basic Info (id, name, description, tags) -โ”œโ”€โ”€ Execution (command, args, transport) -โ”œโ”€โ”€ Environment -โ”‚ โ”œโ”€โ”€ envvars (required environment variables) -โ”‚ โ””โ”€โ”€ env (variables to set for the process) -โ””โ”€โ”€ UI (icon, emoji) -``` +1. Add or edit YAML in the relevant folder under [agentspecs/agentspecs](agentspecs). +2. Always set `id` and `version`. +3. Use versioned cross-references (`name:version`) in fields that reference other specs. +4. Keep IDs stable; bump `version` when introducing breaking changes. +5. Regenerate catalogs in Agent Runtimes (`make specs`) and validate consumers. -### Skill Specification -``` -Skill Specification -โ”œโ”€โ”€ Basic Info (id, name, description, tags) -โ”œโ”€โ”€ Implementation (module) -โ”œโ”€โ”€ Environment -โ”‚ โ”œโ”€โ”€ envvars (required environment variables) -โ”‚ โ””โ”€โ”€ optional_env_vars (optional variables) -โ”œโ”€โ”€ Dependencies (Python packages) -โ””โ”€โ”€ UI (icon, emoji) -``` +## Parameters (Launch-Time Inputs) -### Environment Variable Specification -``` -Environment Variable Specification -โ”œโ”€โ”€ Basic Info (id, name, description) -โ”œโ”€โ”€ Registration (registrationUrl) -โ”œโ”€โ”€ Categorization (tags) -โ””โ”€โ”€ UI (icon, emoji) +Agentspecs support a `parameters` field using JSON Schema. This lets one spec +be reused across multiple launches while keeping runtime inputs validated and +explicit. + +### What parameters provide + +- **Validation**: enforce `type`, `enum`, `required`, and defaults. +- **Templating**: inject values into text fields using `{{parameter_name}}`. +- **Reusability**: same agent spec, different runtime contexts. + +### Typical template targets + +- `system_prompt` +- `welcome_message` +- `pre_hooks.sandbox` +- other template-aware text fields + +### Example + +```yaml +id: demo-parameters +version: 0.0.1 + +parameters: + type: object + properties: + project: + type: string + default: Orbit + role: + type: string + enum: + - product analyst + - engineering lead + - support specialist + default: product analyst + required: + - project + +welcome_message: > + This runtime was launched for project {{project}}. + +system_prompt: > + You are an assistant dedicated to {{project}}. + +pre_hooks: + sandbox: + - | + project_name = """{{project}}""" ``` +### Validation notes + +- Missing required parameters fail validation. +- Invalid enum values fail validation. +- Optional parameters use defaults when available. + +## Best Practices + +- Use kebab-case IDs for most specs (`analyze-support-tickets`). +- Use UPPER_SNAKE_CASE for env var IDs (`TAVILY_API_KEY`). +- Keep descriptions concise and action-oriented. +- Prefer explicit versioned references, even when alias lookup works. +- Maintain backward compatibility by preserving old versions when possible. + ## License Copyright (c) 2025-2026 Datalayer, Inc. + Distributed under the terms of the Modified BSD License. diff --git a/agentspecs/__version__.py b/agentspecs/__version__.py index ae0a29c..80c5f8a 100644 --- a/agentspecs/__version__.py +++ b/agentspecs/__version__.py @@ -4,4 +4,4 @@ """Agentspecs.""" -__version__ = "0.0.2" +__version__ = "0.0.4" diff --git a/agentspecs/agents/mocks/analyze-campaign-performance.yaml b/agentspecs/agents/analyze-campaign-performance.yaml similarity index 65% rename from agentspecs/agents/mocks/analyze-campaign-performance.yaml rename to agentspecs/agents/analyze-campaign-performance.yaml index de679f0..0fdd548 100644 --- a/agentspecs/agents/mocks/analyze-campaign-performance.yaml +++ b/agentspecs/agents/analyze-campaign-performance.yaml @@ -7,6 +7,7 @@ # and optimises budget allocation across advertising channels. id: analyze-campaign-performance +version: 0.0.1 name: Analyze Campaign Performance description: > A multi-agent team that unifies marketing data from Google Ads, Meta, @@ -21,11 +22,9 @@ tags: - analytics - advertising - social-media - - team -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -34,15 +33,19 @@ memory: ephemeral # MCP servers used by this agent team mcp_servers: - - filesystem - - slack + - filesystem:0.0.1 + - slack:0.0.1 # Skills available to this agent team skills: - - pdf - - crawl + - pdf:0.0.1 + - crawl:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -50,77 +53,6 @@ icon: megaphone emoji: ๐Ÿ“ข color: "#8250df" # Purple โ€” media & creativity -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: Campaign Analytics Orchestrator Agent - model: "openai-gpt-4-1" - routing_instructions: > - Start with Platform Connector to pull data from all ad platforms, - then Metrics Normaliser for unified KPIs, then Anomaly Detector for - real-time performance monitoring, then Budget Optimiser for reallocation - recommendations. Escalate CPA spikes above 50% immediately. - validation: - timeout: "300s" - retry_on_failure: true - max_retries: 2 - agents: - - id: cp-1 - name: Platform Connector Agent - role: "Primary ยท Initiator" - goal: Pull campaign data from Google Ads, Meta, TikTok, LinkedIn, GA4, and email platforms - model: "openai-gpt-4-1" - mcp_server: Ad Platforms MCP - tools: - - Google Ads Connector - - Meta Ads Connector - - TikTok Ads Connector - - LinkedIn Ads Connector - - GA4 Connector - trigger: "Schedule: Every 4 hours" - approval: auto - - id: cp-2 - name: Metrics Normaliser Agent - role: Secondary - goal: Normalise CPA, ROAS, CTR, and attribution across all platforms into unified view - model: "openai-gpt-4-1" - mcp_server: Analytics MCP - tools: - - Metric Unifier - - Currency Converter - - Attribution Mapper - - Naming Convention Resolver - trigger: "On completion of Platform Connector Agent" - approval: auto - - id: cp-3 - name: Anomaly Detector Agent - role: Secondary - goal: Monitor all KPIs for CTR drops, CPA spikes, and budget pacing issues - model: "anthropic-claude-sonnet-4" - mcp_server: Monitoring MCP - tools: - - Anomaly Scanner - - Budget Pacer - - Alert Generator - - Campaign Pauser - trigger: "On completion of Metrics Normaliser Agent" - approval: manual - - id: cp-4 - name: Budget Optimiser Agent - role: Final - goal: Generate budget reallocation recommendations to maximise ROAS across channels - model: "openai-gpt-4-1" - mcp_server: Optimisation MCP - tools: - - ROAS Calculator - - Budget Allocator - - Scenario Modeller - - Report Generator - trigger: "On completion of Anomaly Detector Agent" - approval: manual - # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Unify marketing data from Google Ads, Meta, TikTok, LinkedIn, GA4, and email @@ -129,7 +61,7 @@ goal: >- generate budget reallocation recommendations to maximise ROAS. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Evals @@ -167,6 +99,7 @@ trigger: type: schedule cron: "0 */4 * * *" description: Every 4 hours for cross-platform campaign data sync and analysis + prompt: "Run the scheduled workflow and produce the configured deliverable." # Output configuration output: diff --git a/agentspecs/agents/mocks/analyze-support-tickets.yaml b/agentspecs/agents/analyze-support-tickets.yaml similarity index 67% rename from agentspecs/agents/mocks/analyze-support-tickets.yaml rename to agentspecs/agents/analyze-support-tickets.yaml index 94ffd62..786a117 100644 --- a/agentspecs/agents/mocks/analyze-support-tickets.yaml +++ b/agentspecs/agents/analyze-support-tickets.yaml @@ -7,6 +7,7 @@ # Source: UI mock flow id=4 (Agents.tsx) id: analyze-support-tickets +version: 0.0.1 name: Analyze Support Tickets description: > A multi-agent team that triages incoming support tickets, categorizes by @@ -18,11 +19,9 @@ tags: - data - support - tickets - - team -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -31,15 +30,19 @@ memory: ephemeral # MCP servers used by this agent team mcp_servers: - - filesystem - - slack + - filesystem:0.0.1 + - slack:0.0.1 # Skills available to this agent team skills: - - pdf - - crawl + - pdf:0.0.1 + - crawl:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -47,58 +50,6 @@ icon: issue-opened emoji: ๐ŸŽซ color: "#bf8700" # Amber โ€” paused status -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: Support Orchestrator Agent - model: "openai-gpt-4-1" - routing_instructions: > - Route new tickets to the Triage Agent first, then to the Categorizer, - then to the Pattern Analyzer. Escalate P1/critical tickets immediately - to human support leads. - validation: - timeout: "180s" - retry_on_failure: true - max_retries: 2 - agents: - - id: st-1 - name: Triage Agent - role: "Primary ยท Initiator" - goal: Ingest new support tickets and assess urgency level (P1-P4) - model: "openai-gpt-4-1" - mcp_server: Helpdesk MCP - tools: - - Ticket Reader - - Priority Classifier - trigger: "Event: new ticket received" - approval: auto - - id: st-2 - name: Categorizer Agent - role: Secondary - goal: Categorize tickets by topic, product area, and sentiment - model: "openai-gpt-4-1" - mcp_server: NLP Pipeline MCP - tools: - - Topic Classifier - - Sentiment Analyzer - - Product Tagger - trigger: "On completion of Triage Agent" - approval: auto - - id: st-3 - name: Pattern Analyzer Agent - role: Final - goal: Identify recurring issues and generate resolution recommendations - model: "anthropic-claude-sonnet-4" - mcp_server: Analytics MCP - tools: - - Pattern Detector - - Knowledge Base Search - - Resolution Generator - trigger: "On completion of Categorizer Agent" - approval: manual - # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Triage incoming support tickets by urgency, categorize by topic and @@ -106,7 +57,7 @@ goal: >- recommendations with escalation paths for critical issues. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Evals @@ -139,6 +90,7 @@ trigger: type: schedule cron: "0 */2 * * *" description: Every 2 hours + prompt: "Run the scheduled workflow and produce the configured deliverable." # Output configuration output: diff --git a/agentspecs/agents/mocks/audit-inventory-levels.yaml b/agentspecs/agents/audit-inventory-levels.yaml similarity index 59% rename from agentspecs/agents/mocks/audit-inventory-levels.yaml rename to agentspecs/agents/audit-inventory-levels.yaml index a3d882b..ad3dcdd 100644 --- a/agentspecs/agents/mocks/audit-inventory-levels.yaml +++ b/agentspecs/agents/audit-inventory-levels.yaml @@ -7,6 +7,7 @@ # Source: UI mock flow id=6 (Agents.tsx) id: audit-inventory-levels +version: 0.0.1 name: Audit Inventory Levels description: > A multi-agent team that monitors inventory levels across warehouses, @@ -18,11 +19,9 @@ tags: - automation - inventory - supply-chain - - team -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -31,14 +30,18 @@ memory: ephemeral # MCP servers used by this agent team mcp_servers: - - filesystem - - slack + - filesystem:0.0.1 + - slack:0.0.1 # Skills available to this agent team skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -46,83 +49,6 @@ icon: package emoji: ๐Ÿ“ฆ color: "#0969da" # Blue -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: Inventory Orchestrator Agent - model: "openai-gpt-4-1" - routing_instructions: > - Start with the Scanner to pull current levels, then Auditor to check - discrepancies, then Forecaster for demand predictions, then Planner for - reorder recommendations, then Reporter for the final audit report. - Escalate critical shortages immediately. - validation: - timeout: "600s" - retry_on_failure: true - max_retries: 3 - agents: - - id: inv-1 - name: Inventory Scanner Agent - role: "Primary ยท Initiator" - goal: Pull current inventory levels from all warehouse management systems - model: "openai-gpt-4-1" - mcp_server: Warehouse MCP - tools: - - WMS Connector - - Barcode Scanner API - trigger: "Schedule: Every 6 hours" - approval: auto - - id: inv-2 - name: Discrepancy Auditor Agent - role: Secondary - goal: Compare system counts vs physical counts and flag discrepancies - model: "openai-gpt-4-1" - mcp_server: Audit MCP - tools: - - Count Comparator - - Discrepancy Logger - - Shrinkage Calculator - trigger: "On completion of Inventory Scanner" - approval: auto - - id: inv-3 - name: Demand Forecaster Agent - role: Secondary - goal: Forecast demand by SKU using historical sales and seasonal patterns - model: "anthropic-claude-sonnet-4" - mcp_server: Analytics MCP - tools: - - Time Series Model - - Seasonal Analyzer - - External Signals Fetcher - trigger: "On completion of Discrepancy Auditor" - approval: auto - - id: inv-4 - name: Reorder Planner Agent - role: Secondary - goal: Calculate optimal reorder points and generate purchase order recommendations - model: "openai-gpt-4-1" - mcp_server: Procurement MCP - tools: - - EOQ Calculator - - Supplier Catalog - - PO Generator - trigger: "On completion of Demand Forecaster" - approval: manual - - id: inv-5 - name: Audit Report Agent - role: Final - goal: Compile inventory audit report with discrepancies, forecasts, and reorder plan - model: "openai-gpt-4-1" - mcp_server: Document Generation MCP - tools: - - PDF Generator - - Chart Builder - - Email Sender - trigger: "On completion of Reorder Planner" - approval: auto - # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Monitor inventory levels across all warehouses every 6 hours. Detect @@ -130,7 +56,7 @@ goal: >- generate reorder recommendations, and compile audit reports with findings. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Evals @@ -157,6 +83,7 @@ trigger: type: schedule cron: "0 */6 * * *" description: Every 6 hours + prompt: "Run the scheduled workflow and produce the configured deliverable." # Guardrails guardrails: diff --git a/agentspecs/agents/mocks/automate-regulatory-reporting.yaml b/agentspecs/agents/automate-regulatory-reporting.yaml similarity index 62% rename from agentspecs/agents/mocks/automate-regulatory-reporting.yaml rename to agentspecs/agents/automate-regulatory-reporting.yaml index ad8d7d3..c335021 100644 --- a/agentspecs/agents/mocks/automate-regulatory-reporting.yaml +++ b/agentspecs/agents/automate-regulatory-reporting.yaml @@ -7,6 +7,7 @@ # across Basel III/IV, MiFID II, SOX, and AML/KYC requirements. id: automate-regulatory-reporting +version: 0.0.1 name: Automate Regulatory Reporting description: > A multi-agent team that automates end-to-end regulatory reporting for @@ -22,11 +23,9 @@ tags: - risk - banking - audit - - team -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -35,14 +34,18 @@ memory: ephemeral # MCP servers used by this agent team mcp_servers: - - filesystem - - slack + - filesystem:0.0.1 + - slack:0.0.1 # Skills available to this agent team skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -50,86 +53,6 @@ icon: shield-check emoji: ๐Ÿฆ color: "#0969da" # Blue โ€” compliance & trust -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: Compliance Orchestrator Agent - model: "openai-gpt-4-1" - routing_instructions: > - Start with Data Ingestion to pull positions and transactions, then - Risk Calculator for metric computation, then Reconciliation Agent to - cross-check figures, then Validation Agent for regulatory rule checks, - then Report Generator for submission-ready output. Escalate any - reconciliation breaks above $10K immediately to the compliance team. - validation: - timeout: "900s" - retry_on_failure: true - max_retries: 2 - agents: - - id: reg-1 - name: Data Ingestion Agent - role: "Primary ยท Initiator" - goal: Extract positions, transactions, and P&L from trading and accounting systems - model: "openai-gpt-4-1" - mcp_server: Trading Systems MCP - tools: - - Position Reader - - Transaction Fetcher - - P&L Extractor - trigger: "Schedule: Monthly on the 3rd business day" - approval: auto - - id: reg-2 - name: Risk Calculator Agent - role: Secondary - goal: Compute Basel III/IV risk-weighted assets, capital ratios, and VaR metrics - model: "anthropic-claude-sonnet-4" - mcp_server: Risk Engine MCP - tools: - - RWA Calculator - - VaR Engine - - Capital Ratio Computer - - Stress Test Runner - trigger: "On completion of Data Ingestion Agent" - approval: auto - - id: reg-3 - name: Reconciliation Agent - role: Secondary - goal: Cross-check computed figures against source systems and flag discrepancies - model: "openai-gpt-4-1" - mcp_server: Reconciliation MCP - tools: - - Position Reconciler - - Break Detector - - Audit Logger - trigger: "On completion of Risk Calculator Agent" - approval: auto - - id: reg-4 - name: Validation Agent - role: Secondary - goal: Validate all metrics against Basel III/IV, MiFID II, and SOX regulatory rules - model: "openai-gpt-4-1" - mcp_server: Compliance Rules MCP - tools: - - Basel Rule Validator - - MiFID II Checker - - SOX Control Verifier - trigger: "On completion of Reconciliation Agent" - approval: manual - - id: reg-5 - name: Report Generator Agent - role: Final - goal: Generate submission-ready regulatory reports with full data lineage and audit trail - model: "openai-gpt-4-1" - mcp_server: Document Generation MCP - tools: - - PDF Generator - - XBRL Formatter - - Email Sender - trigger: "On completion of Validation Agent" - approval: auto - # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Automate end-to-end regulatory reporting: ingest data from trading and @@ -138,7 +61,7 @@ goal: >- and generate submission-ready compliance reports with full audit trails. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Evals @@ -176,6 +99,7 @@ trigger: type: schedule cron: "0 6 3 * *" description: Monthly on the 3rd at 06:00 for regulatory reporting deadlines + prompt: "Run the scheduled workflow and produce the configured deliverable." # Output configuration output: diff --git a/agentspecs/agents/mocks/classify-route-emails.yaml b/agentspecs/agents/classify-route-emails.yaml similarity index 90% rename from agentspecs/agents/mocks/classify-route-emails.yaml rename to agentspecs/agents/classify-route-emails.yaml index b71dcd5..517a838 100644 --- a/agentspecs/agents/mocks/classify-route-emails.yaml +++ b/agentspecs/agents/classify-route-emails.yaml @@ -6,6 +6,7 @@ # priority, and department, then routes them to the correct queue. id: classify-route-emails +version: 0.0.1 name: Classify & Route Emails description: > A generic email classification and routing agent. Analyzes incoming emails @@ -20,9 +21,8 @@ tags: - horizontal - automation -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -31,13 +31,17 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - slack + - slack:0.0.1 # Skills available to this agent skills: - - github + - github:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -53,7 +57,7 @@ goal: >- Flag urgent items for immediate human review. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Trigger configuration @@ -61,6 +65,7 @@ trigger: type: event event: email_received description: Triggered on each incoming email via webhook + prompt: "Handle the 'email_received' event and execute the workflow end-to-end." # Model configuration model_config: diff --git a/agentspecs/agents/codemode-paper/crawler.yaml b/agentspecs/agents/codemode-paper/crawler.yaml deleted file mode 100644 index 5ea1222..0000000 --- a/agentspecs/agents/codemode-paper/crawler.yaml +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (c) 2025-2026 Datalayer, Inc. -# Distributed under the terms of the Modified BSD License. - -# Agent Specification: Crawler Agent -# Web crawling and research agent that searches the web and GitHub repositories. - -id: crawler -name: Crawler Agent -description: > - Web crawling and research agent that searches the web and GitHub - repositories for information. - -tags: - - web - - search - - research - - crawler - - github - -enabled: false - -model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" - -sandbox_variant: local-eval - -# Memory backend -memory: ephemeral - -# MCP servers used by this agent -mcp_servers: - - tavily - - github - - kaggle - - huggingface - -# Skills available to this agent -skills: [] - -# Runtime environment -environment_name: ai-agents-env - -# UI customization -icon: globe -emoji: ๐ŸŒ -color: "#10B981" # Green - -# Chat suggestions to show users what this agent can do -suggestions: - - Search the web for recent news about AI agents - - Find trending open-source Python projects on GitHub - - Research best practices for building RAG applications - - Compare popular JavaScript frameworks in 2024 - -# Welcome message shown when agent starts -welcome_message: > - Hi! I'm the Crawler Agent. I can search the web using Tavily, explore - GitHub repositories, and help you research topics across the internet. - -# System prompt for the agent -system_prompt: > - You are a web crawling and research assistant with access to Tavily search and GitHub tools. - Use Tavily to search the web for current information and search GitHub repositories for relevant projects. - Synthesize information from multiple sources and provide clear summaries with sources cited. - -# Additional system prompt for code mode -system_prompt_codemode_addons: > - ## IMPORTANT: Be Honest About Your Capabilities - NEVER claim to have tools or capabilities you haven't verified. - - ## Core Codemode Tools - Use these 4 tools to accomplish any task: - 1. **list_servers** - List available MCP servers - Use this to see what MCP servers you can access. - - 2. **search_tools** - Progressive tool discovery by natural language query - Use this to find relevant tools before executing tasks. - - 3. **get_tool_details** - Get full tool schema and documentation - Use this to understand tool parameters before calling them. - - 4. **execute_code** - Run Python code that composes multiple tools - Variables, functions, and state PERSIST between execute_code calls. - Import tools using: `from generated.servers. import ` - NEVER use `import *` - always use explicit named imports. - - ## Recommended Workflow - 1. **Discover**: Use list_servers and search_tools to find relevant tools - 2. **Understand**: Use get_tool_details to check parameters - 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed - - ## 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. - - For huggingface tools, use search_doc tool to understand other tools return's schema. - -# Optional: Jupyter notebook to show on agent creation -welcome_notebook: null - -# Optional: Lexical document to show on agent creation -welcome_document: null diff --git a/agentspecs/agents/codemode-paper/data-acquisition.yaml b/agentspecs/agents/codemode-paper/data-acquisition.yaml deleted file mode 100644 index 21ec75f..0000000 --- a/agentspecs/agents/codemode-paper/data-acquisition.yaml +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (c) 2025-2026 Datalayer, Inc. -# Distributed under the terms of the Modified BSD License. - -# Agent Specification: Data Acquisition Agent -# This agent acquires and manages data from various sources including -# Kaggle datasets and local filesystem operations. - -id: data-acquisition -name: Data Acquisition Agent -description: > - Acquires and manages data from various sources including Kaggle datasets - and local filesystem operations. - -tags: - - data - - acquisition - - kaggle - - filesystem - -enabled: true - -model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" - -sandbox_variant: local-eval - -# Memory backend -memory: ephemeral - -# MCP servers used by this agent -mcp_servers: - - kaggle - - filesystem - - tavily - -# Skills available to this agent -skills: - - github - -# Runtime environment -environment_name: ai-agents-env - -# UI customization -icon: database -emoji: ๐Ÿ“Š -color: "#3B82F6" # Blue - -# Chat suggestions to show users what this agent can do -suggestions: - - Find popular machine learning datasets on Kaggle - - Download and explore a dataset for sentiment analysis - - List available files in my workspace - - Search Kaggle for time series forecasting competitions - -# Welcome message shown when agent starts -welcome_message: > - Hello! I'm the Data Acquisition Agent. I can help you find and download - datasets from Kaggle, manage files in your workspace, and explore data - sources for your projects. - -# System prompt for the agent -system_prompt: > - You are a data acquisition specialist with access to Kaggle datasets and filesystem tools. - You can search for datasets, download data, read and write files, and help users prepare data for analysis. - Guide users through finding relevant datasets and organizing their workspace efficiently. - -# Additional system prompt for code mode -system_prompt_codemode_addons: > - ## IMPORTANT: Be Honest About Your Capabilities - NEVER claim to have tools or capabilities you haven't verified. - - ## Core Codemode Tools - Use these 4 tools to accomplish any task: - 1. **list_servers** - List available MCP servers - Use this to see what MCP servers you can access. - - 2. **search_tools** - Progressive tool discovery by natural language query - Use this to find relevant tools before executing tasks. - - 3. **get_tool_details** - Get full tool schema and documentation - Use this to understand tool parameters before calling them. - - 4. **execute_code** - Run Python code that composes multiple tools - Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox. - Variables, functions, and state PERSIST between execute_code calls. - Import tools using: `from generated.servers. import ` - NEVER use `import *` - always use explicit named imports. - - ## Recommended Workflow - 1. **Discover**: Use list_servers and search_tools to find relevant tools - 2. **Understand**: Use get_tool_details to check parameters - 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed - - ## 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. - -# Optional: Jupyter notebook to show on agent creation -welcome_notebook: null - -# Optional: Lexical document to show on agent creation -welcome_document: null diff --git a/agentspecs/agents/codemode-paper/github-agent.yaml b/agentspecs/agents/codemode-paper/github-agent.yaml deleted file mode 100644 index b0cce52..0000000 --- a/agentspecs/agents/codemode-paper/github-agent.yaml +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright (c) 2025-2026 Datalayer, Inc. -# Distributed under the terms of the Modified BSD License. - -# Agent Specification: GitHub Agent -# Manages GitHub repositories, issues, and pull requests with email capabilities. - -id: github-agent -name: GitHub Agent -description: > - Manages GitHub repositories, issues, and pull requests with email - notification capabilities. - -tags: - - github - - git - - code - - email - -enabled: false - -model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" - -sandbox_variant: local-eval - -# Memory backend -memory: ephemeral - -# MCP servers used by this agent -mcp_servers: - - github - - google-workspace - -# Skills available to this agent -skills: [] - -# Runtime environment -environment_name: ai-agents-env - -# UI customization -icon: git-branch -emoji: ๐Ÿ™ -color: "#6366F1" # Indigo - -# Chat suggestions to show users what this agent can do -suggestions: - - List my open pull requests across all repositories - - Create an issue for a bug I found in datalayer/ui - - Show recent commits on the main branch - - Search for repositories related to Jupyter notebooks - -# Welcome message shown when agent starts -welcome_message: > - Hello! I'm the GitHub Agent. I can help you manage repositories, create and - review issues and pull requests, search code, and send email notifications - about your GitHub activity. - -# System prompt for the agent -system_prompt: > - You are a GitHub assistant with access to GitHub repository tools and Google Workspace for email notifications. - -# Additional system prompt for code mode -system_prompt_codemode_addons: > - ## IMPORTANT: Be Honest About Your Capabilities - NEVER claim to have tools or capabilities you haven't verified. - - ## Core Codemode Tools - Use these 4 tools to accomplish any task: - 1. **list_servers** - List available MCP servers - Use this to see what MCP servers you can access. - - 2. **search_tools** - Progressive tool discovery by natural language query - Use this to find relevant tools before executing tasks. - - 3. **get_tool_details** - Get full tool schema and documentation - Use this to understand tool parameters before calling them. - - 4. **execute_code** - Run Python code that composes multiple tools - Code runs in a PERSISTENT sandbox. - Variables, functions, and state PERSIST between execute_code calls. - Import tools using: `from generated.servers. import ` - NEVER use `import *` - always use explicit named imports. - - ## Recommended Workflow - 1. **Discover**: Use list_servers and search_tools to find relevant tools - 2. **Understand**: Use get_tool_details to check parameters - 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed - - ## 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. - -# Optional: Jupyter notebook to show on agent creation -welcome_notebook: null - -# Optional: Lexical document to show on agent creation -welcome_document: null diff --git a/agentspecs/agents/comprehensive-sales-analytics.yaml b/agentspecs/agents/comprehensive-sales-analytics.yaml new file mode 100644 index 0000000..e4a0a1b --- /dev/null +++ b/agentspecs/agents/comprehensive-sales-analytics.yaml @@ -0,0 +1,121 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Comprehensive Sales Analytics +# Multi-agent team that upgrades the simple "Monitor Sales KPIs" single agent +# into a full analytics pipeline with dedicated agents for data collection, +# anomaly detection, trend analysis, and executive reporting. +# +# Tour narrative: This team is the "upgrade" of monitor-sales-kpis. +# Where monitor-sales-kpis is a single agent doing everything alone, +# this team has four specialized agents working in concert โ€” each +# excelling at one specific task โ€” orchestrated by a supervisor. + +id: comprehensive-sales-analytics +version: 0.0.1 +name: Comprehensive Sales Analytics +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. + +tags: + - sales + - analytics + - kpi + - monitoring + - horizontal + +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +# Memory backend +memory: ephemeral + +# MCP servers used by this agent team +mcp_servers: + - filesystem:0.0.1 + - slack:0.0.1 + +# Skills available to this agent team +skills: + - pdf:0.0.1 + - github:0.0.1 + - events:0.0.1 + +# Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 +environment_name: ai-agents-env + +# UI customization +icon: graph +emoji: ๐Ÿ“ˆ +color: "#1a7f37" # Dark green + +# Goal / Prompt +goal: >- + Run a comprehensive daily sales analytics pipeline: collect KPIs from CRM + and ERP, detect anomalies and classify severity, analyze trends and produce + 30-day forecasts, then compile everything into an executive dashboard sent + via Slack and email. Flag critical deviations for immediate human review. + +# Protocols & UI Extensions +protocol: vercel-ai +ui_extension: a2ui + +# Evals +evals: + - name: KPI Accuracy + category: coding + task_count: 500 + - name: Anomaly Detection Precision + category: reasoning + task_count: 350 + - name: Trend Forecast Accuracy + category: reasoning + task_count: 300 + - name: Report Quality + category: reasoning + task_count: 200 + +# Guardrails +guardrails: + - name: Sales Analytics Team + identity_provider: datalayer + identity_name: sales-analytics@acme.com + permissions: + read:data: true + write:data: true + execute:code: true + access:internet: true + send:email: true + deploy:production: false + token_limits: + per_run: "100K" + per_day: "1M" + per_month: "10M" + +# Notifications +notifications: + slack: "#sales-analytics" + email: "leadership@acme.com" + +# Output configuration +output: + type: PDF + formats: + - PDF + - Dashboard + - JSON + template: executive-sales-dashboard-v2 + storage: s3://acme-sales-reports/ + +# No trigger โ€” this is an interactive agent +trigger: null diff --git a/agentspecs/agents/datalayer-ai/crawler.yaml b/agentspecs/agents/crawler.yaml similarity index 94% rename from agentspecs/agents/datalayer-ai/crawler.yaml rename to agentspecs/agents/crawler.yaml index d3ad6b2..07e6aba 100644 --- a/agentspecs/agents/datalayer-ai/crawler.yaml +++ b/agentspecs/agents/crawler.yaml @@ -5,6 +5,7 @@ # Web crawling and research agent that searches the web and GitHub repositories. id: crawler +version: 0.0.1 name: Crawler Agent description: > Web crawling and research agent that searches the web and GitHub @@ -17,8 +18,7 @@ tags: - crawler - github -enabled: false - +enabled: true model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -28,13 +28,17 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - tavily + - tavily:0.0.1 # Skills available to this agent skills: - - github + - github:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -97,3 +101,6 @@ welcome_notebook: null # Optional: Lexical document to show on agent creation welcome_document: null + +# No trigger โ€” this is an interactive chat agent +trigger: null diff --git a/agentspecs/agents/codeai/data-acquisition.yaml b/agentspecs/agents/data-acquisition.yaml similarity index 93% rename from agentspecs/agents/codeai/data-acquisition.yaml rename to agentspecs/agents/data-acquisition.yaml index a5b7738..c65ef4d 100644 --- a/agentspecs/agents/codeai/data-acquisition.yaml +++ b/agentspecs/agents/data-acquisition.yaml @@ -6,6 +6,7 @@ # Kaggle datasets and local filesystem operations. id: data-acquisition +version: 0.0.1 name: Data Acquisition Agent description: > Acquires and manages data from various sources including Kaggle datasets @@ -18,7 +19,6 @@ tags: - filesystem enabled: true - model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -28,15 +28,19 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - kaggle - - filesystem - - tavily + - kaggle:0.0.1 + - filesystem:0.0.1 + - tavily:0.0.1 # Skills available to this agent skills: - - github + - github:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -100,3 +104,6 @@ welcome_notebook: null # Optional: Lexical document to show on agent creation welcome_document: null + +# No trigger โ€” this is an interactive agent +trigger: null diff --git a/agentspecs/agents/datalayer-ai/data-acquisition.yaml b/agentspecs/agents/datalayer-ai/data-acquisition.yaml deleted file mode 100644 index a5b7738..0000000 --- a/agentspecs/agents/datalayer-ai/data-acquisition.yaml +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (c) 2025-2026 Datalayer, Inc. -# Distributed under the terms of the Modified BSD License. - -# Agent Specification: Data Acquisition Agent -# This agent acquires and manages data from various sources including -# Kaggle datasets and local filesystem operations. - -id: data-acquisition -name: Data Acquisition Agent -description: > - Acquires and manages data from various sources including Kaggle datasets - and local filesystem operations. - -tags: - - data - - acquisition - - kaggle - - filesystem - -enabled: true - -model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" - -sandbox_variant: jupyter - -# Memory backend -memory: ephemeral - -# MCP servers used by this agent -mcp_servers: - - kaggle - - filesystem - - tavily - -# Skills available to this agent -skills: - - github - -# Runtime environment -environment_name: ai-agents-env - -# UI customization -icon: database -emoji: ๐Ÿ“Š -color: "#3B82F6" # Blue - -# Chat suggestions to show users what this agent can do -suggestions: - - Find popular machine learning datasets on Kaggle - - Download and explore a dataset for sentiment analysis - - List available files in my workspace - - Search Kaggle for time series forecasting competitions - -# Welcome message shown when agent starts -welcome_message: > - Hello! I'm the Data Acquisition Agent. I can help you find and download - datasets from Kaggle, manage files in your workspace, and explore data - sources for your projects. - -# System prompt for the agent -system_prompt: > - You are a data acquisition specialist with access to Kaggle datasets and filesystem tools. - You can search for datasets, download data, read and write files, and help users prepare data for analysis. - Guide users through finding relevant datasets and organizing their workspace efficiently. - -# Additional system prompt for code mode -system_prompt_codemode_addons: > - ## IMPORTANT: Be Honest About Your Capabilities - NEVER claim to have tools or capabilities you haven't verified. - - ## Core Codemode Tools - Use these 4 tools to accomplish any task: - 1. **list_servers** - List available MCP servers - Use this to see what MCP servers you can access. - - 2. **search_tools** - Progressive tool discovery by natural language query - Use this to find relevant tools before executing tasks. - - 3. **get_tool_details** - Get full tool schema and documentation - Use this to understand tool parameters before calling them. - - 4. **execute_code** - Run Python code that composes multiple tools - Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox. - Variables, functions, and state PERSIST between execute_code calls. - Import tools using: `from generated.servers. import ` - NEVER use `import *` - always use explicit named imports. - - ## Recommended Workflow - 1. **Discover**: Use list_servers and search_tools to find relevant tools - 2. **Understand**: Use get_tool_details to check parameters - 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed - - ## 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. - -# Optional: Jupyter notebook to show on agent creation -welcome_notebook: null - -# Optional: Lexical document to show on agent creation -welcome_document: null diff --git a/agentspecs/agents/datalayer-ai/simple.yaml b/agentspecs/agents/datalayer-ai/simple.yaml deleted file mode 100644 index 3d54b77..0000000 --- a/agentspecs/agents/datalayer-ai/simple.yaml +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright (c) 2025-2026 Datalayer, Inc. -# Distributed under the terms of the Modified BSD License. - -# Agent Specification: A Simple Agent -# A minimal agent with no MCP servers or skills. - -id: simple -name: A Simple Agent -description: > - A simple conversational agent. No tools, no MCP servers, no skills โ€” - just a helpful AI assistant you can chat with. - -tags: - - simple - - chat - - assistant - -enabled: true - -model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" - -sandbox_variant: jupyter - -# Memory backend -memory: ephemeral - -# No MCP servers -mcp_servers: [] - -# No skills -skills: [] - -# Runtime environment -environment_name: ai-agents-env - -# UI customization -icon: share-2 -emoji: ๐Ÿค– -color: "#6366F1" # Indigo - -# Chat suggestions to show users what this agent can do -suggestions: - - Tell me a joke - - Explain quantum computing in simple terms - - Help me brainstorm ideas for a weekend project - - Summarize the key points of a topic I describe - -# Welcome message shown when agent starts -welcome_message: > - Hi! I'm a simple assistant. I don't have any special tools, but I'm - happy to chat, answer questions, and help you think through ideas. - -# System prompt for the agent -system_prompt: > - You are a helpful, friendly AI assistant. You do not have access to any - external tools, MCP servers, or skills. Answer questions using your - training knowledge, be concise, and let the user know if a question is - outside your knowledge. - -# No code mode prompt needed for a simple agent -system_prompt_codemode_addons: null - -# Optional: Jupyter notebook to show on agent creation -welcome_notebook: null - -# Optional: Lexical document to show on agent creation -welcome_document: null diff --git a/agentspecs/agents/demo-output.yaml b/agentspecs/agents/demo-output.yaml new file mode 100644 index 0000000..e5e99ac --- /dev/null +++ b/agentspecs/agents/demo-output.yaml @@ -0,0 +1,75 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Demo Outputs +# Runtime agent used by AgentOutputsExample. + +id: demo-outputs +version: 0.0.1 +name: Example Outputs Agent +description: >- + Demonstrates structured response rendering (table, json, chart, and file) + for the AgentOutputsExample sidebar output parser. + +tags: + - demo + - outputs + - rendering + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: table +emoji: "๐Ÿ“ฆ" +color: "#7C3AED" + +suggestions: + - Return a TABLE of quarterly revenue by region + - Return JSON for a KPI summary object + - Return a CHART payload for monthly conversions + - Return a FILE named report.md with highlights + +welcome_message: >- + Outputs demo agent ready. Ask for TABLE, JSON, CHART, or FILE formats and + I will respond with exactly one structured output block. + +system_prompt: >- + You are the Demo Outputs Agent. + + The user may request one of exactly four output modes: TABLE, JSON, CHART, + or FILE. For each response, emit exactly one mode and no extra prose. + + Formatting rules: + - TABLE: Return one GitHub-flavored markdown table. + - JSON: Return exactly one fenced ```json code block. + - CHART: Return exactly one fenced ```json code block whose first line is + "// chart" and whose remaining body is valid ECharts option JSON. + - FILE: Return exactly one fenced code block whose info string is a file + extension, and whose first line is "# filename: ". + + If mode is ambiguous, default to JSON. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/mocks/end-of-month-performance.yaml b/agentspecs/agents/end-of-month-performance.yaml similarity index 96% rename from agentspecs/agents/mocks/end-of-month-performance.yaml rename to agentspecs/agents/end-of-month-performance.yaml index 306ceaf..a24a5b0 100644 --- a/agentspecs/agents/mocks/end-of-month-performance.yaml +++ b/agentspecs/agents/end-of-month-performance.yaml @@ -6,6 +6,7 @@ # directly from Salesforce and generates executive-ready performance reports. id: end-of-month-sales-performance +version: 0.0.1 name: End of Month Sales Performance description: > Consolidates and analyzes end-of-month retail sales data directly from Salesforce. @@ -23,8 +24,7 @@ tags: - retail - sku -enabled: true - +enabled: false # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Consolidate, validate, and analyze end-of-month Salesforce retail sales data. @@ -32,7 +32,7 @@ goal: >- discounting, explain variances by region/segment/product/SKU, and generate an executive-ready PDF performance report with full data lineage. -model: "openai-gpt-4-1" +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -41,13 +41,17 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - salesforce + - salesforce:0.0.1 # Skills available to this agent skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -56,7 +60,7 @@ emoji: ๐Ÿ“Š color: "#1f883d" # Green โ€” performance & growth # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Trigger configuration @@ -65,6 +69,7 @@ trigger: cron: "0 6 1 * *" description: > Monthly on the 1st at 06:00 to process prior month Salesforce sales performance. + prompt: "Run the scheduled workflow and produce the configured deliverable." # Model configuration model_config: diff --git a/agentspecs/agents/eval-experiment-runner.yaml b/agentspecs/agents/eval-experiment-runner.yaml new file mode 100644 index 0000000..c7a2db4 --- /dev/null +++ b/agentspecs/agents/eval-experiment-runner.yaml @@ -0,0 +1,62 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Eval Experiment Runner +# Purpose-built runtime agent used by the Evals UI to execute experiment runs. + +id: eval-experiment-runner +version: 0.0.1 +name: Eval Experiment Runner +description: >- + Dedicated agent spec for launching and running evaluation experiments from + the Evals interface. Includes baseline tooling for reproducible eval runs. + +tags: + - evals + - experiments + - runner + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: pulse +emoji: "๐Ÿงช" +color: "#0EA5E9" + +suggestions: + - Run the selected evaluation experiment on the configured dataset + - Validate experiment configuration and report missing fields + - Summarize run results with pass rate and latency highlights + +welcome_message: >- + Ready to run eval experiments. Configure your benchmark and evaluator setup, + then launch a run. + +system_prompt: >- + You are the Eval Experiment Runner. Execute evaluation workflows reliably, + validate inputs before execution, and summarize outcomes clearly. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-codemode.yaml b/agentspecs/agents/example-codemode.yaml new file mode 100644 index 0000000..3ef7ee0 --- /dev/null +++ b/agentspecs/agents/example-codemode.yaml @@ -0,0 +1,68 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Tavily MCP Demo (Codemode) +# Used by AgentCodemodeExample to demonstrate codemode MCP orchestration. + +id: example-codemode +version: 0.0.1 +name: Example Tavily Codemode Agent +description: >- + Tavily MCP demo agent with codemode enabled. MCP tools can be composed through + codemode execution flows. + +tags: + - demo + - mcp + - tavily + - codemode + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter +memory: ephemeral + +mcp_servers: + - tavily:0.0.1 + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: code +emoji: "โš™๏ธ" +color: "#8250DF" + +suggestions: + - Search and extract key points about Datalayer in one step + - Research AI agent best practices and return a concise report + - Compare two web sources and summarize differences + +welcome_message: >- + Tavily MCP codemode agent ready. I can compose MCP-powered workflows. + +system_prompt: >- + You are a Tavily MCP demo assistant with codemode enabled. Prefer concise, + practical responses and use MCP tools when web search or extraction is needed. + +system_prompt_codemode_addons: >- + When helpful, compose MCP capabilities in a single run while keeping responses + concise and grounded in retrieved evidence. + +codemode: + enabled: true + token_reduction: "~80%" + speedup: "~1.5x" + +welcome_notebook: null +welcome_document: null +trigger: null diff --git a/agentspecs/agents/example-evals-nocodemode.yaml b/agentspecs/agents/example-evals-nocodemode.yaml new file mode 100644 index 0000000..6cd15ec --- /dev/null +++ b/agentspecs/agents/example-evals-nocodemode.yaml @@ -0,0 +1,68 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Demo Evals (No Codemode) +# Runtime agent used by eval examples for local and cloud execution without codemode. + +id: example-evals-nocodemode +version: 0.0.1 +name: Example Evals Agent (No Codemode) +description: >- + Evals runner variant with codemode disabled for A/B comparisons against + example-evals in SDK eval examples. + +tags: + - evals + - demo + - runner + - no-codemode + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +disable_tool_approvals: true + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: pulse +emoji: "๐Ÿงช" +color: "#0284C7" + +suggestions: + - Run the selected evaluation experiment on the configured dataset + - Validate experiment configuration and report missing fields + - Summarize run results with pass rate and latency highlights + +welcome_message: >- + Ready to run eval experiments without codemode enabled. Configure your + benchmark and evaluator setup, then launch a run. + +system_prompt: >- + You are the Demo Evals Runner. Execute evaluation workflows reliably, + validate inputs before execution, and summarize outcomes clearly. + +system_prompt_codemode_addons: null + +codemode: + enabled: false + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-evals.yaml b/agentspecs/agents/example-evals.yaml new file mode 100644 index 0000000..e26c6cc --- /dev/null +++ b/agentspecs/agents/example-evals.yaml @@ -0,0 +1,64 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Demo Evals +# Runtime agent used by eval examples for local and cloud execution. + +id: example-evals +version: 0.0.1 +name: Example Evals Agent +description: >- + Default eval runner for local and cloud execution in SDK eval examples. + Includes baseline tooling for reproducible eval runs. + +tags: + - evals + - demo + - runner + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +disable_tool_approvals: true + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: pulse +emoji: "๐Ÿงช" +color: "#0EA5E9" + +suggestions: + - Run the selected evaluation experiment on the configured dataset + - Validate experiment configuration and report missing fields + - Summarize run results with pass rate and latency highlights + +welcome_message: >- + Ready to run eval experiments. Configure your benchmark and evaluator setup, + then launch a run. + +system_prompt: >- + You are the Demo Evals Runner. Execute evaluation workflows reliably, + validate inputs before execution, and summarize outcomes clearly. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-full.yaml b/agentspecs/agents/example-full.yaml new file mode 100644 index 0000000..fa3cf6b --- /dev/null +++ b/agentspecs/agents/example-full.yaml @@ -0,0 +1,104 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Tool Approval Demo Agent +# Minimal agent that demonstrates the tool approval flow: +# - runtime-echo: executes immediately (no approval needed) +# - runtime-sensitive-echo: requires human approval before execution +# - Tavily MCP server for web search +# - All catalog skills + local path-based jokes skill + +id: example-full +version: 0.0.1 +name: Example MCP, Skills, Tool Approvals... Agent +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). + +tags: + - demo + - approval + - human-in-the-loop + - utility + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +# Memory backend +memory: ephemeral + +# MCP servers +mcp_servers: + - tavily:0.0.1 + +# Skills +skills: + - crawl:0.0.1 + - events:0.0.1 + - github:0.0.1 + - pdf:0.0.1 + - text-summarizer:0.0.1 + - jokes:0.0.1 + - datalayer-whoami:1.0.0 + +# Secrets / environment variables +envvars: + - GITHUB_TOKEN:0.0.1 + +# Runtime tools (runtime-echo = auto approval, runtime-sensitive-echo = manual approval) +tools: + - runtime-echo:0.0.1 + - runtime-sensitive-echo:0.0.1 +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +# Runtime environment +environment_name: ai-agents-env + +# UI customization +icon: shield +emoji: ๐Ÿ›ก๏ธ +color: "#6366F1" # Indigo + +# Chat suggestions +suggestions: + - list your tools + - "Search the web for the latest news on AI agents using Tavily." + - "List my public GitHub repositories and summarize the most active ones." + - "Echo with text 'hello' and reason 'audit', then share the result." + - "Echo 'hello world' and share the result in a short sentence." + - "Call the runtime_sensitive_echo tool with text 'hello' and reason 'audit', then reply with the tool result." + - "Call the runtime_echo tool with text 'hello world', then reply with the tool result." + - "Tell me a joke using your skills." + +# Welcome message +welcome_message: > + 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 and tell jokes using my skills. + +# System prompt +system_prompt: > + 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. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +# No trigger โ€” this is an interactive agent +trigger: null diff --git a/agentspecs/agents/example-guardrails.yaml b/agentspecs/agents/example-guardrails.yaml new file mode 100644 index 0000000..3ea5a28 --- /dev/null +++ b/agentspecs/agents/example-guardrails.yaml @@ -0,0 +1,110 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Demo Guardrails +# Runtime agent used by AgentGuardrailsExample. + +id: example-guardrails +version: 0.0.1 +name: Example Guardrails Agent +description: >- + Guardrails-focused example agent for AgentGuardrailsExample. Includes budget + limits and a sensitive tool requiring manual approval. + +tags: + - demo + - guardrails + - approval + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + - runtime-sensitive-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +guardrails: + - name: Example Cost Budget + cost_budget: + per_run_usd: 0.05 + cumulative_usd: 5.00 + +icon: shield +emoji: "๐Ÿ›ก๏ธ" +color: "#EF4444" + +suggestions: + - Use runtime_echo to confirm basic tool execution + - Call runtime_sensitive_echo and approve/reject the request + - Summarize current cost usage vs configured run budget + - Trigger before_tool_execute by calling runtime_sensitive_echo with reason audit + - Trigger local deny policy with reason delete and explain the block + - Explain how deferred_tool_calls and approval queue interact for this run + +welcome_message: >- + Guardrails example agent ready. Try a sensitive tool call to exercise approvals, + and monitor run-cost budget consumption in real time. + +system_prompt: >- + You are the Demo Guardrails Agent. Prefer safe defaults, explain budget usage, + and clearly report whether tool approval is required. + + This agent also demonstrates pydantic-ai tool execution hook naming: + before_tool_execute, after_tool_execute, on_tool_execute_error, + and deferred_tool_calls. + +tool_hooks: + actor: "${USER}" + audit_log_path: "agent_runtimes_tool_approvals_audit.jsonl" + current_delegations: + - "delegate:guardrails-low-risk" + before_tool_execute: + - function: agent_runtimes.integrations.tool_policy:evaluate_tool_request + - python: | + reason = str(request.get("arguments", {}).get("reason", "")).lower() + if "delete" in reason: + hook_result = { + "decision": "deny", + "reason": "guardrails_local_delete_policy" + } + after_tool_execute: + - python: | + print( + "[example-guardrails] after_tool_execute", + payload.get("tool"), + payload.get("status"), + payload.get("decision"), + ) + on_tool_execute_error: + - python: | + print( + "[example-guardrails] on_tool_execute_error", + payload.get("tool"), + payload.get("error_type"), + payload.get("decision"), + ) + deferred_tool_calls: + - python: | + print("[example-guardrails] deferred_tool_calls invoked") + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-hooks.yaml b/agentspecs/agents/example-hooks.yaml new file mode 100644 index 0000000..076ef06 --- /dev/null +++ b/agentspecs/agents/example-hooks.yaml @@ -0,0 +1,155 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: example-hooks +version: 0.0.1 +name: Example Hooks Agent +description: > + Demonstrates pre-hooks and post-hooks executed in the sandbox lifecycle. + +tags: + - demo + - hooks + - lifecycle + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: eval +memory: ephemeral + +mcp_servers: [] +skills: [] +tools: + - runtime-echo:0.0.1 + - runtime-sensitive-echo:0.0.1 +frontend_tools: [] + +environment_name: ai-agents-env + +icon: zap +emoji: "๐Ÿช" +color: "#0E7490" + +suggestions: + - "Read the pre-hook marker file at /tmp/agent_runtimes_pre_hook_demo.txt using execute_code." + - "Print the hook_ran_at and hook_name variables that the pre-hook set in the sandbox." + - "Run execute_code to verify that the 'rich' package was installed by the pre-hook." + - "Show me all variables that the pre-hook defined in the sandbox namespace." + - "Call runtime_sensitive_echo with reason 'audit' to trigger per-tool authorization hooks." + - "Use execute_code to read /tmp/agent_runtimes_tool_approvals_audit.jsonl and summarize the latest authorization + execution entries." + +welcome_message: > + 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. + +system_prompt: > + You are a demo assistant for lifecycle hooks. + + The sandbox pre-hook ran before this agent started and did three things: + + 1. Installed the Python package 'rich' (pip install). + 2. Wrote a UTF-8 marker file to /tmp/agent_runtimes_pre_hook_demo.txt + with the content: "pre-hook executed for example-hooks at ". + 3. Defined these Python variables in the sandbox namespace: + - hook_name (str) - "example-hooks:pre" + - hook_ran_at (str) - ISO-8601 timestamp of when the pre-hook ran + - hook_env (dict) - subset of os.environ captured at hook time + + A post-hook is also configured โ€” it will write + /tmp/agent_runtimes_post_hook_demo.txt when the agent shuts down. + + This agent also demonstrates per-tool hooks for runtime-sensitive tool calls. + Each proposed tool call is converted into an authorization request with actor, + tool, arguments, resource, current delegations, and risk class. Hook decisions + can be allow, deny, approval_needed, or delegated_allow. Decisions and + execution results are logged. + + Hook names align with pydantic-ai capability hooks: + - before_tool_execute + - after_tool_execute + - on_tool_execute_error + - deferred_tool_calls + + 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. + +pre_hooks: + packages: + - rich + sandbox: + - | + import datetime + import os + from pathlib import Path + + hook_name = "example-hooks:pre" + hook_ran_at = datetime.datetime.now().isoformat() + hook_env = { + k: os.environ[k] + for k in ("PATH", "HOME", "DATALAYER_CODE_SANDBOX_VARIANT") + if k in os.environ + } + + Path('/tmp/agent_runtimes_pre_hook_demo.txt').write_text( + f'pre-hook executed for example-hooks at {hook_ran_at}\n', + encoding='utf-8', + ) + print(f"[example-hooks] pre-hook done: hook_ran_at={hook_ran_at!r}") + +post_hooks: + sandbox: + - | + import datetime + from pathlib import Path + + post_ran_at = datetime.datetime.now().isoformat() + Path('/tmp/agent_runtimes_post_hook_demo.txt').write_text( + f'post-hook executed for example-hooks at {post_ran_at}\n', + encoding='utf-8', + ) + print(f"[example-hooks] post-hook done: post_ran_at={post_ran_at!r}") + +tool_hooks: + actor: "${USER}" + audit_log_path: "agent_runtimes_tool_approvals_audit.jsonl" + current_delegations: + - "delegate:read-only-low-risk" + before_tool_execute: + - function: agent_runtimes.integrations.tool_policy:evaluate_tool_request + - python: | + # Plain Python hook variant. It can enforce extra local policy. + reason = str(request.get("arguments", {}).get("reason", "")).lower() + if "delete" in reason or "drop" in reason: + hook_result = { + "decision": "deny", + "reason": "blocked_by_local_python_hook_reason_policy" + } + after_tool_execute: + - python: | + # Post hook receives execution result payload in `payload`. + print( + "[example-hooks] after_tool_execute", + payload.get("tool"), + payload.get("status"), + payload.get("decision"), + ) + on_tool_execute_error: + - python: | + print( + "[example-hooks] on_tool_execute_error", + payload.get("tool"), + payload.get("error_type"), + payload.get("decision"), + ) + deferred_tool_calls: + - python: | + # Demonstrates the deferred hook key in spec config. + print("[example-hooks] deferred_tool_calls invoked") + +system_prompt_codemode_addons: null +welcome_notebook: null +welcome_document: null +trigger: null diff --git a/agentspecs/agents/example-inference.yaml b/agentspecs/agents/example-inference.yaml new file mode 100644 index 0000000..406a767 --- /dev/null +++ b/agentspecs/agents/example-inference.yaml @@ -0,0 +1,58 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: example-inference +version: 0.0.1 +name: Example Inference Provider Agent +description: >- + Demonstrates inference-provider switching (local vs datalayer) for a local + agent runtime session. + +tags: + - demo + - inference + - provider + - runtime + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" +inference_provider: local + +sandbox_variant: jupyter +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: pulse +emoji: "๐Ÿง " +color: "#2563EB" + +suggestions: + - Compare local and datalayer inference providers for latency and routing. + - Explain where model responses are generated for this current provider. + - Summarize the tradeoffs of switching providers for this agent. + +welcome_message: >- + Inference provider demo ready. Switch between local and datalayer providers, + then ask me the same prompt to compare behavior. + +system_prompt: >- + You are the inference provider demo agent. Be concise, technical, and explicit + about provider-routing implications when asked. + +system_prompt_codemode_addons: null +welcome_notebook: null +welcome_document: null +trigger: null diff --git a/agentspecs/agents/example-mcp.yaml b/agentspecs/agents/example-mcp.yaml new file mode 100644 index 0000000..a56d20e --- /dev/null +++ b/agentspecs/agents/example-mcp.yaml @@ -0,0 +1,66 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Demo MCP +# Default agent used by AgentMCPExample. + +id: example-mcp +version: 0.0.1 +name: Example MCP Agent +description: >- + MCP-focused example agent for AgentMCPExample. It connects to the Tavily MCP + server and demonstrates search/research style tool usage from the chat panel. + +tags: + - demo + - mcp + - tools + - research + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: + - tavily:0.0.1 + +skills: + - events:0.0.1 + - jokes:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: globe +emoji: "๐ŸŒ" +color: "#0EA5E9" + +suggestions: + - Search the web for recent news about AI agents + - Find trending open-source Python projects on GitHub + - Research best practices for building RAG applications + - Compare popular JavaScript frameworks in 2024 + +welcome_message: >- + MCP example agent ready. Ask me to search, extract, crawl, and research via + Tavily MCP tools. + +system_prompt: >- + You are the Demo MCP Agent. Use Tavily MCP tools for web search and research + requests, cite concise findings, and keep responses practical and clear. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-memory.yaml b/agentspecs/agents/example-memory.yaml new file mode 100644 index 0000000..84151a5 --- /dev/null +++ b/agentspecs/agents/example-memory.yaml @@ -0,0 +1,63 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Example Memory +# Runtime agent used by the memory example for local and cloud execution. + +id: example-memory +version: 0.0.1 +name: Example Memory Agent +description: >- + Demonstrates durable conversational memory with the Mem0 backend. + Persists user preferences and supports memory inspection/search. + +tags: + - memory + - mem0 + - demo + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: mem0 + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: database +emoji: "๐Ÿง " +color: "#0D9488" + +suggestions: + - Remember a user preference and confirm it was stored + - Recall previously stored preferences from memory + - Search memory for key facts from earlier turns + +welcome_message: >- + Ready to demonstrate durable memory. Tell me a preference and I can recall it + across turns. + +system_prompt: >- + You are the Example Memory Agent. Capture durable user preferences and key + facts, recall them accurately when asked, and summarize memory context + clearly. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-monitoring.yaml b/agentspecs/agents/example-monitoring.yaml new file mode 100644 index 0000000..6be089e --- /dev/null +++ b/agentspecs/agents/example-monitoring.yaml @@ -0,0 +1,62 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Demo Monitoring +# Default agent used by AgentMonitoringExample. + +id: example-monitoring +version: 0.0.1 +name: Example Monitoring Agent +description: >- + Monitoring-focused example agent for AgentMonitoringExample. It is intentionally + lightweight so it starts reliably in local example runs. + +tags: + - demo + - monitoring + - observability + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: pulse +emoji: "๐Ÿ“Š" +color: "#0EA5E9" + +suggestions: + - Show my current monitoring context summary + - Explain the last turn cost and total token usage + - Summarize recent activity and potential anomalies + +welcome_message: >- + Monitoring example agent ready. Ask for runtime activity, cost trends, and token + usage summaries. + +system_prompt: >- + You are the Demo Monitoring Agent. Prioritize concise operational summaries, + highlight anomalies, and provide clear next-step recommendations. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-no-codemode.yaml b/agentspecs/agents/example-no-codemode.yaml new file mode 100644 index 0000000..20a9104 --- /dev/null +++ b/agentspecs/agents/example-no-codemode.yaml @@ -0,0 +1,65 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Tavily MCP Demo (No Codemode) +# Used by AgentCodemodeExample to demonstrate raw MCP tool usage. + +id: example-no-codemode +version: 0.0.1 +name: Example Tavily No Codemode Agent +description: >- + Tavily MCP demo agent without codemode conversion. MCP tools are used directly + without codemode orchestration. + +tags: + - demo + - mcp + - tavily + - no-codemode + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter +memory: ephemeral + +mcp_servers: + - tavily:0.0.1 + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: globe +emoji: "๐ŸŒ" +color: "#0969DA" + +suggestions: + - Search for the latest updates about Datalayer + - Extract key points from the top result + - Summarize recent AI agent tooling trends + +welcome_message: >- + Tavily MCP no-codemode agent ready. I use MCP tools directly. + +system_prompt: >- + You are a Tavily MCP demo assistant without codemode. Use available MCP tools + directly for search and research requests, and provide concise summaries. + +system_prompt_codemode_addons: null + +# Explicitly disabled codemode behavior for this variant. +codemode: + enabled: false + +welcome_notebook: null +welcome_document: null +trigger: null diff --git a/agentspecs/agents/example-notifications.yaml b/agentspecs/agents/example-notifications.yaml new file mode 100644 index 0000000..6c04f4e --- /dev/null +++ b/agentspecs/agents/example-notifications.yaml @@ -0,0 +1,62 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Example Notifications +# Runtime agent used by the notifications example for local and cloud execution. + +id: example-notifications +version: 0.0.1 +name: Example Notifications Agent +description: >- + Demonstrates multi-channel notifications including in-app, email, and Slack + style destinations with preference management. + +tags: + - notifications + - alerts + - demo + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: bell +emoji: "๐Ÿ””" +color: "#F59E0B" + +suggestions: + - Configure notification channels for in-app, email, and Slack + - Trigger a test notification and verify delivery status + - Summarize unread notifications and recent alert activity + +welcome_message: >- + Ready to demonstrate notifications. Configure your channels and send a test + alert to validate delivery. + +system_prompt: >- + You are the Example Notifications Agent. Help users configure notification + channels, test delivery paths, and summarize recent notification activity. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-one-trigger-approval.yaml b/agentspecs/agents/example-one-trigger-approval.yaml new file mode 100644 index 0000000..83303e5 --- /dev/null +++ b/agentspecs/agents/example-one-trigger-approval.yaml @@ -0,0 +1,60 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Once Trigger with Approval Demo +# Demonstrates the "once" trigger type combined with tool approval: +# the agent runs its trigger prompt once, requests manual approval +# before executing the sensitive echo tool, and then terminates. + +id: example-one-trigger-approval +version: 0.0.1 +name: Example Once Trigger and Tool Approval Agent +description: > + A demonstration agent for the "once" trigger type with manual tool approval. + When launched, the agent executes its trigger prompt once and invokes the + runtime-sensitive-echo tool, which requires manual approval before execution. + After completion, the runtime is terminated automatically. + +tags: + - demo + - trigger + - once + - lifecycle + - approval + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +# Memory backend +memory: ephemeral + +# Skills +skills: [] + +# Runtime tools +tools: + - runtime-sensitive-echo:0.0.1 +frontend_tools: + - jupyter-notebook:0.0.1 + +# Runtime environment +environment_name: ai-agents-env + +# UI customization +icon: shield +emoji: ๐Ÿ›ก๏ธ +color: "#ef4444" # Red + +# Goal / Prompt +goal: >- + Call runtime_sensitive_echo exactly once with + message="Tool approval demo executed" and reason="audit". + Do not call any other tool. + +# Trigger configuration +trigger: + type: once + description: Run once with approval and terminate + prompt: "Call runtime_sensitive_echo exactly once with message='Tool approval demo executed' and reason='audit'. Do not call any other tool." diff --git a/agentspecs/agents/example-one-trigger.yaml b/agentspecs/agents/example-one-trigger.yaml new file mode 100644 index 0000000..e4b19a4 --- /dev/null +++ b/agentspecs/agents/example-one-trigger.yaml @@ -0,0 +1,62 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Once Trigger Demo +# Demonstrates the "once" trigger type: the agent runs its trigger prompt +# once, emits lifecycle events, and then the runtime is terminated. + +id: example-one-trigger +version: 0.0.1 +name: Example Once Trigger Agent +description: > + A demonstration agent for the "once" trigger type. When launched, the agent + executes its trigger prompt exactly once, emits AGENT_STARTED and + AGENT_ENDED lifecycle events, and then terminates the runtime automatically. + +tags: + - demo + - trigger + - once + - lifecycle + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +# Memory backend +memory: ephemeral + +# Skills +skills: + - github:0.0.1 + - events:0.0.1 + +# Runtime tools +tools: + - runtime-echo:0.0.1 +frontend_tools: + - jupyter-notebook:0.0.1 + +# Secrets / environment variables +envvars: + - GITHUB_TOKEN:0.0.1 + +# Runtime environment +environment_name: ai-agents-env + +# UI customization +icon: zap +emoji: โšก +color: "#f59e0b" # Amber + +# Goal / Prompt +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. + +# Trigger configuration +trigger: + type: once + description: Run once and terminate + 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." diff --git a/agentspecs/agents/example-otel.yaml b/agentspecs/agents/example-otel.yaml new file mode 100644 index 0000000..02a3650 --- /dev/null +++ b/agentspecs/agents/example-otel.yaml @@ -0,0 +1,66 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Demo OTEL +# Default agent used by AgentOtelExample. + +id: example-otel +version: 0.0.1 +name: Example OTEL Agent +description: >- + OTEL observability example agent for AgentOtelExample. It assists the user in + exploring traces, logs and metrics surfaced by the OTEL dashboard. + +tags: + - demo + - otel + - observability + - telemetry + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: telescope +emoji: "๐Ÿ”ญ" +color: "#7C3AED" + +suggestions: + - What do the most recent traces show? + - Are there any errors or anomalies in the telemetry? + - Give me a summary of the current metrics. + - Help me find the root cause of slow requests. + +welcome_message: >- + OTEL example agent ready. Ask me about your traces, logs, and metrics โ€” I can + help summarize activity, spot anomalies, and investigate root causes. + +system_prompt: >- + You are the Demo OTEL Agent. You observe OpenTelemetry telemetry data + (traces, logs, metrics) and help the user reason about service behavior. + Prioritize concise, evidence-grounded summaries, highlight anomalies, and + recommend concrete next investigation steps. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-parameters.yaml b/agentspecs/agents/example-parameters.yaml new file mode 100644 index 0000000..5d846a6 --- /dev/null +++ b/agentspecs/agents/example-parameters.yaml @@ -0,0 +1,83 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: example-parameters +version: 0.0.1 +name: Example Parameters Agent +description: > + Demonstrates launch-time parameterization with JSON schema validation. + +tags: + - demo + - parameters + - schema + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter +memory: ephemeral + +mcp_servers: [] +skills: [] +tools: + - runtime-echo:0.0.1 +frontend_tools: [] + +environment_name: ai-agents-env + +icon: sliders +emoji: "๐ŸŽ›๏ธ" +color: "#0F766E" + +parameters: + type: object + properties: + demo_params: + type: string + title: Demo Params + default: hello + project: + type: string + title: Project + default: Orbit + role: + type: string + title: Role + enum: + - product analyst + - engineering lead + - support specialist + default: product analyst + tone: + type: string + title: Tone + enum: + - concise + - detailed + default: concise + required: + - project + +suggestions: + - "Use execute_code to print(demo_params) from the sandbox, then explain the value." + - "Use execute_code to print('demo_params =', demo_params)." + +pre_hooks: + sandbox: + - | + demo_params = """{{demo_params}}""" + print(f"[demo-parameters] demo_params initialized: {demo_params!r}") + +welcome_message: > + This runtime was launched for project {{project}} and role {{role}}. + +system_prompt: > + 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}}. + +system_prompt_codemode_addons: null +welcome_notebook: null +welcome_document: null +trigger: null diff --git a/agentspecs/agents/codeai/simple.yaml b/agentspecs/agents/example-simple.yaml similarity index 86% rename from agentspecs/agents/codeai/simple.yaml rename to agentspecs/agents/example-simple.yaml index 3d54b77..04b352a 100644 --- a/agentspecs/agents/codeai/simple.yaml +++ b/agentspecs/agents/example-simple.yaml @@ -4,7 +4,8 @@ # Agent Specification: A Simple Agent # A minimal agent with no MCP servers or skills. -id: simple +id: example-simple +version: 0.0.1 name: A Simple Agent description: > A simple conversational agent. No tools, no MCP servers, no skills โ€” @@ -16,7 +17,6 @@ tags: - assistant enabled: true - model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -28,13 +28,20 @@ memory: ephemeral mcp_servers: [] # No skills -skills: [] - +skills: + - events:0.0.1 + +# Runtime tools +tools: + - runtime-echo:0.0.1 +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 # Runtime environment environment_name: ai-agents-env # UI customization -icon: share-2 +icon: agent emoji: ๐Ÿค– color: "#6366F1" # Indigo @@ -65,3 +72,6 @@ welcome_notebook: null # Optional: Lexical document to show on agent creation welcome_document: null + +# No trigger โ€” this is an interactive chat agent +trigger: null diff --git a/agentspecs/agents/example-skills.yaml b/agentspecs/agents/example-skills.yaml new file mode 100644 index 0000000..36d51ba --- /dev/null +++ b/agentspecs/agents/example-skills.yaml @@ -0,0 +1,69 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Skills Demo +# Runtime agent used by AgentSkillsExample to demonstrate +# file-based and package-based skills. + +id: example-skills +version: 0.0.1 +name: Example Skills Agent +description: >- + Demo agent for skills usage with mixed discovery sources, including + built-in file skills and package-registered skills like datalayer-whoami. + +tags: + - demo + - skills + - discovery + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - crawl:0.0.1 + - events:0.0.1 + - github:0.0.1 + - pdf:0.0.1 + - text-summarizer:0.0.1 + - jokes:0.0.1 + - datalayer-whoami:1.0.0 + +tools: [] + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: briefcase +emoji: "๐Ÿงฐ" +color: "#0D9488" + +suggestions: + - List all your available skills and group them by source type + - Use datalayer-whoami to return my user identity context + - Use crawl to summarize https://datalayer.ai + - Use github to list public repositories for an account + +welcome_message: >- + Hi! I am the Skills Demo Agent. I can use built-in file skills and + package-registered skills such as datalayer-whoami. + +system_prompt: >- + You are a skills-focused assistant. Use skills when they are relevant to + user intent, and summarize tool outputs clearly in natural language. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null \ No newline at end of file diff --git a/agentspecs/agents/example-subagents.yaml b/agentspecs/agents/example-subagents.yaml new file mode 100644 index 0000000..ca75217 --- /dev/null +++ b/agentspecs/agents/example-subagents.yaml @@ -0,0 +1,63 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Demo Subagents +# Runtime agent used by AgentSubagentsExample. + +id: example-subagents +version: 0.0.1 +name: Example Subagents Agent +description: >- + Demonstrates multi-agent delegation with a parent orchestrator that can split + work between a researcher and a writer subagent. + +tags: + - demo + - subagents + - orchestration + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +memory: ephemeral + +mcp_servers: [] + +skills: + - events:0.0.1 + +tools: + - runtime-echo:0.0.1 + +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 + +environment_name: ai-agents-env + +icon: people +emoji: "๐Ÿ‘ฅ" +color: "#2563EB" + +suggestions: + - Research a topic and provide source-backed notes + - Write a concise summary from the research findings + - Split work between researcher and writer, then merge output + +welcome_message: >- + Subagents example agent ready. Ask me to delegate research and writing tasks + across specialist subagents. + +system_prompt: >- + You are the Demo Subagents Orchestrator. Decompose user requests into + specialist tasks, delegate effectively, and synthesize a coherent final + response. + +system_prompt_codemode_addons: null + +welcome_notebook: null +welcome_document: null + +trigger: null diff --git a/agentspecs/agents/example-tool-approvals.yaml b/agentspecs/agents/example-tool-approvals.yaml new file mode 100644 index 0000000..2311e17 --- /dev/null +++ b/agentspecs/agents/example-tool-approvals.yaml @@ -0,0 +1,76 @@ +id: example-tool-approvals +version: 0.0.1 +name: Example Tool Approvals +description: > + Demonstrates per-tool approval hooks with policy requests and decision/audit + logging. +icon: pi pi-shield +tags: + - approvals + - hooks + - policy +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" +tools: + - runtime-sensitive-echo:0.0.1 + - runtime-echo:0.0.1 +suggestions: + - "Call runtime_sensitive_echo with reason 'read logs' and message 'hello approvals'." + - "Call runtime_sensitive_echo with reason 'delete project' and observe deny behavior from Python policy hook." + - "Call runtime_echo with any message to compare a non-sensitive tool path." + - "Use execute_code to print the latest lines from /tmp/agent_runtimes_tool_approvals_audit.jsonl." + - "Explain how deferred_tool_calls resolves approval-required tool calls inline when decisions already exist." +welcome_message: | + Welcome to the Tool Approvals example. + + This agent demonstrates authorization hooks where each + sensitive tool call is evaluated against policy and logged for audit. +system_prompt: > + You are a demo assistant for tool approvals. + + Sensitive tool calls should go through the authorization flow. + + Explain decisions clearly: allow, deny, approval_needed, or delegated_allow. + + Keep responses concise and focused on what was authorized and executed. + + Hook names align with pydantic-ai capability hooks: + before_tool_execute, after_tool_execute, on_tool_execute_error, + and deferred_tool_calls. +tool_hooks: + actor: "${USER}" + audit_log_path: "agent_runtimes_tool_approvals_audit.jsonl" + current_delegations: + - "delegate:read-only-low-risk" + before_tool_execute: + - function: agent_runtimes.integrations.tool_policy:evaluate_tool_request + - python: | + reason = str(request.get("arguments", {}).get("reason", "")).lower() + if "delete" in reason or "drop" in reason: + hook_result = { + "decision": "deny", + "reason": "blocked_by_local_python_reason_policy" + } + elif request.get("risk_class") == "low": + hook_result = { + "decision": "delegated_allow", + "reason": "delegated_low_risk_auto_allow" + } + after_tool_execute: + - python: | + print( + "[example-tool-approvals]", + payload.get("tool"), + payload.get("status"), + payload.get("decision"), + ) + on_tool_execute_error: + - python: | + print( + "[example-tool-approvals:error]", + payload.get("tool"), + payload.get("error_type"), + payload.get("decision"), + ) + deferred_tool_calls: + - python: | + print("[example-tool-approvals] deferred_tool_calls invoked") diff --git a/agentspecs/agents/mocks/extract-data-from-files.yaml b/agentspecs/agents/extract-data-from-files.yaml similarity index 89% rename from agentspecs/agents/mocks/extract-data-from-files.yaml rename to agentspecs/agents/extract-data-from-files.yaml index 4194be5..8f88768 100644 --- a/agentspecs/agents/mocks/extract-data-from-files.yaml +++ b/agentspecs/agents/extract-data-from-files.yaml @@ -6,6 +6,7 @@ # files โ€” invoices, receipts, forms, tables in PDFs, spreadsheets. id: extract-data-from-files +version: 0.0.1 name: Extract Data from Files description: > A generic data extraction agent that processes unstructured files (PDFs, @@ -21,9 +22,8 @@ tags: - automation - documents -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -32,14 +32,18 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - filesystem + - filesystem:0.0.1 # Skills available to this agent skills: - - pdf - - github + - pdf:0.0.1 + - github:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -55,7 +59,7 @@ goal: >- confidence scores for each extracted field. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Trigger configuration @@ -63,6 +67,7 @@ trigger: type: event event: file_uploaded description: Triggered when new files are dropped into the extraction folder + prompt: "Handle the 'file_uploaded' event and execute the workflow end-to-end." # Model configuration model_config: diff --git a/agentspecs/agents/codemode-paper/financial-viz.yaml b/agentspecs/agents/financial-viz.yaml similarity index 94% rename from agentspecs/agents/codemode-paper/financial-viz.yaml rename to agentspecs/agents/financial-viz.yaml index 76724e8..6a079d7 100644 --- a/agentspecs/agents/codemode-paper/financial-viz.yaml +++ b/agentspecs/agents/financial-viz.yaml @@ -5,6 +5,7 @@ # Analyzes financial market data and creates visualizations and charts. id: financial-viz +version: 0.0.1 name: Financial Visualization Agent description: > Analyzes financial market data and creates visualizations and charts. @@ -16,7 +17,6 @@ tags: - charts enabled: false - model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: local-eval @@ -26,13 +26,16 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - alphavantage - - chart + - alphavantage:0.0.1 + - chart:0.0.1 # Skills available to this agent -skills: [] - +skills: + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -96,3 +99,6 @@ welcome_notebook: null # Optional: Lexical document to show on agent creation welcome_document: null + +# No trigger โ€” this is an interactive agent +trigger: null diff --git a/agentspecs/agents/datalayer-ai/financial.yaml b/agentspecs/agents/financial.yaml similarity index 86% rename from agentspecs/agents/datalayer-ai/financial.yaml rename to agentspecs/agents/financial.yaml index 088428c..4f33d66 100644 --- a/agentspecs/agents/datalayer-ai/financial.yaml +++ b/agentspecs/agents/financial.yaml @@ -1,13 +1,14 @@ # Copyright (c) 2025-2026 Datalayer, Inc. # Distributed under the terms of the Modified BSD License. -# Agent Specification: Financial Visualization Agent -# Analyzes financial market data and creates visualizations and charts. +# Agent Specification: Financial Data Analysis Agent +# Analyzes financial market data and provides chart-ready insights. id: financial -name: Financial Visualization Agent +version: 0.0.1 +name: Financial Data Analysis Agent description: > - Analyzes financial market data and creates visualizations and charts. + Analyzes financial market data and provides chart-ready insights. tags: - finance @@ -16,7 +17,6 @@ tags: - charts enabled: false - model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -26,12 +26,15 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - alphavantage + - alphavantage:0.0.1 # Skills available to this agent -skills: [] - +skills: + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -48,7 +51,7 @@ suggestions: # Welcome message shown when agent starts welcome_message: > - Welcome! I'm the Financial Visualization Agent. I can help you analyze + Welcome! I'm the Financial Data Analysis Agent. I can help you analyze stock market data, track financial instruments, and create charts to visualize market trends. @@ -95,3 +98,6 @@ welcome_notebook: null # Optional: Lexical document to show on agent creation welcome_document: null + +# No trigger โ€” this is an interactive agent +trigger: null diff --git a/agentspecs/agents/mocks/generate-weekly-reports.yaml b/agentspecs/agents/generate-weekly-reports.yaml similarity index 92% rename from agentspecs/agents/mocks/generate-weekly-reports.yaml rename to agentspecs/agents/generate-weekly-reports.yaml index 8c202d2..bbd28f9 100644 --- a/agentspecs/agents/mocks/generate-weekly-reports.yaml +++ b/agentspecs/agents/generate-weekly-reports.yaml @@ -7,6 +7,7 @@ # Source: UI mock flow id=5 (Agents.tsx) id: generate-weekly-reports +version: 0.0.1 name: Generate Weekly Reports description: > Aggregates data across marketing, sales, and operations departments. @@ -20,9 +21,8 @@ tags: - analytics - automation -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -31,14 +31,18 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - filesystem - - slack + - filesystem:0.0.1 + - slack:0.0.1 # Skills available to this agent skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -53,7 +57,7 @@ goal: >- trend analysis, and the top 3 actionable takeaways for leadership. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Trigger configuration @@ -61,6 +65,7 @@ trigger: type: schedule cron: "0 6 * * 1" description: Every Monday at 6:00 AM UTC + prompt: "Run the scheduled workflow and produce the configured deliverable." # Model configuration model_config: diff --git a/agentspecs/agents/datalayer-ai/github-agent.yaml b/agentspecs/agents/github-agent.yaml similarity index 94% rename from agentspecs/agents/datalayer-ai/github-agent.yaml rename to agentspecs/agents/github-agent.yaml index 770a16f..7377812 100644 --- a/agentspecs/agents/datalayer-ai/github-agent.yaml +++ b/agentspecs/agents/github-agent.yaml @@ -5,6 +5,7 @@ # Manages GitHub repositories, issues, and pull requests with email capabilities. id: github-agent +version: 0.0.1 name: GitHub Agent description: > Manages GitHub repositories, issues, and pull requests with email @@ -17,7 +18,6 @@ tags: - email enabled: false - model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -27,13 +27,17 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - google-workspace + - google-workspace:0.0.1 # Skills available to this agent skills: - - github + - github:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -97,3 +101,6 @@ welcome_notebook: null # Optional: Lexical document to show on agent creation welcome_document: null + +# No trigger โ€” this is an interactive agent +trigger: null diff --git a/agentspecs/agents/codemode-paper/information-routing.yaml b/agentspecs/agents/information-routing.yaml similarity index 94% rename from agentspecs/agents/codemode-paper/information-routing.yaml rename to agentspecs/agents/information-routing.yaml index fc98a99..f453371 100644 --- a/agentspecs/agents/codemode-paper/information-routing.yaml +++ b/agentspecs/agents/information-routing.yaml @@ -5,6 +5,7 @@ # Routes information between Google Drive and Slack, managing workflows. id: information-routing +version: 0.0.1 name: Information Routing Agent description: > Routes information between Google Drive and other services, managing document @@ -16,7 +17,6 @@ tags: - gdrive enabled: false - model: "bedrock:us.anthropic.claude-opus-4-6-v1" sandbox_variant: local-eval @@ -26,13 +26,16 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - google-workspace - - github + - google-workspace:0.0.1 + - github:0.0.1 # Skills available to this agent -skills: [] - +skills: + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -96,3 +99,6 @@ welcome_notebook: null # Optional: Lexical document to show on agent creation welcome_document: null + +# No trigger โ€” this is an interactive agent +trigger: null diff --git a/agentspecs/agents/mocks/comprehensive-sales-analytics.yaml b/agentspecs/agents/mocks/comprehensive-sales-analytics.yaml deleted file mode 100644 index 8b2350d..0000000 --- a/agentspecs/agents/mocks/comprehensive-sales-analytics.yaml +++ /dev/null @@ -1,195 +0,0 @@ -# Copyright (c) 2025-2026 Datalayer, Inc. -# Distributed under the terms of the Modified BSD License. - -# Agent Specification: Comprehensive Sales Analytics -# Multi-agent team that upgrades the simple "Monitor Sales KPIs" single agent -# into a full analytics pipeline with dedicated agents for data collection, -# anomaly detection, trend analysis, and executive reporting. -# -# Tour narrative: This team is the "upgrade" of monitor-sales-kpis. -# Where monitor-sales-kpis is a single agent doing everything alone, -# this team has four specialized agents working in concert โ€” each -# excelling at one specific task โ€” orchestrated by a supervisor. - -id: comprehensive-sales-analytics -name: Comprehensive Sales Analytics -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. - -tags: - - sales - - analytics - - team - - kpi - - monitoring - - horizontal - -enabled: true - -model: "anthropic-claude-opus-4" - -sandbox_variant: jupyter - -# Memory backend -memory: ephemeral - -# MCP servers used by this agent team -mcp_servers: - - filesystem - - slack - -# Skills available to this agent team -skills: - - pdf - - github - -# Runtime environment -environment_name: ai-agents-env - -# UI customization -icon: graph -emoji: ๐Ÿ“ˆ -color: "#1a7f37" # Dark green - -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: Sales Analytics Supervisor - model: "anthropic-claude-opus-4" - routing_instructions: > - Route data collection to KPI Collector first, then pass raw metrics to - Anomaly Detector and Trend Analyzer in parallel, then aggregate all - outputs into the Report Generator. Escalate if anomalies exceed the - critical threshold (>25% deviation from target). - validation: - timeout: "300s" - retry_on_failure: true - max_retries: 3 - agents: - - id: sa-1 - name: KPI Data Collector - role: "Primary ยท Initiator" - goal: > - Pull real-time sales metrics from CRM, ERP, and marketing platforms. - Normalize data into a unified schema with timestamps, dimensions - (region, product line, rep), and measures (revenue, pipeline, conversion). - model: "openai-gpt-4-1" - mcp_server: CRM Data Server - tools: - - get_sales_data - - get_customer_list - - API Connector - trigger: "Schedule: Daily at 7:30 AM" - approval: auto - - id: sa-2 - name: Anomaly Detector - role: Secondary - goal: > - Apply statistical anomaly detection (Z-score, IQR, moving average) to - the collected KPIs. Flag any metric deviating more than 10% from its - rolling 30-day average. Classify anomalies as info, warning, or critical. - model: "anthropic-claude-sonnet-4" - mcp_server: Analytics Server - tools: - - run_analysis - - Statistical Analysis - - ML Predictor - trigger: "On completion of KPI Data Collector" - approval: auto - - id: sa-3 - name: Trend Analyzer - role: Secondary - goal: > - Identify week-over-week, month-over-month, and quarter-over-quarter - trends. Generate 30-day forecasts for each KPI using time-series - models. Highlight the top 3 improving and top 3 declining metrics. - model: "anthropic-claude-sonnet-4" - mcp_server: Analytics Server - tools: - - run_analysis - - generate_charts - - Forecaster - trigger: "On completion of KPI Data Collector" - approval: auto - - id: sa-4 - name: Executive Report Generator - role: Final - goal: > - Compile all insights โ€” raw KPIs, anomalies, trends, and forecasts โ€” - into a polished executive dashboard with charts, tables, and narrative - commentary. Send the report via Slack and email. Highlight critical - anomalies with a red-flag summary at the top. - model: "openai-gpt-4-1" - mcp_server: Document Generation MCP - tools: - - PDF Generator - - Chart Builder - - Email Sender - - Slack Notifier - trigger: "On completion of Anomaly Detector & Trend Analyzer" - approval: manual - -# Goal / Prompt -goal: >- - Run a comprehensive daily sales analytics pipeline: collect KPIs from CRM - and ERP, detect anomalies and classify severity, analyze trends and produce - 30-day forecasts, then compile everything into an executive dashboard sent - via Slack and email. Flag critical deviations for immediate human review. - -# Protocols & UI Extensions -protocol: ag-ui -ui_extension: a2ui - -# Evals -evals: - - name: KPI Accuracy - category: coding - task_count: 500 - - name: Anomaly Detection Precision - category: reasoning - task_count: 350 - - name: Trend Forecast Accuracy - category: reasoning - task_count: 300 - - name: Report Quality - category: reasoning - task_count: 200 - -# Guardrails -guardrails: - - name: Sales Analytics Team - identity_provider: datalayer - identity_name: sales-analytics@acme.com - permissions: - read:data: true - write:data: true - execute:code: true - access:internet: true - send:email: true - deploy:production: false - token_limits: - per_run: "100K" - per_day: "1M" - per_month: "10M" - -# Notifications -notifications: - slack: "#sales-analytics" - email: "leadership@acme.com" - -# Output configuration -output: - type: PDF - formats: - - PDF - - Dashboard - - JSON - template: executive-sales-dashboard-v2 - storage: s3://acme-sales-reports/ diff --git a/agentspecs/agents/mocks/monitor-sales-kpis.yaml b/agentspecs/agents/monitor-sales-kpis.yaml similarity index 84% rename from agentspecs/agents/mocks/monitor-sales-kpis.yaml rename to agentspecs/agents/monitor-sales-kpis.yaml index f71b55c..b46ae9b 100644 --- a/agentspecs/agents/mocks/monitor-sales-kpis.yaml +++ b/agentspecs/agents/monitor-sales-kpis.yaml @@ -7,6 +7,7 @@ # Source: UI mock flow id=1 (Agents.tsx, AgentFlow.tsx) id: monitor-sales-kpis +version: 0.0.1 name: Monitor Sales KPIs description: > Monitor and analyze sales KPIs from the CRM system. Generate daily reports @@ -20,23 +21,32 @@ tags: - kpi - monitoring -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter -# Memory backend -memory: ephemeral +# Memory backend (exercises the Mem0 durable memory feature) +memory: mem0 # MCP servers used by this agent mcp_servers: - - filesystem + - filesystem:0.0.1 # Skills available to this agent skills: - - github - - pdf + - github:0.0.1 + - pdf:0.0.1 + - events:0.0.1 + +# Runtime tools available to this agent +tools: + - runtime-echo:0.0.1 + - runtime-sensitive-echo:0.0.1 + - runtime-send-mail:0.0.1 +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 # Runtime environment environment_name: ai-agents-env @@ -53,7 +63,7 @@ goal: >- Send notifications when KPIs deviate more than 10% from targets. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Trigger configuration @@ -61,6 +71,7 @@ trigger: type: schedule cron: "0 8 * * *" description: Every day at 8:00 AM UTC + prompt: "Run the scheduled workflow and produce the configured deliverable." # Model configuration model_config: @@ -127,12 +138,17 @@ output: type: Notebook template: kpi_report_template.ipynb -# Advanced settings +# Advanced settings (exercises cost budget guardrail & context window management) advanced: cost_limit: "$5.00 per run" time_limit: "300 seconds" max_iterations: 50 validation: "Output must contain required KPI fields" + checkpoint_interval: 30 + context_window: + max_tokens: 100000 + eviction_strategy: sliding_window + summary_threshold: 0.85 # Authorization policy authorization_policy: "" diff --git a/agentspecs/agents/mocks/optimize-dynamic-pricing.yaml b/agentspecs/agents/optimize-dynamic-pricing.yaml similarity index 94% rename from agentspecs/agents/mocks/optimize-dynamic-pricing.yaml rename to agentspecs/agents/optimize-dynamic-pricing.yaml index 4161cdb..01c10ac 100644 --- a/agentspecs/agents/mocks/optimize-dynamic-pricing.yaml +++ b/agentspecs/agents/optimize-dynamic-pricing.yaml @@ -7,6 +7,7 @@ # pricing recommendations across product catalogs. id: optimize-dynamic-pricing +version: 0.0.1 name: Optimize Dynamic Pricing description: > Monitors competitor pricing across marketplaces, forecasts demand per SKU, @@ -22,9 +23,8 @@ tags: - demand-forecasting - margins -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -33,14 +33,18 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - filesystem + - filesystem:0.0.1 # Skills available to this agent skills: - - pdf - - crawl + - pdf:0.0.1 + - crawl:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -56,7 +60,7 @@ goal: >- recommendations with confidence intervals and projected revenue impact. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Trigger configuration @@ -64,6 +68,7 @@ trigger: type: schedule cron: "0 * * * *" description: Hourly competitive price scan and demand forecast update + prompt: "Run the scheduled workflow and produce the configured deliverable." # Model configuration model_config: diff --git a/agentspecs/agents/mocks/optimize-grid-operations.yaml b/agentspecs/agents/optimize-grid-operations.yaml similarity index 65% rename from agentspecs/agents/mocks/optimize-grid-operations.yaml rename to agentspecs/agents/optimize-grid-operations.yaml index 1be2b17..726c84d 100644 --- a/agentspecs/agents/mocks/optimize-grid-operations.yaml +++ b/agentspecs/agents/optimize-grid-operations.yaml @@ -7,6 +7,7 @@ # grid load balancing across renewable and conventional sources. id: optimize-grid-operations +version: 0.0.1 name: Optimize Grid Operations description: > A multi-agent team that processes millions of IoT sensor data points @@ -21,11 +22,9 @@ tags: - iot - predictive-maintenance - sustainability - - team -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -34,13 +33,17 @@ memory: ephemeral # MCP servers used by this agent team mcp_servers: - - filesystem + - filesystem:0.0.1 # Skills available to this agent team skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -48,77 +51,6 @@ icon: zap emoji: โšก color: "#1a7f37" # Green โ€” energy & sustainability -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: Grid Operations Orchestrator Agent - model: "openai-gpt-4-1" - routing_instructions: > - Start with Sensor Ingestion to process real-time telemetry, then - Anomaly Detector for pattern identification, then Failure Predictor - for maintenance forecasting, then Grid Balancer for load optimisation. - Escalate critical failure predictions (< 48h) immediately to - operations dispatch. - validation: - timeout: "600s" - retry_on_failure: true - max_retries: 3 - agents: - - id: grid-1 - name: Sensor Ingestion Agent - role: "Primary ยท Initiator" - goal: Ingest and process real-time telemetry from SCADA, smart meters, and IoT gateways - model: "openai-gpt-4-1" - mcp_server: SCADA MCP - tools: - - SCADA Connector - - Smart Meter Reader - - IoT Gateway Adapter - - Time Series Processor - trigger: "Schedule: Every 5 minutes" - approval: auto - - id: grid-2 - name: Anomaly Detector Agent - role: Secondary - goal: Detect vibration, temperature, and voltage anomalies across all grid assets - model: "openai-gpt-4-1" - mcp_server: Monitoring MCP - tools: - - Vibration Analyzer - - Temperature Anomaly Detector - - Voltage Pattern Scanner - - Historical Comparator - trigger: "On completion of Sensor Ingestion Agent" - approval: auto - - id: grid-3 - name: Failure Predictor Agent - role: Secondary - goal: Predict equipment failures 2โ€“4 weeks in advance using anomaly patterns and failure history - model: "anthropic-claude-sonnet-4" - mcp_server: Predictive Analytics MCP - tools: - - Failure Correlation Engine - - Risk Scorer - - Maintenance Scheduler - - Work Order Generator - trigger: "On completion of Anomaly Detector Agent" - approval: manual - - id: grid-4 - name: Grid Balancer Agent - role: Final - goal: Optimise real-time load balancing across renewable and conventional generation sources - model: "openai-gpt-4-1" - mcp_server: Grid Control MCP - tools: - - Load Forecaster - - Renewable Integration Model - - Dispatch Optimiser - - Grid Stability Checker - trigger: "On completion of Failure Predictor Agent" - approval: auto - # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Process millions of IoT sensor data points from SCADA systems, smart meters, @@ -127,7 +59,7 @@ goal: >- renewable and conventional sources to reduce unplanned downtime by 50%. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Evals @@ -165,6 +97,7 @@ trigger: type: schedule cron: "*/5 * * * *" description: Every 5 minutes for real-time grid monitoring and optimization + prompt: "Run the scheduled workflow and produce the configured deliverable." # Output configuration output: diff --git a/agentspecs/agents/mocks/process-citizen-requests.yaml b/agentspecs/agents/process-citizen-requests.yaml similarity index 66% rename from agentspecs/agents/mocks/process-citizen-requests.yaml rename to agentspecs/agents/process-citizen-requests.yaml index 9fcbdc1..13eff43 100644 --- a/agentspecs/agents/mocks/process-citizen-requests.yaml +++ b/agentspecs/agents/process-citizen-requests.yaml @@ -7,6 +7,7 @@ # analysis, and transparent decision documentation. id: process-citizen-requests +version: 0.0.1 name: Process Citizen Requests description: > A multi-agent team that automates citizen request processing for @@ -22,11 +23,9 @@ tags: - policy - compliance - transparency - - team -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -35,13 +34,17 @@ memory: ephemeral # MCP servers used by this agent team mcp_servers: - - filesystem + - filesystem:0.0.1 # Skills available to this agent team skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -49,77 +52,6 @@ icon: organization emoji: ๐Ÿ›๏ธ color: "#0550ae" # Dark blue โ€” government & civic -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: Citizen Services Orchestrator Agent - model: "openai-gpt-4-1" - routing_instructions: > - Route incoming citizen requests to the Intake Agent for classification - and triage, then to the Case Processor for handling and routing, then - to the Policy Analyst for impact assessment on relevant items, then - to the Transparency Agent for audit trail and public documentation. - Escalate urgent citizen safety issues immediately to supervisors. - validation: - timeout: "300s" - retry_on_failure: true - max_retries: 2 - agents: - - id: cit-1 - name: Intake & Classification Agent - role: "Primary ยท Initiator" - goal: Classify, triage, and route citizen submissions from web portals, email, and documents - model: "openai-gpt-4-1" - mcp_server: Citizen Portal MCP - tools: - - Request Classifier - - Urgency Assessor - - Jurisdiction Router - - OCR Scanner - trigger: "Event: new citizen request received" - approval: auto - - id: cit-2 - name: Case Processor Agent - role: Secondary - goal: Process and route requests to appropriate departments with required documentation - model: "openai-gpt-4-1" - mcp_server: Case Management MCP - tools: - - Case Creator - - Document Assembler - - Department Router - - Status Tracker - trigger: "On completion of Intake Agent" - approval: auto - - id: cit-3 - name: Policy Impact Analyst Agent - role: Secondary - goal: Model policy outcomes across population datasets with scenario simulation - model: "anthropic-claude-sonnet-4" - mcp_server: Policy Analytics MCP - tools: - - Monte Carlo Simulator - - Demographic Analyzer - - Budget Impact Model - - Scenario Comparator - trigger: "On completion of Case Processor Agent" - approval: manual - - id: cit-4 - name: Transparency & Audit Agent - role: Final - goal: Generate explainable decision documentation with full audit trail for public record - model: "openai-gpt-4-1" - mcp_server: Compliance MCP - tools: - - Decision Explainer - - Audit Trail Builder - - FOIA Compliance Checker - - Public Record Generator - trigger: "On completion of Policy Impact Analyst Agent" - approval: auto - # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Process citizen requests from web portals, email, and scanned documents. @@ -128,7 +60,7 @@ goal: >- and generate explainable, auditable decision documentation for public record. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Evals @@ -165,6 +97,7 @@ authorization_policy: "" trigger: type: event description: Triggered on new citizen request submission from any channel + prompt: "Handle this event trigger: Triggered on new citizen request submission from any channel" # Output configuration output: diff --git a/agentspecs/agents/mocks/process-clinical-trial-data.yaml b/agentspecs/agents/process-clinical-trial-data.yaml similarity index 67% rename from agentspecs/agents/mocks/process-clinical-trial-data.yaml rename to agentspecs/agents/process-clinical-trial-data.yaml index ea0c985..5306989 100644 --- a/agentspecs/agents/mocks/process-clinical-trial-data.yaml +++ b/agentspecs/agents/process-clinical-trial-data.yaml @@ -7,6 +7,7 @@ # and submission-ready dataset preparation across multi-site trials. id: process-clinical-trial-data +version: 0.0.1 name: Process Clinical Trial Data description: > A multi-agent team that automates clinical trial data processing across @@ -21,11 +22,9 @@ tags: - clinical-trials - patient-data - compliance - - team -enabled: true - -model: "anthropic-claude-sonnet-4" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -34,13 +33,17 @@ memory: ephemeral # MCP servers used by this agent team mcp_servers: - - filesystem + - filesystem:0.0.1 # Skills available to this agent team skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -48,77 +51,6 @@ icon: heart emoji: ๐Ÿฅ color: "#cf222e" # Red โ€” healthcare & safety -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: Clinical Data Orchestrator Agent - model: "anthropic-claude-sonnet-4" - routing_instructions: > - Route incoming data through the Ingestion Agent first for format - detection and parsing, then to Harmonisation Agent for CDISC SDTM - standardisation, then Safety Monitor for adverse event screening, - then Submission Preparer for final dataset assembly. Escalate serious - adverse events (SAEs) immediately to the medical officer. - validation: - timeout: "600s" - retry_on_failure: true - max_retries: 2 - agents: - - id: ct-1 - name: Data Ingestion Agent - role: "Primary ยท Initiator" - goal: Ingest patient records, lab results, and CRFs from clinical sites - model: "openai-gpt-4-1" - mcp_server: Clinical EDC MCP - tools: - - Medidata Connector - - Veeva Vault Reader - - Oracle Clinical Adapter - - Format Detector - trigger: "Event: new data batch received from site" - approval: auto - - id: ct-2 - name: Harmonisation Agent - role: Secondary - goal: Standardise all data to CDISC SDTM format with MedDRA coding - model: "openai-gpt-4-1" - mcp_server: Data Standards MCP - tools: - - SDTM Mapper - - MedDRA Coder - - Unit Converter - - Site Normaliser - trigger: "On completion of Data Ingestion Agent" - approval: auto - - id: ct-3 - name: Safety Monitor Agent - role: Secondary - goal: Screen every data point for adverse events and safety signals - model: "anthropic-claude-sonnet-4" - mcp_server: Safety Database MCP - tools: - - AE Classifier - - Signal Detector - - SAE Escalator - - Evidence Trail Builder - trigger: "On completion of Harmonisation Agent" - approval: manual - - id: ct-4 - name: Submission Preparer Agent - role: Final - goal: Assemble submission-ready SDTM datasets with validation and define.xml - model: "openai-gpt-4-1" - mcp_server: Submission MCP - tools: - - Dataset Validator - - Define.xml Generator - - PDF Report Builder - - Compliance Checker - trigger: "On completion of Safety Monitor Agent" - approval: auto - # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Process clinical trial data from multiple sites: ingest patient records @@ -127,7 +59,7 @@ goal: >- submission-ready datasets with full validation and audit trails. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Evals @@ -164,6 +96,7 @@ authorization_policy: "" trigger: type: event description: Triggered on new data batch arrival from clinical sites + prompt: "Handle this event trigger: Triggered on new data batch arrival from clinical sites" # Output configuration output: diff --git a/agentspecs/agents/mocks/process-financial-transactions.yaml b/agentspecs/agents/process-financial-transactions.yaml similarity index 92% rename from agentspecs/agents/mocks/process-financial-transactions.yaml rename to agentspecs/agents/process-financial-transactions.yaml index 6e18cda..9d89c7b 100644 --- a/agentspecs/agents/mocks/process-financial-transactions.yaml +++ b/agentspecs/agents/process-financial-transactions.yaml @@ -7,6 +7,7 @@ # Source: UI mock flow id=3 (Agents.tsx) id: process-financial-transactions +version: 0.0.1 name: Process Financial Transactions description: > Processes and validates financial transactions across accounts. Reconciles @@ -20,9 +21,8 @@ tags: - compliance - reconciliation -enabled: true - -model: "openai-gpt-4-1" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -31,13 +31,17 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - filesystem + - filesystem:0.0.1 # Skills available to this agent skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -52,13 +56,14 @@ goal: >- transactions for human review, and generate audit-ready reports. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Trigger configuration trigger: type: event description: Triggered on new transaction batch arrival + prompt: "Handle this event trigger: Triggered on new transaction batch arrival" # Model configuration model_config: diff --git a/agentspecs/agents/spatial-data-analysis.yaml b/agentspecs/agents/spatial-data-analysis.yaml new file mode 100644 index 0000000..aeec08c --- /dev/null +++ b/agentspecs/agents/spatial-data-analysis.yaml @@ -0,0 +1,96 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Agent Specification: Spatial Data Analysis Agent +# Inspired by Eurus climate workflows and Earthdata catalog exploration. + +id: spatial-data-analysis +version: 0.0.1 +name: Spatial Data Analysis Agent +description: > + Discovers, acquires, and analyzes geospatial datasets using Earthdata and + Eurus tools. Produces map-ready summaries, anomaly diagnostics, and + reproducible analysis artifacts for environmental and climate use cases. + +tags: + - geospatial + - climate + - earth-observation + - analytics + +enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" + +sandbox_variant: jupyter + +# Memory backend +memory: ephemeral + +# MCP servers used by this agent +mcp_servers: + - earthdata:0.0.1 + - eurus:0.0.1 + - filesystem:0.0.1 + +# Skills available to this agent +skills: + - events:0.0.1 + +# Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 +environment_name: ai-agents-env + +# UI customization +icon: globe +emoji: ๐Ÿ›ฐ๏ธ +color: "#0EA5E9" + +# Chat suggestions to show users what this agent can do +suggestions: + - Find precipitation datasets for West Africa from the last 10 years + - Build a monthly anomaly map for ERA5 temperature + - Compare two regions for drought indicators and summarize differences + - Generate an event log for each processing step + +# Welcome message shown when agent starts +welcome_message: > + 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. + +# System prompt for the agent +system_prompt: > + You are a geospatial and climate analysis specialist. + Use Earthdata tools to discover and filter relevant datasets. + Use Eurus tools to retrieve, transform, and analyze spatial data. + Clearly state assumptions, geographic bounds, time windows, and units. + Record lifecycle state transitions with event records for traceability. + +# Additional system prompt for code mode +system_prompt_codemode_addons: > + ## IMPORTANT: Be Honest About Your Capabilities + NEVER claim to have tools or capabilities you haven't verified. + + ## Core Codemode Tools + Use these 4 tools to accomplish any task: + 1. **list_servers** - List available MCP servers + 2. **search_tools** - Progressive tool discovery by natural language query + 3. **get_tool_details** - Get full tool schema and documentation + 4. **execute_code** - Run Python code that composes multiple tools + + ## 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. + +# No trigger โ€” this is an interactive agent +trigger: null + +# Optional: Jupyter notebook to show on agent creation +welcome_notebook: null + +# Optional: Lexical document to show on agent creation +welcome_document: null diff --git a/agentspecs/agents/mocks/summarize-documents.yaml b/agentspecs/agents/summarize-documents.yaml similarity index 89% rename from agentspecs/agents/mocks/summarize-documents.yaml rename to agentspecs/agents/summarize-documents.yaml index e481237..b104ea4 100644 --- a/agentspecs/agents/mocks/summarize-documents.yaml +++ b/agentspecs/agents/summarize-documents.yaml @@ -6,6 +6,7 @@ # contracts, research papers โ€” producing structured executive summaries. id: summarize-documents +version: 0.0.1 name: Summarize Documents description: > A generic document summarization agent that processes PDFs, Word files, @@ -20,9 +21,8 @@ tags: - automation - productivity -enabled: true - -model: "anthropic-claude-sonnet-4" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -31,13 +31,17 @@ memory: ephemeral # MCP servers used by this agent mcp_servers: - - filesystem + - filesystem:0.0.1 # Skills available to this agent skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -53,7 +57,7 @@ goal: >- in JSON format. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Trigger configuration @@ -61,6 +65,7 @@ trigger: type: event event: document_uploaded description: Triggered when a new document is uploaded to the workspace + prompt: "Handle the 'document_uploaded' event and execute the workflow end-to-end." # Model configuration model_config: diff --git a/agentspecs/agents/mocks/sync-crm-contacts.yaml b/agentspecs/agents/sync-crm-contacts.yaml similarity index 65% rename from agentspecs/agents/mocks/sync-crm-contacts.yaml rename to agentspecs/agents/sync-crm-contacts.yaml index 2ebff43..a5ae92c 100644 --- a/agentspecs/agents/mocks/sync-crm-contacts.yaml +++ b/agentspecs/agents/sync-crm-contacts.yaml @@ -7,6 +7,7 @@ # Source: UI mock flow id=2 (Agents.tsx, AgentTeam.tsx) id: sync-crm-contacts +version: 0.0.1 name: Sync CRM Contacts description: > A multi-agent team that collects and aggregates contact data from multiple @@ -16,13 +17,11 @@ description: > tags: - sales - crm - - team - data-sync - deduplication -enabled: true - -model: "anthropic-claude-opus-4" +enabled: false +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" sandbox_variant: jupyter @@ -31,14 +30,18 @@ memory: ephemeral # MCP servers used by this agent team mcp_servers: - - filesystem - - slack + - filesystem:0.0.1 + - slack:0.0.1 # Skills available to this agent team skills: - - pdf + - pdf:0.0.1 + - events:0.0.1 # Runtime environment +frontend_tools: + - jupyter-notebook:0.0.1 + - lexical-document:0.0.1 environment_name: ai-agents-env # UI customization @@ -46,68 +49,6 @@ icon: people emoji: ๐Ÿ”„ color: "#0969da" # Blue -# Team configuration -team: - orchestration_protocol: datalayer - execution_mode: sequential - supervisor: - name: CRM Orchestrator Agent - model: "anthropic-claude-opus-4" - routing_instructions: > - Route data collection tasks to the Data Collector first, then analysis, - then sync, then reporting. Escalate to human if sync fails 3 times. - validation: - timeout: "300s" - retry_on_failure: true - max_retries: 3 - agents: - - id: tm-1 - name: Data Collector Agent - role: "Primary ยท Initiator" - goal: Collect and aggregate contact data from multiple CRM sources - model: "openai-gpt-4-1" - mcp_server: Data Processing MCP - tools: - - API Connector - - Data Parser - trigger: "Schedule: Daily at 2:00 AM" - approval: auto - - id: tm-2 - name: Analyzer Agent - role: Secondary - goal: Analyze collected data and identify patterns and duplicates - model: "anthropic-claude-opus-4" - mcp_server: Analytics MCP - tools: - - Statistical Analysis - - ML Predictor - - Deduplicator - trigger: "On completion of Data Collector" - approval: manual - - id: tm-3 - name: Sync Writer Agent - role: Secondary - goal: Write cleaned and merged contacts back to the CRM systems - model: "openai-gpt-4-1" - mcp_server: CRM Write MCP - tools: - - Salesforce Connector - - HubSpot Connector - trigger: "On completion of Analyzer" - approval: manual - - id: tm-4 - name: Report Generator Agent - role: Final - goal: Generate sync summary reports and send notifications - model: "openai-gpt-4-1" - mcp_server: Document Generation MCP - tools: - - PDF Generator - - Chart Builder - - Email Sender - trigger: "On completion of Sync Writer" - approval: auto - # Goal / Prompt (Step 4 in the UI โ€” the user-facing objective) goal: >- Collect and aggregate contact data from multiple CRM sources, analyze and @@ -115,7 +56,7 @@ goal: >- sync summary reports with notifications. # Protocols & UI Extensions -protocol: ag-ui +protocol: vercel-ai ui_extension: a2ui # Guardrails @@ -166,6 +107,7 @@ trigger: cron: "0 2 * * *" description: > Daily at 02:00 โ€” sync CRM contacts across all sources during off-peak hours. + prompt: "Run the scheduled workflow and produce the configured deliverable." # Output configuration output: diff --git a/agentspecs/benchmarks/agentbench.yaml b/agentspecs/benchmarks/agentbench.yaml new file mode 100644 index 0000000..9e1bb07 --- /dev/null +++ b/agentspecs/benchmarks/agentbench.yaml @@ -0,0 +1,28 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: agentbench +version: 0.0.1 +name: AgentBench +description: >- + Multi-dimensional LLM-as-agent evaluation across 8 diverse environments + including web browsing, operating system interaction, database queries, + digital card games, lateral thinking, and household tasks. +category: Agentic +task_count: 4080 +metric: success_rate +source: https://github.com/THUDM/AgentBench +difficulty: hard +dataset_source: hosted +supports_live_monitoring: true +supports_experiment_comparison: true +evaluator_shapes: + - pass_rate + - numeric +evaluators: + - precision-recall-evaluator:0.0.1 + - llm-judge:0.0.1 +languages: + - python + - sql + - bash diff --git a/agentspecs/benchmarks/gpqa-diamond.yaml b/agentspecs/benchmarks/gpqa-diamond.yaml new file mode 100644 index 0000000..a56e2fe --- /dev/null +++ b/agentspecs/benchmarks/gpqa-diamond.yaml @@ -0,0 +1,24 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: gpqa-diamond +version: 0.0.1 +name: GPQA Diamond +description: >- + Graduate-level science questions crafted by domain experts. + Tests advanced reasoning in physics, chemistry, and biology with + questions that require PhD-level understanding to answer correctly. +category: Knowledge +task_count: 448 +metric: accuracy +source: https://github.com/idavidrein/gpqa +difficulty: expert +dataset_source: hosted +supports_live_monitoring: false +supports_experiment_comparison: true +evaluator_shapes: + - numeric +evaluators: + - precision-recall-evaluator:0.0.1 +languages: + - english diff --git a/agentspecs/benchmarks/humaneval.yaml b/agentspecs/benchmarks/humaneval.yaml new file mode 100644 index 0000000..93a11c2 --- /dev/null +++ b/agentspecs/benchmarks/humaneval.yaml @@ -0,0 +1,24 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: humaneval +version: 0.0.1 +name: HumanEval +description: >- + Python function implementation from docstrings. Measures functional + correctness of code generation by testing against hand-written test + cases. Widely used as a baseline for code generation benchmarks. +category: Coding +task_count: 164 +metric: pass@k +source: https://github.com/openai/human-eval +difficulty: medium +dataset_source: hosted +supports_live_monitoring: false +supports_experiment_comparison: true +evaluator_shapes: + - pass_rate +evaluators: + - precision-recall-evaluator:0.0.1 +languages: + - python diff --git a/agentspecs/benchmarks/mmlu.yaml b/agentspecs/benchmarks/mmlu.yaml new file mode 100644 index 0000000..086b97f --- /dev/null +++ b/agentspecs/benchmarks/mmlu.yaml @@ -0,0 +1,24 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: mmlu +version: 0.0.1 +name: MMLU +description: >- + Massive Multitask Language Understanding: 57-subject knowledge + benchmark spanning STEM, humanities, social sciences, and more. + Tests broad knowledge and reasoning across diverse academic domains. +category: Knowledge +task_count: 15908 +metric: accuracy +source: https://github.com/hendrycks/test +difficulty: medium +dataset_source: hosted +supports_live_monitoring: false +supports_experiment_comparison: true +evaluator_shapes: + - numeric +evaluators: + - precision-recall-evaluator:0.0.1 +languages: + - english diff --git a/agentspecs/benchmarks/swe-bench-verified.yaml b/agentspecs/benchmarks/swe-bench-verified.yaml new file mode 100644 index 0000000..515f793 --- /dev/null +++ b/agentspecs/benchmarks/swe-bench-verified.yaml @@ -0,0 +1,25 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: swe-bench-verified +version: 0.0.1 +name: SWE-bench Verified +description: >- + Human-validated subset of SWE-bench with verified ground-truth patches. + Provides higher confidence evaluation of software engineering capabilities + by eliminating ambiguous or flawed test cases from the full benchmark. +category: Coding +task_count: 500 +metric: pass@1 +source: https://www.swebench.com/ +difficulty: hard +dataset_source: hosted +supports_live_monitoring: true +supports_experiment_comparison: true +evaluator_shapes: + - pass_rate +evaluators: + - precision-recall-evaluator:0.0.1 + - llm-judge:0.0.1 +languages: + - python diff --git a/agentspecs/benchmarks/swe-bench.yaml b/agentspecs/benchmarks/swe-bench.yaml new file mode 100644 index 0000000..6aef2ea --- /dev/null +++ b/agentspecs/benchmarks/swe-bench.yaml @@ -0,0 +1,25 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: swe-bench +version: 0.0.1 +name: SWE-bench +description: >- + Real-world software engineering tasks from GitHub issues. Tests an + agent's ability to understand bug reports and feature requests, then + produce working code patches that pass existing test suites. +category: Coding +task_count: 2294 +metric: pass@1 +source: https://www.swebench.com/ +difficulty: hard +dataset_source: hosted +supports_live_monitoring: true +supports_experiment_comparison: true +evaluator_shapes: + - pass_rate +evaluators: + - precision-recall-evaluator:0.0.1 + - llm-judge:0.0.1 +languages: + - python diff --git a/agentspecs/benchmarks/toolbench.yaml b/agentspecs/benchmarks/toolbench.yaml new file mode 100644 index 0000000..0a20e91 --- /dev/null +++ b/agentspecs/benchmarks/toolbench.yaml @@ -0,0 +1,27 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: toolbench +version: 0.0.1 +name: ToolBench +description: >- + Large-scale benchmark for tool-augmented LLMs covering 16000+ real-world + APIs across 49 categories. Evaluates multi-step tool usage, API selection, + argument generation, and response parsing in complex, chained workflows. +category: Agentic +task_count: 12657 +metric: pass_rate +source: https://github.com/OpenBMB/ToolBench +difficulty: hard +dataset_source: hosted +supports_live_monitoring: true +supports_experiment_comparison: true +evaluator_shapes: + - pass_rate + - numeric +evaluators: + - precision-recall-evaluator:0.0.1 + - llm-judge:0.0.1 +languages: + - python + - json diff --git a/agentspecs/benchmarks/truthfulqa.yaml b/agentspecs/benchmarks/truthfulqa.yaml new file mode 100644 index 0000000..5140180 --- /dev/null +++ b/agentspecs/benchmarks/truthfulqa.yaml @@ -0,0 +1,26 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: truthfulqa +version: 0.0.1 +name: TruthfulQA +description: >- + Benchmark measuring whether a language model generates truthful answers + to questions spanning 38 categories including health, law, finance, and + politics. Designed to test resilience against common human misconceptions + and falsehoods that models may have learned from training data. +category: Safety +task_count: 817 +metric: truthful_informative +source: https://github.com/sylinrl/TruthfulQA +difficulty: medium +dataset_source: hosted +supports_live_monitoring: false +supports_experiment_comparison: true +evaluator_shapes: + - categorical + - numeric +evaluators: + - llm-judge:0.0.1 +languages: + - english diff --git a/agentspecs/envvars/ALPHAVANTAGE_API_KEY.yaml b/agentspecs/envvars/ALPHAVANTAGE_API_KEY.yaml index 820539e..6faf6f4 100644 --- a/agentspecs/envvars/ALPHAVANTAGE_API_KEY.yaml +++ b/agentspecs/envvars/ALPHAVANTAGE_API_KEY.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: ALPHAVANTAGE_API_KEY +version: 0.0.1 name: Alpha Vantage API Key description: API key for accessing Alpha Vantage financial market data and stock information. Provides real-time and historical stock prices, forex data, and cryptocurrency information. registrationUrl: https://www.alphavantage.co/support/#api-key diff --git a/agentspecs/envvars/GITHUB_TOKEN.yaml b/agentspecs/envvars/GITHUB_TOKEN.yaml index fde73e7..9b791db 100644 --- a/agentspecs/envvars/GITHUB_TOKEN.yaml +++ b/agentspecs/envvars/GITHUB_TOKEN.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: GITHUB_TOKEN +version: 0.0.1 name: GitHub Token description: GitHub API token for repository management and code operations. Required for GitHub MCP server and GitHub skill to interact with GitHub repositories programmatically. registrationUrl: https://github.com/settings/tokens diff --git a/agentspecs/envvars/GOOGLE_OAUTH_CLIENT_ID.yaml b/agentspecs/envvars/GOOGLE_OAUTH_CLIENT_ID.yaml index 94ebe73..32870b6 100644 --- a/agentspecs/envvars/GOOGLE_OAUTH_CLIENT_ID.yaml +++ b/agentspecs/envvars/GOOGLE_OAUTH_CLIENT_ID.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: GOOGLE_OAUTH_CLIENT_ID +version: 0.0.1 name: Google OAuth Client ID description: OAuth 2.0 client ID for Google Workspace authentication. Required for Google Drive, Gmail, Calendar, and Docs integration through the Google Workspace MCP server. registrationUrl: https://console.cloud.google.com/apis/credentials diff --git a/agentspecs/envvars/GOOGLE_OAUTH_CLIENT_SECRET.yaml b/agentspecs/envvars/GOOGLE_OAUTH_CLIENT_SECRET.yaml index 8a0c83f..06cd046 100644 --- a/agentspecs/envvars/GOOGLE_OAUTH_CLIENT_SECRET.yaml +++ b/agentspecs/envvars/GOOGLE_OAUTH_CLIENT_SECRET.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: GOOGLE_OAUTH_CLIENT_SECRET +version: 0.0.1 name: Google OAuth Client Secret description: OAuth 2.0 client secret for Google Workspace authentication. Used in conjunction with client ID for secure API access to Google services. registrationUrl: https://console.cloud.google.com/apis/credentials diff --git a/agentspecs/envvars/HF_TOKEN.yaml b/agentspecs/envvars/HF_TOKEN.yaml index f3f588f..21be925 100644 --- a/agentspecs/envvars/HF_TOKEN.yaml +++ b/agentspecs/envvars/HF_TOKEN.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: HF_TOKEN +version: 0.0.1 name: Hugging Face Token description: Access token for Hugging Face API. Required for Hugging Face MCP server authentication. Create a READ token from your settings. registrationUrl: https://huggingface.co/settings/tokens diff --git a/agentspecs/envvars/KAGGLE_TOKEN.yaml b/agentspecs/envvars/KAGGLE_TOKEN.yaml index a6bc9a1..c618dd6 100644 --- a/agentspecs/envvars/KAGGLE_TOKEN.yaml +++ b/agentspecs/envvars/KAGGLE_TOKEN.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: KAGGLE_TOKEN +version: 0.0.1 name: Kaggle API Token description: API token for accessing Kaggle datasets, competitions, notebooks, and models. Required for Kaggle MCP server authentication. registrationUrl: https://www.kaggle.com/settings/account diff --git a/agentspecs/envvars/SLACK_BOT_TOKEN.yaml b/agentspecs/envvars/SLACK_BOT_TOKEN.yaml index decdd0e..9f94e39 100644 --- a/agentspecs/envvars/SLACK_BOT_TOKEN.yaml +++ b/agentspecs/envvars/SLACK_BOT_TOKEN.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: SLACK_BOT_TOKEN +version: 0.0.1 name: Slack Bot Token description: OAuth token for Slack bot authentication. Required for Slack MCP server to send messages, manage channels, and interact with workspace members. registrationUrl: https://api.slack.com/apps diff --git a/agentspecs/envvars/SLACK_CHANNEL_IDS.yaml b/agentspecs/envvars/SLACK_CHANNEL_IDS.yaml index 1430f47..2130ecd 100644 --- a/agentspecs/envvars/SLACK_CHANNEL_IDS.yaml +++ b/agentspecs/envvars/SLACK_CHANNEL_IDS.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: SLACK_CHANNEL_IDS +version: 0.0.1 name: Slack Channel IDs description: Comma-separated list of Slack channel IDs that the bot is allowed to access. Restricts bot operations to specific channels for security and organization. tags: diff --git a/agentspecs/envvars/SLACK_TEAM_ID.yaml b/agentspecs/envvars/SLACK_TEAM_ID.yaml index 6403614..dc7cf79 100644 --- a/agentspecs/envvars/SLACK_TEAM_ID.yaml +++ b/agentspecs/envvars/SLACK_TEAM_ID.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: SLACK_TEAM_ID +version: 0.0.1 name: Slack Team ID description: Unique identifier for the Slack workspace (team). Required to specify which workspace the bot should connect to. registrationUrl: https://api.slack.com/apps diff --git a/agentspecs/envvars/TAVILY_API_KEY.yaml b/agentspecs/envvars/TAVILY_API_KEY.yaml index c6f1e45..3c134b9 100644 --- a/agentspecs/envvars/TAVILY_API_KEY.yaml +++ b/agentspecs/envvars/TAVILY_API_KEY.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: TAVILY_API_KEY +version: 0.0.1 name: Tavily API Key description: API key for Tavily web search and research capabilities. Required for web crawling, content extraction, and search operations. registrationUrl: https://tavily.com/api-keys diff --git a/agentspecs/evals/confusion-matrix-evaluator.yaml b/agentspecs/evals/confusion-matrix-evaluator.yaml new file mode 100644 index 0000000..729106c --- /dev/null +++ b/agentspecs/evals/confusion-matrix-evaluator.yaml @@ -0,0 +1,17 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: confusion-matrix-evaluator +version: 0.0.1 +name: Confusion Matrix Evaluator +description: Aggregate evaluator for precision/recall style confusion-matrix reporting. +category: Report +evaluator_type: report +pydantic_class: ConfusionMatrixEvaluator +output_kind: report_table +cost_tier: free +latency: fast +requires: + - expected_output +source: https://ai.pydantic.dev/evals/ +default_config: {} diff --git a/agentspecs/evals/contains.yaml b/agentspecs/evals/contains.yaml new file mode 100644 index 0000000..916068b --- /dev/null +++ b/agentspecs/evals/contains.yaml @@ -0,0 +1,17 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: contains +version: 0.0.1 +name: Contains +description: Assert that expected content appears in the model output. +category: Comparison +evaluator_type: case +pydantic_class: ContainsEvaluator +output_kind: boolean +cost_tier: free +latency: instant +requires: + - expected_output +source: https://ai.pydantic.dev/evals/ +default_config: {} diff --git a/agentspecs/evals/equals-expected.yaml b/agentspecs/evals/equals-expected.yaml new file mode 100644 index 0000000..b043ecf --- /dev/null +++ b/agentspecs/evals/equals-expected.yaml @@ -0,0 +1,17 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: equals-expected +version: 0.0.1 +name: Equals Expected +description: Compare model output against an expected value with strict matching. +category: Comparison +evaluator_type: case +pydantic_class: EqualsExpectedEvaluator +output_kind: boolean +cost_tier: free +latency: instant +requires: + - expected_output +source: https://ai.pydantic.dev/evals/ +default_config: {} diff --git a/agentspecs/evals/equals.yaml b/agentspecs/evals/equals.yaml new file mode 100644 index 0000000..9069b1b --- /dev/null +++ b/agentspecs/evals/equals.yaml @@ -0,0 +1,17 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: equals +version: 0.0.1 +name: Equals +description: Assert exact equality between expected and actual values. +category: Comparison +evaluator_type: case +pydantic_class: EqualsEvaluator +output_kind: boolean +cost_tier: free +latency: instant +requires: + - expected_output +source: https://ai.pydantic.dev/evals/ +default_config: {} diff --git a/agentspecs/evals/has-matching-span.yaml b/agentspecs/evals/has-matching-span.yaml new file mode 100644 index 0000000..fc15111 --- /dev/null +++ b/agentspecs/evals/has-matching-span.yaml @@ -0,0 +1,17 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: has-matching-span +version: 0.0.1 +name: Has Matching Span +description: Validate expected spans in structured traces and tool-call transcripts. +category: Span-Based +evaluator_type: case +pydantic_class: HasMatchingSpanEvaluator +output_kind: boolean +cost_tier: free +latency: fast +requires: + - trace +source: https://ai.pydantic.dev/evals/ +default_config: {} diff --git a/agentspecs/evals/is-instance.yaml b/agentspecs/evals/is-instance.yaml new file mode 100644 index 0000000..1202762 --- /dev/null +++ b/agentspecs/evals/is-instance.yaml @@ -0,0 +1,17 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: is-instance +version: 0.0.1 +name: Is Instance +description: Validate output type against an expected Python/JSON schema type. +category: Type Validation +evaluator_type: case +pydantic_class: IsInstanceEvaluator +output_kind: boolean +cost_tier: free +latency: instant +requires: + - expected_type +source: https://ai.pydantic.dev/evals/ +default_config: {} diff --git a/agentspecs/evals/llm-judge.yaml b/agentspecs/evals/llm-judge.yaml new file mode 100644 index 0000000..d5be838 --- /dev/null +++ b/agentspecs/evals/llm-judge.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: llm-judge +version: 0.0.1 +name: LLM Judge +description: Use an LLM-as-a-judge prompt to score quality and provide rationale. +category: LLM-as-a-Judge +evaluator_type: case +pydantic_class: LLMJudgeEvaluator +output_kind: score_and_assertion +cost_tier: llm +latency: slow +requires: + - model +source: https://ai.pydantic.dev/evals/ +default_config: + threshold: 0.7 diff --git a/agentspecs/evals/max-duration.yaml b/agentspecs/evals/max-duration.yaml new file mode 100644 index 0000000..e0b65ea --- /dev/null +++ b/agentspecs/evals/max-duration.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: max-duration +version: 0.0.1 +name: Max Duration +description: Assert response latency remains below a configured duration threshold. +category: Performance +evaluator_type: case +pydantic_class: MaxDurationEvaluator +output_kind: boolean_with_reason +cost_tier: free +latency: instant +requires: + - duration_ms +source: https://ai.pydantic.dev/evals/ +default_config: + max_duration_ms: 5000 diff --git a/agentspecs/evals/precision-recall-evaluator.yaml b/agentspecs/evals/precision-recall-evaluator.yaml new file mode 100644 index 0000000..0ad365c --- /dev/null +++ b/agentspecs/evals/precision-recall-evaluator.yaml @@ -0,0 +1,17 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: precision-recall-evaluator +version: 0.0.1 +name: Precision Recall Evaluator +description: Aggregate evaluator for precision, recall, and pass-rate style benchmark reporting. +category: Report +evaluator_type: report +pydantic_class: PrecisionRecallEvaluator +output_kind: report_curve +cost_tier: free +latency: fast +requires: + - expected_output +source: https://ai.pydantic.dev/evals/ +default_config: {} diff --git a/agentspecs/events/agent-ended.yaml b/agentspecs/events/agent-ended.yaml new file mode 100644 index 0000000..dd98206 --- /dev/null +++ b/agentspecs/events/agent-ended.yaml @@ -0,0 +1,51 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: agent-ended +version: 0.0.1 +name: Agent Ended +description: >- + Emitted when an agent finishes execution. Contains timing information, + exit status, optional output summary, and error details if applicable. +kind: agent-ended +fields: + - name: agent_runtime_id + label: Agent Runtime ID + type: string + required: true + description: Runtime pod or instance identifier. + - name: agent_spec_id + label: Agent Spec ID + type: string + required: true + description: Identifier of the agent specification that was executed. + - name: started_at + label: Started At + type: string + required: true + description: ISO 8601 timestamp when the agent started. + - name: ended_at + label: Ended At + type: string + required: true + description: ISO 8601 timestamp when the agent ended. + - name: duration_ms + label: Duration (ms) + type: number + required: true + description: Total execution time in milliseconds. + - name: exit_status + label: Exit Status + type: string + required: true + description: "Final status of the agent run (e.g. completed, error)." + - name: outputs + label: Outputs + type: string + required: false + description: Summary of the agent output or generated artifacts. + - name: error_message + label: Error Message + type: string + required: false + description: Error description if the agent run failed. diff --git a/agentspecs/events/agent-started.yaml b/agentspecs/events/agent-started.yaml new file mode 100644 index 0000000..90e83f2 --- /dev/null +++ b/agentspecs/events/agent-started.yaml @@ -0,0 +1,36 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: agent-started +version: 0.0.1 +name: Agent Started +description: >- + Emitted when an agent begins execution. Contains the runtime identifier, + agent spec, trigger type, and the prompt being executed. +kind: agent-started +fields: + - name: agent_runtime_id + label: Agent Runtime ID + type: string + required: true + description: Runtime pod or instance identifier. + - name: agent_spec_id + label: Agent Spec ID + type: string + required: true + description: Identifier of the agent specification being executed. + - name: started_at + label: Started At + type: string + required: true + description: ISO 8601 timestamp when the agent started. + - name: trigger_type + label: Trigger Type + type: string + required: true + description: "Type of trigger that launched the agent (e.g. once, cron, webhook)." + - name: trigger_prompt + label: Trigger Prompt + type: string + required: false + description: The prompt passed to the agent by the trigger. diff --git a/agentspecs/events/tool-approval-requested.yaml b/agentspecs/events/tool-approval-requested.yaml new file mode 100644 index 0000000..46cd07b --- /dev/null +++ b/agentspecs/events/tool-approval-requested.yaml @@ -0,0 +1,31 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: tool-approval-requested +version: 0.0.1 +name: Tool Approval Requested +description: >- + Emitted when an agent invokes a tool that requires manual approval + before execution. The agent pauses until the request is approved or rejected. +kind: tool-approval-requested +fields: + - name: agent_runtime_id + label: Agent Runtime ID + type: string + required: true + description: Runtime pod or instance identifier. + - name: agent_spec_id + label: Agent Spec ID + type: string + required: false + description: Identifier of the agent specification requesting approval. + - name: tool_name + label: Tool Name + type: string + required: true + description: Name of the tool requiring approval. + - name: tool_args + label: Tool Arguments + type: string + required: false + description: JSON-serialized arguments passed to the tool. diff --git a/agentspecs/frontend-tools/jupyter-notebook.yaml b/agentspecs/frontend-tools/jupyter-notebook.yaml new file mode 100644 index 0000000..e9e6816 --- /dev/null +++ b/agentspecs/frontend-tools/jupyter-notebook.yaml @@ -0,0 +1,15 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: jupyter-notebook +version: 0.0.1 +name: Jupyter Notebook +description: Frontend tools for interacting with Jupyter notebooks. +tags: + - frontend + - notebook + - jupyter +enabled: true +toolset: all +icon: notebook +emoji: "๐Ÿ““" diff --git a/agentspecs/frontend-tools/lexical-document.yaml b/agentspecs/frontend-tools/lexical-document.yaml new file mode 100644 index 0000000..ff7d55f --- /dev/null +++ b/agentspecs/frontend-tools/lexical-document.yaml @@ -0,0 +1,15 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: lexical-document +version: 0.0.1 +name: Lexical Document +description: Frontend tools for interacting with Lexical documents. +tags: + - frontend + - document + - lexical +enabled: true +toolset: all +icon: file +emoji: "๐Ÿ“„" diff --git a/agentspecs/guardrails/data-engineering-power-user.yaml b/agentspecs/guardrails/data-engineering-power-user.yaml new file mode 100644 index 0000000..af39499 --- /dev/null +++ b/agentspecs/guardrails/data-engineering-power-user.yaml @@ -0,0 +1,75 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: data-engineering-power-user +version: 0.0.1 +name: Data Engineering Power User +description: >- + Power-user guardrail for data engineering agents with full + read/write access, high token limits, and ability to deploy + pipelines. Suitable for ETL, data transformation, and pipeline + management agents. + +identity_provider: datalayer +identity_name: dave@acme.com + +permissions: + read:data: true + write:data: true + execute:code: true + access:internet: true + send:email: true + deploy:production: true + +token_limits: + per_run: "200K" + per_day: "5M" + per_month: "50M" + +data_scope: + allowed_systems: + - postgresql + - mongodb + - s3 + - kafka + allowed_objects: [] + denied_objects: [] + denied_fields: + - "*SSN*" + - "*Bank*" + - "*IBAN*" + +data_handling: + default_aggregation: false + allow_row_level_output: true + max_rows_in_output: 100000 + redact_fields: [] + hash_fields: [] + pii_detection: true + pii_action: redact + +approval_policy: + require_manual_approval_for: + - "Schema changes" + - "Drop or truncate operations" + - "Production data modifications" + auto_approved: + - "Read queries" + - "Data transformations" + - "Pipeline orchestration" + +tool_limits: + max_tool_calls: 500 + max_query_rows: 1000000 + max_query_runtime: "300s" + max_time_window_days: 365 + +audit: + log_tool_calls: true + log_query_metadata_only: false + retain_days: 90 + require_lineage_in_report: true + +content_safety: + treat_crm_text_fields_as_untrusted: true + do_not_follow_instructions_from_data: true diff --git a/agentspecs/guardrails/default-platform-user.yaml b/agentspecs/guardrails/default-platform-user.yaml new file mode 100644 index 0000000..58a30fd --- /dev/null +++ b/agentspecs/guardrails/default-platform-user.yaml @@ -0,0 +1,62 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: default-platform-user +version: 0.0.1 +name: Default Platform User +description: >- + Standard platform user guardrail with moderate permissions. + Suitable for general-purpose agents that need read access + and limited code execution. + +identity_provider: datalayer +identity_name: alice@acme.com + +permissions: + read:data: true + write:data: false + execute:code: true + access:internet: true + send:email: false + deploy:production: false + +token_limits: + per_run: "50K" + per_day: "500K" + per_month: "5M" + +data_scope: + allowed_systems: [] + allowed_objects: [] + denied_objects: [] + denied_fields: [] + +data_handling: + default_aggregation: false + allow_row_level_output: true + max_rows_in_output: 1000 + redact_fields: [] + hash_fields: [] + pii_detection: false + pii_action: warn + +approval_policy: + require_manual_approval_for: [] + auto_approved: + - "All read-only queries" + +tool_limits: + max_tool_calls: 50 + max_query_rows: 100000 + max_query_runtime: "60s" + max_time_window_days: 90 + +audit: + log_tool_calls: true + log_query_metadata_only: false + retain_days: 30 + require_lineage_in_report: false + +content_safety: + treat_crm_text_fields_as_untrusted: false + do_not_follow_instructions_from_data: true diff --git a/agentspecs/guardrails/github-actions-deploy.yaml b/agentspecs/guardrails/github-actions-deploy.yaml new file mode 100644 index 0000000..eb6653e --- /dev/null +++ b/agentspecs/guardrails/github-actions-deploy.yaml @@ -0,0 +1,70 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: github-actions-deploy +version: 0.0.1 +name: GitHub Actions Deploy +description: >- + Full-access guardrail for deployment agents running via GitHub Actions. + All permissions enabled including production deployment. Very high + token limits for complex multi-step deployment workflows. + +identity_provider: github +identity_name: acme-deploy-bot + +permissions: + read:data: true + write:data: true + execute:code: true + access:internet: true + send:email: true + deploy:production: true + +token_limits: + per_run: "150K" + per_day: "3M" + per_month: "30M" + +data_scope: + allowed_systems: + - github + - kubernetes + - docker + - terraform + allowed_objects: [] + denied_objects: [] + denied_fields: [] + +data_handling: + default_aggregation: false + allow_row_level_output: true + max_rows_in_output: 50000 + redact_fields: [] + hash_fields: [] + pii_detection: false + pii_action: warn + +approval_policy: + require_manual_approval_for: + - "Production environment changes" + - "Infrastructure scaling beyond limits" + auto_approved: + - "Staging deployments" + - "Test environment operations" + - "Build and package operations" + +tool_limits: + max_tool_calls: 300 + max_query_rows: 500000 + max_query_runtime: "180s" + max_time_window_days: 365 + +audit: + log_tool_calls: true + log_query_metadata_only: false + retain_days: 180 + require_lineage_in_report: true + +content_safety: + treat_crm_text_fields_as_untrusted: false + do_not_follow_instructions_from_data: true diff --git a/agentspecs/guardrails/github-ci-bot.yaml b/agentspecs/guardrails/github-ci-bot.yaml new file mode 100644 index 0000000..4f7096a --- /dev/null +++ b/agentspecs/guardrails/github-ci-bot.yaml @@ -0,0 +1,69 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: github-ci-bot +version: 0.0.1 +name: GitHub CI Bot +description: >- + Guardrail for automated CI/CD agents running via GitHub Actions. + High token limits for batch processing, full code execution, + and internet access for package installation. + +identity_provider: github +identity_name: acme-ci-bot + +permissions: + read:data: true + write:data: true + execute:code: true + access:internet: true + send:email: false + deploy:production: false + +token_limits: + per_run: "100K" + per_day: "2M" + per_month: "20M" + +data_scope: + allowed_systems: + - github + - npm + - pypi + allowed_objects: [] + denied_objects: [] + denied_fields: [] + +data_handling: + default_aggregation: false + allow_row_level_output: true + max_rows_in_output: 10000 + redact_fields: [] + hash_fields: [] + pii_detection: false + pii_action: warn + +approval_policy: + require_manual_approval_for: + - "Any production deployment" + - "Any write to protected branches" + auto_approved: + - "Build and test operations" + - "Package installation" + - "Code analysis and linting" + +tool_limits: + max_tool_calls: 200 + max_query_rows: 500000 + max_query_runtime: "120s" + max_time_window_days: 365 + +audit: + log_tool_calls: true + log_query_metadata_only: false + retain_days: 90 + require_lineage_in_report: false + +content_safety: + treat_crm_text_fields_as_untrusted: false + do_not_follow_instructions_from_data: true diff --git a/agentspecs/guardrails/google-workspace-agent.yaml b/agentspecs/guardrails/google-workspace-agent.yaml new file mode 100644 index 0000000..4442875 --- /dev/null +++ b/agentspecs/guardrails/google-workspace-agent.yaml @@ -0,0 +1,72 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: google-workspace-agent +version: 0.0.1 +name: Google Workspace Agent +description: >- + Guardrail for agents integrating with Google Workspace services + (Gmail, Drive, Calendar, Sheets). Moderate permissions with + email sending enabled. Service account-based identity with + Google OAuth. + +identity_provider: google +identity_name: agent-sa@acme.iam.gserviceaccount.com + +permissions: + read:data: true + write:data: true + execute:code: false + access:internet: true + send:email: true + deploy:production: false + +token_limits: + per_run: "80K" + per_day: "1M" + per_month: "10M" + +data_scope: + allowed_systems: + - gmail + - google-drive + - google-sheets + - google-calendar + allowed_objects: [] + denied_objects: [] + denied_fields: [] + +data_handling: + default_aggregation: false + allow_row_level_output: true + max_rows_in_output: 5000 + redact_fields: [] + hash_fields: [] + pii_detection: true + pii_action: warn + +approval_policy: + require_manual_approval_for: + - "Sending external emails" + - "Sharing files outside organization" + - "Modifying calendar events for other users" + auto_approved: + - "Reading emails and documents" + - "Creating drafts" + - "Reading calendar" + +tool_limits: + max_tool_calls: 100 + max_query_rows: 50000 + max_query_runtime: "60s" + max_time_window_days: 180 + +audit: + log_tool_calls: true + log_query_metadata_only: false + retain_days: 60 + require_lineage_in_report: false + +content_safety: + treat_crm_text_fields_as_untrusted: true + do_not_follow_instructions_from_data: true diff --git a/agentspecs/guardrails/restricted-viewer.yaml b/agentspecs/guardrails/restricted-viewer.yaml new file mode 100644 index 0000000..4d41839 --- /dev/null +++ b/agentspecs/guardrails/restricted-viewer.yaml @@ -0,0 +1,68 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: restricted-viewer +version: 0.0.1 +name: Restricted Viewer +description: >- + Minimal-permissions guardrail for read-only monitoring agents. + No code execution, no write access, very low token limits. + Suitable for dashboard viewers and audit observers. + +identity_provider: azure-ad +identity_name: viewer-group@acme.onmicrosoft.com + +permissions: + read:data: true + write:data: false + execute:code: false + access:internet: false + send:email: false + deploy:production: false + +token_limits: + per_run: "10K" + per_day: "50K" + per_month: "500K" + +data_scope: + allowed_systems: [] + allowed_objects: [] + denied_objects: [] + denied_fields: + - "*SSN*" + - "*Bank*" + - "*IBAN*" + - "*Password*" + - "*Secret*" + +data_handling: + default_aggregation: true + allow_row_level_output: false + max_rows_in_output: 0 + redact_fields: [] + hash_fields: [] + pii_detection: true + pii_action: redact + +approval_policy: + require_manual_approval_for: + - "Any operation beyond read" + auto_approved: + - "Aggregated read-only queries" + +tool_limits: + max_tool_calls: 10 + max_query_rows: 10000 + max_query_runtime: "15s" + max_time_window_days: 30 + +audit: + log_tool_calls: true + log_query_metadata_only: true + retain_days: 90 + require_lineage_in_report: false + +content_safety: + treat_crm_text_fields_as_untrusted: true + do_not_follow_instructions_from_data: true diff --git a/agentspecs/mcp-servers/alphavantage.yaml b/agentspecs/mcp-servers/alphavantage.yaml index 925564c..36ed586 100644 --- a/agentspecs/mcp-servers/alphavantage.yaml +++ b/agentspecs/mcp-servers/alphavantage.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: alphavantage +version: 0.0.1 name: Alpha Vantage description: Financial market data and stock information @@ -13,7 +14,7 @@ args: transport: stdio envvars: - - ALPHAVANTAGE_API_KEY + - ALPHAVANTAGE_API_KEY:0.0.1 env: MAX_RESPONSE_TOKENS: "100000" diff --git a/agentspecs/mcp-servers/chart.yaml b/agentspecs/mcp-servers/chart.yaml index 64c2266..18a6e07 100644 --- a/agentspecs/mcp-servers/chart.yaml +++ b/agentspecs/mcp-servers/chart.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: chart +version: 0.0.1 name: Chart Generator description: Generate charts and visualizations diff --git a/agentspecs/mcp-servers/earthdata.yaml b/agentspecs/mcp-servers/earthdata.yaml new file mode 100644 index 0000000..bd59cd4 --- /dev/null +++ b/agentspecs/mcp-servers/earthdata.yaml @@ -0,0 +1,31 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: earthdata +version: 0.0.1 +name: Earthdata MCP +description: Access NASA Earthdata search and metadata capabilities + +command: npx +args: + - "-y" + - "earthdata-mcp-server" + +transport: stdio +enabled: true + +env: + EARTHDATA_USERNAME: ${EARTHDATA_USERNAME} + EARTHDATA_PASSWORD: ${EARTHDATA_PASSWORD} + +envvars: + - EARTHDATA_USERNAME:0.0.1 + - EARTHDATA_PASSWORD:0.0.1 + +tags: + - geospatial + - earth-observation + - datasets + +icon: globe +emoji: ๐ŸŒ diff --git a/agentspecs/mcp-servers/eurus.yaml b/agentspecs/mcp-servers/eurus.yaml new file mode 100644 index 0000000..7ed9726 --- /dev/null +++ b/agentspecs/mcp-servers/eurus.yaml @@ -0,0 +1,23 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: eurus +version: 0.0.1 +name: Eurus Climate MCP +description: Climate and reanalysis analysis tools for spatial workflows + +command: eurus-mcp +args: [] + +transport: stdio +enabled: true + +env: {} + +tags: + - geospatial + - climate + - analysis + +icon: graph +emoji: ๐ŸŒฆ๏ธ diff --git a/agentspecs/mcp-servers/filesystem.yaml b/agentspecs/mcp-servers/filesystem.yaml index f0e95d8..06c21c3 100644 --- a/agentspecs/mcp-servers/filesystem.yaml +++ b/agentspecs/mcp-servers/filesystem.yaml @@ -5,6 +5,7 @@ # Local filesystem read/write operations id: filesystem +version: 0.0.1 name: Filesystem description: Local filesystem read/write operations diff --git a/agentspecs/mcp-servers/github.yaml b/agentspecs/mcp-servers/github.yaml index a5f7e6b..f53ba13 100644 --- a/agentspecs/mcp-servers/github.yaml +++ b/agentspecs/mcp-servers/github.yaml @@ -5,6 +5,7 @@ # Provides GitHub repository operations (issues, PRs, code search) id: github +version: 0.0.1 name: GitHub description: GitHub repository operations (issues, PRs, code search) @@ -24,7 +25,7 @@ env: GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}" envvars: - - GITHUB_TOKEN + - GITHUB_TOKEN:0.0.1 tags: - development diff --git a/agentspecs/mcp-servers/google-workspace.yaml b/agentspecs/mcp-servers/google-workspace.yaml index 5b21569..1b13c38 100644 --- a/agentspecs/mcp-servers/google-workspace.yaml +++ b/agentspecs/mcp-servers/google-workspace.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: google-workspace +version: 0.0.1 name: Google Workspace description: Google Drive, Gmail, Calendar, and Docs integration @@ -12,8 +13,8 @@ args: transport: stdio envvars: - - GOOGLE_OAUTH_CLIENT_ID - - GOOGLE_OAUTH_CLIENT_SECRET + - GOOGLE_OAUTH_CLIENT_ID:0.0.1 + - GOOGLE_OAUTH_CLIENT_SECRET:0.0.1 env: GOOGLE_OAUTH_CLIENT_ID: "${GOOGLE_OAUTH_CLIENT_ID}" diff --git a/agentspecs/mcp-servers/huggingface.yaml b/agentspecs/mcp-servers/huggingface.yaml index 1ec8523..028ae42 100644 --- a/agentspecs/mcp-servers/huggingface.yaml +++ b/agentspecs/mcp-servers/huggingface.yaml @@ -5,6 +5,7 @@ # Provides access to Hugging Face models, datasets, spaces, and papers id: huggingface +version: 0.0.1 name: Hugging Face description: Hugging Face models, datasets, spaces, and papers access @@ -25,7 +26,7 @@ enabled: true # Environment variable specifications envvars: - - HF_TOKEN + - HF_TOKEN:0.0.1 # Optional environment variables to pass to the server process env: {} diff --git a/agentspecs/mcp-servers/kaggle.yaml b/agentspecs/mcp-servers/kaggle.yaml index 79f86f7..967937e 100644 --- a/agentspecs/mcp-servers/kaggle.yaml +++ b/agentspecs/mcp-servers/kaggle.yaml @@ -5,6 +5,7 @@ # Provides access to Kaggle datasets, competitions, models, and notebooks id: kaggle +version: 0.0.1 name: Kaggle description: Kaggle datasets, models, competitions, and notebooks access @@ -25,7 +26,7 @@ enabled: true # Environment variable specifications envvars: - - KAGGLE_TOKEN + - KAGGLE_TOKEN:0.0.1 # Optional environment variables to pass to the server process env: {} diff --git a/agentspecs/mcp-servers/salesforce.yaml b/agentspecs/mcp-servers/salesforce.yaml index d2e3612..77719a0 100644 --- a/agentspecs/mcp-servers/salesforce.yaml +++ b/agentspecs/mcp-servers/salesforce.yaml @@ -5,6 +5,7 @@ # Provides Salesforce CRM operations (queries, reports, objects, SOQL) id: salesforce +version: 0.0.1 name: Salesforce description: Salesforce CRM operations (queries, reports, objects, SOQL) @@ -21,8 +22,8 @@ env: SALESFORCE_INSTANCE_URL: "${SALESFORCE_INSTANCE_URL}" envvars: - - SALESFORCE_ACCESS_TOKEN - - SALESFORCE_INSTANCE_URL + - SALESFORCE_ACCESS_TOKEN:0.0.1 + - SALESFORCE_INSTANCE_URL:0.0.1 tags: - crm diff --git a/agentspecs/mcp-servers/slack.yaml b/agentspecs/mcp-servers/slack.yaml index f13bba1..c8a9030 100644 --- a/agentspecs/mcp-servers/slack.yaml +++ b/agentspecs/mcp-servers/slack.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: slack +version: 0.0.1 name: Slack description: Slack messaging and channel operations @@ -13,9 +14,9 @@ args: transport: stdio envvars: - - SLACK_BOT_TOKEN - - SLACK_TEAM_ID - - SLACK_CHANNEL_IDS + - SLACK_BOT_TOKEN:0.0.1 + - SLACK_TEAM_ID:0.0.1 + - SLACK_CHANNEL_IDS:0.0.1 env: SLACK_BOT_TOKEN: "${SLACK_BOT_TOKEN}" diff --git a/agentspecs/mcp-servers/tavily.yaml b/agentspecs/mcp-servers/tavily.yaml index 0149a8d..cf30cc1 100644 --- a/agentspecs/mcp-servers/tavily.yaml +++ b/agentspecs/mcp-servers/tavily.yaml @@ -2,6 +2,7 @@ # Distributed under the terms of the Modified BSD License. id: tavily +version: 0.0.1 name: Tavily Search description: Web search and research capabilities via Tavily API @@ -16,7 +17,7 @@ env: TAVILY_API_KEY: ${TAVILY_API_KEY} envvars: - - TAVILY_API_KEY + - TAVILY_API_KEY:0.0.1 tags: - search diff --git a/agentspecs/memory/ephemeral.yaml b/agentspecs/memory/ephemeral.yaml index 55301b3..d712d93 100644 --- a/agentspecs/memory/ephemeral.yaml +++ b/agentspecs/memory/ephemeral.yaml @@ -7,6 +7,7 @@ # that only need to remember context within a single session. id: ephemeral +version: 0.0.1 name: Ephemeral Memory description: > Simple in-process memory that lives and dies with the agent. Stores diff --git a/agentspecs/memory/mem0.yaml b/agentspecs/memory/mem0.yaml index fba1f56..408469e 100644 --- a/agentspecs/memory/mem0.yaml +++ b/agentspecs/memory/mem0.yaml @@ -7,6 +7,7 @@ # extraction, deduplication, and semantic search. id: mem0 +version: 0.0.1 name: Mem0 Memory description: > Universal memory layer powered by Mem0 (mem-zero). Enhances AI agents diff --git a/agentspecs/memory/memu.yaml b/agentspecs/memory/memu.yaml index 24c656e..3150676 100644 --- a/agentspecs/memory/memu.yaml +++ b/agentspecs/memory/memu.yaml @@ -8,6 +8,7 @@ # items, and resources. Designed for long-running, always-on agents. id: memu +version: 0.0.1 name: memU Proactive Memory description: > Proactive memory framework built for 24/7 always-on agents. Continuously diff --git a/agentspecs/memory/simplemem.yaml b/agentspecs/memory/simplemem.yaml index 69a2b7e..87302cc 100644 --- a/agentspecs/memory/simplemem.yaml +++ b/agentspecs/memory/simplemem.yaml @@ -8,6 +8,7 @@ # with intent-aware retrieval planning. id: simplemem +version: 0.0.1 name: SimpleMem Lifelong Memory description: > Efficient lifelong memory framework based on semantic lossless compression. diff --git a/agentspecs/models/anthropic-claude-haiku-3-5.yaml b/agentspecs/models/anthropic-claude-haiku-3-5.yaml index 0e7383f..6845fca 100644 --- a/agentspecs/models/anthropic-claude-haiku-3-5.yaml +++ b/agentspecs/models/anthropic-claude-haiku-3-5.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Anthropic Claude Haiku 3.5 id: "anthropic:claude-3-5-haiku-20241022" +version: 0.0.1 name: Anthropic Claude Haiku 3.5 description: Claude Haiku 3.5 by Anthropic - fast and efficient provider: anthropic diff --git a/agentspecs/models/anthropic-claude-opus-4.yaml b/agentspecs/models/anthropic-claude-opus-4.yaml index 05d0e7f..defb26f 100644 --- a/agentspecs/models/anthropic-claude-opus-4.yaml +++ b/agentspecs/models/anthropic-claude-opus-4.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Anthropic Claude Opus 4 id: "anthropic:claude-opus-4-20250514" +version: 0.0.1 name: Anthropic Claude Opus 4 description: Claude Opus 4 by Anthropic - highest capability model provider: anthropic diff --git a/agentspecs/models/anthropic-claude-sonnet-4-5.yaml b/agentspecs/models/anthropic-claude-sonnet-4-5.yaml index f31fb6d..71f4900 100644 --- a/agentspecs/models/anthropic-claude-sonnet-4-5.yaml +++ b/agentspecs/models/anthropic-claude-sonnet-4-5.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Anthropic Claude Sonnet 4.5 id: "anthropic:claude-sonnet-4-5-20250514" +version: 0.0.1 name: Anthropic Claude Sonnet 4.5 description: Claude Sonnet 4.5 by Anthropic - balanced performance and speed provider: anthropic diff --git a/agentspecs/models/anthropic-claude-sonnet-4.yaml b/agentspecs/models/anthropic-claude-sonnet-4.yaml index b105c36..0871405 100644 --- a/agentspecs/models/anthropic-claude-sonnet-4.yaml +++ b/agentspecs/models/anthropic-claude-sonnet-4.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Anthropic Claude Sonnet 4 id: "anthropic:claude-sonnet-4-20250514" +version: 0.0.1 name: Anthropic Claude Sonnet 4 description: Claude Sonnet 4 by Anthropic - strong reasoning and coding provider: anthropic diff --git a/agentspecs/models/azure-openai-gpt-4-1-mini.yaml b/agentspecs/models/azure-openai-gpt-4-1-mini.yaml index e811ce7..42d9813 100644 --- a/agentspecs/models/azure-openai-gpt-4-1-mini.yaml +++ b/agentspecs/models/azure-openai-gpt-4-1-mini.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Azure OpenAI GPT-4.1 Mini id: "azure-openai:gpt-4.1-mini" +version: 0.0.1 name: Azure OpenAI GPT-4.1 Mini description: GPT-4.1 Mini via Azure OpenAI - compact version provider: azure-openai diff --git a/agentspecs/models/azure-openai-gpt-4-1-nano.yaml b/agentspecs/models/azure-openai-gpt-4-1-nano.yaml index c264a9d..9957b58 100644 --- a/agentspecs/models/azure-openai-gpt-4-1-nano.yaml +++ b/agentspecs/models/azure-openai-gpt-4-1-nano.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Azure OpenAI GPT-4.1 Nano id: "azure-openai:gpt-4.1-nano" +version: 0.0.1 name: Azure OpenAI GPT-4.1 Nano description: GPT-4.1 Nano via Azure OpenAI - smallest and fastest provider: azure-openai diff --git a/agentspecs/models/azure-openai-gpt-4-1.yaml b/agentspecs/models/azure-openai-gpt-4-1.yaml index 951f846..d1fca01 100644 --- a/agentspecs/models/azure-openai-gpt-4-1.yaml +++ b/agentspecs/models/azure-openai-gpt-4-1.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Azure OpenAI GPT-4.1 id: "azure-openai:gpt-4.1" +version: 0.0.1 name: Azure OpenAI GPT-4.1 description: GPT-4.1 via Azure OpenAI - strong general purpose provider: azure-openai diff --git a/agentspecs/models/azure-openai-gpt-4o-mini.yaml b/agentspecs/models/azure-openai-gpt-4o-mini.yaml index ff0c507..f4ba69c 100644 --- a/agentspecs/models/azure-openai-gpt-4o-mini.yaml +++ b/agentspecs/models/azure-openai-gpt-4o-mini.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Azure OpenAI GPT-4o Mini id: "azure-openai:gpt-4o-mini" +version: 0.0.1 name: Azure OpenAI GPT-4o Mini description: GPT-4o Mini via Azure OpenAI - compact enterprise deployment provider: azure-openai diff --git a/agentspecs/models/azure-openai-gpt-4o.yaml b/agentspecs/models/azure-openai-gpt-4o.yaml index 9ad33ba..c6c4f27 100644 --- a/agentspecs/models/azure-openai-gpt-4o.yaml +++ b/agentspecs/models/azure-openai-gpt-4o.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Azure OpenAI GPT-4o id: "azure-openai:gpt-4o" +version: 0.0.1 name: Azure OpenAI GPT-4o description: GPT-4o via Azure OpenAI - enterprise deployment provider: azure-openai diff --git a/agentspecs/models/bedrock-claude-haiku-3-5.yaml b/agentspecs/models/bedrock-claude-haiku-3-5.yaml deleted file mode 100644 index 1a77dc4..0000000 --- a/agentspecs/models/bedrock-claude-haiku-3-5.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) 2025-2026 Datalayer, Inc. -# Distributed under the terms of the Modified BSD License. - -# AI Model Specification: Bedrock Claude Haiku 3.5 - -id: "bedrock:us.anthropic.claude-3-5-haiku-20241022-v1:0" -name: Bedrock Claude Haiku 3.5 -description: Claude Haiku 3.5 via AWS Bedrock - fast and efficient -provider: bedrock -default: false - -required_env_vars: - - AWS_ACCESS_KEY_ID - - AWS_SECRET_ACCESS_KEY - - AWS_DEFAULT_REGION diff --git a/agentspecs/models/bedrock-claude-opus-4-6.yaml b/agentspecs/models/bedrock-claude-opus-4-6.yaml index deb2214..dbff078 100644 --- a/agentspecs/models/bedrock-claude-opus-4-6.yaml +++ b/agentspecs/models/bedrock-claude-opus-4-6.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Bedrock Claude Opus 4.6 id: "bedrock:us.anthropic.claude-opus-4-6-v1" +version: 0.0.1 name: Bedrock Claude Opus 4.6 description: Claude Opus 4.6 via AWS Bedrock provider: bedrock diff --git a/agentspecs/models/bedrock-claude-opus-4.yaml b/agentspecs/models/bedrock-claude-opus-4.yaml index b630005..f657ac0 100644 --- a/agentspecs/models/bedrock-claude-opus-4.yaml +++ b/agentspecs/models/bedrock-claude-opus-4.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Bedrock Claude Opus 4 id: "bedrock:us.anthropic.claude-opus-4-20250514-v1:0" +version: 0.0.1 name: Bedrock Claude Opus 4 description: Claude Opus 4 via AWS Bedrock - highest capability provider: bedrock diff --git a/agentspecs/models/bedrock-claude-sonnet-4-5.yaml b/agentspecs/models/bedrock-claude-sonnet-4-5.yaml index 84b6777..f6a2dae 100644 --- a/agentspecs/models/bedrock-claude-sonnet-4-5.yaml +++ b/agentspecs/models/bedrock-claude-sonnet-4-5.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Bedrock Claude Sonnet 4.5 id: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" +version: 0.0.1 name: Bedrock Claude Sonnet 4.5 description: Claude Sonnet 4.5 via AWS Bedrock - balanced performance provider: bedrock diff --git a/agentspecs/models/bedrock-claude-sonnet-4.yaml b/agentspecs/models/bedrock-claude-sonnet-4.yaml index 302bfd2..f4efc1a 100644 --- a/agentspecs/models/bedrock-claude-sonnet-4.yaml +++ b/agentspecs/models/bedrock-claude-sonnet-4.yaml @@ -4,6 +4,7 @@ # AI Model Specification: Bedrock Claude Sonnet 4 id: "bedrock:us.anthropic.claude-sonnet-4-20250514-v1:0" +version: 0.0.1 name: Bedrock Claude Sonnet 4 description: Claude Sonnet 4 via AWS Bedrock - strong reasoning provider: bedrock diff --git a/agentspecs/models/openai-gpt-4-1-mini.yaml b/agentspecs/models/openai-gpt-4-1-mini.yaml index 98d1bbf..fbd7dea 100644 --- a/agentspecs/models/openai-gpt-4-1-mini.yaml +++ b/agentspecs/models/openai-gpt-4-1-mini.yaml @@ -4,6 +4,7 @@ # AI Model Specification: OpenAI GPT-4.1 Mini id: "openai:gpt-4.1-mini" +version: 0.0.1 name: OpenAI GPT-4.1 Mini description: GPT-4.1 Mini by OpenAI - compact version of GPT-4.1 provider: openai diff --git a/agentspecs/models/openai-gpt-4-1-nano.yaml b/agentspecs/models/openai-gpt-4-1-nano.yaml index 8f71871..b868c83 100644 --- a/agentspecs/models/openai-gpt-4-1-nano.yaml +++ b/agentspecs/models/openai-gpt-4-1-nano.yaml @@ -4,6 +4,7 @@ # AI Model Specification: OpenAI GPT-4.1 Nano id: "openai:gpt-4.1-nano" +version: 0.0.1 name: OpenAI GPT-4.1 Nano description: GPT-4.1 Nano by OpenAI - smallest and fastest provider: openai diff --git a/agentspecs/models/openai-gpt-4-1.yaml b/agentspecs/models/openai-gpt-4-1.yaml index d1398d3..93e308b 100644 --- a/agentspecs/models/openai-gpt-4-1.yaml +++ b/agentspecs/models/openai-gpt-4-1.yaml @@ -4,6 +4,7 @@ # AI Model Specification: OpenAI GPT-4.1 id: "openai:gpt-4.1" +version: 0.0.1 name: OpenAI GPT-4.1 description: GPT-4.1 by OpenAI - strong general purpose model provider: openai diff --git a/agentspecs/models/openai-gpt-4o-mini.yaml b/agentspecs/models/openai-gpt-4o-mini.yaml index 1daa9bb..145baba 100644 --- a/agentspecs/models/openai-gpt-4o-mini.yaml +++ b/agentspecs/models/openai-gpt-4o-mini.yaml @@ -4,6 +4,7 @@ # AI Model Specification: OpenAI GPT-4o Mini id: "openai:gpt-4o-mini" +version: 0.0.1 name: OpenAI GPT-4o Mini description: GPT-4o Mini by OpenAI - compact and cost-effective provider: openai diff --git a/agentspecs/models/openai-gpt-4o.yaml b/agentspecs/models/openai-gpt-4o.yaml index df42ce4..2a2f043 100644 --- a/agentspecs/models/openai-gpt-4o.yaml +++ b/agentspecs/models/openai-gpt-4o.yaml @@ -4,6 +4,7 @@ # AI Model Specification: OpenAI GPT-4o id: "openai:gpt-4o" +version: 0.0.1 name: OpenAI GPT-4o description: GPT-4o by OpenAI - fast multimodal model provider: openai diff --git a/agentspecs/models/openai-o3-mini.yaml b/agentspecs/models/openai-o3-mini.yaml index 2e9518c..891ca74 100644 --- a/agentspecs/models/openai-o3-mini.yaml +++ b/agentspecs/models/openai-o3-mini.yaml @@ -4,6 +4,7 @@ # AI Model Specification: OpenAI o3 Mini id: "openai:o3-mini" +version: 0.0.1 name: OpenAI o3 Mini description: o3 Mini by OpenAI - reasoning-focused compact model provider: openai diff --git a/agentspecs/notifications/api-push.yaml b/agentspecs/notifications/api-push.yaml new file mode 100644 index 0000000..956c4b2 --- /dev/null +++ b/agentspecs/notifications/api-push.yaml @@ -0,0 +1,29 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: api-push +version: 0.0.1 +name: API Push +description: >- + Push results to an external API endpoint via HTTP POST. + Useful for integrating with downstream services, data warehouses, + or event-driven architectures. +icon: upload +available: false +coming_soon: true +fields: + - name: url + label: Endpoint URL + type: string + required: true + placeholder: "https://api.example.com/agent-results" + - name: secret + label: Signing Secret + type: string + required: false + placeholder: "Optional HMAC secret for payload signing" + - name: include_output + label: Include Output + type: boolean + required: false + default: true diff --git a/agentspecs/notifications/email.yaml b/agentspecs/notifications/email.yaml new file mode 100644 index 0000000..a371e3f --- /dev/null +++ b/agentspecs/notifications/email.yaml @@ -0,0 +1,27 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: email +version: 0.0.1 +name: Email +description: >- + Send notifications via email when agent events occur. + Supports completion alerts, failure reports, and summary digests. +icon: mail +available: true +fields: + - name: recipients + label: Recipients + type: string + required: true + placeholder: "ops@company.com, team-lead@company.com" + - name: subject_template + label: Subject Template + type: string + required: false + placeholder: "[Agent] {{agent_name}} โ€” {{event_type}}" + - name: include_output + label: Include Output + type: boolean + required: false + default: true diff --git a/agentspecs/notifications/slack.yaml b/agentspecs/notifications/slack.yaml new file mode 100644 index 0000000..27049e7 --- /dev/null +++ b/agentspecs/notifications/slack.yaml @@ -0,0 +1,27 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: slack +version: 0.0.1 +name: Slack +description: >- + Post notifications to a Slack channel or direct message when + agent events occur. Supports rich message formatting with blocks. +icon: bell +available: true +fields: + - name: channel + label: Channel + type: string + required: true + placeholder: "#sales-analytics" + - name: mention_on_failure + label: Mention on Failure + type: string + required: false + placeholder: "@oncall-team" + - name: include_output + label: Include Output + type: boolean + required: false + default: false diff --git a/agentspecs/notifications/teams.yaml b/agentspecs/notifications/teams.yaml new file mode 100644 index 0000000..dcfbe5c --- /dev/null +++ b/agentspecs/notifications/teams.yaml @@ -0,0 +1,23 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: teams +version: 0.0.1 +name: Teams +description: >- + Post notifications to a Microsoft Teams channel via incoming + webhook connector when agent events occur. +icon: bell +available: false +coming_soon: true +fields: + - name: webhook_url + label: Webhook URL + type: string + required: true + placeholder: "https://outlook.office.com/webhook/..." + - name: include_output + label: Include Output + type: boolean + required: false + default: false diff --git a/agentspecs/notifications/webhook.yaml b/agentspecs/notifications/webhook.yaml new file mode 100644 index 0000000..7327486 --- /dev/null +++ b/agentspecs/notifications/webhook.yaml @@ -0,0 +1,28 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: webhook +version: 0.0.1 +name: Webhook +description: >- + Send notifications to a custom HTTP endpoint via POST request. + Payload includes event type, agent metadata, and optional output. +icon: bell +available: false +coming_soon: true +fields: + - name: url + label: Webhook URL + type: string + required: true + placeholder: "https://api.example.com/agent-events" + - name: secret + label: Signing Secret + type: string + required: false + placeholder: "Optional HMAC secret for payload signing" + - name: include_output + label: Include Output + type: boolean + required: false + default: true diff --git a/agentspecs/outputs/csv.yaml b/agentspecs/outputs/csv.yaml new file mode 100644 index 0000000..5b584a8 --- /dev/null +++ b/agentspecs/outputs/csv.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: csv +version: 0.0.1 +name: CSV +description: >- + Deliver results as a CSV file for easy import into spreadsheets, + data pipelines, or other analysis tools. +icon: table +supports_template: false +supports_storage: true +mime_types: + - text/csv diff --git a/agentspecs/outputs/dashboard.yaml b/agentspecs/outputs/dashboard.yaml new file mode 100644 index 0000000..6223ce9 --- /dev/null +++ b/agentspecs/outputs/dashboard.yaml @@ -0,0 +1,15 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: dashboard +version: 0.0.1 +name: Dashboard +description: >- + Deliver results as an interactive dashboard with charts, + tables, and filter controls rendered in the browser. +icon: graph +supports_template: true +supports_storage: true +mime_types: + - text/html + - application/json diff --git a/agentspecs/outputs/document.yaml b/agentspecs/outputs/document.yaml new file mode 100644 index 0000000..6147a19 --- /dev/null +++ b/agentspecs/outputs/document.yaml @@ -0,0 +1,16 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: document +version: 0.0.1 +name: Document +description: >- + Deliver results as a structured document (PDF, DOCX, or Markdown) + suitable for sharing, archiving, or regulatory compliance. +icon: file +supports_template: true +supports_storage: true +mime_types: + - application/pdf + - application/vnd.openxmlformats-officedocument.wordprocessingml.document + - text/markdown diff --git a/agentspecs/outputs/email.yaml b/agentspecs/outputs/email.yaml new file mode 100644 index 0000000..ba28704 --- /dev/null +++ b/agentspecs/outputs/email.yaml @@ -0,0 +1,15 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: email +version: 0.0.1 +name: Email +description: >- + Send results as an email attachment or inline HTML body. + Supports rich formatting with embedded tables and charts. +icon: mail +supports_template: true +supports_storage: false +mime_types: + - text/html + - application/pdf diff --git a/agentspecs/outputs/json.yaml b/agentspecs/outputs/json.yaml new file mode 100644 index 0000000..89420da --- /dev/null +++ b/agentspecs/outputs/json.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: json +version: 0.0.1 +name: JSON +description: >- + Deliver results as structured JSON data, suitable for + programmatic consumption by APIs, pipelines, or dashboards. +icon: code +supports_template: false +supports_storage: true +mime_types: + - application/json diff --git a/agentspecs/outputs/notebook.yaml b/agentspecs/outputs/notebook.yaml new file mode 100644 index 0000000..1b05b2e --- /dev/null +++ b/agentspecs/outputs/notebook.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: notebook +version: 0.0.1 +name: Notebook +description: >- + Deliver results as a Jupyter notebook with executable cells, + inline visualizations, and rich markdown narrative. +icon: file-code +supports_template: true +supports_storage: true +mime_types: + - application/x-ipynb+json diff --git a/agentspecs/outputs/spreadsheet.yaml b/agentspecs/outputs/spreadsheet.yaml new file mode 100644 index 0000000..49b3358 --- /dev/null +++ b/agentspecs/outputs/spreadsheet.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: spreadsheet +version: 0.0.1 +name: Spreadsheet +description: >- + Deliver results as an Excel spreadsheet with formatted tables, + charts, and multiple sheets for structured analysis. +icon: table +supports_template: true +supports_storage: true +mime_types: + - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet diff --git a/agentspecs/skills/crawl.yaml b/agentspecs/skills/crawl.yaml index 00ae12d..673ad9b 100644 --- a/agentspecs/skills/crawl.yaml +++ b/agentspecs/skills/crawl.yaml @@ -2,13 +2,14 @@ # Distributed under the terms of the Modified BSD License. id: crawl +version: 0.0.1 name: Web Crawl Skill description: Web crawling and content extraction capabilities -module: agent_skills.crawl +module: agent_skills.skills.crawl envvars: - - TAVILY_API_KEY + - TAVILY_API_KEY:0.0.1 dependencies: - requests>=2.31.0 diff --git a/agentspecs/skills/events.yaml b/agentspecs/skills/events.yaml new file mode 100644 index 0000000..11fdc25 --- /dev/null +++ b/agentspecs/skills/events.yaml @@ -0,0 +1,20 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: events +version: 0.0.1 +name: Events Skill +description: Event generation, enrichment, and lifecycle orchestration + +module: agent_skills.skills.events + +dependencies: + - httpx>=0.27.0 + +tags: + - events + - orchestration + - automation + +icon: bell +emoji: ๐Ÿ“… \ No newline at end of file diff --git a/agentspecs/skills/github.yaml b/agentspecs/skills/github.yaml index ef3053c..78d1fae 100644 --- a/agentspecs/skills/github.yaml +++ b/agentspecs/skills/github.yaml @@ -2,13 +2,14 @@ # Distributed under the terms of the Modified BSD License. id: github +version: 0.0.1 name: GitHub Skill description: GitHub repository management and code operations -module: agent_skills.github +module: agent_skills.skills.github envvars: - - GITHUB_TOKEN + - GITHUB_TOKEN:0.0.1 dependencies: - PyGithub>=2.1.0 diff --git a/agentspecs/skills/jokes.yaml b/agentspecs/skills/jokes.yaml new file mode 100644 index 0000000..cacfd50 --- /dev/null +++ b/agentspecs/skills/jokes.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: jokes +version: 0.0.1 +name: Jokes Skill +description: Return random jokes from a local path-based skill. + +# path-based local skill (relative to configured skills folder) +path: jokes + +tags: + - fun + - humor + - demo + +icon: smiley +emoji: ๐Ÿ˜„ diff --git a/agentspecs/skills/pdf.yaml b/agentspecs/skills/pdf.yaml index 5904bc7..abab74e 100644 --- a/agentspecs/skills/pdf.yaml +++ b/agentspecs/skills/pdf.yaml @@ -2,10 +2,11 @@ # Distributed under the terms of the Modified BSD License. id: pdf +version: 0.0.1 name: PDF Processing Skill description: PDF document reading, parsing, and extraction -module: agent_skills.pdf +module: agent_skills.skills.pdf dependencies: - PyPDF2>=3.0.0 diff --git a/agentspecs/skills/text-summarizer.yaml b/agentspecs/skills/text-summarizer.yaml new file mode 100644 index 0000000..17aeb25 --- /dev/null +++ b/agentspecs/skills/text-summarizer.yaml @@ -0,0 +1,24 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: text-summarizer +version: 0.0.1 +name: Text Summarizer Skill +description: Summarize text content using extractive and abstractive techniques. Use when the user asks for summaries, key points, or condensed versions of documents. + +# Variant 2: package + method reference +# Attributes (license, compatibility, allowed-tools, metadata) are read +# from the SKILL.md packaged inside the Python package at runtime. +package: agent_skills.skills.text_summarizer +method: summarize_text + +dependencies: + - agent-skills>=0.0.1 + +tags: + - nlp + - summarization + - text-processing + +icon: note +emoji: ๐Ÿ“ diff --git a/agentspecs/teams/analyze-campaign-performance.yaml b/agentspecs/teams/analyze-campaign-performance.yaml new file mode 100644 index 0000000..91e11e8 --- /dev/null +++ b/agentspecs/teams/analyze-campaign-performance.yaml @@ -0,0 +1,127 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Analyze Campaign Performance +# Auto-extracted from agent spec analyze-campaign-performance + +id: analyze-campaign-performance +version: 0.0.1 +name: Analyze Campaign Performance +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. + + ' +tags: +- marketing +- media +- campaigns +- analytics +- advertising +- social-media +enabled: true +icon: megaphone +emoji: ๐Ÿ“ข +color: '#8250df' +agent_spec_id: analyze-campaign-performance:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: Campaign Analytics Orchestrator Agent + model: openai-gpt-4-1 +routing_instructions: 'Start with Platform Connector to pull data from all ad platforms, then Metrics + Normaliser for unified KPIs, then Anomaly Detector for real-time performance monitoring, then Budget + Optimiser for reallocation recommendations. Escalate CPA spikes above 50% immediately. + + ' +validation: + timeout: 300s + retry_on_failure: true + max_retries: 2 +agents: +- id: cp-1 + name: Platform Connector Agent + role: Primary ยท Initiator + goal: Pull campaign data from Google Ads, Meta, TikTok, LinkedIn, GA4, and email platforms + model: openai-gpt-4-1 + mcp_server: Ad Platforms MCP + tools: + - Google Ads Connector + - Meta Ads Connector + - TikTok Ads Connector + - LinkedIn Ads Connector + - GA4 Connector + trigger: 'Schedule: Every 4 hours' + approval: auto +- id: cp-2 + name: Metrics Normaliser Agent + role: Secondary + goal: Normalise CPA, ROAS, CTR, and attribution across all platforms into unified view + model: openai-gpt-4-1 + mcp_server: Analytics MCP + tools: + - Metric Unifier + - Currency Converter + - Attribution Mapper + - Naming Convention Resolver + trigger: On completion of Platform Connector Agent + approval: auto +- id: cp-3 + name: Anomaly Detector Agent + role: Secondary + goal: Monitor all KPIs for CTR drops, CPA spikes, and budget pacing issues + model: anthropic-claude-sonnet-4 + mcp_server: Monitoring MCP + tools: + - Anomaly Scanner + - Budget Pacer + - Alert Generator + - Campaign Pauser + trigger: On completion of Metrics Normaliser Agent + approval: manual +- id: cp-4 + name: Budget Optimiser Agent + role: Final + goal: Generate budget reallocation recommendations to maximise ROAS across channels + model: openai-gpt-4-1 + mcp_server: Optimisation MCP + tools: + - ROAS Calculator + - Budget Allocator + - Scenario Modeller + - Report Generator + trigger: On completion of Anomaly Detector Agent + approval: manual +reaction_rules: +- id: rr-camp-1 + trigger: budget_threshold_exceeded + action: pause_and_notify + auto: true + max_retries: 1 + escalate_after_retries: 1 + priority: high +- id: rr-camp-2 + trigger: data_quality_low + action: retry_collection + auto: true + max_retries: 3 + escalate_after_retries: 3 + priority: medium +health_monitoring: + heartbeat_interval: 30s + stale_threshold: 120s + unresponsive_threshold: 300s + stuck_threshold: 600s + max_restart_attempts: 3 +notifications: + on_start: true + on_completion: true + on_failure: true + on_escalation: true +output: + formats: + - pdf + - csv + - json + template: Campaign Performance Report + storage: s3://reports/campaign-analytics/ diff --git a/agentspecs/teams/analyze-support-tickets.yaml b/agentspecs/teams/analyze-support-tickets.yaml new file mode 100644 index 0000000..2101cbf --- /dev/null +++ b/agentspecs/teams/analyze-support-tickets.yaml @@ -0,0 +1,104 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Analyze Support Tickets +# Auto-extracted from agent spec analyze-support-tickets + +id: analyze-support-tickets +version: 0.0.1 +name: Analyze Support Tickets +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. + + ' +tags: +- analytics +- data +- support +- tickets +enabled: true +icon: issue-opened +emoji: ๐ŸŽซ +color: '#bf8700' +agent_spec_id: analyze-support-tickets:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: Support Orchestrator Agent + model: openai-gpt-4-1 +routing_instructions: 'Route new tickets to the Triage Agent first, then to the Categorizer, then to the + Pattern Analyzer. Escalate P1/critical tickets immediately to human support leads. + + ' +validation: + timeout: 180s + retry_on_failure: true + max_retries: 2 +agents: +- id: st-1 + name: Triage Agent + role: Primary ยท Initiator + goal: Ingest new support tickets and assess urgency level (P1-P4) + model: openai-gpt-4-1 + mcp_server: Helpdesk MCP + tools: + - Ticket Reader + - Priority Classifier + trigger: 'Event: new ticket received' + approval: auto +- id: st-2 + name: Categorizer Agent + role: Secondary + goal: Categorize tickets by topic, product area, and sentiment + model: openai-gpt-4-1 + mcp_server: NLP Pipeline MCP + tools: + - Topic Classifier + - Sentiment Analyzer + - Product Tagger + trigger: On completion of Triage Agent + approval: auto +- id: st-3 + name: Pattern Analyzer Agent + role: Final + goal: Identify recurring issues and generate resolution recommendations + model: anthropic-claude-sonnet-4 + mcp_server: Analytics MCP + tools: + - Pattern Detector + - Knowledge Base Search + - Resolution Generator + trigger: On completion of Categorizer Agent + approval: manual +reaction_rules: +- id: rr-supp-1 + trigger: ticket_surge_detected + action: escalate_to_supervisor + auto: true + max_retries: 2 + escalate_after_retries: 2 + priority: high +- id: rr-supp-2 + trigger: classification_confidence_low + action: request_human_review + auto: false + max_retries: 1 + escalate_after_retries: 1 + priority: medium +health_monitoring: + heartbeat_interval: 15s + stale_threshold: 60s + unresponsive_threshold: 180s + stuck_threshold: 300s + max_restart_attempts: 3 +notifications: + on_start: false + on_completion: true + on_failure: true + on_escalation: true +output: + formats: + - pdf + - json + template: Support Ticket Analysis + storage: s3://reports/support-analytics/ diff --git a/agentspecs/teams/audit-inventory-levels.yaml b/agentspecs/teams/audit-inventory-levels.yaml new file mode 100644 index 0000000..2257400 --- /dev/null +++ b/agentspecs/teams/audit-inventory-levels.yaml @@ -0,0 +1,130 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Audit Inventory Levels +# Auto-extracted from agent spec audit-inventory-levels + +id: audit-inventory-levels +version: 0.0.1 +name: Audit Inventory Levels +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. + + ' +tags: +- finance +- automation +- inventory +- supply-chain +enabled: true +icon: package +emoji: ๐Ÿ“ฆ +color: '#0969da' +agent_spec_id: audit-inventory-levels:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: Inventory Orchestrator Agent + model: openai-gpt-4-1 +routing_instructions: 'Start with the Scanner to pull current levels, then Auditor to check discrepancies, + then Forecaster for demand predictions, then Planner for reorder recommendations, then Reporter for + the final audit report. Escalate critical shortages immediately. + + ' +validation: + timeout: 600s + retry_on_failure: true + max_retries: 3 +agents: +- id: inv-1 + name: Inventory Scanner Agent + role: Primary ยท Initiator + goal: Pull current inventory levels from all warehouse management systems + model: openai-gpt-4-1 + mcp_server: Warehouse MCP + tools: + - WMS Connector + - Barcode Scanner API + trigger: 'Schedule: Every 6 hours' + approval: auto +- id: inv-2 + name: Discrepancy Auditor Agent + role: Secondary + goal: Compare system counts vs physical counts and flag discrepancies + model: openai-gpt-4-1 + mcp_server: Audit MCP + tools: + - Count Comparator + - Discrepancy Logger + - Shrinkage Calculator + trigger: On completion of Inventory Scanner + approval: auto +- id: inv-3 + name: Demand Forecaster Agent + role: Secondary + goal: Forecast demand by SKU using historical sales and seasonal patterns + model: anthropic-claude-sonnet-4 + mcp_server: Analytics MCP + tools: + - Time Series Model + - Seasonal Analyzer + - External Signals Fetcher + trigger: On completion of Discrepancy Auditor + approval: auto +- id: inv-4 + name: Reorder Planner Agent + role: Secondary + goal: Calculate optimal reorder points and generate purchase order recommendations + model: openai-gpt-4-1 + mcp_server: Procurement MCP + tools: + - EOQ Calculator + - Supplier Catalog + - PO Generator + trigger: On completion of Demand Forecaster + approval: manual +- id: inv-5 + name: Audit Report Agent + role: Final + goal: Compile inventory audit report with discrepancies, forecasts, and reorder plan + model: openai-gpt-4-1 + mcp_server: Document Generation MCP + tools: + - PDF Generator + - Chart Builder + - Email Sender + trigger: On completion of Reorder Planner + approval: auto +reaction_rules: +- id: rr-inv-1 + trigger: stockout_risk_detected + action: escalate_to_supervisor + auto: true + max_retries: 1 + escalate_after_retries: 1 + priority: high +- id: rr-inv-2 + trigger: discrepancy_threshold_exceeded + action: flag_for_manual_audit + auto: false + max_retries: 2 + escalate_after_retries: 2 + priority: high +health_monitoring: + heartbeat_interval: 30s + stale_threshold: 120s + unresponsive_threshold: 300s + stuck_threshold: 600s + max_restart_attempts: 3 +notifications: + on_start: true + on_completion: true + on_failure: true + on_escalation: true +output: + formats: + - pdf + - xlsx + - csv + template: Inventory Audit Report + storage: s3://reports/inventory-audits/ diff --git a/agentspecs/teams/automate-regulatory-reporting.yaml b/agentspecs/teams/automate-regulatory-reporting.yaml new file mode 100644 index 0000000..94e4fa4 --- /dev/null +++ b/agentspecs/teams/automate-regulatory-reporting.yaml @@ -0,0 +1,137 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Automate Regulatory Reporting +# Auto-extracted from agent spec automate-regulatory-reporting + +id: automate-regulatory-reporting +version: 0.0.1 +name: Automate Regulatory Reporting +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. + + ' +tags: +- finance +- compliance +- regulatory +- risk +- banking +- audit +enabled: true +icon: shield-check +emoji: ๐Ÿฆ +color: '#0969da' +agent_spec_id: automate-regulatory-reporting:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: Compliance Orchestrator Agent + model: openai-gpt-4-1 +routing_instructions: 'Start with Data Ingestion to pull positions and transactions, then Risk Calculator + for metric computation, then Reconciliation Agent to cross-check figures, then Validation Agent for + regulatory rule checks, then Report Generator for submission-ready output. Escalate any reconciliation + breaks above $10K immediately to the compliance team. + + ' +validation: + timeout: 900s + retry_on_failure: true + max_retries: 2 +agents: +- id: reg-1 + name: Data Ingestion Agent + role: Primary ยท Initiator + goal: Extract positions, transactions, and P&L from trading and accounting systems + model: openai-gpt-4-1 + mcp_server: Trading Systems MCP + tools: + - Position Reader + - Transaction Fetcher + - P&L Extractor + trigger: 'Schedule: Monthly on the 3rd business day' + approval: auto +- id: reg-2 + name: Risk Calculator Agent + role: Secondary + goal: Compute Basel III/IV risk-weighted assets, capital ratios, and VaR metrics + model: anthropic-claude-sonnet-4 + mcp_server: Risk Engine MCP + tools: + - RWA Calculator + - VaR Engine + - Capital Ratio Computer + - Stress Test Runner + trigger: On completion of Data Ingestion Agent + approval: auto +- id: reg-3 + name: Reconciliation Agent + role: Secondary + goal: Cross-check computed figures against source systems and flag discrepancies + model: openai-gpt-4-1 + mcp_server: Reconciliation MCP + tools: + - Position Reconciler + - Break Detector + - Audit Logger + trigger: On completion of Risk Calculator Agent + approval: auto +- id: reg-4 + name: Validation Agent + role: Secondary + goal: Validate all metrics against Basel III/IV, MiFID II, and SOX regulatory rules + model: openai-gpt-4-1 + mcp_server: Compliance Rules MCP + tools: + - Basel Rule Validator + - MiFID II Checker + - SOX Control Verifier + trigger: On completion of Reconciliation Agent + approval: manual +- id: reg-5 + name: Report Generator Agent + role: Final + goal: Generate submission-ready regulatory reports with full data lineage and audit trail + model: openai-gpt-4-1 + mcp_server: Document Generation MCP + tools: + - PDF Generator + - XBRL Formatter + - Email Sender + trigger: On completion of Validation Agent + approval: auto +reaction_rules: +- id: rr-reg-1 + trigger: compliance_violation_detected + action: halt_and_escalate + auto: true + max_retries: 0 + escalate_after_retries: 0 + priority: critical +- id: rr-reg-2 + trigger: data_validation_failure + action: retry_with_fallback + auto: true + max_retries: 3 + escalate_after_retries: 3 + priority: high +health_monitoring: + heartbeat_interval: 15s + stale_threshold: 60s + unresponsive_threshold: 120s + stuck_threshold: 300s + max_restart_attempts: 2 +notifications: + on_start: true + on_completion: true + on_failure: true + on_escalation: true +output: + formats: + - pdf + - xbrl + - json + template: Regulatory Submission Report + storage: s3://reports/regulatory-submissions/ diff --git a/agentspecs/teams/comprehensive-sales-analytics.yaml b/agentspecs/teams/comprehensive-sales-analytics.yaml new file mode 100644 index 0000000..c40e8ae --- /dev/null +++ b/agentspecs/teams/comprehensive-sales-analytics.yaml @@ -0,0 +1,138 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Comprehensive Sales Analytics +# Auto-extracted from agent spec comprehensive-sales-analytics + +id: comprehensive-sales-analytics +version: 0.0.1 +name: Comprehensive Sales Analytics +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. + + ' +tags: +- sales +- analytics +- kpi +- monitoring +- horizontal +enabled: true +icon: graph +emoji: ๐Ÿ“ˆ +color: '#1a7f37' +agent_spec_id: comprehensive-sales-analytics:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: Sales Analytics Supervisor + model: anthropic-claude-opus-4 +routing_instructions: 'Route data collection to KPI Collector first, then pass raw metrics to Anomaly + Detector and Trend Analyzer in parallel, then aggregate all outputs into the Report Generator. Escalate + if anomalies exceed the critical threshold (>25% deviation from target). + + ' +validation: + timeout: 300s + retry_on_failure: true + max_retries: 3 +agents: +- id: sa-1 + name: KPI Data Collector + role: Primary ยท Initiator + goal: 'Pull real-time sales metrics from CRM, ERP, and marketing platforms. Normalize data into a unified + schema with timestamps, dimensions (region, product line, rep), and measures (revenue, pipeline, conversion). + + ' + model: openai-gpt-4-1 + mcp_server: CRM Data Server + tools: + - get_sales_data + - get_customer_list + - API Connector + trigger: 'Schedule: Daily at 7:30 AM' + approval: auto +- id: sa-2 + name: Anomaly Detector + role: Secondary + goal: 'Apply statistical anomaly detection (Z-score, IQR, moving average) to the collected KPIs. Flag + any metric deviating more than 10% from its rolling 30-day average. Classify anomalies as info, warning, + or critical. + + ' + model: anthropic-claude-sonnet-4 + mcp_server: Analytics Server + tools: + - run_analysis + - Statistical Analysis + - ML Predictor + trigger: On completion of KPI Data Collector + approval: auto +- id: sa-3 + name: Trend Analyzer + role: Secondary + goal: 'Identify week-over-week, month-over-month, and quarter-over-quarter trends. Generate 30-day forecasts + for each KPI using time-series models. Highlight the top 3 improving and top 3 declining metrics. + + ' + model: anthropic-claude-sonnet-4 + mcp_server: Analytics Server + tools: + - run_analysis + - generate_charts + - Forecaster + trigger: On completion of KPI Data Collector + approval: auto +- id: sa-4 + name: Executive Report Generator + role: Final + goal: 'Compile all insights โ€” raw KPIs, anomalies, trends, and forecasts โ€” into a polished executive + dashboard with charts, tables, and narrative commentary. Send the report via Slack and email. Highlight + critical anomalies with a red-flag summary at the top. + + ' + model: openai-gpt-4-1 + mcp_server: Document Generation MCP + tools: + - PDF Generator + - Chart Builder + - Email Sender + - Slack Notifier + trigger: On completion of Anomaly Detector & Trend Analyzer + approval: manual +reaction_rules: +- id: rr-sales-1 + trigger: anomaly_critical + action: escalate_to_supervisor + auto: true + max_retries: 2 + escalate_after_retries: 2 + priority: high +- id: rr-sales-2 + trigger: data_stale + action: retry_collection + auto: true + max_retries: 3 + escalate_after_retries: 3 + priority: medium +health_monitoring: + heartbeat_interval: 30s + stale_threshold: 120s + unresponsive_threshold: 300s + stuck_threshold: 600s + max_restart_attempts: 3 +notifications: + on_start: true + on_completion: true + on_failure: true + on_escalation: true +output: + formats: + - pdf + - xlsx + - json + template: Executive Sales Dashboard + storage: s3://reports/sales-analytics/ diff --git a/agentspecs/teams/optimize-grid-operations.yaml b/agentspecs/teams/optimize-grid-operations.yaml new file mode 100644 index 0000000..c7e83f8 --- /dev/null +++ b/agentspecs/teams/optimize-grid-operations.yaml @@ -0,0 +1,126 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Optimize Grid Operations +# Auto-extracted from agent spec optimize-grid-operations + +id: optimize-grid-operations +version: 0.0.1 +name: Optimize Grid Operations +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%. + + ' +tags: +- energy +- utilities +- smart-grid +- iot +- predictive-maintenance +- sustainability +enabled: true +icon: zap +emoji: โšก +color: '#1a7f37' +agent_spec_id: optimize-grid-operations:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: Grid Operations Orchestrator Agent + model: openai-gpt-4-1 +routing_instructions: 'Start with Sensor Ingestion to process real-time telemetry, then Anomaly Detector + for pattern identification, then Failure Predictor for maintenance forecasting, then Grid Balancer for + load optimisation. Escalate critical failure predictions (< 48h) immediately to operations dispatch. + + ' +validation: + timeout: 600s + retry_on_failure: true + max_retries: 3 +agents: +- id: grid-1 + name: Sensor Ingestion Agent + role: Primary ยท Initiator + goal: Ingest and process real-time telemetry from SCADA, smart meters, and IoT gateways + model: openai-gpt-4-1 + mcp_server: SCADA MCP + tools: + - SCADA Connector + - Smart Meter Reader + - IoT Gateway Adapter + - Time Series Processor + trigger: 'Schedule: Every 5 minutes' + approval: auto +- id: grid-2 + name: Anomaly Detector Agent + role: Secondary + goal: Detect vibration, temperature, and voltage anomalies across all grid assets + model: openai-gpt-4-1 + mcp_server: Monitoring MCP + tools: + - Vibration Analyzer + - Temperature Anomaly Detector + - Voltage Pattern Scanner + - Historical Comparator + trigger: On completion of Sensor Ingestion Agent + approval: auto +- id: grid-3 + name: Failure Predictor Agent + role: Secondary + goal: Predict equipment failures 2โ€“4 weeks in advance using anomaly patterns and failure history + model: anthropic-claude-sonnet-4 + mcp_server: Predictive Analytics MCP + tools: + - Failure Correlation Engine + - Risk Scorer + - Maintenance Scheduler + - Work Order Generator + trigger: On completion of Anomaly Detector Agent + approval: manual +- id: grid-4 + name: Grid Balancer Agent + role: Final + goal: Optimise real-time load balancing across renewable and conventional generation sources + model: openai-gpt-4-1 + mcp_server: Grid Control MCP + tools: + - Load Forecaster + - Renewable Integration Model + - Dispatch Optimiser + - Grid Stability Checker + trigger: On completion of Failure Predictor Agent + approval: auto +reaction_rules: +- id: rr-grid-1 + trigger: grid_instability_detected + action: emergency_rebalance + auto: true + max_retries: 1 + escalate_after_retries: 1 + priority: critical +- id: rr-grid-2 + trigger: forecast_deviation_high + action: recalibrate_model + auto: true + max_retries: 2 + escalate_after_retries: 2 + priority: medium +health_monitoring: + heartbeat_interval: 10s + stale_threshold: 30s + unresponsive_threshold: 60s + stuck_threshold: 120s + max_restart_attempts: 5 +notifications: + on_start: true + on_completion: true + on_failure: true + on_escalation: true +output: + formats: + - json + - csv + - pdf + template: Grid Operations Dashboard + storage: s3://reports/grid-operations/ diff --git a/agentspecs/teams/process-citizen-requests.yaml b/agentspecs/teams/process-citizen-requests.yaml new file mode 100644 index 0000000..6a3a7c8 --- /dev/null +++ b/agentspecs/teams/process-citizen-requests.yaml @@ -0,0 +1,127 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Process Citizen Requests +# Auto-extracted from agent spec process-citizen-requests + +id: process-citizen-requests +version: 0.0.1 +name: Process Citizen Requests +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. + + ' +tags: +- government +- public-sector +- civic +- policy +- compliance +- transparency +enabled: true +icon: organization +emoji: ๐Ÿ›๏ธ +color: '#0550ae' +agent_spec_id: process-citizen-requests:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: Citizen Services Orchestrator Agent + model: openai-gpt-4-1 +routing_instructions: 'Route incoming citizen requests to the Intake Agent for classification and triage, + then to the Case Processor for handling and routing, then to the Policy Analyst for impact assessment + on relevant items, then to the Transparency Agent for audit trail and public documentation. Escalate + urgent citizen safety issues immediately to supervisors. + + ' +validation: + timeout: 300s + retry_on_failure: true + max_retries: 2 +agents: +- id: cit-1 + name: Intake & Classification Agent + role: Primary ยท Initiator + goal: Classify, triage, and route citizen submissions from web portals, email, and documents + model: openai-gpt-4-1 + mcp_server: Citizen Portal MCP + tools: + - Request Classifier + - Urgency Assessor + - Jurisdiction Router + - OCR Scanner + trigger: 'Event: new citizen request received' + approval: auto +- id: cit-2 + name: Case Processor Agent + role: Secondary + goal: Process and route requests to appropriate departments with required documentation + model: openai-gpt-4-1 + mcp_server: Case Management MCP + tools: + - Case Creator + - Document Assembler + - Department Router + - Status Tracker + trigger: On completion of Intake Agent + approval: auto +- id: cit-3 + name: Policy Impact Analyst Agent + role: Secondary + goal: Model policy outcomes across population datasets with scenario simulation + model: anthropic-claude-sonnet-4 + mcp_server: Policy Analytics MCP + tools: + - Monte Carlo Simulator + - Demographic Analyzer + - Budget Impact Model + - Scenario Comparator + trigger: On completion of Case Processor Agent + approval: manual +- id: cit-4 + name: Transparency & Audit Agent + role: Final + goal: Generate explainable decision documentation with full audit trail for public record + model: openai-gpt-4-1 + mcp_server: Compliance MCP + tools: + - Decision Explainer + - Audit Trail Builder + - FOIA Compliance Checker + - Public Record Generator + trigger: On completion of Policy Impact Analyst Agent + approval: auto +reaction_rules: +- id: rr-cit-1 + trigger: priority_request_detected + action: fast_track_processing + auto: true + max_retries: 2 + escalate_after_retries: 2 + priority: high +- id: rr-cit-2 + trigger: policy_ambiguity_detected + action: request_human_review + auto: false + max_retries: 1 + escalate_after_retries: 1 + priority: medium +health_monitoring: + heartbeat_interval: 30s + stale_threshold: 120s + unresponsive_threshold: 300s + stuck_threshold: 600s + max_restart_attempts: 3 +notifications: + on_start: false + on_completion: true + on_failure: true + on_escalation: true +output: + formats: + - pdf + - json + template: Citizen Request Processing Report + storage: s3://reports/citizen-requests/ diff --git a/agentspecs/teams/process-clinical-trial-data.yaml b/agentspecs/teams/process-clinical-trial-data.yaml new file mode 100644 index 0000000..547168d --- /dev/null +++ b/agentspecs/teams/process-clinical-trial-data.yaml @@ -0,0 +1,127 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Process Clinical Trial Data +# Auto-extracted from agent spec process-clinical-trial-data + +id: process-clinical-trial-data +version: 0.0.1 +name: Process Clinical Trial Data +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. + + ' +tags: +- healthcare +- pharma +- clinical-trials +- patient-data +- compliance +enabled: true +icon: heart +emoji: ๐Ÿฅ +color: '#cf222e' +agent_spec_id: process-clinical-trial-data:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: Clinical Data Orchestrator Agent + model: anthropic-claude-sonnet-4 +routing_instructions: 'Route incoming data through the Ingestion Agent first for format detection and + parsing, then to Harmonisation Agent for CDISC SDTM standardisation, then Safety Monitor for adverse + event screening, then Submission Preparer for final dataset assembly. Escalate serious adverse events + (SAEs) immediately to the medical officer. + + ' +validation: + timeout: 600s + retry_on_failure: true + max_retries: 2 +agents: +- id: ct-1 + name: Data Ingestion Agent + role: Primary ยท Initiator + goal: Ingest patient records, lab results, and CRFs from clinical sites + model: openai-gpt-4-1 + mcp_server: Clinical EDC MCP + tools: + - Medidata Connector + - Veeva Vault Reader + - Oracle Clinical Adapter + - Format Detector + trigger: 'Event: new data batch received from site' + approval: auto +- id: ct-2 + name: Harmonisation Agent + role: Secondary + goal: Standardise all data to CDISC SDTM format with MedDRA coding + model: openai-gpt-4-1 + mcp_server: Data Standards MCP + tools: + - SDTM Mapper + - MedDRA Coder + - Unit Converter + - Site Normaliser + trigger: On completion of Data Ingestion Agent + approval: auto +- id: ct-3 + name: Safety Monitor Agent + role: Secondary + goal: Screen every data point for adverse events and safety signals + model: anthropic-claude-sonnet-4 + mcp_server: Safety Database MCP + tools: + - AE Classifier + - Signal Detector + - SAE Escalator + - Evidence Trail Builder + trigger: On completion of Harmonisation Agent + approval: manual +- id: ct-4 + name: Submission Preparer Agent + role: Final + goal: Assemble submission-ready SDTM datasets with validation and define.xml + model: openai-gpt-4-1 + mcp_server: Submission MCP + tools: + - Dataset Validator + - Define.xml Generator + - PDF Report Builder + - Compliance Checker + trigger: On completion of Safety Monitor Agent + approval: auto +reaction_rules: +- id: rr-clin-1 + trigger: safety_signal_detected + action: halt_and_escalate + auto: true + max_retries: 0 + escalate_after_retries: 0 + priority: critical +- id: rr-clin-2 + trigger: data_integrity_violation + action: quarantine_and_notify + auto: true + max_retries: 1 + escalate_after_retries: 1 + priority: critical +health_monitoring: + heartbeat_interval: 10s + stale_threshold: 45s + unresponsive_threshold: 90s + stuck_threshold: 180s + max_restart_attempts: 2 +notifications: + on_start: true + on_completion: true + on_failure: true + on_escalation: true +output: + formats: + - pdf + - json + - xml + template: Clinical Trial Data Report + storage: s3://reports/clinical-trials/ diff --git a/agentspecs/teams/sync-crm-contacts.yaml b/agentspecs/teams/sync-crm-contacts.yaml new file mode 100644 index 0000000..70bc8b4 --- /dev/null +++ b/agentspecs/teams/sync-crm-contacts.yaml @@ -0,0 +1,115 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +# Team Specification: Sync CRM Contacts +# Auto-extracted from agent spec sync-crm-contacts + +id: sync-crm-contacts +version: 0.0.1 +name: Sync CRM Contacts +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. + + ' +tags: +- sales +- crm +- data-sync +- deduplication +enabled: true +icon: people +emoji: ๐Ÿ”„ +color: '#0969da' +agent_spec_id: sync-crm-contacts:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +supervisor: + name: CRM Orchestrator Agent + model: anthropic-claude-opus-4 +routing_instructions: 'Route data collection tasks to the Data Collector first, then analysis, then sync, + then reporting. Escalate to human if sync fails 3 times. + + ' +validation: + timeout: 300s + retry_on_failure: true + max_retries: 3 +agents: +- id: tm-1 + name: Data Collector Agent + role: Primary ยท Initiator + goal: Collect and aggregate contact data from multiple CRM sources + model: openai-gpt-4-1 + mcp_server: Data Processing MCP + tools: + - API Connector + - Data Parser + trigger: 'Schedule: Daily at 2:00 AM' + approval: auto +- id: tm-2 + name: Analyzer Agent + role: Secondary + goal: Analyze collected data and identify patterns and duplicates + model: anthropic-claude-opus-4 + mcp_server: Analytics MCP + tools: + - Statistical Analysis + - ML Predictor + - Deduplicator + trigger: On completion of Data Collector + approval: manual +- id: tm-3 + name: Sync Writer Agent + role: Secondary + goal: Write cleaned and merged contacts back to the CRM systems + model: openai-gpt-4-1 + mcp_server: CRM Write MCP + tools: + - Salesforce Connector + - HubSpot Connector + trigger: On completion of Analyzer + approval: manual +- id: tm-4 + name: Report Generator Agent + role: Final + goal: Generate sync summary reports and send notifications + model: openai-gpt-4-1 + mcp_server: Document Generation MCP + tools: + - PDF Generator + - Chart Builder + - Email Sender + trigger: On completion of Sync Writer + approval: auto +reaction_rules: +- id: rr-crm-1 + trigger: sync_conflict_detected + action: log_and_skip + auto: true + max_retries: 3 + escalate_after_retries: 3 + priority: medium +- id: rr-crm-2 + trigger: api_rate_limit_hit + action: backoff_and_retry + auto: true + max_retries: 5 + escalate_after_retries: 5 + priority: low +health_monitoring: + heartbeat_interval: 30s + stale_threshold: 120s + unresponsive_threshold: 300s + stuck_threshold: 600s + max_restart_attempts: 3 +notifications: + on_start: false + on_completion: true + on_failure: true + on_escalation: false +output: + formats: + - json + - csv + template: CRM Sync Summary + storage: s3://reports/crm-sync/ diff --git a/agentspecs/tools/runtime-echo.yaml b/agentspecs/tools/runtime-echo.yaml new file mode 100644 index 0000000..118eb78 --- /dev/null +++ b/agentspecs/tools/runtime-echo.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: runtime-echo +version: 0.0.1 +name: Runtime Echo +description: Echo text back to the caller for quick runtime verification. +tags: + - runtime + - utility +enabled: true +approval: auto +runtime: + language: python + package: agent_runtimes.examples.tools + method: runtime_echo +icon: comment +emoji: "๐Ÿ’ฌ" diff --git a/agentspecs/tools/runtime-send-mail.yaml b/agentspecs/tools/runtime-send-mail.yaml new file mode 100644 index 0000000..d637180 --- /dev/null +++ b/agentspecs/tools/runtime-send-mail.yaml @@ -0,0 +1,19 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: runtime-send-mail +version: 0.0.1 +name: Runtime Send Mail (Fake) +description: Fake mail sender for tool approval demos; returns a simulated send receipt. +tags: + - runtime + - approval + - mail +enabled: true +approval: manual +runtime: + language: python + package: agent_runtimes.examples.tools + method: runtime_send_mail +icon: mail +emoji: "๐Ÿ“ง" diff --git a/agentspecs/tools/runtime-sensitive-echo.yaml b/agentspecs/tools/runtime-sensitive-echo.yaml new file mode 100644 index 0000000..cdbb6c5 --- /dev/null +++ b/agentspecs/tools/runtime-sensitive-echo.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: runtime-sensitive-echo +version: 0.0.1 +name: Runtime Sensitive Echo +description: Echo text with a manual approval checkpoint before execution. +tags: + - runtime + - approval +enabled: true +approval: manual +runtime: + language: python + package: agent_runtimes.examples.tools + method: runtime_sensitive_echo +icon: shield +emoji: "๐Ÿ›ก๏ธ" diff --git a/agentspecs/triggers/event.yaml b/agentspecs/triggers/event.yaml new file mode 100644 index 0000000..fd19fdd --- /dev/null +++ b/agentspecs/triggers/event.yaml @@ -0,0 +1,32 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: event +version: 0.0.1 +name: Event-Based +description: >- + Trigger on specific events such as a webhook call, API request, + database change, file upload, or email arrival. +type: event +fields: + - name: event_source + label: Event Source URL + type: string + required: false + placeholder: "https://helpdesk.example.com/webhooks" + help: "Allowed event source URL (leave empty to allow any source)" + - name: event + label: Event Name + type: string + required: false + placeholder: "email_received" + - name: description + label: Description + type: string + required: false + placeholder: "Description (e.g. 'Triggered on incoming email')" + - name: prompt + label: Trigger Prompt + type: string + required: false + placeholder: "Handle the incoming event and execute the agent end-to-end." diff --git a/agentspecs/triggers/once.yaml b/agentspecs/triggers/once.yaml new file mode 100644 index 0000000..128a724 --- /dev/null +++ b/agentspecs/triggers/once.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: once +version: 0.0.1 +name: Run Once +description: Execute agent immediately after deployment. +type: once +fields: + - name: prompt + label: Trigger Prompt + type: string + required: false + placeholder: "Start when requested by a user and complete the agent once." diff --git a/agentspecs/triggers/schedule.yaml b/agentspecs/triggers/schedule.yaml new file mode 100644 index 0000000..5280918 --- /dev/null +++ b/agentspecs/triggers/schedule.yaml @@ -0,0 +1,27 @@ +# Copyright (c) 2025-2026 Datalayer, Inc. +# Distributed under the terms of the Modified BSD License. + +id: schedule +version: 0.0.1 +name: Schedule +description: >- + Run on a recurring schedule using a cron expression + (e.g. daily at 9 AM, every Monday, monthly on the 1st). +type: schedule +fields: + - name: cron + label: Cron Expression + type: string + required: true + placeholder: "0 9 * * * (every day at 9 AM)" + font: mono + - name: description + label: Description + type: string + required: false + placeholder: "Description (e.g. 'Monthly sales report')" + - name: prompt + label: Trigger Prompt + type: string + required: false + placeholder: "Run the scheduled agent and produce the configured deliverable." diff --git a/docs/README.md b/docs/README.md index 1f03ae0..d3bc364 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,6 +6,13 @@ > Documentation for [Agentspecs](https://agentspecs.datalayer.tech) - Generate programmatic tools from MCP Servers and Skills. Built with [Docusaurus](https://docusaurus.io). +Agentspecs covers declarative YAML catalogs including: + +- Agents, teams, MCP servers, skills, tools, models, memory, guardrails, evals +- Workflow and delivery specs (triggers, outputs, notifications) +- Agent launch-time **parameters** (JSON Schema validated) +- Agent lifecycle **hooks** (`pre_hooks`, `post_hooks`) for sandbox setup/teardown + ```bash # Install the dependencies. make install diff --git a/docs/docs/agents/index.mdx b/docs/docs/agents/index.mdx index b21227f..22436e3 100644 --- a/docs/docs/agents/index.mdx +++ b/docs/docs/agents/index.mdx @@ -5,30 +5,31 @@ title: Agents # Agent Specifications -Agent specifications define AI agent configurations, capabilities, and behavior. +Agent specifications define runtime behavior, capabilities, and UX defaults for individual agents. ## Overview -Agent IDs are automatically prefixed with their folder name, ensuring uniqueness across categories. -For example, an agent in `code-ai/simple.yaml` will have ID `"code-ai/simple"`, while `datalayer-ai/simple.yaml` has ID `"datalayer-ai/simple"`. +Agents are stored flat under `agentspecs/agents/` and include explicit `version`. -## Agent Organization +Use versioned references in linked fields: -Agents are organized in subfolders by category: -- **`code-ai/`**: Code-focused agents (coder, simple, tux) -- **`codemode-paper/`**: Research paper agents (crawler-mcp, financial-viz, information-routing, task-decomposition) -- **`datalayer-ai/`**: Data-focused agents (data-acquisition, github-agent, simple, web-search) +```yaml +skills: + - github:0.0.1 -This folder structure: -1. **Prevents ID conflicts**: Multiple agents can have the same base ID (e.g., "simple") in different folders -2. **Improves organization**: Related agents are grouped together -3. **Enables categorization**: Frontend can display agents by category -4. **Maintains clarity**: Full IDs like "code-ai/simple" clearly show the agent's purpose +mcp_servers: + - tavily:0.0.1 +``` + +Generated catalogs expose both `id` and `id:version` aliases. ## Required Fields ### `id` (string) -Unique identifier within folder (kebab-case). The full ID becomes `folder/id` (e.g., `code-ai/simple`) +Unique identifier (kebab-case). + +### `version` (string) +Spec version (currently `0.0.1`). ### `name` (string) Display name shown in the UI @@ -51,20 +52,20 @@ tags: Whether agent is active (default: `true`) ### `mcp_servers` (list of strings) -MCP server IDs to use. References specs in `mcp-servers/` directory. +MCP server references. Prefer `id:version` format. ```yaml mcp_servers: - - alphavantage - - chart - - github + - alphavantage:0.0.1 + - chart:0.0.1 + - github:0.0.1 ``` ### `skills` (list of strings) -Agent skills. References specs in `skills/` directory. +Skill references. Prefer `id:version` format. ```yaml skills: - - data-analysis - - visualization + - github:0.0.1 + - events:0.0.1 ``` ### `environment_name` (string) @@ -149,117 +150,66 @@ Lexical document path to show on agent creation (optional) ## Complete Example ```yaml -# Copyright (c) 2025-2026 Datalayer, Inc. -# Distributed under the terms of the Modified BSD License. - -# File: agentspecs/agents/codemode-paper/financial-viz.yaml -# Full ID will be: "codemode-paper/financial-viz" - -id: financial-viz -name: Financial Visualization Agent (Viz) -description: > - Analyzes financial market data and creates visualizations and charts. - -tags: - - finance - - stocks - - visualization +id: data-acquisition +version: 0.0.1 +name: Data Acquisition Agent +description: Acquire and manage data from external and local sources. enabled: true +model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" -# MCP servers used by this agent mcp_servers: - - alphavantage - - chart + - kaggle:0.0.1 + - filesystem:0.0.1 + - tavily:0.0.1 -# Skills available to this agent -skills: [] - -# AI model (omit to use system default) -model: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" +skills: + - github:0.0.1 + - events:0.0.1 -# Runtime environment environment_name: ai-agents-env - -# UI customization -icon: trending-up -emoji: ๐Ÿ“ˆ -color: "#F59E0B" # Amber - -# Chat suggestions -suggestions: - - Show me the stock price history for AAPL - - Create a chart comparing MSFT and GOOGL over the last year - - Analyze the trading volume trends for Tesla - -# Welcome message -welcome_message: > - Welcome! I'm the Financial Visualization Agent. I can help you analyze - stock market data, track financial instruments, and create charts to - visualize market trends. - -# System prompt for the agent -system_prompt: > - You are a financial market analyst with access to Alpha Vantage market data - and chart generation tools. You can fetch stock prices, analyze trading volumes, - create visualizations, and track market trends. Provide clear insights with - relevant data points and generate charts to illustrate patterns. - -# Additional system prompt for code mode -system_prompt_codemode_addons: > - ## IMPORTANT: Be Honest About Your Capabilities - NEVER claim to have tools or capabilities you haven't verified. - - ## Core Codemode Tools - Use these 4 tools to accomplish any task: - 1. **list_servers** - List available MCP servers - Use this to see what MCP servers you can access. - - 2. **search_tools** - Progressive tool discovery by natural language query - Use this to find relevant tools before executing tasks. - - 3. **get_tool_details** - Get full tool schema and documentation - Use this to understand tool parameters before calling them. - - 4. **execute_code** - Run Python code that composes multiple tools - Use this for complex multi-step operations. Code runs in a PERSISTENT sandbox. - Variables, functions, and state PERSIST between execute_code calls. - Import tools using: `from generated.servers. import ` - NEVER use `import *` - always use explicit named imports. - - ## Recommended Workflow - 1. **Discover**: Use list_servers and search_tools to find relevant tools - 2. **Understand**: Use get_tool_details to check parameters - 3. **Execute**: Use execute_code to perform multi-step tasks, calling tools as needed - - ## 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. - -# Optional: Jupyter notebook to show on agent creation -welcome_notebook: null - -# Optional: Lexical document to show on agent creation -welcome_document: null +icon: database +emoji: "๐Ÿ“Š" +color: "#3B82F6" ``` -## Agent Hierarchy - -``` -Agent Specification -โ”œโ”€โ”€ Basic Info (id, name, description, tags) -โ”œโ”€โ”€ Configuration (enabled, environment_name) -โ”œโ”€โ”€ Capabilities -โ”‚ โ”œโ”€โ”€ MCP Servers (references to mcp-servers/*.yaml) -โ”‚ โ””โ”€โ”€ Skills (references to skills/*.yaml) -โ”œโ”€โ”€ UI Customization (icon, emoji, color) -โ”œโ”€โ”€ User Guidance (suggestions, welcome_message) -โ””โ”€โ”€ Prompts - โ”œโ”€โ”€ system_prompt (base instructions) - โ””โ”€โ”€ system_prompt_codemode_addons (execution mode instructions) -``` +## Full Field Coverage + +Commonly used fields: + +- `enabled` +- `model` +- `sandbox_variant` +- `memory` +- `mcp_servers` (use `id:version` refs) +- `skills` (use `id:version` refs) +- `tools` (use `id:version` refs) +- `environment_name` +- `tags` +- `icon`, `emoji`, `color` +- `suggestions` +- `welcome_message`, `welcome_notebook`, `welcome_document` +- `system_prompt`, `system_prompt_codemode_addons` + +Advanced workflow fields: + +- `goal` +- `protocol` +- `ui_extension` +- `trigger` +- `model_configuration` +- `mcp_server_tools` +- `guardrails` +- `evals` +- `codemode` +- `output` +- `advanced` +- `authorization_policy` +- `notifications` + +## Catalog Key Convention + +Generated catalogs are keyed by unversioned id only (e.g. `crawler`). The `getAgentSpec` accessor accepts both bare ids and versioned refs (`crawler:0.0.1`), stripping the version suffix automatically. Iterating catalog values returns each spec exactly once. ## Best Practices diff --git a/docs/docs/benchmarks/index.mdx b/docs/docs/benchmarks/index.mdx new file mode 100644 index 0000000..cef5dd7 --- /dev/null +++ b/docs/docs/benchmarks/index.mdx @@ -0,0 +1,43 @@ +--- +sidebar_position: 2 +title: Benchmarks +--- + +# Benchmark Specifications + +Benchmark specs define runnable benchmark suites (datasets, metrics, and +difficulty metadata). + +Each benchmark must declare one or more evaluator dependencies in the +`evaluators` field. + +## Required Fields + +- `id` +- `version` +- `name` +- `description` +- `category` +- `task_count` +- `metric` +- `evaluators` + +## Common Fields + +- `difficulty` +- `languages` +- `dataset_source` +- `supports_live_monitoring` +- `supports_experiment_comparison` +- `evaluator_shapes` +- `recommended_windows` +- `trace_integration` +- `dataset_editability` +- `sdk_support` + +## Notes + +- Benchmarks are referenced from agentspecs and runtime workflows. +- Benchmark generation validates that each evaluator reference exists in the + eval catalog. +- Prefer explicit `id:version` references. diff --git a/docs/docs/env-vars/_category_.yml b/docs/docs/env-vars/_category_.yml index c34f38e..e223061 100644 --- a/docs/docs/env-vars/_category_.yml +++ b/docs/docs/env-vars/_category_.yml @@ -1,2 +1,2 @@ -label: "Environment Variables" +label: "Env Vars" position: 4 diff --git a/docs/docs/env-vars/index.mdx b/docs/docs/env-vars/index.mdx index a3297a9..b583d13 100644 --- a/docs/docs/env-vars/index.mdx +++ b/docs/docs/env-vars/index.mdx @@ -20,6 +20,9 @@ Unique identifier (UPPER_SNAKE_CASE, e.g., `KAGGLE_TOKEN`, `GITHUB_TOKEN`, `OPEN ### `name` (string) Display name shown in the UI +### `version` (string) +Spec version (currently `0.0.1`). + ### `description` (string) Purpose and usage description @@ -56,6 +59,7 @@ UI emoji identifier # Distributed under the terms of the Modified BSD License. id: KAGGLE_TOKEN +version: 0.0.1 name: Kaggle API Token description: > API token for accessing Kaggle datasets, competitions, notebooks, and models. @@ -91,7 +95,7 @@ name: Kaggle MCP Server # ... other fields ... envvars: - - KAGGLE_TOKEN + - KAGGLE_TOKEN:0.0.1 args: - "--Authorization" @@ -105,7 +109,7 @@ name: Data Analysis Skill # ... other fields ... envvars: - - OPENAI_API_KEY + - OPENAI_API_KEY:0.0.1 optional_env_vars: - PLOT_DPI @@ -137,3 +141,7 @@ The following environment variables are defined in `agentspecs/envvars/`: 6. **Security**: Never include actual values in the specification 7. **Documentation**: Be clear about whether the variable is required or optional 8. **Scope**: Define one variable per specification file + +## Details + +For additional conventions around references and catalog behavior, see [Agentspecs Overview](/). diff --git a/docs/docs/evals/_category_.yml b/docs/docs/evals/_category_.yml new file mode 100644 index 0000000..3194059 --- /dev/null +++ b/docs/docs/evals/_category_.yml @@ -0,0 +1,2 @@ +label: "Evals" +position: 10 diff --git a/docs/docs/evals/index.mdx b/docs/docs/evals/index.mdx new file mode 100644 index 0000000..400c271 --- /dev/null +++ b/docs/docs/evals/index.mdx @@ -0,0 +1,31 @@ +--- +sidebar_position: 1 +title: Evals +--- + +# Evaluator Specifications + +Eval specs define reusable evaluator definitions. + +Benchmarks are defined separately and reference evaluators through their +`evaluators` field. + +## Required Fields + +- `id` +- `version` +- `name` +- `description` + +## Common Fields + +- `category` +- `evaluator_type` +- `pydantic_class` +- `output_kind` +- optional `requires`, `default_config`, and source metadata + +## Notes + +- Evaluators are referenced from benchmark specs and runtime workflows. +- Prefer explicit `id:version` references. diff --git a/docs/docs/guardrails/_category_.yml b/docs/docs/guardrails/_category_.yml new file mode 100644 index 0000000..b11537d --- /dev/null +++ b/docs/docs/guardrails/_category_.yml @@ -0,0 +1,2 @@ +label: "Guardrails" +position: 9 diff --git a/docs/docs/guardrails/index.mdx b/docs/docs/guardrails/index.mdx new file mode 100644 index 0000000..743a983 --- /dev/null +++ b/docs/docs/guardrails/index.mdx @@ -0,0 +1,28 @@ +--- +sidebar_position: 1 +title: Guardrails +--- + +# Guardrail Specifications + +Guardrail specs define policy and permission envelopes for agents. + +## Required Fields + +- `id` +- `version` +- `name` +- `description` + +## Common Fields + +- identity/provider context +- permission maps +- approval policy +- token limits +- data handling constraints + +## Notes + +- Guardrails are referenced from agentspecs. +- Keep policy IDs stable and versioned. diff --git a/docs/docs/hooks/_category_.yml b/docs/docs/hooks/_category_.yml new file mode 100644 index 0000000..7efd109 --- /dev/null +++ b/docs/docs/hooks/_category_.yml @@ -0,0 +1,2 @@ +label: "Hooks" +position: 14 diff --git a/docs/docs/hooks/index.mdx b/docs/docs/hooks/index.mdx new file mode 100644 index 0000000..3018ffe --- /dev/null +++ b/docs/docs/hooks/index.mdx @@ -0,0 +1,143 @@ +--- +title: Hooks +--- + +# Hooks + +Hooks let an agent spec run setup and teardown logic around the sandbox +lifecycle. + +Use hooks when you need to: + +- Install Python packages before first execution. +- Seed sandbox state (variables, files, context). +- Perform cleanup or write final markers at shutdown. + +## Supported Hook Fields + +Hooks are defined in agentspecs under these fields: + +### `pre_hooks.packages` (list of strings) + +Install Python packages before the runtime starts serving requests. + +```yaml +pre_hooks: + packages: + - rich + - pandas +``` + +### `pre_hooks.sandbox` (list of Python blocks) + +Run Python setup code in the sandbox after startup and before the agent handles +user requests. + +```yaml +pre_hooks: + sandbox: + - | + from pathlib import Path + Path('/tmp/startup.txt').write_text('ready\n', encoding='utf-8') +``` + +### `post_hooks.sandbox` (list of Python blocks) + +Run Python teardown/finalization code when the agent is shutting down. + +```yaml +post_hooks: + sandbox: + - | + from pathlib import Path + Path('/tmp/shutdown.txt').write_text('done\n', encoding='utf-8') +``` + +## Execution Order + +For an agent with hooks enabled: + +1. Sandbox is created (`eval` or `jupyter`, depending on `sandbox_variant`). +2. `pre_hooks.packages` are installed. +3. `pre_hooks.sandbox` scripts run. +4. Agent starts handling prompts/tools. +5. During shutdown, `post_hooks.sandbox` scripts run. + +If multiple scripts are defined in the same hook list, they run in list order. + +## Parameters and Templating + +Hooks support runtime templating with `{{parameter_name}}` values from the +agent spec `parameters` schema. + +```yaml +parameters: + type: object + properties: + demo_params: + type: string + default: hello + +pre_hooks: + sandbox: + - | + demo_params = """{{demo_params}}""" + print(f"demo_params initialized: {demo_params!r}") +``` + +## Complete Example + +```yaml +id: demo-hooks +version: 0.0.1 +sandbox_variant: eval + +pre_hooks: + packages: + - rich + sandbox: + - | + import datetime + import os + from pathlib import Path + + hook_name = "demo-hooks:pre" + hook_ran_at = datetime.datetime.now().isoformat() + hook_env = { + k: os.environ[k] + for k in ("PATH", "HOME", "DATALAYER_CODE_SANDBOX_VARIANT") + if k in os.environ + } + + Path('/tmp/agent_runtimes_pre_hook_demo.txt').write_text( + f'pre-hook executed at {hook_ran_at}\n', + encoding='utf-8', + ) + +post_hooks: + sandbox: + - | + import datetime + from pathlib import Path + + post_ran_at = datetime.datetime.now().isoformat() + Path('/tmp/agent_runtimes_post_hook_demo.txt').write_text( + f'post-hook executed at {post_ran_at}\n', + encoding='utf-8', + ) +``` + +## Best Practices + +1. Keep hooks idempotent where possible. +2. Keep setup fast; install only necessary packages. +3. Prefer deterministic file paths and explicit UTF-8 writes. +4. Validate critical hook outputs with a follow-up suggestion/tool call. +5. Use `pre_hooks` for initialization and `post_hooks` for finalization only. + +## Related Docs + +- [Agents](/agents) +- [Triggers](/triggers) +- [Outputs](/outputs) +- [Notifications](/notifications) diff --git a/docs/docs/index.mdx b/docs/docs/index.mdx index 6d2379c..fbb42d8 100644 --- a/docs/docs/index.mdx +++ b/docs/docs/index.mdx @@ -7,107 +7,144 @@ slug: / import DocCardList from '@theme/DocCardList'; import { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; -# ๐Ÿค–๐Ÿ‘ทโ€โ™‚๏ธ Agentspecs +# ๐Ÿงพ Agentspecs -YAML-based specifications for AI agents, MCP servers, skills, and environment variables. +Declarative YAML specifications for AI agents, MCP servers, skills and more... -## What is Agentspecs? +## What Is Agentspecs? -**Agentspecs** is a repository of declarative specifications that define AI agent configurations and their capabilities. All specifications are written in YAML format and serve as the single source of truth for agent systems. +Agentspecs is the source of truth for runtime catalogs compiled into Python and TypeScript. -## Specification Types +The repository currently defines these spec families: -This repository contains five types of specifications: +- Agentspecs +- Hook specs +- Team specs +- MCP server specs +- Skill specs +- Tool specs +- Environment variable specs +- Model specs +- Memory specs +- Guardrail specs +- Evaluator specs +- Benchmark specs +- Trigger specs +- Output specs +- Notification specs -### ๐Ÿ“Š Agent Specifications -Agent configurations organized by category (code-ai/, codemode-paper/, datalayer-ai/). Each agent spec defines its capabilities, model, MCP servers, skills, UI customization, and system prompts. +## Key Properties -### ๐Ÿ”Œ MCP Server Specifications -MCP (Model Context Protocol) server configurations including commands, arguments, environment variables, and transport protocols. +- **Single Source of Truth**: YAML files are the authoritative specification +- **Declarative**: Define what the system should do, not implementation details +- **Composable**: Specs reference each other by stable IDs +- **Validated**: JSON Schema ensures consistency and correctness +- **Extensible**: Easy to add new fields or specification types +- **Human-Readable**: YAML format is easy to read and edit -### ๐Ÿ› ๏ธ Skill Specifications -Agent skills with Python module references, dependencies, and environment variable requirements. +## Versioning -### ๐Ÿ” Environment Variable Specifications -Environment variable definitions with descriptions, registration URLs, and metadata. +All specs are versioned and include: -### ๐Ÿง  Model Specifications -AI model configurations with provider, credentials, and default designation. +- `id` +- `version` (currently `0.0.1`) -## Key Features +Cross-spec references should use `id:version` format (for example `tavily:0.0.1`). -- **Single Source of Truth**: YAML files are the authoritative specification -- **Declarative**: Define what agents can do, not how they do it -- **Composable**: Agents reference MCP servers, skills, and models by ID -- **Validated**: JSON Schema ensures consistency and correctness -- **Extensible**: Easy to add new fields or specification types -- **Human-Readable**: YAML format is easy to read and edit +Generated catalogs are keyed by unversioned id only (e.g. `tavily`). The `get_*` / `get*Spec` accessor functions accept both bare ids and versioned refs (`tavily:0.0.1`), stripping the version suffix automatically. Iterating catalog values returns each spec exactly once. ## Directory Structure ``` agentspecs/ -โ”œโ”€โ”€ agents/ # Agent specifications (organized by category) -โ”‚ โ”œโ”€โ”€ code-ai/ # Code-focused agents -โ”‚ โ”œโ”€โ”€ codemode-paper/ # Research paper agents -โ”‚ โ””โ”€โ”€ datalayer-ai/ # Data-focused agents -โ”œโ”€โ”€ mcp-servers/ # MCP server specifications -โ”œโ”€โ”€ models/ # AI model specifications -โ”œโ”€โ”€ skills/ # Skill specifications -โ”œโ”€โ”€ envvars/ # Environment variable specifications -โ””โ”€โ”€ agent-spec.schema.yaml # JSON Schema for validation +โ”œโ”€โ”€ agents/ +โ”œโ”€โ”€ teams/ +โ”œโ”€โ”€ mcp-servers/ +โ”œโ”€โ”€ skills/ +โ”œโ”€โ”€ tools/ +โ”œโ”€โ”€ envvars/ +โ”œโ”€โ”€ models/ +โ”œโ”€โ”€ memory/ +โ”œโ”€โ”€ guardrails/ +โ”œโ”€โ”€ evals/ +โ”œโ”€โ”€ benchmarks/ +โ”œโ”€โ”€ triggers/ +โ”œโ”€โ”€ outputs/ +โ””โ”€โ”€ notifications/ ``` -## Quick Start +## Writing Specs -### Creating a New Agent +1. Create or update a YAML file in the relevant folder. +2. Always set `id` and `version`. +3. Prefer explicit versioned references (`id:version`) for linked specs. +4. Keep IDs stable and bump `version` for breaking changes. -1. Choose the appropriate folder: `code-ai/`, `codemode-paper/`, or `datalayer-ai/` -2. Create `agentspecs/agents//my-agent.yaml` -3. The agent ID will automatically become `/my-agent` +## Parameters + +Agentspecs can declare launch-time `parameters` using JSON Schema. These +parameters are validated before runtime creation and then injected into +templated fields. + +### Why use parameters? + +- Build one reusable spec for many runtime contexts. +- Enforce input shape (`type`, `enum`, `required`, defaults). +- Drive prompts, hooks, and messages from validated values. + +### Where parameters are used + +Parameter values can be referenced with `{{name}}` templating in fields such as: + +- `system_prompt` +- `welcome_message` +- `pre_hooks.sandbox` +- other text fields that support runtime templating + +### Example -Example: ```yaml -# File: agentspecs/agents/code-ai/my-agent.yaml -# Full ID: "code-ai/my-agent" -id: my-agent -name: My Custom Agent -description: A helpful agent for coding tasks - -tags: - - code - - development - -enabled: true -mcp_servers: - - github - - filesystem - -icon: code -emoji: ๐Ÿ’ป -color: "#6366F1" +id: demo-parameters +version: 0.0.1 + +parameters: + type: object + properties: + project: + type: string + default: Orbit + role: + type: string + enum: [product analyst, engineering lead, support specialist] + default: product analyst + required: + - project + +system_prompt: > + You are an assistant dedicated to {{project}}. + Assume the user is a {{role}}. + +pre_hooks: + sandbox: + - | + project_name = """{{project}}""" ``` -### Agent ID Format - -Agents are automatically prefixed with their folder name: -- `code-ai/simple` - Simple agent in code-ai folder -- `codemode-paper/financial-viz` - Financial visualization in codemode-paper folder -- `datalayer-ai/data-acquisition` - Data acquisition in datalayer-ai folder +### Validation behavior -This prevents ID conflicts and improves organization. +- Missing required parameters fail validation. +- Invalid values (for example enum mismatch) fail validation. +- Optional parameters use their schema defaults when provided. ## Documentation -## Best Practices +## Notes -1. **Naming**: Use kebab-case for IDs (`data-acquisition`). Exception: envvars use UPPER_SNAKE_CASE -2. **Descriptions**: Be specific about capabilities and use cases -3. **Tags**: Use consistent tags for better categorization -4. **Environment Variables**: Always define in `envvars/` directory and reference by ID -5. **System Prompts**: Keep base `system_prompt` general, use `system_prompt_codemode_addons` for execution-specific instructions +- Use kebab-case IDs for most specs. +- Use UPPER_SNAKE_CASE IDs for env vars. +- Keep references explicit and versioned. ## License diff --git a/docs/docs/mcp-servers/index.mdx b/docs/docs/mcp-servers/index.mdx index 6ea3537..8952987 100644 --- a/docs/docs/mcp-servers/index.mdx +++ b/docs/docs/mcp-servers/index.mdx @@ -15,6 +15,9 @@ MCP servers provide tools and resources to agents through a standardized protoco ### `id` (string) Unique identifier (kebab-case, e.g., `kaggle`, `github`, `filesystem`) +### `version` (string) +Spec version (currently `0.0.1`). + ### `name` (string) Display name shown in the UI @@ -52,7 +55,7 @@ transport: remote # Remote HTTP connection Required environment variable IDs. References specs in `envvars/` directory. ```yaml envvars: - - KAGGLE_TOKEN + - KAGGLE_TOKEN:0.0.1 - GITHUB_TOKEN ``` @@ -107,6 +110,7 @@ The `${KAGGLE_TOKEN}` will be expanded at runtime by consuming systems. # Distributed under the terms of the Modified BSD License. id: kaggle +version: 0.0.1 name: Kaggle MCP Server description: Access Kaggle datasets, competitions, and kernels @@ -124,7 +128,7 @@ args: transport: remote envvars: - - KAGGLE_TOKEN + - KAGGLE_TOKEN:0.0.1 tags: - data @@ -167,3 +171,22 @@ The following MCP servers are defined in `agentspecs/mcp-servers/`: 6. **Transport**: Specify `stdio` for local processes, `remote` for HTTP connections 7. **Tags**: Use consistent tags for better categorization 8. **Description**: Be specific about what tools and resources the server provides + +## Full Field Coverage + +Required fields: + +- `id` +- `version` +- `name` +- `description` +- `command` +- `args` + +Common optional fields: + +- `transport` (`stdio` or `remote`) +- `envvars` (prefer versioned refs) +- `env` (process env injection) +- `tags` +- `icon`, `emoji` diff --git a/docs/docs/memory/_category_.yml b/docs/docs/memory/_category_.yml new file mode 100644 index 0000000..9f68554 --- /dev/null +++ b/docs/docs/memory/_category_.yml @@ -0,0 +1,2 @@ +label: "Memory" +position: 8 diff --git a/docs/docs/memory/index.mdx b/docs/docs/memory/index.mdx new file mode 100644 index 0000000..f4062a0 --- /dev/null +++ b/docs/docs/memory/index.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 1 +title: Memory +--- + +# Memory Specifications + +Memory specs define selectable memory backends for agents. + +## Required Fields + +- `id` +- `version` +- `name` +- `description` + +## Typical Fields + +- `enabled` +- backend-specific configuration fields +- `tags` + +## Notes + +- Use memory IDs in agent `memory` fields. +- Keep backend selection explicit and versioned in catalogs. diff --git a/docs/docs/models/index.mdx b/docs/docs/models/index.mdx index 811b5a7..21f1bef 100644 --- a/docs/docs/models/index.mdx +++ b/docs/docs/models/index.mdx @@ -20,6 +20,9 @@ id: "openai:gpt-4.1" id: "anthropic:claude-opus-4-20250514" ``` +### `version` (string) +Spec version (currently `0.0.1`). + ### `name` (string) Display name shown in the UI. ```yaml @@ -69,6 +72,7 @@ required_env_vars: # AI Model Specification: Bedrock Claude Sonnet 4.5 id: "bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0" +version: 0.0.1 name: Bedrock Claude Sonnet 4.5 description: Claude Sonnet 4.5 via AWS Bedrock - balanced performance provider: bedrock @@ -107,7 +111,6 @@ Required env vars: `ANTHROPIC_API_KEY` | Model | ID | Description | |-------|-----|-------------| -| **Claude Haiku 3.5** | `bedrock:us.anthropic.claude-3-5-haiku-20241022-v1:0` | Fast and efficient | | **Claude Sonnet 4** | `bedrock:us.anthropic.claude-sonnet-4-20250514-v1:0` | Strong reasoning | | **Claude Sonnet 4.5** โญ | `bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0` | Balanced performance (default) | | **Claude Opus 4** | `bedrock:us.anthropic.claude-opus-4-20250514-v1:0` | Highest capability | @@ -168,3 +171,18 @@ Run `make specs` in the agent-runtimes repository to regenerate from the YAML fi 4. **Descriptions**: Keep descriptions short โ€” mention the provider, model tier, and key characteristic 5. **Provider Consistency**: Use the canonical provider names (`anthropic`, `bedrock`, `azure-openai`, `openai`) 6. **File Naming**: Use kebab-case matching the provider and model name (e.g., `bedrock-claude-sonnet-4-5.yaml`) + +## Full Field Coverage + +Required fields: + +- `id` +- `version` +- `name` +- `description` +- `provider` + +Common optional fields: + +- `default` (bool) +- `required_env_vars` diff --git a/docs/docs/notifications/_category_.yml b/docs/docs/notifications/_category_.yml new file mode 100644 index 0000000..35e6548 --- /dev/null +++ b/docs/docs/notifications/_category_.yml @@ -0,0 +1,2 @@ +label: "Notifications" +position: 13 diff --git a/docs/docs/notifications/index.mdx b/docs/docs/notifications/index.mdx new file mode 100644 index 0000000..bb73889 --- /dev/null +++ b/docs/docs/notifications/index.mdx @@ -0,0 +1,36 @@ +--- +sidebar_position: 1 +title: Notifications +--- + +# Notification Specifications + +Notification specs define reusable notification channels and field templates. + +## Required Fields + +- `id` +- `version` +- `name` +- `description` + +## Common Fields + +- `available` +- `icon` +- `fields` (typed channel configuration fields) + +## Example + +```yaml +id: slack +version: 0.0.1 +name: Slack +description: Post notifications to Slack channels +icon: bell +available: true +fields: + - name: channel + type: string + required: true +``` diff --git a/docs/docs/outputs/_category_.yml b/docs/docs/outputs/_category_.yml new file mode 100644 index 0000000..3a69c45 --- /dev/null +++ b/docs/docs/outputs/_category_.yml @@ -0,0 +1,2 @@ +label: "Outputs" +position: 12 diff --git a/docs/docs/outputs/index.mdx b/docs/docs/outputs/index.mdx new file mode 100644 index 0000000..d1e9727 --- /dev/null +++ b/docs/docs/outputs/index.mdx @@ -0,0 +1,38 @@ +--- +sidebar_position: 1 +title: Outputs +--- + +# Output Specifications + +Output specs define standardized output channel/templates for agent results. + +## Required Fields + +- `id` +- `version` +- `name` +- `description` + +## Common Fields + +- format capabilities +- template support +- storage support +- mime types +- icon + +## Example + +```yaml +id: dashboard +version: 0.0.1 +name: Dashboard +description: Deliver results as an interactive dashboard +supports_template: true +supports_storage: true +mime_types: + - text/html + - application/json +icon: graph +``` diff --git a/docs/docs/skills/index.mdx b/docs/docs/skills/index.mdx index 77b4a10..36dc244 100644 --- a/docs/docs/skills/index.mdx +++ b/docs/docs/skills/index.mdx @@ -15,6 +15,9 @@ Skills are Python modules that provide specific capabilities to agents. Each ski ### `id` (string) Unique identifier (kebab-case, e.g., `data-analysis`, `code-generation`) +### `version` (string) +Spec version (currently `0.0.1`). + ### `name` (string) Display name shown in the UI @@ -35,7 +38,7 @@ module: agent_skills.web_search Required environment variable IDs. References specs in `envvars/` directory. ```yaml envvars: - - OPENAI_API_KEY + - OPENAI_API_KEY:0.0.1 - GITHUB_TOKEN ``` @@ -80,13 +83,14 @@ UI emoji identifier # Distributed under the terms of the Modified BSD License. id: data-analysis +version: 0.0.1 name: Data Analysis Skill description: Perform statistical analysis and data visualization module: agent_skills.data_analysis envvars: - - OPENAI_API_KEY + - OPENAI_API_KEY:0.0.1 optional_env_vars: - PLOT_DPI @@ -141,3 +145,21 @@ skills: 6. **Description**: Focus on what the skill enables the agent to do 7. **Version Constraints**: Use `>=` for minimum versions, avoid overly restrictive pinning 8. **Documentation**: Ensure the module path points to existing Python code + +## Full Field Coverage + +Required fields: + +- `id` +- `version` +- `name` +- `description` +- `module` + +Common optional fields: + +- `envvars` (prefer `id:version` refs) +- `optional_env_vars` +- `dependencies` +- `tags` +- `icon`, `emoji` diff --git a/docs/docs/teams/_category_.yml b/docs/docs/teams/_category_.yml new file mode 100644 index 0000000..3bbd952 --- /dev/null +++ b/docs/docs/teams/_category_.yml @@ -0,0 +1,2 @@ +label: "Teams" +position: 7 diff --git a/docs/docs/teams/index.mdx b/docs/docs/teams/index.mdx new file mode 100644 index 0000000..fcfc032 --- /dev/null +++ b/docs/docs/teams/index.mdx @@ -0,0 +1,39 @@ +--- +sidebar_position: 1 +title: Teams +--- + +# Team Specifications + +Team specs define multi-agent orchestration behavior. + +## Required Fields + +- `id` +- `version` +- `name` +- `description` + +## Common Fields + +- `enabled` +- `agent_spec_id` (use versioned reference) +- `orchestration_protocol` +- `execution_mode` +- `supervisor` +- `agents` +- `reaction_rules` +- `health_monitoring` +- `notifications` +- `output` + +## Example + +```yaml +id: comprehensive-sales-analytics +version: 0.0.1 +name: Comprehensive Sales Analytics +agent_spec_id: comprehensive-sales-analytics:0.0.1 +orchestration_protocol: datalayer +execution_mode: sequential +``` diff --git a/docs/docs/tools/_category_.yml b/docs/docs/tools/_category_.yml new file mode 100644 index 0000000..172cd31 --- /dev/null +++ b/docs/docs/tools/_category_.yml @@ -0,0 +1,2 @@ +label: "Tools" +position: 6 diff --git a/docs/docs/tools/index.mdx b/docs/docs/tools/index.mdx new file mode 100644 index 0000000..6f7a441 --- /dev/null +++ b/docs/docs/tools/index.mdx @@ -0,0 +1,47 @@ +--- +sidebar_position: 1 +title: Tools +--- + +# Tool Specifications + +Tool specs define runtime-callable tools and their implementation bindings. + +## Required Fields + +- `id` +- `version` +- `name` +- `description` + +## Common Fields + +- `enabled` +- `approval` (`auto` or `manual`) +- `runtime.language` +- `runtime.package` +- `runtime.method` +- `tags` +- `icon`, `emoji` + +## Example + +```yaml +id: runtime-echo +version: 0.0.1 +name: Runtime Echo +description: Echo text back to caller for runtime verification +enabled: true +approval: auto +runtime: + language: python + package: agent_runtimes.examples.tools + method: runtime_echo +icon: comment +emoji: "๐Ÿ’ฌ" +``` + +## Notes + +- Use stable IDs and bump `version` for breaking changes. +- Use explicit tool refs (`id:version`) from agentspecs when present. diff --git a/docs/docs/triggers/_category_.yml b/docs/docs/triggers/_category_.yml new file mode 100644 index 0000000..1367098 --- /dev/null +++ b/docs/docs/triggers/_category_.yml @@ -0,0 +1,2 @@ +label: "Triggers" +position: 11 diff --git a/docs/docs/triggers/index.mdx b/docs/docs/triggers/index.mdx new file mode 100644 index 0000000..8147bc1 --- /dev/null +++ b/docs/docs/triggers/index.mdx @@ -0,0 +1,25 @@ +--- +sidebar_position: 1 +title: Triggers +--- + +# Trigger Specifications + +Trigger specs define reusable run triggers (for example once, schedule, event). + +## Required Fields + +- `id` +- `version` +- `name` +- `description` + +## Common Fields + +- trigger type (`once`, `schedule`, `event`) +- schedule/cron details +- prompt templates + +## Notes + +- Agents can embed triggers directly or reference templates depending on runtime flow. diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index b0c272c..72027d9 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -5,8 +5,8 @@ /** @type {import('@docusaurus/types').DocusaurusConfig} */ module.exports = { - title: '๐Ÿค– ๐Ÿ‘ท Agentspecs', - tagline: 'Agentspecs', + title: '๐Ÿงพ Agentspecs', + tagline: 'YAML-based specifications for AI agents, MCP servers, skills and more...', url: 'https://agentspecs.datalayer.tech', baseUrl: '/', onBrokenLinks: 'throw', @@ -46,7 +46,7 @@ module.exports = { type: 'doc', docId: 'mcp-servers/index', position: 'left', - label: 'MCP Servers', + label: 'MCP', }, { type: 'doc', @@ -58,7 +58,7 @@ module.exports = { type: 'doc', docId: 'env-vars/index', position: 'left', - label: 'Environment Variables', + label: 'Env Vars', }, { type: 'doc', @@ -66,6 +66,60 @@ module.exports = { position: 'left', label: 'Models', }, + { + type: 'doc', + docId: 'tools/index', + position: 'left', + label: 'Tools', + }, + { + type: 'doc', + docId: 'teams/index', + position: 'left', + label: 'Teams', + }, + { + type: 'doc', + docId: 'memory/index', + position: 'left', + label: 'Memory', + }, + { + type: 'doc', + docId: 'guardrails/index', + position: 'left', + label: 'Guardrails', + }, + { + type: 'doc', + docId: 'evals/index', + position: 'left', + label: 'Evals', + }, + { + type: 'doc', + docId: 'triggers/index', + position: 'left', + label: 'Triggers', + }, + { + type: 'doc', + docId: 'outputs/index', + position: 'left', + label: 'Outputs', + }, + { + type: 'doc', + docId: 'notifications/index', + position: 'left', + label: 'Notifications', + }, + { + type: 'doc', + docId: 'hooks/index', + position: 'left', + label: 'Hooks', + }, { href: 'https://discord.gg/YQFwvmSSuR', position: 'right',