@bluefly/openstandardagents 0.2.9 → 0.3.0
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/CHANGELOG.md +1766 -212
- package/README.md +517 -168
- package/bin/ossa-generate +9 -16
- package/bin/quickstart +514 -0
- package/dist/adapters/anthropic/client.d.ts +144 -0
- package/dist/adapters/anthropic/client.d.ts.map +1 -0
- package/dist/adapters/anthropic/client.js +364 -0
- package/dist/adapters/anthropic/client.js.map +1 -0
- package/dist/adapters/anthropic/config.d.ts +149 -0
- package/dist/adapters/anthropic/config.d.ts.map +1 -0
- package/dist/adapters/anthropic/config.js +157 -0
- package/dist/adapters/anthropic/config.js.map +1 -0
- package/dist/adapters/anthropic/index.d.ts +40 -0
- package/dist/adapters/anthropic/index.d.ts.map +1 -0
- package/dist/adapters/anthropic/index.js +40 -0
- package/dist/adapters/anthropic/index.js.map +1 -0
- package/dist/adapters/anthropic/messages.d.ts +93 -0
- package/dist/adapters/anthropic/messages.d.ts.map +1 -0
- package/dist/adapters/anthropic/messages.js +318 -0
- package/dist/adapters/anthropic/messages.js.map +1 -0
- package/dist/adapters/anthropic/runtime.d.ts +136 -0
- package/dist/adapters/anthropic/runtime.d.ts.map +1 -0
- package/dist/adapters/anthropic/runtime.js +287 -0
- package/dist/adapters/anthropic/runtime.js.map +1 -0
- package/dist/adapters/anthropic/tools.d.ts +126 -0
- package/dist/adapters/anthropic/tools.d.ts.map +1 -0
- package/dist/adapters/anthropic/tools.js +329 -0
- package/dist/adapters/anthropic/tools.js.map +1 -0
- package/dist/adapters/crewai-adapter.d.ts +57 -0
- package/dist/adapters/crewai-adapter.d.ts.map +1 -0
- package/dist/adapters/crewai-adapter.js +164 -0
- package/dist/adapters/crewai-adapter.js.map +1 -0
- package/dist/adapters/drupal/index.d.ts +109 -0
- package/dist/adapters/drupal/index.d.ts.map +1 -0
- package/dist/adapters/drupal/index.js +292 -0
- package/dist/adapters/drupal/index.js.map +1 -0
- package/dist/adapters/langchain-adapter.d.ts +45 -0
- package/dist/adapters/langchain-adapter.d.ts.map +1 -0
- package/dist/adapters/langchain-adapter.js +133 -0
- package/dist/adapters/langchain-adapter.js.map +1 -0
- package/dist/adapters/langflow-adapter.d.ts +50 -0
- package/dist/adapters/langflow-adapter.d.ts.map +1 -0
- package/dist/adapters/langflow-adapter.js +232 -0
- package/dist/adapters/langflow-adapter.js.map +1 -0
- package/dist/adapters/openapi-adapter.d.ts +93 -0
- package/dist/adapters/openapi-adapter.d.ts.map +1 -0
- package/dist/adapters/openapi-adapter.js +311 -0
- package/dist/adapters/openapi-adapter.js.map +1 -0
- package/dist/adapters/symfony/index.d.ts +163 -0
- package/dist/adapters/symfony/index.d.ts.map +1 -0
- package/dist/adapters/symfony/index.js +271 -0
- package/dist/adapters/symfony/index.js.map +1 -0
- package/dist/cli/commands/agents-md.command.d.ts +7 -0
- package/dist/cli/commands/agents-md.command.d.ts.map +1 -0
- package/dist/cli/commands/agents-md.command.js +148 -0
- package/dist/cli/commands/agents-md.command.js.map +1 -0
- package/dist/cli/commands/contract.command.d.ts +10 -0
- package/dist/cli/commands/contract.command.d.ts.map +1 -0
- package/dist/cli/commands/contract.command.js +402 -0
- package/dist/cli/commands/contract.command.js.map +1 -0
- package/dist/cli/commands/dependencies.command.d.ts +10 -0
- package/dist/cli/commands/dependencies.command.d.ts.map +1 -0
- package/dist/cli/commands/dependencies.command.js +318 -0
- package/dist/cli/commands/dependencies.command.js.map +1 -0
- package/dist/cli/commands/deploy.command.d.ts +4 -0
- package/dist/cli/commands/deploy.command.d.ts.map +1 -0
- package/dist/cli/commands/deploy.command.js +172 -0
- package/dist/cli/commands/deploy.command.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +22 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +319 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/export.command.d.ts +7 -0
- package/dist/cli/commands/export.command.d.ts.map +1 -0
- package/dist/cli/commands/export.command.js +56 -0
- package/dist/cli/commands/export.command.js.map +1 -0
- package/dist/cli/commands/generate.command.d.ts +7 -0
- package/dist/cli/commands/generate.command.d.ts.map +1 -0
- package/dist/cli/commands/generate.command.js +66 -0
- package/dist/cli/commands/generate.command.js.map +1 -0
- package/dist/cli/commands/github-sync.command.d.ts +3 -0
- package/dist/cli/commands/github-sync.command.d.ts.map +1 -0
- package/dist/cli/commands/github-sync.command.js +51 -0
- package/dist/cli/commands/github-sync.command.js.map +1 -0
- package/dist/cli/commands/gitlab-agent.command.d.ts +8 -0
- package/dist/cli/commands/gitlab-agent.command.d.ts.map +1 -0
- package/dist/cli/commands/gitlab-agent.command.js +201 -0
- package/dist/cli/commands/gitlab-agent.command.js.map +1 -0
- package/dist/cli/commands/import.command.d.ts +7 -0
- package/dist/cli/commands/import.command.d.ts.map +1 -0
- package/dist/cli/commands/import.command.js +36 -0
- package/dist/cli/commands/import.command.js.map +1 -0
- package/dist/cli/commands/info.command.d.ts +3 -0
- package/dist/cli/commands/info.command.d.ts.map +1 -0
- package/dist/cli/commands/info.command.js +45 -0
- package/dist/cli/commands/info.command.js.map +1 -0
- package/dist/cli/commands/init.command.d.ts +7 -0
- package/dist/cli/commands/init.command.d.ts.map +1 -0
- package/dist/cli/commands/init.command.js +139 -0
- package/dist/cli/commands/init.command.js.map +1 -0
- package/dist/cli/commands/install.command.d.ts +3 -0
- package/dist/cli/commands/install.command.d.ts.map +1 -0
- package/dist/cli/commands/install.command.js +44 -0
- package/dist/cli/commands/install.command.js.map +1 -0
- package/dist/cli/commands/migrate.command.d.ts +22 -0
- package/dist/cli/commands/migrate.command.d.ts.map +1 -0
- package/dist/cli/commands/migrate.command.js +157 -0
- package/dist/cli/commands/migrate.command.js.map +1 -0
- package/dist/cli/commands/publish.command.d.ts +3 -0
- package/dist/cli/commands/publish.command.d.ts.map +1 -0
- package/dist/cli/commands/publish.command.js +76 -0
- package/dist/cli/commands/publish.command.js.map +1 -0
- package/dist/cli/commands/quickstart.command.d.ts +10 -0
- package/dist/cli/commands/quickstart.command.d.ts.map +1 -0
- package/dist/cli/commands/quickstart.command.js +257 -0
- package/dist/cli/commands/quickstart.command.js.map +1 -0
- package/dist/cli/commands/release.command.d.ts +8 -0
- package/dist/cli/commands/release.command.d.ts.map +1 -0
- package/dist/cli/commands/release.command.js +641 -0
- package/dist/cli/commands/release.command.js.map +1 -0
- package/dist/cli/commands/run.command.d.ts +7 -0
- package/dist/cli/commands/run.command.d.ts.map +1 -0
- package/dist/cli/commands/run.command.js +125 -0
- package/dist/cli/commands/run.command.js.map +1 -0
- package/dist/cli/commands/schema.command.d.ts +7 -0
- package/dist/cli/commands/schema.command.d.ts.map +1 -0
- package/dist/cli/commands/schema.command.js +76 -0
- package/dist/cli/commands/schema.command.js.map +1 -0
- package/dist/cli/commands/search.command.d.ts +3 -0
- package/dist/cli/commands/search.command.d.ts.map +1 -0
- package/dist/cli/commands/search.command.js +45 -0
- package/dist/cli/commands/search.command.js.map +1 -0
- package/dist/cli/commands/setup.command.d.ts +11 -0
- package/dist/cli/commands/setup.command.d.ts.map +1 -0
- package/dist/cli/commands/setup.command.js +350 -0
- package/dist/cli/commands/setup.command.js.map +1 -0
- package/dist/cli/commands/sync.command.d.ts +3 -0
- package/dist/cli/commands/sync.command.d.ts.map +1 -0
- package/dist/cli/commands/sync.command.js +51 -0
- package/dist/cli/commands/sync.command.js.map +1 -0
- package/dist/cli/commands/test.command.d.ts +3 -0
- package/dist/cli/commands/test.command.d.ts.map +1 -0
- package/dist/cli/commands/test.command.js +91 -0
- package/dist/cli/commands/test.command.js.map +1 -0
- package/dist/cli/commands/validate.command.d.ts +7 -0
- package/dist/cli/commands/validate.command.d.ts.map +1 -0
- package/dist/cli/commands/validate.command.js +143 -0
- package/dist/cli/commands/validate.command.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +148 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/error-formatter.d.ts +19 -0
- package/dist/cli/utils/error-formatter.d.ts.map +1 -0
- package/dist/cli/utils/error-formatter.js +330 -0
- package/dist/cli/utils/error-formatter.js.map +1 -0
- package/dist/deploy/base-driver.d.ts +39 -0
- package/dist/deploy/base-driver.d.ts.map +1 -0
- package/dist/deploy/base-driver.js +63 -0
- package/dist/deploy/base-driver.js.map +1 -0
- package/dist/deploy/docker-driver.d.ts +32 -0
- package/dist/deploy/docker-driver.d.ts.map +1 -0
- package/dist/deploy/docker-driver.js +246 -0
- package/dist/deploy/docker-driver.js.map +1 -0
- package/dist/deploy/index.d.ts +15 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/deploy/index.js +28 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/deploy/k8s-driver.d.ts +40 -0
- package/dist/deploy/k8s-driver.d.ts.map +1 -0
- package/dist/deploy/k8s-driver.js +372 -0
- package/dist/deploy/k8s-driver.js.map +1 -0
- package/dist/deploy/local-driver.d.ts +20 -0
- package/dist/deploy/local-driver.d.ts.map +1 -0
- package/dist/deploy/local-driver.js +150 -0
- package/dist/deploy/local-driver.js.map +1 -0
- package/dist/deploy/types.d.ts +103 -0
- package/dist/deploy/types.d.ts.map +1 -0
- package/dist/deploy/types.js +6 -0
- package/dist/deploy/types.js.map +1 -0
- package/dist/di-container.d.ts.map +1 -1
- package/dist/di-container.js +14 -0
- package/dist/di-container.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/mesh/client.d.ts +144 -0
- package/dist/mesh/client.d.ts.map +1 -0
- package/dist/mesh/client.js +424 -0
- package/dist/mesh/client.js.map +1 -0
- package/dist/mesh/discovery.d.ts +176 -0
- package/dist/mesh/discovery.d.ts.map +1 -0
- package/dist/mesh/discovery.js +288 -0
- package/dist/mesh/discovery.js.map +1 -0
- package/dist/mesh/index.d.ts +89 -0
- package/dist/mesh/index.d.ts.map +1 -0
- package/dist/mesh/index.js +92 -0
- package/dist/mesh/index.js.map +1 -0
- package/dist/mesh/routing.d.ts +158 -0
- package/dist/mesh/routing.d.ts.map +1 -0
- package/dist/mesh/routing.js +360 -0
- package/dist/mesh/routing.js.map +1 -0
- package/dist/mesh/types.d.ts +439 -0
- package/dist/mesh/types.d.ts.map +1 -0
- package/dist/mesh/types.js +6 -0
- package/dist/mesh/types.js.map +1 -0
- package/dist/messaging/broker.d.ts +76 -0
- package/dist/messaging/broker.d.ts.map +1 -0
- package/dist/messaging/broker.js +145 -0
- package/dist/messaging/broker.js.map +1 -0
- package/dist/messaging/channels.d.ts +70 -0
- package/dist/messaging/channels.d.ts.map +1 -0
- package/dist/messaging/channels.js +183 -0
- package/dist/messaging/channels.js.map +1 -0
- package/dist/messaging/index.d.ts +10 -0
- package/dist/messaging/index.d.ts.map +1 -0
- package/dist/messaging/index.js +10 -0
- package/dist/messaging/index.js.map +1 -0
- package/dist/messaging/protocols/memory.d.ts +83 -0
- package/dist/messaging/protocols/memory.d.ts.map +1 -0
- package/dist/messaging/protocols/memory.js +293 -0
- package/dist/messaging/protocols/memory.js.map +1 -0
- package/dist/messaging/protocols/redis.d.ts +83 -0
- package/dist/messaging/protocols/redis.d.ts.map +1 -0
- package/dist/messaging/protocols/redis.js +223 -0
- package/dist/messaging/protocols/redis.js.map +1 -0
- package/dist/messaging/types.d.ts +180 -0
- package/dist/messaging/types.d.ts.map +1 -0
- package/dist/messaging/types.js +6 -0
- package/dist/messaging/types.js.map +1 -0
- package/dist/repositories/manifest.repository.d.ts +1 -1
- package/dist/repositories/manifest.repository.d.ts.map +1 -1
- package/dist/repositories/manifest.repository.js +7 -6
- package/dist/repositories/manifest.repository.js.map +1 -1
- package/dist/repositories/schema.repository.d.ts +4 -0
- package/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +10 -3
- package/dist/repositories/schema.repository.js.map +1 -1
- package/dist/sdk/events/cloudevents-emitter.d.ts +56 -0
- package/dist/sdk/events/cloudevents-emitter.d.ts.map +1 -0
- package/dist/sdk/events/cloudevents-emitter.js +101 -0
- package/dist/sdk/events/cloudevents-emitter.js.map +1 -0
- package/dist/sdk/events/index.d.ts +2 -0
- package/dist/sdk/events/index.d.ts.map +1 -0
- package/dist/sdk/events/index.js +2 -0
- package/dist/sdk/events/index.js.map +1 -0
- package/dist/sdk/tracing/index.d.ts +2 -0
- package/dist/sdk/tracing/index.d.ts.map +1 -0
- package/dist/sdk/tracing/index.js +2 -0
- package/dist/sdk/tracing/index.js.map +1 -0
- package/dist/sdk/tracing/w3c-baggage.d.ts +40 -0
- package/dist/sdk/tracing/w3c-baggage.d.ts.map +1 -0
- package/dist/sdk/tracing/w3c-baggage.js +148 -0
- package/dist/sdk/tracing/w3c-baggage.js.map +1 -0
- package/dist/services/agent-services/qdrant.service.d.ts +60 -0
- package/dist/services/agent-services/qdrant.service.d.ts.map +1 -0
- package/dist/services/agent-services/qdrant.service.js +168 -0
- package/dist/services/agent-services/qdrant.service.js.map +1 -0
- package/dist/services/agents-md/agents-md.service.d.ts +61 -0
- package/dist/services/agents-md/agents-md.service.d.ts.map +1 -0
- package/dist/services/agents-md/agents-md.service.js +348 -0
- package/dist/services/agents-md/agents-md.service.js.map +1 -0
- package/dist/services/deployment/deployment.service.d.ts +19 -0
- package/dist/services/deployment/deployment.service.d.ts.map +1 -0
- package/dist/services/deployment/deployment.service.js +87 -0
- package/dist/services/deployment/deployment.service.js.map +1 -0
- package/dist/services/generation.service.d.ts +3 -1
- package/dist/services/generation.service.d.ts.map +1 -1
- package/dist/services/generation.service.js +34 -68
- package/dist/services/generation.service.js.map +1 -1
- package/dist/services/github-sync/github-client.js +2 -2
- package/dist/services/github-sync/github-client.js.map +1 -1
- package/dist/services/github-sync/schemas.d.ts +1 -1
- package/dist/services/github-sync/schemas.d.ts.map +1 -1
- package/dist/services/github-sync/schemas.js.map +1 -1
- package/dist/services/github-sync/sync.service.d.ts.map +1 -1
- package/dist/services/github-sync/sync.service.js +4 -2
- package/dist/services/github-sync/sync.service.js.map +1 -1
- package/dist/services/gitlab-agent.service.d.ts.map +1 -1
- package/dist/services/gitlab-agent.service.js +3 -1
- package/dist/services/gitlab-agent.service.js.map +1 -1
- package/dist/services/messaging/example.d.ts +6 -0
- package/dist/services/messaging/example.d.ts.map +1 -0
- package/dist/services/messaging/example.js +260 -0
- package/dist/services/messaging/example.js.map +1 -0
- package/dist/services/messaging/index.d.ts +81 -0
- package/dist/services/messaging/index.d.ts.map +1 -0
- package/dist/services/messaging/index.js +85 -0
- package/dist/services/messaging/index.js.map +1 -0
- package/dist/services/messaging/memory-broker.d.ts +103 -0
- package/dist/services/messaging/memory-broker.d.ts.map +1 -0
- package/dist/services/messaging/memory-broker.js +435 -0
- package/dist/services/messaging/memory-broker.js.map +1 -0
- package/dist/services/messaging/messaging.service.d.ts +150 -0
- package/dist/services/messaging/messaging.service.d.ts.map +1 -0
- package/dist/services/messaging/messaging.service.js +456 -0
- package/dist/services/messaging/messaging.service.js.map +1 -0
- package/dist/services/messaging/messaging.types.d.ts +319 -0
- package/dist/services/messaging/messaging.types.d.ts.map +1 -0
- package/dist/services/messaging/messaging.types.js +68 -0
- package/dist/services/messaging/messaging.types.js.map +1 -0
- package/dist/services/migration.service.d.ts +45 -4
- package/dist/services/migration.service.d.ts.map +1 -1
- package/dist/services/migration.service.js +248 -31
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/registry/registry.service.d.ts +39 -0
- package/dist/services/registry/registry.service.d.ts.map +1 -0
- package/dist/services/registry/registry.service.js +169 -0
- package/dist/services/registry/registry.service.js.map +1 -0
- package/dist/services/release-automation/base-crud.service.d.ts.map +1 -1
- package/dist/services/release-automation/base-crud.service.js.map +1 -1
- package/dist/services/release-automation/merge-request.service.d.ts.map +1 -1
- package/dist/services/release-automation/merge-request.service.js +4 -4
- package/dist/services/release-automation/merge-request.service.js.map +1 -1
- package/dist/services/release-automation/milestone.service.d.ts.map +1 -1
- package/dist/services/release-automation/milestone.service.js.map +1 -1
- package/dist/services/release-automation/release.service.d.ts +4 -4
- package/dist/services/release-automation/release.service.d.ts.map +1 -1
- package/dist/services/release-automation/release.service.js +1 -3
- package/dist/services/release-automation/release.service.js.map +1 -1
- package/dist/services/release-automation/schemas/release.schema.d.ts +3 -3
- package/dist/services/release-automation/schemas/release.schema.d.ts.map +1 -1
- package/dist/services/release-automation/schemas/release.schema.js +11 -23
- package/dist/services/release-automation/schemas/release.schema.js.map +1 -1
- package/dist/services/release-automation/tag.service.d.ts.map +1 -1
- package/dist/services/release-automation/tag.service.js +4 -1
- package/dist/services/release-automation/tag.service.js.map +1 -1
- package/dist/services/release-automation/webhook.service.d.ts +2 -2
- package/dist/services/release-automation/webhook.service.d.ts.map +1 -1
- package/dist/services/release-automation/webhook.service.js +27 -14
- package/dist/services/release-automation/webhook.service.js.map +1 -1
- package/dist/services/runtime/anthropic.adapter.d.ts +145 -0
- package/dist/services/runtime/anthropic.adapter.d.ts.map +1 -0
- package/dist/services/runtime/anthropic.adapter.js +525 -0
- package/dist/services/runtime/anthropic.adapter.js.map +1 -0
- package/dist/services/runtime/azure.adapter.d.ts +389 -0
- package/dist/services/runtime/azure.adapter.d.ts.map +1 -0
- package/dist/services/runtime/azure.adapter.js +515 -0
- package/dist/services/runtime/azure.adapter.js.map +1 -0
- package/dist/services/runtime/bedrock.adapter.d.ts +170 -0
- package/dist/services/runtime/bedrock.adapter.d.ts.map +1 -0
- package/dist/services/runtime/bedrock.adapter.js +667 -0
- package/dist/services/runtime/bedrock.adapter.js.map +1 -0
- package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -1
- package/dist/services/runtime/claude/capability-mapper.js.map +1 -1
- package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -1
- package/dist/services/runtime/claude/claude-adapter.js +3 -7
- package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
- package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -1
- package/dist/services/runtime/claude/manifest-parser.js +2 -2
- package/dist/services/runtime/claude/manifest-parser.js.map +1 -1
- package/dist/services/runtime/gemini.adapter.d.ts +190 -0
- package/dist/services/runtime/gemini.adapter.d.ts.map +1 -0
- package/dist/services/runtime/gemini.adapter.js +603 -0
- package/dist/services/runtime/gemini.adapter.js.map +1 -0
- package/dist/services/runtime/mistral.adapter.d.ts +201 -0
- package/dist/services/runtime/mistral.adapter.d.ts.map +1 -0
- package/dist/services/runtime/mistral.adapter.js +654 -0
- package/dist/services/runtime/mistral.adapter.js.map +1 -0
- package/dist/services/runtime/ollama.adapter.d.ts +187 -0
- package/dist/services/runtime/ollama.adapter.d.ts.map +1 -0
- package/dist/services/runtime/ollama.adapter.js +525 -0
- package/dist/services/runtime/ollama.adapter.js.map +1 -0
- package/dist/services/runtime/openai.adapter.d.ts.map +1 -1
- package/dist/services/runtime/openai.adapter.js.map +1 -1
- package/dist/services/test-runner/test-runner.service.d.ts +21 -0
- package/dist/services/test-runner/test-runner.service.d.ts.map +1 -0
- package/dist/services/test-runner/test-runner.service.js +91 -0
- package/dist/services/test-runner/test-runner.service.js.map +1 -0
- package/dist/services/validation.service.d.ts.map +1 -1
- package/dist/services/validation.service.js +38 -13
- package/dist/services/validation.service.js.map +1 -1
- package/dist/services/validators/anthropic.validator.d.ts.map +1 -1
- package/dist/services/validators/anthropic.validator.js +2 -5
- package/dist/services/validators/anthropic.validator.js.map +1 -1
- package/dist/services/validators/autogen.validator.d.ts.map +1 -1
- package/dist/services/validators/autogen.validator.js +1 -2
- package/dist/services/validators/autogen.validator.js.map +1 -1
- package/dist/services/validators/contract.validator.d.ts +90 -0
- package/dist/services/validators/contract.validator.d.ts.map +1 -0
- package/dist/services/validators/contract.validator.js +508 -0
- package/dist/services/validators/contract.validator.js.map +1 -0
- package/dist/services/validators/crewai.validator.d.ts.map +1 -1
- package/dist/services/validators/crewai.validator.js.map +1 -1
- package/dist/services/validators/cursor.validator.d.ts.map +1 -1
- package/dist/services/validators/cursor.validator.js.map +1 -1
- package/dist/services/validators/dependencies.validator.d.ts +104 -0
- package/dist/services/validators/dependencies.validator.d.ts.map +1 -0
- package/dist/services/validators/dependencies.validator.js +386 -0
- package/dist/services/validators/dependencies.validator.js.map +1 -0
- package/dist/services/validators/index.d.ts +1 -0
- package/dist/services/validators/index.d.ts.map +1 -1
- package/dist/services/validators/index.js +1 -0
- package/dist/services/validators/index.js.map +1 -1
- package/dist/services/validators/langchain.validator.d.ts.map +1 -1
- package/dist/services/validators/langchain.validator.js +4 -13
- package/dist/services/validators/langchain.validator.js.map +1 -1
- package/dist/services/validators/langflow.validator.d.ts.map +1 -1
- package/dist/services/validators/langflow.validator.js +1 -2
- package/dist/services/validators/langflow.validator.js.map +1 -1
- package/dist/services/validators/langgraph.validator.d.ts.map +1 -1
- package/dist/services/validators/langgraph.validator.js +1 -2
- package/dist/services/validators/langgraph.validator.js.map +1 -1
- package/dist/services/validators/llamaindex.validator.d.ts.map +1 -1
- package/dist/services/validators/llamaindex.validator.js +4 -13
- package/dist/services/validators/llamaindex.validator.js.map +1 -1
- package/dist/services/validators/messaging.validator.d.ts +77 -0
- package/dist/services/validators/messaging.validator.d.ts.map +1 -0
- package/dist/services/validators/messaging.validator.js +296 -0
- package/dist/services/validators/messaging.validator.js.map +1 -0
- package/dist/services/validators/openai.validator.d.ts.map +1 -1
- package/dist/services/validators/openai.validator.js +1 -6
- package/dist/services/validators/openai.validator.js.map +1 -1
- package/dist/services/validators/vercel-ai.validator.d.ts.map +1 -1
- package/dist/services/validators/vercel-ai.validator.js +1 -3
- package/dist/services/validators/vercel-ai.validator.js.map +1 -1
- package/dist/spec/extensions/a2a-messaging.md +471 -0
- package/dist/spec/extensions/manifest-extensions.md +550 -0
- package/dist/spec/registry/README.md +472 -0
- package/dist/spec/registry/openapi.yaml +1124 -0
- package/dist/spec/registry/registry-api.schema.json +731 -0
- package/dist/spec/registry/registry-spec.md +2239 -0
- package/dist/spec/schema/agent-test.schema.json +117 -0
- package/dist/spec/schema/components/activity-stream.schema.json +94 -0
- package/dist/spec/schema/components/constraints.schema.json +84 -0
- package/dist/spec/schema/components/dependencies.schema.json +147 -0
- package/dist/spec/schema/components/encryption.schema.json +115 -0
- package/dist/spec/schema/components/identity.schema.json +48 -0
- package/dist/spec/schema/components/index.json +37 -0
- package/dist/spec/schema/components/llm-config.schema.json +67 -0
- package/dist/spec/schema/components/metadata.schema.json +37 -0
- package/dist/spec/schema/components/tool.schema.json +64 -0
- package/dist/spec/schema/extensions/a2a.extension.schema.json +127 -0
- package/dist/spec/v0.2.8/ossa-0.2.8.schema.json +95 -1
- package/dist/spec/v0.3.0/UNIFIED-SCHEMA.md +120 -0
- package/dist/spec/v0.3.0/adapters/drupal.md +541 -0
- package/dist/spec/v0.3.0/adapters/symfony.md +659 -0
- package/dist/spec/v0.3.0/agent-test.schema.json +75 -0
- package/dist/spec/v0.3.0/examples/drupal-content-writer.ossa.yaml +110 -0
- package/dist/spec/v0.3.0/examples/drupal-moderation-assistant.ossa.yaml +96 -0
- package/dist/spec/v0.3.0/examples/quick-wins/complete-agent-with-quick-wins.ossa.yaml +144 -0
- package/dist/spec/v0.3.0/extensions/drupal.md +417 -0
- package/dist/spec/v0.3.0/ossa-0.3.0.schema.json +2787 -0
- package/dist/spec/v0.3.0/protocols/sse.md +494 -0
- package/dist/spec/v0.3.0/protocols/webrtc.md +600 -0
- package/dist/spec/v0.3.0/protocols/websocket.md +362 -0
- package/dist/spec/v0.3.0/schemas/agent-unified.yaml +165 -0
- package/dist/spec/v0.3.0/schemas/capabilities.yaml +102 -0
- package/dist/spec/v0.3.0/schemas/functions.yaml +75 -0
- package/dist/spec/v0.3.0/schemas/messaging/channel.schema.json +245 -0
- package/dist/spec/v0.3.0/schemas/messaging/delivery-receipt.schema.json +192 -0
- package/dist/spec/v0.3.0/schemas/messaging/message.schema.json +205 -0
- package/dist/spec/v0.3.0/schemas/messaging/subscription.schema.json +214 -0
- package/dist/spec/v0.3.0/schemas/runtime.yaml +102 -0
- package/dist/spec/v0.3.0/schemas/taxonomy.yaml +533 -0
- package/dist/spec/v0.3.0/schemas/unified-llm.yaml +91 -0
- package/dist/spec/v0.3.0/taxonomy.yaml +256 -0
- package/dist/testing/fixtures.d.ts +61 -0
- package/dist/testing/fixtures.d.ts.map +1 -0
- package/dist/testing/fixtures.js +291 -0
- package/dist/testing/fixtures.js.map +1 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +10 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/reporters/base.d.ts +24 -0
- package/dist/testing/reporters/base.d.ts.map +1 -0
- package/dist/testing/reporters/base.js +5 -0
- package/dist/testing/reporters/base.js.map +1 -0
- package/dist/testing/reporters/console.d.ts +18 -0
- package/dist/testing/reporters/console.d.ts.map +1 -0
- package/dist/testing/reporters/console.js +76 -0
- package/dist/testing/reporters/console.js.map +1 -0
- package/dist/testing/reporters/json.d.ts +29 -0
- package/dist/testing/reporters/json.d.ts.map +1 -0
- package/dist/testing/reporters/json.js +40 -0
- package/dist/testing/reporters/json.js.map +1 -0
- package/dist/testing/runner.d.ts +96 -0
- package/dist/testing/runner.d.ts.map +1 -0
- package/dist/testing/runner.js +401 -0
- package/dist/testing/runner.js.map +1 -0
- package/dist/transports/index.d.ts +8 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +11 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/sse.d.ts +166 -0
- package/dist/transports/sse.d.ts.map +1 -0
- package/dist/transports/sse.js +309 -0
- package/dist/transports/sse.js.map +1 -0
- package/dist/transports/webrtc.d.ts +183 -0
- package/dist/transports/webrtc.d.ts.map +1 -0
- package/dist/transports/webrtc.js +478 -0
- package/dist/transports/webrtc.js.map +1 -0
- package/dist/transports/websocket.d.ts +204 -0
- package/dist/transports/websocket.d.ts.map +1 -0
- package/dist/transports/websocket.js +397 -0
- package/dist/transports/websocket.js.map +1 -0
- package/dist/types/generated/ossa-0.3.0.types.d.ts +316 -0
- package/dist/types/generated/ossa-0.3.0.types.d.ts.map +1 -0
- package/dist/types/generated/ossa-0.3.0.types.js +8 -0
- package/dist/types/generated/ossa-0.3.0.types.js.map +1 -0
- package/dist/types/generated/ossa-0.3.0.zod.d.ts +17 -0
- package/dist/types/generated/ossa-0.3.0.zod.d.ts.map +1 -0
- package/dist/types/generated/ossa-0.3.0.zod.js +3 -0
- package/dist/types/generated/ossa-0.3.0.zod.js.map +1 -0
- package/dist/types/index.d.ts +124 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +8 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/messaging.d.ts +116 -0
- package/dist/types/messaging.d.ts.map +1 -0
- package/dist/types/messaging.js +6 -0
- package/dist/types/messaging.js.map +1 -0
- package/dist/types/policy.d.ts.map +1 -1
- package/dist/types/policy.js.map +1 -1
- package/dist/types/task.d.ts +222 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +40 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/workflow.d.ts +283 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +51 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/path-validator.d.ts +24 -0
- package/dist/utils/path-validator.d.ts.map +1 -0
- package/dist/utils/path-validator.js +70 -0
- package/dist/utils/path-validator.js.map +1 -0
- package/dist/utils/version.d.ts +17 -8
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +84 -30
- package/dist/utils/version.js.map +1 -1
- package/dist/utils/yaml-parser.d.ts +23 -0
- package/dist/utils/yaml-parser.d.ts.map +1 -0
- package/dist/utils/yaml-parser.js +34 -0
- package/dist/utils/yaml-parser.js.map +1 -0
- package/examples/adapters/drupal-eca-mapping.yaml +153 -0
- package/examples/adapters/drupal-eca-task.yaml +48 -0
- package/examples/adapters/drupal-flowdrop-mapping.yaml +463 -0
- package/examples/adapters/drupal-maestro-mapping.yaml +369 -0
- package/examples/adapters/mistral-README.md +367 -0
- package/examples/adapters/mistral-agent.yaml +147 -0
- package/examples/adapters/symfony-messenger-task.yaml +135 -0
- package/examples/adapters/symfony-messenger-workflow.yaml +352 -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/reasoning-agent.yaml +1 -1
- package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -18
- 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/agent-mesh/README.ts +311 -0
- package/examples/agent-mesh/basic-usage.ts +461 -0
- package/examples/agents/architecture-healer-enterprise.yaml +143 -0
- package/examples/agents/dependency-healer-npm.yaml +81 -0
- package/examples/agents/spec-healer-openapi.yaml +59 -0
- package/examples/agents/wiki-healer-production.yaml +131 -0
- package/examples/agents-md/code-agent.ossa.json +1 -1
- package/examples/agents-md/monorepo-agent.ossa.yaml +1 -1
- package/examples/anthropic/claude-assistant.ossa.json +1 -1
- package/examples/anthropic-adapter-example.ts +374 -0
- package/examples/anthropic-simple.ts +70 -0
- package/examples/autogen/multi-agent.ossa.json +1 -1
- package/examples/autonomous-evolution/self-evolving-agent.ossa.yaml +37 -0
- package/examples/bridges/.gitlab-ci.yml +293 -0
- package/examples/bridges/k8s/deployment.yaml +14 -14
- package/examples/ci/multi-project-release-example.yml +401 -0
- package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
- package/examples/claude-code/ossa-validator.ossa.yaml +1 -1
- package/examples/common_npm/agent-router.ossa.yaml +1 -1
- package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
- package/examples/contracts/data-consumer.ossa.yaml +171 -0
- package/examples/contracts/data-producer-v2.ossa.yaml +227 -0
- package/examples/contracts/data-producer.ossa.yaml +217 -0
- package/examples/coordinator-agent/README.md +180 -0
- package/examples/coordinator-agent/index.ts +440 -0
- package/examples/coordinator-agent/manifest.yaml +41 -0
- package/examples/crewai/research-team.ossa.json +1 -1
- package/examples/cursor/code-review-agent.ossa.json +1 -1
- package/examples/drupal/ai_agents_ossa-module/.agents/example-agent/agent.ossa.yaml +37 -0
- package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -1
- package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
- package/examples/extensions/agents-md-advanced.yml +177 -0
- package/examples/extensions/agents-md-basic.yml +74 -0
- package/examples/extensions/agents-md-sync.yml +96 -0
- package/examples/extensions/agents-md-v1.yml +1 -1
- package/examples/extensions/drupal-v1.yml +1 -1
- package/examples/extensions/encryption-multi-provider.yaml +120 -0
- package/examples/extensions/kagent-v1.yml +2 -2
- package/examples/extensions/knowledge-sources.yaml +59 -0
- package/examples/extensions/mcp-full-featured.yaml +150 -0
- package/examples/getting-started/01-minimal-agent.ossa.yaml +376 -0
- package/examples/getting-started/02-agent-with-tools.ossa.yaml +866 -0
- package/examples/getting-started/03-agent-with-safety.ossa.yaml +868 -0
- package/examples/getting-started/04-agent-with-messaging.ossa.yaml +829 -0
- package/examples/getting-started/05-workflow-composition.ossa.yaml +209 -0
- package/examples/getting-started/README.md +69 -0
- 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 -1
- 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 +1 -1
- package/examples/langflow/workflow-agent.ossa.json +1 -1
- package/examples/langgraph/state-machine-agent.ossa.json +1 -1
- package/examples/llamaindex/rag-agent.ossa.json +1 -1
- package/examples/messaging/dependency-healer.ossa.yaml +354 -0
- package/examples/messaging/incident-responder.ossa.yaml +477 -0
- package/examples/messaging/routing-rules.ossa.yaml +307 -0
- package/examples/messaging/security-scanner.ossa.yaml +328 -0
- package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
- package/examples/mistral-adapter-example.ts +435 -0
- package/examples/mistral-simple.ts +56 -0
- package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
- package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
- package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
- package/examples/observability/activity-stream-full.yaml +133 -0
- package/examples/observability/gitlab-ci-template.yml +304 -0
- package/examples/openai/basic-agent.ossa.yaml +1 -1
- package/examples/openai/multi-tool-agent.ossa.json +1 -1
- package/examples/openai/swarm-agent.ossa.json +1 -1
- package/examples/production/document-analyzer-openai.yml +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/rag-agent/README.md +136 -0
- package/examples/rag-agent/index.ts +272 -0
- package/examples/rag-agent/manifest.yaml +45 -0
- package/examples/real-world/gitlab-cicd-optimizer.ossa.yaml +163 -0
- package/examples/real-world/rag-documentation-assistant.ossa.yaml +235 -0
- package/examples/reference-implementations/README.md +321 -0
- package/examples/reference-implementations/curl-scripts/01-search-agents.sh +72 -0
- package/examples/reference-implementations/curl-scripts/02-get-agent-details.sh +74 -0
- package/examples/reference-implementations/curl-scripts/03-publish-agent.sh +136 -0
- package/examples/reference-implementations/curl-scripts/04-a2a-messaging.sh +178 -0
- package/examples/reference-implementations/curl-scripts/05-discovery.sh +98 -0
- package/examples/reference-implementations/curl-scripts/README.md +277 -0
- package/examples/reference-implementations/python-client/README.md +282 -0
- package/examples/reference-implementations/python-client/examples/basic_usage.py +84 -0
- package/examples/reference-implementations/python-client/examples/publish_agent.py +137 -0
- package/examples/reference-implementations/python-client/ossa_client/__init__.py +80 -0
- package/examples/reference-implementations/python-client/ossa_client/agents.py +240 -0
- package/examples/reference-implementations/python-client/ossa_client/client.py +164 -0
- package/examples/reference-implementations/python-client/ossa_client/discovery.py +153 -0
- package/examples/reference-implementations/python-client/ossa_client/messaging.py +227 -0
- package/examples/reference-implementations/python-client/requirements.txt +2 -0
- package/examples/reference-implementations/python-client/setup.py +40 -0
- package/examples/reference-implementations/typescript-client/README.md +227 -0
- package/examples/reference-implementations/typescript-client/examples/basic-usage.ts +86 -0
- package/examples/reference-implementations/typescript-client/examples/messaging.ts +185 -0
- package/examples/reference-implementations/typescript-client/examples/publish-agent.ts +138 -0
- package/examples/reference-implementations/typescript-client/package.json +40 -0
- package/examples/reference-implementations/typescript-client/src/agents.ts +285 -0
- package/examples/reference-implementations/typescript-client/src/client.ts +161 -0
- package/examples/reference-implementations/typescript-client/src/discovery.ts +244 -0
- package/examples/reference-implementations/typescript-client/src/index.ts +67 -0
- package/examples/reference-implementations/typescript-client/src/messaging.ts +385 -0
- package/examples/reference-implementations/typescript-client/tsconfig.json +25 -0
- package/examples/runtime-adapters/bedrock-claude-example.ossa.yaml +465 -0
- package/examples/schema/reusable-components.yaml +95 -0
- package/examples/tasks/batch-email-sender.yaml +105 -0
- package/examples/tasks/data-transform.yaml +82 -0
- package/examples/tasks/publish-content.yaml +86 -0
- package/examples/templates/ossa-compliance.yaml +1 -1
- package/examples/unified/security-scanner.ossa.yaml +311 -0
- package/examples/vercel/edge-agent.ossa.json +1 -1
- package/examples/workflow-agent/README.md +175 -0
- package/examples/workflow-agent/index.ts +408 -0
- package/examples/workflow-agent/manifest.yaml +41 -0
- package/examples/workflows/batch-email-campaign.yaml +140 -0
- package/examples/workflows/content-review-publish.yaml +156 -0
- package/examples/workflows/simple-etl.yaml +151 -0
- package/openapi/agent-communication.yaml +1113 -0
- package/openapi/agent-crud.yaml +1124 -0
- package/openapi/agent-discovery.yaml +677 -0
- package/openapi/agent-identity.yaml +620 -0
- package/openapi/protocols/sse-streams.yaml +479 -0
- package/openapi/protocols/websocket-events.yaml +427 -0
- package/openapi/schemas/discovery.json +488 -0
- package/package.json +91 -33
- package/schemas/agent.json +523 -0
- package/schemas/communication.json +897 -0
- package/schemas/identity.json +482 -0
- package/spec/extensions/a2a-messaging.md +471 -0
- package/spec/extensions/manifest-extensions.md +550 -0
- package/spec/registry/README.md +472 -0
- package/spec/registry/openapi.yaml +1124 -0
- package/spec/registry/registry-api.schema.json +731 -0
- package/spec/registry/registry-spec.md +2239 -0
- package/spec/schema/agent-test.schema.json +117 -0
- package/spec/schema/components/activity-stream.schema.json +94 -0
- package/spec/schema/components/constraints.schema.json +84 -0
- package/spec/schema/components/dependencies.schema.json +147 -0
- package/spec/schema/components/encryption.schema.json +115 -0
- package/spec/schema/components/identity.schema.json +48 -0
- package/spec/schema/components/index.json +37 -0
- package/spec/schema/components/llm-config.schema.json +67 -0
- package/spec/schema/components/metadata.schema.json +37 -0
- package/spec/schema/components/tool.schema.json +64 -0
- package/spec/schema/extensions/a2a.extension.schema.json +127 -0
- package/spec/v0.2.8/ossa-0.2.8.schema.json +95 -1
- package/spec/v0.3.0/UNIFIED-SCHEMA.md +120 -0
- package/spec/v0.3.0/adapters/drupal.md +541 -0
- package/spec/v0.3.0/adapters/symfony.md +659 -0
- package/spec/v0.3.0/agent-test.schema.json +75 -0
- package/spec/v0.3.0/examples/drupal-content-writer.ossa.yaml +110 -0
- package/spec/v0.3.0/examples/drupal-moderation-assistant.ossa.yaml +96 -0
- package/spec/v0.3.0/examples/quick-wins/complete-agent-with-quick-wins.ossa.yaml +144 -0
- package/spec/v0.3.0/extensions/drupal.md +417 -0
- package/spec/v0.3.0/ossa-0.3.0.schema.json +2787 -0
- package/spec/v0.3.0/protocols/sse.md +494 -0
- package/spec/v0.3.0/protocols/webrtc.md +600 -0
- package/spec/v0.3.0/protocols/websocket.md +362 -0
- package/spec/v0.3.0/schemas/agent-unified.yaml +165 -0
- package/spec/v0.3.0/schemas/capabilities.yaml +102 -0
- package/spec/v0.3.0/schemas/functions.yaml +75 -0
- package/spec/v0.3.0/schemas/messaging/channel.schema.json +245 -0
- package/spec/v0.3.0/schemas/messaging/delivery-receipt.schema.json +192 -0
- package/spec/v0.3.0/schemas/messaging/message.schema.json +205 -0
- package/spec/v0.3.0/schemas/messaging/subscription.schema.json +214 -0
- package/spec/v0.3.0/schemas/runtime.yaml +102 -0
- package/spec/v0.3.0/schemas/taxonomy.yaml +533 -0
- package/spec/v0.3.0/schemas/unified-llm.yaml +91 -0
- package/spec/v0.3.0/taxonomy.yaml +256 -0
- package/.cursorrules +0 -84
- package/.devfile.yaml +0 -87
- package/.env.example +0 -63
- package/.eslintrc.cjs +0 -43
- package/.github/AGENTS.md +0 -245
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -63
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -40
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -39
- package/.github/agents/github-issue-triage.ossa.yaml +0 -99
- package/.github/agents/github-pr-triage.ossa.yaml +0 -137
- package/.github/dependabot.yml +0 -58
- package/.github/workflows/ci.yml +0 -154
- package/.github/workflows/codeql.yml +0 -41
- package/.github/workflows/dependabot-auto-merge.yml +0 -28
- package/.github/workflows/dependabot-comment.yml +0 -34
- package/.github/workflows/issue-sync-to-gitlab.yml +0 -138
- package/.github/workflows/pr-triage-to-gitlab.yml +0 -164
- package/.github/workflows/release.yml +0 -103
- package/.husky/pre-commit +0 -5
- package/.kiro/config.json +0 -21
- package/.kiro/settings/mcp.json +0 -61
- package/.kiro/specs/scripts-migration-api-first/design.md +0 -883
- package/.kiro/specs/scripts-migration-api-first/requirements.md +0 -165
- package/.kiro/specs/scripts-migration-api-first/tasks.md +0 -539
- package/.kiro/specs/website-brand-identity/design.md +0 -1060
- package/.kiro/specs/website-brand-identity/requirements.md +0 -287
- package/.kiro/specs/website-brand-identity/tasks.md +0 -981
- package/.prettierignore +0 -7
- package/.prettierrc.json +0 -10
- package/.redocly.yaml +0 -9
- package/.releaserc.json +0 -85
- package/.version.json +0 -6
- package/.wiki-config.json +0 -24
- package/CODEOWNERS +0 -75
- package/CONTRIBUTING.md +0 -366
- package/bin/validate-ossa-0.2.2.ts +0 -244
- package/bin/validate-ossa-0.2.4.ts +0 -244
- package/docs/brand-guide/01-brand-overview.md +0 -37
- package/docs/brand-guide/02-logo-usage.md +0 -43
- package/docs/brand-guide/03-color-palette.md +0 -70
- package/docs/brand-guide/04-typography.md +0 -82
- package/docs/brand-guide/05-voice-and-tone.md +0 -108
- package/docs/brand-guide/06-visual-elements.md +0 -137
- package/docs/brand-guide/07-application-examples.md +0 -153
- package/docs/brand-guide/OssaLogo/OssA_Logo.svg +0 -21
- package/docs/brand-guide/OssaLogo/brand.af +0 -0
- package/docs/brand-guide/README.md +0 -107
- package/docs/comparison.md +0 -315
- package/docs/operations/automation-roadmap.md +0 -245
- package/docs/operations/github-sync-strategy.md +0 -357
- package/docs/specs/policy-dsl.md +0 -925
- package/eslint-report.json +0 -1
- package/gl-code-quality-report.json +0 -62
- package/infrastructure/docker-compose.yml +0 -33
- package/infrastructure/gitlab-agent/rbac.yaml +0 -126
- package/infrastructure/gitlab-agent/values.yaml +0 -150
- package/infrastructure/k8s/monitoring/00-namespace.yaml +0 -7
- package/infrastructure/k8s/monitoring/01-prometheus.yaml +0 -142
- package/infrastructure/k8s/monitoring/02-grafana.yaml +0 -63
- package/infrastructure/k8s/monitoring/03-lightweight.yaml +0 -121
- package/infrastructure/k8s/monitoring/README.md +0 -73
- package/infrastructure/k8s/monitoring/deploy.sh +0 -38
- package/junit.xml +0 -1
- package/llms-ctx-full.txt +0 -39
- package/llms-ctx.txt +0 -39
- package/llms.txt +0 -47
- package/release.config.js +0 -79
- package/scripts/README.md +0 -128
- package/scripts/auto-rebase-mrs.ts +0 -106
- package/scripts/batch-dependabot.sh +0 -57
- package/scripts/bump-version.ts +0 -57
- package/scripts/compliance-audit.ts +0 -796
- package/scripts/configure-gitlab-branch-protection.ts +0 -95
- package/scripts/create-issue-helper.ts +0 -238
- package/scripts/create-milestone-issue.ts +0 -73
- package/scripts/enhanced-version-manager.ts +0 -257
- package/scripts/eslint-to-codequality.cjs +0 -34
- package/scripts/fix-schema-formats.js +0 -82
- package/scripts/gen-types.ts +0 -51
- package/scripts/gen-zod.ts +0 -51
- package/scripts/generate-agents-catalog.ts +0 -78
- package/scripts/generate-api-docs.ts +0 -219
- package/scripts/generate-cli-docs.ts +0 -410
- package/scripts/generate-config-docs.ts +0 -109
- package/scripts/generate-errors-docs.ts +0 -76
- package/scripts/generate-examples-docs.ts +0 -100
- package/scripts/generate-llms-ctx.sh +0 -17
- package/scripts/generate-schema-docs.ts +0 -317
- package/scripts/generate-types-docs.ts +0 -48
- package/scripts/lowercase-docs.ts +0 -43
- package/scripts/manage-milestone-mrs.ts +0 -279
- package/scripts/process-doc-templates.ts +0 -37
- package/scripts/rebase-all-mrs.sh +0 -75
- package/scripts/schemas/package.schema.ts +0 -75
- package/scripts/setup-branch-protection.sh +0 -33
- package/scripts/sync-github-pr.sh +0 -48
- package/scripts/sync-version.js +0 -32
- package/scripts/sync-version.ts +0 -39
- package/scripts/sync-versions.ts +0 -488
- package/scripts/sync-wiki.sh +0 -50
- package/scripts/validate-all.js +0 -127
- package/scripts/validate-schema.ts +0 -50
- package/test-results/junit.xml +0 -337
- package/test-results.xml +0 -1
|
@@ -0,0 +1,829 @@
|
|
|
1
|
+
# ╔═══════════════════════════════════════════════════════════════════════════════╗
|
|
2
|
+
# ║ ║
|
|
3
|
+
# ║ ██████╗ ███████╗███████╗ █████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ║
|
|
4
|
+
# ║ ██╔═══██╗██╔════╝██╔════╝██╔══██╗ ██║ ██║██╔═████╗ ╚════██╗██╔═████╗ ║
|
|
5
|
+
# ║ ██║ ██║███████╗███████╗███████║ ██║ ██║██║██╔██║ █████╔╝██║██╔██║ ║
|
|
6
|
+
# ║ ██║ ██║╚════██║╚════██║██╔══██║ ╚██╗ ██╔╝████╔╝██║ ╚═══██╗████╔╝██║ ║
|
|
7
|
+
# ║ ╚██████╔╝███████║███████║██║ ██║ ╚████╔╝ ╚██████╔╝██╗██████╔╝╚██████╔╝ ║
|
|
8
|
+
# ║ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝╚═════╝ ╚═════╝ ║
|
|
9
|
+
# ║ ║
|
|
10
|
+
# ║ GETTING STARTED: 04 - AGENT-TO-AGENT MESSAGING (A2A) ║
|
|
11
|
+
# ║ ║
|
|
12
|
+
# ╚═══════════════════════════════════════════════════════════════════════════════╝
|
|
13
|
+
#
|
|
14
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
15
|
+
# │ WHAT YOU'LL LEARN │
|
|
16
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
17
|
+
# │ │
|
|
18
|
+
# │ ✓ Agent-to-Agent (A2A) messaging - the foundation of multi-agent systems │
|
|
19
|
+
# │ ✓ Pub/Sub pattern - agents publish events, others subscribe and react │
|
|
20
|
+
# │ ✓ Commands - RPC-style request/response between agents │
|
|
21
|
+
# │ ✓ Message schemas - JSON Schema for type-safe communication │
|
|
22
|
+
# │ ✓ Reliability guarantees - at-least-once, exactly-once delivery │
|
|
23
|
+
# │ ✓ Dead letter queues - handling failed messages gracefully │
|
|
24
|
+
# │ ✓ Channel naming conventions - organizing message flow │
|
|
25
|
+
# │ ✓ Real example: Security scanner publishing vulnerabilities │
|
|
26
|
+
# │ │
|
|
27
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
28
|
+
#
|
|
29
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
30
|
+
# │ WHY AGENT-TO-AGENT MESSAGING? │
|
|
31
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
32
|
+
# │ │
|
|
33
|
+
# │ Single agents are limited. Multi-agent systems can: │
|
|
34
|
+
# │ • Specialize: Each agent is an expert in one domain │
|
|
35
|
+
# │ • Scale: Distribute work across multiple agents │
|
|
36
|
+
# │ • Coordinate: Agents collaborate to solve complex problems │
|
|
37
|
+
# │ • React: Event-driven architecture for real-time workflows │
|
|
38
|
+
# │ │
|
|
39
|
+
# │ Example: Automated Security Pipeline │
|
|
40
|
+
# │ ┌────────────────────────────────────────────────────────────────┐ │
|
|
41
|
+
# │ │ │ │
|
|
42
|
+
# │ │ 1. Scanner Agent │ │
|
|
43
|
+
# │ │ └─> Scans code for vulnerabilities │ │
|
|
44
|
+
# │ │ └─> PUBLISHES to: security.vulnerabilities │ │
|
|
45
|
+
# │ │ │ │
|
|
46
|
+
# │ │ 2. Remediation Agent │ │
|
|
47
|
+
# │ │ └─> SUBSCRIBES to: security.vulnerabilities │ │
|
|
48
|
+
# │ │ └─> Creates patches for critical issues │ │
|
|
49
|
+
# │ │ └─> PUBLISHES to: code.patches │ │
|
|
50
|
+
# │ │ │ │
|
|
51
|
+
# │ │ 3. Review Agent │ │
|
|
52
|
+
# │ │ └─> SUBSCRIBES to: code.patches │ │
|
|
53
|
+
# │ │ └─> Reviews patches for safety │ │
|
|
54
|
+
# │ │ └─> PUBLISHES to: github.pull_requests │ │
|
|
55
|
+
# │ │ │ │
|
|
56
|
+
# │ │ 4. Notification Agent │ │
|
|
57
|
+
# │ │ └─> SUBSCRIBES to: security.vulnerabilities │ │
|
|
58
|
+
# │ │ └─> Alerts security team via Slack │ │
|
|
59
|
+
# │ │ │ │
|
|
60
|
+
# │ └────────────────────────────────────────────────────────────────┘ │
|
|
61
|
+
# │ │
|
|
62
|
+
# │ This is EVENT-DRIVEN ARCHITECTURE for agents! │
|
|
63
|
+
# │ │
|
|
64
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
65
|
+
#
|
|
66
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
67
|
+
# │ PUB/SUB VS COMMANDS: WHEN TO USE EACH │
|
|
68
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
69
|
+
# │ │
|
|
70
|
+
# │ PUB/SUB (Publish/Subscribe) │
|
|
71
|
+
# │ ─────────────────────────── │
|
|
72
|
+
# │ • One-to-many: One publisher → many subscribers │
|
|
73
|
+
# │ • Asynchronous: Publisher doesn't wait for subscribers │
|
|
74
|
+
# │ • Decoupled: Publisher doesn't know who's listening │
|
|
75
|
+
# │ • Use for: Events, notifications, broadcasting state changes │
|
|
76
|
+
# │ │
|
|
77
|
+
# │ Example: │
|
|
78
|
+
# │ Scanner publishes security.vulnerabilities │
|
|
79
|
+
# │ → Remediation Agent subscribes │
|
|
80
|
+
# │ → Notification Agent subscribes │
|
|
81
|
+
# │ → Metrics Agent subscribes │
|
|
82
|
+
# │ Scanner doesn't know/care who's listening │
|
|
83
|
+
# │ │
|
|
84
|
+
# │ COMMANDS (Request/Response) │
|
|
85
|
+
# │ ─────────────────────────── │
|
|
86
|
+
# │ • One-to-one: Caller → specific agent │
|
|
87
|
+
# │ • Synchronous: Caller waits for response │
|
|
88
|
+
# │ • Coupled: Caller explicitly invokes target agent │
|
|
89
|
+
# │ • Use for: RPC, querying, requesting specific actions │
|
|
90
|
+
# │ │
|
|
91
|
+
# │ Example: │
|
|
92
|
+
# │ Orchestrator calls Scanner.scan_repository(url="...") │
|
|
93
|
+
# │ → Scanner executes scan │
|
|
94
|
+
# │ → Scanner returns {scan_id, status, findings_count} │
|
|
95
|
+
# │ → Orchestrator waits for response │
|
|
96
|
+
# │ │
|
|
97
|
+
# │ WHEN TO USE WHAT: │
|
|
98
|
+
# │ ┌──────────────────────┬──────────────────────────────────────────┐ │
|
|
99
|
+
# │ │ SCENARIO │ PATTERN │ │
|
|
100
|
+
# │ ├──────────────────────┼──────────────────────────────────────────┤ │
|
|
101
|
+
# │ │ Broadcasting events │ Pub/Sub │ │
|
|
102
|
+
# │ │ Loose coupling │ Pub/Sub │ │
|
|
103
|
+
# │ │ Unknown subscribers │ Pub/Sub │ │
|
|
104
|
+
# │ │ Need response │ Command │ │
|
|
105
|
+
# │ │ Invoke specific logic│ Command │ │
|
|
106
|
+
# │ │ Synchronous flow │ Command │ │
|
|
107
|
+
# │ └──────────────────────┴──────────────────────────────────────────┘ │
|
|
108
|
+
# │ │
|
|
109
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
110
|
+
#
|
|
111
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
112
|
+
# │ MESSAGE RELIABILITY: DELIVERY GUARANTEES │
|
|
113
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
114
|
+
# │ │
|
|
115
|
+
# │ AT-MOST-ONCE (Fire and Forget) │
|
|
116
|
+
# │ ────────────────────────────────── │
|
|
117
|
+
# │ • Message sent once, no retries │
|
|
118
|
+
# │ • Fast, but may lose messages │
|
|
119
|
+
# │ • Use for: Non-critical notifications, metrics │
|
|
120
|
+
# │ │
|
|
121
|
+
# │ Flow: │
|
|
122
|
+
# │ 1. Agent publishes message │
|
|
123
|
+
# │ 2. Message sent to broker │
|
|
124
|
+
# │ 3. Done (no confirmation) │
|
|
125
|
+
# │ │
|
|
126
|
+
# │ AT-LEAST-ONCE (Retry Until Success) │
|
|
127
|
+
# │ ──────────────────────────────────── │
|
|
128
|
+
# │ • Message retried until acknowledged │
|
|
129
|
+
# │ • Reliable, but may deliver duplicates │
|
|
130
|
+
# │ • Use for: Most production systems (RECOMMENDED) │
|
|
131
|
+
# │ │
|
|
132
|
+
# │ Flow: │
|
|
133
|
+
# │ 1. Agent publishes message │
|
|
134
|
+
# │ 2. Broker stores message │
|
|
135
|
+
# │ 3. Subscriber receives message │
|
|
136
|
+
# │ 4. Subscriber processes message │
|
|
137
|
+
# │ 5. Subscriber sends ACK │
|
|
138
|
+
# │ 6. If no ACK: retry after delay │
|
|
139
|
+
# │ │
|
|
140
|
+
# │ Idempotency required! Subscribers must handle duplicates: │
|
|
141
|
+
# │ • Use message IDs to detect dupes │
|
|
142
|
+
# │ • Make operations idempotent (running twice = same result) │
|
|
143
|
+
# │ │
|
|
144
|
+
# │ EXACTLY-ONCE (Guaranteed Delivery) │
|
|
145
|
+
# │ ─────────────────────────────────── │
|
|
146
|
+
# │ • Message delivered exactly once (no duplicates) │
|
|
147
|
+
# │ • Slow, complex, requires distributed transactions │
|
|
148
|
+
# │ • Use for: Financial transactions, critical data │
|
|
149
|
+
# │ │
|
|
150
|
+
# │ Flow: │
|
|
151
|
+
# │ 1. Agent publishes with unique transaction ID │
|
|
152
|
+
# │ 2. Broker deduplicates based on transaction ID │
|
|
153
|
+
# │ 3. Subscriber processes with 2-phase commit │
|
|
154
|
+
# │ 4. Transaction committed across broker + subscriber │
|
|
155
|
+
# │ │
|
|
156
|
+
# │ OSSA RECOMMENDATION: │
|
|
157
|
+
# │ Use at-least-once with idempotent subscribers (best balance) │
|
|
158
|
+
# │ │
|
|
159
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
160
|
+
#
|
|
161
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
162
|
+
# │ DEAD LETTER QUEUES (DLQ): HANDLING FAILURES │
|
|
163
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
164
|
+
# │ │
|
|
165
|
+
# │ What happens when a subscriber repeatedly fails to process a message? │
|
|
166
|
+
# │ Without DLQ: Message retries forever, blocking the queue │
|
|
167
|
+
# │ With DLQ: Failed messages moved to separate queue for investigation │
|
|
168
|
+
# │ │
|
|
169
|
+
# │ DLQ Flow: │
|
|
170
|
+
# │ ┌──────────────────────────────────────────────────────────────┐ │
|
|
171
|
+
# │ │ │ │
|
|
172
|
+
# │ │ 1. Message published to channel │ │
|
|
173
|
+
# │ │ 2. Subscriber tries to process │ │
|
|
174
|
+
# │ │ 3. Processing fails (exception, timeout, etc.) │ │
|
|
175
|
+
# │ │ 4. Message redelivered (attempt 2/3) │ │
|
|
176
|
+
# │ │ 5. Processing fails again │ │
|
|
177
|
+
# │ │ 6. Message redelivered (attempt 3/3) │ │
|
|
178
|
+
# │ │ 7. Processing fails again │ │
|
|
179
|
+
# │ │ 8. Max retries exceeded │ │
|
|
180
|
+
# │ │ 9. Message moved to Dead Letter Queue │ │
|
|
181
|
+
# │ │ 10. Alert sent to ops team │ │
|
|
182
|
+
# │ │ │ │
|
|
183
|
+
# │ └──────────────────────────────────────────────────────────────┘ │
|
|
184
|
+
# │ │
|
|
185
|
+
# │ DLQ Configuration: │
|
|
186
|
+
# │ • max_retries: How many times to retry (e.g., 3) │
|
|
187
|
+
# │ • backoff_multiplier: Delay between retries (exponential) │
|
|
188
|
+
# │ - Attempt 1: immediate │
|
|
189
|
+
# │ - Attempt 2: 2 seconds │
|
|
190
|
+
# │ - Attempt 3: 4 seconds │
|
|
191
|
+
# │ - Attempt 4: 8 seconds │
|
|
192
|
+
# │ │
|
|
193
|
+
# │ DLQ Operations: │
|
|
194
|
+
# │ • Inspect failed messages (debug why they failed) │
|
|
195
|
+
# │ • Fix subscriber bug │
|
|
196
|
+
# │ • Replay messages from DLQ (try again) │
|
|
197
|
+
# │ • Discard messages (if truly invalid) │
|
|
198
|
+
# │ │
|
|
199
|
+
# │ Common DLQ scenarios: │
|
|
200
|
+
# │ • Malformed message (invalid JSON) │
|
|
201
|
+
# │ • Subscriber bug (code exception) │
|
|
202
|
+
# │ • External service down (database, API) │
|
|
203
|
+
# │ • Resource exhaustion (out of memory) │
|
|
204
|
+
# │ │
|
|
205
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
206
|
+
#
|
|
207
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
208
|
+
# │ CHANNEL NAMING CONVENTIONS │
|
|
209
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
210
|
+
# │ │
|
|
211
|
+
# │ Good channel names are hierarchical and descriptive: │
|
|
212
|
+
# │ │
|
|
213
|
+
# │ Pattern: <domain>.<entity>.<event> │
|
|
214
|
+
# │ │
|
|
215
|
+
# │ Examples: │
|
|
216
|
+
# │ ✓ security.vulnerabilities → Security domain, vulnerability events│
|
|
217
|
+
# │ ✓ security.scan.completed → Security domain, scan completion │
|
|
218
|
+
# │ ✓ code.pr.opened → Code domain, PR opened │
|
|
219
|
+
# │ ✓ code.pr.merged → Code domain, PR merged │
|
|
220
|
+
# │ ✓ ci.build.completed → CI domain, build completion │
|
|
221
|
+
# │ ✓ deployment.production.success → Deployment domain, prod success │
|
|
222
|
+
# │ │
|
|
223
|
+
# │ Bad examples: │
|
|
224
|
+
# │ ✗ updates → Too vague │
|
|
225
|
+
# │ ✗ myChannel → Not descriptive │
|
|
226
|
+
# │ ✗ SECURITY_VULNS → Use lowercase │
|
|
227
|
+
# │ ✗ security-vulnerabilities → Use dots, not hyphens │
|
|
228
|
+
# │ │
|
|
229
|
+
# │ Wildcard subscriptions (supported): │
|
|
230
|
+
# │ • security.* → All security events │
|
|
231
|
+
# │ • *.pr.* → All PR events across domains │
|
|
232
|
+
# │ • security.vulnerabilities.critical → Only critical vulnerabilities │
|
|
233
|
+
# │ │
|
|
234
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
235
|
+
#
|
|
236
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
237
|
+
# │ HOW TO RUN THIS EXAMPLE │
|
|
238
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
239
|
+
# │ │
|
|
240
|
+
# │ STEP 1: Start a message broker │
|
|
241
|
+
# │ ───────────────────────────── │
|
|
242
|
+
# │ OSSA uses standard message brokers (NATS, RabbitMQ, Redis, Kafka) │
|
|
243
|
+
# │ │
|
|
244
|
+
# │ Option A: NATS (recommended for development): │
|
|
245
|
+
# │ $ docker run -p 4222:4222 nats:latest │
|
|
246
|
+
# │ │
|
|
247
|
+
# │ Option B: RabbitMQ: │
|
|
248
|
+
# │ $ docker run -p 5672:5672 rabbitmq:latest │
|
|
249
|
+
# │ │
|
|
250
|
+
# │ Option C: Redis: │
|
|
251
|
+
# │ $ docker run -p 6379:6379 redis:latest │
|
|
252
|
+
# │ │
|
|
253
|
+
# │ STEP 2: Set environment variables │
|
|
254
|
+
# │ ──────────────────────────────── │
|
|
255
|
+
# │ $ export ANTHROPIC_API_KEY=sk-ant-... │
|
|
256
|
+
# │ $ export MESSAGE_BROKER_URL=nats://localhost:4222 │
|
|
257
|
+
# │ $ export GITHUB_TOKEN=ghp_... # For GitHub MCP tool │
|
|
258
|
+
# │ │
|
|
259
|
+
# │ STEP 3: Start the security scanner agent │
|
|
260
|
+
# │ ─────────────────────────────────────── │
|
|
261
|
+
# │ $ ossa run 04-agent-with-messaging.ossa.yaml --daemon │
|
|
262
|
+
# │ │
|
|
263
|
+
# │ The agent will: │
|
|
264
|
+
# │ • Connect to message broker │
|
|
265
|
+
# │ • Subscribe to: dependency.updates, ci.build.completed │
|
|
266
|
+
# │ • Register commands: scan_repository, get_scan_status │
|
|
267
|
+
# │ • Wait for messages │
|
|
268
|
+
# │ │
|
|
269
|
+
# │ STEP 4: Trigger a scan via command │
|
|
270
|
+
# │ ───────────────────────────────────── │
|
|
271
|
+
# │ $ ossa command security-scanner scan_repository \ │
|
|
272
|
+
# │ --args '{"repo_url":"https://github.com/myorg/myrepo","priority":"urgent"}'│
|
|
273
|
+
# │ │
|
|
274
|
+
# │ Response: │
|
|
275
|
+
# │ { │
|
|
276
|
+
# │ "scan_id": "550e8400-e29b-41d4-a716-446655440000", │
|
|
277
|
+
# │ "status": "started" │
|
|
278
|
+
# │ } │
|
|
279
|
+
# │ │
|
|
280
|
+
# │ STEP 5: Monitor published events │
|
|
281
|
+
# │ ──────────────────────────────── │
|
|
282
|
+
# │ $ ossa subscribe security.vulnerabilities │
|
|
283
|
+
# │ │
|
|
284
|
+
# │ You'll see vulnerability events as they're published: │
|
|
285
|
+
# │ { │
|
|
286
|
+
# │ "severity": "critical", │
|
|
287
|
+
# │ "title": "SQL Injection in auth module", │
|
|
288
|
+
# │ "cve_id": "CVE-2024-1234", │
|
|
289
|
+
# │ "affected_file": "src/auth/login.py", │
|
|
290
|
+
# │ "remediation": "Update to version 2.1.0" │
|
|
291
|
+
# │ } │
|
|
292
|
+
# │ │
|
|
293
|
+
# │ STEP 6: Create a subscriber agent │
|
|
294
|
+
# │ ─────────────────────────────────── │
|
|
295
|
+
# │ Create a second agent that subscribes to security.vulnerabilities: │
|
|
296
|
+
# │ │
|
|
297
|
+
# │ ```yaml │
|
|
298
|
+
# │ # remediation-agent.ossa.yaml │
|
|
299
|
+
# │ apiVersion: ossa/v0.3.0 │
|
|
300
|
+
# │ kind: Agent │
|
|
301
|
+
# │ metadata: │
|
|
302
|
+
# │ name: remediation-agent │
|
|
303
|
+
# │ spec: │
|
|
304
|
+
# │ role: "Fix security vulnerabilities" │
|
|
305
|
+
# │ messaging: │
|
|
306
|
+
# │ subscribes: │
|
|
307
|
+
# │ - channel: security.vulnerabilities │
|
|
308
|
+
# │ handler: on_vulnerability_found │
|
|
309
|
+
# │ ``` │
|
|
310
|
+
# │ │
|
|
311
|
+
# │ Run it: │
|
|
312
|
+
# │ $ ossa run remediation-agent.ossa.yaml --daemon │
|
|
313
|
+
# │ │
|
|
314
|
+
# │ Now when scanner publishes vulnerabilities, remediation agent reacts! │
|
|
315
|
+
# │ │
|
|
316
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
317
|
+
#
|
|
318
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
319
|
+
# THE ACTUAL MANIFEST STARTS HERE
|
|
320
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
321
|
+
|
|
322
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
323
|
+
# API VERSION & KIND
|
|
324
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
325
|
+
apiVersion: ossa/v0.3.0
|
|
326
|
+
kind: Agent
|
|
327
|
+
|
|
328
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
329
|
+
# METADATA
|
|
330
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
331
|
+
metadata:
|
|
332
|
+
name: security-scanner
|
|
333
|
+
version: 1.0.0
|
|
334
|
+
|
|
335
|
+
description: |
|
|
336
|
+
Security scanning agent demonstrating Agent-to-Agent (A2A) messaging.
|
|
337
|
+
|
|
338
|
+
PUBLISHES TO:
|
|
339
|
+
• security.vulnerabilities - Vulnerability findings
|
|
340
|
+
• security.scan.completed - Scan completion notifications
|
|
341
|
+
|
|
342
|
+
SUBSCRIBES TO:
|
|
343
|
+
• dependency.updates - Trigger scan when dependencies change
|
|
344
|
+
• ci.build.completed - Trigger scan after successful builds
|
|
345
|
+
|
|
346
|
+
COMMANDS:
|
|
347
|
+
• scan_repository - On-demand security scan
|
|
348
|
+
• get_scan_status - Query scan progress
|
|
349
|
+
|
|
350
|
+
This agent demonstrates:
|
|
351
|
+
- Pub/sub pattern for event broadcasting
|
|
352
|
+
- Command pattern for RPC-style invocation
|
|
353
|
+
- JSON Schema message validation
|
|
354
|
+
- At-least-once delivery with dead letter queue
|
|
355
|
+
- Message filtering based on payload
|
|
356
|
+
|
|
357
|
+
labels:
|
|
358
|
+
difficulty: intermediate
|
|
359
|
+
tutorial: "04"
|
|
360
|
+
capability: security
|
|
361
|
+
pattern: multi-agent
|
|
362
|
+
|
|
363
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
364
|
+
# SPEC
|
|
365
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
366
|
+
spec:
|
|
367
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
368
|
+
# ROLE (System Prompt)
|
|
369
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
370
|
+
role: |
|
|
371
|
+
You are a security scanner agent in a multi-agent system.
|
|
372
|
+
|
|
373
|
+
Your responsibilities:
|
|
374
|
+
1. Scan code repositories for security vulnerabilities
|
|
375
|
+
2. Publish findings to security.vulnerabilities channel for other agents
|
|
376
|
+
3. React to dependency update notifications by triggering scans
|
|
377
|
+
4. Respond to on-demand scan requests via commands
|
|
378
|
+
|
|
379
|
+
Communication guidelines:
|
|
380
|
+
- Publish vulnerability events immediately when found (don't batch)
|
|
381
|
+
- Include complete context in each message (scan_id, repo, severity)
|
|
382
|
+
- Log all message publications for audit trail
|
|
383
|
+
- Handle duplicate messages gracefully (idempotency)
|
|
384
|
+
|
|
385
|
+
When publishing vulnerabilities:
|
|
386
|
+
- Set severity accurately (critical/high/medium/low)
|
|
387
|
+
- Include CVE ID if available
|
|
388
|
+
- Provide clear remediation steps
|
|
389
|
+
- Reference the specific file and line number
|
|
390
|
+
|
|
391
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
392
|
+
# LLM CONFIGURATION
|
|
393
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
394
|
+
llm:
|
|
395
|
+
provider: ${LLM_PROVIDER:-anthropic}
|
|
396
|
+
model: ${LLM_MODEL:-claude-sonnet-4-20250514}
|
|
397
|
+
|
|
398
|
+
# Low temperature for consistent security analysis
|
|
399
|
+
temperature: 0.2
|
|
400
|
+
|
|
401
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
402
|
+
# TOOLS
|
|
403
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
404
|
+
tools:
|
|
405
|
+
# GitHub API for repository access
|
|
406
|
+
- type: mcp
|
|
407
|
+
name: github
|
|
408
|
+
description: GitHub API for repository access
|
|
409
|
+
config:
|
|
410
|
+
server: npx -y @modelcontextprotocol/server-github
|
|
411
|
+
env:
|
|
412
|
+
GITHUB_TOKEN: ${GITHUB_TOKEN}
|
|
413
|
+
|
|
414
|
+
# Custom security scanner function
|
|
415
|
+
- type: function
|
|
416
|
+
name: run_security_scan
|
|
417
|
+
description: |
|
|
418
|
+
Execute security analysis on a codebase.
|
|
419
|
+
Scans for: SQL injection, XSS, CSRF, dependency vulnerabilities,
|
|
420
|
+
hardcoded secrets, authentication issues.
|
|
421
|
+
input_schema:
|
|
422
|
+
type: object
|
|
423
|
+
required: [repo_url]
|
|
424
|
+
properties:
|
|
425
|
+
repo_url:
|
|
426
|
+
type: string
|
|
427
|
+
description: Repository URL to scan
|
|
428
|
+
scan_type:
|
|
429
|
+
type: string
|
|
430
|
+
enum: [quick, full, dependency]
|
|
431
|
+
default: quick
|
|
432
|
+
description: |
|
|
433
|
+
• quick: Fast scan, common issues only (5-10 minutes)
|
|
434
|
+
• full: Comprehensive scan, all rules (30-60 minutes)
|
|
435
|
+
• dependency: Dependency vulnerabilities only (2-5 minutes)
|
|
436
|
+
|
|
437
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
438
|
+
# MESSAGING CONFIGURATION (v0.3.0 Feature)
|
|
439
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
440
|
+
# Define how this agent communicates with other agents
|
|
441
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
442
|
+
messaging:
|
|
443
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
444
|
+
# CHANNELS THIS AGENT PUBLISHES TO
|
|
445
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
446
|
+
# Other agents subscribe to these channels to receive events
|
|
447
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
448
|
+
publishes:
|
|
449
|
+
# Channel 1: Individual vulnerability findings
|
|
450
|
+
- channel: security.vulnerabilities
|
|
451
|
+
description: Security vulnerabilities found during scans
|
|
452
|
+
|
|
453
|
+
# Message schema - validates outgoing messages
|
|
454
|
+
# Subscribers can rely on this structure
|
|
455
|
+
schema:
|
|
456
|
+
type: object
|
|
457
|
+
required: [severity, title, affected_file, scan_id]
|
|
458
|
+
properties:
|
|
459
|
+
severity:
|
|
460
|
+
type: string
|
|
461
|
+
enum: [critical, high, medium, low, info]
|
|
462
|
+
description: |
|
|
463
|
+
Severity level following CVSS guidelines:
|
|
464
|
+
• critical: CVSS 9.0-10.0, immediate action required
|
|
465
|
+
• high: CVSS 7.0-8.9, fix urgently
|
|
466
|
+
• medium: CVSS 4.0-6.9, fix soon
|
|
467
|
+
• low: CVSS 0.1-3.9, fix eventually
|
|
468
|
+
• info: CVSS 0.0, informational only
|
|
469
|
+
|
|
470
|
+
title:
|
|
471
|
+
type: string
|
|
472
|
+
minLength: 10
|
|
473
|
+
maxLength: 200
|
|
474
|
+
description: Brief, descriptive vulnerability title
|
|
475
|
+
|
|
476
|
+
cve_id:
|
|
477
|
+
type: string
|
|
478
|
+
pattern: "^CVE-\\d{4}-\\d{4,}$"
|
|
479
|
+
description: CVE identifier if available (e.g., CVE-2024-1234)
|
|
480
|
+
|
|
481
|
+
affected_file:
|
|
482
|
+
type: string
|
|
483
|
+
description: File path where vulnerability was found
|
|
484
|
+
|
|
485
|
+
line_number:
|
|
486
|
+
type: integer
|
|
487
|
+
minimum: 1
|
|
488
|
+
description: Line number in file (if applicable)
|
|
489
|
+
|
|
490
|
+
description:
|
|
491
|
+
type: string
|
|
492
|
+
description: Detailed explanation of the vulnerability
|
|
493
|
+
|
|
494
|
+
remediation:
|
|
495
|
+
type: string
|
|
496
|
+
description: How to fix the vulnerability
|
|
497
|
+
|
|
498
|
+
scan_id:
|
|
499
|
+
type: string
|
|
500
|
+
format: uuid
|
|
501
|
+
description: UUID of the scan that found this vulnerability
|
|
502
|
+
|
|
503
|
+
repo_url:
|
|
504
|
+
type: string
|
|
505
|
+
format: uri
|
|
506
|
+
description: Repository where vulnerability was found
|
|
507
|
+
|
|
508
|
+
found_at:
|
|
509
|
+
type: string
|
|
510
|
+
format: date-time
|
|
511
|
+
description: Timestamp when vulnerability was detected
|
|
512
|
+
|
|
513
|
+
# Optional: Message retention
|
|
514
|
+
# retention_hours: 168 # Keep messages for 7 days
|
|
515
|
+
|
|
516
|
+
# Optional: Message priority
|
|
517
|
+
# priority: high # High-priority messages delivered first
|
|
518
|
+
|
|
519
|
+
# Channel 2: Scan completion notifications
|
|
520
|
+
- channel: security.scan.completed
|
|
521
|
+
description: Notification when a security scan completes
|
|
522
|
+
|
|
523
|
+
schema:
|
|
524
|
+
type: object
|
|
525
|
+
required: [scan_id, repo_url, status]
|
|
526
|
+
properties:
|
|
527
|
+
scan_id:
|
|
528
|
+
type: string
|
|
529
|
+
format: uuid
|
|
530
|
+
description: UUID of the completed scan
|
|
531
|
+
|
|
532
|
+
repo_url:
|
|
533
|
+
type: string
|
|
534
|
+
format: uri
|
|
535
|
+
description: Repository that was scanned
|
|
536
|
+
|
|
537
|
+
status:
|
|
538
|
+
type: string
|
|
539
|
+
enum: [completed, failed, partial]
|
|
540
|
+
description: |
|
|
541
|
+
• completed: Scan finished successfully
|
|
542
|
+
• failed: Scan encountered fatal error
|
|
543
|
+
• partial: Scan completed with warnings/skipped files
|
|
544
|
+
|
|
545
|
+
duration_seconds:
|
|
546
|
+
type: integer
|
|
547
|
+
minimum: 0
|
|
548
|
+
description: How long the scan took
|
|
549
|
+
|
|
550
|
+
findings_count:
|
|
551
|
+
type: object
|
|
552
|
+
description: Count of findings by severity
|
|
553
|
+
properties:
|
|
554
|
+
critical:
|
|
555
|
+
type: integer
|
|
556
|
+
high:
|
|
557
|
+
type: integer
|
|
558
|
+
medium:
|
|
559
|
+
type: integer
|
|
560
|
+
low:
|
|
561
|
+
type: integer
|
|
562
|
+
info:
|
|
563
|
+
type: integer
|
|
564
|
+
|
|
565
|
+
files_scanned:
|
|
566
|
+
type: integer
|
|
567
|
+
minimum: 0
|
|
568
|
+
description: Number of files analyzed
|
|
569
|
+
|
|
570
|
+
completed_at:
|
|
571
|
+
type: string
|
|
572
|
+
format: date-time
|
|
573
|
+
description: Scan completion timestamp
|
|
574
|
+
|
|
575
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
576
|
+
# CHANNELS THIS AGENT SUBSCRIBES TO
|
|
577
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
578
|
+
# Agent is invoked when messages arrive on these channels
|
|
579
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
580
|
+
subscribes:
|
|
581
|
+
# Subscription 1: Dependency update notifications
|
|
582
|
+
- channel: dependency.updates
|
|
583
|
+
description: Listen for dependency update notifications
|
|
584
|
+
|
|
585
|
+
# Handler function name - maps to agent's internal logic
|
|
586
|
+
# When message arrives, agent's on_dependency_update() is called
|
|
587
|
+
handler: on_dependency_update
|
|
588
|
+
|
|
589
|
+
# Message filter - only process subset of messages
|
|
590
|
+
# Filters are evaluated BEFORE message is delivered to agent
|
|
591
|
+
# This saves LLM calls for irrelevant messages
|
|
592
|
+
filter:
|
|
593
|
+
# JSONPath-style filtering
|
|
594
|
+
# Only process critical/high severity updates
|
|
595
|
+
severity:
|
|
596
|
+
$in: [critical, high]
|
|
597
|
+
|
|
598
|
+
# Alternative filter syntax examples:
|
|
599
|
+
# package_name:
|
|
600
|
+
# $regex: "^django.*" # Only Django packages
|
|
601
|
+
# affected_versions:
|
|
602
|
+
# $contains: "2.1.0" # Only if affects version 2.1.0
|
|
603
|
+
|
|
604
|
+
# Optional: Batch processing
|
|
605
|
+
# batch:
|
|
606
|
+
# max_size: 10 # Process up to 10 messages at once
|
|
607
|
+
# timeout_seconds: 5 # Or batch after 5 seconds
|
|
608
|
+
|
|
609
|
+
# Subscription 2: CI build completion
|
|
610
|
+
- channel: ci.build.completed
|
|
611
|
+
description: Trigger security scan when builds complete
|
|
612
|
+
|
|
613
|
+
handler: on_build_completed
|
|
614
|
+
|
|
615
|
+
# Only scan successful builds (ignore failures)
|
|
616
|
+
filter:
|
|
617
|
+
build_status:
|
|
618
|
+
$eq: "success"
|
|
619
|
+
|
|
620
|
+
# Optional: Subscription priority
|
|
621
|
+
# priority: high # Process these messages first
|
|
622
|
+
|
|
623
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
624
|
+
# COMMANDS THIS AGENT ACCEPTS
|
|
625
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
626
|
+
# RPC-style request/response operations
|
|
627
|
+
# Other agents/systems can invoke these commands and get responses
|
|
628
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
629
|
+
commands:
|
|
630
|
+
# Command 1: Trigger on-demand security scan
|
|
631
|
+
- name: scan_repository
|
|
632
|
+
description: Trigger a security scan of a repository
|
|
633
|
+
|
|
634
|
+
# Input schema - validates incoming command arguments
|
|
635
|
+
input_schema:
|
|
636
|
+
type: object
|
|
637
|
+
required: [repo_url]
|
|
638
|
+
properties:
|
|
639
|
+
repo_url:
|
|
640
|
+
type: string
|
|
641
|
+
format: uri
|
|
642
|
+
description: Repository URL to scan
|
|
643
|
+
example: "https://github.com/myorg/myrepo"
|
|
644
|
+
|
|
645
|
+
priority:
|
|
646
|
+
type: string
|
|
647
|
+
enum: [urgent, normal, low]
|
|
648
|
+
default: normal
|
|
649
|
+
description: |
|
|
650
|
+
• urgent: Queue jump, scan immediately (SLA: 5 minutes)
|
|
651
|
+
• normal: Standard queue (SLA: 30 minutes)
|
|
652
|
+
• low: Background scan (SLA: 4 hours)
|
|
653
|
+
|
|
654
|
+
scan_type:
|
|
655
|
+
type: string
|
|
656
|
+
enum: [quick, full, dependency]
|
|
657
|
+
default: quick
|
|
658
|
+
description: Type of scan to perform
|
|
659
|
+
|
|
660
|
+
notify_channels:
|
|
661
|
+
type: array
|
|
662
|
+
description: Additional channels to notify (beyond security.vulnerabilities)
|
|
663
|
+
items:
|
|
664
|
+
type: string
|
|
665
|
+
example: ["slack:security-team", "email:security@company.com"]
|
|
666
|
+
|
|
667
|
+
# Output schema - what the command returns
|
|
668
|
+
# Caller receives this structured response
|
|
669
|
+
output_schema:
|
|
670
|
+
type: object
|
|
671
|
+
required: [scan_id, status]
|
|
672
|
+
properties:
|
|
673
|
+
scan_id:
|
|
674
|
+
type: string
|
|
675
|
+
format: uuid
|
|
676
|
+
description: Unique scan identifier (use to query status later)
|
|
677
|
+
|
|
678
|
+
status:
|
|
679
|
+
type: string
|
|
680
|
+
enum: [queued, started, completed, failed]
|
|
681
|
+
description: Current scan status
|
|
682
|
+
|
|
683
|
+
estimated_completion:
|
|
684
|
+
type: string
|
|
685
|
+
format: date-time
|
|
686
|
+
description: When scan is expected to complete
|
|
687
|
+
|
|
688
|
+
queue_position:
|
|
689
|
+
type: integer
|
|
690
|
+
minimum: 0
|
|
691
|
+
description: Position in scan queue (if status=queued)
|
|
692
|
+
|
|
693
|
+
# Optional: Command timeout
|
|
694
|
+
# timeout_seconds: 300 # 5 minutes max
|
|
695
|
+
|
|
696
|
+
# Command 2: Query scan status
|
|
697
|
+
- name: get_scan_status
|
|
698
|
+
description: Get status of an ongoing or completed scan
|
|
699
|
+
|
|
700
|
+
input_schema:
|
|
701
|
+
type: object
|
|
702
|
+
required: [scan_id]
|
|
703
|
+
properties:
|
|
704
|
+
scan_id:
|
|
705
|
+
type: string
|
|
706
|
+
format: uuid
|
|
707
|
+
description: Scan ID returned from scan_repository command
|
|
708
|
+
|
|
709
|
+
output_schema:
|
|
710
|
+
type: object
|
|
711
|
+
properties:
|
|
712
|
+
scan_id:
|
|
713
|
+
type: string
|
|
714
|
+
format: uuid
|
|
715
|
+
|
|
716
|
+
status:
|
|
717
|
+
type: string
|
|
718
|
+
enum: [queued, started, completed, failed]
|
|
719
|
+
|
|
720
|
+
progress_percent:
|
|
721
|
+
type: number
|
|
722
|
+
minimum: 0
|
|
723
|
+
maximum: 100
|
|
724
|
+
description: Scan progress (0-100)
|
|
725
|
+
|
|
726
|
+
files_scanned:
|
|
727
|
+
type: integer
|
|
728
|
+
description: Files analyzed so far
|
|
729
|
+
|
|
730
|
+
findings_count:
|
|
731
|
+
type: object
|
|
732
|
+
description: Vulnerabilities found so far
|
|
733
|
+
properties:
|
|
734
|
+
critical:
|
|
735
|
+
type: integer
|
|
736
|
+
high:
|
|
737
|
+
type: integer
|
|
738
|
+
medium:
|
|
739
|
+
type: integer
|
|
740
|
+
|
|
741
|
+
started_at:
|
|
742
|
+
type: string
|
|
743
|
+
format: date-time
|
|
744
|
+
|
|
745
|
+
completed_at:
|
|
746
|
+
type: string
|
|
747
|
+
format: date-time
|
|
748
|
+
description: Only present if status=completed or failed
|
|
749
|
+
|
|
750
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
751
|
+
# MESSAGE RELIABILITY CONFIGURATION
|
|
752
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
753
|
+
# Controls delivery guarantees and failure handling
|
|
754
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
755
|
+
reliability:
|
|
756
|
+
# Delivery guarantee
|
|
757
|
+
# ┌──────────────────┬────────────────────────────────────────────────────┐
|
|
758
|
+
# │ MODE │ GUARANTEE │
|
|
759
|
+
# ├──────────────────┼────────────────────────────────────────────────────┤
|
|
760
|
+
# │ at_most_once │ Fast, may lose messages │
|
|
761
|
+
# │ at_least_once │ Reliable, may have duplicates (RECOMMENDED) │
|
|
762
|
+
# │ exactly_once │ Slow, no duplicates, requires transactions │
|
|
763
|
+
# └──────────────────┴────────────────────────────────────────────────────┘
|
|
764
|
+
delivery: at_least_once
|
|
765
|
+
|
|
766
|
+
# Message ordering
|
|
767
|
+
# Determines if messages are processed in order
|
|
768
|
+
ordering:
|
|
769
|
+
# Ordering mode
|
|
770
|
+
# • global: All messages across all channels ordered
|
|
771
|
+
# • per_channel: Messages within each channel ordered
|
|
772
|
+
# • none: No ordering guarantees (fastest)
|
|
773
|
+
mode: per_channel
|
|
774
|
+
|
|
775
|
+
# Optional: Ordering key
|
|
776
|
+
# Messages with same key processed in order
|
|
777
|
+
# key_field: scan_id # Order by scan_id
|
|
778
|
+
|
|
779
|
+
# Dead Letter Queue (DLQ) - handles failed messages
|
|
780
|
+
dead_letter_queue:
|
|
781
|
+
enabled: true
|
|
782
|
+
|
|
783
|
+
# Maximum retry attempts before moving to DLQ
|
|
784
|
+
# Example: 3 attempts = original + 2 retries
|
|
785
|
+
max_retries: 3
|
|
786
|
+
|
|
787
|
+
# Exponential backoff multiplier
|
|
788
|
+
# Attempt 1: immediate
|
|
789
|
+
# Attempt 2: 2 seconds (base_delay * multiplier^1)
|
|
790
|
+
# Attempt 3: 4 seconds (base_delay * multiplier^2)
|
|
791
|
+
# Attempt 4: 8 seconds (base_delay * multiplier^3)
|
|
792
|
+
backoff_multiplier: 2
|
|
793
|
+
|
|
794
|
+
# Base delay for first retry (seconds)
|
|
795
|
+
base_delay_seconds: 2
|
|
796
|
+
|
|
797
|
+
# Optional: DLQ message retention
|
|
798
|
+
# dlq_retention_hours: 168 # Keep failed messages for 7 days
|
|
799
|
+
|
|
800
|
+
# Optional: DLQ alerting
|
|
801
|
+
# dlq_alert_threshold: 10 # Alert if >10 messages in DLQ
|
|
802
|
+
|
|
803
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
804
|
+
# SUMMARY: AGENT-TO-AGENT MESSAGING
|
|
805
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
806
|
+
#
|
|
807
|
+
# This agent demonstrates:
|
|
808
|
+
# ✓ Publishing events to channels (pub/sub pattern)
|
|
809
|
+
# ✓ Subscribing to events from other agents
|
|
810
|
+
# ✓ Accepting commands (RPC pattern)
|
|
811
|
+
# ✓ JSON Schema message validation
|
|
812
|
+
# ✓ Message filtering (only process relevant messages)
|
|
813
|
+
# ✓ At-least-once delivery with retries
|
|
814
|
+
# ✓ Dead letter queue for failed messages
|
|
815
|
+
# ✓ Per-channel message ordering
|
|
816
|
+
#
|
|
817
|
+
# Multi-agent architecture:
|
|
818
|
+
# → Decouple agents (loose coupling)
|
|
819
|
+
# → Scale independently (horizontal scaling)
|
|
820
|
+
# → Event-driven workflows (react to changes)
|
|
821
|
+
# → Fault tolerance (retries, DLQ)
|
|
822
|
+
#
|
|
823
|
+
# Next example (05-workflow-composition.ossa.yaml):
|
|
824
|
+
# → Orchestrate multiple agents into workflows
|
|
825
|
+
# → DAGs (directed acyclic graphs)
|
|
826
|
+
# → Parallel execution
|
|
827
|
+
# → Error handling and compensation
|
|
828
|
+
#
|
|
829
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|