@bluefly/openstandardagents 0.2.5-RC → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
- package/.github/workflows/dependabot-comment.yml +34 -0
- package/.github/workflows/pr-comment.yml +33 -0
- package/.husky/pre-commit +5 -0
- package/.kiro/config.json +21 -0
- package/.kiro/settings/mcp.json +61 -0
- package/.kiro/specs/scripts-migration-api-first/design.md +883 -0
- package/.kiro/specs/scripts-migration-api-first/requirements.md +165 -0
- package/.kiro/specs/scripts-migration-api-first/tasks.md +539 -0
- package/.kiro/specs/{website-design-audit → website-brand-identity}/design.md +381 -0
- package/.kiro/specs/{website-design-audit → website-brand-identity}/requirements.md +88 -0
- package/.kiro/specs/website-brand-identity/tasks.md +981 -0
- package/CHANGELOG.md +23 -0
- package/README.md +12 -3
- package/bin/ossa-dev +42 -0
- package/bin/ossa-export +32 -0
- package/bin/ossa-generate +60 -0
- package/bin/ossa-health +40 -0
- package/bin/ossa-init +26 -0
- package/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +15 -10
- package/dist/repositories/schema.repository.js.map +1 -1
- package/dist/services/github-sync/github-client.d.ts +14 -0
- package/dist/services/github-sync/github-client.d.ts.map +1 -0
- package/dist/services/github-sync/github-client.js +41 -0
- package/dist/services/github-sync/github-client.js.map +1 -0
- package/dist/services/github-sync/gitlab-client.d.ts +17 -0
- package/dist/services/github-sync/gitlab-client.d.ts.map +1 -0
- package/dist/services/github-sync/gitlab-client.js +42 -0
- package/dist/services/github-sync/gitlab-client.js.map +1 -0
- package/dist/services/github-sync/schemas.d.ts +46 -0
- package/dist/services/github-sync/schemas.d.ts.map +1 -0
- package/dist/services/github-sync/schemas.js +36 -0
- package/dist/services/github-sync/schemas.js.map +1 -0
- package/dist/services/github-sync/sync.service.d.ts +27 -0
- package/dist/services/github-sync/sync.service.d.ts.map +1 -0
- package/dist/services/github-sync/sync.service.js +99 -0
- package/dist/services/github-sync/sync.service.js.map +1 -0
- package/dist/services/runtime/claude/capability-mapper.d.ts +84 -0
- package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -0
- package/dist/services/runtime/claude/capability-mapper.js +245 -0
- package/dist/services/runtime/claude/capability-mapper.js.map +1 -0
- package/dist/services/runtime/claude/claude-adapter.d.ts +80 -0
- package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -0
- package/dist/services/runtime/claude/claude-adapter.js +287 -0
- package/dist/services/runtime/claude/claude-adapter.js.map +1 -0
- package/dist/services/runtime/claude/manifest-parser.d.ts +77 -0
- package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -0
- package/dist/services/runtime/claude/manifest-parser.js +169 -0
- package/dist/services/runtime/claude/manifest-parser.js.map +1 -0
- package/dist/services/runtime/claude/types.d.ts +115 -0
- package/dist/services/runtime/claude/types.d.ts.map +1 -0
- package/dist/services/runtime/claude/types.js +6 -0
- package/dist/services/runtime/claude/types.js.map +1 -0
- package/dist/services/validation.service.d.ts.map +1 -1
- package/dist/services/validation.service.js +12 -1
- package/dist/services/validation.service.js.map +1 -1
- package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
- package/dist/spec/v0.2.6/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.6/README.md +72 -0
- package/dist/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/v0.2.6/ossa-0.2.6.schema.json +1786 -0
- package/dist/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
- package/dist/spec/v0.2.6-dev/CHANGELOG.md +164 -0
- package/dist/spec/v0.2.6-dev/README.md +75 -0
- package/dist/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/dist/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6-dev/ossa-0.2.5.schema.json} +9 -9
- package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/{spec/v0.2.4/ossa-0.2.4-dev.schema.json → dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json} +9 -9
- package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
- package/dist/spec/v0.2.7/core/agentgraph.md +324 -0
- package/dist/spec/v0.2.7/resources/agentgraph.yaml +135 -0
- package/docs/brand-guide/01-brand-overview.md +37 -0
- package/docs/brand-guide/02-logo-usage.md +43 -0
- package/docs/brand-guide/03-color-palette.md +70 -0
- package/docs/brand-guide/04-typography.md +82 -0
- package/docs/brand-guide/05-voice-and-tone.md +108 -0
- package/docs/brand-guide/06-visual-elements.md +137 -0
- package/docs/brand-guide/07-application-examples.md +153 -0
- package/docs/brand-guide/OssaLogo/OssA_Logo.svg +21 -0
- package/docs/brand-guide/OssaLogo/brand.af +0 -0
- package/docs/brand-guide/README.md +107 -0
- package/docs/comparison.md +315 -0
- package/docs/operations/automation-roadmap.md +245 -0
- package/docs/operations/github-sync-strategy.md +357 -0
- package/examples/anthropic/claude-assistant.ossa.json +5 -4
- package/examples/autogen/multi-agent.ossa.json +6 -4
- package/examples/crewai/research-team.ossa.json +14 -5
- package/examples/cursor/code-review-agent.ossa.json +21 -6
- package/examples/langchain/chain-agent.ossa.json +21 -5
- package/examples/langflow/workflow-agent.ossa.json +2 -3
- package/examples/langgraph/state-machine-agent.ossa.json +2 -3
- package/examples/llamaindex/rag-agent.ossa.json +2 -3
- package/examples/openai/multi-tool-agent.ossa.json +32 -9
- package/examples/openai/swarm-agent.ossa.json +18 -5
- package/examples/vercel/edge-agent.ossa.json +5 -4
- package/openapi/github-sync.yaml +115 -0
- package/package.json +25 -4
- package/scripts/README.md +103 -0
- package/scripts/auto-rebase-mrs.ts +106 -0
- package/scripts/batch-dependabot.sh +57 -0
- package/scripts/configure-gitlab-branch-protection.ts +95 -0
- package/scripts/create-issue-helper.ts +238 -0
- package/scripts/create-milestone-issue.ts +73 -0
- package/scripts/fix-schema-formats.js +82 -0
- package/scripts/generate-agents-catalog.ts +77 -0
- package/scripts/generate-api-docs.ts +218 -0
- package/scripts/generate-cli-docs.ts +410 -0
- package/scripts/generate-config-docs.ts +109 -0
- package/scripts/generate-errors-docs.ts +76 -0
- package/scripts/generate-examples-docs.ts +99 -0
- package/scripts/generate-schema-docs.ts +296 -0
- package/scripts/generate-types-docs.ts +48 -0
- package/scripts/lowercase-docs.ts +43 -0
- package/scripts/manage-milestone-mrs.ts +279 -0
- package/scripts/rebase-all-mrs.sh +75 -0
- package/scripts/sync-github-pr.sh +48 -0
- package/scripts/sync-version.js +40 -0
- package/scripts/sync-wiki.sh +50 -0
- package/scripts/validate-all.js +127 -0
- package/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
- package/spec/v0.2.6/CHANGELOG.md +401 -0
- package/spec/v0.2.6/README.md +72 -0
- package/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/v0.2.6/ossa-0.2.6.schema.json +1786 -0
- package/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
- package/spec/v0.2.6-dev/CHANGELOG.md +164 -0
- package/spec/v0.2.6-dev/README.md +75 -0
- package/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.6-dev/ossa-0.2.5.schema.json +1696 -0
- package/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +1696 -0
- package/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
- package/spec/v0.2.7/core/agentgraph.md +324 -0
- package/spec/v0.2.7/resources/agentgraph.yaml +135 -0
- package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +445 -0
- package/website/app/about/page.tsx +53 -44
- package/website/app/ecosystem/page.tsx +146 -111
- package/website/app/globals.scss +256 -21
- package/website/app/page.tsx +394 -182
- package/website/app/page.tsx.bak +679 -0
- package/website/app/page.tsx.bak2 +649 -0
- package/website/app/schema/page.tsx +3 -3
- package/website/app/specification/page.tsx +1 -1
- package/website/components/layout/Header.tsx +27 -23
- package/website/components/ui/Badge.tsx +82 -0
- package/website/components/ui/Button.tsx +116 -0
- package/website/components/ui/Card.tsx +167 -0
- package/website/components/ui/Checkbox.tsx +141 -0
- package/website/components/ui/Input.tsx +169 -0
- package/website/components/ui/Radio.tsx +141 -0
- package/website/components/ui/Select.tsx +182 -0
- package/website/components/ui/Tag.tsx +158 -0
- package/website/components/ui/Textarea.tsx +195 -0
- package/website/components/ui/index.ts +11 -0
- package/website/content/docs/{00-HOME.md → 00-home.md} +1 -1
- package/website/content/docs/agents/catalog.md +28 -0
- package/website/content/docs/{AIFlow-Framework-Integration-with-OSSA.md → aiflow-framework-integration-with-ossa.md} +2 -2
- package/website/content/docs/api-reference/index.md +38 -0
- package/website/content/docs/api-reference/ossa-core-api.md +634 -0
- package/website/content/docs/api-reference/ossa-registry-api.md +515 -0
- package/website/content/docs/api-reference/unified-agent-gateway.md +599 -0
- package/website/content/docs/cli-reference/index.md +111 -0
- package/website/content/docs/cli-reference/ossa-agents.md +70 -0
- package/website/content/docs/cli-reference/ossa-export.md +56 -0
- package/website/content/docs/cli-reference/ossa-generate.md +66 -0
- package/website/content/docs/cli-reference/ossa-gitlab-agent.md +57 -0
- package/website/content/docs/cli-reference/ossa-import.md +56 -0
- package/website/content/docs/cli-reference/ossa-init.md +57 -0
- package/website/content/docs/cli-reference/ossa-migrate.md +62 -0
- package/website/content/docs/cli-reference/ossa-run.md +66 -0
- package/website/content/docs/cli-reference/ossa-schema.md +57 -0
- package/website/content/docs/cli-reference/ossa-setup.md +57 -0
- package/website/content/docs/cli-reference/ossa-validate.md +66 -0
- package/website/content/docs/configuration/index.md +97 -0
- package/website/content/docs/deployment/github-mirroring.md +924 -0
- package/website/content/docs/documentation.md +100 -0
- package/website/content/docs/ecosystem/framework-support.md +551 -9
- package/website/content/docs/errors/index.md +10 -0
- package/website/content/docs/examples/{AIFlow-Framework-Integration-with-OSSA.md → aiflow-framework-integration-with-ossa.md} +2 -2
- package/website/content/docs/examples/catalog.md +300 -0
- package/website/content/docs/for-audiences/{Students-Researchers.md → students-researchers.md} +1 -1
- package/website/content/docs/getting-started/{Installation.md → installation.md} +1 -1
- package/website/content/docs/getting-started.md +1 -1
- package/website/content/docs/integrations/aiflow.md +2 -2
- package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +5 -5
- package/website/content/docs/migration-guides/crewai-to-ossa.md +3 -3
- package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +7 -7
- package/website/content/docs/migration-guides/langchain-to-ossa.md +4 -4
- package/website/content/docs/openapi-extensions/index.md +1 -1
- package/website/content/docs/ossa-compliant-badge.md +1 -1
- package/website/content/docs/pre-release/index.md +5 -5
- package/website/content/docs/releases/v0.2.6.md +99 -0
- package/website/content/docs/schema-reference/agent-capabilities.md +50 -0
- package/website/content/docs/schema-reference/agent-id.md +52 -0
- package/website/content/docs/schema-reference/agent-name.md +50 -0
- package/website/content/docs/schema-reference/agent-role.md +54 -0
- package/website/content/docs/schema-reference/agent-version.md +50 -0
- package/website/content/docs/schema-reference/index.md +26 -157
- package/website/content/docs/types-reference/index.md +105 -0
- package/website/content/docs/versioning.md +3 -3
- package/website/dev.sh +53 -0
- package/website/docker-compose.dev.yml +36 -0
- package/website/lib/version.ts +1 -1
- package/website/lib/versions.json +45 -20
- package/website/package.json +1 -1
- package/website/styles/_spacing.scss +453 -0
- package/website/styles/_tokens.scss +245 -0
- package/website/styles/_typography.scss +361 -0
- package/website/styles/_variables.scss +270 -19
- package/website/tailwind.config.ts +113 -79
- package/.kiro/specs/agent-buildkit-templates/design.md +0 -495
- package/.kiro/specs/agent-buildkit-templates/requirements.md +0 -165
- package/.kiro/specs/kiro-ide-supercharger/README.md +0 -202
- package/.kiro/specs/kiro-ide-supercharger/design.md +0 -1005
- package/.kiro/specs/kiro-ide-supercharger/requirements.md +0 -141
- package/.kiro/specs/kiro-ide-supercharger/tasks.md +0 -507
- package/docs/issue-19-completion-summary.md +0 -648
- package/docs/issue-19-validation.md +0 -351
- package/website/content/docs/Examples.md +0 -71
- package/website/content/docs/OpenAPI-Extensions.md +0 -934
- package/website/content/docs/core-concepts/Project-Structure.md +0 -348
- package/website/content/docs/examples/Migration-Guides.md +0 -214
- package/website/content/docs/for-audiences/Architects.md +0 -224
- package/website/content/docs/for-audiences/Developers.md +0 -220
- package/website/content/docs/for-audiences/Enterprises.md +0 -256
- package/website/content/docs/getting-started/5-Minute-Overview.md +0 -85
- package/website/content/docs/getting-started/First-Agent.md +0 -196
- package/website/content/docs/getting-started/Hello-World.md +0 -184
- package/website/content/docs/migration-guides/00-INDEX.md +0 -76
- package/website/content/docs/migration-guides/README.md +0 -133
- /package/dist/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
- /package/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
# AgentGraph Resource Specification
|
|
2
|
+
|
|
3
|
+
**Version:** v0.2.7
|
|
4
|
+
**Status:** Draft
|
|
5
|
+
**Type:** Core Resource
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
AgentGraph is a resource type for defining multi-agent compositions as directed graphs. It enables orchestration of multiple agents with explicit data flow and conditional routing.
|
|
10
|
+
|
|
11
|
+
## Motivation
|
|
12
|
+
|
|
13
|
+
Single agents are limited in capability. Complex tasks require:
|
|
14
|
+
- Multiple specialized agents working together
|
|
15
|
+
- Data flow between agents
|
|
16
|
+
- Conditional routing based on outputs
|
|
17
|
+
- Error handling across agent boundaries
|
|
18
|
+
|
|
19
|
+
AgentGraph provides a declarative way to compose agents into workflows.
|
|
20
|
+
|
|
21
|
+
## Resource Structure
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
apiVersion: ossa.ai/v0.2.7
|
|
25
|
+
kind: AgentGraph
|
|
26
|
+
metadata:
|
|
27
|
+
name: string
|
|
28
|
+
version: string
|
|
29
|
+
description: string
|
|
30
|
+
spec:
|
|
31
|
+
agents: Agent[]
|
|
32
|
+
edges: Edge[]
|
|
33
|
+
entrypoint: string
|
|
34
|
+
errorHandling: ErrorHandling
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Fields
|
|
38
|
+
|
|
39
|
+
### metadata
|
|
40
|
+
|
|
41
|
+
Standard OSSA metadata block.
|
|
42
|
+
|
|
43
|
+
**Required fields:**
|
|
44
|
+
- `name`: Unique identifier for the graph
|
|
45
|
+
- `version`: Semantic version
|
|
46
|
+
|
|
47
|
+
### spec.agents
|
|
48
|
+
|
|
49
|
+
Array of agent definitions within the graph.
|
|
50
|
+
|
|
51
|
+
**Fields:**
|
|
52
|
+
- `id` (required): Unique identifier within graph
|
|
53
|
+
- `agentRef` (required): Reference to Agent resource
|
|
54
|
+
- `config` (optional): Agent-specific configuration overrides
|
|
55
|
+
|
|
56
|
+
**Example:**
|
|
57
|
+
```yaml
|
|
58
|
+
agents:
|
|
59
|
+
- id: analyzer
|
|
60
|
+
agentRef: sentiment-analyzer
|
|
61
|
+
config:
|
|
62
|
+
threshold: 0.8
|
|
63
|
+
- id: responder
|
|
64
|
+
agentRef: response-generator
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### spec.edges
|
|
68
|
+
|
|
69
|
+
Array defining data flow between agents.
|
|
70
|
+
|
|
71
|
+
**Fields:**
|
|
72
|
+
- `from` (required): Source agent ID
|
|
73
|
+
- `to` (required): Target agent ID
|
|
74
|
+
- `condition` (optional): Boolean expression for conditional routing
|
|
75
|
+
- `transform` (optional): Data transformation expression
|
|
76
|
+
|
|
77
|
+
**Example:**
|
|
78
|
+
```yaml
|
|
79
|
+
edges:
|
|
80
|
+
- from: analyzer
|
|
81
|
+
to: responder
|
|
82
|
+
- from: analyzer
|
|
83
|
+
to: escalation
|
|
84
|
+
condition: output.sentiment < 0.3
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### spec.entrypoint
|
|
88
|
+
|
|
89
|
+
ID of the starting agent. Graph execution begins here.
|
|
90
|
+
|
|
91
|
+
### spec.errorHandling
|
|
92
|
+
|
|
93
|
+
Error handling strategy for the graph.
|
|
94
|
+
|
|
95
|
+
**Fields:**
|
|
96
|
+
- `strategy`: `fail-fast` | `continue` | `retry`
|
|
97
|
+
- `maxRetries`: Maximum retry attempts (for retry strategy)
|
|
98
|
+
- `fallbackAgent`: Agent ID to invoke on error
|
|
99
|
+
|
|
100
|
+
## Execution Model
|
|
101
|
+
|
|
102
|
+
### Sequential Execution
|
|
103
|
+
|
|
104
|
+
Agents execute in topological order based on edges.
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
edges:
|
|
108
|
+
- from: A
|
|
109
|
+
to: B
|
|
110
|
+
- from: B
|
|
111
|
+
to: C
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Execution: A → B → C
|
|
115
|
+
|
|
116
|
+
### Parallel Execution
|
|
117
|
+
|
|
118
|
+
Agents with no dependencies execute in parallel.
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
edges:
|
|
122
|
+
- from: A
|
|
123
|
+
to: B
|
|
124
|
+
- from: A
|
|
125
|
+
to: C
|
|
126
|
+
- from: B
|
|
127
|
+
to: D
|
|
128
|
+
- from: C
|
|
129
|
+
to: D
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Execution: A → (B || C) → D
|
|
133
|
+
|
|
134
|
+
### Conditional Routing
|
|
135
|
+
|
|
136
|
+
Edges with conditions enable branching.
|
|
137
|
+
|
|
138
|
+
```yaml
|
|
139
|
+
edges:
|
|
140
|
+
- from: classifier
|
|
141
|
+
to: pathA
|
|
142
|
+
condition: output.category == 'A'
|
|
143
|
+
- from: classifier
|
|
144
|
+
to: pathB
|
|
145
|
+
condition: output.category == 'B'
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Data Flow
|
|
149
|
+
|
|
150
|
+
Output from source agent becomes input to target agent.
|
|
151
|
+
|
|
152
|
+
**Transformation:**
|
|
153
|
+
```yaml
|
|
154
|
+
edges:
|
|
155
|
+
- from: extractor
|
|
156
|
+
to: formatter
|
|
157
|
+
transform: |
|
|
158
|
+
{
|
|
159
|
+
"data": output.extracted,
|
|
160
|
+
"format": "json"
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Error Handling
|
|
165
|
+
|
|
166
|
+
### Fail-Fast (default)
|
|
167
|
+
|
|
168
|
+
Stop execution on first error.
|
|
169
|
+
|
|
170
|
+
```yaml
|
|
171
|
+
errorHandling:
|
|
172
|
+
strategy: fail-fast
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Continue
|
|
176
|
+
|
|
177
|
+
Continue execution, skip failed agents.
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
errorHandling:
|
|
181
|
+
strategy: continue
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Retry
|
|
185
|
+
|
|
186
|
+
Retry failed agents up to maxRetries.
|
|
187
|
+
|
|
188
|
+
```yaml
|
|
189
|
+
errorHandling:
|
|
190
|
+
strategy: retry
|
|
191
|
+
maxRetries: 3
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Fallback
|
|
195
|
+
|
|
196
|
+
Invoke fallback agent on error.
|
|
197
|
+
|
|
198
|
+
```yaml
|
|
199
|
+
errorHandling:
|
|
200
|
+
strategy: fail-fast
|
|
201
|
+
fallbackAgent: error-handler
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Examples
|
|
205
|
+
|
|
206
|
+
### Sequential Pipeline
|
|
207
|
+
|
|
208
|
+
```yaml
|
|
209
|
+
apiVersion: ossa.ai/v0.2.7
|
|
210
|
+
kind: AgentGraph
|
|
211
|
+
metadata:
|
|
212
|
+
name: content-pipeline
|
|
213
|
+
version: 1.0.0
|
|
214
|
+
spec:
|
|
215
|
+
agents:
|
|
216
|
+
- id: researcher
|
|
217
|
+
agentRef: research-agent
|
|
218
|
+
- id: writer
|
|
219
|
+
agentRef: writing-agent
|
|
220
|
+
- id: editor
|
|
221
|
+
agentRef: editing-agent
|
|
222
|
+
edges:
|
|
223
|
+
- from: researcher
|
|
224
|
+
to: writer
|
|
225
|
+
- from: writer
|
|
226
|
+
to: editor
|
|
227
|
+
entrypoint: researcher
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Parallel Processing
|
|
231
|
+
|
|
232
|
+
```yaml
|
|
233
|
+
apiVersion: ossa.ai/v0.2.7
|
|
234
|
+
kind: AgentGraph
|
|
235
|
+
metadata:
|
|
236
|
+
name: parallel-analysis
|
|
237
|
+
version: 1.0.0
|
|
238
|
+
spec:
|
|
239
|
+
agents:
|
|
240
|
+
- id: splitter
|
|
241
|
+
agentRef: data-splitter
|
|
242
|
+
- id: analyzer1
|
|
243
|
+
agentRef: sentiment-analyzer
|
|
244
|
+
- id: analyzer2
|
|
245
|
+
agentRef: entity-extractor
|
|
246
|
+
- id: merger
|
|
247
|
+
agentRef: result-merger
|
|
248
|
+
edges:
|
|
249
|
+
- from: splitter
|
|
250
|
+
to: analyzer1
|
|
251
|
+
- from: splitter
|
|
252
|
+
to: analyzer2
|
|
253
|
+
- from: analyzer1
|
|
254
|
+
to: merger
|
|
255
|
+
- from: analyzer2
|
|
256
|
+
to: merger
|
|
257
|
+
entrypoint: splitter
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Conditional Routing
|
|
261
|
+
|
|
262
|
+
```yaml
|
|
263
|
+
apiVersion: ossa.ai/v0.2.7
|
|
264
|
+
kind: AgentGraph
|
|
265
|
+
metadata:
|
|
266
|
+
name: support-router
|
|
267
|
+
version: 1.0.0
|
|
268
|
+
spec:
|
|
269
|
+
agents:
|
|
270
|
+
- id: classifier
|
|
271
|
+
agentRef: intent-classifier
|
|
272
|
+
- id: technical
|
|
273
|
+
agentRef: technical-support
|
|
274
|
+
- id: billing
|
|
275
|
+
agentRef: billing-support
|
|
276
|
+
- id: general
|
|
277
|
+
agentRef: general-support
|
|
278
|
+
edges:
|
|
279
|
+
- from: classifier
|
|
280
|
+
to: technical
|
|
281
|
+
condition: output.intent == 'technical'
|
|
282
|
+
- from: classifier
|
|
283
|
+
to: billing
|
|
284
|
+
condition: output.intent == 'billing'
|
|
285
|
+
- from: classifier
|
|
286
|
+
to: general
|
|
287
|
+
condition: output.intent == 'general'
|
|
288
|
+
entrypoint: classifier
|
|
289
|
+
errorHandling:
|
|
290
|
+
strategy: fail-fast
|
|
291
|
+
fallbackAgent: general
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## Validation Rules
|
|
295
|
+
|
|
296
|
+
1. **Acyclic**: Graph MUST NOT contain cycles
|
|
297
|
+
2. **Connected**: All agents MUST be reachable from entrypoint
|
|
298
|
+
3. **Valid References**: All `agentRef` MUST reference existing Agent resources
|
|
299
|
+
4. **Unique IDs**: Agent IDs MUST be unique within graph
|
|
300
|
+
5. **Valid Edges**: Edge `from`/`to` MUST reference agent IDs in graph
|
|
301
|
+
|
|
302
|
+
## Runtime Requirements
|
|
303
|
+
|
|
304
|
+
Implementations MUST:
|
|
305
|
+
- Validate graph structure before execution
|
|
306
|
+
- Execute agents in topological order
|
|
307
|
+
- Handle parallel execution where possible
|
|
308
|
+
- Evaluate conditions before edge traversal
|
|
309
|
+
- Apply transformations to data flow
|
|
310
|
+
- Implement specified error handling strategy
|
|
311
|
+
|
|
312
|
+
## Future Considerations
|
|
313
|
+
|
|
314
|
+
- **Loops**: Support for iterative agent execution
|
|
315
|
+
- **Subgraphs**: Nested AgentGraph resources
|
|
316
|
+
- **Dynamic Routing**: Runtime edge creation
|
|
317
|
+
- **State Management**: Shared state across agents
|
|
318
|
+
- **Observability**: Built-in tracing and metrics
|
|
319
|
+
|
|
320
|
+
## Related Resources
|
|
321
|
+
|
|
322
|
+
- [Agent Resource](./agent-definition.md)
|
|
323
|
+
- [Multi-Agent Composition](../examples/multi-agent/)
|
|
324
|
+
- [Error Handling](./error-handling.md)
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
apiVersion: ossa.ai/v0.2.7
|
|
2
|
+
kind: ResourceDefinition
|
|
3
|
+
metadata:
|
|
4
|
+
name: AgentGraph
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
description: Multi-agent composition and orchestration resource
|
|
7
|
+
|
|
8
|
+
spec:
|
|
9
|
+
# AgentGraph defines a directed graph of agents with data flow
|
|
10
|
+
schema:
|
|
11
|
+
apiVersion:
|
|
12
|
+
type: string
|
|
13
|
+
pattern: ^ossa\.ai/v\d+\.\d+\.\d+$
|
|
14
|
+
required: true
|
|
15
|
+
|
|
16
|
+
kind:
|
|
17
|
+
type: string
|
|
18
|
+
enum: [AgentGraph]
|
|
19
|
+
required: true
|
|
20
|
+
|
|
21
|
+
metadata:
|
|
22
|
+
type: object
|
|
23
|
+
required: true
|
|
24
|
+
properties:
|
|
25
|
+
name:
|
|
26
|
+
type: string
|
|
27
|
+
description: Unique identifier for the agent graph
|
|
28
|
+
version:
|
|
29
|
+
type: string
|
|
30
|
+
pattern: ^\d+\.\d+\.\d+$
|
|
31
|
+
description:
|
|
32
|
+
type: string
|
|
33
|
+
|
|
34
|
+
spec:
|
|
35
|
+
type: object
|
|
36
|
+
required: true
|
|
37
|
+
properties:
|
|
38
|
+
agents:
|
|
39
|
+
type: array
|
|
40
|
+
description: List of agents in the graph
|
|
41
|
+
items:
|
|
42
|
+
type: object
|
|
43
|
+
properties:
|
|
44
|
+
id:
|
|
45
|
+
type: string
|
|
46
|
+
description: Unique ID within graph
|
|
47
|
+
agentRef:
|
|
48
|
+
type: string
|
|
49
|
+
description: Reference to Agent resource
|
|
50
|
+
config:
|
|
51
|
+
type: object
|
|
52
|
+
description: Agent-specific configuration
|
|
53
|
+
|
|
54
|
+
edges:
|
|
55
|
+
type: array
|
|
56
|
+
description: Data flow between agents
|
|
57
|
+
items:
|
|
58
|
+
type: object
|
|
59
|
+
properties:
|
|
60
|
+
from:
|
|
61
|
+
type: string
|
|
62
|
+
description: Source agent ID
|
|
63
|
+
to:
|
|
64
|
+
type: string
|
|
65
|
+
description: Target agent ID
|
|
66
|
+
condition:
|
|
67
|
+
type: string
|
|
68
|
+
description: Optional condition for edge traversal
|
|
69
|
+
transform:
|
|
70
|
+
type: string
|
|
71
|
+
description: Optional data transformation
|
|
72
|
+
|
|
73
|
+
entrypoint:
|
|
74
|
+
type: string
|
|
75
|
+
description: Starting agent ID
|
|
76
|
+
|
|
77
|
+
errorHandling:
|
|
78
|
+
type: object
|
|
79
|
+
properties:
|
|
80
|
+
strategy:
|
|
81
|
+
type: string
|
|
82
|
+
enum: [fail-fast, continue, retry]
|
|
83
|
+
maxRetries:
|
|
84
|
+
type: integer
|
|
85
|
+
fallbackAgent:
|
|
86
|
+
type: string
|
|
87
|
+
|
|
88
|
+
examples:
|
|
89
|
+
- name: Sequential Pipeline
|
|
90
|
+
description: Simple sequential agent pipeline
|
|
91
|
+
yaml: |
|
|
92
|
+
apiVersion: ossa.ai/v0.2.7
|
|
93
|
+
kind: AgentGraph
|
|
94
|
+
metadata:
|
|
95
|
+
name: content-pipeline
|
|
96
|
+
version: 1.0.0
|
|
97
|
+
spec:
|
|
98
|
+
agents:
|
|
99
|
+
- id: researcher
|
|
100
|
+
agentRef: research-agent
|
|
101
|
+
- id: writer
|
|
102
|
+
agentRef: writing-agent
|
|
103
|
+
- id: editor
|
|
104
|
+
agentRef: editing-agent
|
|
105
|
+
edges:
|
|
106
|
+
- from: researcher
|
|
107
|
+
to: writer
|
|
108
|
+
- from: writer
|
|
109
|
+
to: editor
|
|
110
|
+
entrypoint: researcher
|
|
111
|
+
|
|
112
|
+
- name: Conditional Routing
|
|
113
|
+
description: Route based on agent output
|
|
114
|
+
yaml: |
|
|
115
|
+
apiVersion: ossa.ai/v0.2.7
|
|
116
|
+
kind: AgentGraph
|
|
117
|
+
metadata:
|
|
118
|
+
name: support-router
|
|
119
|
+
version: 1.0.0
|
|
120
|
+
spec:
|
|
121
|
+
agents:
|
|
122
|
+
- id: classifier
|
|
123
|
+
agentRef: intent-classifier
|
|
124
|
+
- id: technical
|
|
125
|
+
agentRef: technical-support
|
|
126
|
+
- id: billing
|
|
127
|
+
agentRef: billing-support
|
|
128
|
+
edges:
|
|
129
|
+
- from: classifier
|
|
130
|
+
to: technical
|
|
131
|
+
condition: output.intent == 'technical'
|
|
132
|
+
- from: classifier
|
|
133
|
+
to: billing
|
|
134
|
+
condition: output.intent == 'billing'
|
|
135
|
+
entrypoint: classifier
|