@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,868 @@
|
|
|
1
|
+
# ╔═══════════════════════════════════════════════════════════════════════════════╗
|
|
2
|
+
# ║ ║
|
|
3
|
+
# ║ ██████╗ ███████╗███████╗ █████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ║
|
|
4
|
+
# ║ ██╔═══██╗██╔════╝██╔════╝██╔══██╗ ██║ ██║██╔═████╗ ╚════██╗██╔═████╗ ║
|
|
5
|
+
# ║ ██║ ██║███████╗███████╗███████║ ██║ ██║██║██╔██║ █████╔╝██║██╔██║ ║
|
|
6
|
+
# ║ ██║ ██║╚════██║╚════██║██╔══██║ ╚██╗ ██╔╝████╔╝██║ ╚═══██╗████╔╝██║ ║
|
|
7
|
+
# ║ ╚██████╔╝███████║███████║██║ ██║ ╚████╔╝ ╚██████╔╝██╗██████╔╝╚██████╔╝ ║
|
|
8
|
+
# ║ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝╚═════╝ ╚═════╝ ║
|
|
9
|
+
# ║ ║
|
|
10
|
+
# ║ GETTING STARTED: 03 - PRODUCTION-READY AGENT WITH SAFETY ║
|
|
11
|
+
# ║ ║
|
|
12
|
+
# ╚═══════════════════════════════════════════════════════════════════════════════╝
|
|
13
|
+
#
|
|
14
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
15
|
+
# │ WHAT YOU'LL LEARN │
|
|
16
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
17
|
+
# │ │
|
|
18
|
+
# │ ✓ PII Detection - automatically redact emails, SSNs, API keys, passwords │
|
|
19
|
+
# │ ✓ Content Filtering - block harmful, illegal, or inappropriate content │
|
|
20
|
+
# │ ✓ Rate Limiting - prevent abuse with token bucket algorithm │
|
|
21
|
+
# │ ✓ Guardrails - set boundaries on agent behavior (max tool calls, depth) │
|
|
22
|
+
# │ ✓ Autonomy Levels - control human-in-the-loop requirements │
|
|
23
|
+
# │ ✓ Observability - tracing, metrics, logging for production monitoring │
|
|
24
|
+
# │ ✓ Compliance - SOC2, GDPR, HIPAA considerations │
|
|
25
|
+
# │ │
|
|
26
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
27
|
+
#
|
|
28
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
29
|
+
# │ WHY SAFETY MATTERS │
|
|
30
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
31
|
+
# │ │
|
|
32
|
+
# │ Without safety controls, agents can: │
|
|
33
|
+
# │ • Leak sensitive data (customer emails, API keys) in logs or responses │
|
|
34
|
+
# │ • Generate harmful content (hate speech, illegal instructions) │
|
|
35
|
+
# │ • Exhaust budgets with runaway loops (infinite tool calls) │
|
|
36
|
+
# │ • Make destructive decisions without human oversight │
|
|
37
|
+
# │ • Violate compliance requirements (GDPR, HIPAA, SOC2) │
|
|
38
|
+
# │ │
|
|
39
|
+
# │ Real-world incidents: │
|
|
40
|
+
# │ ┌───────────────────────────────────────────────────────────────┐ │
|
|
41
|
+
# │ │ INCIDENT IMPACT PREVENTION │ │
|
|
42
|
+
# │ ├───────────────────────────────────────────────────────────────┤ │
|
|
43
|
+
# │ │ Agent logs customer emails GDPR fine PII redact │ │
|
|
44
|
+
# │ │ Infinite loop: 10K API calls $5000 cost Guardrails │ │
|
|
45
|
+
# │ │ Deleted production database Downtime Autonomy │ │
|
|
46
|
+
# │ │ Generated malware instructions Legal risk Content │ │
|
|
47
|
+
# │ │ Exposed API keys in error msg Security breach PII detect │ │
|
|
48
|
+
# │ └───────────────────────────────────────────────────────────────┘ │
|
|
49
|
+
# │ │
|
|
50
|
+
# │ THE RULE: If an agent touches production data or systems, │
|
|
51
|
+
# │ it MUST have safety controls. No exceptions. │
|
|
52
|
+
# │ │
|
|
53
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
54
|
+
#
|
|
55
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
56
|
+
# │ THE FIVE LAYERS OF AGENT SAFETY │
|
|
57
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
58
|
+
# │ │
|
|
59
|
+
# │ 1. PII DETECTION & REDACTION │
|
|
60
|
+
# │ ─────────────────────────── │
|
|
61
|
+
# │ Automatically find and mask sensitive data in inputs and outputs │
|
|
62
|
+
# │ │
|
|
63
|
+
# │ Example: │
|
|
64
|
+
# │ Input: "My email is john@company.com and SSN is 123-45-6789" │
|
|
65
|
+
# │ Output: "My email is [REDACTED_EMAIL] and SSN is [REDACTED_SSN]" │
|
|
66
|
+
# │ │
|
|
67
|
+
# │ Detects: emails, phones, SSNs, credit cards, API keys, passwords, IPs │
|
|
68
|
+
# │ Actions: warn (log but allow), block (reject), redact (mask in-place) │
|
|
69
|
+
# │ │
|
|
70
|
+
# │ 2. CONTENT FILTERING │
|
|
71
|
+
# │ ────────────────── │
|
|
72
|
+
# │ Block harmful or inappropriate content based on categories │
|
|
73
|
+
# │ │
|
|
74
|
+
# │ Categories: hate_speech, violence, self_harm, illegal_activity, │
|
|
75
|
+
# │ adult_content, spam, misinformation │
|
|
76
|
+
# │ Thresholds: low (strict), medium (balanced), high (permissive) │
|
|
77
|
+
# │ Actions: block (reject request), log (allow but record), sanitize (rewrite) │
|
|
78
|
+
# │ │
|
|
79
|
+
# │ 3. RATE LIMITING │
|
|
80
|
+
# │ ────────────── │
|
|
81
|
+
# │ Prevent abuse and control costs with token bucket algorithm │
|
|
82
|
+
# │ │
|
|
83
|
+
# │ Example: 30 requests/minute, burst of 5 │
|
|
84
|
+
# │ • Normal: User makes 1 request/2 seconds → allowed │
|
|
85
|
+
# │ • Burst: User makes 5 requests in 1 second → allowed (uses burst) │
|
|
86
|
+
# │ • Abuse: User makes 100 requests/second → blocked after 5 │
|
|
87
|
+
# │ │
|
|
88
|
+
# │ 4. BEHAVIORAL GUARDRAILS │
|
|
89
|
+
# │ ─────────────────────── │
|
|
90
|
+
# │ Set hard limits on agent behavior to prevent runaway loops │
|
|
91
|
+
# │ │
|
|
92
|
+
# │ • max_tool_calls: 20 → Prevent infinite loops │
|
|
93
|
+
# │ • max_iteration_depth: 5 → Limit reasoning chains │
|
|
94
|
+
# │ • max_tokens_per_turn: 4000 → Control output length (and cost) │
|
|
95
|
+
# │ • require_confirmation_for: [delete, modify_permissions] │
|
|
96
|
+
# │ │
|
|
97
|
+
# │ 5. AUTONOMY CONTROLS │
|
|
98
|
+
# │ ────────────────────── │
|
|
99
|
+
# │ Define when human approval is required │
|
|
100
|
+
# │ │
|
|
101
|
+
# │ Levels: │
|
|
102
|
+
# │ • autonomous: Agent decides and acts (monitoring only) │
|
|
103
|
+
# │ • assisted: Agent proposes, human approves high-risk actions │
|
|
104
|
+
# │ • supervised: Human approves ALL actions before execution │
|
|
105
|
+
# │ │
|
|
106
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
107
|
+
#
|
|
108
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
109
|
+
# │ HOW TO RUN THIS EXAMPLE │
|
|
110
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
111
|
+
# │ │
|
|
112
|
+
# │ STEP 1: Set environment variables │
|
|
113
|
+
# │ ──────────────────────────────── │
|
|
114
|
+
# │ $ export ANTHROPIC_API_KEY=sk-ant-... │
|
|
115
|
+
# │ $ export OTEL_ENDPOINT=http://localhost:4317 # Optional: observability │
|
|
116
|
+
# │ │
|
|
117
|
+
# │ STEP 2: Validate safety configuration │
|
|
118
|
+
# │ ───────────────────────────────────── │
|
|
119
|
+
# │ $ ossa validate 03-agent-with-safety.ossa.yaml │
|
|
120
|
+
# │ │
|
|
121
|
+
# │ Expected output: │
|
|
122
|
+
# │ ✓ Schema validation passed │
|
|
123
|
+
# │ ✓ PII detection patterns loaded (7 types) │
|
|
124
|
+
# │ ✓ Content filter initialized (6 categories) │
|
|
125
|
+
# │ ✓ Rate limiting configured (30 req/min, burst 5) │
|
|
126
|
+
# │ ✓ Guardrails validated │
|
|
127
|
+
# │ ✓ Autonomy level: assisted │
|
|
128
|
+
# │ ✓ Ready to run │
|
|
129
|
+
# │ │
|
|
130
|
+
# │ STEP 3: Test PII detection │
|
|
131
|
+
# │ ───────────────────────── │
|
|
132
|
+
# │ $ ossa run 03-agent-with-safety.ossa.yaml --interactive │
|
|
133
|
+
# │ │
|
|
134
|
+
# │ > My email is test@example.com and my API key is sk-1234567890 │
|
|
135
|
+
# │ Agent: I see you provided contact information. [PII REDACTED] │
|
|
136
|
+
# │ │
|
|
137
|
+
# │ Behind the scenes: │
|
|
138
|
+
# │ • PII detector found: email + API key │
|
|
139
|
+
# │ • Input was redacted before sending to LLM │
|
|
140
|
+
# │ • Logs show: "My email is [REDACTED_EMAIL] and my API key is [REDACTED_KEY]" │
|
|
141
|
+
# │ │
|
|
142
|
+
# │ STEP 4: Test content filtering │
|
|
143
|
+
# │ ────────────────────────────── │
|
|
144
|
+
# │ > How do I hack into a database? │
|
|
145
|
+
# │ [BLOCKED] Content filter triggered: illegal_activity (confidence: high) │
|
|
146
|
+
# │ This request violates our usage policy. │
|
|
147
|
+
# │ │
|
|
148
|
+
# │ STEP 5: Test rate limiting │
|
|
149
|
+
# │ ───────────────────────── │
|
|
150
|
+
# │ $ for i in {1..100}; do │
|
|
151
|
+
# │ ossa run 03-agent-with-safety.ossa.yaml --input "Hello" & │
|
|
152
|
+
# │ done │
|
|
153
|
+
# │ │
|
|
154
|
+
# │ Expected: │
|
|
155
|
+
# │ • First 5 requests: Succeed immediately (burst allowance) │
|
|
156
|
+
# │ • Next 30 requests: Succeed at 1 request/2 seconds (rate limit) │
|
|
157
|
+
# │ • Remaining requests: Rejected with 429 Too Many Requests │
|
|
158
|
+
# │ │
|
|
159
|
+
# │ STEP 6: Test guardrails (prevent infinite loops) │
|
|
160
|
+
# │ ──────────────────────────────────────────────── │
|
|
161
|
+
# │ Modify the agent to have a buggy tool that calls itself recursively. │
|
|
162
|
+
# │ The agent will stop after 20 tool calls (max_tool_calls guardrail). │
|
|
163
|
+
# │ │
|
|
164
|
+
# │ STEP 7: Test autonomy controls │
|
|
165
|
+
# │ ────────────────────────────────── │
|
|
166
|
+
# │ > Delete all user data │
|
|
167
|
+
# │ Agent: This action requires human approval. │
|
|
168
|
+
# │ Action: delete_data │
|
|
169
|
+
# │ Reason: Destructive operation on production data │
|
|
170
|
+
# │ Approve? (yes/no): │
|
|
171
|
+
# │ │
|
|
172
|
+
# │ STEP 8: Monitor with observability │
|
|
173
|
+
# │ ────────────────────────────────────── │
|
|
174
|
+
# │ If you have OpenTelemetry collector running: │
|
|
175
|
+
# │ │
|
|
176
|
+
# │ $ docker run -p 4317:4317 otel/opentelemetry-collector │
|
|
177
|
+
# │ $ ossa run 03-agent-with-safety.ossa.yaml --trace │
|
|
178
|
+
# │ │
|
|
179
|
+
# │ View traces in Jaeger/Zipkin to see: │
|
|
180
|
+
# │ • PII detection timings │
|
|
181
|
+
# │ • Content filter decisions │
|
|
182
|
+
# │ • Rate limit calculations │
|
|
183
|
+
# │ • Tool call chains │
|
|
184
|
+
# │ │
|
|
185
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
186
|
+
#
|
|
187
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
188
|
+
# │ PII DETECTION: PATTERNS & EXAMPLES │
|
|
189
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
190
|
+
# │ │
|
|
191
|
+
# │ OSSA includes built-in regex patterns for common PII types: │
|
|
192
|
+
# │ │
|
|
193
|
+
# │ EMAIL │
|
|
194
|
+
# │ ───── │
|
|
195
|
+
# │ Pattern: \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b │
|
|
196
|
+
# │ Examples: │
|
|
197
|
+
# │ ✓ john.doe@company.com → [REDACTED_EMAIL] │
|
|
198
|
+
# │ ✓ admin+test@example.org → [REDACTED_EMAIL] │
|
|
199
|
+
# │ ✗ not-an-email@ → (not matched) │
|
|
200
|
+
# │ │
|
|
201
|
+
# │ PHONE NUMBER │
|
|
202
|
+
# │ ──────────── │
|
|
203
|
+
# │ Pattern: (\+\d{1,3}[- ]?)?\(?\d{3}\)?[- ]?\d{3}[- ]?\d{4} │
|
|
204
|
+
# │ Examples: │
|
|
205
|
+
# │ ✓ (555) 123-4567 → [REDACTED_PHONE] │
|
|
206
|
+
# │ ✓ +1-555-123-4567 → [REDACTED_PHONE] │
|
|
207
|
+
# │ ✓ 5551234567 → [REDACTED_PHONE] │
|
|
208
|
+
# │ │
|
|
209
|
+
# │ SOCIAL SECURITY NUMBER (US) │
|
|
210
|
+
# │ ─────────────────────────── │
|
|
211
|
+
# │ Pattern: \b\d{3}-\d{2}-\d{4}\b │
|
|
212
|
+
# │ Examples: │
|
|
213
|
+
# │ ✓ 123-45-6789 → [REDACTED_SSN] │
|
|
214
|
+
# │ ✗ 12-345-6789 → (invalid format, not matched) │
|
|
215
|
+
# │ │
|
|
216
|
+
# │ CREDIT CARD │
|
|
217
|
+
# │ ─────────── │
|
|
218
|
+
# │ Pattern: \b(?:\d{4}[- ]?){3}\d{4}\b (Luhn algorithm validation) │
|
|
219
|
+
# │ Examples: │
|
|
220
|
+
# │ ✓ 4532-1234-5678-9010 → [REDACTED_CREDIT_CARD] │
|
|
221
|
+
# │ ✓ 4532123456789010 → [REDACTED_CREDIT_CARD] │
|
|
222
|
+
# │ ✗ 1234-5678-9012-3456 → (invalid Luhn checksum, not matched) │
|
|
223
|
+
# │ │
|
|
224
|
+
# │ API KEY │
|
|
225
|
+
# │ ─────── │
|
|
226
|
+
# │ Pattern: \b(sk|pk|api)[-_]?[A-Za-z0-9]{20,}\b │
|
|
227
|
+
# │ Examples: │
|
|
228
|
+
# │ ✓ sk_live_abcd1234efgh5678 → [REDACTED_API_KEY] │
|
|
229
|
+
# │ ✓ api-key-1234567890abcdef → [REDACTED_API_KEY] │
|
|
230
|
+
# │ ✓ GITHUB_TOKEN=ghp_abc123 → [REDACTED_API_KEY] │
|
|
231
|
+
# │ │
|
|
232
|
+
# │ PASSWORD (in common patterns) │
|
|
233
|
+
# │ ──────────────────────────── │
|
|
234
|
+
# │ Pattern: (password|passwd|pwd)[=:]\s*\S+ │
|
|
235
|
+
# │ Examples: │
|
|
236
|
+
# │ ✓ password=mySecret123 → password=[REDACTED_PASSWORD] │
|
|
237
|
+
# │ ✓ "pwd": "hunter2" → "pwd": "[REDACTED_PASSWORD]" │
|
|
238
|
+
# │ │
|
|
239
|
+
# │ IP ADDRESS │
|
|
240
|
+
# │ ────────── │
|
|
241
|
+
# │ Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\b │
|
|
242
|
+
# │ Examples: │
|
|
243
|
+
# │ ✓ 192.168.1.1 → [REDACTED_IP] │
|
|
244
|
+
# │ ✓ 10.0.0.1 → [REDACTED_IP] │
|
|
245
|
+
# │ ✗ 999.999.999.999 → (invalid range, optional validation) │
|
|
246
|
+
# │ │
|
|
247
|
+
# │ CUSTOM PATTERNS │
|
|
248
|
+
# │ ─────────────── │
|
|
249
|
+
# │ You can add custom PII patterns in safety.pii_detection.custom_patterns: │
|
|
250
|
+
# │ │
|
|
251
|
+
# │ ```yaml │
|
|
252
|
+
# │ custom_patterns: │
|
|
253
|
+
# │ - name: employee_id │
|
|
254
|
+
# │ pattern: "EMP-\\d{6}" │
|
|
255
|
+
# │ replacement: "[REDACTED_EMPLOYEE_ID]" │
|
|
256
|
+
# │ - name: medical_record │
|
|
257
|
+
# │ pattern: "MRN-\\d{8}" │
|
|
258
|
+
# │ replacement: "[REDACTED_MRN]" │
|
|
259
|
+
# │ ``` │
|
|
260
|
+
# │ │
|
|
261
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
262
|
+
#
|
|
263
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
264
|
+
# │ RATE LIMITING: TOKEN BUCKET ALGORITHM EXPLAINED │
|
|
265
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
266
|
+
# │ │
|
|
267
|
+
# │ Token Bucket is the industry-standard algorithm for rate limiting. │
|
|
268
|
+
# │ It allows bursts while maintaining a long-term rate limit. │
|
|
269
|
+
# │ │
|
|
270
|
+
# │ CONFIGURATION: │
|
|
271
|
+
# │ requests_per_minute: 30 → Steady-state rate (0.5 requests/second) │
|
|
272
|
+
# │ burst_limit: 5 → Max requests in a burst │
|
|
273
|
+
# │ │
|
|
274
|
+
# │ HOW IT WORKS: │
|
|
275
|
+
# │ │
|
|
276
|
+
# │ 1. BUCKET INITIALIZATION │
|
|
277
|
+
# │ • Bucket capacity: burst_limit (5 tokens) │
|
|
278
|
+
# │ • Refill rate: requests_per_minute / 60 (0.5 tokens/second) │
|
|
279
|
+
# │ • Current tokens: burst_limit (starts full) │
|
|
280
|
+
# │ │
|
|
281
|
+
# │ 2. REQUEST PROCESSING │
|
|
282
|
+
# │ • User makes request → check if bucket has ≥1 token │
|
|
283
|
+
# │ • If yes: consume 1 token, allow request │
|
|
284
|
+
# │ • If no: reject with 429 Too Many Requests │
|
|
285
|
+
# │ │
|
|
286
|
+
# │ 3. TOKEN REFILL │
|
|
287
|
+
# │ • Every 2 seconds: add 1 token to bucket (up to capacity) │
|
|
288
|
+
# │ │
|
|
289
|
+
# │ EXAMPLE TIMELINE: │
|
|
290
|
+
# │ │
|
|
291
|
+
# │ Time Request Tokens Before Action Tokens After │
|
|
292
|
+
# │ ──── ─────── ───────────── ────── ──────────── │
|
|
293
|
+
# │ 0.0s #1 5 Allow 4 │
|
|
294
|
+
# │ 0.1s #2 4 Allow 3 │
|
|
295
|
+
# │ 0.2s #3 3 Allow 2 │
|
|
296
|
+
# │ 0.3s #4 2 Allow 1 │
|
|
297
|
+
# │ 0.4s #5 1 Allow 0 ← burst exhausted │
|
|
298
|
+
# │ 0.5s #6 0 REJECT (429) 0 ← no tokens │
|
|
299
|
+
# │ 2.0s - 0 → 1 (refill) 1 ← +1 token │
|
|
300
|
+
# │ 2.1s #7 1 Allow 0 │
|
|
301
|
+
# │ 4.0s - 0 → 1 (refill) 1 │
|
|
302
|
+
# │ 4.1s #8 1 Allow 0 │
|
|
303
|
+
# │ │
|
|
304
|
+
# │ KEY INSIGHT: │
|
|
305
|
+
# │ • Bursts are allowed (first 5 requests succeed immediately) │
|
|
306
|
+
# │ • Long-term rate is enforced (30 requests/minute = 1 every 2 seconds) │
|
|
307
|
+
# │ • Protects against abuse while allowing normal usage spikes │
|
|
308
|
+
# │ │
|
|
309
|
+
# │ COST CALCULATION: │
|
|
310
|
+
# │ With requests_per_minute: 30 │
|
|
311
|
+
# │ • Max requests per hour: 30 × 60 = 1,800 │
|
|
312
|
+
# │ • Max requests per day: 1,800 × 24 = 43,200 │
|
|
313
|
+
# │ • Max requests per month: 43,200 × 30 = 1,296,000 │
|
|
314
|
+
# │ │
|
|
315
|
+
# │ If average request costs $0.01 (Claude Sonnet): │
|
|
316
|
+
# │ • Max monthly cost: 1,296,000 × $0.01 = $12,960 │
|
|
317
|
+
# │ │
|
|
318
|
+
# │ TUNING GUIDANCE: │
|
|
319
|
+
# │ ┌────────────────────────────────────────────────────────────────┐ │
|
|
320
|
+
# │ │ USE CASE RATE LIMIT BURST RATIONALE │ │
|
|
321
|
+
# │ ├────────────────────────────────────────────────────────────────┤ │
|
|
322
|
+
# │ │ Internal tool 60/min 10 Power users │ │
|
|
323
|
+
# │ │ Customer chatbot 30/min 5 Moderate use │ │
|
|
324
|
+
# │ │ Public API 10/min 2 Prevent abuse │ │
|
|
325
|
+
# │ │ Expensive operations 5/min 1 Cost control │ │
|
|
326
|
+
# │ └────────────────────────────────────────────────────────────────┘ │
|
|
327
|
+
# │ │
|
|
328
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
329
|
+
#
|
|
330
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
331
|
+
# │ COMPLIANCE CONSIDERATIONS │
|
|
332
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
333
|
+
# │ │
|
|
334
|
+
# │ GDPR (General Data Protection Regulation) │
|
|
335
|
+
# │ ───────────────────────────────────────── │
|
|
336
|
+
# │ ✓ Enable PII detection with action: redact │
|
|
337
|
+
# │ ✓ Set observability.logging.include_prompts: false │
|
|
338
|
+
# │ ✓ Set observability.logging.include_responses: false │
|
|
339
|
+
# │ ✓ Implement data retention policies (delete logs after N days) │
|
|
340
|
+
# │ ✓ Add audit trail for all PII access (who, when, why) │
|
|
341
|
+
# │ │
|
|
342
|
+
# │ SOC2 (Service Organization Control 2) │
|
|
343
|
+
# │ ────────────────────────────────────────── │
|
|
344
|
+
# │ ✓ Enable observability.tracing and observability.metrics │
|
|
345
|
+
# │ ✓ Set autonomy.level: assisted or supervised │
|
|
346
|
+
# │ ✓ Configure safety.guardrails with strict limits │
|
|
347
|
+
# │ ✓ Enable safety.content_filtering for all categories │
|
|
348
|
+
# │ ✓ Implement access controls (who can run the agent) │
|
|
349
|
+
# │ │
|
|
350
|
+
# │ HIPAA (Health Insurance Portability and Accountability Act) │
|
|
351
|
+
# │ ──────────────────────────────────────────────────────────────── │
|
|
352
|
+
# │ ✓ Enable PII detection with custom patterns for PHI (Protected Health Info) │
|
|
353
|
+
# │ ✓ Encrypt logs and traces (observability.tracing.encryption: true) │
|
|
354
|
+
# │ ✓ Set autonomy.level: supervised (all actions require approval) │
|
|
355
|
+
# │ ✓ Implement audit logging for all agent interactions │
|
|
356
|
+
# │ ✓ Use private LLM deployment (no data sent to third-party APIs) │
|
|
357
|
+
# │ │
|
|
358
|
+
# │ EXAMPLE HIPAA PII PATTERNS: │
|
|
359
|
+
# │ ```yaml │
|
|
360
|
+
# │ pii_detection: │
|
|
361
|
+
# │ custom_patterns: │
|
|
362
|
+
# │ - name: medical_record_number │
|
|
363
|
+
# │ pattern: "MRN[:\s]+\d{6,10}" │
|
|
364
|
+
# │ - name: patient_id │
|
|
365
|
+
# │ pattern: "PT-\d{8}" │
|
|
366
|
+
# │ - name: diagnosis_code │
|
|
367
|
+
# │ pattern: "ICD-10:\s*[A-Z]\d{2}\.\d{1,3}" │
|
|
368
|
+
# │ ``` │
|
|
369
|
+
# │ │
|
|
370
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
371
|
+
#
|
|
372
|
+
# ┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
373
|
+
# │ NEXT STEPS │
|
|
374
|
+
# ├─────────────────────────────────────────────────────────────────────────────────┤
|
|
375
|
+
# │ │
|
|
376
|
+
# │ 04-agent-with-messaging.ossa.yaml │
|
|
377
|
+
# │ Multi-agent coordination: pub/sub, commands, event-driven architecture │
|
|
378
|
+
# │ Learn: How agents communicate, reliability guarantees, message schemas │
|
|
379
|
+
# │ │
|
|
380
|
+
# │ 05-workflow-composition.ossa.yaml │
|
|
381
|
+
# │ Orchestration: Compose agents and tasks into complex workflows │
|
|
382
|
+
# │ Learn: DAGs, error handling, parallel execution, compensation patterns │
|
|
383
|
+
# │ │
|
|
384
|
+
# └─────────────────────────────────────────────────────────────────────────────────┘
|
|
385
|
+
#
|
|
386
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
387
|
+
# THE ACTUAL MANIFEST STARTS HERE
|
|
388
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
389
|
+
|
|
390
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
391
|
+
# API VERSION & KIND
|
|
392
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
393
|
+
apiVersion: ossa/v0.3.0
|
|
394
|
+
kind: Agent
|
|
395
|
+
|
|
396
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
397
|
+
# METADATA
|
|
398
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
399
|
+
metadata:
|
|
400
|
+
name: secure-assistant
|
|
401
|
+
version: 1.0.0
|
|
402
|
+
|
|
403
|
+
description: |
|
|
404
|
+
Production-ready enterprise assistant with comprehensive safety controls:
|
|
405
|
+
- PII detection and redaction (7 types)
|
|
406
|
+
- Content filtering (4 harmful categories)
|
|
407
|
+
- Rate limiting (30 req/min with burst protection)
|
|
408
|
+
- Behavioral guardrails (prevent runaway loops)
|
|
409
|
+
- Autonomy controls (human-in-the-loop for sensitive actions)
|
|
410
|
+
- Full observability (tracing, metrics, structured logging)
|
|
411
|
+
|
|
412
|
+
Compliance: SOC2, GDPR-ready, HIPAA-compatible (with custom PII patterns)
|
|
413
|
+
|
|
414
|
+
labels:
|
|
415
|
+
difficulty: intermediate
|
|
416
|
+
tutorial: "03"
|
|
417
|
+
compliance: soc2
|
|
418
|
+
environment: production
|
|
419
|
+
|
|
420
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
421
|
+
# SPEC
|
|
422
|
+
# ──────────────────────────────────────────────────────────────────────────────────
|
|
423
|
+
spec:
|
|
424
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
425
|
+
# ROLE (System Prompt)
|
|
426
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
427
|
+
# For production agents, the role should emphasize security and compliance
|
|
428
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
429
|
+
role: |
|
|
430
|
+
You are a secure enterprise assistant for internal employee support.
|
|
431
|
+
|
|
432
|
+
Your responsibilities:
|
|
433
|
+
- Help employees find internal documentation and policies
|
|
434
|
+
- Answer workflow and process questions
|
|
435
|
+
- Provide guidance on tools and systems
|
|
436
|
+
- Escalate sensitive questions to human support staff
|
|
437
|
+
|
|
438
|
+
SECURITY REQUIREMENTS (CRITICAL):
|
|
439
|
+
1. **Confidentiality**: Never share confidential company information externally
|
|
440
|
+
2. **PII Protection**: All personally identifiable information is automatically
|
|
441
|
+
redacted, but you should still avoid requesting unnecessary PII
|
|
442
|
+
3. **Data Minimization**: Only request data necessary to answer the question
|
|
443
|
+
4. **Compliance**: Follow company data handling policies at all times
|
|
444
|
+
|
|
445
|
+
When you detect PII in user input, acknowledge it professionally:
|
|
446
|
+
✓ "I see you provided contact information. [PII has been redacted]"
|
|
447
|
+
✗ "Your email is john@company.com" (don't repeat PII)
|
|
448
|
+
|
|
449
|
+
For sensitive operations (delete, permissions changes):
|
|
450
|
+
- Explain the action clearly
|
|
451
|
+
- Explain the risks
|
|
452
|
+
- Request explicit confirmation
|
|
453
|
+
- Document the reason for the action
|
|
454
|
+
|
|
455
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
456
|
+
# LLM CONFIGURATION
|
|
457
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
458
|
+
llm:
|
|
459
|
+
provider: ${LLM_PROVIDER:-anthropic}
|
|
460
|
+
model: ${LLM_MODEL:-claude-sonnet-4-20250514}
|
|
461
|
+
|
|
462
|
+
# Temperature 0.5 - balanced between consistency and natural responses
|
|
463
|
+
# For compliance/security tasks, consider lowering to 0.2-0.3
|
|
464
|
+
temperature: 0.5
|
|
465
|
+
|
|
466
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
467
|
+
# FALLBACK MODELS (High Availability)
|
|
468
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
469
|
+
# Production agents should have fallback models to maintain uptime
|
|
470
|
+
# when the primary provider has issues
|
|
471
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
472
|
+
fallback_models:
|
|
473
|
+
# Fallback to OpenAI if Anthropic fails
|
|
474
|
+
- provider: openai
|
|
475
|
+
model: gpt-4o
|
|
476
|
+
|
|
477
|
+
# Trigger conditions - when to use this fallback
|
|
478
|
+
trigger:
|
|
479
|
+
# Use fallback on any error from primary provider
|
|
480
|
+
on_error: true
|
|
481
|
+
|
|
482
|
+
# Retry primary provider 2 times before falling back
|
|
483
|
+
# This prevents flipping to fallback for transient errors
|
|
484
|
+
max_retries: 2
|
|
485
|
+
|
|
486
|
+
# Optional: trigger on specific error codes
|
|
487
|
+
# error_codes:
|
|
488
|
+
# - 503 # Service unavailable
|
|
489
|
+
# - 529 # Overloaded
|
|
490
|
+
|
|
491
|
+
# Optional: trigger on high latency
|
|
492
|
+
# latency_threshold_ms: 5000 # 5 seconds
|
|
493
|
+
|
|
494
|
+
# You can add more fallbacks (they're tried in order)
|
|
495
|
+
# - provider: google
|
|
496
|
+
# model: gemini-2.0-flash
|
|
497
|
+
# trigger:
|
|
498
|
+
# on_error: true
|
|
499
|
+
|
|
500
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
501
|
+
# COST TRACKING (Budget Management)
|
|
502
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
503
|
+
# Track LLM costs and alert when budgets are approached
|
|
504
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
505
|
+
cost_tracking:
|
|
506
|
+
enabled: true
|
|
507
|
+
|
|
508
|
+
# Alert threshold in dollars
|
|
509
|
+
# When cumulative costs reach this amount, trigger alert
|
|
510
|
+
# Costs reset monthly or per your billing cycle
|
|
511
|
+
budget_alert_threshold: 50.00
|
|
512
|
+
|
|
513
|
+
# Cost allocation tags - for tracking across teams/environments
|
|
514
|
+
# Appears in cost reports and observability traces
|
|
515
|
+
cost_allocation_tags:
|
|
516
|
+
team: platform
|
|
517
|
+
environment: production
|
|
518
|
+
cost_center: engineering
|
|
519
|
+
|
|
520
|
+
# Optional: hard budget limit (reject requests after this)
|
|
521
|
+
# budget_hard_limit: 100.00
|
|
522
|
+
|
|
523
|
+
# Optional: per-user budgets
|
|
524
|
+
# user_budget_limit: 5.00 # per user per month
|
|
525
|
+
|
|
526
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
527
|
+
# AUTONOMY CONFIGURATION (Human-in-the-Loop Controls)
|
|
528
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
529
|
+
# Define when human approval is required vs autonomous action
|
|
530
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
531
|
+
autonomy:
|
|
532
|
+
# Autonomy level - controls default behavior
|
|
533
|
+
# ┌──────────────┬──────────────────────────────────────────────────────────┐
|
|
534
|
+
# │ LEVEL │ BEHAVIOR │
|
|
535
|
+
# ├──────────────┼──────────────────────────────────────────────────────────┤
|
|
536
|
+
# │ autonomous │ Agent acts independently (monitoring only) │
|
|
537
|
+
# │ assisted │ Agent proposes, human approves high-risk actions │
|
|
538
|
+
# │ supervised │ Human approves ALL actions before execution │
|
|
539
|
+
# └──────────────┴──────────────────────────────────────────────────────────┘
|
|
540
|
+
level: assisted
|
|
541
|
+
|
|
542
|
+
# Actions that ALWAYS require human approval
|
|
543
|
+
# Even in autonomous mode, these will block and request confirmation
|
|
544
|
+
approval_required:
|
|
545
|
+
- delete_data # Any data deletion
|
|
546
|
+
- modify_permissions # Permission/access changes
|
|
547
|
+
- external_api_calls # Calls to external services
|
|
548
|
+
- deploy_code # Code deployments
|
|
549
|
+
- modify_production # Production system changes
|
|
550
|
+
|
|
551
|
+
# Actions that are ALLOWED without approval (whitelist)
|
|
552
|
+
# In assisted mode, these run automatically
|
|
553
|
+
allowed_actions:
|
|
554
|
+
- read_documents # Reading files, docs, wikis
|
|
555
|
+
- search_knowledge_base # Searching internal KB
|
|
556
|
+
- generate_reports # Creating reports/summaries
|
|
557
|
+
- send_notifications # Sending alerts/emails
|
|
558
|
+
|
|
559
|
+
# Actions that are BLOCKED entirely (blacklist)
|
|
560
|
+
# Agent will refuse these actions even if approved
|
|
561
|
+
blocked_actions:
|
|
562
|
+
- access_production_database # Direct DB access forbidden
|
|
563
|
+
- modify_security_settings # Security changes forbidden
|
|
564
|
+
- access_secrets_directly # Must use secrets manager
|
|
565
|
+
|
|
566
|
+
# Escalation policy - when to alert humans
|
|
567
|
+
escalation_policy:
|
|
568
|
+
# Conditions that trigger escalation
|
|
569
|
+
triggers:
|
|
570
|
+
- confidence_below_80_percent # LLM confidence too low
|
|
571
|
+
- sensitive_topic_detected # Content filter flagged input
|
|
572
|
+
- multiple_approval_requests # Agent asking repeatedly
|
|
573
|
+
- unusual_access_pattern # Anomaly detection
|
|
574
|
+
|
|
575
|
+
# Where to send escalation notifications
|
|
576
|
+
notify:
|
|
577
|
+
- slack:#security-alerts # Slack channel
|
|
578
|
+
- email:security@company.com # Email address
|
|
579
|
+
- pagerduty:agent-alerts # PagerDuty integration
|
|
580
|
+
|
|
581
|
+
# Optional: escalation SLA
|
|
582
|
+
# response_timeout_minutes: 15 # Human must respond within 15min
|
|
583
|
+
|
|
584
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
585
|
+
# SAFETY CONFIGURATION (Production-Critical)
|
|
586
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
587
|
+
# Multi-layered safety controls for enterprise deployment
|
|
588
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
589
|
+
safety:
|
|
590
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
591
|
+
# CONTENT FILTERING (Harmful Content Detection)
|
|
592
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
593
|
+
# Uses ML models to detect harmful categories in inputs and outputs
|
|
594
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
595
|
+
content_filtering:
|
|
596
|
+
enabled: true
|
|
597
|
+
|
|
598
|
+
# Categories to filter
|
|
599
|
+
# Each uses a specialized ML classifier (typically BERT-based)
|
|
600
|
+
categories:
|
|
601
|
+
- hate_speech # Discriminatory language, slurs
|
|
602
|
+
- violence # Violent content, threats
|
|
603
|
+
- self_harm # Self-injury instructions
|
|
604
|
+
- illegal_activity # Hacking, fraud, illegal instructions
|
|
605
|
+
# - adult_content # Sexually explicit (optional)
|
|
606
|
+
# - spam # Spam/promotional content (optional)
|
|
607
|
+
|
|
608
|
+
# Detection threshold
|
|
609
|
+
# ┌────────┬──────────────┬─────────────────────────────────────────┐
|
|
610
|
+
# │ LEVEL │ CONFIDENCE │ TRADE-OFF │
|
|
611
|
+
# ├────────┼──────────────┼─────────────────────────────────────────┤
|
|
612
|
+
# │ low │ >0.3 (30%) │ Strict: catches more, more false pos │
|
|
613
|
+
# │ medium │ >0.6 (60%) │ Balanced: good precision/recall │
|
|
614
|
+
# │ high │ >0.9 (90%) │ Permissive: very confident violations │
|
|
615
|
+
# └────────┴──────────────┴─────────────────────────────────────────┘
|
|
616
|
+
threshold: medium
|
|
617
|
+
|
|
618
|
+
# Action when harmful content detected
|
|
619
|
+
# • block: Reject request, return error
|
|
620
|
+
# • log: Allow but log incident for review
|
|
621
|
+
# • sanitize: Attempt to rewrite content (experimental)
|
|
622
|
+
action: block
|
|
623
|
+
|
|
624
|
+
# Optional: Custom filter messages
|
|
625
|
+
# block_message: "This request violates our content policy."
|
|
626
|
+
|
|
627
|
+
# Optional: Apply to inputs, outputs, or both
|
|
628
|
+
# apply_to: [input, output] # Default: both
|
|
629
|
+
|
|
630
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
631
|
+
# PII DETECTION (Privacy Protection)
|
|
632
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
633
|
+
# Automatically detect and redact personally identifiable information
|
|
634
|
+
# Uses regex patterns + NER models for high accuracy
|
|
635
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
636
|
+
pii_detection:
|
|
637
|
+
enabled: true
|
|
638
|
+
|
|
639
|
+
# Built-in PII types (see documentation header for regex patterns)
|
|
640
|
+
types:
|
|
641
|
+
- email # Email addresses
|
|
642
|
+
- phone # Phone numbers (US + international)
|
|
643
|
+
- ssn # Social Security Numbers (US)
|
|
644
|
+
- credit_card # Credit card numbers (Luhn-validated)
|
|
645
|
+
- api_key # API keys (sk-, pk-, ghp-, etc.)
|
|
646
|
+
- password # Passwords in common patterns
|
|
647
|
+
- ip_address # IP addresses (IPv4/IPv6)
|
|
648
|
+
|
|
649
|
+
# Action when PII detected
|
|
650
|
+
# • warn: Log detection but allow (for monitoring)
|
|
651
|
+
# • block: Reject request with PII
|
|
652
|
+
# • redact: Replace PII with placeholder (RECOMMENDED)
|
|
653
|
+
action: redact
|
|
654
|
+
|
|
655
|
+
# Redaction format
|
|
656
|
+
# When action=redact, PII is replaced with these placeholders
|
|
657
|
+
# redaction_format: "[REDACTED_{TYPE}]" # Default
|
|
658
|
+
|
|
659
|
+
# Optional: Custom PII patterns (for your domain)
|
|
660
|
+
# See documentation header for examples (employee IDs, medical records, etc.)
|
|
661
|
+
# custom_patterns:
|
|
662
|
+
# - name: employee_id
|
|
663
|
+
# pattern: "EMP-\\d{6}"
|
|
664
|
+
# replacement: "[REDACTED_EMPLOYEE_ID]"
|
|
665
|
+
|
|
666
|
+
# Optional: Exceptions (allow specific patterns)
|
|
667
|
+
# exceptions:
|
|
668
|
+
# - "support@company.com" # Company support email OK
|
|
669
|
+
# - "demo@example.com" # Example emails OK
|
|
670
|
+
|
|
671
|
+
# Optional: Apply to prompts, responses, or both
|
|
672
|
+
# apply_to: [prompt, response] # Default: both
|
|
673
|
+
|
|
674
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
675
|
+
# RATE LIMITING (Abuse Prevention)
|
|
676
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
677
|
+
# Token bucket algorithm - see documentation header for details
|
|
678
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
679
|
+
rate_limiting:
|
|
680
|
+
enabled: true
|
|
681
|
+
|
|
682
|
+
# Steady-state rate: requests per minute
|
|
683
|
+
# This is the LONG-TERM average rate allowed
|
|
684
|
+
# 30 req/min = 1 request every 2 seconds
|
|
685
|
+
requests_per_minute: 30
|
|
686
|
+
|
|
687
|
+
# Burst allowance: number of requests allowed in a burst
|
|
688
|
+
# Allows temporary spikes in usage
|
|
689
|
+
# First 5 requests can happen immediately, then rate limit kicks in
|
|
690
|
+
burst_limit: 5
|
|
691
|
+
|
|
692
|
+
# Optional: Rate limit scope
|
|
693
|
+
# • global: Single limit across all users
|
|
694
|
+
# • per_user: Each user gets their own bucket
|
|
695
|
+
# • per_ip: Each IP address gets their own bucket
|
|
696
|
+
# scope: per_user # Default: global
|
|
697
|
+
|
|
698
|
+
# Optional: Custom rate limit by user tier
|
|
699
|
+
# user_tier_limits:
|
|
700
|
+
# free: 10
|
|
701
|
+
# pro: 60
|
|
702
|
+
# enterprise: 300
|
|
703
|
+
|
|
704
|
+
# Optional: Response when rate limited
|
|
705
|
+
# retry_after_header: true # Include Retry-After header
|
|
706
|
+
|
|
707
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
708
|
+
# BEHAVIORAL GUARDRAILS (Prevent Runaway Agents)
|
|
709
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
710
|
+
# Hard limits on agent behavior to prevent infinite loops and cost overruns
|
|
711
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
712
|
+
guardrails:
|
|
713
|
+
enabled: true
|
|
714
|
+
|
|
715
|
+
# Maximum tool calls per request
|
|
716
|
+
# Prevents infinite loops where agent keeps calling tools
|
|
717
|
+
# Example: Agent calls search → read_file → search → read_file → ...
|
|
718
|
+
# After 20 tool calls, agent is forced to return response
|
|
719
|
+
max_tool_calls: 20
|
|
720
|
+
|
|
721
|
+
# Maximum iteration depth for reasoning chains
|
|
722
|
+
# Limits how many times agent can reflect/reconsider
|
|
723
|
+
# Prevents: "Let me think... actually... wait... let me reconsider..."
|
|
724
|
+
max_iteration_depth: 5
|
|
725
|
+
|
|
726
|
+
# Maximum tokens per response
|
|
727
|
+
# Controls output length (and cost)
|
|
728
|
+
# Claude Sonnet max: 8192, but 4000 is usually sufficient
|
|
729
|
+
max_tokens_per_turn: 4000
|
|
730
|
+
|
|
731
|
+
# Actions that require explicit user confirmation
|
|
732
|
+
# Agent will pause and ask "Are you sure?" before these
|
|
733
|
+
require_confirmation_for:
|
|
734
|
+
- destructive_actions # Delete, drop, remove operations
|
|
735
|
+
- external_communications # Emails, API calls outside org
|
|
736
|
+
- data_modifications # Update, modify database records
|
|
737
|
+
- cost_intensive_operations # Large batch jobs
|
|
738
|
+
|
|
739
|
+
# Optional: Timeout limits
|
|
740
|
+
# max_execution_time_seconds: 300 # 5 minutes max per request
|
|
741
|
+
# max_total_cost_per_request: 1.00 # $1 max cost per request
|
|
742
|
+
|
|
743
|
+
# Optional: Loop detection
|
|
744
|
+
# detect_infinite_loops: true
|
|
745
|
+
# loop_detection_window: 5 # Check last 5 tool calls for patterns
|
|
746
|
+
|
|
747
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
748
|
+
# OBSERVABILITY (Monitoring & Debugging)
|
|
749
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
750
|
+
# Production agents MUST have comprehensive observability
|
|
751
|
+
# ────────────────────────────────────────────────────────────────────────────────
|
|
752
|
+
observability:
|
|
753
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
754
|
+
# DISTRIBUTED TRACING (OpenTelemetry)
|
|
755
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
756
|
+
# Track agent execution flow through multiple services
|
|
757
|
+
# Compatible with Jaeger, Zipkin, DataDog, New Relic, etc.
|
|
758
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
759
|
+
tracing:
|
|
760
|
+
enabled: true
|
|
761
|
+
|
|
762
|
+
# Exporter type
|
|
763
|
+
# • otlp: OpenTelemetry Protocol (standard, recommended)
|
|
764
|
+
# • jaeger: Jaeger-specific format
|
|
765
|
+
# • zipkin: Zipkin-specific format
|
|
766
|
+
exporter: otlp
|
|
767
|
+
|
|
768
|
+
# OTLP endpoint - where to send traces
|
|
769
|
+
# Use environment variable for flexibility across environments:
|
|
770
|
+
# • Dev: http://localhost:4317 (local collector)
|
|
771
|
+
# • Prod: https://otlp.company.com (managed service)
|
|
772
|
+
endpoint: ${OTEL_ENDPOINT:-http://localhost:4317}
|
|
773
|
+
|
|
774
|
+
# Optional: Sampling rate (0.0 to 1.0)
|
|
775
|
+
# In high-traffic environments, sample subset of traces
|
|
776
|
+
# sampling_rate: 0.1 # Sample 10% of requests
|
|
777
|
+
|
|
778
|
+
# Optional: Custom trace attributes
|
|
779
|
+
# attributes:
|
|
780
|
+
# service.version: 1.0.0
|
|
781
|
+
# deployment.environment: production
|
|
782
|
+
|
|
783
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
784
|
+
# METRICS (Time Series Data)
|
|
785
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
786
|
+
# Emit metrics for monitoring dashboards (Grafana, Datadog, etc.)
|
|
787
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
788
|
+
metrics:
|
|
789
|
+
enabled: true
|
|
790
|
+
|
|
791
|
+
# Metrics to collect (automatic):
|
|
792
|
+
# • agent.requests.total (counter)
|
|
793
|
+
# • agent.requests.duration (histogram)
|
|
794
|
+
# • agent.tool.calls.total (counter)
|
|
795
|
+
# • agent.llm.tokens.total (counter)
|
|
796
|
+
# • agent.llm.cost.total (counter)
|
|
797
|
+
# • agent.safety.pii.detected (counter)
|
|
798
|
+
# • agent.safety.content.blocked (counter)
|
|
799
|
+
# • agent.rate_limit.exceeded (counter)
|
|
800
|
+
|
|
801
|
+
# Custom labels added to ALL metrics
|
|
802
|
+
# Use for filtering/grouping in dashboards
|
|
803
|
+
custom_labels:
|
|
804
|
+
service: secure-assistant
|
|
805
|
+
environment: production
|
|
806
|
+
region: us-east-1
|
|
807
|
+
|
|
808
|
+
# Optional: Metrics export interval
|
|
809
|
+
# export_interval_seconds: 60 # Default: 60
|
|
810
|
+
|
|
811
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
812
|
+
# LOGGING (Structured Logs)
|
|
813
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
814
|
+
# JSON-structured logs for searching/analysis (Elasticsearch, Splunk, etc.)
|
|
815
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
816
|
+
logging:
|
|
817
|
+
# Log level
|
|
818
|
+
# debug: Verbose (tool inputs/outputs, reasoning steps)
|
|
819
|
+
# info: Standard (requests, responses, decisions)
|
|
820
|
+
# warn: Warnings (safety triggers, fallbacks)
|
|
821
|
+
# error: Errors only
|
|
822
|
+
level: info
|
|
823
|
+
|
|
824
|
+
# Include full prompts in logs
|
|
825
|
+
# WARNING: Prompts may contain PII - set to false for compliance
|
|
826
|
+
include_prompts: false
|
|
827
|
+
|
|
828
|
+
# Include full responses in logs
|
|
829
|
+
# WARNING: Responses may contain PII - set to false for compliance
|
|
830
|
+
include_responses: false
|
|
831
|
+
|
|
832
|
+
# What IS logged (always):
|
|
833
|
+
# • Request IDs, timestamps
|
|
834
|
+
# • Safety events (PII detected, content blocked)
|
|
835
|
+
# • Autonomy events (approval requested, granted/denied)
|
|
836
|
+
# • Performance metrics (latency, cost)
|
|
837
|
+
# • Error messages and stack traces
|
|
838
|
+
|
|
839
|
+
# Optional: Log retention
|
|
840
|
+
# retention_days: 90 # Keep logs for 90 days (compliance requirement)
|
|
841
|
+
|
|
842
|
+
# Optional: Structured log fields
|
|
843
|
+
# fields:
|
|
844
|
+
# user_id: ${USER_ID}
|
|
845
|
+
# session_id: ${SESSION_ID}
|
|
846
|
+
|
|
847
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
848
|
+
# SUMMARY: PRODUCTION SAFETY CHECKLIST
|
|
849
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|
|
850
|
+
#
|
|
851
|
+
# Before deploying this agent to production, verify:
|
|
852
|
+
# ✓ PII detection enabled with action: redact
|
|
853
|
+
# ✓ Content filtering enabled for all relevant categories
|
|
854
|
+
# ✓ Rate limiting configured (prevents cost overruns and abuse)
|
|
855
|
+
# ✓ Guardrails prevent infinite loops (max_tool_calls, max_iteration_depth)
|
|
856
|
+
# ✓ Autonomy level appropriate for your risk tolerance
|
|
857
|
+
# ✓ Observability enabled (tracing, metrics, logging)
|
|
858
|
+
# ✓ Logging doesn't include PII (include_prompts: false)
|
|
859
|
+
# ✓ Fallback models configured (high availability)
|
|
860
|
+
# ✓ Cost tracking enabled with alerts
|
|
861
|
+
# ✓ Escalation policy defined (notify humans on issues)
|
|
862
|
+
#
|
|
863
|
+
# Next example (04-agent-with-messaging.ossa.yaml):
|
|
864
|
+
# → Multi-agent systems: pub/sub, commands, event-driven architecture
|
|
865
|
+
# → Learn how agents coordinate and communicate
|
|
866
|
+
# → Build agent swarms and pipelines
|
|
867
|
+
#
|
|
868
|
+
# ═══════════════════════════════════════════════════════════════════════════════════
|