59 lines
2.4 KiB
Python
59 lines
2.4 KiB
Python
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,
|
|
)
|