@bluefly/openstandardagents 0.2.7 → 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.
Files changed (277) hide show
  1. package/.devfile.yaml +1 -1
  2. package/.env.example +1 -1
  3. package/.version.json +2 -2
  4. package/.wiki-config.json +24 -0
  5. package/CHANGELOG.md +11 -18
  6. package/CODEOWNERS +75 -0
  7. package/CONTRIBUTING.md +1 -1
  8. package/README.md +171 -243
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/repositories/schema.repository.d.ts +6 -1
  14. package/dist/repositories/schema.repository.d.ts.map +1 -1
  15. package/dist/repositories/schema.repository.js +49 -27
  16. package/dist/repositories/schema.repository.js.map +1 -1
  17. package/dist/services/migration.service.d.ts +4 -3
  18. package/dist/services/migration.service.d.ts.map +1 -1
  19. package/dist/services/migration.service.js +11 -10
  20. package/dist/services/migration.service.js.map +1 -1
  21. package/dist/services/release-automation/release.service.js +1 -1
  22. package/dist/services/release-automation/release.service.js.map +1 -1
  23. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  24. package/dist/services/runtime/claude/claude-adapter.js +1 -1
  25. package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
  26. package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
  27. package/dist/spec/v0.2.8/README.md +72 -0
  28. package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  29. package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  30. package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  31. package/{spec/v0.2.6-dev/ossa-0.2.5.schema.json → dist/spec/v0.2.8/ossa-0.2.8.schema.json} +1509 -52
  32. package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  33. package/dist/types/index.d.ts +3 -2
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/utils/index.d.ts +6 -0
  36. package/dist/utils/index.d.ts.map +1 -0
  37. package/dist/utils/index.js +6 -0
  38. package/dist/utils/index.js.map +1 -0
  39. package/dist/utils/version.d.ts +68 -0
  40. package/dist/utils/version.d.ts.map +1 -0
  41. package/dist/utils/version.js +156 -0
  42. package/dist/utils/version.js.map +1 -0
  43. package/eslint-report.json +1 -0
  44. package/examples/adk-integration/code-review-workflow.yml +1 -1
  45. package/examples/adk-integration/customer-support.yml +1 -1
  46. package/examples/adk-integration/data-pipeline.yml +1 -1
  47. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  48. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  49. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  50. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  51. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  52. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  53. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  54. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  55. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  56. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  57. package/examples/autogen/multi-agent.ossa.json +1 -1
  58. package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
  59. package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
  60. package/examples/common_npm/agent-router.ossa.yaml +1 -0
  61. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  62. package/examples/crewai/research-team.ossa.json +1 -1
  63. package/examples/cursor/code-review-agent.ossa.json +1 -1
  64. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
  65. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  66. package/examples/extensions/drupal-v1.yml +1 -1
  67. package/examples/extensions/kagent-v1.yml +1 -1
  68. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  69. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  70. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  71. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  72. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  73. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
  74. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  75. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  76. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  77. package/examples/langchain/chain-agent.ossa.json +1 -1
  78. package/examples/langflow/workflow-agent.ossa.json +1 -1
  79. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  80. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  81. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  82. package/examples/multi-agent/README.md +74 -0
  83. package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
  84. package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
  85. package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
  86. package/examples/openai/basic-agent.ossa.yaml +1 -1
  87. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  88. package/examples/openai/swarm-agent.ossa.json +1 -1
  89. package/examples/production/document-analyzer-openai.yml +1 -1
  90. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  91. package/examples/spec-examples/audit-agent.yml +1 -1
  92. package/examples/spec-examples/chat-agent.yml +1 -1
  93. package/examples/spec-examples/compliance-agent.yml +1 -1
  94. package/examples/spec-examples/monitoring-agent.yml +1 -1
  95. package/examples/spec-examples/workflow-agent.yml +1 -1
  96. package/examples/templates/ossa-compliance.yaml +1 -1
  97. package/examples/vercel/edge-agent.ossa.json +1 -1
  98. package/gl-code-quality-report.json +62 -0
  99. package/llms-ctx-full.txt +39 -0
  100. package/llms-ctx.txt +39 -0
  101. package/llms.txt +47 -0
  102. package/package.json +3 -2
  103. package/scripts/eslint-to-codequality.cjs +34 -0
  104. package/scripts/generate-llms-ctx.sh +17 -0
  105. package/scripts/generate-schema-docs.ts +31 -10
  106. package/scripts/sync-version.js +4 -12
  107. package/scripts/validate-schema.ts +2 -1
  108. package/spec/v0.2.8/CHANGELOG.md +401 -0
  109. package/spec/v0.2.8/README.md +72 -0
  110. package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  111. package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  112. package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  113. package/{dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json → spec/v0.2.8/ossa-0.2.8.schema.json} +1509 -52
  114. package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  115. package/test-results/junit.xml +299 -0
  116. package/bin/validate-ossa-0.2.5-RC.ts +0 -244
  117. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
  118. package/scripts/lib/exec.ts +0 -37
  119. package/scripts/lib/file-ops.ts +0 -58
  120. package/scripts/lib/version.ts +0 -83
  121. package/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
  122. package/website/.lighthouserc.ts +0 -24
  123. package/website/.prettierrc +0 -10
  124. package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +0 -445
  125. package/website/Dockerfile +0 -30
  126. package/website/app/about/page.tsx +0 -304
  127. package/website/app/blog/[slug]/page.tsx +0 -208
  128. package/website/app/blog/page.tsx +0 -249
  129. package/website/app/design-guide/page.tsx +0 -511
  130. package/website/app/docs/[[...slug]]/page.tsx +0 -847
  131. package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
  132. package/website/app/ecosystem/page.tsx +0 -410
  133. package/website/app/examples/page.tsx +0 -133
  134. package/website/app/globals.scss +0 -370
  135. package/website/app/layout.tsx +0 -106
  136. package/website/app/license/page.tsx +0 -183
  137. package/website/app/not-found.tsx +0 -18
  138. package/website/app/page.tsx +0 -686
  139. package/website/app/page.tsx.bak +0 -679
  140. package/website/app/page.tsx.bak2 +0 -649
  141. package/website/app/playground/page.tsx +0 -487
  142. package/website/app/robots.ts +0 -19
  143. package/website/app/rss.xml/route.ts +0 -74
  144. package/website/app/schema/page.tsx +0 -1001
  145. package/website/app/sitemap.ts +0 -56
  146. package/website/app/specification/page.tsx +0 -287
  147. package/website/components/InstallCommand.tsx +0 -96
  148. package/website/components/Logo.tsx +0 -97
  149. package/website/components/StructuredData.tsx +0 -65
  150. package/website/components/docs/DocsSearch.tsx +0 -104
  151. package/website/components/docs/DocsSidebar.tsx +0 -155
  152. package/website/components/docs/MarkdownContent.tsx +0 -401
  153. package/website/components/docs/VersionSelector.tsx +0 -105
  154. package/website/components/examples/ExamplesViewer.tsx +0 -293
  155. package/website/components/layout/Footer.tsx +0 -116
  156. package/website/components/layout/Header.tsx +0 -172
  157. package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
  158. package/website/components/schema/SchemaExplorer.tsx +0 -213
  159. package/website/components/ui/Badge.tsx +0 -82
  160. package/website/components/ui/Button.tsx +0 -116
  161. package/website/components/ui/Card.tsx +0 -167
  162. package/website/components/ui/Checkbox.tsx +0 -141
  163. package/website/components/ui/Input.tsx +0 -169
  164. package/website/components/ui/Radio.tsx +0 -141
  165. package/website/components/ui/Select.tsx +0 -182
  166. package/website/components/ui/Tag.tsx +0 -158
  167. package/website/components/ui/Textarea.tsx +0 -195
  168. package/website/components/ui/index.ts +0 -11
  169. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
  170. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
  171. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
  172. package/website/content/blog/introducing-ossa-framework.md +0 -328
  173. package/website/content/blog/ossa-production-results.md +0 -279
  174. package/website/content/blog/welcome-to-ossa.md +0 -43
  175. package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
  176. package/website/content/docs/00-home.md +0 -153
  177. package/website/content/docs/adapters/openai-adapter.md +0 -693
  178. package/website/content/docs/agents/catalog.md +0 -28
  179. package/website/content/docs/aiflow-framework-integration-with-ossa.md +0 -107
  180. package/website/content/docs/api-reference/index.md +0 -38
  181. package/website/content/docs/api-reference/ossa-core-api.md +0 -634
  182. package/website/content/docs/api-reference/ossa-registry-api.md +0 -515
  183. package/website/content/docs/api-reference/unified-agent-gateway.md +0 -599
  184. package/website/content/docs/architecture/execution-flow.md +0 -335
  185. package/website/content/docs/architecture/multi-agent-systems.md +0 -737
  186. package/website/content/docs/architecture/overview.md +0 -121
  187. package/website/content/docs/architecture/stack-integration.md +0 -461
  188. package/website/content/docs/changelog.md +0 -246
  189. package/website/content/docs/cli-reference/index.md +0 -111
  190. package/website/content/docs/cli-reference/ossa-agents.md +0 -70
  191. package/website/content/docs/cli-reference/ossa-export.md +0 -56
  192. package/website/content/docs/cli-reference/ossa-generate.md +0 -66
  193. package/website/content/docs/cli-reference/ossa-gitlab-agent.md +0 -57
  194. package/website/content/docs/cli-reference/ossa-import.md +0 -56
  195. package/website/content/docs/cli-reference/ossa-init.md +0 -57
  196. package/website/content/docs/cli-reference/ossa-migrate.md +0 -62
  197. package/website/content/docs/cli-reference/ossa-run.md +0 -66
  198. package/website/content/docs/cli-reference/ossa-schema.md +0 -57
  199. package/website/content/docs/cli-reference/ossa-setup.md +0 -57
  200. package/website/content/docs/cli-reference/ossa-validate.md +0 -66
  201. package/website/content/docs/configuration/index.md +0 -97
  202. package/website/content/docs/contributing.md +0 -599
  203. package/website/content/docs/deployment/github-mirroring.md +0 -924
  204. package/website/content/docs/documentation.md +0 -100
  205. package/website/content/docs/ecosystem/framework-support.md +0 -1361
  206. package/website/content/docs/ecosystem/overview.md +0 -366
  207. package/website/content/docs/errors/index.md +0 -10
  208. package/website/content/docs/examples/aiflow-framework-integration-with-ossa.md +0 -107
  209. package/website/content/docs/examples/catalog.md +0 -300
  210. package/website/content/docs/for-audiences/students-researchers.md +0 -122
  211. package/website/content/docs/getting-started/index.md +0 -92
  212. package/website/content/docs/getting-started/installation.md +0 -155
  213. package/website/content/docs/getting-started/running-agents.md +0 -309
  214. package/website/content/docs/getting-started.md +0 -91
  215. package/website/content/docs/integrations/aiflow.md +0 -104
  216. package/website/content/docs/integrations/drupal.md +0 -105
  217. package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
  218. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
  219. package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
  220. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
  221. package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
  222. package/website/content/docs/migration-guides/index.md +0 -133
  223. package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
  224. package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
  225. package/website/content/docs/migration-guides/migration-manifest.json +0 -64
  226. package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
  227. package/website/content/docs/openapi-extensions/examples.md +0 -550
  228. package/website/content/docs/openapi-extensions/index.md +0 -551
  229. package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
  230. package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
  231. package/website/content/docs/ossa-compliant-badge.md +0 -251
  232. package/website/content/docs/pre-release/index.md +0 -175
  233. package/website/content/docs/quick-reference.md +0 -17
  234. package/website/content/docs/readme.md +0 -35
  235. package/website/content/docs/releases/v0.2.6.md +0 -99
  236. package/website/content/docs/schema-reference/agent-capabilities.md +0 -50
  237. package/website/content/docs/schema-reference/agent-id.md +0 -52
  238. package/website/content/docs/schema-reference/agent-name.md +0 -50
  239. package/website/content/docs/schema-reference/agent-role.md +0 -54
  240. package/website/content/docs/schema-reference/agent-spec.md +0 -406
  241. package/website/content/docs/schema-reference/agent-version.md +0 -50
  242. package/website/content/docs/schema-reference/autonomy.md +0 -568
  243. package/website/content/docs/schema-reference/constraints.md +0 -543
  244. package/website/content/docs/schema-reference/index.md +0 -45
  245. package/website/content/docs/schema-reference/llm-config.md +0 -445
  246. package/website/content/docs/schema-reference/observability.md +0 -654
  247. package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
  248. package/website/content/docs/schema-reference/taxonomy.md +0 -509
  249. package/website/content/docs/schema-reference/tools.md +0 -628
  250. package/website/content/docs/templates/blog-post.md +0 -43
  251. package/website/content/docs/types-reference/index.md +0 -105
  252. package/website/content/docs/use-cases/00-index.md +0 -395
  253. package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
  254. package/website/content/docs/use-cases/customer-support.md +0 -1234
  255. package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
  256. package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
  257. package/website/content/docs/versioning.md +0 -288
  258. package/website/dev.sh +0 -53
  259. package/website/docker-compose.dev.yml +0 -36
  260. package/website/lib/version.ts +0 -35
  261. package/website/lib/versions.json +0 -103
  262. package/website/next.config.ts +0 -18
  263. package/website/nginx.conf +0 -32
  264. package/website/package-lock.json +0 -9679
  265. package/website/package.json +0 -59
  266. package/website/postcss.config.mjs +0 -9
  267. package/website/scripts/fetch-versions.js +0 -166
  268. package/website/scripts/generate-examples-index.js +0 -163
  269. package/website/scripts/merge-docs-to-wiki.ts +0 -207
  270. package/website/scripts/sync-version.js +0 -72
  271. package/website/scripts/sync-wiki.ts +0 -322
  272. package/website/scripts/upload-wiki.ts +0 -199
  273. package/website/styles/_spacing.scss +0 -453
  274. package/website/styles/_tokens.scss +0 -245
  275. package/website/styles/_typography.scss +0 -361
  276. package/website/styles/_variables.scss +0 -287
  277. package/website/tailwind.config.ts +0 -170
@@ -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