@bluefly/openstandardagents 0.2.4
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/.env.example +41 -0
- package/.eslintrc.cjs +43 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +39 -0
- package/.github/dependabot.yml +58 -0
- package/.github/workflows/ci.yml +154 -0
- package/.github/workflows/codeql.yml +41 -0
- package/.github/workflows/dependabot-auto-merge.yml +28 -0
- package/.github/workflows/release.yml +103 -0
- package/.prettierignore +7 -0
- package/.prettierrc.json +10 -0
- package/.redocly.yaml +9 -0
- package/.releaserc.json +84 -0
- package/.releaserc.json.disabled +81 -0
- package/CHANGELOG.md +152 -0
- package/CONTRIBUTING.md +249 -0
- package/LICENSE +190 -0
- package/README.md +280 -0
- package/bin/ossa +8 -0
- package/bin/validate-ossa-0.2.2.ts +244 -0
- package/dist/di-container.d.ts +18 -0
- package/dist/di-container.d.ts.map +1 -0
- package/dist/di-container.js +43 -0
- package/dist/di-container.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/repositories/manifest.repository.d.ts +26 -0
- package/dist/repositories/manifest.repository.d.ts.map +1 -0
- package/dist/repositories/manifest.repository.js +90 -0
- package/dist/repositories/manifest.repository.js.map +1 -0
- package/dist/repositories/schema.repository.d.ts +30 -0
- package/dist/repositories/schema.repository.d.ts.map +1 -0
- package/dist/repositories/schema.repository.js +143 -0
- package/dist/repositories/schema.repository.js.map +1 -0
- package/dist/services/generation.service.d.ts +54 -0
- package/dist/services/generation.service.d.ts.map +1 -0
- package/dist/services/generation.service.js +298 -0
- package/dist/services/generation.service.js.map +1 -0
- package/dist/services/migration.service.d.ts +30 -0
- package/dist/services/migration.service.d.ts.map +1 -0
- package/dist/services/migration.service.js +231 -0
- package/dist/services/migration.service.js.map +1 -0
- package/dist/services/runtime/openai.adapter.d.ts +94 -0
- package/dist/services/runtime/openai.adapter.d.ts.map +1 -0
- package/dist/services/runtime/openai.adapter.js +209 -0
- package/dist/services/runtime/openai.adapter.js.map +1 -0
- package/dist/services/validation.service.d.ts +45 -0
- package/dist/services/validation.service.d.ts.map +1 -0
- package/dist/services/validation.service.js +362 -0
- package/dist/services/validation.service.js.map +1 -0
- package/dist/services/validators/anthropic.validator.d.ts +9 -0
- package/dist/services/validators/anthropic.validator.d.ts.map +1 -0
- package/dist/services/validators/anthropic.validator.js +105 -0
- package/dist/services/validators/anthropic.validator.js.map +1 -0
- package/dist/services/validators/autogen.validator.d.ts +9 -0
- package/dist/services/validators/autogen.validator.d.ts.map +1 -0
- package/dist/services/validators/autogen.validator.js +111 -0
- package/dist/services/validators/autogen.validator.js.map +1 -0
- package/dist/services/validators/crewai.validator.d.ts +9 -0
- package/dist/services/validators/crewai.validator.d.ts.map +1 -0
- package/dist/services/validators/crewai.validator.js +117 -0
- package/dist/services/validators/crewai.validator.js.map +1 -0
- package/dist/services/validators/cursor.validator.d.ts +9 -0
- package/dist/services/validators/cursor.validator.d.ts.map +1 -0
- package/dist/services/validators/cursor.validator.js +88 -0
- package/dist/services/validators/cursor.validator.js.map +1 -0
- package/dist/services/validators/index.d.ts +15 -0
- package/dist/services/validators/index.d.ts.map +1 -0
- package/dist/services/validators/index.js +15 -0
- package/dist/services/validators/index.js.map +1 -0
- package/dist/services/validators/langchain.validator.d.ts +9 -0
- package/dist/services/validators/langchain.validator.d.ts.map +1 -0
- package/dist/services/validators/langchain.validator.js +103 -0
- package/dist/services/validators/langchain.validator.js.map +1 -0
- package/dist/services/validators/langflow.validator.d.ts +9 -0
- package/dist/services/validators/langflow.validator.d.ts.map +1 -0
- package/dist/services/validators/langflow.validator.js +92 -0
- package/dist/services/validators/langflow.validator.js.map +1 -0
- package/dist/services/validators/langgraph.validator.d.ts +9 -0
- package/dist/services/validators/langgraph.validator.d.ts.map +1 -0
- package/dist/services/validators/langgraph.validator.js +123 -0
- package/dist/services/validators/langgraph.validator.js.map +1 -0
- package/dist/services/validators/llamaindex.validator.d.ts +9 -0
- package/dist/services/validators/llamaindex.validator.d.ts.map +1 -0
- package/dist/services/validators/llamaindex.validator.js +121 -0
- package/dist/services/validators/llamaindex.validator.js.map +1 -0
- package/dist/services/validators/openai.validator.d.ts +9 -0
- package/dist/services/validators/openai.validator.d.ts.map +1 -0
- package/dist/services/validators/openai.validator.js +126 -0
- package/dist/services/validators/openai.validator.js.map +1 -0
- package/dist/services/validators/vercel-ai.validator.d.ts +9 -0
- package/dist/services/validators/vercel-ai.validator.d.ts.map +1 -0
- package/dist/services/validators/vercel-ai.validator.js +99 -0
- package/dist/services/validators/vercel-ai.validator.js.map +1 -0
- package/dist/spec/v0.1.9/agent-autonomous-extensions.json +234 -0
- package/dist/spec/v0.1.9/ecosystem-compliance.json +235 -0
- package/dist/spec/v0.1.9/ossa-v0.1.9.schema.json +695 -0
- package/dist/spec/v0.1.9/ossa-v0.1.9.schema.json.backup +695 -0
- package/dist/spec/v0.1.9/reasoning-compliance.json +654 -0
- package/dist/spec/v0.2.2/kagent-enhancements.json +395 -0
- package/dist/spec/v0.2.2/ossa-0.2.2.schema.json +906 -0
- package/dist/spec/v0.2.2/ossa-0.2.2.yaml +448 -0
- package/dist/spec/v0.2.2/ossa-reasoning-compliance-1.0.schema.json +424 -0
- package/dist/spec/v0.2.3/CHANGELOG.md +176 -0
- package/dist/spec/v0.2.3/README.md +154 -0
- package/dist/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/dist/spec/v0.2.3/ossa-0.2.3.schema.json +1397 -0
- package/dist/spec/v0.2.3/ossa-0.2.3.yaml +448 -0
- package/dist/spec/v0.2.4-dev/CHANGELOG.md +403 -0
- package/dist/spec/v0.2.4-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.4-dev/ossa-0.2.4-dev.schema.json +1696 -0
- package/dist/spec/v0.2.4-dev/ossa-0.2.4-dev.yaml +581 -0
- package/dist/spec/v0.2.5-dev/CHANGELOG.md +171 -0
- package/dist/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +362 -0
- package/dist/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +464 -0
- package/dist/spec/v0.2.5-dev/examples/research-team.ossa.yaml +440 -0
- package/dist/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +317 -0
- package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.schema.json +1732 -0
- package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +409 -0
- package/dist/types/index.d.ts +178 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/openapi-extensions.d.ts +164 -0
- package/dist/types/openapi-extensions.d.ts.map +1 -0
- package/dist/types/openapi-extensions.js +6 -0
- package/dist/types/openapi-extensions.js.map +1 -0
- package/docs/OSSA-COMPLIANT-BADGE.md +248 -0
- package/docs/README.md +31 -0
- package/docs/VERSIONING.md +284 -0
- package/docs/agent-openapi-spec.yml +942 -0
- package/docs/getting-started.md +87 -0
- package/docs/migration/general-agent-schema.yml +255 -0
- package/docs/migration/migration-manifest.json +64 -0
- package/docs/openapi-extensions.md +930 -0
- package/docs/schemas/openapi-extensions.schema.json +486 -0
- package/examples/adk-integration/code-review-workflow.yml +136 -0
- package/examples/adk-integration/customer-support.yml +263 -0
- package/examples/adk-integration/data-pipeline.yml +173 -0
- package/examples/advanced/patterns/compliance-context-production.json +53 -0
- package/examples/advanced/patterns/model-router.ts +274 -0
- package/examples/advanced/patterns/smart-model-routing.ts +248 -0
- package/examples/advanced/workflows/hybrid-model-strategy.yaml +232 -0
- package/examples/agent-manifests/critics/critic-agent.yaml +149 -0
- package/examples/agent-manifests/governors/governor-agent.yaml +128 -0
- package/examples/agent-manifests/integrators/integrator-agent.yaml +103 -0
- package/examples/agent-manifests/judges/judge-agent.yaml +153 -0
- package/examples/agent-manifests/monitors/monitor-agent.yaml +122 -0
- package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +247 -0
- package/examples/agent-manifests/sample-compliant-agent.yaml +147 -0
- package/examples/agent-manifests/workers/worker-agent.yaml +82 -0
- package/examples/anthropic/claude-assistant.ossa.json +45 -0
- package/examples/architecture/model-configuration/ollama-integration.ts +110 -0
- package/examples/autogen/multi-agent.ossa.json +37 -0
- package/examples/bridge-configurations.yaml +346 -0
- package/examples/bridges/Dockerfile.production +87 -0
- package/examples/bridges/__pycache__/aiflow-bridge-enhanced.cpython-313.pyc +0 -0
- package/examples/bridges/__pycache__/aiflow-phoenix-tracing.cpython-313.pyc +0 -0
- package/examples/bridges/__pycache__/test_aiflow_integration.cpython-313.pyc +0 -0
- package/examples/bridges/aiflow-bridge-enhanced.py +462 -0
- package/examples/bridges/aiflow-bridge-example.yml +310 -0
- package/examples/bridges/aiflow-phoenix-tracing.py +310 -0
- package/examples/bridges/aiflow-registration-api.openapi.yml +439 -0
- package/examples/bridges/k8s/configmap.yaml +121 -0
- package/examples/bridges/k8s/deployment-simple.yaml +34 -0
- package/examples/bridges/k8s/deployment.yaml +275 -0
- package/examples/bridges/k8s/hpa.yaml +126 -0
- package/examples/bridges/k8s/ingress.yaml +155 -0
- package/examples/bridges/kagent-bridge-example.yml +94 -0
- package/examples/bridges/load-tests/Dockerfile +28 -0
- package/examples/bridges/load-tests/k6-load-test.js +302 -0
- package/examples/bridges/load-tests/requirements.txt +20 -0
- package/examples/bridges/loadtest/k6-scenarios.js +270 -0
- package/examples/bridges/phase4/SLO-SLA.yaml +249 -0
- package/examples/bridges/phase4/chaos-tests.yaml +226 -0
- package/examples/bridges/requirements.txt +24 -0
- package/examples/bridges/test_aiflow_integration.py +341 -0
- package/examples/common_npm/agent-router.ossa.yaml +182 -0
- package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +60 -0
- package/examples/compliance-agent.yml +155 -0
- package/examples/crewai/research-team.ossa.json +36 -0
- package/examples/cursor/code-review-agent.ossa.json +47 -0
- package/examples/drupal/gitlab-ml-recommender.ossa.yaml +609 -0
- package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +68 -0
- package/examples/enterprise/agent.yml +452 -0
- package/examples/extensions/drupal-v1.yml +266 -0
- package/examples/extensions/kagent-v1.yml +167 -0
- package/examples/getting-started/hello-world-complete.ossa.yaml +266 -0
- package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +376 -0
- package/examples/kagent/README.md +31 -0
- package/examples/kagent/compliance-validator.ossa.yaml +111 -0
- package/examples/kagent/cost-optimizer.ossa.yaml +93 -0
- package/examples/kagent/documentation-agent.ossa.yaml +91 -0
- package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +269 -0
- package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +106 -0
- package/examples/kagent/k8s-troubleshooter.ossa.yaml +257 -0
- package/examples/kagent/security-scanner.ossa.yaml +140 -0
- package/examples/langchain/chain-agent.ossa.json +42 -0
- package/examples/langflow/workflow-agent.ossa.json +39 -0
- package/examples/langgraph/state-machine-agent.ossa.json +59 -0
- package/examples/llamaindex/rag-agent.ossa.json +41 -0
- package/examples/migration-guides/from-langchain-to-ossa.yaml +309 -0
- package/examples/minimal/agent.yml +152 -0
- package/examples/minimal/openapi.yaml +95 -0
- package/examples/openai/swarm-agent.ossa.json +59 -0
- package/examples/openapi-extensions/README.md +87 -0
- package/examples/openapi-extensions/minimal-agent-api.openapi.yml +288 -0
- package/examples/openapi-extensions/orchestrator-agent-api.openapi.yml +633 -0
- package/examples/openapi-extensions/worker-agent-api.openapi.yml +533 -0
- package/examples/production/agent.yml +713 -0
- package/examples/production/document-analyzer-openai.yml +134 -0
- package/examples/quickstart/support-agent.ossa.yaml +59 -0
- package/examples/service-registry-usage.ts +423 -0
- package/examples/spec-examples/audit-agent.yml +147 -0
- package/examples/spec-examples/chat-agent.yml +189 -0
- package/examples/spec-examples/compliance-agent.yml +204 -0
- package/examples/spec-examples/data-processing-agent.yml +132 -0
- package/examples/spec-examples/development-agent.yml +138 -0
- package/examples/spec-examples/edge-agent.yml +101 -0
- package/examples/spec-examples/integration-agent.yml +129 -0
- package/examples/spec-examples/monitoring-agent.yml +130 -0
- package/examples/spec-examples/serverless-agent.yml +82 -0
- package/examples/spec-examples/workflow-agent.yml +223 -0
- package/examples/templates/ossa-compliance.yaml +56 -0
- package/examples/typescript/advanced/demo-registry.ts +168 -0
- package/examples/typescript/mcpb-agent-example.ts +358 -0
- package/examples/vercel/edge-agent.ossa.json +43 -0
- package/infrastructure/docker-compose.yml +33 -0
- package/junit.xml +1 -0
- package/openapi/drupal-agent-api.openapi.yaml +348 -0
- package/openapi/gitlab-orchestrator.openapi.yaml +330 -0
- package/openapi/helm-generator.openapi.yaml +389 -0
- package/openapi/ossa-core-api.openapi.yaml +1448 -0
- package/openapi/ossa-registry-api.openapi.yaml +980 -0
- package/openapi/ossa-registry.openapi.yaml +782 -0
- package/openapi/self-evolving-ecosystem.openapi.yaml +1530 -0
- package/openapi/unified-agent-gateway.openapi.yaml +833 -0
- package/ossa-website-swarm-tasks.json +105 -0
- package/package.json +132 -0
- package/release.config.js +64 -0
- package/spec/v0.1.9/agent-autonomous-extensions.json +234 -0
- package/spec/v0.1.9/ecosystem-compliance.json +235 -0
- package/spec/v0.1.9/ossa-v0.1.9.schema.json +695 -0
- package/spec/v0.1.9/ossa-v0.1.9.schema.json.backup +695 -0
- package/spec/v0.1.9/reasoning-compliance.json +654 -0
- package/spec/v0.2.2/kagent-enhancements.json +395 -0
- package/spec/v0.2.2/ossa-0.2.2.schema.json +906 -0
- package/spec/v0.2.2/ossa-0.2.2.yaml +448 -0
- package/spec/v0.2.2/ossa-reasoning-compliance-1.0.schema.json +424 -0
- package/spec/v0.2.3/CHANGELOG.md +176 -0
- package/spec/v0.2.3/README.md +154 -0
- package/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/spec/v0.2.3/ossa-0.2.3.schema.json +1397 -0
- package/spec/v0.2.3/ossa-0.2.3.yaml +448 -0
- package/spec/v0.2.4-dev/CHANGELOG.md +403 -0
- package/spec/v0.2.4-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.4-dev/ossa-0.2.4-dev.schema.json +1696 -0
- package/spec/v0.2.4-dev/ossa-0.2.4-dev.yaml +581 -0
- package/spec/v0.2.5-dev/CHANGELOG.md +171 -0
- package/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +362 -0
- package/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +464 -0
- package/spec/v0.2.5-dev/examples/research-team.ossa.yaml +440 -0
- package/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +317 -0
- package/spec/v0.2.5-dev/ossa-0.2.5-dev.schema.json +1732 -0
- package/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +409 -0
- package/test-results.xml +1 -0
- package/website/.lighthouserc.js +20 -0
- package/website/.prettierrc +10 -0
- package/website/Dockerfile +17 -0
- package/website/app/about/page.tsx +295 -0
- package/website/app/api/validate/route.ts +88 -0
- package/website/app/blog/[slug]/page.tsx +167 -0
- package/website/app/blog/page.tsx +162 -0
- package/website/app/docs/[[...slug]]/page.tsx +349 -0
- package/website/app/docs/core-concepts/project-structure/page.tsx +349 -0
- package/website/app/ecosystem/page.tsx +375 -0
- package/website/app/examples/page.tsx +123 -0
- package/website/app/globals.css +108 -0
- package/website/app/layout.tsx +106 -0
- package/website/app/page.tsx +409 -0
- package/website/app/playground/page.tsx +507 -0
- package/website/app/robots.ts +19 -0
- package/website/app/rss.xml/route.ts +74 -0
- package/website/app/schema/page.tsx +970 -0
- package/website/app/sitemap.ts +56 -0
- package/website/app/specification/page.tsx +211 -0
- package/website/components/InstallCommand.tsx +96 -0
- package/website/components/Logo.tsx +24 -0
- package/website/components/StructuredData.tsx +65 -0
- package/website/components/docs/DocsSearch.tsx +104 -0
- package/website/components/docs/DocsSidebar.tsx +118 -0
- package/website/components/docs/MarkdownContent.tsx +183 -0
- package/website/components/docs/VersionSelector.tsx +49 -0
- package/website/components/examples/ExamplesViewer.tsx +293 -0
- package/website/components/layout/Footer.tsx +111 -0
- package/website/components/layout/Header.tsx +170 -0
- package/website/components/schema/SchemaExplorer.tsx +213 -0
- package/website/content/blog/OpenAPI-AI-Agents-Standard.md +285 -0
- package/website/content/blog/Why-Formal-Standards-Matter-Now.md +209 -0
- package/website/content/blog/introducing-ossa-framework.md +328 -0
- package/website/content/blog/ossa-production-results.md +279 -0
- package/website/content/blog/welcome-to-ossa.md +43 -0
- package/website/content/blog/why-ai-agents-need-open-standard.md +98 -0
- package/website/content/docs/00-HOME.md +160 -0
- package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +107 -0
- package/website/content/docs/OpenAPI-Extensions.md +498 -0
- package/website/content/docs/architecture/execution-flow.md +335 -0
- package/website/content/docs/architecture/multi-agent-systems.md +737 -0
- package/website/content/docs/architecture/overview.md +121 -0
- package/website/content/docs/architecture/stack-integration.md +461 -0
- package/website/content/docs/changelog.md +246 -0
- package/website/content/docs/contributing.md +599 -0
- package/website/content/docs/core-concepts/project-structure.md +348 -0
- package/website/content/docs/ecosystem/framework-support.md +821 -0
- package/website/content/docs/ecosystem/overview.md +366 -0
- package/website/content/docs/examples/Migration-Guides.md +214 -0
- package/website/content/docs/examples.md +71 -0
- package/website/content/docs/for-audiences/Enterprises.md +256 -0
- package/website/content/docs/for-audiences/Students-Researchers.md +122 -0
- package/website/content/docs/for-audiences/architects.md +224 -0
- package/website/content/docs/for-audiences/developers.md +220 -0
- package/website/content/docs/getting-started/5-minute-overview.md +85 -0
- package/website/content/docs/getting-started/Hello-World.md +184 -0
- package/website/content/docs/getting-started/first-agent.md +196 -0
- package/website/content/docs/getting-started/installation.md +155 -0
- package/website/content/docs/getting-started/running-agents.md +107 -0
- package/website/content/docs/integrations/aiflow.md +104 -0
- package/website/content/docs/integrations/drupal.md +105 -0
- package/website/content/docs/migration-guides/00-index.md +76 -0
- package/website/content/docs/migration-guides/README.md +133 -0
- package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +1750 -0
- package/website/content/docs/migration-guides/crewai-to-ossa.md +274 -0
- package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +2017 -0
- package/website/content/docs/migration-guides/index.md +133 -0
- package/website/content/docs/migration-guides/langchain-to-ossa.md +1714 -0
- package/website/content/docs/migration-guides/langflow-to-ossa.md +2075 -0
- package/website/content/docs/migration-guides/openai-to-ossa.md +1202 -0
- package/website/content/docs/openapi-extensions/examples.md +550 -0
- package/website/content/docs/openapi-extensions/index.md +495 -0
- package/website/content/docs/openapi-extensions/operation-extensions.md +398 -0
- package/website/content/docs/openapi-extensions/root-extensions.md +364 -0
- package/website/content/docs/pre-release/index.md +175 -0
- package/website/content/docs/quick-reference.md +17 -0
- package/website/content/docs/schema-reference/agent-spec.md +406 -0
- package/website/content/docs/schema-reference/autonomy.md +568 -0
- package/website/content/docs/schema-reference/constraints.md +543 -0
- package/website/content/docs/schema-reference/index.md +176 -0
- package/website/content/docs/schema-reference/llm-config.md +445 -0
- package/website/content/docs/schema-reference/observability.md +654 -0
- package/website/content/docs/schema-reference/ossa-manifest.md +309 -0
- package/website/content/docs/schema-reference/taxonomy.md +509 -0
- package/website/content/docs/schema-reference/tools.md +628 -0
- package/website/content/docs/templates/blog-post.md +43 -0
- package/website/content/docs/use-cases/00-index.md +395 -0
- package/website/content/docs/use-cases/cicd-code-review.md +1236 -0
- package/website/content/docs/use-cases/customer-support.md +1234 -0
- package/website/content/docs/use-cases/enterprise-compliance.md +1208 -0
- package/website/content/docs/use-cases/research-multi-agent.md +1161 -0
- package/website/lib/version.ts +18 -0
- package/website/next.config.js +17 -0
- package/website/next.config.ts +16 -0
- package/website/nginx.conf +32 -0
- package/website/package-lock.json +9145 -0
- package/website/package.json +53 -0
- package/website/postcss.config.js +7 -0
- package/website/postcss.config.mjs +9 -0
- package/website/scripts/sync-version.js +44 -0
- package/website/scripts/sync-wiki.ts +261 -0
- package/website/tailwind.config.js +58 -0
- package/website/tailwind.config.ts +65 -0
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Autonomy"
|
|
3
|
+
description: "Agent autonomy levels and action control configuration"
|
|
4
|
+
weight: 6
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Autonomy Object
|
|
8
|
+
|
|
9
|
+
The `autonomy` object in `spec.autonomy` controls the agent's decision-making level and action permissions. It defines what the agent can do independently versus what requires human approval.
|
|
10
|
+
|
|
11
|
+
## Field Reference
|
|
12
|
+
|
|
13
|
+
| Field Name | Type | Required | Description |
|
|
14
|
+
|------------|------|----------|-------------|
|
|
15
|
+
| `level` | string (enum) | No | Autonomy level: `supervised`, `autonomous`, or `fully_autonomous` |
|
|
16
|
+
| `approval_required` | boolean | No | Whether human approval is required before executing actions |
|
|
17
|
+
| `allowed_actions` | array[string] | No | Whitelist of permitted actions. If empty or omitted, all actions allowed (subject to other constraints) |
|
|
18
|
+
| `blocked_actions` | array[string] | No | Blacklist of forbidden actions. Takes precedence over `allowed_actions` |
|
|
19
|
+
| `escalation_policy` | object | No | Rules for escalating to human oversight (platform-specific structure) |
|
|
20
|
+
|
|
21
|
+
## Autonomy Levels
|
|
22
|
+
|
|
23
|
+
### supervised
|
|
24
|
+
|
|
25
|
+
Agent operates with human oversight. Suitable for:
|
|
26
|
+
- Learning and testing new agents
|
|
27
|
+
- High-risk operations
|
|
28
|
+
- Regulated environments
|
|
29
|
+
- Customer-facing interactions
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
autonomy:
|
|
33
|
+
level: supervised
|
|
34
|
+
approval_required: true
|
|
35
|
+
allowed_actions:
|
|
36
|
+
- read_data
|
|
37
|
+
- analyze
|
|
38
|
+
- generate_report
|
|
39
|
+
blocked_actions:
|
|
40
|
+
- delete_data
|
|
41
|
+
- modify_production
|
|
42
|
+
- send_external_communication
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Characteristics:**
|
|
46
|
+
- Human reviews agent actions before execution
|
|
47
|
+
- Suitable for read-heavy operations with limited writes
|
|
48
|
+
- Agent suggests actions, human confirms
|
|
49
|
+
- Ideal for production environments with strict change control
|
|
50
|
+
|
|
51
|
+
### autonomous
|
|
52
|
+
|
|
53
|
+
Agent makes independent decisions within defined boundaries. Suitable for:
|
|
54
|
+
- Well-tested agents
|
|
55
|
+
- Automated workflows
|
|
56
|
+
- Non-critical operations
|
|
57
|
+
- Internal tooling
|
|
58
|
+
|
|
59
|
+
```yaml
|
|
60
|
+
autonomy:
|
|
61
|
+
level: autonomous
|
|
62
|
+
approval_required: false
|
|
63
|
+
allowed_actions:
|
|
64
|
+
- read_data
|
|
65
|
+
- analyze
|
|
66
|
+
- generate_report
|
|
67
|
+
- create_ticket
|
|
68
|
+
- update_ticket
|
|
69
|
+
- post_comment
|
|
70
|
+
blocked_actions:
|
|
71
|
+
- delete_data
|
|
72
|
+
- modify_schema
|
|
73
|
+
- grant_access
|
|
74
|
+
- send_external_email
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Characteristics:**
|
|
78
|
+
- Agent acts independently within allowed actions
|
|
79
|
+
- No human approval required for routine operations
|
|
80
|
+
- Escalates only for blocked actions or errors
|
|
81
|
+
- Balances automation with safety
|
|
82
|
+
|
|
83
|
+
### fully_autonomous
|
|
84
|
+
|
|
85
|
+
Agent operates with maximum independence. Suitable for:
|
|
86
|
+
- Highly trusted agents
|
|
87
|
+
- Low-risk operations
|
|
88
|
+
- Fully automated pipelines
|
|
89
|
+
- Internal read-only analysis
|
|
90
|
+
|
|
91
|
+
```yaml
|
|
92
|
+
autonomy:
|
|
93
|
+
level: fully_autonomous
|
|
94
|
+
approval_required: false
|
|
95
|
+
blocked_actions:
|
|
96
|
+
- delete_production_data
|
|
97
|
+
- modify_security_settings
|
|
98
|
+
- grant_admin_access
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Characteristics:**
|
|
102
|
+
- Agent makes all decisions independently
|
|
103
|
+
- Minimal human intervention
|
|
104
|
+
- Relies on `blocked_actions` for safety
|
|
105
|
+
- Requires high confidence in agent reliability
|
|
106
|
+
|
|
107
|
+
## Default Behavior
|
|
108
|
+
|
|
109
|
+
If `autonomy` is omitted entirely:
|
|
110
|
+
```yaml
|
|
111
|
+
# Default values (platform-dependent)
|
|
112
|
+
autonomy:
|
|
113
|
+
level: supervised # Conservative default
|
|
114
|
+
approval_required: true # Require approval
|
|
115
|
+
allowed_actions: [] # All actions allowed (if not blocked)
|
|
116
|
+
blocked_actions: [] # No actions blocked
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Action Control
|
|
120
|
+
|
|
121
|
+
### Allowed Actions (Whitelist)
|
|
122
|
+
|
|
123
|
+
Define what the agent **can** do:
|
|
124
|
+
|
|
125
|
+
```yaml
|
|
126
|
+
autonomy:
|
|
127
|
+
allowed_actions:
|
|
128
|
+
- read_file
|
|
129
|
+
- list_directory
|
|
130
|
+
- search_code
|
|
131
|
+
- analyze_metrics
|
|
132
|
+
- generate_report
|
|
133
|
+
- create_ticket
|
|
134
|
+
- update_ticket
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Behavior:**
|
|
138
|
+
- If `allowed_actions` is empty or omitted: All actions allowed (subject to `blocked_actions`)
|
|
139
|
+
- If `allowed_actions` is specified: Only listed actions are permitted
|
|
140
|
+
|
|
141
|
+
### Blocked Actions (Blacklist)
|
|
142
|
+
|
|
143
|
+
Define what the agent **cannot** do:
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
autonomy:
|
|
147
|
+
blocked_actions:
|
|
148
|
+
- delete_file
|
|
149
|
+
- modify_production
|
|
150
|
+
- grant_access
|
|
151
|
+
- send_external_email
|
|
152
|
+
- execute_shell_command
|
|
153
|
+
- modify_database_schema
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Behavior:**
|
|
157
|
+
- `blocked_actions` takes precedence over `allowed_actions`
|
|
158
|
+
- If an action is in both lists, it is **blocked**
|
|
159
|
+
|
|
160
|
+
### Combined Example
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
autonomy:
|
|
164
|
+
level: autonomous
|
|
165
|
+
approval_required: false
|
|
166
|
+
|
|
167
|
+
# Agent CAN do these things
|
|
168
|
+
allowed_actions:
|
|
169
|
+
- read_file
|
|
170
|
+
- write_file
|
|
171
|
+
- create_directory
|
|
172
|
+
- search_code
|
|
173
|
+
- git_commit
|
|
174
|
+
- git_push
|
|
175
|
+
- create_pull_request
|
|
176
|
+
|
|
177
|
+
# Agent CANNOT do these (even if in allowed_actions)
|
|
178
|
+
blocked_actions:
|
|
179
|
+
- git_push_force
|
|
180
|
+
- delete_branch
|
|
181
|
+
- modify_main_branch
|
|
182
|
+
- bypass_ci_checks
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Approval Required
|
|
186
|
+
|
|
187
|
+
The `approval_required` boolean controls whether actions need human confirmation:
|
|
188
|
+
|
|
189
|
+
### No Approval (Fully Automated)
|
|
190
|
+
|
|
191
|
+
```yaml
|
|
192
|
+
autonomy:
|
|
193
|
+
level: autonomous
|
|
194
|
+
approval_required: false
|
|
195
|
+
allowed_actions:
|
|
196
|
+
- read_data
|
|
197
|
+
- analyze
|
|
198
|
+
- generate_report
|
|
199
|
+
- create_ticket
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Use cases:**
|
|
203
|
+
- Automated monitoring and alerting
|
|
204
|
+
- Data analysis and reporting
|
|
205
|
+
- Log aggregation and analysis
|
|
206
|
+
- Non-destructive operations
|
|
207
|
+
|
|
208
|
+
### Approval Required
|
|
209
|
+
|
|
210
|
+
```yaml
|
|
211
|
+
autonomy:
|
|
212
|
+
level: supervised
|
|
213
|
+
approval_required: true
|
|
214
|
+
allowed_actions:
|
|
215
|
+
- create_pull_request
|
|
216
|
+
- modify_configuration
|
|
217
|
+
- deploy_to_staging
|
|
218
|
+
- update_documentation
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Use cases:**
|
|
222
|
+
- Code changes
|
|
223
|
+
- Configuration updates
|
|
224
|
+
- Deployments
|
|
225
|
+
- Customer-facing changes
|
|
226
|
+
- Compliance-sensitive operations
|
|
227
|
+
|
|
228
|
+
## Escalation Policy
|
|
229
|
+
|
|
230
|
+
The `escalation_policy` object defines when and how to escalate to humans. Structure is platform-specific.
|
|
231
|
+
|
|
232
|
+
```yaml
|
|
233
|
+
autonomy:
|
|
234
|
+
level: autonomous
|
|
235
|
+
approval_required: false
|
|
236
|
+
escalation_policy:
|
|
237
|
+
# Escalate on high-risk actions
|
|
238
|
+
high_risk_actions:
|
|
239
|
+
- delete_data
|
|
240
|
+
- modify_production
|
|
241
|
+
- grant_access
|
|
242
|
+
# Escalate on errors
|
|
243
|
+
on_error: true
|
|
244
|
+
max_retries: 3
|
|
245
|
+
# Escalation channels
|
|
246
|
+
channels:
|
|
247
|
+
- type: slack
|
|
248
|
+
channel: "#agent-alerts"
|
|
249
|
+
- type: pagerduty
|
|
250
|
+
severity: high
|
|
251
|
+
# Escalation conditions
|
|
252
|
+
conditions:
|
|
253
|
+
- cost_exceeds: 100.00
|
|
254
|
+
- duration_exceeds: 3600
|
|
255
|
+
- error_rate_exceeds: 0.1
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Complete Examples
|
|
259
|
+
|
|
260
|
+
### Read-Only Analysis Agent
|
|
261
|
+
|
|
262
|
+
```yaml
|
|
263
|
+
apiVersion: ossa/v0.2.3
|
|
264
|
+
kind: Agent
|
|
265
|
+
metadata:
|
|
266
|
+
name: log-analyzer
|
|
267
|
+
version: 1.0.0
|
|
268
|
+
spec:
|
|
269
|
+
role: You are a log analysis specialist.
|
|
270
|
+
|
|
271
|
+
autonomy:
|
|
272
|
+
level: fully_autonomous
|
|
273
|
+
approval_required: false
|
|
274
|
+
allowed_actions:
|
|
275
|
+
- read_logs
|
|
276
|
+
- search_logs
|
|
277
|
+
- aggregate_metrics
|
|
278
|
+
- detect_patterns
|
|
279
|
+
- generate_report
|
|
280
|
+
- create_ticket
|
|
281
|
+
blocked_actions:
|
|
282
|
+
- modify_logs
|
|
283
|
+
- delete_logs
|
|
284
|
+
- change_retention
|
|
285
|
+
|
|
286
|
+
tools:
|
|
287
|
+
- type: mcp
|
|
288
|
+
server: loki
|
|
289
|
+
capabilities:
|
|
290
|
+
- query_logs
|
|
291
|
+
- type: http
|
|
292
|
+
name: jira
|
|
293
|
+
endpoint: https://jira.example.com
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Code Review Agent (Supervised)
|
|
297
|
+
|
|
298
|
+
```yaml
|
|
299
|
+
apiVersion: ossa/v0.2.3
|
|
300
|
+
kind: Agent
|
|
301
|
+
metadata:
|
|
302
|
+
name: code-reviewer
|
|
303
|
+
version: 2.0.0
|
|
304
|
+
spec:
|
|
305
|
+
role: You are a code review specialist.
|
|
306
|
+
|
|
307
|
+
autonomy:
|
|
308
|
+
level: supervised
|
|
309
|
+
approval_required: true
|
|
310
|
+
allowed_actions:
|
|
311
|
+
- read_code
|
|
312
|
+
- analyze_code
|
|
313
|
+
- run_static_analysis
|
|
314
|
+
- detect_vulnerabilities
|
|
315
|
+
- generate_review_comments
|
|
316
|
+
- post_review
|
|
317
|
+
blocked_actions:
|
|
318
|
+
- modify_code
|
|
319
|
+
- merge_pull_request
|
|
320
|
+
- approve_pull_request
|
|
321
|
+
- bypass_checks
|
|
322
|
+
|
|
323
|
+
tools:
|
|
324
|
+
- type: mcp
|
|
325
|
+
server: github
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Infrastructure Automation Agent
|
|
329
|
+
|
|
330
|
+
```yaml
|
|
331
|
+
apiVersion: ossa/v0.2.3
|
|
332
|
+
kind: Agent
|
|
333
|
+
metadata:
|
|
334
|
+
name: k8s-autoscaler
|
|
335
|
+
version: 1.5.0
|
|
336
|
+
spec:
|
|
337
|
+
role: You are a Kubernetes autoscaling specialist.
|
|
338
|
+
|
|
339
|
+
autonomy:
|
|
340
|
+
level: autonomous
|
|
341
|
+
approval_required: false
|
|
342
|
+
allowed_actions:
|
|
343
|
+
- get_metrics
|
|
344
|
+
- analyze_usage
|
|
345
|
+
- calculate_desired_replicas
|
|
346
|
+
- scale_deployment
|
|
347
|
+
- update_hpa
|
|
348
|
+
blocked_actions:
|
|
349
|
+
- delete_deployment
|
|
350
|
+
- modify_production_namespace
|
|
351
|
+
- scale_below_minimum
|
|
352
|
+
- scale_above_maximum
|
|
353
|
+
escalation_policy:
|
|
354
|
+
conditions:
|
|
355
|
+
- replica_count_exceeds: 50
|
|
356
|
+
- cost_increase_exceeds_percent: 25
|
|
357
|
+
channels:
|
|
358
|
+
- type: slack
|
|
359
|
+
channel: "#infrastructure-alerts"
|
|
360
|
+
|
|
361
|
+
tools:
|
|
362
|
+
- type: kubernetes
|
|
363
|
+
namespace: applications
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Customer Support Agent
|
|
367
|
+
|
|
368
|
+
```yaml
|
|
369
|
+
apiVersion: ossa/v0.2.3
|
|
370
|
+
kind: Agent
|
|
371
|
+
metadata:
|
|
372
|
+
name: support-assistant
|
|
373
|
+
version: 1.0.0
|
|
374
|
+
spec:
|
|
375
|
+
role: You are a customer support specialist.
|
|
376
|
+
|
|
377
|
+
autonomy:
|
|
378
|
+
level: supervised
|
|
379
|
+
approval_required: true
|
|
380
|
+
allowed_actions:
|
|
381
|
+
- search_knowledge_base
|
|
382
|
+
- search_tickets
|
|
383
|
+
- analyze_customer_history
|
|
384
|
+
- generate_response
|
|
385
|
+
- create_draft_email
|
|
386
|
+
blocked_actions:
|
|
387
|
+
- send_email
|
|
388
|
+
- close_ticket
|
|
389
|
+
- modify_customer_data
|
|
390
|
+
- issue_refund
|
|
391
|
+
- grant_access
|
|
392
|
+
escalation_policy:
|
|
393
|
+
high_risk_actions:
|
|
394
|
+
- billing_inquiry
|
|
395
|
+
- account_access_request
|
|
396
|
+
- data_deletion_request
|
|
397
|
+
channels:
|
|
398
|
+
- type: slack
|
|
399
|
+
channel: "#customer-support"
|
|
400
|
+
- type: email
|
|
401
|
+
recipients:
|
|
402
|
+
- support-managers@example.com
|
|
403
|
+
|
|
404
|
+
tools:
|
|
405
|
+
- type: mcp
|
|
406
|
+
server: zendesk
|
|
407
|
+
- type: mcp
|
|
408
|
+
server: knowledge-base
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### DevOps Incident Response
|
|
412
|
+
|
|
413
|
+
```yaml
|
|
414
|
+
apiVersion: ossa/v0.2.3
|
|
415
|
+
kind: Agent
|
|
416
|
+
metadata:
|
|
417
|
+
name: incident-responder
|
|
418
|
+
version: 2.1.0
|
|
419
|
+
spec:
|
|
420
|
+
role: You are an incident response specialist.
|
|
421
|
+
|
|
422
|
+
autonomy:
|
|
423
|
+
level: autonomous
|
|
424
|
+
approval_required: false
|
|
425
|
+
allowed_actions:
|
|
426
|
+
- get_alerts
|
|
427
|
+
- analyze_metrics
|
|
428
|
+
- check_logs
|
|
429
|
+
- diagnose_issue
|
|
430
|
+
- create_incident
|
|
431
|
+
- update_incident
|
|
432
|
+
- post_status_update
|
|
433
|
+
- trigger_runbook
|
|
434
|
+
blocked_actions:
|
|
435
|
+
- restart_production_service
|
|
436
|
+
- rollback_deployment
|
|
437
|
+
- modify_configuration
|
|
438
|
+
- grant_access
|
|
439
|
+
escalation_policy:
|
|
440
|
+
on_error: true
|
|
441
|
+
max_retries: 2
|
|
442
|
+
conditions:
|
|
443
|
+
- severity: critical
|
|
444
|
+
- duration_exceeds: 900 # 15 minutes
|
|
445
|
+
- affected_users_exceeds: 1000
|
|
446
|
+
channels:
|
|
447
|
+
- type: pagerduty
|
|
448
|
+
severity: high
|
|
449
|
+
- type: slack
|
|
450
|
+
channel: "#incidents"
|
|
451
|
+
|
|
452
|
+
tools:
|
|
453
|
+
- type: kubernetes
|
|
454
|
+
namespace: production
|
|
455
|
+
capabilities:
|
|
456
|
+
- get_pods
|
|
457
|
+
- get_logs
|
|
458
|
+
- describe_pod
|
|
459
|
+
- type: http
|
|
460
|
+
name: prometheus
|
|
461
|
+
endpoint: https://prometheus.example.com
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
## Action Naming Conventions
|
|
465
|
+
|
|
466
|
+
Use clear, descriptive action names:
|
|
467
|
+
|
|
468
|
+
**Good action names:**
|
|
469
|
+
```yaml
|
|
470
|
+
allowed_actions:
|
|
471
|
+
- read_file
|
|
472
|
+
- write_file
|
|
473
|
+
- create_pull_request
|
|
474
|
+
- merge_pull_request
|
|
475
|
+
- scale_deployment
|
|
476
|
+
- restart_pod
|
|
477
|
+
- send_email
|
|
478
|
+
- create_ticket
|
|
479
|
+
- update_ticket
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
**Avoid vague names:**
|
|
483
|
+
```yaml
|
|
484
|
+
# ❌ Too vague
|
|
485
|
+
allowed_actions:
|
|
486
|
+
- execute
|
|
487
|
+
- modify
|
|
488
|
+
- access
|
|
489
|
+
- handle
|
|
490
|
+
|
|
491
|
+
# ✅ Specific
|
|
492
|
+
allowed_actions:
|
|
493
|
+
- execute_query
|
|
494
|
+
- modify_configuration
|
|
495
|
+
- access_database
|
|
496
|
+
- handle_webhook
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
## Best Practices
|
|
500
|
+
|
|
501
|
+
1. **Start conservative** - Begin with `supervised` and relax as confidence grows
|
|
502
|
+
2. **Whitelist over blacklist** - Use `allowed_actions` for explicit permissions
|
|
503
|
+
3. **Layer defenses** - Combine autonomy, constraints, and tool permissions
|
|
504
|
+
4. **Escalate intelligently** - Define clear escalation conditions
|
|
505
|
+
5. **Test thoroughly** - Validate blocked actions are truly blocked
|
|
506
|
+
6. **Document actions** - Maintain action registry for your organization
|
|
507
|
+
7. **Audit regularly** - Review autonomy settings for production agents
|
|
508
|
+
8. **Align with risk** - Match autonomy level to operation criticality
|
|
509
|
+
9. **Use approval for changes** - Require approval for state-changing operations
|
|
510
|
+
10. **Monitor continuously** - Track agent actions and escalations
|
|
511
|
+
|
|
512
|
+
## Security Considerations
|
|
513
|
+
|
|
514
|
+
### Defense in Depth
|
|
515
|
+
|
|
516
|
+
```yaml
|
|
517
|
+
# Multiple layers of protection
|
|
518
|
+
autonomy:
|
|
519
|
+
level: supervised
|
|
520
|
+
approval_required: true
|
|
521
|
+
blocked_actions:
|
|
522
|
+
- delete_data
|
|
523
|
+
- modify_production
|
|
524
|
+
|
|
525
|
+
constraints:
|
|
526
|
+
cost:
|
|
527
|
+
maxCostPerDay: 50.0
|
|
528
|
+
|
|
529
|
+
tools:
|
|
530
|
+
- type: kubernetes
|
|
531
|
+
namespace: read-only
|
|
532
|
+
config:
|
|
533
|
+
read_only: true
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
### Principle of Least Privilege
|
|
537
|
+
|
|
538
|
+
```yaml
|
|
539
|
+
# Minimal permissions
|
|
540
|
+
autonomy:
|
|
541
|
+
level: autonomous
|
|
542
|
+
allowed_actions:
|
|
543
|
+
- read_file # Only what's needed
|
|
544
|
+
- search_files
|
|
545
|
+
- generate_report
|
|
546
|
+
blocked_actions:
|
|
547
|
+
- write_file # Explicitly block writes
|
|
548
|
+
- delete_file
|
|
549
|
+
- modify_permissions
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
## Related Objects
|
|
553
|
+
|
|
554
|
+
- [Agent Spec](./agent-spec.md) - Parent object containing autonomy
|
|
555
|
+
- [Tools](./tools.md) - Tool-level permissions
|
|
556
|
+
- [Constraints](./constraints.md) - Cost and performance limits
|
|
557
|
+
- [Observability](./observability.md) - Action monitoring and auditing
|
|
558
|
+
|
|
559
|
+
## Validation
|
|
560
|
+
|
|
561
|
+
All fields are optional. Default values are platform-specific.
|
|
562
|
+
|
|
563
|
+
Enum values:
|
|
564
|
+
- `level`: `supervised`, `autonomous`, `fully_autonomous`
|
|
565
|
+
- `approval_required`: `true`, `false`
|
|
566
|
+
- `allowed_actions`: Array of strings (no validation on values)
|
|
567
|
+
- `blocked_actions`: Array of strings (no validation on values)
|
|
568
|
+
- `escalation_policy`: Object (structure not validated by schema)
|