@bluefly/openstandardagents 0.2.5-RC → 0.2.8
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/.devfile.yaml +1 -1
- package/.env.example +1 -1
- package/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
- package/.github/workflows/dependabot-comment.yml +34 -0
- package/.github/workflows/pr-comment.yml +33 -0
- package/.husky/pre-commit +5 -0
- package/.kiro/config.json +21 -0
- package/.kiro/settings/mcp.json +61 -0
- package/.kiro/specs/scripts-migration-api-first/design.md +883 -0
- package/.kiro/specs/scripts-migration-api-first/requirements.md +165 -0
- package/.kiro/specs/scripts-migration-api-first/tasks.md +539 -0
- package/.kiro/specs/{website-design-audit → website-brand-identity}/design.md +381 -0
- package/.kiro/specs/{website-design-audit → website-brand-identity}/requirements.md +88 -0
- package/.kiro/specs/website-brand-identity/tasks.md +981 -0
- package/.version.json +2 -2
- package/.wiki-config.json +24 -0
- package/CHANGELOG.md +34 -18
- package/CODEOWNERS +75 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +176 -239
- package/bin/ossa-dev +42 -0
- package/bin/ossa-export +32 -0
- package/bin/ossa-generate +60 -0
- package/bin/ossa-health +40 -0
- package/bin/ossa-init +26 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/repositories/schema.repository.d.ts +6 -1
- package/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +63 -36
- package/dist/repositories/schema.repository.js.map +1 -1
- package/dist/services/github-sync/github-client.d.ts +14 -0
- package/dist/services/github-sync/github-client.d.ts.map +1 -0
- package/dist/services/github-sync/github-client.js +41 -0
- package/dist/services/github-sync/github-client.js.map +1 -0
- package/dist/services/github-sync/gitlab-client.d.ts +17 -0
- package/dist/services/github-sync/gitlab-client.d.ts.map +1 -0
- package/dist/services/github-sync/gitlab-client.js +42 -0
- package/dist/services/github-sync/gitlab-client.js.map +1 -0
- package/dist/services/github-sync/schemas.d.ts +46 -0
- package/dist/services/github-sync/schemas.d.ts.map +1 -0
- package/dist/services/github-sync/schemas.js +36 -0
- package/dist/services/github-sync/schemas.js.map +1 -0
- package/dist/services/github-sync/sync.service.d.ts +27 -0
- package/dist/services/github-sync/sync.service.d.ts.map +1 -0
- package/dist/services/github-sync/sync.service.js +99 -0
- package/dist/services/github-sync/sync.service.js.map +1 -0
- package/dist/services/migration.service.d.ts +4 -3
- package/dist/services/migration.service.d.ts.map +1 -1
- package/dist/services/migration.service.js +11 -10
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/release-automation/release.service.js +1 -1
- package/dist/services/release-automation/release.service.js.map +1 -1
- package/dist/services/release-automation/schemas/release.schema.js +1 -1
- package/dist/services/runtime/claude/capability-mapper.d.ts +84 -0
- package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -0
- package/dist/services/runtime/claude/capability-mapper.js +245 -0
- package/dist/services/runtime/claude/capability-mapper.js.map +1 -0
- package/dist/services/runtime/claude/claude-adapter.d.ts +80 -0
- package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -0
- package/dist/services/runtime/claude/claude-adapter.js +287 -0
- package/dist/services/runtime/claude/claude-adapter.js.map +1 -0
- package/dist/services/runtime/claude/manifest-parser.d.ts +77 -0
- package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -0
- package/dist/services/runtime/claude/manifest-parser.js +169 -0
- package/dist/services/runtime/claude/manifest-parser.js.map +1 -0
- package/dist/services/runtime/claude/types.d.ts +115 -0
- package/dist/services/runtime/claude/types.d.ts.map +1 -0
- package/dist/services/runtime/claude/types.js +6 -0
- package/dist/services/runtime/claude/types.js.map +1 -0
- package/dist/services/validation.service.d.ts.map +1 -1
- package/dist/services/validation.service.js +12 -1
- package/dist/services/validation.service.js.map +1 -1
- package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
- package/dist/spec/v0.2.6/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.6/README.md +72 -0
- package/dist/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
- package/dist/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
- package/dist/spec/v0.2.6-dev/CHANGELOG.md +164 -0
- package/dist/spec/v0.2.6-dev/README.md +75 -0
- package/dist/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/dist/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
- package/dist/spec/v0.2.7/core/agentgraph.md +324 -0
- package/dist/spec/v0.2.7/resources/agentgraph.yaml +135 -0
- package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.8/README.md +72 -0
- package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/dist/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
- package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/version.d.ts +68 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +156 -0
- package/dist/utils/version.js.map +1 -0
- package/docs/brand-guide/01-brand-overview.md +37 -0
- package/docs/brand-guide/02-logo-usage.md +43 -0
- package/docs/brand-guide/03-color-palette.md +70 -0
- package/docs/brand-guide/04-typography.md +82 -0
- package/docs/brand-guide/05-voice-and-tone.md +108 -0
- package/docs/brand-guide/06-visual-elements.md +137 -0
- package/docs/brand-guide/07-application-examples.md +153 -0
- package/docs/brand-guide/OssaLogo/OssA_Logo.svg +21 -0
- package/docs/brand-guide/OssaLogo/brand.af +0 -0
- package/docs/brand-guide/README.md +107 -0
- package/docs/comparison.md +315 -0
- package/docs/operations/automation-roadmap.md +245 -0
- package/docs/operations/github-sync-strategy.md +357 -0
- package/eslint-report.json +1 -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/workflows/hybrid-model-strategy.yaml +1 -1
- 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/anthropic/claude-assistant.ossa.json +5 -4
- package/examples/autogen/multi-agent.ossa.json +6 -4
- package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
- package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
- package/examples/common_npm/agent-router.ossa.yaml +1 -0
- package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
- package/examples/crewai/research-team.ossa.json +14 -5
- package/examples/cursor/code-review-agent.ossa.json +21 -6
- package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
- package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
- package/examples/extensions/drupal-v1.yml +1 -1
- package/examples/extensions/kagent-v1.yml +1 -1
- 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 -0
- 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 +21 -5
- package/examples/langflow/workflow-agent.ossa.json +2 -3
- package/examples/langgraph/state-machine-agent.ossa.json +2 -3
- package/examples/llamaindex/rag-agent.ossa.json +2 -3
- package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
- package/examples/multi-agent/README.md +74 -0
- package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
- package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
- package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
- package/examples/openai/basic-agent.ossa.yaml +1 -1
- package/examples/openai/multi-tool-agent.ossa.json +33 -10
- package/examples/openai/swarm-agent.ossa.json +18 -5
- package/examples/production/document-analyzer-openai.yml +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/spec-examples/audit-agent.yml +1 -1
- package/examples/spec-examples/chat-agent.yml +1 -1
- package/examples/spec-examples/compliance-agent.yml +1 -1
- package/examples/spec-examples/monitoring-agent.yml +1 -1
- package/examples/spec-examples/workflow-agent.yml +1 -1
- package/examples/templates/ossa-compliance.yaml +1 -1
- package/examples/vercel/edge-agent.ossa.json +5 -4
- package/gl-code-quality-report.json +62 -0
- package/llms-ctx-full.txt +39 -0
- package/llms-ctx.txt +39 -0
- package/llms.txt +47 -0
- package/openapi/github-sync.yaml +115 -0
- package/package.json +26 -4
- package/scripts/README.md +103 -0
- package/scripts/auto-rebase-mrs.ts +106 -0
- package/scripts/batch-dependabot.sh +57 -0
- package/scripts/configure-gitlab-branch-protection.ts +95 -0
- package/scripts/create-issue-helper.ts +238 -0
- package/scripts/create-milestone-issue.ts +73 -0
- package/scripts/eslint-to-codequality.cjs +34 -0
- package/scripts/fix-schema-formats.js +82 -0
- package/scripts/generate-agents-catalog.ts +77 -0
- package/scripts/generate-api-docs.ts +218 -0
- package/scripts/generate-cli-docs.ts +410 -0
- package/scripts/generate-config-docs.ts +109 -0
- package/scripts/generate-errors-docs.ts +76 -0
- package/scripts/generate-examples-docs.ts +99 -0
- package/scripts/generate-llms-ctx.sh +17 -0
- package/scripts/generate-schema-docs.ts +317 -0
- package/scripts/generate-types-docs.ts +48 -0
- package/scripts/lowercase-docs.ts +43 -0
- package/scripts/manage-milestone-mrs.ts +279 -0
- package/scripts/rebase-all-mrs.sh +75 -0
- package/scripts/sync-github-pr.sh +48 -0
- package/scripts/sync-version.js +32 -0
- package/scripts/sync-wiki.sh +50 -0
- package/scripts/validate-all.js +127 -0
- package/scripts/validate-schema.ts +2 -1
- package/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
- package/spec/v0.2.6/CHANGELOG.md +401 -0
- package/spec/v0.2.6/README.md +72 -0
- package/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
- package/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
- package/spec/v0.2.6-dev/CHANGELOG.md +164 -0
- package/spec/v0.2.6-dev/README.md +75 -0
- package/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
- package/spec/v0.2.7/core/agentgraph.md +324 -0
- package/spec/v0.2.7/resources/agentgraph.yaml +135 -0
- package/spec/v0.2.8/CHANGELOG.md +401 -0
- package/spec/v0.2.8/README.md +72 -0
- package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
- package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/test-results/junit.xml +299 -0
- package/.kiro/specs/agent-buildkit-templates/design.md +0 -495
- package/.kiro/specs/agent-buildkit-templates/requirements.md +0 -165
- package/.kiro/specs/kiro-ide-supercharger/README.md +0 -202
- package/.kiro/specs/kiro-ide-supercharger/design.md +0 -1005
- package/.kiro/specs/kiro-ide-supercharger/requirements.md +0 -141
- package/.kiro/specs/kiro-ide-supercharger/tasks.md +0 -507
- package/bin/validate-ossa-0.2.5-RC.ts +0 -244
- package/docs/issue-19-completion-summary.md +0 -648
- package/docs/issue-19-validation.md +0 -351
- package/scripts/lib/exec.ts +0 -37
- package/scripts/lib/file-ops.ts +0 -58
- package/scripts/lib/version.ts +0 -83
- package/website/.lighthouserc.ts +0 -24
- package/website/.prettierrc +0 -10
- package/website/Dockerfile +0 -30
- package/website/app/about/page.tsx +0 -295
- package/website/app/blog/[slug]/page.tsx +0 -208
- package/website/app/blog/page.tsx +0 -249
- package/website/app/design-guide/page.tsx +0 -511
- package/website/app/docs/[[...slug]]/page.tsx +0 -847
- package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
- package/website/app/ecosystem/page.tsx +0 -375
- package/website/app/examples/page.tsx +0 -133
- package/website/app/globals.scss +0 -135
- package/website/app/layout.tsx +0 -106
- package/website/app/license/page.tsx +0 -183
- package/website/app/not-found.tsx +0 -18
- package/website/app/page.tsx +0 -474
- package/website/app/playground/page.tsx +0 -487
- package/website/app/robots.ts +0 -19
- package/website/app/rss.xml/route.ts +0 -74
- package/website/app/schema/page.tsx +0 -1001
- package/website/app/sitemap.ts +0 -56
- package/website/app/specification/page.tsx +0 -287
- package/website/components/InstallCommand.tsx +0 -96
- package/website/components/Logo.tsx +0 -97
- package/website/components/StructuredData.tsx +0 -65
- package/website/components/docs/DocsSearch.tsx +0 -104
- package/website/components/docs/DocsSidebar.tsx +0 -155
- package/website/components/docs/MarkdownContent.tsx +0 -401
- package/website/components/docs/VersionSelector.tsx +0 -105
- package/website/components/examples/ExamplesViewer.tsx +0 -293
- package/website/components/layout/Footer.tsx +0 -116
- package/website/components/layout/Header.tsx +0 -168
- package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
- package/website/components/schema/SchemaExplorer.tsx +0 -213
- package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
- package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
- package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
- package/website/content/blog/introducing-ossa-framework.md +0 -328
- package/website/content/blog/ossa-production-results.md +0 -279
- package/website/content/blog/welcome-to-ossa.md +0 -43
- package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
- package/website/content/docs/00-HOME.md +0 -153
- package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +0 -107
- package/website/content/docs/Examples.md +0 -71
- package/website/content/docs/OpenAPI-Extensions.md +0 -934
- package/website/content/docs/adapters/openai-adapter.md +0 -693
- package/website/content/docs/architecture/execution-flow.md +0 -335
- package/website/content/docs/architecture/multi-agent-systems.md +0 -737
- package/website/content/docs/architecture/overview.md +0 -121
- package/website/content/docs/architecture/stack-integration.md +0 -461
- package/website/content/docs/changelog.md +0 -246
- package/website/content/docs/contributing.md +0 -599
- package/website/content/docs/core-concepts/Project-Structure.md +0 -348
- package/website/content/docs/ecosystem/framework-support.md +0 -819
- package/website/content/docs/ecosystem/overview.md +0 -366
- package/website/content/docs/examples/AIFlow-Framework-Integration-with-OSSA.md +0 -107
- package/website/content/docs/examples/Migration-Guides.md +0 -214
- package/website/content/docs/for-audiences/Architects.md +0 -224
- package/website/content/docs/for-audiences/Developers.md +0 -220
- package/website/content/docs/for-audiences/Enterprises.md +0 -256
- package/website/content/docs/for-audiences/Students-Researchers.md +0 -122
- package/website/content/docs/getting-started/5-Minute-Overview.md +0 -85
- package/website/content/docs/getting-started/First-Agent.md +0 -196
- package/website/content/docs/getting-started/Hello-World.md +0 -184
- package/website/content/docs/getting-started/Installation.md +0 -155
- package/website/content/docs/getting-started/index.md +0 -92
- package/website/content/docs/getting-started/running-agents.md +0 -309
- package/website/content/docs/getting-started.md +0 -91
- package/website/content/docs/integrations/aiflow.md +0 -104
- package/website/content/docs/integrations/drupal.md +0 -105
- package/website/content/docs/migration-guides/00-INDEX.md +0 -76
- package/website/content/docs/migration-guides/README.md +0 -133
- package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
- package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
- package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
- package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
- package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
- package/website/content/docs/migration-guides/index.md +0 -133
- package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
- package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
- package/website/content/docs/migration-guides/migration-manifest.json +0 -64
- package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
- package/website/content/docs/openapi-extensions/examples.md +0 -550
- package/website/content/docs/openapi-extensions/index.md +0 -551
- package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
- package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
- package/website/content/docs/ossa-compliant-badge.md +0 -251
- package/website/content/docs/pre-release/index.md +0 -175
- package/website/content/docs/quick-reference.md +0 -17
- package/website/content/docs/readme.md +0 -35
- package/website/content/docs/schema-reference/agent-spec.md +0 -406
- package/website/content/docs/schema-reference/autonomy.md +0 -568
- package/website/content/docs/schema-reference/constraints.md +0 -543
- package/website/content/docs/schema-reference/index.md +0 -176
- package/website/content/docs/schema-reference/llm-config.md +0 -445
- package/website/content/docs/schema-reference/observability.md +0 -654
- package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
- package/website/content/docs/schema-reference/taxonomy.md +0 -509
- package/website/content/docs/schema-reference/tools.md +0 -628
- package/website/content/docs/templates/blog-post.md +0 -43
- package/website/content/docs/use-cases/00-index.md +0 -395
- package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
- package/website/content/docs/use-cases/customer-support.md +0 -1234
- package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
- package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
- package/website/content/docs/versioning.md +0 -288
- package/website/lib/version.ts +0 -35
- package/website/lib/versions.json +0 -78
- package/website/next.config.ts +0 -18
- package/website/nginx.conf +0 -32
- package/website/package-lock.json +0 -9679
- package/website/package.json +0 -59
- package/website/postcss.config.mjs +0 -9
- package/website/scripts/fetch-versions.js +0 -166
- package/website/scripts/generate-examples-index.js +0 -163
- package/website/scripts/merge-docs-to-wiki.ts +0 -207
- package/website/scripts/sync-version.js +0 -72
- package/website/scripts/sync-wiki.ts +0 -322
- package/website/scripts/upload-wiki.ts +0 -199
- package/website/styles/_variables.scss +0 -36
- package/website/tailwind.config.ts +0 -136
- /package/dist/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
- /package/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
|
@@ -1,1202 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "OpenAI to OSSA"
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# OpenAI Assistants API to OSSA Migration Guide
|
|
6
|
-
|
|
7
|
-
> **Comprehensive guide for migrating from OpenAI Assistants API to OSSA (Open Source Self-Organizing Agent) Standard**
|
|
8
|
-
|
|
9
|
-
## Table of Contents
|
|
10
|
-
|
|
11
|
-
- [Overview](#overview)
|
|
12
|
-
- [Key Differences](#key-differences)
|
|
13
|
-
- [Migration Mapping](#migration-mapping)
|
|
14
|
-
- [Migration Examples](#migration-examples)
|
|
15
|
-
- [Example 1: Simple Assistant](#example-1-simple-assistant)
|
|
16
|
-
- [Example 2: Function Calling Assistant](#example-2-function-calling-assistant)
|
|
17
|
-
- [Example 3: File Search Assistant](#example-3-file-search-assistant)
|
|
18
|
-
- [Advanced Features](#advanced-features)
|
|
19
|
-
- [Migration Checklist](#migration-checklist)
|
|
20
|
-
- [Troubleshooting](#troubleshooting)
|
|
21
|
-
- [FAQ](#faq)
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Overview
|
|
26
|
-
|
|
27
|
-
This guide provides a complete migration path from OpenAI's Assistants API to the OSSA standard. OSSA provides:
|
|
28
|
-
|
|
29
|
-
- **Vendor Independence**: Not locked into OpenAI - use any LLM provider
|
|
30
|
-
- **Kubernetes Native**: Deploy agents as Kubernetes resources
|
|
31
|
-
- **Enhanced Observability**: Built-in tracing, metrics, and logging
|
|
32
|
-
- **GitLab Integration**: Native issue tracking and collaboration
|
|
33
|
-
- **Multi-Agent Orchestration**: Coordinate multiple agents seamlessly
|
|
34
|
-
- **OSSA Compliance**: Standardized agent definitions with validation
|
|
35
|
-
|
|
36
|
-
### Why Migrate?
|
|
37
|
-
|
|
38
|
-
| Feature | OpenAI Assistants | OSSA |
|
|
39
|
-
|---------|------------------|------|
|
|
40
|
-
| **LLM Provider** | OpenAI only | Any (OpenAI, Anthropic, Google, Azure, Ollama, etc.) |
|
|
41
|
-
| **Deployment** | Cloud-only | Local, Cloud, Kubernetes |
|
|
42
|
-
| **Observability** | Limited | Full tracing, metrics, logs (Prometheus, Jaeger) |
|
|
43
|
-
| **Cost Control** | Per-token billing | Configurable cost constraints |
|
|
44
|
-
| **Multi-Agent** | Limited | Native orchestration support |
|
|
45
|
-
| **Standards** | Proprietary | Open standard (OSSA v0.2.2) |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Key Differences
|
|
50
|
-
|
|
51
|
-
### Conceptual Mapping
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
OpenAI Assistants API → OSSA Standard
|
|
55
|
-
═══════════════════════════════════════════════════════════
|
|
56
|
-
Assistant → Agent (OSSA Manifest)
|
|
57
|
-
Functions → Capabilities
|
|
58
|
-
File Search → Data Capabilities + MCP Tools
|
|
59
|
-
Code Interpreter → Runtime Environment
|
|
60
|
-
Vector Stores → Data Sources + Knowledge Bases
|
|
61
|
-
Threads → Workflow Sessions
|
|
62
|
-
Messages → Task Messages
|
|
63
|
-
Runs → Agent Executions
|
|
64
|
-
Tools → MCP Tools / Capabilities
|
|
65
|
-
Retrieval → Knowledge Retrieval Capability
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Migration Mapping
|
|
71
|
-
|
|
72
|
-
### 1. OpenAI Assistant → OSSA Agent
|
|
73
|
-
|
|
74
|
-
**OpenAI Assistant Definition:**
|
|
75
|
-
```python
|
|
76
|
-
assistant = client.beta.assistants.create(
|
|
77
|
-
name="Data Analyst",
|
|
78
|
-
instructions="You are a data analyst assistant.",
|
|
79
|
-
model="gpt-4-turbo",
|
|
80
|
-
tools=[{"type": "code_interpreter"}]
|
|
81
|
-
)
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**OSSA Equivalent:**
|
|
85
|
-
```yaml
|
|
86
|
-
apiVersion: ossa/v0.2.2
|
|
87
|
-
kind: Agent
|
|
88
|
-
metadata:
|
|
89
|
-
name: data-analyst
|
|
90
|
-
version: 1.0.0
|
|
91
|
-
description: "Data analyst assistant"
|
|
92
|
-
labels:
|
|
93
|
-
type: specialist
|
|
94
|
-
ossa-version: "0.2.2"
|
|
95
|
-
spec:
|
|
96
|
-
role: |
|
|
97
|
-
You are a data analyst assistant.
|
|
98
|
-
taxonomy:
|
|
99
|
-
domain: analytics
|
|
100
|
-
subdomain: data_analysis
|
|
101
|
-
capability: data_processing
|
|
102
|
-
llm:
|
|
103
|
-
provider: openai # Or anthropic, google, azure, etc.
|
|
104
|
-
model: gpt-4-turbo
|
|
105
|
-
temperature: 0.7
|
|
106
|
-
maxTokens: 4096
|
|
107
|
-
runtime:
|
|
108
|
-
type: local
|
|
109
|
-
environment:
|
|
110
|
-
PYTHON_VERSION: "3.11"
|
|
111
|
-
resources:
|
|
112
|
-
cpu: 1000m
|
|
113
|
-
memory: 2Gi
|
|
114
|
-
capabilities:
|
|
115
|
-
- name: code_interpreter
|
|
116
|
-
description: "Execute Python code for data analysis"
|
|
117
|
-
input_schema:
|
|
118
|
-
type: object
|
|
119
|
-
properties:
|
|
120
|
-
code:
|
|
121
|
-
type: string
|
|
122
|
-
description: "Python code to execute"
|
|
123
|
-
output_schema:
|
|
124
|
-
type: object
|
|
125
|
-
properties:
|
|
126
|
-
result:
|
|
127
|
-
type: string
|
|
128
|
-
output:
|
|
129
|
-
type: string
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### 2. Functions → OSSA Capabilities
|
|
133
|
-
|
|
134
|
-
**OpenAI Functions:**
|
|
135
|
-
```python
|
|
136
|
-
tools = [{
|
|
137
|
-
"type": "function",
|
|
138
|
-
"function": {
|
|
139
|
-
"name": "get_weather",
|
|
140
|
-
"description": "Get current weather for a location",
|
|
141
|
-
"parameters": {
|
|
142
|
-
"type": "object",
|
|
143
|
-
"properties": {
|
|
144
|
-
"location": {
|
|
145
|
-
"type": "string",
|
|
146
|
-
"description": "City name"
|
|
147
|
-
},
|
|
148
|
-
"unit": {
|
|
149
|
-
"type": "string",
|
|
150
|
-
"enum": ["celsius", "fahrenheit"]
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
"required": ["location"]
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}]
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
**OSSA Capabilities:**
|
|
160
|
-
```yaml
|
|
161
|
-
capabilities:
|
|
162
|
-
- name: get_weather
|
|
163
|
-
description: "Get current weather for a location"
|
|
164
|
-
input_schema:
|
|
165
|
-
type: object
|
|
166
|
-
required:
|
|
167
|
-
- location
|
|
168
|
-
properties:
|
|
169
|
-
location:
|
|
170
|
-
type: string
|
|
171
|
-
description: "City name"
|
|
172
|
-
unit:
|
|
173
|
-
type: string
|
|
174
|
-
enum: [celsius, fahrenheit]
|
|
175
|
-
default: celsius
|
|
176
|
-
output_schema:
|
|
177
|
-
type: object
|
|
178
|
-
properties:
|
|
179
|
-
temperature:
|
|
180
|
-
type: number
|
|
181
|
-
conditions:
|
|
182
|
-
type: string
|
|
183
|
-
humidity:
|
|
184
|
-
type: number
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### 3. File Search → OSSA Data Capabilities
|
|
188
|
-
|
|
189
|
-
**OpenAI File Search:**
|
|
190
|
-
```python
|
|
191
|
-
assistant = client.beta.assistants.create(
|
|
192
|
-
name="Research Assistant",
|
|
193
|
-
instructions="You research papers.",
|
|
194
|
-
model="gpt-4-turbo",
|
|
195
|
-
tools=[{"type": "file_search"}],
|
|
196
|
-
tool_resources={
|
|
197
|
-
"file_search": {
|
|
198
|
-
"vector_store_ids": [vector_store.id]
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
)
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
**OSSA Data Capabilities:**
|
|
205
|
-
```yaml
|
|
206
|
-
apiVersion: ossa/v0.2.2
|
|
207
|
-
kind: Agent
|
|
208
|
-
metadata:
|
|
209
|
-
name: research-assistant
|
|
210
|
-
version: 1.0.0
|
|
211
|
-
spec:
|
|
212
|
-
role: "You research papers."
|
|
213
|
-
llm:
|
|
214
|
-
provider: openai
|
|
215
|
-
model: gpt-4-turbo
|
|
216
|
-
tools:
|
|
217
|
-
- type: mcp
|
|
218
|
-
server: filesystem
|
|
219
|
-
capabilities:
|
|
220
|
-
- read_file
|
|
221
|
-
- search_files
|
|
222
|
-
- type: mcp
|
|
223
|
-
server: qdrant # Vector database
|
|
224
|
-
capabilities:
|
|
225
|
-
- semantic_search
|
|
226
|
-
capabilities:
|
|
227
|
-
- name: search_documents
|
|
228
|
-
description: "Search research papers"
|
|
229
|
-
input_schema:
|
|
230
|
-
type: object
|
|
231
|
-
properties:
|
|
232
|
-
query:
|
|
233
|
-
type: string
|
|
234
|
-
max_results:
|
|
235
|
-
type: integer
|
|
236
|
-
default: 10
|
|
237
|
-
output_schema:
|
|
238
|
-
type: object
|
|
239
|
-
properties:
|
|
240
|
-
results:
|
|
241
|
-
type: array
|
|
242
|
-
items:
|
|
243
|
-
type: object
|
|
244
|
-
properties:
|
|
245
|
-
content:
|
|
246
|
-
type: string
|
|
247
|
-
score:
|
|
248
|
-
type: number
|
|
249
|
-
metadata:
|
|
250
|
-
type: object
|
|
251
|
-
data_sources:
|
|
252
|
-
- type: vector_store
|
|
253
|
-
provider: qdrant
|
|
254
|
-
collection: research_papers
|
|
255
|
-
endpoint: http://qdrant:6333
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### 4. Code Interpreter → OSSA Runtime
|
|
259
|
-
|
|
260
|
-
**OpenAI Code Interpreter:**
|
|
261
|
-
```python
|
|
262
|
-
assistant = client.beta.assistants.create(
|
|
263
|
-
name="Code Helper",
|
|
264
|
-
instructions="Execute Python code",
|
|
265
|
-
tools=[{"type": "code_interpreter"}]
|
|
266
|
-
)
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
**OSSA Runtime:**
|
|
270
|
-
```yaml
|
|
271
|
-
spec:
|
|
272
|
-
runtime:
|
|
273
|
-
type: docker # or kubernetes, local
|
|
274
|
-
image: python:3.11-slim
|
|
275
|
-
command: ["python", "-u"]
|
|
276
|
-
environment:
|
|
277
|
-
PYTHON_PATH: /app
|
|
278
|
-
PIP_PACKAGES: "pandas numpy matplotlib"
|
|
279
|
-
resources:
|
|
280
|
-
cpu: 2000m
|
|
281
|
-
memory: 4Gi
|
|
282
|
-
security:
|
|
283
|
-
allowNetworkAccess: false
|
|
284
|
-
allowFilesystemWrite: true
|
|
285
|
-
allowedPaths:
|
|
286
|
-
- /tmp
|
|
287
|
-
- /workspace
|
|
288
|
-
capabilities:
|
|
289
|
-
- name: execute_code
|
|
290
|
-
description: "Execute Python code in sandboxed environment"
|
|
291
|
-
input_schema:
|
|
292
|
-
type: object
|
|
293
|
-
properties:
|
|
294
|
-
code:
|
|
295
|
-
type: string
|
|
296
|
-
timeout:
|
|
297
|
-
type: integer
|
|
298
|
-
default: 30
|
|
299
|
-
output_schema:
|
|
300
|
-
type: object
|
|
301
|
-
properties:
|
|
302
|
-
stdout:
|
|
303
|
-
type: string
|
|
304
|
-
stderr:
|
|
305
|
-
type: string
|
|
306
|
-
return_value:
|
|
307
|
-
type: object
|
|
308
|
-
execution_time:
|
|
309
|
-
type: number
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### 5. Vector Stores → OSSA Data Sources
|
|
313
|
-
|
|
314
|
-
**OpenAI Vector Store:**
|
|
315
|
-
```python
|
|
316
|
-
vector_store = client.beta.vector_stores.create(
|
|
317
|
-
name="Knowledge Base"
|
|
318
|
-
)
|
|
319
|
-
|
|
320
|
-
file_batch = client.beta.vector_stores.file_batches.upload_and_poll(
|
|
321
|
-
vector_store_id=vector_store.id,
|
|
322
|
-
files=[open("doc1.pdf", "rb"), open("doc2.pdf", "rb")]
|
|
323
|
-
)
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
**OSSA Data Sources:**
|
|
327
|
-
```yaml
|
|
328
|
-
spec:
|
|
329
|
-
data_sources:
|
|
330
|
-
- type: vector_store
|
|
331
|
-
name: knowledge_base
|
|
332
|
-
provider: qdrant # or pinecone, weaviate, milvus
|
|
333
|
-
collection: documents
|
|
334
|
-
endpoint: ${QDRANT_URL}
|
|
335
|
-
auth:
|
|
336
|
-
type: apikey
|
|
337
|
-
credentials: ${QDRANT_API_KEY}
|
|
338
|
-
config:
|
|
339
|
-
embedding_model: text-embedding-3-large
|
|
340
|
-
dimension: 1536
|
|
341
|
-
distance_metric: cosine
|
|
342
|
-
- type: filesystem
|
|
343
|
-
name: document_storage
|
|
344
|
-
path: /data/documents
|
|
345
|
-
allowed_extensions: [pdf, txt, md, docx]
|
|
346
|
-
|
|
347
|
-
tools:
|
|
348
|
-
- type: mcp
|
|
349
|
-
server: qdrant
|
|
350
|
-
capabilities:
|
|
351
|
-
- insert_vectors
|
|
352
|
-
- search_vectors
|
|
353
|
-
- delete_vectors
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
---
|
|
357
|
-
|
|
358
|
-
## Migration Examples
|
|
359
|
-
|
|
360
|
-
### Example 1: Simple Assistant
|
|
361
|
-
|
|
362
|
-
**Before (OpenAI):**
|
|
363
|
-
```python
|
|
364
|
-
from openai import OpenAI
|
|
365
|
-
|
|
366
|
-
client = OpenAI()
|
|
367
|
-
|
|
368
|
-
# Create assistant
|
|
369
|
-
assistant = client.beta.assistants.create(
|
|
370
|
-
name="Math Tutor",
|
|
371
|
-
instructions="You are a helpful math tutor. Guide students step by step.",
|
|
372
|
-
model="gpt-4-turbo"
|
|
373
|
-
)
|
|
374
|
-
|
|
375
|
-
# Create thread
|
|
376
|
-
thread = client.beta.threads.create()
|
|
377
|
-
|
|
378
|
-
# Add message
|
|
379
|
-
message = client.beta.threads.messages.create(
|
|
380
|
-
thread_id=thread.id,
|
|
381
|
-
role="user",
|
|
382
|
-
content="Solve: 3x + 11 = 14"
|
|
383
|
-
)
|
|
384
|
-
|
|
385
|
-
# Run assistant
|
|
386
|
-
run = client.beta.threads.runs.create_and_poll(
|
|
387
|
-
thread_id=thread.id,
|
|
388
|
-
assistant_id=assistant.id
|
|
389
|
-
)
|
|
390
|
-
|
|
391
|
-
# Get response
|
|
392
|
-
messages = client.beta.threads.messages.list(thread_id=thread.id)
|
|
393
|
-
print(messages.data[0].content[0].text.value)
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
**After (OSSA):**
|
|
397
|
-
|
|
398
|
-
**1. Create Agent Manifest (`math-tutor.ossa.yaml`):**
|
|
399
|
-
```yaml
|
|
400
|
-
apiVersion: ossa/v0.2.2
|
|
401
|
-
kind: Agent
|
|
402
|
-
metadata:
|
|
403
|
-
name: math-tutor
|
|
404
|
-
version: 1.0.0
|
|
405
|
-
description: "Helpful math tutor providing step-by-step guidance"
|
|
406
|
-
labels:
|
|
407
|
-
type: specialist
|
|
408
|
-
domain: education
|
|
409
|
-
spec:
|
|
410
|
-
role: |
|
|
411
|
-
You are a helpful math tutor. Guide students step by step.
|
|
412
|
-
taxonomy:
|
|
413
|
-
domain: education
|
|
414
|
-
subdomain: mathematics
|
|
415
|
-
capability: tutoring
|
|
416
|
-
llm:
|
|
417
|
-
provider: openai
|
|
418
|
-
model: gpt-4-turbo
|
|
419
|
-
temperature: 0.7
|
|
420
|
-
maxTokens: 2048
|
|
421
|
-
constraints:
|
|
422
|
-
cost:
|
|
423
|
-
maxTokensPerRequest: 2048
|
|
424
|
-
monitoring:
|
|
425
|
-
traces: true
|
|
426
|
-
metrics: true
|
|
427
|
-
logs: true
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
**2. Use with BuildKit:**
|
|
431
|
-
```bash
|
|
432
|
-
# Create agent from manifest
|
|
433
|
-
buildkit agents create math-tutor.ossa.yaml
|
|
434
|
-
|
|
435
|
-
# Spawn agent instance
|
|
436
|
-
buildkit agents spawn math-tutor \
|
|
437
|
-
--message "Solve: 3x + 11 = 14" \
|
|
438
|
-
--wait
|
|
439
|
-
|
|
440
|
-
# Or use programmatically
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
**3. Use Programmatically:**
|
|
444
|
-
```typescript
|
|
445
|
-
import { AgentBuilder } from '@bluefly/agent-buildkit';
|
|
446
|
-
|
|
447
|
-
const agent = await AgentBuilder.fromManifest('math-tutor.ossa.yaml');
|
|
448
|
-
|
|
449
|
-
const response = await agent.execute({
|
|
450
|
-
message: "Solve: 3x + 11 = 14"
|
|
451
|
-
});
|
|
452
|
-
|
|
453
|
-
console.log(response.result);
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
---
|
|
457
|
-
|
|
458
|
-
### Example 2: Function Calling Assistant
|
|
459
|
-
|
|
460
|
-
**Before (OpenAI):**
|
|
461
|
-
```python
|
|
462
|
-
import json
|
|
463
|
-
from openai import OpenAI
|
|
464
|
-
|
|
465
|
-
client = OpenAI()
|
|
466
|
-
|
|
467
|
-
# Define function
|
|
468
|
-
tools = [{
|
|
469
|
-
"type": "function",
|
|
470
|
-
"function": {
|
|
471
|
-
"name": "get_stock_price",
|
|
472
|
-
"description": "Get current stock price",
|
|
473
|
-
"parameters": {
|
|
474
|
-
"type": "object",
|
|
475
|
-
"properties": {
|
|
476
|
-
"symbol": {
|
|
477
|
-
"type": "string",
|
|
478
|
-
"description": "Stock symbol (e.g., AAPL)"
|
|
479
|
-
}
|
|
480
|
-
},
|
|
481
|
-
"required": ["symbol"]
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
}]
|
|
485
|
-
|
|
486
|
-
# Create assistant with function
|
|
487
|
-
assistant = client.beta.assistants.create(
|
|
488
|
-
name="Stock Assistant",
|
|
489
|
-
instructions="Help with stock prices",
|
|
490
|
-
model="gpt-4-turbo",
|
|
491
|
-
tools=tools
|
|
492
|
-
)
|
|
493
|
-
|
|
494
|
-
# Execute (requires tool call handling)
|
|
495
|
-
thread = client.beta.threads.create()
|
|
496
|
-
message = client.beta.threads.messages.create(
|
|
497
|
-
thread_id=thread.id,
|
|
498
|
-
role="user",
|
|
499
|
-
content="What's Apple's stock price?"
|
|
500
|
-
)
|
|
501
|
-
|
|
502
|
-
run = client.beta.threads.runs.create_and_poll(
|
|
503
|
-
thread_id=thread.id,
|
|
504
|
-
assistant_id=assistant.id
|
|
505
|
-
)
|
|
506
|
-
|
|
507
|
-
# Handle tool calls
|
|
508
|
-
if run.status == 'requires_action':
|
|
509
|
-
tool_outputs = []
|
|
510
|
-
for tool_call in run.required_action.submit_tool_outputs.tool_calls:
|
|
511
|
-
if tool_call.function.name == "get_stock_price":
|
|
512
|
-
arguments = json.loads(tool_call.function.arguments)
|
|
513
|
-
# Call your function
|
|
514
|
-
price = get_stock_price(arguments["symbol"])
|
|
515
|
-
tool_outputs.append({
|
|
516
|
-
"tool_call_id": tool_call.id,
|
|
517
|
-
"output": json.dumps({"price": price})
|
|
518
|
-
})
|
|
519
|
-
|
|
520
|
-
run = client.beta.threads.runs.submit_tool_outputs_and_poll(
|
|
521
|
-
thread_id=thread.id,
|
|
522
|
-
run_id=run.id,
|
|
523
|
-
tool_outputs=tool_outputs
|
|
524
|
-
)
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
**After (OSSA):**
|
|
528
|
-
|
|
529
|
-
**1. Create Agent Manifest (`stock-assistant.ossa.yaml`):**
|
|
530
|
-
```yaml
|
|
531
|
-
apiVersion: ossa/v0.2.2
|
|
532
|
-
kind: Agent
|
|
533
|
-
metadata:
|
|
534
|
-
name: stock-assistant
|
|
535
|
-
version: 1.0.0
|
|
536
|
-
description: "Stock price assistant with real-time data"
|
|
537
|
-
spec:
|
|
538
|
-
role: "Help with stock prices"
|
|
539
|
-
taxonomy:
|
|
540
|
-
domain: finance
|
|
541
|
-
subdomain: stock_market
|
|
542
|
-
capability: price_lookup
|
|
543
|
-
llm:
|
|
544
|
-
provider: openai
|
|
545
|
-
model: gpt-4-turbo
|
|
546
|
-
capabilities:
|
|
547
|
-
- name: get_stock_price
|
|
548
|
-
description: "Get current stock price for a symbol"
|
|
549
|
-
input_schema:
|
|
550
|
-
type: object
|
|
551
|
-
required:
|
|
552
|
-
- symbol
|
|
553
|
-
properties:
|
|
554
|
-
symbol:
|
|
555
|
-
type: string
|
|
556
|
-
description: "Stock symbol (e.g., AAPL, GOOGL)"
|
|
557
|
-
pattern: "^[A-Z]{1,5}$"
|
|
558
|
-
output_schema:
|
|
559
|
-
type: object
|
|
560
|
-
properties:
|
|
561
|
-
symbol:
|
|
562
|
-
type: string
|
|
563
|
-
price:
|
|
564
|
-
type: number
|
|
565
|
-
currency:
|
|
566
|
-
type: string
|
|
567
|
-
timestamp:
|
|
568
|
-
type: string
|
|
569
|
-
format: date-time
|
|
570
|
-
tools:
|
|
571
|
-
- type: http
|
|
572
|
-
name: stock_api
|
|
573
|
-
endpoint: https://api.example.com/stocks
|
|
574
|
-
auth:
|
|
575
|
-
type: bearer
|
|
576
|
-
credentials: ${STOCK_API_KEY}
|
|
577
|
-
monitoring:
|
|
578
|
-
traces: true
|
|
579
|
-
metrics: true
|
|
580
|
-
```
|
|
581
|
-
|
|
582
|
-
**2. Implement Capability Handler:**
|
|
583
|
-
```typescript
|
|
584
|
-
import { AgentBuilder, CapabilityExecutor } from '@bluefly/agent-buildkit';
|
|
585
|
-
import axios from 'axios';
|
|
586
|
-
|
|
587
|
-
// Define capability executor
|
|
588
|
-
const getStockPrice: CapabilityExecutor = async (params) => {
|
|
589
|
-
const { symbol } = params;
|
|
590
|
-
|
|
591
|
-
const response = await axios.get(
|
|
592
|
-
`https://api.example.com/stocks/${symbol}`,
|
|
593
|
-
{
|
|
594
|
-
headers: {
|
|
595
|
-
'Authorization': `Bearer ${process.env.STOCK_API_KEY}`
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
);
|
|
599
|
-
|
|
600
|
-
return {
|
|
601
|
-
symbol,
|
|
602
|
-
price: response.data.price,
|
|
603
|
-
currency: 'USD',
|
|
604
|
-
timestamp: new Date().toISOString()
|
|
605
|
-
};
|
|
606
|
-
};
|
|
607
|
-
|
|
608
|
-
// Register capability
|
|
609
|
-
const agent = await AgentBuilder.fromManifest('stock-assistant.ossa.yaml');
|
|
610
|
-
agent.registerCapability('get_stock_price', getStockPrice);
|
|
611
|
-
|
|
612
|
-
// Execute
|
|
613
|
-
const response = await agent.execute({
|
|
614
|
-
message: "What's Apple's stock price?"
|
|
615
|
-
});
|
|
616
|
-
|
|
617
|
-
console.log(response.result);
|
|
618
|
-
```
|
|
619
|
-
|
|
620
|
-
**3. Use with BuildKit CLI:**
|
|
621
|
-
```bash
|
|
622
|
-
# Deploy agent
|
|
623
|
-
buildkit agents create stock-assistant.ossa.yaml
|
|
624
|
-
|
|
625
|
-
# Spawn with capability handler
|
|
626
|
-
buildkit agents spawn stock-assistant \
|
|
627
|
-
--capability-handler ./handlers/stock-price.js \
|
|
628
|
-
--message "What's Apple's stock price?" \
|
|
629
|
-
--wait
|
|
630
|
-
```
|
|
631
|
-
|
|
632
|
-
---
|
|
633
|
-
|
|
634
|
-
### Example 3: File Search Assistant
|
|
635
|
-
|
|
636
|
-
**Before (OpenAI):**
|
|
637
|
-
```python
|
|
638
|
-
from openai import OpenAI
|
|
639
|
-
|
|
640
|
-
client = OpenAI()
|
|
641
|
-
|
|
642
|
-
# Create vector store
|
|
643
|
-
vector_store = client.beta.vector_stores.create(
|
|
644
|
-
name="Product Documentation"
|
|
645
|
-
)
|
|
646
|
-
|
|
647
|
-
# Upload files
|
|
648
|
-
file_paths = ["manual.pdf", "faq.pdf", "guide.pdf"]
|
|
649
|
-
file_streams = [open(path, "rb") for path in file_paths]
|
|
650
|
-
|
|
651
|
-
file_batch = client.beta.vector_stores.file_batches.upload_and_poll(
|
|
652
|
-
vector_store_id=vector_store.id,
|
|
653
|
-
files=file_streams
|
|
654
|
-
)
|
|
655
|
-
|
|
656
|
-
# Create assistant with file search
|
|
657
|
-
assistant = client.beta.assistants.create(
|
|
658
|
-
name="Support Assistant",
|
|
659
|
-
instructions="Answer questions using product documentation",
|
|
660
|
-
model="gpt-4-turbo",
|
|
661
|
-
tools=[{"type": "file_search"}],
|
|
662
|
-
tool_resources={
|
|
663
|
-
"file_search": {
|
|
664
|
-
"vector_store_ids": [vector_store.id]
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
)
|
|
668
|
-
|
|
669
|
-
# Query
|
|
670
|
-
thread = client.beta.threads.create()
|
|
671
|
-
message = client.beta.threads.messages.create(
|
|
672
|
-
thread_id=thread.id,
|
|
673
|
-
role="user",
|
|
674
|
-
content="How do I reset my password?"
|
|
675
|
-
)
|
|
676
|
-
|
|
677
|
-
run = client.beta.threads.runs.create_and_poll(
|
|
678
|
-
thread_id=thread.id,
|
|
679
|
-
assistant_id=assistant.id
|
|
680
|
-
)
|
|
681
|
-
|
|
682
|
-
messages = client.beta.threads.messages.list(thread_id=thread.id)
|
|
683
|
-
print(messages.data[0].content[0].text.value)
|
|
684
|
-
```
|
|
685
|
-
|
|
686
|
-
**After (OSSA):**
|
|
687
|
-
|
|
688
|
-
**1. Setup Vector Database (Qdrant):**
|
|
689
|
-
```bash
|
|
690
|
-
# Start Qdrant via Docker
|
|
691
|
-
docker run -p 6333:6333 qdrant/qdrant
|
|
692
|
-
|
|
693
|
-
# Or use BuildKit
|
|
694
|
-
buildkit ecosystem services start qdrant
|
|
695
|
-
```
|
|
696
|
-
|
|
697
|
-
**2. Create Agent Manifest (`support-assistant.ossa.yaml`):**
|
|
698
|
-
```yaml
|
|
699
|
-
apiVersion: ossa/v0.2.2
|
|
700
|
-
kind: Agent
|
|
701
|
-
metadata:
|
|
702
|
-
name: support-assistant
|
|
703
|
-
version: 1.0.0
|
|
704
|
-
description: "Support assistant with product documentation search"
|
|
705
|
-
spec:
|
|
706
|
-
role: |
|
|
707
|
-
Answer questions using product documentation.
|
|
708
|
-
Always cite sources when providing information.
|
|
709
|
-
taxonomy:
|
|
710
|
-
domain: customer_support
|
|
711
|
-
subdomain: documentation
|
|
712
|
-
capability: knowledge_retrieval
|
|
713
|
-
llm:
|
|
714
|
-
provider: openai
|
|
715
|
-
model: gpt-4-turbo
|
|
716
|
-
temperature: 0.3
|
|
717
|
-
data_sources:
|
|
718
|
-
- type: vector_store
|
|
719
|
-
name: product_docs
|
|
720
|
-
provider: qdrant
|
|
721
|
-
collection: documentation
|
|
722
|
-
endpoint: ${QDRANT_URL:-http://localhost:6333}
|
|
723
|
-
config:
|
|
724
|
-
embedding_model: text-embedding-3-large
|
|
725
|
-
dimension: 1536
|
|
726
|
-
distance_metric: cosine
|
|
727
|
-
search_params:
|
|
728
|
-
hnsw_ef: 128
|
|
729
|
-
exact: false
|
|
730
|
-
tools:
|
|
731
|
-
- type: mcp
|
|
732
|
-
server: qdrant
|
|
733
|
-
namespace: default
|
|
734
|
-
capabilities:
|
|
735
|
-
- search_vectors
|
|
736
|
-
- retrieve_points
|
|
737
|
-
- type: mcp
|
|
738
|
-
server: filesystem
|
|
739
|
-
capabilities:
|
|
740
|
-
- read_file
|
|
741
|
-
capabilities:
|
|
742
|
-
- name: search_documentation
|
|
743
|
-
description: "Search product documentation using semantic search"
|
|
744
|
-
input_schema:
|
|
745
|
-
type: object
|
|
746
|
-
required:
|
|
747
|
-
- query
|
|
748
|
-
properties:
|
|
749
|
-
query:
|
|
750
|
-
type: string
|
|
751
|
-
description: "Search query"
|
|
752
|
-
max_results:
|
|
753
|
-
type: integer
|
|
754
|
-
default: 5
|
|
755
|
-
minimum: 1
|
|
756
|
-
maximum: 20
|
|
757
|
-
output_schema:
|
|
758
|
-
type: object
|
|
759
|
-
properties:
|
|
760
|
-
results:
|
|
761
|
-
type: array
|
|
762
|
-
items:
|
|
763
|
-
type: object
|
|
764
|
-
properties:
|
|
765
|
-
content:
|
|
766
|
-
type: string
|
|
767
|
-
score:
|
|
768
|
-
type: number
|
|
769
|
-
source:
|
|
770
|
-
type: string
|
|
771
|
-
page:
|
|
772
|
-
type: integer
|
|
773
|
-
monitoring:
|
|
774
|
-
traces: true
|
|
775
|
-
metrics: true
|
|
776
|
-
```
|
|
777
|
-
|
|
778
|
-
**3. Index Documents:**
|
|
779
|
-
```typescript
|
|
780
|
-
import { QdrantClient } from '@qdrant/js-client-rest';
|
|
781
|
-
import { OpenAI } from 'openai';
|
|
782
|
-
import fs from 'fs';
|
|
783
|
-
import pdf from 'pdf-parse';
|
|
784
|
-
|
|
785
|
-
const qdrant = new QdrantClient({ url: process.env.QDRANT_URL });
|
|
786
|
-
const openai = new OpenAI();
|
|
787
|
-
|
|
788
|
-
// Create collection
|
|
789
|
-
await qdrant.createCollection('documentation', {
|
|
790
|
-
vectors: {
|
|
791
|
-
size: 1536,
|
|
792
|
-
distance: 'Cosine'
|
|
793
|
-
}
|
|
794
|
-
});
|
|
795
|
-
|
|
796
|
-
// Index documents
|
|
797
|
-
const files = ['manual.pdf', 'faq.pdf', 'guide.pdf'];
|
|
798
|
-
|
|
799
|
-
for (const file of files) {
|
|
800
|
-
const dataBuffer = fs.readFileSync(file);
|
|
801
|
-
const data = await pdf(dataBuffer);
|
|
802
|
-
|
|
803
|
-
// Split into chunks
|
|
804
|
-
const chunks = splitIntoChunks(data.text, 1000);
|
|
805
|
-
|
|
806
|
-
for (let i = 0; i < chunks.length; i++) {
|
|
807
|
-
// Generate embedding
|
|
808
|
-
const embedding = await openai.embeddings.create({
|
|
809
|
-
model: 'text-embedding-3-large',
|
|
810
|
-
input: chunks[i]
|
|
811
|
-
});
|
|
812
|
-
|
|
813
|
-
// Insert into Qdrant
|
|
814
|
-
await qdrant.upsert('documentation', {
|
|
815
|
-
points: [{
|
|
816
|
-
id: `${file}-${i}`,
|
|
817
|
-
vector: embedding.data[0].embedding,
|
|
818
|
-
payload: {
|
|
819
|
-
content: chunks[i],
|
|
820
|
-
source: file,
|
|
821
|
-
page: i
|
|
822
|
-
}
|
|
823
|
-
}]
|
|
824
|
-
});
|
|
825
|
-
}
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
function splitIntoChunks(text: string, chunkSize: number): string[] {
|
|
829
|
-
const chunks = [];
|
|
830
|
-
for (let i = 0; i < text.length; i += chunkSize) {
|
|
831
|
-
chunks.push(text.slice(i, i + chunkSize));
|
|
832
|
-
}
|
|
833
|
-
return chunks;
|
|
834
|
-
}
|
|
835
|
-
```
|
|
836
|
-
|
|
837
|
-
**4. Implement Search Capability:**
|
|
838
|
-
```typescript
|
|
839
|
-
import { AgentBuilder, CapabilityExecutor } from '@bluefly/agent-buildkit';
|
|
840
|
-
import { QdrantClient } from '@qdrant/js-client-rest';
|
|
841
|
-
import { OpenAI } from 'openai';
|
|
842
|
-
|
|
843
|
-
const qdrant = new QdrantClient({ url: process.env.QDRANT_URL });
|
|
844
|
-
const openai = new OpenAI();
|
|
845
|
-
|
|
846
|
-
const searchDocumentation: CapabilityExecutor = async (params) => {
|
|
847
|
-
const { query, max_results = 5 } = params;
|
|
848
|
-
|
|
849
|
-
// Generate query embedding
|
|
850
|
-
const embedding = await openai.embeddings.create({
|
|
851
|
-
model: 'text-embedding-3-large',
|
|
852
|
-
input: query
|
|
853
|
-
});
|
|
854
|
-
|
|
855
|
-
// Search Qdrant
|
|
856
|
-
const searchResults = await qdrant.search('documentation', {
|
|
857
|
-
vector: embedding.data[0].embedding,
|
|
858
|
-
limit: max_results,
|
|
859
|
-
with_payload: true
|
|
860
|
-
});
|
|
861
|
-
|
|
862
|
-
return {
|
|
863
|
-
results: searchResults.map(result => ({
|
|
864
|
-
content: result.payload.content,
|
|
865
|
-
score: result.score,
|
|
866
|
-
source: result.payload.source,
|
|
867
|
-
page: result.payload.page
|
|
868
|
-
}))
|
|
869
|
-
};
|
|
870
|
-
};
|
|
871
|
-
|
|
872
|
-
// Create and run agent
|
|
873
|
-
const agent = await AgentBuilder.fromManifest('support-assistant.ossa.yaml');
|
|
874
|
-
agent.registerCapability('search_documentation', searchDocumentation);
|
|
875
|
-
|
|
876
|
-
const response = await agent.execute({
|
|
877
|
-
message: "How do I reset my password?"
|
|
878
|
-
});
|
|
879
|
-
|
|
880
|
-
console.log(response.result);
|
|
881
|
-
```
|
|
882
|
-
|
|
883
|
-
**5. Use with BuildKit CLI:**
|
|
884
|
-
```bash
|
|
885
|
-
# Create agent
|
|
886
|
-
buildkit agents create support-assistant.ossa.yaml
|
|
887
|
-
|
|
888
|
-
# Spawn with auto-capability binding
|
|
889
|
-
buildkit agents spawn support-assistant \
|
|
890
|
-
--message "How do I reset my password?" \
|
|
891
|
-
--auto-bind-capabilities \
|
|
892
|
-
--wait
|
|
893
|
-
|
|
894
|
-
# View traces
|
|
895
|
-
buildkit agents traces support-assistant
|
|
896
|
-
```
|
|
897
|
-
|
|
898
|
-
---
|
|
899
|
-
|
|
900
|
-
## Advanced Features
|
|
901
|
-
|
|
902
|
-
### Multi-Agent Orchestration
|
|
903
|
-
|
|
904
|
-
OSSA provides native support for multi-agent orchestration, which OpenAI Assistants doesn't have.
|
|
905
|
-
|
|
906
|
-
**OSSA Orchestrator Example:**
|
|
907
|
-
```yaml
|
|
908
|
-
apiVersion: ossa/v0.2.2
|
|
909
|
-
kind: Agent
|
|
910
|
-
metadata:
|
|
911
|
-
name: research-orchestrator
|
|
912
|
-
version: 1.0.0
|
|
913
|
-
spec:
|
|
914
|
-
role: orchestration
|
|
915
|
-
taxonomy:
|
|
916
|
-
domain: orchestration
|
|
917
|
-
subdomain: research
|
|
918
|
-
capability: multi_agent_coordination
|
|
919
|
-
subagents:
|
|
920
|
-
- name: web-researcher
|
|
921
|
-
description: "Search and extract web content"
|
|
922
|
-
prompt: "Search the web and extract relevant information"
|
|
923
|
-
tools: [web_search]
|
|
924
|
-
model: inherit
|
|
925
|
-
- name: data-analyzer
|
|
926
|
-
description: "Analyze and summarize data"
|
|
927
|
-
prompt: "Analyze data and create summaries"
|
|
928
|
-
tools: [data_analysis]
|
|
929
|
-
model: inherit
|
|
930
|
-
- name: report-writer
|
|
931
|
-
description: "Write comprehensive reports"
|
|
932
|
-
prompt: "Write well-structured reports"
|
|
933
|
-
tools: [document_generation]
|
|
934
|
-
model: opus # Use more powerful model
|
|
935
|
-
orchestration:
|
|
936
|
-
strategy: sequential
|
|
937
|
-
max_concurrent: 3
|
|
938
|
-
timeout_seconds: 300
|
|
939
|
-
aggregation: merge_results
|
|
940
|
-
context_management:
|
|
941
|
-
parent_max_tokens: 8000
|
|
942
|
-
subagent_max_tokens: 4000
|
|
943
|
-
compression: auto
|
|
944
|
-
```
|
|
945
|
-
|
|
946
|
-
### Cost Management
|
|
947
|
-
|
|
948
|
-
```yaml
|
|
949
|
-
spec:
|
|
950
|
-
constraints:
|
|
951
|
-
cost:
|
|
952
|
-
maxTokensPerDay: 100000
|
|
953
|
-
maxTokensPerRequest: 4096
|
|
954
|
-
maxCostPerDay: 50.00
|
|
955
|
-
currency: USD
|
|
956
|
-
performance:
|
|
957
|
-
maxLatencySeconds: 30
|
|
958
|
-
maxConcurrentRequests: 10
|
|
959
|
-
timeoutSeconds: 60
|
|
960
|
-
```
|
|
961
|
-
|
|
962
|
-
### Observability
|
|
963
|
-
|
|
964
|
-
```yaml
|
|
965
|
-
spec:
|
|
966
|
-
observability:
|
|
967
|
-
tracing:
|
|
968
|
-
enabled: true
|
|
969
|
-
exporter: otlp # OpenTelemetry
|
|
970
|
-
endpoint: ${JAEGER_ENDPOINT}
|
|
971
|
-
metrics:
|
|
972
|
-
enabled: true
|
|
973
|
-
exporter: prometheus
|
|
974
|
-
endpoint: ${PROMETHEUS_ENDPOINT}
|
|
975
|
-
logging:
|
|
976
|
-
level: info
|
|
977
|
-
format: json
|
|
978
|
-
```
|
|
979
|
-
|
|
980
|
-
### GitLab Integration
|
|
981
|
-
|
|
982
|
-
```yaml
|
|
983
|
-
spec:
|
|
984
|
-
gitlab:
|
|
985
|
-
project_id: ${GITLAB_PROJECT_ID}
|
|
986
|
-
canBeAssigned: true
|
|
987
|
-
canCollaborate: true
|
|
988
|
-
auto_issues: true
|
|
989
|
-
ci_integration: true
|
|
990
|
-
```
|
|
991
|
-
|
|
992
|
-
---
|
|
993
|
-
|
|
994
|
-
## Migration Checklist
|
|
995
|
-
|
|
996
|
-
### Pre-Migration
|
|
997
|
-
|
|
998
|
-
- [ ] **Inventory OpenAI Assistants**: List all assistants, their functions, and vector stores
|
|
999
|
-
- [ ] **Document Dependencies**: Note external APIs, databases, and integrations
|
|
1000
|
-
- [ ] **Review Usage Patterns**: Understand token usage, costs, and performance
|
|
1001
|
-
- [ ] **Choose LLM Provider**: Decide on OpenAI, Anthropic, or multi-provider strategy
|
|
1002
|
-
- [ ] **Setup Infrastructure**: Install BuildKit, Docker, Kubernetes (optional)
|
|
1003
|
-
|
|
1004
|
-
### During Migration
|
|
1005
|
-
|
|
1006
|
-
- [ ] **Convert Assistants to OSSA Manifests**: Use mapping guide above
|
|
1007
|
-
- [ ] **Migrate Functions to Capabilities**: Define input/output schemas
|
|
1008
|
-
- [ ] **Setup Data Sources**: Migrate vector stores to Qdrant/Pinecone/etc.
|
|
1009
|
-
- [ ] **Implement Capability Handlers**: Write TypeScript/Python handlers
|
|
1010
|
-
- [ ] **Configure MCP Tools**: Setup filesystem, database, web tools
|
|
1011
|
-
- [ ] **Add Observability**: Enable tracing, metrics, logging
|
|
1012
|
-
- [ ] **Test Each Agent**: Verify functionality matches OpenAI behavior
|
|
1013
|
-
- [ ] **Setup CI/CD**: Integrate with GitLab CI
|
|
1014
|
-
|
|
1015
|
-
### Post-Migration
|
|
1016
|
-
|
|
1017
|
-
- [ ] **Monitor Performance**: Track latency, throughput, error rates
|
|
1018
|
-
- [ ] **Validate Cost Savings**: Compare costs vs OpenAI Assistants
|
|
1019
|
-
- [ ] **Train Team**: Ensure team understands OSSA workflows
|
|
1020
|
-
- [ ] **Update Documentation**: Document agent behaviors and capabilities
|
|
1021
|
-
- [ ] **Implement Guardrails**: Add safety constraints and validation
|
|
1022
|
-
- [ ] **Setup Alerts**: Configure monitoring alerts for failures
|
|
1023
|
-
|
|
1024
|
-
---
|
|
1025
|
-
|
|
1026
|
-
## Troubleshooting
|
|
1027
|
-
|
|
1028
|
-
### Common Issues
|
|
1029
|
-
|
|
1030
|
-
#### Issue: Capability Not Executing
|
|
1031
|
-
|
|
1032
|
-
**Symptom**: Agent doesn't call your capability
|
|
1033
|
-
|
|
1034
|
-
**Solution**:
|
|
1035
|
-
```yaml
|
|
1036
|
-
# Ensure capability is properly defined
|
|
1037
|
-
capabilities:
|
|
1038
|
-
- name: my_capability
|
|
1039
|
-
description: "Clear, specific description for LLM" # Important!
|
|
1040
|
-
input_schema:
|
|
1041
|
-
type: object
|
|
1042
|
-
required: [param1] # Specify required fields
|
|
1043
|
-
properties:
|
|
1044
|
-
param1:
|
|
1045
|
-
type: string
|
|
1046
|
-
description: "Detailed parameter description"
|
|
1047
|
-
```
|
|
1048
|
-
|
|
1049
|
-
#### Issue: Vector Search Not Working
|
|
1050
|
-
|
|
1051
|
-
**Symptom**: File search returns no results
|
|
1052
|
-
|
|
1053
|
-
**Solution**:
|
|
1054
|
-
```bash
|
|
1055
|
-
# Verify Qdrant connection
|
|
1056
|
-
curl http://localhost:6333/collections/documentation
|
|
1057
|
-
|
|
1058
|
-
# Check collection exists and has points
|
|
1059
|
-
# Re-index if needed
|
|
1060
|
-
|
|
1061
|
-
# Verify embedding model matches
|
|
1062
|
-
# OpenAI uses text-embedding-3-large (1536 dims)
|
|
1063
|
-
```
|
|
1064
|
-
|
|
1065
|
-
#### Issue: High Token Usage
|
|
1066
|
-
|
|
1067
|
-
**Symptom**: Unexpected token consumption
|
|
1068
|
-
|
|
1069
|
-
**Solution**:
|
|
1070
|
-
```yaml
|
|
1071
|
-
spec:
|
|
1072
|
-
constraints:
|
|
1073
|
-
cost:
|
|
1074
|
-
maxTokensPerRequest: 2048 # Limit per request
|
|
1075
|
-
llm:
|
|
1076
|
-
maxTokens: 1024 # Reduce output tokens
|
|
1077
|
-
temperature: 0.5 # Lower temperature = more focused
|
|
1078
|
-
```
|
|
1079
|
-
|
|
1080
|
-
#### Issue: Slow Performance
|
|
1081
|
-
|
|
1082
|
-
**Symptom**: Agent responses are slow
|
|
1083
|
-
|
|
1084
|
-
**Solution**:
|
|
1085
|
-
```yaml
|
|
1086
|
-
spec:
|
|
1087
|
-
llm:
|
|
1088
|
-
provider: anthropic # Try faster provider
|
|
1089
|
-
model: claude-3-haiku # Use faster model
|
|
1090
|
-
constraints:
|
|
1091
|
-
performance:
|
|
1092
|
-
maxLatencySeconds: 10
|
|
1093
|
-
timeoutSeconds: 30
|
|
1094
|
-
runtime:
|
|
1095
|
-
resources:
|
|
1096
|
-
cpu: 2000m # Increase resources
|
|
1097
|
-
memory: 4Gi
|
|
1098
|
-
```
|
|
1099
|
-
|
|
1100
|
-
---
|
|
1101
|
-
|
|
1102
|
-
## FAQ
|
|
1103
|
-
|
|
1104
|
-
### Q: Can I use OpenAI models with OSSA?
|
|
1105
|
-
**A:** Yes! OSSA supports OpenAI as a provider. Just set `spec.llm.provider: openai`.
|
|
1106
|
-
|
|
1107
|
-
### Q: How do I migrate my vector stores?
|
|
1108
|
-
**A:** Export embeddings from OpenAI vector stores and import into Qdrant, Pinecone, or Weaviate. See Example 3 above.
|
|
1109
|
-
|
|
1110
|
-
### Q: What about streaming responses?
|
|
1111
|
-
**A:** OSSA supports streaming via the BuildKit SDK:
|
|
1112
|
-
```typescript
|
|
1113
|
-
const stream = await agent.executeStream({ message: "..." });
|
|
1114
|
-
for await (const chunk of stream) {
|
|
1115
|
-
console.log(chunk);
|
|
1116
|
-
}
|
|
1117
|
-
```
|
|
1118
|
-
|
|
1119
|
-
### Q: Can I mix multiple LLM providers?
|
|
1120
|
-
**A:** Yes! Use different providers for different agents or capabilities:
|
|
1121
|
-
```yaml
|
|
1122
|
-
spec:
|
|
1123
|
-
llm:
|
|
1124
|
-
provider: anthropic # Default
|
|
1125
|
-
model: claude-3-opus
|
|
1126
|
-
subagents:
|
|
1127
|
-
- name: fast-responder
|
|
1128
|
-
model: haiku # Faster, cheaper
|
|
1129
|
-
- name: deep-thinker
|
|
1130
|
-
provider: openai # Different provider
|
|
1131
|
-
model: gpt-4-turbo
|
|
1132
|
-
```
|
|
1133
|
-
|
|
1134
|
-
### Q: How do I handle rate limits?
|
|
1135
|
-
**A:** OSSA includes built-in rate limiting and backoff:
|
|
1136
|
-
```yaml
|
|
1137
|
-
spec:
|
|
1138
|
-
constraints:
|
|
1139
|
-
performance:
|
|
1140
|
-
maxConcurrentRequests: 5
|
|
1141
|
-
retry_policy:
|
|
1142
|
-
max_attempts: 3
|
|
1143
|
-
backoff_multiplier: 2
|
|
1144
|
-
```
|
|
1145
|
-
|
|
1146
|
-
### Q: What about compliance and security?
|
|
1147
|
-
**A:** OSSA provides compliance validation and security features:
|
|
1148
|
-
```bash
|
|
1149
|
-
# Validate OSSA compliance
|
|
1150
|
-
buildkit ossa validate support-assistant.ossa.yaml
|
|
1151
|
-
|
|
1152
|
-
# Security audit
|
|
1153
|
-
buildkit golden audit --security
|
|
1154
|
-
```
|
|
1155
|
-
|
|
1156
|
-
### Q: Can I deploy to Kubernetes?
|
|
1157
|
-
**A:** Yes! OSSA agents are Kubernetes-native:
|
|
1158
|
-
```bash
|
|
1159
|
-
# Deploy to Kubernetes
|
|
1160
|
-
buildkit golden deploy --env production
|
|
1161
|
-
|
|
1162
|
-
# Scale agent
|
|
1163
|
-
kubectl scale deployment support-assistant --replicas=3
|
|
1164
|
-
```
|
|
1165
|
-
|
|
1166
|
-
### Q: How do I monitor agents?
|
|
1167
|
-
**A:** OSSA includes full observability:
|
|
1168
|
-
```bash
|
|
1169
|
-
# View metrics
|
|
1170
|
-
buildkit agents metrics support-assistant
|
|
1171
|
-
|
|
1172
|
-
# View traces
|
|
1173
|
-
buildkit agents traces support-assistant
|
|
1174
|
-
|
|
1175
|
-
# Prometheus metrics
|
|
1176
|
-
curl http://localhost:3000/metrics
|
|
1177
|
-
```
|
|
1178
|
-
|
|
1179
|
-
---
|
|
1180
|
-
|
|
1181
|
-
## Additional Resources
|
|
1182
|
-
|
|
1183
|
-
- **OSSA Specification**: [https://github.com/blueflyio/openstandardagents/wiki/home](https://github.com/blueflyio/openstandardagents/wiki/home)
|
|
1184
|
-
- **BuildKit Documentation**: [https://github.com/blueflyio/documentation/-/wikis/BuildKit-CLI-Reference](https://github.com/blueflyio/documentation/-/wikis/BuildKit-CLI-Reference)
|
|
1185
|
-
- **Agent Examples**: `/Users/flux423/Sites/LLM/agent-buildkit/templates/agents/`
|
|
1186
|
-
- **OSSA Types**: `/Users/flux423/Sites/LLM/agent-buildkit/src/types/ossa.ts`
|
|
1187
|
-
- **OpenAPI Spec**: `/Users/flux423/Sites/LLM/agent-buildkit/openapi/ossa-complete-v0.1.2.yaml`
|
|
1188
|
-
|
|
1189
|
-
---
|
|
1190
|
-
|
|
1191
|
-
## Support
|
|
1192
|
-
|
|
1193
|
-
- **Issues**: [https://github.com/blueflyio/documentation/-/issues](https://github.com/blueflyio/documentation/-/issues)
|
|
1194
|
-
- **BuildKit Repo**: [https://github.com/blueflyio/agent-buildkit](https://github.com/blueflyio/agent-buildkit)
|
|
1195
|
-
- **Wiki**: [https://github.com/blueflyio/documentation/-/wikis/home](https://github.com/blueflyio/documentation/-/wikis/home)
|
|
1196
|
-
|
|
1197
|
-
---
|
|
1198
|
-
|
|
1199
|
-
**Version**: 1.0.0
|
|
1200
|
-
**Last Updated**: 2025-11-10
|
|
1201
|
-
**OSSA Version**: v0.2.2
|
|
1202
|
-
**Maintainer**: BuildKit Team
|