This commit is contained in:
a2a-platform
2026-06-14 22:56:58 +00:00
commit cfffc4dfd6
5 changed files with 173 additions and 0 deletions

15
README.md Normal file
View File

@@ -0,0 +1,15 @@
# metatest
Manifest-backed meta-agent composed in the dashboard.
Generated A2APack meta-agent project.
- Main skill: `pursue`
- Planning: `llm_dag`
- Max nodes: `8`
- Max replans: `1`
- Declared sub-agents:
- `blog-openapi-agent` skills: auto, get_blog_health, list_blog_posts, create_blog_post, get_blog_post, upsert_blog_post, delete_blog_post
- `google-trends-agent` skills: fetch, fetch_structured
Edit `meta_agent_manifest.json` and `a2a.yaml` together if you change the composition.

51
a2a.yaml Normal file
View File

@@ -0,0 +1,51 @@
name: metatest
version: 0.1.0
entrypoint: agent:Metatest
description: Manifest-backed meta-agent composed in the dashboard.
composition:
sub_agents:
- name: blog-openapi-agent
skills:
- auto
- get_blog_health
- list_blog_posts
- create_blog_post
- get_blog_post
- upsert_blog_post
- delete_blog_post
default_args: {}
required: true
- name: google-trends-agent
skills:
- fetch
- fetch_structured
default_args: {}
required: true
planning: llm_dag
max_nodes: 8
max_parallel: 3
max_replans: 1
goal:
objective: Figure out what kind of blog content works
success_criteria: []
constraints: []
memory:
tiers:
- files
- kv
- vector
namespace: metatest
scope: agent
retention: durable
runtime:
resources:
cpu: 500m
memory: 1Gi
max_runtime_seconds: 900
llm_provisioning: platform_or_caller_provided
wants_cp_jwt: true
egress:
allow_internal_services:
- control-plane.control-plane.svc.cluster.local
- litellm.llm.svc.cluster.local
deny_internet_by_default: false

58
agent.py Normal file
View File

@@ -0,0 +1,58 @@
from __future__ import annotations
import json
from pydantic import BaseModel
from a2a_pack import (
EgressPolicy,
LLMProvisioning,
MetaAgent,
MetaAgentManifest,
NoAuth,
Resources,
WorkspaceAccess,
WorkspaceMode,
)
META_AGENT_MANIFEST = MetaAgentManifest.from_mapping(
json.loads("{\n \"composition\": {\n \"max_nodes\": 8,\n \"max_parallel\": 3,\n \"max_replans\": 1,\n \"planning\": \"llm_dag\",\n \"sub_agents\": [\n {\n \"default_args\": {},\n \"name\": \"blog-openapi-agent\",\n \"required\": true,\n \"skills\": [\n \"auto\",\n \"get_blog_health\",\n \"list_blog_posts\",\n \"create_blog_post\",\n \"get_blog_post\",\n \"upsert_blog_post\",\n \"delete_blog_post\"\n ]\n },\n {\n \"default_args\": {},\n \"name\": \"google-trends-agent\",\n \"required\": true,\n \"skills\": [\n \"fetch\",\n \"fetch_structured\"\n ]\n }\n ]\n },\n \"goal\": {\n \"constraints\": [],\n \"objective\": \"Figure out what kind of blog content works\",\n \"success_criteria\": []\n },\n \"memory\": {\n \"namespace\": \"metatest\",\n \"retention\": \"durable\",\n \"scope\": \"agent\",\n \"tiers\": [\n \"files\",\n \"kv\",\n \"vector\"\n ]\n }\n}")
)
class MetatestConfig(BaseModel):
pass
class Metatest(MetaAgent[MetatestConfig, NoAuth]):
name = "metatest"
description = "Manifest-backed meta-agent composed in the dashboard."
version = "0.1.0"
config_model = MetatestConfig
auth_model = NoAuth
meta_agent_manifest = META_AGENT_MANIFEST
llm_provisioning = LLMProvisioning.PLATFORM_OR_CALLER_PROVIDED
wants_cp_jwt = True
resources = Resources(cpu="500m", memory="1Gi", max_runtime_seconds=900)
egress = EgressPolicy(
allow_internal_services=(
"control-plane.control-plane.svc.cluster.local",
"litellm.llm.svc.cluster.local",
),
deny_internet_by_default=False,
)
workspace_access = WorkspaceAccess.dynamic(
max_files=100,
allowed_modes=(
WorkspaceMode.READ_ONLY,
WorkspaceMode.READ_WRITE_OVERLAY,
),
deny_patterns=(
"secrets/**",
".env",
"**/.env",
"**/.git/**",
),
require_human_approval=False,
)

48
meta_agent_manifest.json Normal file
View File

@@ -0,0 +1,48 @@
{
"composition": {
"max_nodes": 8,
"max_parallel": 3,
"max_replans": 1,
"planning": "llm_dag",
"sub_agents": [
{
"default_args": {},
"name": "blog-openapi-agent",
"required": true,
"skills": [
"auto",
"get_blog_health",
"list_blog_posts",
"create_blog_post",
"get_blog_post",
"upsert_blog_post",
"delete_blog_post"
]
},
{
"default_args": {},
"name": "google-trends-agent",
"required": true,
"skills": [
"fetch",
"fetch_structured"
]
}
]
},
"goal": {
"constraints": [],
"objective": "Figure out what kind of blog content works",
"success_criteria": []
},
"memory": {
"namespace": "metatest",
"retention": "durable",
"scope": "agent",
"tiers": [
"files",
"kv",
"vector"
]
}
}

1
requirements.txt Normal file
View File

@@ -0,0 +1 @@
# a2a-pack is installed by the platform base image.