@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,609 @@
|
|
|
1
|
+
# ============================================================================
|
|
2
|
+
# OSSA Drupal Integration Example: GitLab ML Recommendation Engine
|
|
3
|
+
# ============================================================================
|
|
4
|
+
#
|
|
5
|
+
# PURPOSE:
|
|
6
|
+
# Demonstrates OSSA integration with Drupal's AI Agent Orchestra module.
|
|
7
|
+
# Showcases a real-world RAG (Retrieval-Augmented Generation) pipeline for
|
|
8
|
+
# customer success recommendations using semantic search and LLM generation.
|
|
9
|
+
#
|
|
10
|
+
# KEY FEATURES:
|
|
11
|
+
# - RAG pipeline with Qdrant vector database for semantic search
|
|
12
|
+
# - GPT-4 powered recommendation generation
|
|
13
|
+
# - TimescaleDB aggregation for customer health metrics
|
|
14
|
+
# - Agent-to-Agent (A2A) communication via JSON-RPC
|
|
15
|
+
# - Event-driven architecture with Redis pub/sub
|
|
16
|
+
# - Enterprise-grade monitoring, caching, and compliance
|
|
17
|
+
#
|
|
18
|
+
# ARCHITECTURE:
|
|
19
|
+
# Drupal Module (ai_agent_orchestra)
|
|
20
|
+
# ↓ (service call)
|
|
21
|
+
# GitLabMlRecommendationsService
|
|
22
|
+
# ↓ (semantic search)
|
|
23
|
+
# Qdrant Vector DB
|
|
24
|
+
# ↓ (context retrieval)
|
|
25
|
+
# GPT-4 via Agent Router
|
|
26
|
+
# → AI Recommendations
|
|
27
|
+
#
|
|
28
|
+
# USE CASE:
|
|
29
|
+
# Customer Success teams get AI-powered, data-driven recommendations for
|
|
30
|
+
# proactive customer engagement based on historical successful interventions
|
|
31
|
+
# and current customer health signals.
|
|
32
|
+
#
|
|
33
|
+
# RELATED DOCUMENTATION:
|
|
34
|
+
# - OSSA Drupal Extensions: spec/OSSA_Drupal_Extensions.md
|
|
35
|
+
# - RAG Pipeline Guide: docs/patterns/rag-patterns.md
|
|
36
|
+
# - A2A Protocol: spec/OSSA_A2A_Protocol.md
|
|
37
|
+
# ============================================================================
|
|
38
|
+
|
|
39
|
+
# OSSA specification version - defines which features are available
|
|
40
|
+
ossaVersion: "1.0"
|
|
41
|
+
|
|
42
|
+
# Agent metadata and configuration
|
|
43
|
+
agent:
|
|
44
|
+
# Unique identifier for this agent (must be DNS-compatible: lowercase, hyphens)
|
|
45
|
+
id: gitlab-ml-recommender
|
|
46
|
+
|
|
47
|
+
# Human-readable name displayed in UIs
|
|
48
|
+
name: "GitLab ML Recommendation Engine"
|
|
49
|
+
|
|
50
|
+
# Semantic version for agent deployment tracking
|
|
51
|
+
version: "1.0.0"
|
|
52
|
+
|
|
53
|
+
# Agent role determines lifecycle and communication patterns:
|
|
54
|
+
# - "integration": Long-running service that connects external systems
|
|
55
|
+
# - "chat": Interactive conversational agent
|
|
56
|
+
# - "worker": Task-based processor (fire-and-forget or queued)
|
|
57
|
+
# - "orchestrator": Coordinates multiple agents
|
|
58
|
+
role: "integration"
|
|
59
|
+
|
|
60
|
+
# Detailed agent description (supports Markdown for rich documentation)
|
|
61
|
+
description: |
|
|
62
|
+
AI-powered customer success recommendation agent using RAG (Retrieval-Augmented Generation).
|
|
63
|
+
|
|
64
|
+
**Pipeline Architecture:**
|
|
65
|
+
1. Semantic search in Qdrant for similar successful cases
|
|
66
|
+
2. GPT-4 generation with retrieved context
|
|
67
|
+
3. Priority ranking based on customer health scores
|
|
68
|
+
|
|
69
|
+
**Integrates with:**
|
|
70
|
+
- GitLabMlRecommendationsService (RAG generation)
|
|
71
|
+
- GitLabMlDashboardService (health metrics)
|
|
72
|
+
- QdrantVectorService (semantic search)
|
|
73
|
+
|
|
74
|
+
# Runtime configuration - defines how the agent is deployed and executed
|
|
75
|
+
runtime:
|
|
76
|
+
# Execution environment type:
|
|
77
|
+
# - "docker": Containerized deployment with image specification
|
|
78
|
+
# - "serverless": FaaS deployment (AWS Lambda, Google Cloud Functions, etc.)
|
|
79
|
+
# - "kubernetes": Native k8s deployment with CRD
|
|
80
|
+
# - "local": Direct process execution (dev/testing only)
|
|
81
|
+
type: "docker"
|
|
82
|
+
|
|
83
|
+
# Docker image reference (registry/name:tag)
|
|
84
|
+
# Should follow semantic versioning and be immutable (no "latest" tag)
|
|
85
|
+
image: "llm-platform/ml-recommender:1.0.0"
|
|
86
|
+
|
|
87
|
+
# Language and dependency requirements (enforced at build time)
|
|
88
|
+
requirements:
|
|
89
|
+
# PHP version constraint (Drupal requirement)
|
|
90
|
+
php: ">=8.1"
|
|
91
|
+
|
|
92
|
+
# Node.js version for build tools and frontend assets
|
|
93
|
+
node: ">=20.0.0"
|
|
94
|
+
|
|
95
|
+
# Composer packages required for Drupal integration
|
|
96
|
+
packages:
|
|
97
|
+
- "guzzlehttp/guzzle" # HTTP client for external API calls
|
|
98
|
+
- "symfony/http-client" # Alternative HTTP client with retry logic
|
|
99
|
+
|
|
100
|
+
# Resource limits (Kubernetes-style requests/limits)
|
|
101
|
+
# These prevent resource exhaustion and enable autoscaling decisions
|
|
102
|
+
resources:
|
|
103
|
+
cpu: "1000m" # 1 CPU core (1000 millicores)
|
|
104
|
+
memory: "2Gi" # 2 gigabytes RAM
|
|
105
|
+
|
|
106
|
+
# Health check configuration for container orchestration
|
|
107
|
+
# Used by Kubernetes liveness/readiness probes and load balancers
|
|
108
|
+
health_check:
|
|
109
|
+
type: "http" # HTTP GET request for health status
|
|
110
|
+
endpoint: "/health" # Health check endpoint path
|
|
111
|
+
port: 8080 # Container port to check
|
|
112
|
+
|
|
113
|
+
# Capabilities define what the agent can do (contract-first design)
|
|
114
|
+
# Each capability is a discrete, testable unit of functionality with:
|
|
115
|
+
# - Type-safe input/output schemas (JSON Schema)
|
|
116
|
+
# - Usage examples for documentation and testing
|
|
117
|
+
# - Timeout and retry policies for reliability
|
|
118
|
+
capabilities:
|
|
119
|
+
# ========================================================================
|
|
120
|
+
# Capability 1: Generate Recommendations (RAG Pipeline)
|
|
121
|
+
# ========================================================================
|
|
122
|
+
# This is the core capability demonstrating OSSA's RAG pattern:
|
|
123
|
+
# 1. Semantic search in Qdrant for similar successful customer cases
|
|
124
|
+
# 2. Context injection into GPT-4 prompt
|
|
125
|
+
# 3. AI-generated recommendations with rationale
|
|
126
|
+
# 4. Priority ranking based on customer health signals
|
|
127
|
+
#
|
|
128
|
+
# FLOW:
|
|
129
|
+
# Drupal Request → Service Layer → Qdrant Search → GPT-4 Generation
|
|
130
|
+
# → Priority Ranking → Structured Response
|
|
131
|
+
# ========================================================================
|
|
132
|
+
- name: generate_recommendations
|
|
133
|
+
|
|
134
|
+
# Capability description (appears in API docs and UI)
|
|
135
|
+
description: "Generate AI recommendations using RAG pipeline (Qdrant semantic search + GPT-4)"
|
|
136
|
+
|
|
137
|
+
# Input schema using JSON Schema (OpenAPI-compatible)
|
|
138
|
+
# This defines the contract for calling this capability
|
|
139
|
+
input_schema:
|
|
140
|
+
type: object
|
|
141
|
+
|
|
142
|
+
# Required fields - validation will fail if missing
|
|
143
|
+
required: [customer_id]
|
|
144
|
+
|
|
145
|
+
properties:
|
|
146
|
+
# Customer UUID from GitLab (primary identifier)
|
|
147
|
+
customer_id:
|
|
148
|
+
type: string
|
|
149
|
+
format: uuid # Validates UUID format (RFC 4122)
|
|
150
|
+
description: "Customer UUID from GitLab"
|
|
151
|
+
|
|
152
|
+
# Context filter for targeted recommendations
|
|
153
|
+
# Different contexts use different embedding collections
|
|
154
|
+
context:
|
|
155
|
+
type: string
|
|
156
|
+
enum: [health, churn, engagement, technical]
|
|
157
|
+
description: "Recommendation context filter"
|
|
158
|
+
|
|
159
|
+
# Result limit for controlling response size and cost
|
|
160
|
+
limit:
|
|
161
|
+
type: integer
|
|
162
|
+
default: 10 # Default if not provided
|
|
163
|
+
minimum: 1 # At least 1 recommendation
|
|
164
|
+
maximum: 50 # Max to prevent token exhaustion
|
|
165
|
+
description: "Maximum number of recommendations"
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
# Output schema defines the structure of the response
|
|
169
|
+
# This ensures consistent data contracts across all agents
|
|
170
|
+
output_schema:
|
|
171
|
+
type: object
|
|
172
|
+
|
|
173
|
+
# Required response fields (must always be present)
|
|
174
|
+
required: [customerId, recommendations, generatedAt]
|
|
175
|
+
|
|
176
|
+
properties:
|
|
177
|
+
# Echo back the customer ID for request correlation
|
|
178
|
+
customerId:
|
|
179
|
+
type: string
|
|
180
|
+
format: uuid
|
|
181
|
+
|
|
182
|
+
# Array of AI-generated recommendations
|
|
183
|
+
recommendations:
|
|
184
|
+
type: array
|
|
185
|
+
items:
|
|
186
|
+
type: object
|
|
187
|
+
|
|
188
|
+
# Each recommendation must have these core fields
|
|
189
|
+
required: [id, title, priority, category]
|
|
190
|
+
|
|
191
|
+
properties:
|
|
192
|
+
# Unique recommendation ID for tracking and analytics
|
|
193
|
+
id:
|
|
194
|
+
type: string
|
|
195
|
+
format: uuid
|
|
196
|
+
|
|
197
|
+
# Short, actionable title (shown in UI cards)
|
|
198
|
+
title:
|
|
199
|
+
type: string
|
|
200
|
+
maxLength: 255 # Database column constraint
|
|
201
|
+
|
|
202
|
+
# Detailed explanation of the recommendation
|
|
203
|
+
description:
|
|
204
|
+
type: string
|
|
205
|
+
|
|
206
|
+
# Priority level for sorting and alerting
|
|
207
|
+
priority:
|
|
208
|
+
type: string
|
|
209
|
+
enum: [critical, high, medium, low]
|
|
210
|
+
|
|
211
|
+
# Recommendation category for filtering and routing
|
|
212
|
+
category:
|
|
213
|
+
type: string
|
|
214
|
+
enum: [engagement, technical, health, success]
|
|
215
|
+
|
|
216
|
+
# Concrete action steps (Drupal renders as checklist)
|
|
217
|
+
actionItems:
|
|
218
|
+
type: array
|
|
219
|
+
items:
|
|
220
|
+
type: string
|
|
221
|
+
|
|
222
|
+
# AI-generated rationale explaining "why" this recommendation
|
|
223
|
+
# This is the key value from RAG - evidence from similar cases
|
|
224
|
+
rationale:
|
|
225
|
+
type: string
|
|
226
|
+
|
|
227
|
+
# References to similar customer cases from vector search
|
|
228
|
+
# Provides transparency and builds trust in AI recommendations
|
|
229
|
+
similarCases:
|
|
230
|
+
type: array
|
|
231
|
+
items:
|
|
232
|
+
type: object
|
|
233
|
+
|
|
234
|
+
# ISO 8601 timestamp for audit trail
|
|
235
|
+
generatedAt:
|
|
236
|
+
type: string
|
|
237
|
+
format: date-time
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
# Examples for documentation, testing, and contract validation
|
|
241
|
+
# Used by OSSA validators and API documentation generators
|
|
242
|
+
examples:
|
|
243
|
+
- name: "Health context recommendations"
|
|
244
|
+
input:
|
|
245
|
+
customer_id: "123e4567-e89b-12d3-a456-426614174000"
|
|
246
|
+
context: "health"
|
|
247
|
+
limit: 5
|
|
248
|
+
output:
|
|
249
|
+
customerId: "123e4567-e89b-12d3-a456-426614174000"
|
|
250
|
+
recommendations:
|
|
251
|
+
- id: "rec-001"
|
|
252
|
+
title: "Schedule health check meeting"
|
|
253
|
+
description: "Conduct comprehensive health review with technical team"
|
|
254
|
+
priority: "high"
|
|
255
|
+
category: "engagement"
|
|
256
|
+
actionItems:
|
|
257
|
+
- "Send meeting invitation for next week"
|
|
258
|
+
- "Prepare health check questionnaire"
|
|
259
|
+
- "Review usage metrics before meeting"
|
|
260
|
+
rationale: "Early issue identification strengthens customer relationships"
|
|
261
|
+
generatedAt: "2025-10-24T12:00:00Z"
|
|
262
|
+
|
|
263
|
+
# Timeout prevents hung requests and enables circuit breaker patterns
|
|
264
|
+
timeout_seconds: 30
|
|
265
|
+
|
|
266
|
+
# Retry policy for transient failures (network issues, rate limits)
|
|
267
|
+
retry_policy:
|
|
268
|
+
max_attempts: 3 # Total attempts (initial + 2 retries)
|
|
269
|
+
backoff: "exponential" # 1s, 2s, 4s, 8s... (prevents thundering herd)
|
|
270
|
+
|
|
271
|
+
# ========================================================================
|
|
272
|
+
# Capability 2: Get Dashboard Overview
|
|
273
|
+
# ========================================================================
|
|
274
|
+
# Provides aggregated customer health metrics from TimescaleDB.
|
|
275
|
+
# This is a read-only, fast query capability for dashboard UIs.
|
|
276
|
+
# ========================================================================
|
|
277
|
+
- name: get_dashboard_overview
|
|
278
|
+
|
|
279
|
+
description: "Retrieve customer health dashboard data aggregated from TimescaleDB"
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
# Minimal input - just a time range selector
|
|
283
|
+
input_schema:
|
|
284
|
+
type: object
|
|
285
|
+
required: [time_range]
|
|
286
|
+
properties:
|
|
287
|
+
# Time range for metric aggregation (TimescaleDB time bucket)
|
|
288
|
+
time_range:
|
|
289
|
+
type: string
|
|
290
|
+
enum: ["24h", "7d", "30d", "90d"]
|
|
291
|
+
description: "Time range for dashboard data"
|
|
292
|
+
|
|
293
|
+
# Dashboard metrics output (all pre-aggregated in TimescaleDB)
|
|
294
|
+
output_schema:
|
|
295
|
+
type: object
|
|
296
|
+
required: [totalCustomers, healthDistribution, churnRisks]
|
|
297
|
+
properties:
|
|
298
|
+
totalCustomers:
|
|
299
|
+
type: integer
|
|
300
|
+
healthDistribution:
|
|
301
|
+
type: object
|
|
302
|
+
properties:
|
|
303
|
+
healthy:
|
|
304
|
+
type: integer
|
|
305
|
+
warning:
|
|
306
|
+
type: integer
|
|
307
|
+
critical:
|
|
308
|
+
type: integer
|
|
309
|
+
churnRisks:
|
|
310
|
+
type: object
|
|
311
|
+
properties:
|
|
312
|
+
low:
|
|
313
|
+
type: integer
|
|
314
|
+
medium:
|
|
315
|
+
type: integer
|
|
316
|
+
high:
|
|
317
|
+
type: integer
|
|
318
|
+
critical:
|
|
319
|
+
type: integer
|
|
320
|
+
activeAlerts:
|
|
321
|
+
type: integer
|
|
322
|
+
recommendations:
|
|
323
|
+
type: integer
|
|
324
|
+
trends:
|
|
325
|
+
type: object
|
|
326
|
+
properties:
|
|
327
|
+
healthChange:
|
|
328
|
+
type: number
|
|
329
|
+
churnChange:
|
|
330
|
+
type: number
|
|
331
|
+
engagementChange:
|
|
332
|
+
type: number
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
# Fast timeout for dashboard queries (should be cached)
|
|
336
|
+
timeout_seconds: 10
|
|
337
|
+
|
|
338
|
+
# ========================================================================
|
|
339
|
+
# Capability 3: Get Active Alerts
|
|
340
|
+
# ========================================================================
|
|
341
|
+
# Returns active health alerts for customer success team triage.
|
|
342
|
+
# Supports filtering by severity and status for alert management workflows.
|
|
343
|
+
# ========================================================================
|
|
344
|
+
- name: get_active_alerts
|
|
345
|
+
|
|
346
|
+
description: "Retrieve active customer health alerts"
|
|
347
|
+
|
|
348
|
+
input_schema:
|
|
349
|
+
type: object
|
|
350
|
+
properties:
|
|
351
|
+
severity:
|
|
352
|
+
type: string
|
|
353
|
+
enum: [critical, high, medium, low]
|
|
354
|
+
status:
|
|
355
|
+
type: string
|
|
356
|
+
enum: [active, acknowledged, resolved]
|
|
357
|
+
default: "active"
|
|
358
|
+
|
|
359
|
+
output_schema:
|
|
360
|
+
type: object
|
|
361
|
+
required: [alerts, total]
|
|
362
|
+
properties:
|
|
363
|
+
alerts:
|
|
364
|
+
type: array
|
|
365
|
+
items:
|
|
366
|
+
type: object
|
|
367
|
+
properties:
|
|
368
|
+
id:
|
|
369
|
+
type: string
|
|
370
|
+
customerId:
|
|
371
|
+
type: string
|
|
372
|
+
customerName:
|
|
373
|
+
type: string
|
|
374
|
+
severity:
|
|
375
|
+
type: string
|
|
376
|
+
type:
|
|
377
|
+
type: string
|
|
378
|
+
message:
|
|
379
|
+
type: string
|
|
380
|
+
status:
|
|
381
|
+
type: string
|
|
382
|
+
createdAt:
|
|
383
|
+
type: string
|
|
384
|
+
format: date-time
|
|
385
|
+
total:
|
|
386
|
+
type: integer
|
|
387
|
+
|
|
388
|
+
# ========================================================================
|
|
389
|
+
# LLM Configuration
|
|
390
|
+
# ========================================================================
|
|
391
|
+
# Defines the language model used for generation tasks.
|
|
392
|
+
# For RAG pipelines, choose models with good reasoning and context handling.
|
|
393
|
+
# ========================================================================
|
|
394
|
+
llm:
|
|
395
|
+
# Provider name (openai, anthropic, azure-openai, etc.)
|
|
396
|
+
provider: "openai"
|
|
397
|
+
|
|
398
|
+
# Model identifier - GPT-4 for high-quality reasoning over retrieved context
|
|
399
|
+
model: "gpt-4"
|
|
400
|
+
|
|
401
|
+
# Temperature controls randomness (0.0=deterministic, 1.0=creative)
|
|
402
|
+
# 0.7 balances consistency with natural variation
|
|
403
|
+
temperature: 0.7
|
|
404
|
+
|
|
405
|
+
# Maximum tokens per generation (controls cost and latency)
|
|
406
|
+
maxTokens: 2000
|
|
407
|
+
|
|
408
|
+
# ========================================================================
|
|
409
|
+
# Tools Configuration (MCP and HTTP endpoints)
|
|
410
|
+
# ========================================================================
|
|
411
|
+
# Defines external tools the agent can invoke during execution.
|
|
412
|
+
# MCP (Model Context Protocol) provides standardized tool interfaces.
|
|
413
|
+
# ========================================================================
|
|
414
|
+
tools:
|
|
415
|
+
# Qdrant vector database for semantic search (RAG retrieval step)
|
|
416
|
+
- type: "mcp"
|
|
417
|
+
server: "qdrant-mcp" # MCP server name (from config)
|
|
418
|
+
namespace: "default" # Kubernetes namespace
|
|
419
|
+
capabilities:
|
|
420
|
+
- semantic_search # Find similar customer cases
|
|
421
|
+
- vector_retrieval # Fetch embeddings by ID
|
|
422
|
+
- get_point # Get specific vector point
|
|
423
|
+
- search_points # Batch vector search
|
|
424
|
+
|
|
425
|
+
# Agent Router for LLM and embedding generation
|
|
426
|
+
- type: "http"
|
|
427
|
+
server: "agent-router"
|
|
428
|
+
endpoint: "http://agent-router:4000"
|
|
429
|
+
capabilities:
|
|
430
|
+
- llm_generation # GPT-4 text generation
|
|
431
|
+
- embedding_generation # text-embedding-ada-002
|
|
432
|
+
|
|
433
|
+
# ========================================================================
|
|
434
|
+
# Communication Protocols
|
|
435
|
+
# ========================================================================
|
|
436
|
+
# Defines how external systems can interact with this agent.
|
|
437
|
+
# Multiple protocols enable different integration patterns.
|
|
438
|
+
# ========================================================================
|
|
439
|
+
protocols:
|
|
440
|
+
# RESTful HTTP API for traditional request/response (most common)
|
|
441
|
+
- type: "http"
|
|
442
|
+
version: "1.1"
|
|
443
|
+
endpoint: "/api/v1/recommendations"
|
|
444
|
+
|
|
445
|
+
# Server-Sent Events for real-time streaming (dashboards, live updates)
|
|
446
|
+
- type: "sse"
|
|
447
|
+
version: "1.0"
|
|
448
|
+
endpoint: "/api/v1/stream"
|
|
449
|
+
|
|
450
|
+
# JSON-RPC for agent-to-agent communication (A2A protocol)
|
|
451
|
+
- type: "json-rpc"
|
|
452
|
+
version: "2.0"
|
|
453
|
+
endpoint: "/api/v1/rpc"
|
|
454
|
+
|
|
455
|
+
# ========================================================================
|
|
456
|
+
# Compliance and Governance
|
|
457
|
+
# ========================================================================
|
|
458
|
+
# Defines regulatory frameworks and data handling requirements.
|
|
459
|
+
# Used for audit trails, data retention, and access control.
|
|
460
|
+
# ========================================================================
|
|
461
|
+
compliance:
|
|
462
|
+
# Regulatory frameworks this agent complies with
|
|
463
|
+
frameworks: ["SOC2", "HIPAA"]
|
|
464
|
+
|
|
465
|
+
# Data sensitivity level (public, internal, confidential, restricted)
|
|
466
|
+
dataClassification: "confidential"
|
|
467
|
+
|
|
468
|
+
# Data retention policy for audit and compliance
|
|
469
|
+
retentionPolicy: "7years"
|
|
470
|
+
|
|
471
|
+
# ============================================================================
|
|
472
|
+
# OSSA Drupal Extensions
|
|
473
|
+
# ============================================================================
|
|
474
|
+
# Drupal-specific configuration for integration with ai_agent_orchestra module.
|
|
475
|
+
# This section is OSSA's extension mechanism for framework-specific features.
|
|
476
|
+
# ============================================================================
|
|
477
|
+
extensions:
|
|
478
|
+
drupal:
|
|
479
|
+
# Drupal module that implements this agent
|
|
480
|
+
module: "ai_agent_orchestra"
|
|
481
|
+
|
|
482
|
+
# Drupal service ID for dependency injection
|
|
483
|
+
# Registered in ai_agent_orchestra.services.yml
|
|
484
|
+
service: "ai_agent_orchestra.gitlab_ml_recommendations"
|
|
485
|
+
|
|
486
|
+
# Drupal module dependencies (must be enabled)
|
|
487
|
+
dependencies:
|
|
488
|
+
- "ai_agents" # Core AI agent framework
|
|
489
|
+
- "ai_provider_langchain" # LangChain integration
|
|
490
|
+
- "ai_provider_openai" # OpenAI provider
|
|
491
|
+
|
|
492
|
+
# Database tables created by this agent's schema
|
|
493
|
+
database:
|
|
494
|
+
tables:
|
|
495
|
+
- "gitlab_ml_metrics" # Customer health metrics (TimescaleDB)
|
|
496
|
+
- "gitlab_ml_alerts" # Active health alerts
|
|
497
|
+
- "gitlab_ml_recommendations" # Generated recommendations
|
|
498
|
+
schema_version: "1.0.0" # For schema migrations
|
|
499
|
+
|
|
500
|
+
# ======================================================================
|
|
501
|
+
# RAG Pipeline Configuration
|
|
502
|
+
# ======================================================================
|
|
503
|
+
# Retrieval-Augmented Generation settings for semantic search and LLM.
|
|
504
|
+
# This is the core of the recommendation engine.
|
|
505
|
+
# ======================================================================
|
|
506
|
+
rag_pipeline:
|
|
507
|
+
vector_db: "qdrant" # Vector database type
|
|
508
|
+
collection: "gitlab_customer_embeddings" # Qdrant collection name
|
|
509
|
+
embedding_model: "text-embedding-ada-002" # OpenAI embedding model
|
|
510
|
+
similarity_limit: 5 # Top-K results from search
|
|
511
|
+
similarity_threshold: 0.7 # Minimum cosine similarity
|
|
512
|
+
llm_service: "http://agent-router:4000" # LLM generation endpoint
|
|
513
|
+
|
|
514
|
+
# ======================================================================
|
|
515
|
+
# Observability Configuration (OpenTelemetry)
|
|
516
|
+
# ======================================================================
|
|
517
|
+
# Distributed tracing, metrics, and structured logging for production.
|
|
518
|
+
# ======================================================================
|
|
519
|
+
monitoring:
|
|
520
|
+
metrics: true # Prometheus metrics
|
|
521
|
+
tracing: true # OpenTelemetry traces
|
|
522
|
+
logging: true # Structured JSON logs
|
|
523
|
+
opentelemetry:
|
|
524
|
+
endpoint: "http://agent-tracer:4318" # OTLP collector endpoint
|
|
525
|
+
service_name: "gitlab-ml-recommender" # Service identifier in traces
|
|
526
|
+
headers:
|
|
527
|
+
"x-service-version": "1.0.0" # Custom trace metadata
|
|
528
|
+
|
|
529
|
+
# ======================================================================
|
|
530
|
+
# Drupal Cache Integration
|
|
531
|
+
# ======================================================================
|
|
532
|
+
# Caches recommendation results to reduce LLM costs and latency.
|
|
533
|
+
# ======================================================================
|
|
534
|
+
caching:
|
|
535
|
+
enabled: true
|
|
536
|
+
backend: "redis" # Drupal cache backend (redis, database, memcache)
|
|
537
|
+
ttl: 3600 # Cache TTL in seconds (1 hour)
|
|
538
|
+
tags: # Cache tags for invalidation
|
|
539
|
+
- "gitlab_ml"
|
|
540
|
+
- "recommendations"
|
|
541
|
+
|
|
542
|
+
# Drupal permissions required to use this agent
|
|
543
|
+
permissions:
|
|
544
|
+
- "administer ai agents" # Full agent management
|
|
545
|
+
- "execute ai agents" # Execute agent capabilities
|
|
546
|
+
- "view ai agent results" # View recommendation history
|
|
547
|
+
|
|
548
|
+
# ======================================================================
|
|
549
|
+
# Agent-to-Agent (A2A) Communication
|
|
550
|
+
# ======================================================================
|
|
551
|
+
# Enables this agent to call other agents for compliance checks,
|
|
552
|
+
# cost optimization, and orchestration workflows.
|
|
553
|
+
# ======================================================================
|
|
554
|
+
a2a_config:
|
|
555
|
+
enabled: true
|
|
556
|
+
protocol: "json-rpc" # JSON-RPC 2.0 for A2A calls
|
|
557
|
+
endpoints:
|
|
558
|
+
# Compliance validator ensures recommendations meet policies
|
|
559
|
+
- "http://compliance-validator:8080/a2a"
|
|
560
|
+
# Cost optimizer prevents budget overruns
|
|
561
|
+
- "http://cost-optimizer:8080/a2a"
|
|
562
|
+
authentication:
|
|
563
|
+
type: "bearer" # Bearer token authentication
|
|
564
|
+
secretRef: # Kubernetes secret reference
|
|
565
|
+
name: "drupal-a2a-credentials"
|
|
566
|
+
key: "bearer-token"
|
|
567
|
+
|
|
568
|
+
# ======================================================================
|
|
569
|
+
# Event Bus Integration (Redis Pub/Sub)
|
|
570
|
+
# ======================================================================
|
|
571
|
+
# Publishes events for real-time dashboards and workflow automation.
|
|
572
|
+
# ======================================================================
|
|
573
|
+
event_bus:
|
|
574
|
+
enabled: true
|
|
575
|
+
# Event topics this agent publishes to
|
|
576
|
+
topics:
|
|
577
|
+
- "customer.health.changed" # Health score updates
|
|
578
|
+
- "recommendations.generated" # New recommendations available
|
|
579
|
+
- "alerts.created" # New health alerts
|
|
580
|
+
- "metrics.updated" # Metric aggregation complete
|
|
581
|
+
redis:
|
|
582
|
+
host: "redis://buildkit-redis:16379"
|
|
583
|
+
db: 0
|
|
584
|
+
|
|
585
|
+
# ============================================================================
|
|
586
|
+
# End of OSSA Drupal Integration Example
|
|
587
|
+
# ============================================================================
|
|
588
|
+
#
|
|
589
|
+
# VALIDATION:
|
|
590
|
+
# ossa validate examples/drupal/gitlab-ml-recommender.ossa.yaml
|
|
591
|
+
#
|
|
592
|
+
# DEPLOYMENT:
|
|
593
|
+
# 1. Enable required Drupal modules: drush en ai_agent_orchestra
|
|
594
|
+
# 2. Import agent manifest: drush ossa:import gitlab-ml-recommender.ossa.yaml
|
|
595
|
+
# 3. Clear Drupal cache: drush cr
|
|
596
|
+
# 4. Test capabilities: drush ossa:test gitlab-ml-recommender
|
|
597
|
+
#
|
|
598
|
+
# INTEGRATION POINTS:
|
|
599
|
+
# - Drupal Service: ai_agent_orchestra.gitlab_ml_recommendations
|
|
600
|
+
# - Database Tables: gitlab_ml_* (see schema in module)
|
|
601
|
+
# - Cache Tags: gitlab_ml, recommendations
|
|
602
|
+
# - Permissions: administer/execute/view ai agents
|
|
603
|
+
# - Events: customer.health.changed, recommendations.generated
|
|
604
|
+
#
|
|
605
|
+
# RELATED EXAMPLES:
|
|
606
|
+
# - examples/bridges/aiflow-bridge-example.yml (social agent bridge)
|
|
607
|
+
# - examples/openapi-extensions/worker-agent-api.openapi.yml (OpenAPI)
|
|
608
|
+
# - spec/OSSA_Drupal_Extensions.md (full Drupal spec)
|
|
609
|
+
# ============================================================================
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
apiVersion: ossa/v1
|
|
2
|
+
kind: Agent
|
|
3
|
+
metadata:
|
|
4
|
+
name: gitlab-ml-recommender
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
description: |
|
|
7
|
+
AI-powered customer success recommendation agent using RAG (Retrieval-Augmented Generation).
|
|
8
|
+
|
|
9
|
+
Pipeline:
|
|
10
|
+
1. Semantic search in Qdrant for similar successful cases
|
|
11
|
+
2. GPT-4 generation with context
|
|
12
|
+
3. Priority ranking based on customer health
|
|
13
|
+
|
|
14
|
+
Integrates with:
|
|
15
|
+
- GitLabMlRecommendationsService (RAG generation)
|
|
16
|
+
- GitLabMlDashboardService (health metrics)
|
|
17
|
+
- QdrantVectorService (semantic search)
|
|
18
|
+
labels: {}
|
|
19
|
+
annotations:
|
|
20
|
+
ossa.io/migration: v1.0 to v0.2.2
|
|
21
|
+
ossa.io/migrated-date: 2025-10-31
|
|
22
|
+
spec:
|
|
23
|
+
role: integration
|
|
24
|
+
taxonomy:
|
|
25
|
+
domain: data
|
|
26
|
+
subdomain: general
|
|
27
|
+
capability: general
|
|
28
|
+
llm:
|
|
29
|
+
provider: openai
|
|
30
|
+
model: gpt-4
|
|
31
|
+
temperature: 0.7
|
|
32
|
+
maxTokens: 2000
|
|
33
|
+
tools:
|
|
34
|
+
- type: mcp
|
|
35
|
+
name: generate_recommendations
|
|
36
|
+
server: gitlab-ml-recommender
|
|
37
|
+
- type: mcp
|
|
38
|
+
name: get_dashboard_overview
|
|
39
|
+
server: gitlab-ml-recommender
|
|
40
|
+
- type: mcp
|
|
41
|
+
name: get_active_alerts
|
|
42
|
+
server: gitlab-ml-recommender
|
|
43
|
+
extensions:
|
|
44
|
+
buildkit:
|
|
45
|
+
deployment:
|
|
46
|
+
replicas:
|
|
47
|
+
min: 1
|
|
48
|
+
max: 4
|
|
49
|
+
container:
|
|
50
|
+
image: llm-platform/ml-recommender:1.0.0
|
|
51
|
+
runtime: docker
|
|
52
|
+
resources: &a1
|
|
53
|
+
cpu: 1000m
|
|
54
|
+
memory: 2Gi
|
|
55
|
+
runtime:
|
|
56
|
+
type: docker
|
|
57
|
+
image: llm-platform/ml-recommender:1.0.0
|
|
58
|
+
requirements:
|
|
59
|
+
php: ">=8.1"
|
|
60
|
+
node: ">=20.0.0"
|
|
61
|
+
packages:
|
|
62
|
+
- guzzlehttp/guzzle
|
|
63
|
+
- symfony/http-client
|
|
64
|
+
resources: *a1
|
|
65
|
+
health_check:
|
|
66
|
+
type: http
|
|
67
|
+
endpoint: /health
|
|
68
|
+
port: 8080
|