@bluefly/openstandardagents 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/.env.example +41 -0
  2. package/.eslintrc.cjs +43 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +39 -0
  4. package/.github/dependabot.yml +58 -0
  5. package/.github/workflows/ci.yml +154 -0
  6. package/.github/workflows/codeql.yml +41 -0
  7. package/.github/workflows/dependabot-auto-merge.yml +28 -0
  8. package/.github/workflows/release.yml +103 -0
  9. package/.prettierignore +7 -0
  10. package/.prettierrc.json +10 -0
  11. package/.redocly.yaml +9 -0
  12. package/.releaserc.json +84 -0
  13. package/.releaserc.json.disabled +81 -0
  14. package/CHANGELOG.md +152 -0
  15. package/CONTRIBUTING.md +249 -0
  16. package/LICENSE +190 -0
  17. package/README.md +280 -0
  18. package/bin/ossa +8 -0
  19. package/bin/validate-ossa-0.2.2.ts +244 -0
  20. package/dist/di-container.d.ts +18 -0
  21. package/dist/di-container.d.ts.map +1 -0
  22. package/dist/di-container.js +43 -0
  23. package/dist/di-container.js.map +1 -0
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +17 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/repositories/manifest.repository.d.ts +26 -0
  29. package/dist/repositories/manifest.repository.d.ts.map +1 -0
  30. package/dist/repositories/manifest.repository.js +90 -0
  31. package/dist/repositories/manifest.repository.js.map +1 -0
  32. package/dist/repositories/schema.repository.d.ts +30 -0
  33. package/dist/repositories/schema.repository.d.ts.map +1 -0
  34. package/dist/repositories/schema.repository.js +143 -0
  35. package/dist/repositories/schema.repository.js.map +1 -0
  36. package/dist/services/generation.service.d.ts +54 -0
  37. package/dist/services/generation.service.d.ts.map +1 -0
  38. package/dist/services/generation.service.js +298 -0
  39. package/dist/services/generation.service.js.map +1 -0
  40. package/dist/services/migration.service.d.ts +30 -0
  41. package/dist/services/migration.service.d.ts.map +1 -0
  42. package/dist/services/migration.service.js +231 -0
  43. package/dist/services/migration.service.js.map +1 -0
  44. package/dist/services/runtime/openai.adapter.d.ts +94 -0
  45. package/dist/services/runtime/openai.adapter.d.ts.map +1 -0
  46. package/dist/services/runtime/openai.adapter.js +209 -0
  47. package/dist/services/runtime/openai.adapter.js.map +1 -0
  48. package/dist/services/validation.service.d.ts +45 -0
  49. package/dist/services/validation.service.d.ts.map +1 -0
  50. package/dist/services/validation.service.js +362 -0
  51. package/dist/services/validation.service.js.map +1 -0
  52. package/dist/services/validators/anthropic.validator.d.ts +9 -0
  53. package/dist/services/validators/anthropic.validator.d.ts.map +1 -0
  54. package/dist/services/validators/anthropic.validator.js +105 -0
  55. package/dist/services/validators/anthropic.validator.js.map +1 -0
  56. package/dist/services/validators/autogen.validator.d.ts +9 -0
  57. package/dist/services/validators/autogen.validator.d.ts.map +1 -0
  58. package/dist/services/validators/autogen.validator.js +111 -0
  59. package/dist/services/validators/autogen.validator.js.map +1 -0
  60. package/dist/services/validators/crewai.validator.d.ts +9 -0
  61. package/dist/services/validators/crewai.validator.d.ts.map +1 -0
  62. package/dist/services/validators/crewai.validator.js +117 -0
  63. package/dist/services/validators/crewai.validator.js.map +1 -0
  64. package/dist/services/validators/cursor.validator.d.ts +9 -0
  65. package/dist/services/validators/cursor.validator.d.ts.map +1 -0
  66. package/dist/services/validators/cursor.validator.js +88 -0
  67. package/dist/services/validators/cursor.validator.js.map +1 -0
  68. package/dist/services/validators/index.d.ts +15 -0
  69. package/dist/services/validators/index.d.ts.map +1 -0
  70. package/dist/services/validators/index.js +15 -0
  71. package/dist/services/validators/index.js.map +1 -0
  72. package/dist/services/validators/langchain.validator.d.ts +9 -0
  73. package/dist/services/validators/langchain.validator.d.ts.map +1 -0
  74. package/dist/services/validators/langchain.validator.js +103 -0
  75. package/dist/services/validators/langchain.validator.js.map +1 -0
  76. package/dist/services/validators/langflow.validator.d.ts +9 -0
  77. package/dist/services/validators/langflow.validator.d.ts.map +1 -0
  78. package/dist/services/validators/langflow.validator.js +92 -0
  79. package/dist/services/validators/langflow.validator.js.map +1 -0
  80. package/dist/services/validators/langgraph.validator.d.ts +9 -0
  81. package/dist/services/validators/langgraph.validator.d.ts.map +1 -0
  82. package/dist/services/validators/langgraph.validator.js +123 -0
  83. package/dist/services/validators/langgraph.validator.js.map +1 -0
  84. package/dist/services/validators/llamaindex.validator.d.ts +9 -0
  85. package/dist/services/validators/llamaindex.validator.d.ts.map +1 -0
  86. package/dist/services/validators/llamaindex.validator.js +121 -0
  87. package/dist/services/validators/llamaindex.validator.js.map +1 -0
  88. package/dist/services/validators/openai.validator.d.ts +9 -0
  89. package/dist/services/validators/openai.validator.d.ts.map +1 -0
  90. package/dist/services/validators/openai.validator.js +126 -0
  91. package/dist/services/validators/openai.validator.js.map +1 -0
  92. package/dist/services/validators/vercel-ai.validator.d.ts +9 -0
  93. package/dist/services/validators/vercel-ai.validator.d.ts.map +1 -0
  94. package/dist/services/validators/vercel-ai.validator.js +99 -0
  95. package/dist/services/validators/vercel-ai.validator.js.map +1 -0
  96. package/dist/spec/v0.1.9/agent-autonomous-extensions.json +234 -0
  97. package/dist/spec/v0.1.9/ecosystem-compliance.json +235 -0
  98. package/dist/spec/v0.1.9/ossa-v0.1.9.schema.json +695 -0
  99. package/dist/spec/v0.1.9/ossa-v0.1.9.schema.json.backup +695 -0
  100. package/dist/spec/v0.1.9/reasoning-compliance.json +654 -0
  101. package/dist/spec/v0.2.2/kagent-enhancements.json +395 -0
  102. package/dist/spec/v0.2.2/ossa-0.2.2.schema.json +906 -0
  103. package/dist/spec/v0.2.2/ossa-0.2.2.yaml +448 -0
  104. package/dist/spec/v0.2.2/ossa-reasoning-compliance-1.0.schema.json +424 -0
  105. package/dist/spec/v0.2.3/CHANGELOG.md +176 -0
  106. package/dist/spec/v0.2.3/README.md +154 -0
  107. package/dist/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +343 -0
  108. package/dist/spec/v0.2.3/ossa-0.2.3.schema.json +1397 -0
  109. package/dist/spec/v0.2.3/ossa-0.2.3.yaml +448 -0
  110. package/dist/spec/v0.2.4-dev/CHANGELOG.md +403 -0
  111. package/dist/spec/v0.2.4-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  112. package/dist/spec/v0.2.4-dev/ossa-0.2.4-dev.schema.json +1696 -0
  113. package/dist/spec/v0.2.4-dev/ossa-0.2.4-dev.yaml +581 -0
  114. package/dist/spec/v0.2.5-dev/CHANGELOG.md +171 -0
  115. package/dist/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +362 -0
  116. package/dist/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +464 -0
  117. package/dist/spec/v0.2.5-dev/examples/research-team.ossa.yaml +440 -0
  118. package/dist/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +317 -0
  119. package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.schema.json +1732 -0
  120. package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +409 -0
  121. package/dist/types/index.d.ts +178 -0
  122. package/dist/types/index.d.ts.map +1 -0
  123. package/dist/types/index.js +6 -0
  124. package/dist/types/index.js.map +1 -0
  125. package/dist/types/openapi-extensions.d.ts +164 -0
  126. package/dist/types/openapi-extensions.d.ts.map +1 -0
  127. package/dist/types/openapi-extensions.js +6 -0
  128. package/dist/types/openapi-extensions.js.map +1 -0
  129. package/docs/OSSA-COMPLIANT-BADGE.md +248 -0
  130. package/docs/README.md +31 -0
  131. package/docs/VERSIONING.md +284 -0
  132. package/docs/agent-openapi-spec.yml +942 -0
  133. package/docs/getting-started.md +87 -0
  134. package/docs/migration/general-agent-schema.yml +255 -0
  135. package/docs/migration/migration-manifest.json +64 -0
  136. package/docs/openapi-extensions.md +930 -0
  137. package/docs/schemas/openapi-extensions.schema.json +486 -0
  138. package/examples/adk-integration/code-review-workflow.yml +136 -0
  139. package/examples/adk-integration/customer-support.yml +263 -0
  140. package/examples/adk-integration/data-pipeline.yml +173 -0
  141. package/examples/advanced/patterns/compliance-context-production.json +53 -0
  142. package/examples/advanced/patterns/model-router.ts +274 -0
  143. package/examples/advanced/patterns/smart-model-routing.ts +248 -0
  144. package/examples/advanced/workflows/hybrid-model-strategy.yaml +232 -0
  145. package/examples/agent-manifests/critics/critic-agent.yaml +149 -0
  146. package/examples/agent-manifests/governors/governor-agent.yaml +128 -0
  147. package/examples/agent-manifests/integrators/integrator-agent.yaml +103 -0
  148. package/examples/agent-manifests/judges/judge-agent.yaml +153 -0
  149. package/examples/agent-manifests/monitors/monitor-agent.yaml +122 -0
  150. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +247 -0
  151. package/examples/agent-manifests/sample-compliant-agent.yaml +147 -0
  152. package/examples/agent-manifests/workers/worker-agent.yaml +82 -0
  153. package/examples/anthropic/claude-assistant.ossa.json +45 -0
  154. package/examples/architecture/model-configuration/ollama-integration.ts +110 -0
  155. package/examples/autogen/multi-agent.ossa.json +37 -0
  156. package/examples/bridge-configurations.yaml +346 -0
  157. package/examples/bridges/Dockerfile.production +87 -0
  158. package/examples/bridges/__pycache__/aiflow-bridge-enhanced.cpython-313.pyc +0 -0
  159. package/examples/bridges/__pycache__/aiflow-phoenix-tracing.cpython-313.pyc +0 -0
  160. package/examples/bridges/__pycache__/test_aiflow_integration.cpython-313.pyc +0 -0
  161. package/examples/bridges/aiflow-bridge-enhanced.py +462 -0
  162. package/examples/bridges/aiflow-bridge-example.yml +310 -0
  163. package/examples/bridges/aiflow-phoenix-tracing.py +310 -0
  164. package/examples/bridges/aiflow-registration-api.openapi.yml +439 -0
  165. package/examples/bridges/k8s/configmap.yaml +121 -0
  166. package/examples/bridges/k8s/deployment-simple.yaml +34 -0
  167. package/examples/bridges/k8s/deployment.yaml +275 -0
  168. package/examples/bridges/k8s/hpa.yaml +126 -0
  169. package/examples/bridges/k8s/ingress.yaml +155 -0
  170. package/examples/bridges/kagent-bridge-example.yml +94 -0
  171. package/examples/bridges/load-tests/Dockerfile +28 -0
  172. package/examples/bridges/load-tests/k6-load-test.js +302 -0
  173. package/examples/bridges/load-tests/requirements.txt +20 -0
  174. package/examples/bridges/loadtest/k6-scenarios.js +270 -0
  175. package/examples/bridges/phase4/SLO-SLA.yaml +249 -0
  176. package/examples/bridges/phase4/chaos-tests.yaml +226 -0
  177. package/examples/bridges/requirements.txt +24 -0
  178. package/examples/bridges/test_aiflow_integration.py +341 -0
  179. package/examples/common_npm/agent-router.ossa.yaml +182 -0
  180. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +60 -0
  181. package/examples/compliance-agent.yml +155 -0
  182. package/examples/crewai/research-team.ossa.json +36 -0
  183. package/examples/cursor/code-review-agent.ossa.json +47 -0
  184. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +609 -0
  185. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +68 -0
  186. package/examples/enterprise/agent.yml +452 -0
  187. package/examples/extensions/drupal-v1.yml +266 -0
  188. package/examples/extensions/kagent-v1.yml +167 -0
  189. package/examples/getting-started/hello-world-complete.ossa.yaml +266 -0
  190. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +376 -0
  191. package/examples/kagent/README.md +31 -0
  192. package/examples/kagent/compliance-validator.ossa.yaml +111 -0
  193. package/examples/kagent/cost-optimizer.ossa.yaml +93 -0
  194. package/examples/kagent/documentation-agent.ossa.yaml +91 -0
  195. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +269 -0
  196. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +106 -0
  197. package/examples/kagent/k8s-troubleshooter.ossa.yaml +257 -0
  198. package/examples/kagent/security-scanner.ossa.yaml +140 -0
  199. package/examples/langchain/chain-agent.ossa.json +42 -0
  200. package/examples/langflow/workflow-agent.ossa.json +39 -0
  201. package/examples/langgraph/state-machine-agent.ossa.json +59 -0
  202. package/examples/llamaindex/rag-agent.ossa.json +41 -0
  203. package/examples/migration-guides/from-langchain-to-ossa.yaml +309 -0
  204. package/examples/minimal/agent.yml +152 -0
  205. package/examples/minimal/openapi.yaml +95 -0
  206. package/examples/openai/swarm-agent.ossa.json +59 -0
  207. package/examples/openapi-extensions/README.md +87 -0
  208. package/examples/openapi-extensions/minimal-agent-api.openapi.yml +288 -0
  209. package/examples/openapi-extensions/orchestrator-agent-api.openapi.yml +633 -0
  210. package/examples/openapi-extensions/worker-agent-api.openapi.yml +533 -0
  211. package/examples/production/agent.yml +713 -0
  212. package/examples/production/document-analyzer-openai.yml +134 -0
  213. package/examples/quickstart/support-agent.ossa.yaml +59 -0
  214. package/examples/service-registry-usage.ts +423 -0
  215. package/examples/spec-examples/audit-agent.yml +147 -0
  216. package/examples/spec-examples/chat-agent.yml +189 -0
  217. package/examples/spec-examples/compliance-agent.yml +204 -0
  218. package/examples/spec-examples/data-processing-agent.yml +132 -0
  219. package/examples/spec-examples/development-agent.yml +138 -0
  220. package/examples/spec-examples/edge-agent.yml +101 -0
  221. package/examples/spec-examples/integration-agent.yml +129 -0
  222. package/examples/spec-examples/monitoring-agent.yml +130 -0
  223. package/examples/spec-examples/serverless-agent.yml +82 -0
  224. package/examples/spec-examples/workflow-agent.yml +223 -0
  225. package/examples/templates/ossa-compliance.yaml +56 -0
  226. package/examples/typescript/advanced/demo-registry.ts +168 -0
  227. package/examples/typescript/mcpb-agent-example.ts +358 -0
  228. package/examples/vercel/edge-agent.ossa.json +43 -0
  229. package/infrastructure/docker-compose.yml +33 -0
  230. package/junit.xml +1 -0
  231. package/openapi/drupal-agent-api.openapi.yaml +348 -0
  232. package/openapi/gitlab-orchestrator.openapi.yaml +330 -0
  233. package/openapi/helm-generator.openapi.yaml +389 -0
  234. package/openapi/ossa-core-api.openapi.yaml +1448 -0
  235. package/openapi/ossa-registry-api.openapi.yaml +980 -0
  236. package/openapi/ossa-registry.openapi.yaml +782 -0
  237. package/openapi/self-evolving-ecosystem.openapi.yaml +1530 -0
  238. package/openapi/unified-agent-gateway.openapi.yaml +833 -0
  239. package/ossa-website-swarm-tasks.json +105 -0
  240. package/package.json +132 -0
  241. package/release.config.js +64 -0
  242. package/spec/v0.1.9/agent-autonomous-extensions.json +234 -0
  243. package/spec/v0.1.9/ecosystem-compliance.json +235 -0
  244. package/spec/v0.1.9/ossa-v0.1.9.schema.json +695 -0
  245. package/spec/v0.1.9/ossa-v0.1.9.schema.json.backup +695 -0
  246. package/spec/v0.1.9/reasoning-compliance.json +654 -0
  247. package/spec/v0.2.2/kagent-enhancements.json +395 -0
  248. package/spec/v0.2.2/ossa-0.2.2.schema.json +906 -0
  249. package/spec/v0.2.2/ossa-0.2.2.yaml +448 -0
  250. package/spec/v0.2.2/ossa-reasoning-compliance-1.0.schema.json +424 -0
  251. package/spec/v0.2.3/CHANGELOG.md +176 -0
  252. package/spec/v0.2.3/README.md +154 -0
  253. package/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +343 -0
  254. package/spec/v0.2.3/ossa-0.2.3.schema.json +1397 -0
  255. package/spec/v0.2.3/ossa-0.2.3.yaml +448 -0
  256. package/spec/v0.2.4-dev/CHANGELOG.md +403 -0
  257. package/spec/v0.2.4-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  258. package/spec/v0.2.4-dev/ossa-0.2.4-dev.schema.json +1696 -0
  259. package/spec/v0.2.4-dev/ossa-0.2.4-dev.yaml +581 -0
  260. package/spec/v0.2.5-dev/CHANGELOG.md +171 -0
  261. package/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +362 -0
  262. package/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +464 -0
  263. package/spec/v0.2.5-dev/examples/research-team.ossa.yaml +440 -0
  264. package/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +317 -0
  265. package/spec/v0.2.5-dev/ossa-0.2.5-dev.schema.json +1732 -0
  266. package/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +409 -0
  267. package/test-results.xml +1 -0
  268. package/website/.lighthouserc.js +20 -0
  269. package/website/.prettierrc +10 -0
  270. package/website/Dockerfile +17 -0
  271. package/website/app/about/page.tsx +295 -0
  272. package/website/app/api/validate/route.ts +88 -0
  273. package/website/app/blog/[slug]/page.tsx +167 -0
  274. package/website/app/blog/page.tsx +162 -0
  275. package/website/app/docs/[[...slug]]/page.tsx +349 -0
  276. package/website/app/docs/core-concepts/project-structure/page.tsx +349 -0
  277. package/website/app/ecosystem/page.tsx +375 -0
  278. package/website/app/examples/page.tsx +123 -0
  279. package/website/app/globals.css +108 -0
  280. package/website/app/layout.tsx +106 -0
  281. package/website/app/page.tsx +409 -0
  282. package/website/app/playground/page.tsx +507 -0
  283. package/website/app/robots.ts +19 -0
  284. package/website/app/rss.xml/route.ts +74 -0
  285. package/website/app/schema/page.tsx +970 -0
  286. package/website/app/sitemap.ts +56 -0
  287. package/website/app/specification/page.tsx +211 -0
  288. package/website/components/InstallCommand.tsx +96 -0
  289. package/website/components/Logo.tsx +24 -0
  290. package/website/components/StructuredData.tsx +65 -0
  291. package/website/components/docs/DocsSearch.tsx +104 -0
  292. package/website/components/docs/DocsSidebar.tsx +118 -0
  293. package/website/components/docs/MarkdownContent.tsx +183 -0
  294. package/website/components/docs/VersionSelector.tsx +49 -0
  295. package/website/components/examples/ExamplesViewer.tsx +293 -0
  296. package/website/components/layout/Footer.tsx +111 -0
  297. package/website/components/layout/Header.tsx +170 -0
  298. package/website/components/schema/SchemaExplorer.tsx +213 -0
  299. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +285 -0
  300. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +209 -0
  301. package/website/content/blog/introducing-ossa-framework.md +328 -0
  302. package/website/content/blog/ossa-production-results.md +279 -0
  303. package/website/content/blog/welcome-to-ossa.md +43 -0
  304. package/website/content/blog/why-ai-agents-need-open-standard.md +98 -0
  305. package/website/content/docs/00-HOME.md +160 -0
  306. package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +107 -0
  307. package/website/content/docs/OpenAPI-Extensions.md +498 -0
  308. package/website/content/docs/architecture/execution-flow.md +335 -0
  309. package/website/content/docs/architecture/multi-agent-systems.md +737 -0
  310. package/website/content/docs/architecture/overview.md +121 -0
  311. package/website/content/docs/architecture/stack-integration.md +461 -0
  312. package/website/content/docs/changelog.md +246 -0
  313. package/website/content/docs/contributing.md +599 -0
  314. package/website/content/docs/core-concepts/project-structure.md +348 -0
  315. package/website/content/docs/ecosystem/framework-support.md +821 -0
  316. package/website/content/docs/ecosystem/overview.md +366 -0
  317. package/website/content/docs/examples/Migration-Guides.md +214 -0
  318. package/website/content/docs/examples.md +71 -0
  319. package/website/content/docs/for-audiences/Enterprises.md +256 -0
  320. package/website/content/docs/for-audiences/Students-Researchers.md +122 -0
  321. package/website/content/docs/for-audiences/architects.md +224 -0
  322. package/website/content/docs/for-audiences/developers.md +220 -0
  323. package/website/content/docs/getting-started/5-minute-overview.md +85 -0
  324. package/website/content/docs/getting-started/Hello-World.md +184 -0
  325. package/website/content/docs/getting-started/first-agent.md +196 -0
  326. package/website/content/docs/getting-started/installation.md +155 -0
  327. package/website/content/docs/getting-started/running-agents.md +107 -0
  328. package/website/content/docs/integrations/aiflow.md +104 -0
  329. package/website/content/docs/integrations/drupal.md +105 -0
  330. package/website/content/docs/migration-guides/00-index.md +76 -0
  331. package/website/content/docs/migration-guides/README.md +133 -0
  332. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +1750 -0
  333. package/website/content/docs/migration-guides/crewai-to-ossa.md +274 -0
  334. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +2017 -0
  335. package/website/content/docs/migration-guides/index.md +133 -0
  336. package/website/content/docs/migration-guides/langchain-to-ossa.md +1714 -0
  337. package/website/content/docs/migration-guides/langflow-to-ossa.md +2075 -0
  338. package/website/content/docs/migration-guides/openai-to-ossa.md +1202 -0
  339. package/website/content/docs/openapi-extensions/examples.md +550 -0
  340. package/website/content/docs/openapi-extensions/index.md +495 -0
  341. package/website/content/docs/openapi-extensions/operation-extensions.md +398 -0
  342. package/website/content/docs/openapi-extensions/root-extensions.md +364 -0
  343. package/website/content/docs/pre-release/index.md +175 -0
  344. package/website/content/docs/quick-reference.md +17 -0
  345. package/website/content/docs/schema-reference/agent-spec.md +406 -0
  346. package/website/content/docs/schema-reference/autonomy.md +568 -0
  347. package/website/content/docs/schema-reference/constraints.md +543 -0
  348. package/website/content/docs/schema-reference/index.md +176 -0
  349. package/website/content/docs/schema-reference/llm-config.md +445 -0
  350. package/website/content/docs/schema-reference/observability.md +654 -0
  351. package/website/content/docs/schema-reference/ossa-manifest.md +309 -0
  352. package/website/content/docs/schema-reference/taxonomy.md +509 -0
  353. package/website/content/docs/schema-reference/tools.md +628 -0
  354. package/website/content/docs/templates/blog-post.md +43 -0
  355. package/website/content/docs/use-cases/00-index.md +395 -0
  356. package/website/content/docs/use-cases/cicd-code-review.md +1236 -0
  357. package/website/content/docs/use-cases/customer-support.md +1234 -0
  358. package/website/content/docs/use-cases/enterprise-compliance.md +1208 -0
  359. package/website/content/docs/use-cases/research-multi-agent.md +1161 -0
  360. package/website/lib/version.ts +18 -0
  361. package/website/next.config.js +17 -0
  362. package/website/next.config.ts +16 -0
  363. package/website/nginx.conf +32 -0
  364. package/website/package-lock.json +9145 -0
  365. package/website/package.json +53 -0
  366. package/website/postcss.config.js +7 -0
  367. package/website/postcss.config.mjs +9 -0
  368. package/website/scripts/sync-version.js +44 -0
  369. package/website/scripts/sync-wiki.ts +261 -0
  370. package/website/tailwind.config.js +58 -0
  371. package/website/tailwind.config.ts +65 -0
