@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,866 @@
|
|
|
1
|
+
# ╔═══════════════════════════════════════════════════════════════════════════════╗
|
|
2
|
+
# ║ ║
|
|
3
|
+
# ║ ██████╗ ███████╗███████╗ █████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ║
|
|
4
|
+
# ║ ██╔═══██╗██╔════╝██╔════╝██╔══██╗ ██║ ██║██╔═████╗ ╚════██╗██╔═████╗ ║
|
|
5
|
+
# ║ ██║ ██║███████╗███████╗███████║ ██║ ██║██║██╔██║ █████╔╝██║██╔██║ ║
|
|
6
|
+
# ║ ██║ ██║╚════██║╚════██║██╔══██║ ╚██╗ ██╔╝████╔╝██║ ╚═══██╗████╔╝██║ ║
|
|
7
|
+
# ║ ╚██████╔╝███████║███████║██║ ██║ ╚████╔╝ ╚██████╔╝██╗██████╔╝╚██████╔╝ ║
|
|
8
|
+
# ║ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝╚═════╝ ╚═════╝ ║
|
|
9
|
+
# ║ ║
|
|
10
|
+
# ║ GETTING STARTED: 02 - AGENT WITH TOOLS ║
|
|
11
|
+
# ║ ║
|
|
12
|
+
# ╚═══════════════════════════════════════════════════════════════════════════════╝
|
|
13
|
+
#
|
|
14
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
15
|
+
# │ WHAT YOU'LL LEARN │
|
|
16
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
17
|
+
# │ │
|
|
18
|
+
# │ ✓ How to give agents TOOLS to interact with external systems │
|
|
19
|
+
# │ ✓ MCP (Model Context Protocol) - the standard for agent tools │
|
|
20
|
+
# │ ✓ Function tools - custom capabilities with JSON Schema │
|
|
21
|
+
# │ ✓ How tools work: function calling → execution → result → LLM decision │
|
|
22
|
+
# │ ✓ Real example: GitHub API + filesystem + custom test runner │
|
|
23
|
+
# │ │
|
|
24
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
25
|
+
#
|
|
26
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
27
|
+
# │ WHAT ARE TOOLS? │
|
|
28
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
29
|
+
# │ │
|
|
30
|
+
# │ Tools are CAPABILITIES that extend what an agent can do beyond text. │
|
|
31
|
+
# │ │
|
|
32
|
+
# │ Without tools: Agent can only READ and WRITE text │
|
|
33
|
+
# │ With tools: Agent can INTERACT with the real world │
|
|
34
|
+
# │ │
|
|
35
|
+
# │ Think of tools like: │
|
|
36
|
+
# │ • A human brain (LLM) + hands (tools) to manipulate the environment │
|
|
37
|
+
# │ • A smart assistant who can actually DO things, not just talk │
|
|
38
|
+
# │ │
|
|
39
|
+
# │ Examples: │
|
|
40
|
+
# │ ┌───────────────────────────────────────────────────────────────────┐ │
|
|
41
|
+
# │ │ TOOL TYPE CAPABILITY EXAMPLE USE │ │
|
|
42
|
+
# │ ├───────────────────────────────────────────────────────────────────┤ │
|
|
43
|
+
# │ │ MCP (GitHub) Create PRs, issues, commits Code review │ │
|
|
44
|
+
# │ │ MCP (Filesystem) Read/write files Edit config │ │
|
|
45
|
+
# │ │ MCP (Database) Query PostgreSQL, MySQL Analyze data │ │
|
|
46
|
+
# │ │ MCP (Slack) Send messages, read channels Notifications │ │
|
|
47
|
+
# │ │ Function Custom logic in your runtime Run tests │ │
|
|
48
|
+
# │ │ API Call REST endpoints Weather, stocks │ │
|
|
49
|
+
# │ └───────────────────────────────────────────────────────────────────┘ │
|
|
50
|
+
# │ │
|
|
51
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
52
|
+
#
|
|
53
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
54
|
+
# │ HOW TOOLS WORK: THE FUNCTION CALLING FLOW │
|
|
55
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
56
|
+
# │ │
|
|
57
|
+
# │ 1. USER → "Create a PR for the new login feature" │
|
|
58
|
+
# │ │
|
|
59
|
+
# │ 2. LLM THINKS → │
|
|
60
|
+
# │ "I need to use the github tool's create_pull_request function" │
|
|
61
|
+
# │ │
|
|
62
|
+
# │ 3. LLM GENERATES FUNCTION CALL → │
|
|
63
|
+
# │ { │
|
|
64
|
+
# │ "tool": "github", │
|
|
65
|
+
# │ "function": "create_pull_request", │
|
|
66
|
+
# │ "arguments": { │
|
|
67
|
+
# │ "title": "Add new login feature", │
|
|
68
|
+
# │ "branch": "feature/login", │
|
|
69
|
+
# │ "base": "main" │
|
|
70
|
+
# │ } │
|
|
71
|
+
# │ } │
|
|
72
|
+
# │ │
|
|
73
|
+
# │ 4. RUNTIME EXECUTES → Calls GitHub API via MCP server │
|
|
74
|
+
# │ │
|
|
75
|
+
# │ 5. RUNTIME RETURNS RESULT → │
|
|
76
|
+
# │ { │
|
|
77
|
+
# │ "pr_number": 42, │
|
|
78
|
+
# │ "url": "https://github.com/org/repo/pull/42", │
|
|
79
|
+
# │ "status": "open" │
|
|
80
|
+
# │ } │
|
|
81
|
+
# │ │
|
|
82
|
+
# │ 6. LLM SEES RESULT → Formulates response to user │
|
|
83
|
+
# │ │
|
|
84
|
+
# │ 7. AGENT → "I've created PR #42 for the login feature. It's ready for review!" │
|
|
85
|
+
# │ │
|
|
86
|
+
# │ KEY INSIGHT: │
|
|
87
|
+
# │ The LLM DECIDES when to use tools. The runtime EXECUTES them. │
|
|
88
|
+
# │ This is called "agentic behavior" - the agent chooses its own actions. │
|
|
89
|
+
# │ │
|
|
90
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
91
|
+
#
|
|
92
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
93
|
+
# │ HOW TO RUN THIS EXAMPLE │
|
|
94
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
95
|
+
# │ │
|
|
96
|
+
# │ STEP 1: Install MCP servers you'll use │
|
|
97
|
+
# │ ──────────────────────────────────────── │
|
|
98
|
+
# │ MCP servers are published to npm. You don't need to install them globally - │
|
|
99
|
+
# │ the agent runtime will use npx to run them on-demand. │
|
|
100
|
+
# │ │
|
|
101
|
+
# │ Available MCP servers: │
|
|
102
|
+
# │ • @modelcontextprotocol/server-github - GitHub API │
|
|
103
|
+
# │ • @modelcontextprotocol/server-filesystem - File operations │
|
|
104
|
+
# │ • @modelcontextprotocol/server-postgres - PostgreSQL queries │
|
|
105
|
+
# │ • @modelcontextprotocol/server-slack - Slack integration │
|
|
106
|
+
# │ • @modelcontextprotocol/server-memory - Persistent memory │
|
|
107
|
+
# │ │
|
|
108
|
+
# │ Find more: https://github.com/modelcontextprotocol/servers │
|
|
109
|
+
# │ │
|
|
110
|
+
# │ STEP 2: Set required environment variables │
|
|
111
|
+
# │ ───────────────────────────────────────── │
|
|
112
|
+
# │ # LLM provider (from example 01) │
|
|
113
|
+
# │ $ export ANTHROPIC_API_KEY=sk-ant-... │
|
|
114
|
+
# │ │
|
|
115
|
+
# │ # GitHub tool authentication │
|
|
116
|
+
# │ $ export GITHUB_TOKEN=ghp_... │
|
|
117
|
+
# │ # Get token: https://github.com/settings/tokens │
|
|
118
|
+
# │ # Required scopes: repo, read:user │
|
|
119
|
+
# │ │
|
|
120
|
+
# │ STEP 3: Validate the manifest │
|
|
121
|
+
# │ ──────────────────────────── │
|
|
122
|
+
# │ $ ossa validate 02-agent-with-tools.ossa.yaml │
|
|
123
|
+
# │ │
|
|
124
|
+
# │ Expected output: │
|
|
125
|
+
# │ ✓ Schema validation passed │
|
|
126
|
+
# │ ✓ Tools configuration valid │
|
|
127
|
+
# │ ✓ MCP server paths resolved │
|
|
128
|
+
# │ ✓ Ready to run │
|
|
129
|
+
# │ │
|
|
130
|
+
# │ STEP 4: Run the agent interactively │
|
|
131
|
+
# │ ──────────────────────────────────── │
|
|
132
|
+
# │ $ ossa run 02-agent-with-tools.ossa.yaml --interactive │
|
|
133
|
+
# │ │
|
|
134
|
+
# │ Try these prompts: │
|
|
135
|
+
# │ │
|
|
136
|
+
# │ > List files in /workspace │
|
|
137
|
+
# │ Agent: [Uses filesystem tool to list directory] │
|
|
138
|
+
# │ I found 15 files in /workspace: ... │
|
|
139
|
+
# │ │
|
|
140
|
+
# │ > Read the README.md file │
|
|
141
|
+
# │ Agent: [Uses filesystem tool to read file] │
|
|
142
|
+
# │ The README contains: ... │
|
|
143
|
+
# │ │
|
|
144
|
+
# │ > What's my latest GitHub PR? │
|
|
145
|
+
# │ Agent: [Uses GitHub tool to list pull requests] │
|
|
146
|
+
# │ Your most recent PR is #42: "Add login feature" ... │
|
|
147
|
+
# │ │
|
|
148
|
+
# │ > Run the tests │
|
|
149
|
+
# │ Agent: [Uses run_tests function tool] │
|
|
150
|
+
# │ Tests passed: 47/47 ✓ │
|
|
151
|
+
# │ │
|
|
152
|
+
# │ STEP 5: Test MCP servers directly (debugging) │
|
|
153
|
+
# │ ───────────────────────────────────────────── │
|
|
154
|
+
# │ You can test MCP servers outside of OSSA: │
|
|
155
|
+
# │ │
|
|
156
|
+
# │ # List available tools in GitHub MCP server │
|
|
157
|
+
# │ $ npx @modelcontextprotocol/server-github list-tools │
|
|
158
|
+
# │ │
|
|
159
|
+
# │ # Test a specific function │
|
|
160
|
+
# │ $ npx @modelcontextprotocol/server-github call-tool \ │
|
|
161
|
+
# │ --tool get_pull_request \ │
|
|
162
|
+
# │ --args '{"repo":"owner/name","pr_number":42}' │
|
|
163
|
+
# │ │
|
|
164
|
+
# │ STEP 6: Monitor tool usage (observability) │
|
|
165
|
+
# │ ────────────────────────────────────────── │
|
|
166
|
+
# │ $ ossa run 02-agent-with-tools.ossa.yaml \ │
|
|
167
|
+
# │ --log-level debug \ │
|
|
168
|
+
# │ --trace-tools │
|
|
169
|
+
# │ │
|
|
170
|
+
# │ Shows: │
|
|
171
|
+
# │ • Which tools the agent chooses to use │
|
|
172
|
+
# │ • Arguments passed to each tool │
|
|
173
|
+
# │ • Results returned │
|
|
174
|
+
# │ • Decision-making process │
|
|
175
|
+
# │ │
|
|
176
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
177
|
+
#
|
|
178
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
179
|
+
# │ KEY CONCEPTS IN THIS EXAMPLE │
|
|
180
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
181
|
+
# │ │
|
|
182
|
+
# │ 1. MCP (Model Context Protocol) │
|
|
183
|
+
# │ ───────────────────────────── │
|
|
184
|
+
# │ An OPEN STANDARD for connecting LLMs to external tools. │
|
|
185
|
+
# │ Like OpenAPI for REST APIs, but for agent tools. │
|
|
186
|
+
# │ │
|
|
187
|
+
# │ MCP defines: │
|
|
188
|
+
# │ • How to describe available tools (JSON Schema) │
|
|
189
|
+
# │ • How to execute functions (standardized RPC) │
|
|
190
|
+
# │ • How to handle errors and retries │
|
|
191
|
+
# │ • How to stream results (for long operations) │
|
|
192
|
+
# │ │
|
|
193
|
+
# │ Why MCP? │
|
|
194
|
+
# │ • Write once, works with any LLM (Anthropic, OpenAI, Google, etc.) │
|
|
195
|
+
# │ • Rich ecosystem of pre-built servers (GitHub, Slack, DBs, etc.) │
|
|
196
|
+
# │ • Secure - tools run in separate processes with access controls │
|
|
197
|
+
# │ • Portable - same tool works across frameworks (LangChain, CrewAI, etc.) │
|
|
198
|
+
# │ │
|
|
199
|
+
# │ 2. MCP Server Lifecycle │
|
|
200
|
+
# │ ───────────────────── │
|
|
201
|
+
# │ When you run the agent: │
|
|
202
|
+
# │ │
|
|
203
|
+
# │ a) Runtime spawns MCP server process: │
|
|
204
|
+
# │ $ npx -y @modelcontextprotocol/server-github │
|
|
205
|
+
# │ │
|
|
206
|
+
# │ b) Server connects via stdio/HTTP and reports available tools: │
|
|
207
|
+
# │ { │
|
|
208
|
+
# │ "tools": [ │
|
|
209
|
+
# │ {"name": "create_pull_request", ...}, │
|
|
210
|
+
# │ {"name": "get_pull_request", ...}, │
|
|
211
|
+
# │ {"name": "create_issue", ...} │
|
|
212
|
+
# │ ] │
|
|
213
|
+
# │ } │
|
|
214
|
+
# │ │
|
|
215
|
+
# │ c) LLM receives tool descriptions in system prompt │
|
|
216
|
+
# │ │
|
|
217
|
+
# │ d) When LLM calls a tool, runtime forwards request to MCP server │
|
|
218
|
+
# │ │
|
|
219
|
+
# │ e) MCP server executes (e.g., calls GitHub API), returns result │
|
|
220
|
+
# │ │
|
|
221
|
+
# │ f) Runtime passes result back to LLM for next decision │
|
|
222
|
+
# │ │
|
|
223
|
+
# │ 3. Function Tools (Custom Logic) │
|
|
224
|
+
# │ ────────────────────────── │
|
|
225
|
+
# │ When no MCP server exists for your use case, write a function tool. │
|
|
226
|
+
# │ │
|
|
227
|
+
# │ Components: │
|
|
228
|
+
# │ • name: Unique identifier (e.g., "run_tests", "deploy_service") │
|
|
229
|
+
# │ • description: What it does (LLM uses this to decide when to call it) │
|
|
230
|
+
# │ • input_schema: JSON Schema defining valid arguments │
|
|
231
|
+
# │ • implementation: Provided by the runtime (Python, Node.js, etc.) │
|
|
232
|
+
# │ │
|
|
233
|
+
# │ Example flow: │
|
|
234
|
+
# │ 1. LLM decides to call run_tests with {"test_path": "tests/unit/"} │
|
|
235
|
+
# │ 2. Runtime validates arguments against input_schema │
|
|
236
|
+
# │ 3. Runtime executes your Python/Node.js function │
|
|
237
|
+
# │ 4. Function returns {"status": "passed", "count": 47} │
|
|
238
|
+
# │ 5. LLM sees result and responds to user │
|
|
239
|
+
# │ │
|
|
240
|
+
# │ 4. Tool Selection (How LLM Chooses) │
|
|
241
|
+
# │ ───────────────────────────────── │
|
|
242
|
+
# │ The LLM chooses tools based on: │
|
|
243
|
+
# │ │
|
|
244
|
+
# │ • User's request: "Create a PR" → github tool │
|
|
245
|
+
# │ • Tool descriptions: Detailed description helps LLM make right choice │
|
|
246
|
+
# │ • Context: Recent conversation, previous tool results │
|
|
247
|
+
# │ • Constraints: Autonomy rules (see example 03) │
|
|
248
|
+
# │ │
|
|
249
|
+
# │ Best practices: │
|
|
250
|
+
# │ ✓ Write DETAILED tool descriptions (when, why, what it returns) │
|
|
251
|
+
# │ ✓ Use descriptive parameter names (repo_url vs url) │
|
|
252
|
+
# │ ✓ Include examples in description: "Example: repo_url='owner/name'" │
|
|
253
|
+
# │ ✓ Specify constraints: "Only works for public repositories" │
|
|
254
|
+
# │ │
|
|
255
|
+
# │ 5. Tool Configuration Patterns │
|
|
256
|
+
# │ ──────────────────────────── │
|
|
257
|
+
# │ │
|
|
258
|
+
# │ MCP tool with environment variable: │
|
|
259
|
+
# │ ```yaml │
|
|
260
|
+
# │ - type: mcp │
|
|
261
|
+
# │ name: github │
|
|
262
|
+
# │ config: │
|
|
263
|
+
# │ server: npx -y @modelcontextprotocol/server-github │
|
|
264
|
+
# │ env: │
|
|
265
|
+
# │ GITHUB_TOKEN: ${GITHUB_TOKEN} # From environment │
|
|
266
|
+
# │ ``` │
|
|
267
|
+
# │ │
|
|
268
|
+
# │ MCP tool with arguments: │
|
|
269
|
+
# │ ```yaml │
|
|
270
|
+
# │ - type: mcp │
|
|
271
|
+
# │ name: filesystem │
|
|
272
|
+
# │ config: │
|
|
273
|
+
# │ server: npx -y @modelcontextprotocol/server-filesystem │
|
|
274
|
+
# │ args: │
|
|
275
|
+
# │ - /workspace # Allowed root directory │
|
|
276
|
+
# │ - --read-only false # Enable writes │
|
|
277
|
+
# │ ``` │
|
|
278
|
+
# │ │
|
|
279
|
+
# │ Function tool with complex schema: │
|
|
280
|
+
# │ ```yaml │
|
|
281
|
+
# │ - type: function │
|
|
282
|
+
# │ name: query_database │
|
|
283
|
+
# │ description: Run SQL queries (SELECT only, no mutations) │
|
|
284
|
+
# │ input_schema: │
|
|
285
|
+
# │ type: object │
|
|
286
|
+
# │ required: [query] │
|
|
287
|
+
# │ properties: │
|
|
288
|
+
# │ query: │
|
|
289
|
+
# │ type: string │
|
|
290
|
+
# │ description: SQL query to execute │
|
|
291
|
+
# │ pattern: "^SELECT.*" # Enforce SELECT only │
|
|
292
|
+
# │ limit: │
|
|
293
|
+
# │ type: integer │
|
|
294
|
+
# │ minimum: 1 │
|
|
295
|
+
# │ maximum: 1000 │
|
|
296
|
+
# │ default: 100 │
|
|
297
|
+
# │ ``` │
|
|
298
|
+
# │ │
|
|
299
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
300
|
+
#
|
|
301
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
302
|
+
# │ MCP SERVER DIRECTORY │
|
|
303
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
304
|
+
# │ │
|
|
305
|
+
# │ Official MCP servers (maintained by Anthropic): │
|
|
306
|
+
# │ https://github.com/modelcontextprotocol/servers │
|
|
307
|
+
# │ │
|
|
308
|
+
# │ DEVELOPMENT TOOLS │
|
|
309
|
+
# │ ──────────────────────────────────────────────────────────────────────── │
|
|
310
|
+
# │ • server-github - PRs, issues, commits, code search │
|
|
311
|
+
# │ • server-gitlab - GitLab API │
|
|
312
|
+
# │ • server-filesystem - Read/write files (sandboxed) │
|
|
313
|
+
# │ • server-git - Git operations (clone, commit, branch) │
|
|
314
|
+
# │ │
|
|
315
|
+
# │ DATA & DATABASES │
|
|
316
|
+
# │ ──────────────────────────────────────────────────────────────────────── │
|
|
317
|
+
# │ • server-postgres - PostgreSQL queries │
|
|
318
|
+
# │ • server-sqlite - SQLite databases │
|
|
319
|
+
# │ • server-mysql - MySQL/MariaDB │
|
|
320
|
+
# │ • server-mongodb - MongoDB collections │
|
|
321
|
+
# │ │
|
|
322
|
+
# │ COMMUNICATION │
|
|
323
|
+
# │ ──────────────────────────────────────────────────────────────────────── │
|
|
324
|
+
# │ • server-slack - Send messages, read channels │
|
|
325
|
+
# │ • server-email - Send emails (SMTP) │
|
|
326
|
+
# │ • server-discord - Discord bot integration │
|
|
327
|
+
# │ │
|
|
328
|
+
# │ CLOUD PLATFORMS │
|
|
329
|
+
# │ ──────────────────────────────────────────────────────────────────────── │
|
|
330
|
+
# │ • server-aws - S3, Lambda, EC2 operations │
|
|
331
|
+
# │ • server-gcp - Google Cloud Platform │
|
|
332
|
+
# │ • server-kubernetes - K8s cluster management │
|
|
333
|
+
# │ │
|
|
334
|
+
# │ SPECIALIZED │
|
|
335
|
+
# │ ──────────────────────────────────────────────────────────────────────── │
|
|
336
|
+
# │ • server-memory - Persistent agent memory (RAG) │
|
|
337
|
+
# │ • server-puppeteer - Browser automation │
|
|
338
|
+
# │ • server-fetch - HTTP requests with retries │
|
|
339
|
+
# │ • server-youtube - YouTube transcripts │
|
|
340
|
+
# │ │
|
|
341
|
+
# │ Community servers: Search npm for "mcp-server-*" │
|
|
342
|
+
# │ │
|
|
343
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
344
|
+
#
|
|
345
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
346
|
+
# │ WRITING YOUR OWN MCP SERVER │
|
|
347
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
348
|
+
# │ │
|
|
349
|
+
# │ When to build a custom MCP server: │
|
|
350
|
+
# │ • You need to integrate a service without an existing MCP server │
|
|
351
|
+
# │ • You have complex business logic to expose │
|
|
352
|
+
# │ • You want to reuse the tool across multiple agents/frameworks │
|
|
353
|
+
# │ │
|
|
354
|
+
# │ Quick start (TypeScript): │
|
|
355
|
+
# │ │
|
|
356
|
+
# │ ```typescript │
|
|
357
|
+
# │ import { Server } from "@modelcontextprotocol/sdk/server/index.js"; │
|
|
358
|
+
# │ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; │
|
|
359
|
+
# │ │
|
|
360
|
+
# │ const server = new Server({ │
|
|
361
|
+
# │ name: "my-custom-server", │
|
|
362
|
+
# │ version: "1.0.0" │
|
|
363
|
+
# │ }, { │
|
|
364
|
+
# │ capabilities: { tools: {} } │
|
|
365
|
+
# │ }); │
|
|
366
|
+
# │ │
|
|
367
|
+
# │ // Define tools │
|
|
368
|
+
# │ server.setRequestHandler(ListToolsRequestSchema, async () => ({ │
|
|
369
|
+
# │ tools: [ │
|
|
370
|
+
# │ { │
|
|
371
|
+
# │ name: "send_notification", │
|
|
372
|
+
# │ description: "Send a notification via internal system", │
|
|
373
|
+
# │ inputSchema: { │
|
|
374
|
+
# │ type: "object", │
|
|
375
|
+
# │ properties: { │
|
|
376
|
+
# │ message: { type: "string" }, │
|
|
377
|
+
# │ priority: { type: "string", enum: ["low", "high"] } │
|
|
378
|
+
# │ }, │
|
|
379
|
+
# │ required: ["message"] │
|
|
380
|
+
# │ } │
|
|
381
|
+
# │ } │
|
|
382
|
+
# │ ] │
|
|
383
|
+
# │ })); │
|
|
384
|
+
# │ │
|
|
385
|
+
# │ // Handle tool calls │
|
|
386
|
+
# │ server.setRequestHandler(CallToolRequestSchema, async (request) => { │
|
|
387
|
+
# │ if (request.params.name === "send_notification") { │
|
|
388
|
+
# │ const { message, priority } = request.params.arguments; │
|
|
389
|
+
# │ // Your implementation here │
|
|
390
|
+
# │ await sendToInternalSystem(message, priority); │
|
|
391
|
+
# │ return { content: [{ type: "text", text: "Notification sent!" }] }; │
|
|
392
|
+
# │ } │
|
|
393
|
+
# │ }); │
|
|
394
|
+
# │ │
|
|
395
|
+
# │ // Start server │
|
|
396
|
+
# │ const transport = new StdioServerTransport(); │
|
|
397
|
+
# │ await server.connect(transport); │
|
|
398
|
+
# │ ``` │
|
|
399
|
+
# │ │
|
|
400
|
+
# │ Then use in OSSA: │
|
|
401
|
+
# │ ```yaml │
|
|
402
|
+
# │ tools: │
|
|
403
|
+
# │ - type: mcp │
|
|
404
|
+
# │ name: my-custom-tool │
|
|
405
|
+
# │ config: │
|
|
406
|
+
# │ server: node /path/to/my-mcp-server.js │
|
|
407
|
+
# │ ``` │
|
|
408
|
+
# │ │
|
|
409
|
+
# │ SDK documentation: https://modelcontextprotocol.io/docs │
|
|
410
|
+
# │ │
|
|
411
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
412
|
+
#
|
|
413
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
414
|
+
# │ NEXT STEPS │
|
|
415
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
416
|
+
# │ │
|
|
417
|
+
# │ 03-agent-with-safety.ossa.yaml │
|
|
418
|
+
# │ CRITICAL for production: PII detection, rate limiting, content filtering │
|
|
419
|
+
# │ Learn: Guardrails, autonomy controls, compliance (SOC2, GDPR) │
|
|
420
|
+
# │ │
|
|
421
|
+
# │ 04-agent-with-messaging.ossa.yaml │
|
|
422
|
+
# │ Multi-agent systems: Agents that communicate and coordinate │
|
|
423
|
+
# │ Learn: Pub/sub, commands, event-driven architectures │
|
|
424
|
+
# │ │
|
|
425
|
+
# │ 05-workflow-composition.ossa.yaml │
|
|
426
|
+
# │ Orchestration: Compose agents and tasks into complex pipelines │
|
|
427
|
+
# │ Learn: DAGs, error handling, parallel execution │
|
|
428
|
+
# │ │
|
|
429
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
430
|
+
#
|
|
431
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
432
|
+
# THE ACTUAL MANIFEST STARTS HERE
|
|
433
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
434
|
+
|
|
435
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
436
|
+
# API VERSION (Required)
|
|
437
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
438
|
+
# Same as example 01 - using OSSA v0.3.0
|
|
439
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
440
|
+
apiVersion: ossa/v0.3.0
|
|
441
|
+
|
|
442
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
443
|
+
# KIND (Required)
|
|
444
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
445
|
+
# Agent - because we want LLM-powered reasoning + tool use
|
|
446
|
+
# (Tasks don't use LLMs, Workflows compose multiple agents/tasks)
|
|
447
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
448
|
+
kind: Agent
|
|
449
|
+
|
|
450
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
451
|
+
# METADATA (Required)
|
|
452
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
453
|
+
metadata:
|
|
454
|
+
# Descriptive name - indicates this agent can assist with code
|
|
455
|
+
name: code-assistant
|
|
456
|
+
|
|
457
|
+
# Version 1.0.0 - production-ready with tools
|
|
458
|
+
version: 1.0.0
|
|
459
|
+
|
|
460
|
+
# Human-readable description for documentation and registries
|
|
461
|
+
description: |
|
|
462
|
+
Code review assistant with integrated tools for GitHub API, filesystem
|
|
463
|
+
operations, and test execution. Demonstrates MCP (Model Context Protocol)
|
|
464
|
+
integration and custom function tools.
|
|
465
|
+
|
|
466
|
+
Capabilities:
|
|
467
|
+
- Read and analyze source code files
|
|
468
|
+
- Create and manage GitHub pull requests
|
|
469
|
+
- Run project test suites
|
|
470
|
+
- Provide code quality feedback
|
|
471
|
+
|
|
472
|
+
# Labels for categorization
|
|
473
|
+
labels:
|
|
474
|
+
difficulty: beginner # Good intro to tools
|
|
475
|
+
tutorial: "02" # Second in getting-started series
|
|
476
|
+
capability: code-review # Primary use case
|
|
477
|
+
tools: mcp # Uses MCP servers
|
|
478
|
+
|
|
479
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
480
|
+
# SPEC (Agent Configuration)
|
|
481
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
482
|
+
spec:
|
|
483
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
484
|
+
# ROLE (System Prompt)
|
|
485
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
486
|
+
# Define the agent's expertise and behavioral guidelines
|
|
487
|
+
#
|
|
488
|
+
# IMPORTANT: When agents have tools, the role should explain:
|
|
489
|
+
# 1. What the agent can do (capabilities)
|
|
490
|
+
# 2. When to use tools vs pure reasoning
|
|
491
|
+
# 3. How to communicate tool usage to users (transparency)
|
|
492
|
+
# 4. Safety guidelines (e.g., "Always explain before destructive actions")
|
|
493
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
494
|
+
role: |
|
|
495
|
+
You are an expert code review assistant with access to development tools.
|
|
496
|
+
|
|
497
|
+
Your capabilities:
|
|
498
|
+
1. **Code Analysis**: Read and analyze source code files using filesystem access
|
|
499
|
+
2. **GitHub Integration**: Create PRs, review issues, examine commits
|
|
500
|
+
3. **Testing**: Run project test suites and interpret results
|
|
501
|
+
4. **Best Practices**: Provide feedback on code quality, patterns, and maintainability
|
|
502
|
+
|
|
503
|
+
Working guidelines:
|
|
504
|
+
- **Transparency**: Always explain which tools you're using and why
|
|
505
|
+
- **Safety First**: Ask for confirmation before destructive operations (delete, force push)
|
|
506
|
+
- **Context Awareness**: Read relevant files before making recommendations
|
|
507
|
+
- **Testing**: Run tests before suggesting code is ready to merge
|
|
508
|
+
- **Incremental**: Start with simple analysis, go deeper if needed
|
|
509
|
+
|
|
510
|
+
Communication style:
|
|
511
|
+
- Be clear about what you're checking: "Let me read the main.py file..."
|
|
512
|
+
- Explain tool results: "The tests show 3 failures in the auth module..."
|
|
513
|
+
- Provide actionable feedback: "Consider extracting this logic into a helper function"
|
|
514
|
+
- Use markdown for code suggestions and structured output
|
|
515
|
+
|
|
516
|
+
When reviewing code:
|
|
517
|
+
1. First, understand the context (read related files, check recent commits)
|
|
518
|
+
2. Run tests if available
|
|
519
|
+
3. Analyze for common issues: security, performance, readability
|
|
520
|
+
4. Provide specific, actionable suggestions
|
|
521
|
+
5. Highlight what's done well, not just problems
|
|
522
|
+
|
|
523
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
524
|
+
# LLM CONFIGURATION
|
|
525
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
526
|
+
# For code review, we want focused, deterministic behavior
|
|
527
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
528
|
+
llm:
|
|
529
|
+
# Use environment variable for portability (same as example 01)
|
|
530
|
+
provider: ${LLM_PROVIDER:-anthropic}
|
|
531
|
+
|
|
532
|
+
# Default to Sonnet - good balance of speed and code understanding
|
|
533
|
+
# For faster/cheaper: claude-haiku
|
|
534
|
+
# For more complex analysis: claude-opus-4-20250514
|
|
535
|
+
model: ${LLM_MODEL:-claude-sonnet-4-20250514}
|
|
536
|
+
|
|
537
|
+
# Temperature 0.3 - lower than default (0.7) for more focused code analysis
|
|
538
|
+
# Code review benefits from consistency and precision
|
|
539
|
+
# Range guide for code tasks:
|
|
540
|
+
# 0.0-0.2: Code generation, security analysis (very focused)
|
|
541
|
+
# 0.2-0.4: Code review, refactoring suggestions (balanced)
|
|
542
|
+
# 0.4-0.7: Architecture discussions, brainstorming (creative)
|
|
543
|
+
temperature: 0.3
|
|
544
|
+
|
|
545
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
546
|
+
# TOOLS (The Main Feature of This Example!)
|
|
547
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
548
|
+
# Tools extend the agent's capabilities beyond text generation.
|
|
549
|
+
# Each tool is described to the LLM, which decides when to use it.
|
|
550
|
+
#
|
|
551
|
+
# Tool types:
|
|
552
|
+
# • mcp - Model Context Protocol server (standard, reusable)
|
|
553
|
+
# • function - Custom logic implemented by runtime
|
|
554
|
+
# • api - REST API endpoint (OpenAPI spec)
|
|
555
|
+
#
|
|
556
|
+
# The LLM sees tool descriptions in its system prompt and can call them
|
|
557
|
+
# using structured function calling (supported by Claude, GPT-4, Gemini, etc.)
|
|
558
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
559
|
+
tools:
|
|
560
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
561
|
+
# TOOL 1: GitHub MCP Server
|
|
562
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
563
|
+
# Connects to the official GitHub MCP server maintained by Anthropic.
|
|
564
|
+
# Provides 20+ functions: create_pr, get_pr, create_issue, search_code, etc.
|
|
565
|
+
#
|
|
566
|
+
# How it works:
|
|
567
|
+
# 1. Runtime spawns: npx -y @modelcontextprotocol/server-github
|
|
568
|
+
# 2. MCP server connects via stdio and reports available functions
|
|
569
|
+
# 3. LLM sees descriptions like "create_pull_request: Create a new PR..."
|
|
570
|
+
# 4. When LLM calls a function, runtime forwards to MCP server
|
|
571
|
+
# 5. MCP server uses GitHub API (authenticated with GITHUB_TOKEN)
|
|
572
|
+
# 6. Result flows back: MCP server → runtime → LLM
|
|
573
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
574
|
+
- type: mcp
|
|
575
|
+
|
|
576
|
+
# Tool name - used in logs and by LLM to reference this capability
|
|
577
|
+
# Convention: lowercase, descriptive (github, slack, database)
|
|
578
|
+
name: github
|
|
579
|
+
|
|
580
|
+
# Description - helps LLM understand when to use this tool
|
|
581
|
+
# Be specific! Include what it CAN and CANNOT do.
|
|
582
|
+
description: |
|
|
583
|
+
GitHub API access for repository operations. Provides functions to:
|
|
584
|
+
- Create, read, and update pull requests
|
|
585
|
+
- Manage issues (create, comment, label, close)
|
|
586
|
+
- Search code and repositories
|
|
587
|
+
- Read file contents and directory structures
|
|
588
|
+
- View commit history and diffs
|
|
589
|
+
|
|
590
|
+
Requires: GITHUB_TOKEN environment variable with repo scope.
|
|
591
|
+
Note: Cannot force push or delete repositories (safety constraints).
|
|
592
|
+
|
|
593
|
+
# Configuration specific to this MCP server
|
|
594
|
+
config:
|
|
595
|
+
# server: Command to start the MCP server
|
|
596
|
+
# npx -y: Run without install prompt, auto-install if needed
|
|
597
|
+
# The server listens on stdio for commands from the runtime
|
|
598
|
+
server: npx -y @modelcontextprotocol/server-github
|
|
599
|
+
|
|
600
|
+
# Environment variables passed to the MCP server
|
|
601
|
+
# The GitHub server needs GITHUB_TOKEN for API authentication
|
|
602
|
+
env:
|
|
603
|
+
# ${GITHUB_TOKEN} - reads from your shell environment
|
|
604
|
+
# Get a token: https://github.com/settings/tokens
|
|
605
|
+
# Required scopes: repo (for private repos) or public_repo (public only)
|
|
606
|
+
GITHUB_TOKEN: ${GITHUB_TOKEN}
|
|
607
|
+
|
|
608
|
+
# Optional: Configure timeout for MCP operations
|
|
609
|
+
# Useful for slow APIs or large repo operations
|
|
610
|
+
# timeout_seconds: 30
|
|
611
|
+
|
|
612
|
+
# Optional: Restrict which GitHub functions are available
|
|
613
|
+
# By default, all functions are exposed. You can allowlist:
|
|
614
|
+
# allowed_functions:
|
|
615
|
+
# - create_pull_request
|
|
616
|
+
# - get_pull_request
|
|
617
|
+
# - create_issue
|
|
618
|
+
# This is useful for security (prevent certain operations) or
|
|
619
|
+
# to simplify the LLM's choices (fewer options = better decisions)
|
|
620
|
+
|
|
621
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
622
|
+
# TOOL 2: Filesystem MCP Server
|
|
623
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
624
|
+
# Provides sandboxed file system access. The agent can read/write files
|
|
625
|
+
# within specified directories.
|
|
626
|
+
#
|
|
627
|
+
# Security note:
|
|
628
|
+
# The first argument (/workspace) defines the ROOT of accessible paths.
|
|
629
|
+
# The agent CANNOT access files outside this directory (sandboxing).
|
|
630
|
+
# This prevents accidental or malicious access to system files.
|
|
631
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
632
|
+
- type: mcp
|
|
633
|
+
|
|
634
|
+
name: filesystem
|
|
635
|
+
|
|
636
|
+
description: |
|
|
637
|
+
Read and write files within /workspace directory. Provides functions to:
|
|
638
|
+
- List directory contents (recursive and non-recursive)
|
|
639
|
+
- Read file contents (text and binary)
|
|
640
|
+
- Write/update files (create if not exists)
|
|
641
|
+
- Create directories
|
|
642
|
+
- Check file existence and metadata
|
|
643
|
+
|
|
644
|
+
Security: Sandboxed to /workspace - cannot access parent directories.
|
|
645
|
+
Use this to analyze code, read configs, save reports.
|
|
646
|
+
|
|
647
|
+
config:
|
|
648
|
+
# MCP server for filesystem operations
|
|
649
|
+
server: npx -y @modelcontextprotocol/server-filesystem
|
|
650
|
+
|
|
651
|
+
# Arguments passed to the filesystem server
|
|
652
|
+
# First arg: Root directory (all operations are relative to this)
|
|
653
|
+
args:
|
|
654
|
+
- /workspace
|
|
655
|
+
# Optional: Enable/disable writes (default: writes enabled)
|
|
656
|
+
# Add this for read-only access:
|
|
657
|
+
# - --read-only true
|
|
658
|
+
|
|
659
|
+
# Optional: File type restrictions
|
|
660
|
+
# allowed_extensions:
|
|
661
|
+
# - .py
|
|
662
|
+
# - .js
|
|
663
|
+
# - .md
|
|
664
|
+
# - .yaml
|
|
665
|
+
# denied_extensions:
|
|
666
|
+
# - .env # Prevent reading secrets
|
|
667
|
+
# - .key
|
|
668
|
+
# - .pem
|
|
669
|
+
|
|
670
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
671
|
+
# TOOL 3: Custom Function Tool
|
|
672
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
673
|
+
# Function tools let you expose runtime-specific logic to the agent.
|
|
674
|
+
# Unlike MCP (which spawns a separate process), functions run in your
|
|
675
|
+
# application runtime (Python, Node.js, Go, etc.).
|
|
676
|
+
#
|
|
677
|
+
# Use function tools when:
|
|
678
|
+
# • You need deep integration with your application logic
|
|
679
|
+
# • Performance is critical (no IPC overhead)
|
|
680
|
+
# • The functionality is unique to your use case (no reusable MCP server)
|
|
681
|
+
#
|
|
682
|
+
# Use MCP when:
|
|
683
|
+
# • You want to reuse the tool across multiple agents/frameworks
|
|
684
|
+
# • You're integrating a third-party service (GitHub, Slack, AWS, etc.)
|
|
685
|
+
# • You want process isolation for security
|
|
686
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
687
|
+
- type: function
|
|
688
|
+
|
|
689
|
+
# Function name - unique identifier
|
|
690
|
+
# Convention: verb_noun (run_tests, deploy_service, send_email)
|
|
691
|
+
name: run_tests
|
|
692
|
+
|
|
693
|
+
# Description for the LLM - be VERY specific about:
|
|
694
|
+
# • What the function does
|
|
695
|
+
# • When to use it (before merging? on demand?)
|
|
696
|
+
# • What it returns (exit code? detailed results?)
|
|
697
|
+
# • Any prerequisites (must install deps first? requires certain env?)
|
|
698
|
+
description: |
|
|
699
|
+
Execute the project's test suite and return results.
|
|
700
|
+
|
|
701
|
+
Behavior:
|
|
702
|
+
- Runs tests using the project's configured test runner (pytest, jest, etc.)
|
|
703
|
+
- If test_path is provided, runs only those tests (file or directory)
|
|
704
|
+
- If test_path is omitted, runs the full test suite
|
|
705
|
+
- Returns: pass/fail status, number of tests, execution time, failure details
|
|
706
|
+
|
|
707
|
+
Use this:
|
|
708
|
+
- Before suggesting a PR is ready to merge
|
|
709
|
+
- After making code changes to verify nothing broke
|
|
710
|
+
- To verify a specific module works correctly
|
|
711
|
+
|
|
712
|
+
Prerequisites:
|
|
713
|
+
- Project dependencies must be installed (npm install, pip install, etc.)
|
|
714
|
+
- Test configuration must exist (pytest.ini, jest.config.js, etc.)
|
|
715
|
+
|
|
716
|
+
# Input schema - JSON Schema defining valid arguments
|
|
717
|
+
# The LLM generates arguments matching this schema when calling the function
|
|
718
|
+
# Runtime validates arguments before executing your function
|
|
719
|
+
input_schema:
|
|
720
|
+
type: object
|
|
721
|
+
|
|
722
|
+
# Properties - available parameters
|
|
723
|
+
properties:
|
|
724
|
+
test_path:
|
|
725
|
+
type: string
|
|
726
|
+
description: |
|
|
727
|
+
Optional path to specific test file or directory.
|
|
728
|
+
Examples:
|
|
729
|
+
- "tests/unit/auth_test.py" (single file)
|
|
730
|
+
- "tests/integration/" (directory)
|
|
731
|
+
- "" or null (all tests)
|
|
732
|
+
|
|
733
|
+
# Optional: Pattern validation
|
|
734
|
+
# pattern: "^tests/.*" # Must start with tests/
|
|
735
|
+
|
|
736
|
+
verbose:
|
|
737
|
+
type: boolean
|
|
738
|
+
description: |
|
|
739
|
+
If true, return detailed output for each test.
|
|
740
|
+
If false, return summary only (faster, less token usage).
|
|
741
|
+
default: false
|
|
742
|
+
|
|
743
|
+
# You can add more parameters:
|
|
744
|
+
# coverage:
|
|
745
|
+
# type: boolean
|
|
746
|
+
# description: Generate code coverage report
|
|
747
|
+
# parallel:
|
|
748
|
+
# type: boolean
|
|
749
|
+
# description: Run tests in parallel (faster but may have side effects)
|
|
750
|
+
|
|
751
|
+
# Required parameters - must be provided when calling function
|
|
752
|
+
# Empty array = all parameters optional
|
|
753
|
+
required: []
|
|
754
|
+
|
|
755
|
+
# Optional: Additional constraints
|
|
756
|
+
# additionalProperties: false # Reject unknown properties
|
|
757
|
+
|
|
758
|
+
# Output schema - what the function returns
|
|
759
|
+
# This helps the LLM understand the result structure
|
|
760
|
+
# (Not enforced by runtime, but good for documentation)
|
|
761
|
+
output_schema:
|
|
762
|
+
type: object
|
|
763
|
+
properties:
|
|
764
|
+
status:
|
|
765
|
+
type: string
|
|
766
|
+
enum: [passed, failed, error]
|
|
767
|
+
description: Overall test result
|
|
768
|
+
|
|
769
|
+
total_tests:
|
|
770
|
+
type: integer
|
|
771
|
+
description: Number of tests executed
|
|
772
|
+
|
|
773
|
+
passed_count:
|
|
774
|
+
type: integer
|
|
775
|
+
description: Number of passing tests
|
|
776
|
+
|
|
777
|
+
failed_count:
|
|
778
|
+
type: integer
|
|
779
|
+
description: Number of failing tests
|
|
780
|
+
|
|
781
|
+
duration_seconds:
|
|
782
|
+
type: number
|
|
783
|
+
description: Total execution time
|
|
784
|
+
|
|
785
|
+
failures:
|
|
786
|
+
type: array
|
|
787
|
+
description: Details of failed tests (if any)
|
|
788
|
+
items:
|
|
789
|
+
type: object
|
|
790
|
+
properties:
|
|
791
|
+
test_name:
|
|
792
|
+
type: string
|
|
793
|
+
error_message:
|
|
794
|
+
type: string
|
|
795
|
+
file:
|
|
796
|
+
type: string
|
|
797
|
+
line:
|
|
798
|
+
type: integer
|
|
799
|
+
|
|
800
|
+
# Implementation is provided by the RUNTIME, not in the manifest.
|
|
801
|
+
#
|
|
802
|
+
# Example Python runtime implementation:
|
|
803
|
+
# ```python
|
|
804
|
+
# async def run_tests(test_path: str = "", verbose: bool = False):
|
|
805
|
+
# import subprocess
|
|
806
|
+
# cmd = ["pytest"]
|
|
807
|
+
# if test_path:
|
|
808
|
+
# cmd.append(test_path)
|
|
809
|
+
# if verbose:
|
|
810
|
+
# cmd.append("-v")
|
|
811
|
+
# result = subprocess.run(cmd, capture_output=True, text=True)
|
|
812
|
+
# # Parse result and return structured data matching output_schema
|
|
813
|
+
# return {
|
|
814
|
+
# "status": "passed" if result.returncode == 0 else "failed",
|
|
815
|
+
# "total_tests": parse_pytest_output(result.stdout),
|
|
816
|
+
# ...
|
|
817
|
+
# }
|
|
818
|
+
# ```
|
|
819
|
+
#
|
|
820
|
+
# Example Node.js runtime implementation:
|
|
821
|
+
# ```javascript
|
|
822
|
+
# async function run_tests({ test_path = "", verbose = false }) {
|
|
823
|
+
# const { exec } = require('child_process');
|
|
824
|
+
# const cmd = `jest ${test_path} ${verbose ? '--verbose' : ''}`;
|
|
825
|
+
# const result = await execPromise(cmd);
|
|
826
|
+
# return {
|
|
827
|
+
# status: result.code === 0 ? 'passed' : 'failed',
|
|
828
|
+
# total_tests: parseJestOutput(result.stdout),
|
|
829
|
+
# ...
|
|
830
|
+
# };
|
|
831
|
+
# }
|
|
832
|
+
# ```
|
|
833
|
+
|
|
834
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
835
|
+
# SUMMARY: WHAT WE BUILT
|
|
836
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
837
|
+
#
|
|
838
|
+
# This agent can:
|
|
839
|
+
# ✓ Understand natural language requests about code review
|
|
840
|
+
# ✓ Read files from /workspace using filesystem MCP server
|
|
841
|
+
# ✓ Interact with GitHub using github MCP server (PRs, issues, etc.)
|
|
842
|
+
# ✓ Run tests using custom function tool
|
|
843
|
+
# ✓ Reason about when and how to use each tool
|
|
844
|
+
# ✓ Combine multiple tools to complete complex tasks
|
|
845
|
+
#
|
|
846
|
+
# Example interaction flow:
|
|
847
|
+
# User: "Review the latest PR and run tests"
|
|
848
|
+
# Agent: [Calls github.get_latest_pr()]
|
|
849
|
+
# "I found PR #42: 'Add login feature'. Let me check the code."
|
|
850
|
+
# [Calls filesystem.read_file("src/auth/login.py")]
|
|
851
|
+
# "The code looks good. Running tests to verify..."
|
|
852
|
+
# [Calls run_tests({ test_path: "tests/auth/" })]
|
|
853
|
+
# "All 12 tests passed! The PR is ready to merge."
|
|
854
|
+
#
|
|
855
|
+
# What we learned:
|
|
856
|
+
# → MCP servers provide reusable, standardized tools
|
|
857
|
+
# → Function tools provide custom runtime logic
|
|
858
|
+
# → Tools are described to the LLM, which chooses when to use them
|
|
859
|
+
# → The runtime handles tool execution and passes results back to the LLM
|
|
860
|
+
#
|
|
861
|
+
# Next example (03-agent-with-safety.ossa.yaml):
|
|
862
|
+
# → Production-ready safety: PII detection, rate limiting, guardrails
|
|
863
|
+
# → Autonomy controls: human-in-the-loop, approval workflows
|
|
864
|
+
# → Compliance: SOC2, GDPR, HIPAA considerations
|
|
865
|
+
#
|
|
866
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|