@bluefly/openstandardagents 0.2.7 → 0.2.9

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