@@ -0,0 +1,274 @@
1
+ /**
2
+ * OSSA Model Router Pattern
3
+ * =========================
4
+ *
5
+ * This example demonstrates the Model Router pattern for OSSA agents, which allows
6
+ * dynamic selection of language models based on task requirements, cost constraints,
7
+ * and performance needs.
8
+ *
9
+ * Key Features:
10
+ * - Dynamic model selection based on task requirements
11
+ * - Cost-aware routing
12
+ * - Performance optimization
13
+ * - Fallback strategies
14
+ *
15
+ * Directory Structure:
16
+ * examples/advanced/patterns/
17
+ * ├── model-router.ts # This file
18
+ * └── README.md # Documentation
19
+ *
20
+ * Prerequisites:
21
+ * - Node.js 18+
22
+ * - TypeScript 5.0+
23
+ * - Ollama running locally (for local models)
24
+ * - API keys for cloud providers (if used)
25
+ *
26
+ * Usage:
27
+ * 1. Install dependencies: `npm install @ossa/core dotenv`
28
+ * 2. Start Ollama: `ollama serve`
29
+ * 3. Pull models: `ollama pull llama3`
30
+ * 4. Run: `npx ts-node model-router.ts`
31
+ */
32
+
33
+ import { Agent, AgentConfig, AgentContext, AgentResponse } from '@ossa/core';
34
+ import dotenv from 'dotenv';
35
+
36
+ dotenv.config();
37
+
38
+ // Define model configurations
39
+ const MODEL_CONFIGS = {
40
+ llama3: {
41
+ provider: 'ollama',
42
+ model: 'llama3',
43
+ costPerToken: 0.000002,
44
+ avgLatencyMs: 1200,
45
+ maxTokens: 8192,
46
+ capabilities: ['text-generation', 'summarization', 'qna'],
47
+ },
48
+ mixtral: {
49
+ provider: 'ollama',
50
+ model: 'mixtral',
51
+ costPerToken: 0.000003,
52
+ avgLatencyMs: 1800,
53
+ maxTokens: 32000,
54
+ capabilities: ['text-generation', 'code', 'reasoning'],
55
+ },
56
+ 'gpt-4': {
57
+ provider: 'openai',
58
+ model: 'gpt-4-turbo',
59
+ costPerToken: 0.00001,
60
+ avgLatencyMs: 2500,
61
+ maxTokens: 128000,
62
+ capabilities: ['text-generation', 'code', 'reasoning', 'vision'],
63
+ },
64
+ 'claude-3-opus': {
65
+ provider: 'anthropic',
66
+ model: 'claude-3-opus-20240229',
67
+ costPerToken: 0.000015,
68
+ avgLatencyMs: 3000,
69
+ maxTokens: 200000,
70
+ capabilities: ['text-generation', 'analysis', 'summarization'],
71
+ },
72
+ };
73
+
74
+ type ModelKey = keyof typeof MODEL_CONFIGS;
75
+
76
+ interface ModelRequest {
77
+ prompt: string;
78
+ context?: Record<string, any>;
79
+ requirements?: {
80
+ maxCostPerToken?: number;
81
+ maxLatencyMs?: number;
82
+ minCapabilities?: string[];
83
+ minContextLength?: number;
84
+ };
85
+ }
86
+
87
+ class ModelRouterAgent extends Agent {
88
+ private models: Record<string, any> = MODEL_CONFIGS;
89
+
90
+ constructor() {
91
+ super({
92
+ name: 'model-router',
93
+ version: '1.0.0',
94
+ description: 'Intelligent model routing for OSSA agents',
95
+ capabilities: [
96
+ 'model-routing',
97
+ 'cost-optimization',
98
+ 'performance-monitoring',
99
+ ],
100
+ });
101
+ }
102
+
103
+ /**
104
+ * Select the best model based on requirements
105
+ */
106
+ private selectModel(
107
+ requirements: ModelRequest['requirements'] = {}
108
+ ): ModelKey {
109
+ const {
110
+ maxCostPerToken = Infinity,
111
+ maxLatencyMs = 5000,
112
+ minCapabilities = [],
113
+ minContextLength = 0,
114
+ } = requirements;
115
+
116
+ // Filter models by requirements
117
+ const suitableModels = Object.entries(this.models)
118
+ .filter(([_, config]) => {
119
+ // Check cost constraints
120
+ if (config.costPerToken > maxCostPerToken) return false;
121
+
122
+ // Check latency constraints
123
+ if (config.avgLatencyMs > maxLatencyMs) return false;
124
+
125
+ // Check context length
126
+ if (config.maxTokens < minContextLength) return false;
127
+
128
+ // Check required capabilities
129
+ return minCapabilities.every((cap) =>
130
+ config.capabilities.includes(cap)
131
+ );
132
+ })
133
+ .sort((a, b) => {
134
+ // Prioritize lower cost, then lower latency
135
+ const costDiff = a[1].costPerToken - b[1].costPerToken;
136
+ if (costDiff !== 0) return costDiff;
137
+ return a[1].avgLatencyMs - b[1].avgLatencyMs;
138
+ });
139
+
140
+ if (suitableModels.length === 0) {
141
+ throw new Error('No suitable models found for the given requirements');
142
+ }
143
+
144
+ return suitableModels[0][0] as ModelKey;
145
+ }
146
+
147
+ /**
148
+ * Process a request using the best available model
149
+ */
150
+ async process(
151
+ request: ModelRequest,
152
+ context: AgentContext
153
+ ): Promise<AgentResponse> {
154
+ try {
155
+ // Select the best model
156
+ const modelKey = this.selectModel(request.requirements);
157
+ const modelConfig = this.models[modelKey];
158
+
159
+ this.logger.info(`Selected model: ${modelKey}`, { model: modelKey });
160
+
161
+ // Process the request with the selected model
162
+ const result = await this.callModel(modelKey, request.prompt, context);
163
+
164
+ return {
165
+ success: true,
166
+ data: {
167
+ response: result,
168
+ model: modelKey,
169
+ metadata: {
170
+ cost: request.prompt.length * modelConfig.costPerToken,
171
+ latency: modelConfig.avgLatencyMs,
172
+ provider: modelConfig.provider,
173
+ },
174
+ },
175
+ };
176
+ } catch (error) {
177
+ this.logger.error('Model routing failed', { error });
178
+ return {
179
+ success: false,
180
+ error: {
181
+ code: 'MODEL_ROUTING_ERROR',
182
+ message: error.message,
183
+ details: error.stack,
184
+ },
185
+ };
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Call the actual model (implementation would vary by provider)
191
+ */
192
+ private async callModel(
193
+ modelKey: string,
194
+ prompt: string,
195
+ context: AgentContext
196
+ ): Promise<string> {
197
+ const model = this.models[modelKey];
198
+
199
+ // In a real implementation, this would call the actual model APIs
200
+ // This is a simplified example
201
+ switch (model.provider) {
202
+ case 'ollama':
203
+ return this.callOllama(model.model, prompt);
204
+ case 'openai':
205
+ return this.callOpenAI(model.model, prompt);
206
+ case 'anthropic':
207
+ return this.callAnthropic(model.model, prompt);
208
+ default:
209
+ throw new Error(`Unsupported provider: ${model.provider}`);
210
+ }
211
+ }
212
+
213
+ // Stub implementations for model providers
214
+ private async callOllama(model: string, prompt: string): Promise<string> {
215
+ // Implementation would call Ollama's API
216
+ return `Response from Ollama (${model}) for prompt: ${prompt.substring(0, 50)}...`;
217
+ }
218
+
219
+ private async callOpenAI(model: string, prompt: string): Promise<string> {
220
+ // Implementation would call OpenAI's API
221
+ return `Response from OpenAI (${model}) for prompt: ${prompt.substring(0, 50)}...`;
222
+ }
223
+
224
+ private async callAnthropic(model: string, prompt: string): Promise<string> {
225
+ // Implementation would call Anthropic's API
226
+ return `Response from Anthropic (${model}) for prompt: ${prompt.substring(0, 50)}...`;
227
+ }
228
+ }
229
+
230
+ // Example usage
231
+ async function main() {
232
+ const router = new ModelRouterAgent();
233
+
234
+ // Example 1: Fast, low-cost response
235
+ const response1 = await router.process(
236
+ {
237
+ prompt: 'Explain quantum computing in simple terms',
238
+ requirements: {
239
+ maxCostPerToken: 0.000005,
240
+ maxLatencyMs: 2000,
241
+ minCapabilities: ['text-generation'],
242
+ },
243
+ },
244
+ {}
245
+ );
246
+
247
+ console.log('Example 1 - Fast, low-cost response:');
248
+ console.log(response1);
249
+
250
+ // Example 2: Complex reasoning with higher budget
251
+ const response2 = await router.process(
252
+ {
253
+ prompt:
254
+ 'Write a detailed analysis of the latest AI safety research papers',
255
+ requirements: {
256
+ maxCostPerToken: 0.00002,
257
+ maxLatencyMs: 10000,
258
+ minCapabilities: ['analysis', 'reasoning'],
259
+ minContextLength: 16000,
260
+ },
261
+ },
262
+ {}
263
+ );
264
+
265
+ console.log('\nExample 2 - Complex analysis:');
266
+ console.log(response2);
267
+ }
268
+
269
+ // Run the example if this file is executed directly
270
+ if (require.main === module) {
271
+ main().catch(console.error);
272
+ }
273
+
274
+ export { ModelRouterAgent };
@@ -0,0 +1,248 @@
1
+ /**
2
+ * OSSA Smart Model Router
3
+ * ========================
4
+ *
5
+ * This example demonstrates an advanced model routing pattern that dynamically selects
6
+ * the most appropriate language model based on task requirements, cost constraints,
7
+ * and performance needs.
8
+ */
9
+
10
+ import { Agent, AgentContext, AgentResponse } from '@ossa/core';
11
+ import axios from 'axios';
12
+ import dotenv from 'dotenv';
13
+
14
+ dotenv.config();
15
+
16
+ // Types and Interfaces
17
+ interface ModelConfig {
18
+ provider: 'ollama' | 'openai' | 'anthropic';
19
+ model: string;
20
+ costPerToken: number;
21
+ avgLatencyMs: number;
22
+ maxTokens: number;
23
+ capabilities: string[];
24
+ baseUrl?: string;
25
+ apiKeyEnv?: string;
26
+ }
27
+
28
+ interface ModelRequest {
29
+ prompt: string;
30
+ context?: Record<string, any>;
31
+ requirements?: {
32
+ maxCostPerToken?: number;
33
+ maxLatencyMs?: number;
34
+ minCapabilities?: string[];
35
+ minContextLength?: number;
36
+ };
37
+ }
38
+
39
+ type ModelKey = keyof typeof MODEL_CONFIGS;
40
+
41
+ // Configuration
42
+ const MODEL_CONFIGS: Record<string, ModelConfig> = {
43
+ llama3: {
44
+ provider: 'ollama',
45
+ model: 'llama3',
46
+ costPerToken: 0.000002,
47
+ avgLatencyMs: 1200,
48
+ maxTokens: 8192,
49
+ capabilities: ['text-generation', 'summarization', 'qna'],
50
+ baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434',
51
+ },
52
+ mixtral: {
53
+ provider: 'ollama',
54
+ model: 'mixtral',
55
+ costPerToken: 0.000003,
56
+ avgLatencyMs: 1800,
57
+ maxTokens: 32000,
58
+ capabilities: ['text-generation', 'code', 'reasoning'],
59
+ baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434',
60
+ },
61
+ 'gpt-4': {
62
+ provider: 'openai',
63
+ model: 'gpt-4-turbo',
64
+ costPerToken: 0.00001,
65
+ avgLatencyMs: 2500,
66
+ maxTokens: 128000,
67
+ capabilities: ['text-generation', 'code', 'reasoning', 'vision'],
68
+ apiKeyEnv: 'OPENAI_API_KEY',
69
+ },
70
+ 'claude-3-opus': {
71
+ provider: 'anthropic',
72
+ model: 'claude-3-opus-20240229',
73
+ costPerToken: 0.000015,
74
+ avgLatencyMs: 3000,
75
+ maxTokens: 200000,
76
+ capabilities: ['text-generation', 'analysis', 'summarization'],
77
+ apiKeyEnv: 'ANTHROPIC_API_KEY',
78
+ },
79
+ };
80
+
81
+ class SmartModelRouter extends Agent {
82
+ private models: Record<string, ModelConfig> = MODEL_CONFIGS;
83
+ private http = axios.create();
84
+
85
+ constructor() {
86
+ super({
87
+ name: 'smart-model-router',
88
+ version: '1.0.0',
89
+ description: 'Intelligent model routing for OSSA agents',
90
+ capabilities: [
91
+ 'model-routing',
92
+ 'cost-optimization',
93
+ 'performance-monitoring',
94
+ 'fallback-handling',
95
+ ],
96
+ });
97
+ }
98
+
99
+ /**
100
+ * Process a request using the best available model
101
+ */
102
+ async process(
103
+ request: ModelRequest,
104
+ context: AgentContext = {}
105
+ ): Promise<AgentResponse> {
106
+ try {
107
+ // Select the best model based on requirements
108
+ const modelKey = this.selectModel(request.requirements);
109
+ const modelConfig = this.models[modelKey];
110
+
111
+ this.logger.info(`Routing to ${modelKey} (${modelConfig.provider})`);
112
+
113
+ // Process the request using the selected model
114
+ const startTime = Date.now();
115
+ const response = await this.routeToModel(modelKey, request, context);
116
+ const latency = Date.now() - startTime;
117
+
118
+ return {
119
+ success: true,
120
+ data: {
121
+ model: modelKey,
122
+ response,
123
+ metadata: {
124
+ provider: modelConfig.provider,
125
+ latency,
126
+ cost: this.calculateCost(
127
+ response.usage?.total_tokens || 0,
128
+ modelConfig
129
+ ),
130
+ tokens: response.usage?.total_tokens || 0,
131
+ },
132
+ },
133
+ };
134
+ } catch (error) {
135
+ this.logger.error('Error processing request:', error);
136
+ return {
137
+ success: false,
138
+ error: error instanceof Error ? error.message : 'Unknown error',
139
+ };
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Select the best model based on requirements
145
+ */
146
+ private selectModel(
147
+ requirements: ModelRequest['requirements'] = {}
148
+ ): ModelKey {
149
+ const {
150
+ maxCostPerToken = Infinity,
151
+ maxLatencyMs = 5000,
152
+ minCapabilities = [],
153
+ minContextLength = 0,
154
+ } = requirements;
155
+
156
+ // Filter models by requirements
157
+ const suitableModels = Object.entries(this.models)
158
+ .filter(([_, config]) => {
159
+ // Check cost constraints
160
+ if (config.costPerToken > maxCostPerToken) return false;
161
+
162
+ // Check latency constraints
163
+ if (config.avgLatencyMs > maxLatencyMs) return false;
164
+
165
+ // Check context length
166
+ if (config.maxTokens < minContextLength) return false;
167
+
168
+ // Check API key availability for cloud providers
169
+ if (config.apiKeyEnv && !process.env[config.apiKeyEnv]) {
170
+ this.logger.warn(`Skipping ${config.model} - missing API key`);
171
+ return false;
172
+ }
173
+
174
+ // Check required capabilities
175
+ return minCapabilities.every((cap) =>
176
+ config.capabilities.includes(cap)
177
+ );
178
+ })
179
+ .sort((a, b) => {
180
+ // Prioritize lower cost, then lower latency
181
+ const costDiff = a[1].costPerToken - b[1].costPerToken;
182
+ if (costDiff !== 0) return costDiff;
183
+ return a[1].avgLatencyMs - b[1].avgLatencyMs;
184
+ });
185
+
186
+ if (suitableModels.length === 0) {
187
+ throw new Error('No suitable models found for the given requirements');
188
+ }
189
+
190
+ return suitableModels[0][0] as ModelKey;
191
+ }
192
+
193
+ /**
194
+ * Route the request to the appropriate model provider
195
+ */
196
+ private async routeToModel(
197
+ modelKey: string,
198
+ request: ModelRequest,
199
+ context: AgentContext = {}
200
+ ): Promise<any> {
201
+ const model = this.models[modelKey];
202
+
203
+ try {
204
+ switch (model.provider) {
205
+ case 'ollama':
206
+ return await this.callOllama(model, request);
207
+ case 'openai':
208
+ return await this.callOpenAI(model, request);
209
+ case 'anthropic':
210
+ return await this.callAnthropic(model, request);
211
+ default:
212
+ throw new Error(`Unsupported provider: ${model.provider}`);
213
+ }
214
+ } catch (error) {
215
+ this.logger.error(`Error calling ${model.provider}:`, error);
216
+ throw error;
217
+ }
218
+ }
219
+
220
+ /**
221
+ * Calculate cost based on token usage
222
+ */
223
+ private calculateCost(tokenCount: number, modelConfig: ModelConfig): number {
224
+ return (tokenCount * modelConfig.costPerToken) / 1000; // Convert to cost per 1k tokens
225
+ }
226
+
227
+ // Provider-specific implementations will be added in the next step
228
+ private async callOllama(
229
+ model: ModelConfig,
230
+ request: ModelRequest
231
+ ): Promise<any> {
232
+ throw new Error('Not implemented');
233
+ }
234
+
235
+ private async callOpenAI(
236
+ model: ModelConfig,
237
+ request: ModelRequest
238
+ ): Promise<any> {
239
+ throw new Error('Not implemented');
240
+ }
241
+
242
+ private async callAnthropic(
243
+ model: ModelConfig,
244
+ request: ModelRequest
245
+ ): Promise<any> {
246
+ throw new Error('Not implemented');
247
+ }
248
+ }