@bluefly/openstandardagents 0.2.5-RC → 0.2.8
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/.devfile.yaml +1 -1
- package/.env.example +1 -1
- 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/.version.json +2 -2
- package/.wiki-config.json +24 -0
- package/CHANGELOG.md +34 -18
- package/CODEOWNERS +75 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +176 -239
- 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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/repositories/schema.repository.d.ts +6 -1
- package/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +63 -36
- 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/migration.service.d.ts +4 -3
- package/dist/services/migration.service.d.ts.map +1 -1
- package/dist/services/migration.service.js +11 -10
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/release-automation/release.service.js +1 -1
- package/dist/services/release-automation/release.service.js.map +1 -1
- package/dist/services/release-automation/schemas/release.schema.js +1 -1
- 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.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
- 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.6-dev/ossa-0.2.5.yaml +581 -0
- 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/dist/spec/v0.2.8/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.8/README.md +72 -0
- package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/dist/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
- package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/version.d.ts +68 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +156 -0
- package/dist/utils/version.js.map +1 -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/eslint-report.json +1 -0
- package/examples/adk-integration/code-review-workflow.yml +1 -1
- package/examples/adk-integration/customer-support.yml +1 -1
- package/examples/adk-integration/data-pipeline.yml +1 -1
- package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
- package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
- package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
- package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
- package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
- package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
- package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
- package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
- package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
- package/examples/anthropic/claude-assistant.ossa.json +5 -4
- package/examples/autogen/multi-agent.ossa.json +6 -4
- package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
- package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
- package/examples/common_npm/agent-router.ossa.yaml +1 -0
- package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
- package/examples/crewai/research-team.ossa.json +14 -5
- package/examples/cursor/code-review-agent.ossa.json +21 -6
- package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
- package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
- package/examples/extensions/drupal-v1.yml +1 -1
- package/examples/extensions/kagent-v1.yml +1 -1
- package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
- package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
- package/examples/kagent/compliance-validator.ossa.yaml +1 -1
- package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
- package/examples/kagent/documentation-agent.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
- package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
- package/examples/kagent/security-scanner.ossa.yaml +1 -1
- 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/migration-guides/from-langchain-to-ossa.yaml +4 -4
- package/examples/multi-agent/README.md +74 -0
- package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
- package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
- package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
- package/examples/openai/basic-agent.ossa.yaml +1 -1
- package/examples/openai/multi-tool-agent.ossa.json +33 -10
- package/examples/openai/swarm-agent.ossa.json +18 -5
- package/examples/production/document-analyzer-openai.yml +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/spec-examples/audit-agent.yml +1 -1
- package/examples/spec-examples/chat-agent.yml +1 -1
- package/examples/spec-examples/compliance-agent.yml +1 -1
- package/examples/spec-examples/monitoring-agent.yml +1 -1
- package/examples/spec-examples/workflow-agent.yml +1 -1
- package/examples/templates/ossa-compliance.yaml +1 -1
- package/examples/vercel/edge-agent.ossa.json +5 -4
- package/gl-code-quality-report.json +62 -0
- package/llms-ctx-full.txt +39 -0
- package/llms-ctx.txt +39 -0
- package/llms.txt +47 -0
- package/openapi/github-sync.yaml +115 -0
- package/package.json +26 -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/eslint-to-codequality.cjs +34 -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-llms-ctx.sh +17 -0
- package/scripts/generate-schema-docs.ts +317 -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 +32 -0
- package/scripts/sync-wiki.sh +50 -0
- package/scripts/validate-all.js +127 -0
- package/scripts/validate-schema.ts +2 -1
- 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.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
- 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.yaml +581 -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/spec/v0.2.8/CHANGELOG.md +401 -0
- package/spec/v0.2.8/README.md +72 -0
- package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
- package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/test-results/junit.xml +299 -0
- 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/bin/validate-ossa-0.2.5-RC.ts +0 -244
- package/docs/issue-19-completion-summary.md +0 -648
- package/docs/issue-19-validation.md +0 -351
- package/scripts/lib/exec.ts +0 -37
- package/scripts/lib/file-ops.ts +0 -58
- package/scripts/lib/version.ts +0 -83
- package/website/.lighthouserc.ts +0 -24
- package/website/.prettierrc +0 -10
- package/website/Dockerfile +0 -30
- package/website/app/about/page.tsx +0 -295
- package/website/app/blog/[slug]/page.tsx +0 -208
- package/website/app/blog/page.tsx +0 -249
- package/website/app/design-guide/page.tsx +0 -511
- package/website/app/docs/[[...slug]]/page.tsx +0 -847
- package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
- package/website/app/ecosystem/page.tsx +0 -375
- package/website/app/examples/page.tsx +0 -133
- package/website/app/globals.scss +0 -135
- package/website/app/layout.tsx +0 -106
- package/website/app/license/page.tsx +0 -183
- package/website/app/not-found.tsx +0 -18
- package/website/app/page.tsx +0 -474
- package/website/app/playground/page.tsx +0 -487
- package/website/app/robots.ts +0 -19
- package/website/app/rss.xml/route.ts +0 -74
- package/website/app/schema/page.tsx +0 -1001
- package/website/app/sitemap.ts +0 -56
- package/website/app/specification/page.tsx +0 -287
- package/website/components/InstallCommand.tsx +0 -96
- package/website/components/Logo.tsx +0 -97
- package/website/components/StructuredData.tsx +0 -65
- package/website/components/docs/DocsSearch.tsx +0 -104
- package/website/components/docs/DocsSidebar.tsx +0 -155
- package/website/components/docs/MarkdownContent.tsx +0 -401
- package/website/components/docs/VersionSelector.tsx +0 -105
- package/website/components/examples/ExamplesViewer.tsx +0 -293
- package/website/components/layout/Footer.tsx +0 -116
- package/website/components/layout/Header.tsx +0 -168
- package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
- package/website/components/schema/SchemaExplorer.tsx +0 -213
- package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
- package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
- package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
- package/website/content/blog/introducing-ossa-framework.md +0 -328
- package/website/content/blog/ossa-production-results.md +0 -279
- package/website/content/blog/welcome-to-ossa.md +0 -43
- package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
- package/website/content/docs/00-HOME.md +0 -153
- package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +0 -107
- package/website/content/docs/Examples.md +0 -71
- package/website/content/docs/OpenAPI-Extensions.md +0 -934
- package/website/content/docs/adapters/openai-adapter.md +0 -693
- package/website/content/docs/architecture/execution-flow.md +0 -335
- package/website/content/docs/architecture/multi-agent-systems.md +0 -737
- package/website/content/docs/architecture/overview.md +0 -121
- package/website/content/docs/architecture/stack-integration.md +0 -461
- package/website/content/docs/changelog.md +0 -246
- package/website/content/docs/contributing.md +0 -599
- package/website/content/docs/core-concepts/Project-Structure.md +0 -348
- package/website/content/docs/ecosystem/framework-support.md +0 -819
- package/website/content/docs/ecosystem/overview.md +0 -366
- package/website/content/docs/examples/AIFlow-Framework-Integration-with-OSSA.md +0 -107
- 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/for-audiences/Students-Researchers.md +0 -122
- 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/getting-started/Installation.md +0 -155
- package/website/content/docs/getting-started/index.md +0 -92
- package/website/content/docs/getting-started/running-agents.md +0 -309
- package/website/content/docs/getting-started.md +0 -91
- package/website/content/docs/integrations/aiflow.md +0 -104
- package/website/content/docs/integrations/drupal.md +0 -105
- package/website/content/docs/migration-guides/00-INDEX.md +0 -76
- package/website/content/docs/migration-guides/README.md +0 -133
- package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
- package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
- package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
- package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
- package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
- package/website/content/docs/migration-guides/index.md +0 -133
- package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
- package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
- package/website/content/docs/migration-guides/migration-manifest.json +0 -64
- package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
- package/website/content/docs/openapi-extensions/examples.md +0 -550
- package/website/content/docs/openapi-extensions/index.md +0 -551
- package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
- package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
- package/website/content/docs/ossa-compliant-badge.md +0 -251
- package/website/content/docs/pre-release/index.md +0 -175
- package/website/content/docs/quick-reference.md +0 -17
- package/website/content/docs/readme.md +0 -35
- package/website/content/docs/schema-reference/agent-spec.md +0 -406
- package/website/content/docs/schema-reference/autonomy.md +0 -568
- package/website/content/docs/schema-reference/constraints.md +0 -543
- package/website/content/docs/schema-reference/index.md +0 -176
- package/website/content/docs/schema-reference/llm-config.md +0 -445
- package/website/content/docs/schema-reference/observability.md +0 -654
- package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
- package/website/content/docs/schema-reference/taxonomy.md +0 -509
- package/website/content/docs/schema-reference/tools.md +0 -628
- package/website/content/docs/templates/blog-post.md +0 -43
- package/website/content/docs/use-cases/00-index.md +0 -395
- package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
- package/website/content/docs/use-cases/customer-support.md +0 -1234
- package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
- package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
- package/website/content/docs/versioning.md +0 -288
- package/website/lib/version.ts +0 -35
- package/website/lib/versions.json +0 -78
- package/website/next.config.ts +0 -18
- package/website/nginx.conf +0 -32
- package/website/package-lock.json +0 -9679
- package/website/package.json +0 -59
- package/website/postcss.config.mjs +0 -9
- package/website/scripts/fetch-versions.js +0 -166
- package/website/scripts/generate-examples-index.js +0 -163
- package/website/scripts/merge-docs-to-wiki.ts +0 -207
- package/website/scripts/sync-version.js +0 -72
- package/website/scripts/sync-wiki.ts +0 -322
- package/website/scripts/upload-wiki.ts +0 -199
- package/website/styles/_variables.scss +0 -36
- package/website/tailwind.config.ts +0 -136
- /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
|
@@ -1,737 +0,0 @@
|
|
|
1
|
-
# Multi-Agent Systems Architecture
|
|
2
|
-
|
|
3
|
-
How multiple OSSA agents discover, communicate, and coordinate with each other.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
OSSA enables **multi-agent systems** where specialized agents collaborate to solve complex problems. Just as microservices communicate via REST APIs, OSSA agents communicate via standardized manifests and messaging protocols.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Multi-Agent System Topology
|
|
14
|
-
|
|
15
|
-
```mermaid
|
|
16
|
-
graph TB
|
|
17
|
-
subgraph "Agent Registry"
|
|
18
|
-
Registry[OSSA Agent Registry<br/>Discovery Service]
|
|
19
|
-
Manifests[(Agent Manifests<br/>customer.ossa.yaml<br/>sales.ossa.yaml<br/>support.ossa.yaml)]
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
subgraph "Orchestrator Layer"
|
|
23
|
-
Coordinator[Agent Coordinator]
|
|
24
|
-
Router[Message Router]
|
|
25
|
-
Queue[Message Queue<br/>RabbitMQ | Redis]
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
subgraph "Agent Layer"
|
|
29
|
-
CustomerAgent[Customer Agent<br/>Handles inquiries]
|
|
30
|
-
SalesAgent[Sales Agent<br/>Processes orders]
|
|
31
|
-
SupportAgent[Support Agent<br/>Resolves issues]
|
|
32
|
-
AnalyticsAgent[Analytics Agent<br/>Generates reports]
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
subgraph "Shared Resources"
|
|
36
|
-
Memory[(Shared Memory<br/>PostgreSQL)]
|
|
37
|
-
Vector[(Vector Store<br/>Pinecone)]
|
|
38
|
-
Cache[(Cache<br/>Redis)]
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
Registry --> Coordinator
|
|
42
|
-
Manifests --> Registry
|
|
43
|
-
|
|
44
|
-
Coordinator --> Router
|
|
45
|
-
Router --> Queue
|
|
46
|
-
|
|
47
|
-
Queue --> CustomerAgent
|
|
48
|
-
Queue --> SalesAgent
|
|
49
|
-
Queue --> SupportAgent
|
|
50
|
-
Queue --> AnalyticsAgent
|
|
51
|
-
|
|
52
|
-
CustomerAgent --> Memory
|
|
53
|
-
SalesAgent --> Memory
|
|
54
|
-
SupportAgent --> Memory
|
|
55
|
-
AnalyticsAgent --> Memory
|
|
56
|
-
|
|
57
|
-
CustomerAgent --> Vector
|
|
58
|
-
SalesAgent --> Vector
|
|
59
|
-
|
|
60
|
-
CustomerAgent --> Cache
|
|
61
|
-
SalesAgent --> Cache
|
|
62
|
-
SupportAgent --> Cache
|
|
63
|
-
|
|
64
|
-
CustomerAgent -.->|Delegate| SalesAgent
|
|
65
|
-
CustomerAgent -.->|Escalate| SupportAgent
|
|
66
|
-
SalesAgent -.->|Report| AnalyticsAgent
|
|
67
|
-
|
|
68
|
-
style Registry fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff
|
|
69
|
-
style Manifests fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Agent Discovery Flow
|
|
75
|
-
|
|
76
|
-
```mermaid
|
|
77
|
-
sequenceDiagram
|
|
78
|
-
autonumber
|
|
79
|
-
participant CustomerAgent as Customer Agent
|
|
80
|
-
participant Registry as Agent Registry
|
|
81
|
-
participant SalesAgent as Sales Agent
|
|
82
|
-
|
|
83
|
-
CustomerAgent->>Registry: Query: "Find agent for 'process_order'"
|
|
84
|
-
Note over Registry: Search manifests<br/>by capability
|
|
85
|
-
|
|
86
|
-
Registry->>Registry: Load sales.ossa.yaml
|
|
87
|
-
Note over Registry: apiVersion: ossa/v0.2.x<br/>capabilities:<br/> - process_order
|
|
88
|
-
|
|
89
|
-
Registry-->>CustomerAgent: Return Agent Info
|
|
90
|
-
Note over Registry: {<br/> name: "sales-agent",<br/> endpoint: "/api/sales",<br/> manifest: {...}<br/>}
|
|
91
|
-
|
|
92
|
-
CustomerAgent->>SalesAgent: Delegate Task
|
|
93
|
-
Note over CustomerAgent,SalesAgent: {<br/> task: "process_order",<br/> data: {...}<br/>}
|
|
94
|
-
|
|
95
|
-
SalesAgent-->>CustomerAgent: Task Result
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Key Concepts:**
|
|
99
|
-
- **Agent Registry**: Central discovery service for OSSA agents
|
|
100
|
-
- **Capability Matching**: Find agents by what they can do
|
|
101
|
-
- **Manifest-Driven**: Agent capabilities defined in OSSA manifests
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Agent-to-Agent Communication
|
|
106
|
-
|
|
107
|
-
### Pattern 1: Direct Delegation
|
|
108
|
-
|
|
109
|
-
```mermaid
|
|
110
|
-
sequenceDiagram
|
|
111
|
-
participant User
|
|
112
|
-
participant AgentA as Customer Agent
|
|
113
|
-
participant AgentB as Sales Agent
|
|
114
|
-
participant LLM as LLM Provider
|
|
115
|
-
|
|
116
|
-
User->>AgentA: "I want to buy 5 widgets"
|
|
117
|
-
AgentA->>LLM: Process Intent
|
|
118
|
-
LLM-->>AgentA: Intent: purchase_order
|
|
119
|
-
|
|
120
|
-
Note over AgentA: Check capabilities<br/>in manifest
|
|
121
|
-
|
|
122
|
-
AgentA->>AgentA: Load sales.ossa.yaml
|
|
123
|
-
Note over AgentA: Found: Sales Agent<br/>handles orders
|
|
124
|
-
|
|
125
|
-
AgentA->>AgentB: Delegate Task
|
|
126
|
-
Note over AgentA,AgentB: {<br/> action: "create_order",<br/> items: ["widget"],<br/> quantity: 5<br/>}
|
|
127
|
-
|
|
128
|
-
AgentB->>LLM: Process Order
|
|
129
|
-
LLM->>AgentB: Generate Confirmation
|
|
130
|
-
|
|
131
|
-
AgentB-->>AgentA: Order Created
|
|
132
|
-
Note over AgentB: {<br/> orderId: "12345",<br/> total: "$50.00"<br/>}
|
|
133
|
-
|
|
134
|
-
AgentA->>User: "Order #12345 created for $50"
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
**OSSA Manifest Example (Customer Agent):**
|
|
138
|
-
```yaml
|
|
139
|
-
apiVersion: ossa/v0.2.x
|
|
140
|
-
kind: Agent
|
|
141
|
-
metadata:
|
|
142
|
-
name: customer-agent
|
|
143
|
-
spec:
|
|
144
|
-
role: You are a customer service agent
|
|
145
|
-
capabilities:
|
|
146
|
-
- handle_inquiries
|
|
147
|
-
- delegate_to_sales
|
|
148
|
-
delegationRules:
|
|
149
|
-
- intent: purchase_order
|
|
150
|
-
targetAgent: sales-agent
|
|
151
|
-
method: direct
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
### Pattern 2: Event-Driven Coordination
|
|
157
|
-
|
|
158
|
-
```mermaid
|
|
159
|
-
sequenceDiagram
|
|
160
|
-
participant AgentA as Order Agent
|
|
161
|
-
participant Queue as Message Queue
|
|
162
|
-
participant AgentB as Inventory Agent
|
|
163
|
-
participant AgentC as Notification Agent
|
|
164
|
-
|
|
165
|
-
AgentA->>Queue: Publish Event
|
|
166
|
-
Note over Queue: Event: order_created<br/>{orderId: 12345}
|
|
167
|
-
|
|
168
|
-
Queue->>AgentB: Consume Event
|
|
169
|
-
Queue->>AgentC: Consume Event
|
|
170
|
-
|
|
171
|
-
par Process in Parallel
|
|
172
|
-
AgentB->>AgentB: Update Inventory
|
|
173
|
-
Note over AgentB: Reduce stock by qty
|
|
174
|
-
AgentB->>Queue: Publish: inventory_updated
|
|
175
|
-
and
|
|
176
|
-
AgentC->>AgentC: Send Email
|
|
177
|
-
Note over AgentC: Email customer
|
|
178
|
-
AgentC->>Queue: Publish: notification_sent
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
Queue->>AgentA: Events: inventory_updated, notification_sent
|
|
182
|
-
AgentA->>AgentA: Mark Order Complete
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
**OSSA Manifest Example (Order Agent):**
|
|
186
|
-
```yaml
|
|
187
|
-
apiVersion: ossa/v0.2.x
|
|
188
|
-
kind: Agent
|
|
189
|
-
metadata:
|
|
190
|
-
name: order-agent
|
|
191
|
-
spec:
|
|
192
|
-
role: You process customer orders
|
|
193
|
-
events:
|
|
194
|
-
publishes:
|
|
195
|
-
- name: order_created
|
|
196
|
-
schema:
|
|
197
|
-
type: object
|
|
198
|
-
properties:
|
|
199
|
-
orderId: { type: string }
|
|
200
|
-
items: { type: array }
|
|
201
|
-
subscribes:
|
|
202
|
-
- name: inventory_updated
|
|
203
|
-
handler: update_order_status
|
|
204
|
-
- name: notification_sent
|
|
205
|
-
handler: mark_notified
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
### Pattern 3: Hierarchical Coordination
|
|
211
|
-
|
|
212
|
-
```mermaid
|
|
213
|
-
graph TB
|
|
214
|
-
Supervisor[Supervisor Agent<br/>Orchestrates workflow]
|
|
215
|
-
|
|
216
|
-
Supervisor --> Worker1[Research Agent<br/>Gathers data]
|
|
217
|
-
Supervisor --> Worker2[Analysis Agent<br/>Processes data]
|
|
218
|
-
Supervisor --> Worker3[Report Agent<br/>Generates output]
|
|
219
|
-
|
|
220
|
-
Worker1 --> Supervisor
|
|
221
|
-
Worker2 --> Supervisor
|
|
222
|
-
Worker3 --> Supervisor
|
|
223
|
-
|
|
224
|
-
Supervisor --> Result[Final Result<br/>to User]
|
|
225
|
-
|
|
226
|
-
style Supervisor fill:#E74C3C,stroke:#333,stroke-width:2px,color:#fff
|
|
227
|
-
style Worker1 fill:#3498DB,stroke:#333,stroke-width:1px,color:#fff
|
|
228
|
-
style Worker2 fill:#3498DB,stroke:#333,stroke-width:1px,color:#fff
|
|
229
|
-
style Worker3 fill:#3498DB,stroke:#333,stroke-width:1px,color:#fff
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
**Workflow:**
|
|
233
|
-
1. Supervisor receives complex task
|
|
234
|
-
2. Breaks task into subtasks
|
|
235
|
-
3. Assigns subtasks to worker agents
|
|
236
|
-
4. Collects results
|
|
237
|
-
5. Synthesizes final response
|
|
238
|
-
|
|
239
|
-
**OSSA Manifest Example (Supervisor):**
|
|
240
|
-
```yaml
|
|
241
|
-
apiVersion: ossa/v0.2.x
|
|
242
|
-
kind: Agent
|
|
243
|
-
metadata:
|
|
244
|
-
name: supervisor-agent
|
|
245
|
-
spec:
|
|
246
|
-
role: You coordinate research workflows
|
|
247
|
-
workerAgents:
|
|
248
|
-
- name: research-agent
|
|
249
|
-
capabilities: [gather_data, web_search]
|
|
250
|
-
- name: analysis-agent
|
|
251
|
-
capabilities: [analyze_data, statistics]
|
|
252
|
-
- name: report-agent
|
|
253
|
-
capabilities: [generate_report, format_output]
|
|
254
|
-
workflow:
|
|
255
|
-
- step: research
|
|
256
|
-
agent: research-agent
|
|
257
|
-
output: raw_data
|
|
258
|
-
- step: analyze
|
|
259
|
-
agent: analysis-agent
|
|
260
|
-
input: raw_data
|
|
261
|
-
output: insights
|
|
262
|
-
- step: report
|
|
263
|
-
agent: report-agent
|
|
264
|
-
input: insights
|
|
265
|
-
output: final_report
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
## Agent Capability Discovery
|
|
271
|
-
|
|
272
|
-
### Capability-Based Routing
|
|
273
|
-
|
|
274
|
-
```mermaid
|
|
275
|
-
graph LR
|
|
276
|
-
Task[User Task:<br/>Analyze sales data] --> Router[Agent Router]
|
|
277
|
-
|
|
278
|
-
Router --> Registry[Query Registry<br/>capability=analytics]
|
|
279
|
-
|
|
280
|
-
Registry --> Check1{Check Agent 1<br/>customer-agent}
|
|
281
|
-
Registry --> Check2{Check Agent 2<br/>analytics-agent}
|
|
282
|
-
Registry --> Check3{Check Agent 3<br/>support-agent}
|
|
283
|
-
|
|
284
|
-
Check1 -->|No match| X1[Skip]
|
|
285
|
-
Check2 -->|Match!| Select[Select Analytics Agent]
|
|
286
|
-
Check3 -->|No match| X2[Skip]
|
|
287
|
-
|
|
288
|
-
Select --> Execute[Execute Task]
|
|
289
|
-
|
|
290
|
-
style Registry fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff
|
|
291
|
-
style Select fill:#2ECC71,stroke:#333,stroke-width:2px,color:#fff
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
**How it works:**
|
|
295
|
-
1. Task comes in with required capability (e.g., "analytics")
|
|
296
|
-
2. Router queries agent registry
|
|
297
|
-
3. Registry scans all OSSA manifests
|
|
298
|
-
4. Returns agents with matching capabilities
|
|
299
|
-
5. Router selects best agent (by priority, load, etc.)
|
|
300
|
-
|
|
301
|
-
**OSSA Manifest with Capabilities:**
|
|
302
|
-
```yaml
|
|
303
|
-
apiVersion: ossa/v0.2.x
|
|
304
|
-
kind: Agent
|
|
305
|
-
metadata:
|
|
306
|
-
name: analytics-agent
|
|
307
|
-
version: 1.0.0
|
|
308
|
-
spec:
|
|
309
|
-
role: You analyze business data
|
|
310
|
-
capabilities:
|
|
311
|
-
- name: analyze_sales_data
|
|
312
|
-
description: Analyze sales trends and metrics
|
|
313
|
-
priority: high
|
|
314
|
-
- name: generate_charts
|
|
315
|
-
description: Create data visualizations
|
|
316
|
-
priority: medium
|
|
317
|
-
- name: forecast_revenue
|
|
318
|
-
description: Predict future revenue
|
|
319
|
-
priority: high
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
---
|
|
323
|
-
|
|
324
|
-
## Multi-Agent Communication Protocols
|
|
325
|
-
|
|
326
|
-
### Protocol 1: RESTful Agent Communication
|
|
327
|
-
|
|
328
|
-
```yaml
|
|
329
|
-
# Agent A sends HTTP request to Agent B
|
|
330
|
-
POST /api/agents/sales-agent/tasks
|
|
331
|
-
Content-Type: application/json
|
|
332
|
-
X-OSSA-Agent: customer-agent
|
|
333
|
-
X-OSSA-Version: v0.2.x
|
|
334
|
-
|
|
335
|
-
{
|
|
336
|
-
"task": "create_order",
|
|
337
|
-
"parameters": {
|
|
338
|
-
"customerId": "C123",
|
|
339
|
-
"items": [{"sku": "W001", "quantity": 5}]
|
|
340
|
-
},
|
|
341
|
-
"context": {
|
|
342
|
-
"conversationId": "conv-456",
|
|
343
|
-
"userId": "user-789"
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
**Response:**
|
|
349
|
-
```json
|
|
350
|
-
{
|
|
351
|
-
"status": "success",
|
|
352
|
-
"result": {
|
|
353
|
-
"orderId": "12345",
|
|
354
|
-
"total": 50.00
|
|
355
|
-
},
|
|
356
|
-
"metadata": {
|
|
357
|
-
"agent": "sales-agent",
|
|
358
|
-
"executionTime": 1230
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
---
|
|
364
|
-
|
|
365
|
-
### Protocol 2: Message Queue (Async)
|
|
366
|
-
|
|
367
|
-
```yaml
|
|
368
|
-
# Agent publishes to queue
|
|
369
|
-
Message:
|
|
370
|
-
exchange: ossa.agents
|
|
371
|
-
routingKey: order.created
|
|
372
|
-
body:
|
|
373
|
-
event: order_created
|
|
374
|
-
agent: order-agent
|
|
375
|
-
data:
|
|
376
|
-
orderId: "12345"
|
|
377
|
-
customerId: "C123"
|
|
378
|
-
timestamp: "2024-01-15T10:30:00Z"
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
**Consumer (Inventory Agent):**
|
|
382
|
-
```yaml
|
|
383
|
-
# Subscribes to order.created events
|
|
384
|
-
Subscription:
|
|
385
|
-
queue: inventory-updates
|
|
386
|
-
binding:
|
|
387
|
-
exchange: ossa.agents
|
|
388
|
-
routingKey: order.created
|
|
389
|
-
handler: update_inventory
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
---
|
|
393
|
-
|
|
394
|
-
### Protocol 3: Shared Memory
|
|
395
|
-
|
|
396
|
-
```python
|
|
397
|
-
# Agent A writes to shared memory
|
|
398
|
-
shared_memory.set(
|
|
399
|
-
key="task:order-12345",
|
|
400
|
-
value={
|
|
401
|
-
"status": "processing",
|
|
402
|
-
"assignedTo": "inventory-agent",
|
|
403
|
-
"createdBy": "order-agent",
|
|
404
|
-
"data": {...}
|
|
405
|
-
},
|
|
406
|
-
ttl=3600 # 1 hour
|
|
407
|
-
)
|
|
408
|
-
|
|
409
|
-
# Agent B reads from shared memory
|
|
410
|
-
task = shared_memory.get("task:order-12345")
|
|
411
|
-
# Process task...
|
|
412
|
-
shared_memory.update("task:order-12345", {"status": "completed"})
|
|
413
|
-
```
|
|
414
|
-
|
|
415
|
-
---
|
|
416
|
-
|
|
417
|
-
## Agent Coordination Patterns
|
|
418
|
-
|
|
419
|
-
### Pattern 1: Pipeline (Sequential)
|
|
420
|
-
|
|
421
|
-
```mermaid
|
|
422
|
-
graph LR
|
|
423
|
-
A[Agent A<br/>Extract Data] --> B[Agent B<br/>Transform Data]
|
|
424
|
-
B --> C[Agent C<br/>Load Data]
|
|
425
|
-
C --> D[Result]
|
|
426
|
-
|
|
427
|
-
style A fill:#3498DB,stroke:#333,stroke-width:1px,color:#fff
|
|
428
|
-
style B fill:#3498DB,stroke:#333,stroke-width:1px,color:#fff
|
|
429
|
-
style C fill:#3498DB,stroke:#333,stroke-width:1px,color:#fff
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
**Use case:** ETL workflows, document processing pipelines
|
|
433
|
-
|
|
434
|
-
---
|
|
435
|
-
|
|
436
|
-
### Pattern 2: Scatter-Gather (Parallel)
|
|
437
|
-
|
|
438
|
-
```mermaid
|
|
439
|
-
graph TB
|
|
440
|
-
Coordinator[Coordinator Agent]
|
|
441
|
-
|
|
442
|
-
Coordinator -->|Scatter| A1[Agent 1]
|
|
443
|
-
Coordinator -->|Scatter| A2[Agent 2]
|
|
444
|
-
Coordinator -->|Scatter| A3[Agent 3]
|
|
445
|
-
|
|
446
|
-
A1 -->|Gather| Result[Combined Result]
|
|
447
|
-
A2 -->|Gather| Result
|
|
448
|
-
A3 -->|Gather| Result
|
|
449
|
-
|
|
450
|
-
style Coordinator fill:#E74C3C,stroke:#333,stroke-width:2px,color:#fff
|
|
451
|
-
```
|
|
452
|
-
|
|
453
|
-
**Use case:** Research tasks, competitive analysis, multi-source data gathering
|
|
454
|
-
|
|
455
|
-
---
|
|
456
|
-
|
|
457
|
-
### Pattern 3: Request-Reply (Synchronous)
|
|
458
|
-
|
|
459
|
-
```mermaid
|
|
460
|
-
sequenceDiagram
|
|
461
|
-
participant A as Agent A
|
|
462
|
-
participant B as Agent B
|
|
463
|
-
|
|
464
|
-
A->>B: Request (sync)
|
|
465
|
-
Note over B: Process request
|
|
466
|
-
B-->>A: Reply
|
|
467
|
-
Note over A: Continue with result
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
**Use case:** API calls, database queries, simple delegations
|
|
471
|
-
|
|
472
|
-
---
|
|
473
|
-
|
|
474
|
-
### Pattern 4: Publish-Subscribe (Async)
|
|
475
|
-
|
|
476
|
-
```mermaid
|
|
477
|
-
graph TB
|
|
478
|
-
Publisher[Publisher Agent]
|
|
479
|
-
|
|
480
|
-
Publisher -->|Publish| Topic[Event Topic<br/>order.created]
|
|
481
|
-
|
|
482
|
-
Topic --> Sub1[Subscriber 1<br/>Inventory]
|
|
483
|
-
Topic --> Sub2[Subscriber 2<br/>Analytics]
|
|
484
|
-
Topic --> Sub3[Subscriber 3<br/>Notifications]
|
|
485
|
-
|
|
486
|
-
style Publisher fill:#E74C3C,stroke:#333,stroke-width:2px,color:#fff
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
**Use case:** Event-driven systems, real-time updates, loose coupling
|
|
490
|
-
|
|
491
|
-
---
|
|
492
|
-
|
|
493
|
-
## Multi-Agent System Example
|
|
494
|
-
|
|
495
|
-
### E-Commerce Platform with 5 Agents
|
|
496
|
-
|
|
497
|
-
```mermaid
|
|
498
|
-
graph TB
|
|
499
|
-
User[User] --> Frontend[Frontend Agent<br/>Handles UI interactions]
|
|
500
|
-
|
|
501
|
-
Frontend --> Customer[Customer Agent<br/>Manages accounts]
|
|
502
|
-
Frontend --> Product[Product Agent<br/>Searches catalog]
|
|
503
|
-
Frontend --> Order[Order Agent<br/>Processes orders]
|
|
504
|
-
|
|
505
|
-
Order --> Inventory[Inventory Agent<br/>Manages stock]
|
|
506
|
-
Order --> Payment[Payment Agent<br/>Processes payments]
|
|
507
|
-
|
|
508
|
-
Customer --> Analytics[Analytics Agent<br/>Tracks behavior]
|
|
509
|
-
Product --> Analytics
|
|
510
|
-
Order --> Analytics
|
|
511
|
-
|
|
512
|
-
subgraph "OSSA Manifests"
|
|
513
|
-
M1[frontend.ossa.yaml]
|
|
514
|
-
M2[customer.ossa.yaml]
|
|
515
|
-
M3[product.ossa.yaml]
|
|
516
|
-
M4[order.ossa.yaml]
|
|
517
|
-
M5[inventory.ossa.yaml]
|
|
518
|
-
M6[payment.ossa.yaml]
|
|
519
|
-
M7[analytics.ossa.yaml]
|
|
520
|
-
end
|
|
521
|
-
|
|
522
|
-
Frontend -.-> M1
|
|
523
|
-
Customer -.-> M2
|
|
524
|
-
Product -.-> M3
|
|
525
|
-
Order -.-> M4
|
|
526
|
-
Inventory -.-> M5
|
|
527
|
-
Payment -.-> M6
|
|
528
|
-
Analytics -.-> M7
|
|
529
|
-
|
|
530
|
-
style M1 fill:#4A90E2,stroke:#333,stroke-width:1px,color:#fff
|
|
531
|
-
style M2 fill:#4A90E2,stroke:#333,stroke-width:1px,color:#fff
|
|
532
|
-
style M3 fill:#4A90E2,stroke:#333,stroke-width:1px,color:#fff
|
|
533
|
-
style M4 fill:#4A90E2,stroke:#333,stroke-width:1px,color:#fff
|
|
534
|
-
style M5 fill:#4A90E2,stroke:#333,stroke-width:1px,color:#fff
|
|
535
|
-
style M6 fill:#4A90E2,stroke:#333,stroke-width:1px,color:#fff
|
|
536
|
-
style M7 fill:#4A90E2,stroke:#333,stroke-width:1px,color:#fff
|
|
537
|
-
```
|
|
538
|
-
|
|
539
|
-
**Flow:**
|
|
540
|
-
1. User interacts with Frontend Agent
|
|
541
|
-
2. Frontend Agent delegates to specialized agents (Customer, Product, Order)
|
|
542
|
-
3. Order Agent coordinates with Inventory and Payment agents
|
|
543
|
-
4. Analytics Agent passively observes all interactions
|
|
544
|
-
|
|
545
|
-
**Benefits:**
|
|
546
|
-
- ✅ Each agent has a single responsibility
|
|
547
|
-
- ✅ Agents can be developed/deployed independently
|
|
548
|
-
- ✅ Easy to add new agents (e.g., Shipping Agent)
|
|
549
|
-
- ✅ Scales horizontally (run multiple instances)
|
|
550
|
-
|
|
551
|
-
---
|
|
552
|
-
|
|
553
|
-
## Agent Registry Implementation
|
|
554
|
-
|
|
555
|
-
### Registry Schema
|
|
556
|
-
|
|
557
|
-
```yaml
|
|
558
|
-
# Agent Registry Entry
|
|
559
|
-
agents:
|
|
560
|
-
- id: customer-agent-001
|
|
561
|
-
name: customer-agent
|
|
562
|
-
version: 1.0.0
|
|
563
|
-
manifest: s3://manifests/customer.ossa.yaml
|
|
564
|
-
endpoint: https://api.example.com/agents/customer
|
|
565
|
-
capabilities:
|
|
566
|
-
- handle_inquiries
|
|
567
|
-
- manage_accounts
|
|
568
|
-
status: active
|
|
569
|
-
healthCheck: https://api.example.com/agents/customer/health
|
|
570
|
-
metadata:
|
|
571
|
-
team: customer-experience
|
|
572
|
-
environment: production
|
|
573
|
-
|
|
574
|
-
- id: sales-agent-001
|
|
575
|
-
name: sales-agent
|
|
576
|
-
version: 2.1.0
|
|
577
|
-
manifest: s3://manifests/sales.ossa.yaml
|
|
578
|
-
endpoint: https://api.example.com/agents/sales
|
|
579
|
-
capabilities:
|
|
580
|
-
- process_orders
|
|
581
|
-
- generate_quotes
|
|
582
|
-
status: active
|
|
583
|
-
healthCheck: https://api.example.com/agents/sales/health
|
|
584
|
-
metadata:
|
|
585
|
-
team: sales-ops
|
|
586
|
-
environment: production
|
|
587
|
-
```
|
|
588
|
-
|
|
589
|
-
**Registry API:**
|
|
590
|
-
```bash
|
|
591
|
-
# Discover agents by capability
|
|
592
|
-
GET /registry/agents?capability=process_orders
|
|
593
|
-
|
|
594
|
-
# Get agent manifest
|
|
595
|
-
GET /registry/agents/sales-agent-001/manifest
|
|
596
|
-
|
|
597
|
-
# Register new agent
|
|
598
|
-
POST /registry/agents
|
|
599
|
-
Body: { name, version, manifest, endpoint, capabilities }
|
|
600
|
-
|
|
601
|
-
# Update agent status
|
|
602
|
-
PATCH /registry/agents/sales-agent-001
|
|
603
|
-
Body: { status: "maintenance" }
|
|
604
|
-
```
|
|
605
|
-
|
|
606
|
-
---
|
|
607
|
-
|
|
608
|
-
## Security in Multi-Agent Systems
|
|
609
|
-
|
|
610
|
-
### Agent Authentication
|
|
611
|
-
|
|
612
|
-
```yaml
|
|
613
|
-
# OSSA Manifest with Auth
|
|
614
|
-
apiVersion: ossa/v0.2.x
|
|
615
|
-
kind: Agent
|
|
616
|
-
metadata:
|
|
617
|
-
name: secure-agent
|
|
618
|
-
spec:
|
|
619
|
-
security:
|
|
620
|
-
authentication:
|
|
621
|
-
type: jwt
|
|
622
|
-
issuer: https://auth.example.com
|
|
623
|
-
audience: ossa-agents
|
|
624
|
-
authorization:
|
|
625
|
-
allowedAgents:
|
|
626
|
-
- customer-agent
|
|
627
|
-
- sales-agent
|
|
628
|
-
deniedAgents:
|
|
629
|
-
- untrusted-agent
|
|
630
|
-
encryption:
|
|
631
|
-
inTransit: tls1.3
|
|
632
|
-
atRest: aes256
|
|
633
|
-
```
|
|
634
|
-
|
|
635
|
-
### Message Signing
|
|
636
|
-
|
|
637
|
-
```python
|
|
638
|
-
# Agent A signs message to Agent B
|
|
639
|
-
message = {
|
|
640
|
-
"task": "create_order",
|
|
641
|
-
"data": {...}
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
signature = sign_message(message, private_key)
|
|
645
|
-
|
|
646
|
-
request = {
|
|
647
|
-
"message": message,
|
|
648
|
-
"signature": signature,
|
|
649
|
-
"agent": "customer-agent",
|
|
650
|
-
"timestamp": "2024-01-15T10:30:00Z"
|
|
651
|
-
}
|
|
652
|
-
|
|
653
|
-
# Agent B verifies signature
|
|
654
|
-
if verify_signature(request, public_key):
|
|
655
|
-
process_message(request["message"])
|
|
656
|
-
else:
|
|
657
|
-
raise AuthenticationError("Invalid signature")
|
|
658
|
-
```
|
|
659
|
-
|
|
660
|
-
---
|
|
661
|
-
|
|
662
|
-
## Monitoring Multi-Agent Systems
|
|
663
|
-
|
|
664
|
-
### Observability Dashboard
|
|
665
|
-
|
|
666
|
-
```mermaid
|
|
667
|
-
graph TB
|
|
668
|
-
subgraph "Agents"
|
|
669
|
-
A1[Customer Agent]
|
|
670
|
-
A2[Sales Agent]
|
|
671
|
-
A3[Support Agent]
|
|
672
|
-
end
|
|
673
|
-
|
|
674
|
-
subgraph "Observability Layer"
|
|
675
|
-
Metrics[Metrics Collector<br/>Prometheus]
|
|
676
|
-
Logs[Log Aggregator<br/>Loki]
|
|
677
|
-
Traces[Trace Collector<br/>Jaeger]
|
|
678
|
-
end
|
|
679
|
-
|
|
680
|
-
subgraph "Visualization"
|
|
681
|
-
Grafana[Grafana Dashboard]
|
|
682
|
-
end
|
|
683
|
-
|
|
684
|
-
A1 --> Metrics
|
|
685
|
-
A2 --> Metrics
|
|
686
|
-
A3 --> Metrics
|
|
687
|
-
|
|
688
|
-
A1 --> Logs
|
|
689
|
-
A2 --> Logs
|
|
690
|
-
A3 --> Logs
|
|
691
|
-
|
|
692
|
-
A1 --> Traces
|
|
693
|
-
A2 --> Traces
|
|
694
|
-
A3 --> Traces
|
|
695
|
-
|
|
696
|
-
Metrics --> Grafana
|
|
697
|
-
Logs --> Grafana
|
|
698
|
-
Traces --> Grafana
|
|
699
|
-
```
|
|
700
|
-
|
|
701
|
-
**Key Metrics:**
|
|
702
|
-
- Agent response times
|
|
703
|
-
- Inter-agent communication latency
|
|
704
|
-
- Task delegation counts
|
|
705
|
-
- Error rates per agent
|
|
706
|
-
- Resource utilization
|
|
707
|
-
|
|
708
|
-
---
|
|
709
|
-
|
|
710
|
-
## Key Takeaways
|
|
711
|
-
|
|
712
|
-
### What OSSA Enables
|
|
713
|
-
- ✅ **Agent Discovery**: Find agents by capability
|
|
714
|
-
- ✅ **Standard Communication**: Common protocols via manifests
|
|
715
|
-
- ✅ **Loose Coupling**: Agents don't need to know implementation details
|
|
716
|
-
- ✅ **Scalability**: Add/remove agents without system changes
|
|
717
|
-
- ✅ **Portability**: Move agents between environments
|
|
718
|
-
|
|
719
|
-
### Best Practices
|
|
720
|
-
1. **Single Responsibility**: Each agent handles one domain
|
|
721
|
-
2. **Capability-Driven**: Define clear capabilities in manifests
|
|
722
|
-
3. **Event-Driven**: Use async messaging for loose coupling
|
|
723
|
-
4. **Health Checks**: Monitor agent availability
|
|
724
|
-
5. **Versioning**: Version manifests for backward compatibility
|
|
725
|
-
|
|
726
|
-
---
|
|
727
|
-
|
|
728
|
-
## Related Documentation
|
|
729
|
-
|
|
730
|
-
- [Execution Flow](execution-flow) - How individual agents process requests
|
|
731
|
-
- [Stack Integration](stack-integration) - Where multi-agent systems fit
|
|
732
|
-
- [Ecosystem Overview](/docs/ecosystem/overview) - Real-world patterns
|
|
733
|
-
- [Specification](/docs/specification) - OSSA spec details
|
|
734
|
-
|
|
735
|
-
---
|
|
736
|
-
|
|
737
|
-
**Next Steps**: Explore [Ecosystem Overview](/docs/ecosystem/overview) for real-world multi-agent examples
|