@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,162 @@
1
+ import Link from 'next/link';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import matter from 'gray-matter';
5
+
6
+ interface BlogPost {
7
+ slug: string;
8
+ title: string;
9
+ date: string;
10
+ author: string;
11
+ category: string;
12
+ tags: string[];
13
+ excerpt: string;
14
+ }
15
+
16
+ const blogDirectory = path.join(process.cwd(), 'content/blog');
17
+
18
+ function getAllBlogPosts(): BlogPost[] {
19
+ const fileNames = fs.readdirSync(blogDirectory);
20
+ const posts = fileNames
21
+ .filter(fileName => fileName.endsWith('.md'))
22
+ .map(fileName => {
23
+ const slug = fileName.replace(/\.md$/, '');
24
+ const fullPath = path.join(blogDirectory, fileName);
25
+ const fileContents = fs.readFileSync(fullPath, 'utf8');
26
+ const { data } = matter(fileContents);
27
+
28
+ return {
29
+ slug,
30
+ title: data.title || slug,
31
+ date: data.date || new Date().toISOString(),
32
+ author: data.author || 'OSSA Team',
33
+ category: data.category || 'General',
34
+ tags: data.tags || [],
35
+ excerpt: data.excerpt || '',
36
+ };
37
+ })
38
+ .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
39
+
40
+ return posts;
41
+ }
42
+
43
+ export default function BlogPage() {
44
+ const posts = getAllBlogPosts();
45
+
46
+ // Featured post - OpenAPI AI Agents Standard
47
+ const featuredSlug = 'openapi-ai-agents-standard';
48
+ const featuredPost = posts.find(p => p.slug.toLowerCase().includes(featuredSlug) || p.slug.toLowerCase().includes('openapi'));
49
+ const otherPosts = posts.filter(p => p.slug !== featuredPost?.slug);
50
+
51
+ return (
52
+ <div className="min-h-screen bg-gray-50">
53
+ {/* Hero Section */}
54
+ <div className="bg-gradient-to-br from-primary via-blue-600 to-secondary text-white py-20 px-4">
55
+ <div className="container mx-auto max-w-6xl">
56
+ <h1 className="text-5xl font-bold mb-6">OSSA Blog</h1>
57
+ <p className="text-xl opacity-90 max-w-3xl">
58
+ Insights, research, and updates on the open standard for AI agents
59
+ </p>
60
+ </div>
61
+ </div>
62
+
63
+ {/* Featured Post */}
64
+ {featuredPost && (
65
+ <div className="container mx-auto max-w-6xl px-4 -mt-10">
66
+ <Link
67
+ href={`/blog/${featuredPost.slug}`}
68
+ className="block bg-white rounded-xl shadow-xl hover:shadow-2xl transition-all duration-300 overflow-hidden"
69
+ >
70
+ <div className="p-8 md:p-12">
71
+ <div className="flex items-center gap-3 mb-4">
72
+ <span className="inline-block px-3 py-1 text-xs font-semibold text-white bg-primary rounded-full">
73
+ Featured
74
+ </span>
75
+ <span className="inline-block px-3 py-1 text-xs font-semibold text-primary bg-blue-100 rounded-full">
76
+ {featuredPost.category}
77
+ </span>
78
+ </div>
79
+
80
+ <h2 className="text-3xl md:text-4xl font-bold mb-4 text-gray-900 hover:text-primary transition-colors">
81
+ {featuredPost.title}
82
+ </h2>
83
+
84
+ <p className="text-lg text-gray-600 mb-6 max-w-4xl">
85
+ {featuredPost.excerpt}
86
+ </p>
87
+
88
+ <div className="flex items-center justify-between">
89
+ <div className="flex items-center gap-4 text-sm text-gray-500">
90
+ <span className="font-medium">{featuredPost.author}</span>
91
+ <span>•</span>
92
+ <span>{new Date(featuredPost.date).toLocaleDateString('en-US', {
93
+ year: 'numeric',
94
+ month: 'long',
95
+ day: 'numeric'
96
+ })}</span>
97
+ </div>
98
+ <span className="text-primary font-medium">Read article →</span>
99
+ </div>
100
+ </div>
101
+ </Link>
102
+ </div>
103
+ )}
104
+
105
+ {/* Blog Posts Grid */}
106
+ <div className="container mx-auto max-w-6xl px-4 py-16">
107
+ <h2 className="text-2xl font-bold mb-8 text-gray-900">Latest Posts</h2>
108
+ <div className="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
109
+ {otherPosts.map((post) => (
110
+ <Link
111
+ key={post.slug}
112
+ href={`/blog/${post.slug}`}
113
+ className="glass-card p-6 rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 block"
114
+ >
115
+ <div className="mb-4">
116
+ <span className="inline-block px-3 py-1 text-xs font-semibold text-primary bg-blue-100 rounded-full">
117
+ {post.category}
118
+ </span>
119
+ </div>
120
+
121
+ <h2 className="text-2xl font-bold mb-3 text-gray-900 hover:text-primary transition-colors">
122
+ {post.title}
123
+ </h2>
124
+
125
+ <p className="text-gray-600 mb-4 line-clamp-3">
126
+ {post.excerpt}
127
+ </p>
128
+
129
+ <div className="flex items-center justify-between text-sm text-gray-500">
130
+ <span>{post.author}</span>
131
+ <span>{new Date(post.date).toLocaleDateString('en-US', {
132
+ year: 'numeric',
133
+ month: 'long',
134
+ day: 'numeric'
135
+ })}</span>
136
+ </div>
137
+
138
+ {post.tags.length > 0 && (
139
+ <div className="mt-4 flex flex-wrap gap-2">
140
+ {post.tags.map((tag) => (
141
+ <span
142
+ key={tag}
143
+ className="text-xs px-2 py-1 bg-gray-100 text-gray-600 rounded"
144
+ >
145
+ {tag}
146
+ </span>
147
+ ))}
148
+ </div>
149
+ )}
150
+ </Link>
151
+ ))}
152
+ </div>
153
+
154
+ {otherPosts.length === 0 && !featuredPost && (
155
+ <div className="text-center py-12">
156
+ <p className="text-gray-500 text-lg">No blog posts yet. Check back soon!</p>
157
+ </div>
158
+ )}
159
+ </div>
160
+ </div>
161
+ );
162
+ }
@@ -0,0 +1,349 @@
1
+ import { notFound } from 'next/navigation';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import matter from 'gray-matter';
5
+ import { DocsSidebar } from '@/components/docs/DocsSidebar';
6
+ import { MarkdownContent } from '@/components/docs/MarkdownContent';
7
+
8
+ interface PageProps {
9
+ params: Promise<{
10
+ slug?: string[];
11
+ }>;
12
+ }
13
+
14
+ const docsDirectory = path.join(process.cwd(), 'content/docs');
15
+
16
+ function getDocContent(slug: string[]): { content: string; metadata: any } | null {
17
+ // Convert URL slug to PascalCase for legacy wiki files
18
+ const slugPath = slug.map(s =>
19
+ s.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('-')
20
+ );
21
+
22
+ // Try different path patterns - lowercase first (new convention), then PascalCase (legacy)
23
+ const possiblePaths = [
24
+ // Lowercase paths (current convention)
25
+ path.join(docsDirectory, ...slug) + '.md',
26
+ path.join(docsDirectory, ...slug, 'index.md'),
27
+ path.join(docsDirectory, ...slug, 'readme.md'),
28
+ // PascalCase paths (legacy wiki structure)
29
+ path.join(docsDirectory, ...slugPath) + '.md',
30
+ path.join(docsDirectory, ...slugPath, 'index.md'),
31
+ path.join(docsDirectory, ...slugPath, 'README.md'),
32
+ ];
33
+
34
+ let fullPath = null;
35
+ for (const tryPath of possiblePaths) {
36
+ if (fs.existsSync(tryPath)) {
37
+ fullPath = tryPath;
38
+ break;
39
+ }
40
+ }
41
+
42
+ if (!fullPath) {
43
+ return null;
44
+ }
45
+
46
+ const fileContents = fs.readFileSync(fullPath, 'utf8');
47
+ const { data, content } = matter(fileContents);
48
+
49
+ // Extract title from frontmatter or generate from slug
50
+ const title = data.title || slug[slug.length - 1]
51
+ .split('-')
52
+ .map(w => w.charAt(0).toUpperCase() + w.slice(1))
53
+ .join(' ');
54
+
55
+ return {
56
+ content,
57
+ metadata: {
58
+ title,
59
+ description: data.description,
60
+ },
61
+ };
62
+ }
63
+
64
+ function getAllDocPaths(): string[][] {
65
+ const paths: string[][] = [];
66
+
67
+ function traverseDir(dir: string, currentPath: string[] = []): void {
68
+ if (!fs.existsSync(dir)) {
69
+ return;
70
+ }
71
+
72
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
73
+
74
+ for (const entry of entries) {
75
+ if (entry.isDirectory()) {
76
+ traverseDir(path.join(dir, entry.name), [...currentPath, entry.name]);
77
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
78
+ const slug = entry.name.replace(/\.md$/, '');
79
+ if (slug !== 'index') {
80
+ paths.push([...currentPath, slug]);
81
+ } else if (currentPath.length > 0) {
82
+ paths.push(currentPath);
83
+ }
84
+ }
85
+ }
86
+ }
87
+
88
+ traverseDir(docsDirectory);
89
+ return paths;
90
+ }
91
+
92
+ // Comment out for dev mode - re-enable for production build
93
+ // export const dynamic = 'force-static';
94
+ // export const dynamicParams = false;
95
+
96
+ export async function generateStaticParams() {
97
+ const paths = getAllDocPaths();
98
+ // Convert paths to lowercase for URL matching
99
+ // Return root docs page as empty array (not undefined!), plus all other paths
100
+ return [
101
+ { slug: [] },
102
+ ...paths.map((slugParts) => ({
103
+ slug: slugParts.map(part => part.toLowerCase()),
104
+ }))
105
+ ];
106
+ }
107
+
108
+ export default async function DocsPage({ params }: PageProps) {
109
+ const { slug: slugParam } = await params;
110
+ const slug = slugParam || [];
111
+
112
+ // Handle root /docs route - CLEAN, PROFESSIONAL DESIGN
113
+ if (slug.length === 0) {
114
+ return (
115
+ <div className="min-h-screen bg-white">
116
+ {/* Simple Header - no gradient */}
117
+ <div className="border-b border-gray-200 bg-white">
118
+ <div className="container mx-auto max-w-6xl px-4 py-12">
119
+ <h1 className="text-4xl font-bold text-gray-900 mb-3">Documentation</h1>
120
+ <p className="text-xl text-gray-600">
121
+ Build portable, framework-agnostic AI agents with OSSA
122
+ </p>
123
+ </div>
124
+ </div>
125
+
126
+ {/* Main Content */}
127
+ <div className="container mx-auto max-w-6xl px-4 py-12">
128
+
129
+ {/* Quick Start - Clean and Simple */}
130
+ <section className="mb-16">
131
+ <div className="bg-blue-50 border border-blue-200 rounded-lg p-6">
132
+ <div className="flex items-start gap-4">
133
+ <div className="text-blue-600 mt-1">
134
+ <svg className="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
135
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
136
+ </svg>
137
+ </div>
138
+ <div>
139
+ <h3 className="text-lg font-semibold text-gray-900 mb-2">Quick Start</h3>
140
+ <p className="text-gray-700 mb-3">
141
+ New to OSSA? Start with the 5-minute overview, then build your first agent.
142
+ </p>
143
+ <div className="flex gap-4">
144
+ <a href="/docs/getting-started/5-minute-overview" className="text-blue-600 hover:text-blue-700 font-medium text-sm">
145
+ 5-Minute Overview →
146
+ </a>
147
+ <a href="/docs/getting-started/hello-world" className="text-blue-600 hover:text-blue-700 font-medium text-sm">
148
+ Hello World →
149
+ </a>
150
+ </div>
151
+ </div>
152
+ </div>
153
+ </div>
154
+ </section>
155
+
156
+ {/* Core Sections - Simple Grid */}
157
+ <section className="mb-16">
158
+ <h2 className="text-2xl font-bold text-gray-900 mb-6">Core Documentation</h2>
159
+ <div className="grid md:grid-cols-3 gap-6">
160
+
161
+ {/* Getting Started */}
162
+ <div className="border border-gray-200 rounded-lg p-6 hover:border-gray-300 hover:shadow-sm transition-all">
163
+ <h3 className="text-lg font-semibold text-gray-900 mb-3">Getting Started</h3>
164
+ <ul className="space-y-2.5 text-sm">
165
+ <li>
166
+ <a href="/docs/getting-started/5-minute-overview" className="text-blue-600 hover:text-blue-700">
167
+ 5-Minute Overview
168
+ </a>
169
+ </li>
170
+ <li>
171
+ <a href="/docs/getting-started/hello-world" className="text-blue-600 hover:text-blue-700">
172
+ Hello World
173
+ </a>
174
+ </li>
175
+ <li>
176
+ <a href="/docs/getting-started/first-agent" className="text-blue-600 hover:text-blue-700">
177
+ Your First Agent
178
+ </a>
179
+ </li>
180
+ <li>
181
+ <a href="/docs/core-concepts/project-structure" className="text-blue-600 hover:text-blue-700">
182
+ Project Structure
183
+ </a>
184
+ </li>
185
+ </ul>
186
+ </div>
187
+
188
+ {/* API Reference */}
189
+ <div className="border border-gray-200 rounded-lg p-6 hover:border-gray-300 hover:shadow-sm transition-all">
190
+ <h3 className="text-lg font-semibold text-gray-900 mb-3">API Reference</h3>
191
+ <ul className="space-y-2.5 text-sm">
192
+ <li>
193
+ <a href="/schema" className="text-blue-600 hover:text-blue-700">
194
+ Schema Reference
195
+ </a>
196
+ </li>
197
+ <li>
198
+ <a href="/docs/openapi-extensions" className="text-blue-600 hover:text-blue-700">
199
+ OpenAPI Extensions
200
+ </a>
201
+ </li>
202
+ <li>
203
+ <a href="/docs/quick-reference" className="text-blue-600 hover:text-blue-700">
204
+ Quick Reference
205
+ </a>
206
+ </li>
207
+ <li>
208
+ <a href="/examples" className="text-blue-600 hover:text-blue-700">
209
+ Examples
210
+ </a>
211
+ </li>
212
+ </ul>
213
+ </div>
214
+
215
+ {/* Migration */}
216
+ <div className="border border-gray-200 rounded-lg p-6 hover:border-gray-300 hover:shadow-sm transition-all">
217
+ <h3 className="text-lg font-semibold text-gray-900 mb-3">Migration Guides</h3>
218
+ <ul className="space-y-2.5 text-sm">
219
+ <li>
220
+ <a href="/docs/migration-guides/langchain-to-ossa" className="text-blue-600 hover:text-blue-700">
221
+ From LangChain
222
+ </a>
223
+ </li>
224
+ <li>
225
+ <a href="/docs/migration-guides/anthropic-mcp-to-ossa" className="text-blue-600 hover:text-blue-700">
226
+ From Anthropic MCP
227
+ </a>
228
+ </li>
229
+ <li>
230
+ <a href="/docs/migration-guides/openai-to-ossa" className="text-blue-600 hover:text-blue-700">
231
+ From OpenAI
232
+ </a>
233
+ </li>
234
+ <li>
235
+ <a href="/docs/migration-guides/crewai-to-ossa" className="text-blue-600 hover:text-blue-700">
236
+ From CrewAI
237
+ </a>
238
+ </li>
239
+ </ul>
240
+ </div>
241
+
242
+ </div>
243
+ </section>
244
+
245
+ {/* For Developers */}
246
+ <section className="mb-16">
247
+ <h2 className="text-2xl font-bold text-gray-900 mb-6">By Role</h2>
248
+ <div className="grid md:grid-cols-4 gap-4">
249
+ <a href="/docs/for-audiences/developers" className="border border-gray-200 rounded-lg p-4 hover:border-blue-300 hover:shadow-sm transition-all">
250
+ <h3 className="font-semibold text-gray-900 mb-1">Developers</h3>
251
+ <p className="text-sm text-gray-600">Build agents</p>
252
+ </a>
253
+ <a href="/docs/for-audiences/architects" className="border border-gray-200 rounded-lg p-4 hover:border-blue-300 hover:shadow-sm transition-all">
254
+ <h3 className="font-semibold text-gray-900 mb-1">Architects</h3>
255
+ <p className="text-sm text-gray-600">Design systems</p>
256
+ </a>
257
+ <a href="/docs/for-audiences/enterprises" className="border border-gray-200 rounded-lg p-4 hover:border-blue-300 hover:shadow-sm transition-all">
258
+ <h3 className="font-semibold text-gray-900 mb-1">Enterprises</h3>
259
+ <p className="text-sm text-gray-600">Deploy at scale</p>
260
+ </a>
261
+ <a href="/docs/for-audiences/students-researchers" className="border border-gray-200 rounded-lg p-4 hover:border-blue-300 hover:shadow-sm transition-all">
262
+ <h3 className="font-semibold text-gray-900 mb-1">Researchers</h3>
263
+ <p className="text-sm text-gray-600">Academic resources</p>
264
+ </a>
265
+ </div>
266
+ </section>
267
+
268
+ {/* Bottom CTA */}
269
+ <section className="border-t border-gray-200 pt-12">
270
+ <div className="grid md:grid-cols-3 gap-8">
271
+ <div>
272
+ <h3 className="text-lg font-semibold text-gray-900 mb-3">Community</h3>
273
+ <ul className="space-y-2 text-sm">
274
+ <li>
275
+ <a href="https://github.com/blueflyio/openstandardagents/issues" className="text-blue-600 hover:text-blue-700">
276
+ Issues & Bugs
277
+ </a>
278
+ </li>
279
+ <li>
280
+ <a href="/docs/contributing" className="text-blue-600 hover:text-blue-700">
281
+ Contributing
282
+ </a>
283
+ </li>
284
+ </ul>
285
+ </div>
286
+ <div>
287
+ <h3 className="text-lg font-semibold text-gray-900 mb-3">Resources</h3>
288
+ <ul className="space-y-2 text-sm">
289
+ <li>
290
+ <a href="/docs/changelog" className="text-blue-600 hover:text-blue-700">
291
+ Changelog
292
+ </a>
293
+ </li>
294
+ <li>
295
+ <a href="/blog" className="text-blue-600 hover:text-blue-700">
296
+ Blog
297
+ </a>
298
+ </li>
299
+ </ul>
300
+ </div>
301
+ <div>
302
+ <h3 className="text-lg font-semibold text-gray-900 mb-3">Tools</h3>
303
+ <ul className="space-y-2 text-sm">
304
+ <li>
305
+ <a href="/playground" className="text-blue-600 hover:text-blue-700">
306
+ Playground
307
+ </a>
308
+ </li>
309
+ <li>
310
+ <a href="/schema" className="text-blue-600 hover:text-blue-700">
311
+ Schema Explorer
312
+ </a>
313
+ </li>
314
+ </ul>
315
+ </div>
316
+ </div>
317
+ </section>
318
+
319
+ </div>
320
+ </div>
321
+ );
322
+ }
323
+
324
+ const doc = getDocContent(slug);
325
+
326
+ if (!doc) {
327
+ notFound();
328
+ }
329
+
330
+ return (
331
+ <div className="flex min-h-screen">
332
+ <DocsSidebar />
333
+ <div className="flex-1 flex flex-col">
334
+ <main className="flex-1 container mx-auto max-w-4xl px-4 py-8">
335
+ <article className="prose prose-lg max-w-none">
336
+ <h1>{doc.metadata.title}</h1>
337
+ {doc.metadata.description && (
338
+ <p className="text-xl text-gray-600">{doc.metadata.description}</p>
339
+ )}
340
+ <div className="mt-8">
341
+ <MarkdownContent content={doc.content} />
342
+ </div>
343
+ </article>
344
+ </main>
345
+ </div>
346
+ </div>
347
+ );
348
+ }
349
+