@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,53 @@
1
+ {
2
+ "name": "ossa-website",
3
+ "version": "0.2.3",
4
+ "description": "Open Standard Agents - The OpenAPI for AI Agents",
5
+ "private": true,
6
+ "scripts": {
7
+ "sync-version": "node scripts/sync-version.js",
8
+ "sync-wiki": "npx tsx scripts/sync-wiki.ts",
9
+ "dev": "npm run sync-version && next dev",
10
+ "build": "npm run sync-version && npm run sync-wiki && next build",
11
+ "build:no-wiki": "npm run sync-version && next build",
12
+ "start": "next start",
13
+ "lint": "next lint",
14
+ "export": "npm run sync-version && npm run sync-wiki && next build"
15
+ },
16
+ "keywords": [
17
+ "ossa",
18
+ "ai-agents",
19
+ "standard",
20
+ "specification"
21
+ ],
22
+ "author": "OSSA Community",
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "@monaco-editor/react": "^4.6.0",
26
+ "@types/node": "^24.10.0",
27
+ "@types/react": "^18.3.1",
28
+ "ajv": "^8.17.1",
29
+ "ajv-formats": "^3.0.1",
30
+ "autoprefixer": "^10.4.22",
31
+ "date-fns": "^4.1.0",
32
+ "gray-matter": "^4.0.3",
33
+ "lucide-react": "^0.294.0",
34
+ "next": "^15.5.6",
35
+ "postcss": "^8.5.6",
36
+ "prism-react-renderer": "^2.3.1",
37
+ "react": "^18.3.1",
38
+ "react-dom": "^18.3.1",
39
+ "react-markdown": "^9.0.1",
40
+ "react-syntax-highlighter": "^15.5.0",
41
+ "remark-gfm": "^4.0.0",
42
+ "tailwindcss": "^3.4.1",
43
+ "typescript": "^5.9.3",
44
+ "yaml": "^2.8.1"
45
+ },
46
+ "devDependencies": {
47
+ "@types/react-dom": "^18.3.1",
48
+ "@types/react-syntax-highlighter": "^15.5.13",
49
+ "eslint": "^9.18.0",
50
+ "eslint-config-next": "^15.5.6",
51
+ "tsx": "^4.19.0"
52
+ }
53
+ }
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ };
7
+
@@ -0,0 +1,9 @@
1
+ /** @type {import('postcss-load-config').Config} */
2
+ const config = {
3
+ plugins: {
4
+ '@tailwindcss/postcss': {},
5
+ autoprefixer: {},
6
+ },
7
+ };
8
+
9
+ export default config;
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Sync version from package.json to lib/version.ts
5
+ *
6
+ * Run: npm run sync-version
7
+ * Automatically runs on: npm run dev, npm run build
8
+ */
9
+
10
+ const fs = require('fs');
11
+ const path = require('path');
12
+
13
+ const packageJsonPath = path.join(__dirname, '..', 'package.json');
14
+ const versionTsPath = path.join(__dirname, '..', 'lib', 'version.ts');
15
+
16
+ // Read package.json
17
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
18
+ const version = packageJson.version;
19
+
20
+ // Generate version.ts content
21
+ const versionTsContent = `// OSSA version constants
22
+ // AUTO-GENERATED - DO NOT EDIT DIRECTLY
23
+ // Update package.json version instead, then run: npm run sync-version
24
+
25
+ export const OSSA_VERSION = "${version}";
26
+ export const OSSA_VERSION_TAG = \`v\${OSSA_VERSION}\`;
27
+ export const OSSA_API_VERSION = \`ossa/v\${OSSA_VERSION}\`;
28
+ export const OSSA_SCHEMA_VERSION = OSSA_VERSION;
29
+
30
+ // Utility to get schema path
31
+ export function getSchemaPath(ver = OSSA_VERSION): string {
32
+ return \`/schemas/ossa-\${ver}.schema.json\`;
33
+ }
34
+
35
+ // Utility to get spec path
36
+ export function getSpecPath(ver = OSSA_VERSION): string {
37
+ return \`/spec/v\${ver}/ossa-\${ver}.schema.json\`;
38
+ }
39
+ `;
40
+
41
+ // Write version.ts
42
+ fs.writeFileSync(versionTsPath, versionTsContent);
43
+
44
+ console.log(`āœ… Synced version ${version} to lib/version.ts`);
@@ -0,0 +1,261 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * GitLab Wiki Sync Script
4
+ *
5
+ * Fetches wiki pages from GitLab and saves them to content/docs for static site generation.
6
+ * Run this during build or manually with: npx tsx scripts/sync-wiki.ts
7
+ */
8
+
9
+ import fs from 'fs';
10
+ import path from 'path';
11
+
12
+ const GITLAB_HOST = process.env.GITLAB_HOST || 'gitlab.bluefly.io';
13
+ const PROJECT_PATH = 'llm/openstandardagents';
14
+ const DOCS_DIR = path.join(process.cwd(), 'content/docs');
15
+ const BLOG_DIR = path.join(process.cwd(), 'content/blog');
16
+
17
+ interface WikiPage {
18
+ slug: string;
19
+ title: string;
20
+ content: string;
21
+ format: string;
22
+ }
23
+
24
+ async function getGitLabToken(): Promise<string | null> {
25
+ // Try environment variable first
26
+ if (process.env.GITLAB_TOKEN) {
27
+ return process.env.GITLAB_TOKEN;
28
+ }
29
+
30
+ // Try reading from ~/.tokens/gitlab
31
+ const tokenPath = path.join(process.env.HOME || '', '.tokens', 'gitlab');
32
+ if (fs.existsSync(tokenPath)) {
33
+ return fs.readFileSync(tokenPath, 'utf-8').trim();
34
+ }
35
+
36
+ return null;
37
+ }
38
+
39
+ async function fetchWikiPages(): Promise<WikiPage[]> {
40
+ const token = await getGitLabToken();
41
+
42
+ if (!token) {
43
+ console.log('āš ļø No GitLab token found - skipping wiki sync');
44
+ console.log(' Set GITLAB_TOKEN env var or create ~/.tokens/gitlab to enable sync');
45
+ return [];
46
+ }
47
+
48
+ const encodedPath = encodeURIComponent(PROJECT_PATH);
49
+
50
+ const response = await fetch(
51
+ `https://${GITLAB_HOST}/api/v4/projects/${encodedPath}/wikis?with_content=1`,
52
+ {
53
+ headers: {
54
+ 'PRIVATE-TOKEN': token,
55
+ },
56
+ }
57
+ );
58
+
59
+ if (!response.ok) {
60
+ // Handle auth errors gracefully - use existing content
61
+ if (response.status === 401 || response.status === 403) {
62
+ console.log(`āš ļø Wiki API returned ${response.status} - using existing content`);
63
+ console.log(' Token may lack wiki read permission');
64
+ return [];
65
+ }
66
+ throw new Error(`Failed to fetch wiki pages: ${response.status} ${response.statusText}`);
67
+ }
68
+
69
+ return response.json();
70
+ }
71
+
72
+ function slugToFilePath(slug: string): string {
73
+ // Convert GitLab wiki slug to local file path
74
+ // e.g., "Getting-Started/5-Minute-Overview" -> "getting-started/5-minute-overview.md"
75
+ const parts = slug.split('/');
76
+
77
+ // Lowercase everything for URL-friendly paths
78
+ if (parts.length > 1) {
79
+ const dirs = parts.slice(0, -1).map(d => d.toLowerCase());
80
+ const filename = parts[parts.length - 1].toLowerCase();
81
+ return path.join(...dirs, `${filename}.md`);
82
+ }
83
+
84
+ return `${slug.toLowerCase()}.md`;
85
+ }
86
+
87
+ function processContent(content: string, title: string): string {
88
+ // Add frontmatter if not present
89
+ if (!content.startsWith('---')) {
90
+ const frontmatter = `---
91
+ title: "${title.replace(/"/g, '\\"')}"
92
+ ---
93
+
94
+ `;
95
+ return frontmatter + content;
96
+ }
97
+ return content;
98
+ }
99
+
100
+ function processBlogContent(content: string, title: string): string {
101
+ // Extract or generate blog metadata from content
102
+ let bodyContent = content;
103
+ let existingMeta: Record<string, string> = {};
104
+
105
+ // Parse existing frontmatter if present
106
+ if (content.startsWith('---')) {
107
+ const endIndex = content.indexOf('---', 3);
108
+ if (endIndex !== -1) {
109
+ const frontmatterText = content.substring(3, endIndex).trim();
110
+ bodyContent = content.substring(endIndex + 3).trim();
111
+
112
+ // Parse simple key: value frontmatter
113
+ frontmatterText.split('\n').forEach(line => {
114
+ const colonIndex = line.indexOf(':');
115
+ if (colonIndex > 0) {
116
+ const key = line.substring(0, colonIndex).trim();
117
+ const value = line.substring(colonIndex + 1).trim();
118
+ existingMeta[key] = value;
119
+ }
120
+ });
121
+ }
122
+ }
123
+
124
+ // Look for author in content (e.g., "**Thomas Scola**")
125
+ const authorMatch = bodyContent.match(/\*\*([^*]+)\*\*\s*\n\s*\*([^*]+)\*/);
126
+ const extractedAuthor = authorMatch ? authorMatch[1].trim() : null;
127
+
128
+ // Try to extract excerpt from abstract or first paragraph
129
+ let excerpt = '';
130
+ const abstractMatch = bodyContent.match(/###\s*Abstract\s*\n+([^\n#]+)/i);
131
+ if (abstractMatch) {
132
+ excerpt = abstractMatch[1].substring(0, 200).trim();
133
+ if (abstractMatch[1].length > 200) excerpt += '...';
134
+ } else {
135
+ const lines = bodyContent.split('\n');
136
+ const firstPara = lines.find(line =>
137
+ line.trim() &&
138
+ !line.startsWith('#') &&
139
+ !line.startsWith('*') &&
140
+ !line.startsWith('[')
141
+ );
142
+ if (firstPara) {
143
+ excerpt = firstPara.substring(0, 200).trim();
144
+ if (firstPara.length > 200) excerpt += '...';
145
+ }
146
+ }
147
+
148
+ // Build final frontmatter with blog-specific fields
149
+ const finalTitle = existingMeta.title || title;
150
+ const date = existingMeta.date || new Date().toISOString().split('T')[0];
151
+ const author = existingMeta.author || extractedAuthor || 'OSSA Team';
152
+ const category = existingMeta.category || 'Research';
153
+ const tags = existingMeta.tags || '["OSSA", "AI Agents", "Standards"]';
154
+ const finalExcerpt = existingMeta.excerpt || excerpt;
155
+
156
+ const frontmatter = `---
157
+ title: "${finalTitle.replace(/"/g, '\\"').replace(/\\/g, '')}"
158
+ date: "${date}"
159
+ author: "${author}"
160
+ category: "${category}"
161
+ tags: ${tags}
162
+ excerpt: "${finalExcerpt.replace(/"/g, '\\"')}"
163
+ ---
164
+
165
+ `;
166
+ return frontmatter + bodyContent;
167
+ }
168
+
169
+ async function syncWiki(): Promise<void> {
170
+ console.log('šŸ”„ Syncing GitLab wiki...');
171
+
172
+ // Fetch all wiki pages
173
+ const pages = await fetchWikiPages();
174
+
175
+ // If no pages returned (no token or empty wiki), skip sync
176
+ if (pages.length === 0) {
177
+ console.log('šŸ“‹ No pages to sync - using existing content');
178
+ return;
179
+ }
180
+
181
+ console.log(`šŸ“š Found ${pages.length} wiki pages`);
182
+
183
+ // Track synced files for cleanup
184
+ const syncedDocs = new Set<string>();
185
+ const syncedBlogs = new Set<string>();
186
+
187
+ for (const page of pages) {
188
+ // Skip Home page (we have our own docs landing)
189
+ if (page.slug === 'Home') {
190
+ console.log(`ā­ļø Skipping Home page (using custom landing)`);
191
+ continue;
192
+ }
193
+
194
+ // Handle Blog pages separately
195
+ if (page.slug === 'Blog' || page.slug.startsWith('Blog/')) {
196
+ // Skip the Blog index and template pages
197
+ if (page.slug === 'Blog' || page.slug === 'Blog/Template') {
198
+ console.log(`ā­ļø Skipping ${page.slug} (not a blog post)`);
199
+ continue;
200
+ }
201
+
202
+ // Extract blog post name from slug (Blog/My-Post -> My-Post)
203
+ const blogSlug = page.slug.replace('Blog/', '');
204
+ const filename = `${blogSlug}.md`;
205
+ const fullPath = path.join(BLOG_DIR, filename);
206
+
207
+ // Ensure blog directory exists
208
+ if (!fs.existsSync(BLOG_DIR)) {
209
+ fs.mkdirSync(BLOG_DIR, { recursive: true });
210
+ }
211
+
212
+ // Process and write blog content
213
+ const processedContent = processBlogContent(page.content, page.title);
214
+ fs.writeFileSync(fullPath, processedContent);
215
+ syncedBlogs.add(filename);
216
+
217
+ console.log(`šŸ“ Blog: ${page.slug} -> content/blog/${filename}`);
218
+ continue;
219
+ }
220
+
221
+ // Regular docs pages
222
+ const relativePath = slugToFilePath(page.slug);
223
+ const fullPath = path.join(DOCS_DIR, relativePath);
224
+ const dirPath = path.dirname(fullPath);
225
+
226
+ // Ensure directory exists
227
+ if (!fs.existsSync(dirPath)) {
228
+ fs.mkdirSync(dirPath, { recursive: true });
229
+ }
230
+
231
+ // Process and write content
232
+ const processedContent = processContent(page.content, page.title);
233
+ fs.writeFileSync(fullPath, processedContent);
234
+ syncedDocs.add(relativePath);
235
+
236
+ console.log(`āœ… ${page.slug} -> ${relativePath}`);
237
+ }
238
+
239
+ console.log(`\n✨ Synced ${syncedDocs.size} docs + ${syncedBlogs.size} blog posts`);
240
+
241
+ // Write manifest for tracking
242
+ const manifest = {
243
+ lastSync: new Date().toISOString(),
244
+ source: `https://${GITLAB_HOST}/${PROJECT_PATH}/-/wikis/home`,
245
+ docs: Array.from(syncedDocs).sort(),
246
+ blogs: Array.from(syncedBlogs).sort(),
247
+ };
248
+
249
+ fs.writeFileSync(
250
+ path.join(DOCS_DIR, '.wiki-sync-manifest.json'),
251
+ JSON.stringify(manifest, null, 2)
252
+ );
253
+
254
+ console.log('šŸ“‹ Updated .wiki-sync-manifest.json');
255
+ }
256
+
257
+ // Run if called directly
258
+ syncWiki().catch((error) => {
259
+ console.error('āŒ Wiki sync failed:', error.message);
260
+ process.exit(1);
261
+ });
@@ -0,0 +1,58 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ module.exports = {
3
+ content: [
4
+ './app/**/*.{js,ts,jsx,tsx,mdx}',
5
+ './components/**/*.{js,ts,jsx,tsx,mdx}',
6
+ ],
7
+ theme: {
8
+ extend: {
9
+ colors: {
10
+ primary: {
11
+ DEFAULT: '#2B3E96',
12
+ dark: '#1A2B5C',
13
+ },
14
+ secondary: {
15
+ DEFAULT: '#00C9A7',
16
+ },
17
+ success: '#28A745',
18
+ warning: '#FFC107',
19
+ error: '#DC3545',
20
+ info: '#17A2B8',
21
+ gray: {
22
+ 100: '#F8F9FA',
23
+ 300: '#DEE2E6',
24
+ 500: '#6C757D',
25
+ 700: '#495057',
26
+ 900: '#343A40',
27
+ },
28
+ dark: '#212529',
29
+ code: {
30
+ bg: '#1E1E1E',
31
+ text: '#D4D4D4',
32
+ keyword: '#569CD6',
33
+ string: '#CE9178',
34
+ comment: '#6A9955',
35
+ },
36
+ },
37
+ fontFamily: {
38
+ heading: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'sans-serif'],
39
+ body: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'sans-serif'],
40
+ code: ['Fira Code', 'SF Mono', 'Monaco', 'Inconsolata', 'monospace'],
41
+ },
42
+ fontSize: {
43
+ h1: '3rem',
44
+ h2: '2.25rem',
45
+ h3: '1.875rem',
46
+ h4: '1.5rem',
47
+ h5: '1.25rem',
48
+ h6: '1rem',
49
+ },
50
+ backgroundImage: {
51
+ 'gradient-primary': 'linear-gradient(135deg, #2B3E96 0%, #00C9A7 100%)',
52
+ 'gradient-hero': 'linear-gradient(180deg, #2B3E96 0%, #1A2B5C 100%)',
53
+ },
54
+ },
55
+ },
56
+ plugins: [],
57
+ };
58
+
@@ -0,0 +1,65 @@
1
+ import type { Config } from 'tailwindcss';
2
+
3
+ const config: Config = {
4
+ content: [
5
+ './pages/**/*.{js,ts,jsx,tsx,mdx}',
6
+ './components/**/*.{js,ts,jsx,tsx,mdx}',
7
+ './app/**/*.{js,ts,jsx,tsx,mdx}',
8
+ ],
9
+ theme: {
10
+ extend: {
11
+ colors: {
12
+ primary: {
13
+ 50: '#f0f9ff',
14
+ 100: '#e0f2fe',
15
+ 200: '#bae6fd',
16
+ 300: '#7dd3fc',
17
+ 400: '#38bdf8',
18
+ 500: '#0ea5e9',
19
+ 600: '#0284c7',
20
+ 700: '#0369a1',
21
+ 800: '#075985',
22
+ 900: '#0c4a6e',
23
+ 950: '#082f49',
24
+ },
25
+ accent: {
26
+ 50: '#faf5ff',
27
+ 100: '#f3e8ff',
28
+ 200: '#e9d5ff',
29
+ 300: '#d8b4fe',
30
+ 400: '#c084fc',
31
+ 500: '#a855f7',
32
+ 600: '#9333ea',
33
+ 700: '#7e22ce',
34
+ 800: '#6b21a8',
35
+ 900: '#581c87',
36
+ 950: '#3b0764',
37
+ },
38
+ },
39
+ fontFamily: {
40
+ sans: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
41
+ mono: ['JetBrains Mono', 'Menlo', 'Monaco', 'Courier New', 'monospace'],
42
+ body: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
43
+ heading: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
44
+ code: ['JetBrains Mono', 'Menlo', 'Monaco', 'Courier New', 'monospace'],
45
+ },
46
+ typography: {
47
+ DEFAULT: {
48
+ css: {
49
+ maxWidth: 'none',
50
+ color: '#334155',
51
+ a: {
52
+ color: '#0284c7',
53
+ '&:hover': {
54
+ color: '#0369a1',
55
+ },
56
+ },
57
+ },
58
+ },
59
+ },
60
+ },
61
+ },
62
+ plugins: [],
63
+ };
64
+
65
+ export default config;