@bluefly/openstandardagents 0.2.4 → 0.2.5-RC

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 (355) hide show
  1. package/.cursorrules +84 -0
  2. package/.devfile.yaml +87 -0
  3. package/.env.example +25 -3
  4. package/.github/workflows/release.yml +1 -1
  5. package/.kiro/specs/agent-buildkit-templates/design.md +495 -0
  6. package/.kiro/specs/agent-buildkit-templates/requirements.md +165 -0
  7. package/.kiro/specs/kiro-ide-supercharger/README.md +202 -0
  8. package/.kiro/specs/kiro-ide-supercharger/design.md +1005 -0
  9. package/.kiro/specs/kiro-ide-supercharger/requirements.md +141 -0
  10. package/.kiro/specs/kiro-ide-supercharger/tasks.md +507 -0
  11. package/.kiro/specs/website-design-audit/design.md +679 -0
  12. package/.kiro/specs/website-design-audit/requirements.md +199 -0
  13. package/.releaserc.json +5 -4
  14. package/.version.json +6 -0
  15. package/CHANGELOG.md +140 -96
  16. package/CONTRIBUTING.md +23 -5
  17. package/README.md +121 -43
  18. package/bin/ossa +24 -3
  19. package/bin/ossa-validate-all +55 -0
  20. package/bin/ossa-version +23 -0
  21. package/bin/validate-ossa-0.2.4.ts +244 -0
  22. package/bin/validate-ossa-0.2.5-RC.ts +244 -0
  23. package/bin/validate-ossa.ts +273 -0
  24. package/dist/di-container.d.ts +1 -1
  25. package/dist/di-container.d.ts.map +1 -1
  26. package/dist/di-container.js.map +1 -1
  27. package/dist/repositories/schema.repository.d.ts +17 -2
  28. package/dist/repositories/schema.repository.d.ts.map +1 -1
  29. package/dist/repositories/schema.repository.js +96 -18
  30. package/dist/repositories/schema.repository.js.map +1 -1
  31. package/dist/services/generation.service.d.ts +7 -5
  32. package/dist/services/generation.service.d.ts.map +1 -1
  33. package/dist/services/generation.service.js +92 -44
  34. package/dist/services/generation.service.js.map +1 -1
  35. package/dist/services/gitlab-agent.service.d.ts +94 -0
  36. package/dist/services/gitlab-agent.service.d.ts.map +1 -0
  37. package/dist/services/gitlab-agent.service.js +162 -0
  38. package/dist/services/gitlab-agent.service.js.map +1 -0
  39. package/dist/services/migration.service.d.ts +3 -3
  40. package/dist/services/migration.service.d.ts.map +1 -1
  41. package/dist/services/migration.service.js +108 -61
  42. package/dist/services/migration.service.js.map +1 -1
  43. package/dist/services/release-automation/base-crud.service.d.ts +93 -0
  44. package/dist/services/release-automation/base-crud.service.d.ts.map +1 -0
  45. package/dist/services/release-automation/base-crud.service.js +68 -0
  46. package/dist/services/release-automation/base-crud.service.js.map +1 -0
  47. package/dist/services/release-automation/index.d.ts +12 -0
  48. package/dist/services/release-automation/index.d.ts.map +1 -0
  49. package/dist/services/release-automation/index.js +12 -0
  50. package/dist/services/release-automation/index.js.map +1 -0
  51. package/dist/services/release-automation/merge-request.service.d.ts +119 -0
  52. package/dist/services/release-automation/merge-request.service.d.ts.map +1 -0
  53. package/dist/services/release-automation/merge-request.service.js +212 -0
  54. package/dist/services/release-automation/merge-request.service.js.map +1 -0
  55. package/dist/services/release-automation/milestone.service.d.ts +104 -0
  56. package/dist/services/release-automation/milestone.service.d.ts.map +1 -0
  57. package/dist/services/release-automation/milestone.service.js +207 -0
  58. package/dist/services/release-automation/milestone.service.js.map +1 -0
  59. package/dist/services/release-automation/release.service.d.ts +118 -0
  60. package/dist/services/release-automation/release.service.d.ts.map +1 -0
  61. package/dist/services/release-automation/release.service.js +207 -0
  62. package/dist/services/release-automation/release.service.js.map +1 -0
  63. package/dist/services/release-automation/schemas/release.schema.d.ts +299 -0
  64. package/dist/services/release-automation/schemas/release.schema.d.ts.map +1 -0
  65. package/dist/services/release-automation/schemas/release.schema.js +269 -0
  66. package/dist/services/release-automation/schemas/release.schema.js.map +1 -0
  67. package/dist/services/release-automation/tag.service.d.ts +99 -0
  68. package/dist/services/release-automation/tag.service.d.ts.map +1 -0
  69. package/dist/services/release-automation/tag.service.js +180 -0
  70. package/dist/services/release-automation/tag.service.js.map +1 -0
  71. package/dist/services/release-automation/webhook.service.d.ts +37 -0
  72. package/dist/services/release-automation/webhook.service.d.ts.map +1 -0
  73. package/dist/services/release-automation/webhook.service.js +173 -0
  74. package/dist/services/release-automation/webhook.service.js.map +1 -0
  75. package/dist/services/runtime/openai.adapter.d.ts.map +1 -1
  76. package/dist/services/runtime/openai.adapter.js.map +1 -1
  77. package/dist/services/validation.service.d.ts.map +1 -1
  78. package/dist/services/validation.service.js +24 -11
  79. package/dist/services/validation.service.js.map +1 -1
  80. package/dist/services/validators/anthropic.validator.d.ts +2 -2
  81. package/dist/services/validators/anthropic.validator.d.ts.map +1 -1
  82. package/dist/services/validators/anthropic.validator.js +14 -9
  83. package/dist/services/validators/anthropic.validator.js.map +1 -1
  84. package/dist/services/validators/autogen.validator.d.ts +2 -2
  85. package/dist/services/validators/autogen.validator.d.ts.map +1 -1
  86. package/dist/services/validators/autogen.validator.js +18 -15
  87. package/dist/services/validators/autogen.validator.js.map +1 -1
  88. package/dist/services/validators/crewai.validator.d.ts +2 -2
  89. package/dist/services/validators/crewai.validator.d.ts.map +1 -1
  90. package/dist/services/validators/crewai.validator.js +18 -17
  91. package/dist/services/validators/crewai.validator.js.map +1 -1
  92. package/dist/services/validators/cursor.validator.d.ts +2 -2
  93. package/dist/services/validators/cursor.validator.d.ts.map +1 -1
  94. package/dist/services/validators/cursor.validator.js +15 -11
  95. package/dist/services/validators/cursor.validator.js.map +1 -1
  96. package/dist/services/validators/langchain.validator.d.ts +2 -2
  97. package/dist/services/validators/langchain.validator.d.ts.map +1 -1
  98. package/dist/services/validators/langchain.validator.js +14 -11
  99. package/dist/services/validators/langchain.validator.js.map +1 -1
  100. package/dist/services/validators/langflow.validator.d.ts +2 -2
  101. package/dist/services/validators/langflow.validator.d.ts.map +1 -1
  102. package/dist/services/validators/langflow.validator.js +14 -9
  103. package/dist/services/validators/langflow.validator.js.map +1 -1
  104. package/dist/services/validators/langgraph.validator.d.ts +2 -2
  105. package/dist/services/validators/langgraph.validator.d.ts.map +1 -1
  106. package/dist/services/validators/langgraph.validator.js +23 -18
  107. package/dist/services/validators/langgraph.validator.js.map +1 -1
  108. package/dist/services/validators/llamaindex.validator.d.ts +2 -2
  109. package/dist/services/validators/llamaindex.validator.d.ts.map +1 -1
  110. package/dist/services/validators/llamaindex.validator.js +19 -16
  111. package/dist/services/validators/llamaindex.validator.js.map +1 -1
  112. package/dist/services/validators/openai.validator.d.ts +2 -2
  113. package/dist/services/validators/openai.validator.d.ts.map +1 -1
  114. package/dist/services/validators/openai.validator.js +20 -16
  115. package/dist/services/validators/openai.validator.js.map +1 -1
  116. package/dist/services/validators/vercel-ai.validator.d.ts +2 -2
  117. package/dist/services/validators/vercel-ai.validator.d.ts.map +1 -1
  118. package/dist/services/validators/vercel-ai.validator.js +16 -15
  119. package/dist/services/validators/vercel-ai.validator.js.map +1 -1
  120. package/dist/spec/v0.2.0/ossa-0.2.0.schema.json +0 -0
  121. package/dist/spec/v0.2.1/ossa-0.2.1.schema.json +555 -0
  122. package/dist/spec/v0.2.3/CHANGELOG.md +7 -7
  123. package/dist/spec/v0.2.3/README.md +9 -9
  124. package/dist/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +18 -18
  125. package/{spec/v0.2.4-dev → dist/spec/v0.2.4}/CHANGELOG.md +8 -8
  126. package/dist/spec/{v0.2.4-dev → v0.2.4}/migrations/v0.2.3-to-v0.2.4.md +10 -10
  127. package/dist/spec/{v0.2.4-dev → v0.2.4}/ossa-0.2.4-dev.yaml +1 -1
  128. package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +1819 -0
  129. package/dist/spec/v0.2.5/CHANGELOG.md +401 -0
  130. package/dist/spec/v0.2.5/README.md +72 -0
  131. package/dist/spec/v0.2.5/migrations/v0.2.3-to-v0.2.4.md +599 -0
  132. package/dist/spec/{v0.2.5-dev/ossa-0.2.5-dev.schema.json → v0.2.5/ossa-0.2.5.schema.json} +323 -359
  133. package/dist/spec/v0.2.5/ossa-0.2.5.yaml +581 -0
  134. package/dist/spec/v0.2.5-RC/CHANGELOG.md +401 -0
  135. package/dist/spec/v0.2.5-RC/README.md +72 -0
  136. package/{spec/v0.2.4-dev → dist/spec/v0.2.5-RC}/migrations/v0.2.3-to-v0.2.4.md +10 -10
  137. package/dist/spec/v0.2.5-RC/ossa-0.2.5-RC.schema.json +1696 -0
  138. package/dist/spec/v0.2.5-RC/ossa-0.2.5-RC.yaml +581 -0
  139. package/dist/types/index.d.ts +6 -1
  140. package/dist/types/index.d.ts.map +1 -1
  141. package/docs/issue-19-completion-summary.md +648 -0
  142. package/docs/issue-19-validation.md +351 -0
  143. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  144. package/examples/autogen/multi-agent.ossa.json +1 -1
  145. package/examples/bridges/Dockerfile.production +1 -1
  146. package/examples/crewai/research-team.ossa.json +1 -1
  147. package/examples/cursor/code-review-agent.ossa.json +1 -1
  148. package/examples/enterprise/agent.yml +1 -1
  149. package/examples/getting-started/hello-world-complete.ossa.yaml +2 -2
  150. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  151. package/examples/langchain/chain-agent.ossa.json +1 -1
  152. package/examples/langflow/workflow-agent.ossa.json +1 -1
  153. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  154. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  155. package/examples/openai/basic-agent.ossa.yaml +61 -0
  156. package/examples/openai/multi-tool-agent.ossa.json +165 -0
  157. package/examples/openai/swarm-agent.ossa.json +1 -1
  158. package/examples/openapi-extensions/README.md +1 -1
  159. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  160. package/examples/vercel/edge-agent.ossa.json +1 -1
  161. package/infrastructure/gitlab-agent/rbac.yaml +126 -0
  162. package/infrastructure/gitlab-agent/values.yaml +150 -0
  163. package/infrastructure/k8s/monitoring/00-namespace.yaml +7 -0
  164. package/infrastructure/k8s/monitoring/01-prometheus.yaml +142 -0
  165. package/infrastructure/k8s/monitoring/02-grafana.yaml +63 -0
  166. package/infrastructure/k8s/monitoring/03-lightweight.yaml +121 -0
  167. package/infrastructure/k8s/monitoring/README.md +73 -0
  168. package/infrastructure/k8s/monitoring/deploy.sh +38 -0
  169. package/openapi/CHANGELOG.md +21 -0
  170. package/openapi/README.md +46 -0
  171. package/openapi/{ossa-core-api.openapi.yaml → core/ossa-core-api.openapi.yaml} +59 -4
  172. package/openapi/{ossa-registry.openapi.yaml → core/ossa-registry.openapi.yaml} +75 -2
  173. package/openapi/{unified-agent-gateway.openapi.yaml → core/unified-agent-gateway.openapi.yaml} +3 -3
  174. package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +136 -0
  175. package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +192 -0
  176. package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +149 -0
  177. package/openapi/reference-implementations/critic-agent-api.openapi.yaml +151 -0
  178. package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +217 -0
  179. package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +149 -0
  180. package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +151 -0
  181. package/openapi/reference-implementations/governor-agent-api.openapi.yaml +193 -0
  182. package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +165 -0
  183. package/openapi/reference-implementations/judge-agent-api.openapi.yaml +148 -0
  184. package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +167 -0
  185. package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +171 -0
  186. package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +171 -0
  187. package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +242 -0
  188. package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +187 -0
  189. package/openapi/{self-evolving-ecosystem.openapi.yaml → reference-implementations/self-evolving-ecosystem.openapi.yaml} +2 -2
  190. package/openapi/reference-implementations/worker-agent-api.openapi.yaml +208 -0
  191. package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +193 -0
  192. package/package.json +31 -21
  193. package/release.config.js +20 -5
  194. package/scripts/bump-version.ts +57 -0
  195. package/scripts/enhanced-version-manager.ts +257 -0
  196. package/scripts/gen-types.ts +51 -0
  197. package/scripts/gen-zod.ts +51 -0
  198. package/scripts/lib/exec.ts +37 -0
  199. package/scripts/lib/file-ops.ts +58 -0
  200. package/scripts/lib/version.ts +83 -0
  201. package/scripts/process-doc-templates.ts +37 -0
  202. package/scripts/schemas/package.schema.ts +75 -0
  203. package/scripts/setup-branch-protection.sh +33 -0
  204. package/scripts/sync-version.ts +39 -0
  205. package/scripts/sync-versions.ts +488 -0
  206. package/scripts/validate-schema.ts +49 -0
  207. package/spec/v0.2.0/ossa-0.2.0.schema.json +0 -0
  208. package/spec/v0.2.1/ossa-0.2.1.schema.json +555 -0
  209. package/spec/v0.2.3/CHANGELOG.md +7 -7
  210. package/spec/v0.2.3/README.md +9 -9
  211. package/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +18 -18
  212. package/{dist/spec/v0.2.4-dev → spec/v0.2.4}/CHANGELOG.md +8 -8
  213. package/spec/v0.2.4/migrations/v0.2.3-to-v0.2.4.md +599 -0
  214. package/spec/{v0.2.4-dev → v0.2.4}/ossa-0.2.4-dev.yaml +1 -1
  215. package/spec/v0.2.4/ossa-0.2.4.schema.json +1819 -0
  216. package/spec/v0.2.5/CHANGELOG.md +401 -0
  217. package/spec/v0.2.5/README.md +72 -0
  218. package/spec/v0.2.5/migrations/v0.2.3-to-v0.2.4.md +599 -0
  219. package/spec/{v0.2.5-dev/ossa-0.2.5-dev.schema.json → v0.2.5/ossa-0.2.5.schema.json} +323 -359
  220. package/spec/v0.2.5/ossa-0.2.5.yaml +581 -0
  221. package/spec/v0.2.5-RC/CHANGELOG.md +401 -0
  222. package/spec/v0.2.5-RC/README.md +72 -0
  223. package/spec/v0.2.5-RC/migrations/v0.2.3-to-v0.2.4.md +599 -0
  224. package/spec/v0.2.5-RC/ossa-0.2.5-RC.schema.json +1696 -0
  225. package/spec/v0.2.5-RC/ossa-0.2.5-RC.yaml +581 -0
  226. package/website/{.lighthouserc.js → .lighthouserc.ts} +5 -1
  227. package/website/Dockerfile +18 -5
  228. package/website/app/about/page.tsx +7 -7
  229. package/website/app/blog/[slug]/page.tsx +61 -20
  230. package/website/app/blog/page.tsx +120 -33
  231. package/website/app/design-guide/page.tsx +511 -0
  232. package/website/app/docs/[[...slug]]/page.tsx +641 -143
  233. package/website/app/examples/page.tsx +51 -41
  234. package/website/app/{globals.css → globals.scss} +50 -23
  235. package/website/app/layout.tsx +2 -2
  236. package/website/app/license/page.tsx +183 -0
  237. package/website/app/not-found.tsx +18 -0
  238. package/website/app/page.tsx +144 -79
  239. package/website/app/playground/page.tsx +25 -45
  240. package/website/app/schema/page.tsx +423 -392
  241. package/website/app/specification/page.tsx +245 -169
  242. package/website/components/Logo.tsx +75 -2
  243. package/website/components/docs/DocsSidebar.tsx +40 -3
  244. package/website/components/docs/MarkdownContent.tsx +265 -47
  245. package/website/components/docs/VersionSelector.tsx +64 -8
  246. package/website/components/examples/ExamplesViewer.tsx +2 -2
  247. package/website/components/layout/Footer.tsx +6 -1
  248. package/website/components/layout/Header.tsx +31 -33
  249. package/website/components/schema/SchemaComponentsAccordion.tsx +84 -0
  250. package/website/components/schema/SchemaExplorer.tsx +4 -4
  251. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +276 -276
  252. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +3 -14
  253. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +286 -0
  254. package/website/content/blog/introducing-ossa-framework.md +1 -1
  255. package/website/content/blog/ossa-production-results.md +5 -5
  256. package/website/content/blog/welcome-to-ossa.md +2 -2
  257. package/website/content/blog/why-ai-agents-need-open-standard.md +5 -5
  258. package/website/content/docs/00-HOME.md +18 -25
  259. package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +8 -8
  260. package/website/content/docs/OpenAPI-Extensions.md +576 -140
  261. package/website/content/docs/adapters/openai-adapter.md +693 -0
  262. package/website/content/docs/architecture/execution-flow.md +3 -3
  263. package/website/content/docs/architecture/multi-agent-systems.md +4 -4
  264. package/website/content/docs/architecture/overview.md +4 -4
  265. package/website/content/docs/architecture/stack-integration.md +4 -4
  266. package/website/content/docs/changelog.md +4 -4
  267. package/website/content/docs/contributing.md +2 -2
  268. package/website/content/docs/ecosystem/framework-support.md +0 -2
  269. package/website/content/docs/examples/AIFlow-Framework-Integration-with-OSSA.md +107 -0
  270. package/website/content/docs/examples/Migration-Guides.md +2 -2
  271. package/website/content/docs/for-audiences/{architects.md → Architects.md} +1 -1
  272. package/website/content/docs/for-audiences/{developers.md → Developers.md} +3 -3
  273. package/website/content/docs/for-audiences/Enterprises.md +2 -2
  274. package/website/content/docs/for-audiences/Students-Researchers.md +1 -1
  275. package/website/content/docs/getting-started/{5-minute-overview.md → 5-Minute-Overview.md} +2 -2
  276. package/website/content/docs/getting-started/{first-agent.md → First-Agent.md} +1 -1
  277. package/website/content/docs/getting-started/Hello-World.md +3 -3
  278. package/website/content/docs/getting-started/{installation.md → Installation.md} +7 -7
  279. package/website/content/docs/getting-started/index.md +92 -0
  280. package/website/content/docs/getting-started/running-agents.md +215 -13
  281. package/{docs → website/content/docs}/getting-started.md +10 -6
  282. package/website/content/docs/integrations/aiflow.md +2 -2
  283. package/website/content/docs/integrations/drupal.md +2 -2
  284. package/website/content/docs/migration-guides/README.md +1 -1
  285. package/website/content/docs/migration-guides/agent-schema-comparison.md +232 -0
  286. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +5 -5
  287. package/website/content/docs/migration-guides/crewai-to-ossa.md +3 -3
  288. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +11 -11
  289. package/{docs/migration → website/content/docs/migration-guides}/general-agent-schema.yml +1 -9
  290. package/website/content/docs/migration-guides/index.md +1 -1
  291. package/website/content/docs/migration-guides/langchain-to-ossa.md +17 -17
  292. package/website/content/docs/migration-guides/langflow-to-ossa.md +3 -3
  293. package/website/content/docs/migration-guides/openai-to-ossa.md +10 -10
  294. package/website/content/docs/openapi-extensions/examples.md +9 -9
  295. package/website/content/docs/openapi-extensions/index.md +59 -3
  296. package/website/content/docs/openapi-extensions/operation-extensions.md +61 -2
  297. package/website/content/docs/openapi-extensions/root-extensions.md +49 -3
  298. package/{docs/OSSA-COMPLIANT-BADGE.md → website/content/docs/ossa-compliant-badge.md} +18 -15
  299. package/website/content/docs/pre-release/index.md +10 -10
  300. package/website/content/docs/readme.md +35 -0
  301. package/website/content/docs/schema-reference/agent-spec.md +2 -2
  302. package/website/content/docs/schema-reference/autonomy.md +5 -5
  303. package/website/content/docs/schema-reference/constraints.md +5 -5
  304. package/website/content/docs/schema-reference/llm-config.md +1 -1
  305. package/website/content/docs/schema-reference/observability.md +5 -5
  306. package/website/content/docs/schema-reference/ossa-manifest.md +6 -6
  307. package/website/content/docs/schema-reference/taxonomy.md +3 -3
  308. package/website/content/docs/use-cases/00-index.md +1 -1
  309. package/{docs/VERSIONING.md → website/content/docs/versioning.md} +9 -5
  310. package/website/lib/version.ts +18 -1
  311. package/website/lib/versions.json +78 -0
  312. package/website/next.config.ts +3 -1
  313. package/website/package-lock.json +552 -18
  314. package/website/package.json +11 -5
  315. package/website/postcss.config.mjs +1 -1
  316. package/website/scripts/fetch-versions.js +166 -0
  317. package/website/scripts/generate-examples-index.js +163 -0
  318. package/website/scripts/merge-docs-to-wiki.ts +207 -0
  319. package/website/scripts/sync-version.js +28 -0
  320. package/website/scripts/sync-wiki.ts +64 -3
  321. package/website/scripts/upload-wiki.ts +199 -0
  322. package/website/styles/_variables.scss +36 -0
  323. package/website/tailwind.config.ts +93 -22
  324. package/.releaserc.json.disabled +0 -81
  325. package/dist/spec/v0.2.5-dev/CHANGELOG.md +0 -171
  326. package/dist/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +0 -362
  327. package/dist/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +0 -464
  328. package/dist/spec/v0.2.5-dev/examples/research-team.ossa.yaml +0 -440
  329. package/dist/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +0 -317
  330. package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +0 -409
  331. package/docs/README.md +0 -31
  332. package/docs/agent-openapi-spec.yml +0 -942
  333. package/docs/openapi-extensions.md +0 -930
  334. package/docs/schemas/openapi-extensions.schema.json +0 -486
  335. package/openapi/gitlab-orchestrator.openapi.yaml +0 -330
  336. package/ossa-website-swarm-tasks.json +0 -105
  337. package/spec/v0.2.5-dev/CHANGELOG.md +0 -171
  338. package/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +0 -362
  339. package/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +0 -464
  340. package/spec/v0.2.5-dev/examples/research-team.ossa.yaml +0 -440
  341. package/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +0 -317
  342. package/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +0 -409
  343. package/website/app/api/validate/route.ts +0 -88
  344. package/website/next.config.js +0 -17
  345. package/website/postcss.config.js +0 -7
  346. package/website/tailwind.config.js +0 -58
  347. /package/dist/spec/{v0.2.4-dev → v0.2.4}/ossa-0.2.4-dev.schema.json +0 -0
  348. /package/openapi/{ossa-registry-api.openapi.yaml → core/ossa-registry-api.openapi.yaml} +0 -0
  349. /package/openapi/{drupal-agent-api.openapi.yaml → reference-implementations/drupal-agent-api.openapi.yaml} +0 -0
  350. /package/openapi/{helm-generator.openapi.yaml → reference-implementations/helm-generator.openapi.yaml} +0 -0
  351. /package/spec/{v0.2.4-dev → v0.2.4}/ossa-0.2.4-dev.schema.json +0 -0
  352. /package/website/content/docs/{examples.md → Examples.md} +0 -0
  353. /package/website/content/docs/core-concepts/{project-structure.md → Project-Structure.md} +0 -0
  354. /package/website/content/docs/migration-guides/{00-index.md → 00-INDEX.md} +0 -0
  355. /package/{docs/migration → website/content/docs/migration-guides}/migration-manifest.json +0 -0
@@ -4,6 +4,116 @@ import path from 'path';
4
4
  import matter from 'gray-matter';
5
5
  import { DocsSidebar } from '@/components/docs/DocsSidebar';
6
6
  import { MarkdownContent } from '@/components/docs/MarkdownContent';
7
+ import Link from 'next/link';
8
+
9
+ // GitHub API utilities
10
+ const GITHUB_OWNER = 'blueflyio';
11
+ const GITHUB_REPO = 'openstandardagents';
12
+ const GITHUB_API_BASE = 'https://api.github.com';
13
+
14
+ interface GitHubRepoInfo {
15
+ stars: number;
16
+ forks: number;
17
+ openIssues: number;
18
+ openPullRequests: number;
19
+ description: string;
20
+ language: string | null;
21
+ updatedAt: string;
22
+ watchers: number;
23
+ }
24
+
25
+ async function fetchRepoInfo(): Promise<GitHubRepoInfo | null> {
26
+ try {
27
+ const token = process.env.GITHUB_TOKEN;
28
+ const headers: HeadersInit = {
29
+ 'Accept': 'application/vnd.github.v3+json',
30
+ };
31
+
32
+ if (token) {
33
+ headers['Authorization'] = `token ${token}`;
34
+ }
35
+
36
+ // Fetch repository info
37
+ const repoResponse = await fetch(
38
+ `${GITHUB_API_BASE}/repos/${GITHUB_OWNER}/${GITHUB_REPO}`,
39
+ {
40
+ headers,
41
+ next: { revalidate: 300 }, // Cache for 5 minutes
42
+ }
43
+ );
44
+
45
+ if (!repoResponse.ok) {
46
+ return null;
47
+ }
48
+
49
+ const repoData = await repoResponse.json();
50
+
51
+ // Fetch issues and pull requests separately to get accurate counts
52
+ // Use search API for accurate counts without pagination
53
+ const [issuesSearchResponse, prsResponse] = await Promise.all([
54
+ fetch(
55
+ `${GITHUB_API_BASE}/search/issues?q=repo:${GITHUB_OWNER}/${GITHUB_REPO}+type:issue+state:open&per_page=1`,
56
+ {
57
+ headers,
58
+ next: { revalidate: 300 },
59
+ }
60
+ ),
61
+ fetch(
62
+ `${GITHUB_API_BASE}/repos/${GITHUB_OWNER}/${GITHUB_REPO}/pulls?state=open&per_page=1`,
63
+ {
64
+ headers,
65
+ next: { revalidate: 300 },
66
+ }
67
+ ),
68
+ ]);
69
+
70
+ let openIssues = 0;
71
+ let openPullRequests = 0;
72
+
73
+ if (issuesSearchResponse.ok) {
74
+ const issuesData = await issuesSearchResponse.json();
75
+ openIssues = issuesData.total_count || 0;
76
+ }
77
+
78
+ if (prsResponse.ok) {
79
+ try {
80
+ // Use search API for accurate PR count
81
+ const prsSearchResponse = await fetch(
82
+ `${GITHUB_API_BASE}/search/issues?q=repo:${GITHUB_OWNER}/${GITHUB_REPO}+type:pr+state:open&per_page=1`,
83
+ {
84
+ headers,
85
+ next: { revalidate: 300 },
86
+ }
87
+ );
88
+ if (prsSearchResponse.ok) {
89
+ const prsSearchData = await prsSearchResponse.json();
90
+ openPullRequests = prsSearchData.total_count || 0;
91
+ } else {
92
+ // Fallback to direct count
93
+ const prsData = await prsResponse.json();
94
+ openPullRequests = Array.isArray(prsData) ? prsData.length : 0;
95
+ }
96
+ } catch (error) {
97
+ console.error('Error parsing PRs response:', error);
98
+ openPullRequests = 0;
99
+ }
100
+ }
101
+
102
+ return {
103
+ stars: repoData?.stargazers_count || 0,
104
+ forks: repoData?.forks_count || 0,
105
+ openIssues: openIssues || 0,
106
+ openPullRequests: openPullRequests || 0,
107
+ description: repoData?.description || '',
108
+ language: repoData?.language || null,
109
+ updatedAt: repoData?.updated_at || '',
110
+ watchers: repoData?.watchers_count || 0,
111
+ };
112
+ } catch (error) {
113
+ console.error('Error fetching GitHub repo info:', error);
114
+ return null;
115
+ }
116
+ }
7
117
 
8
118
  interface PageProps {
9
119
  params: Promise<{
@@ -15,20 +125,28 @@ const docsDirectory = path.join(process.cwd(), 'content/docs');
15
125
 
16
126
  function getDocContent(slug: string[]): { content: string; metadata: any } | null {
17
127
  // Convert URL slug to PascalCase for legacy wiki files
128
+ // Directories stay lowercase, but file names are PascalCase
18
129
  const slugPath = slug.map(s =>
19
130
  s.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('-')
20
131
  );
132
+
133
+ // Build path with lowercase directories but PascalCase filename
134
+ const dirPath = slug.slice(0, -1); // All but last segment (directories)
135
+ const fileName = slugPath[slugPath.length - 1]; // Last segment (filename) in PascalCase
21
136
 
22
- // Try different path patterns - lowercase first (new convention), then PascalCase (legacy)
137
+ // Try different path patterns - exact case first, then variations
23
138
  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)
139
+ // Directory lowercase, filename PascalCase (e.g., getting-started/First-Agent.md)
140
+ ...(dirPath.length > 0 && fileName ? [path.join(docsDirectory, ...dirPath, fileName + '.md')] : []),
141
+ // Full PascalCase path (legacy)
29
142
  path.join(docsDirectory, ...slugPath) + '.md',
143
+ // PascalCase paths (legacy wiki structure)
30
144
  path.join(docsDirectory, ...slugPath, 'index.md'),
31
145
  path.join(docsDirectory, ...slugPath, 'README.md'),
146
+ // Lowercase paths (current convention) - try index.md first for directories
147
+ path.join(docsDirectory, ...slug, 'index.md'),
148
+ path.join(docsDirectory, ...slug, 'readme.md'),
149
+ path.join(docsDirectory, ...slug) + '.md',
32
150
  ];
33
151
 
34
152
  let fullPath = null;
@@ -65,251 +183,485 @@ function getAllDocPaths(): string[][] {
65
183
  const paths: string[][] = [];
66
184
 
67
185
  function traverseDir(dir: string, currentPath: string[] = []): void {
186
+ try {
68
187
  if (!fs.existsSync(dir)) {
188
+ console.warn(`Directory does not exist: ${dir}`);
69
189
  return;
70
190
  }
71
191
 
72
192
  const entries = fs.readdirSync(dir, { withFileTypes: true });
73
193
 
74
194
  for (const entry of entries) {
195
+ // Skip hidden files and directories
196
+ if (entry.name.startsWith('.')) {
197
+ continue;
198
+ }
199
+
75
200
  if (entry.isDirectory()) {
76
201
  traverseDir(path.join(dir, entry.name), [...currentPath, entry.name]);
77
202
  } else if (entry.isFile() && entry.name.endsWith('.md')) {
78
203
  const slug = entry.name.replace(/\.md$/, '');
79
- if (slug !== 'index') {
204
+ if (slug !== 'index' && slug !== 'README' && slug !== 'readme') {
80
205
  paths.push([...currentPath, slug]);
81
206
  } else if (currentPath.length > 0) {
82
207
  paths.push(currentPath);
83
208
  }
84
209
  }
85
210
  }
211
+ } catch (error) {
212
+ console.error(`Error traversing directory ${dir}:`, error);
213
+ }
86
214
  }
87
215
 
216
+ try {
88
217
  traverseDir(docsDirectory);
218
+ } catch (error) {
219
+ console.error(`Error getting doc paths from ${docsDirectory}:`, error);
220
+ }
221
+
89
222
  return paths;
90
223
  }
91
224
 
92
- // Comment out for dev mode - re-enable for production build
93
- // export const dynamic = 'force-static';
94
- // export const dynamicParams = false;
225
+ export const dynamicParams = false;
226
+
227
+ export function generateStaticParams(): Array<{ slug: string[] }> {
228
+ try {
229
+ if (!fs.existsSync(docsDirectory)) {
230
+ console.warn(`Docs directory not found: ${docsDirectory}`);
231
+ return [{ slug: [] }];
232
+ }
95
233
 
96
- export async function generateStaticParams() {
97
234
  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 [
235
+ const result = [
101
236
  { slug: [] },
102
- ...paths.map((slugParts) => ({
103
- slug: slugParts.map(part => part.toLowerCase()),
237
+ ...paths.map(slugParts => ({
238
+ slug: slugParts.map(p => String(p).toLowerCase())
104
239
  }))
105
240
  ];
241
+
242
+ return result;
243
+ } catch (error) {
244
+ console.error('Error in generateStaticParams:', error);
245
+ return [{ slug: [] }];
246
+ }
106
247
  }
107
248
 
108
249
  export default async function DocsPage({ params }: PageProps) {
109
250
  const { slug: slugParam } = await params;
110
251
  const slug = slugParam || [];
111
252
 
253
+ // Fetch GitHub repo info for root docs page (with error handling)
254
+ let repoInfo = null;
255
+ if (slug.length === 0) {
256
+ try {
257
+ repoInfo = await fetchRepoInfo();
258
+ } catch (error) {
259
+ console.error('Failed to fetch GitHub repo info:', error);
260
+ // Continue without repo info rather than crashing
261
+ }
262
+ }
263
+
112
264
  // Handle root /docs route - CLEAN, PROFESSIONAL DESIGN
113
265
  if (slug.length === 0) {
114
266
  return (
115
267
  <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
268
+ {/* Hero Section */}
269
+ <div className="bg-gradient-to-br from-secondary via-primary to-accent text-white py-16 px-4">
270
+ <div className="container mx-auto max-w-6xl text-center">
271
+ <div className="inline-flex items-center justify-center w-20 h-20 bg-white/20 backdrop-blur-sm rounded-full mb-6">
272
+ <svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
273
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
274
+ </svg>
275
+ </div>
276
+ <h1 className="text-5xl font-bold mb-4">Documentation</h1>
277
+ <p className="text-xl text-white/90 mb-2">
278
+ Complete guides for building portable, framework-agnostic AI agents
122
279
  </p>
280
+ <p className="text-lg text-white/80 mb-6">
281
+ Learn OSSA • Build Agents • Deploy Anywhere
282
+ </p>
283
+ {repoInfo && (
284
+ <div className="flex items-center justify-center gap-6 text-white/90">
285
+ <a
286
+ href={`https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}`}
287
+ target="_blank"
288
+ rel="noopener noreferrer"
289
+ className="flex items-center gap-2 hover:text-white transition-colors"
290
+ >
291
+ <svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
292
+ <path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" />
293
+ </svg>
294
+ <span className="font-semibold">{repoInfo.stars.toLocaleString()}</span>
295
+ <span className="text-white/70">stars</span>
296
+ </a>
297
+ <a
298
+ href={`https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}/forks`}
299
+ target="_blank"
300
+ rel="noopener noreferrer"
301
+ className="flex items-center gap-2 hover:text-white transition-colors"
302
+ >
303
+ <svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
304
+ <path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
305
+ </svg>
306
+ <span className="font-semibold">{repoInfo.forks.toLocaleString()}</span>
307
+ <span className="text-white/70">forks</span>
308
+ </a>
309
+ <a
310
+ href={`https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}/issues`}
311
+ target="_blank"
312
+ rel="noopener noreferrer"
313
+ className="flex items-center gap-2 hover:text-white transition-colors"
314
+ >
315
+ <svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
316
+ <path fillRule="evenodd" d="M2.5 12a9.5 9.5 0 1119 0 9.5 9.5 0 01-19 0zM12 3.5a8.5 8.5 0 100 17 8.5 8.5 0 000-17zM12 8a1 1 0 011 1v2a1 1 0 11-2 0V9a1 1 0 011-1zm0 6a1 1 0 011 1v.5a1 1 0 11-2 0V15a1 1 0 011-1z" clipRule="evenodd" />
317
+ </svg>
318
+ <span className="font-semibold">{repoInfo.openIssues}</span>
319
+ <span className="text-white/70">issues</span>
320
+ </a>
321
+ <a
322
+ href={`https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}/pulls`}
323
+ target="_blank"
324
+ rel="noopener noreferrer"
325
+ className="flex items-center gap-2 hover:text-white transition-colors"
326
+ >
327
+ <svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
328
+ <path fillRule="evenodd" d="M2.5 12a9.5 9.5 0 1119 0 9.5 9.5 0 01-19 0zM12 3.5a8.5 8.5 0 100 17 8.5 8.5 0 000-17zM12 8a1 1 0 011 1v2a1 1 0 11-2 0V9a1 1 0 011-1zm0 6a1 1 0 011 1v.5a1 1 0 11-2 0V15a1 1 0 011-1z" clipRule="evenodd" />
329
+ </svg>
330
+ <span className="font-semibold">{repoInfo.openPullRequests}</span>
331
+ <span className="text-white/70">PRs</span>
332
+ </a>
333
+ </div>
334
+ )}
123
335
  </div>
124
336
  </div>
125
337
 
126
338
  {/* Main Content */}
127
339
  <div className="container mx-auto max-w-6xl px-4 py-12">
128
340
 
129
- {/* Quick Start - Clean and Simple */}
341
+ {/* Featured Quick Start */}
130
342
  <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">
343
+ <div className="bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50 rounded-2xl p-8 border-2 border-blue-200 shadow-lg">
344
+ <div className="flex items-start gap-6">
345
+ <div className="w-16 h-16 bg-gradient-to-br from-secondary via-primary to-accent rounded-xl flex items-center justify-center flex-shrink-0">
346
+ <svg className="h-8 w-8 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
135
347
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
136
348
  </svg>
137
349
  </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.
350
+ <div className="flex-1">
351
+ <h3 className="text-2xl font-bold text-gray-900 mb-3">Quick Start</h3>
352
+ <p className="text-lg text-gray-700 mb-4">
353
+ New to OSSA? Start with the 5-minute overview, then build your first agent in minutes.
142
354
  </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">
355
+ <div className="flex flex-wrap gap-4">
356
+ <Link href="/docs/getting-started/5-minute-overview" className="btn-primary">
145
357
  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">
358
+ </Link>
359
+ <Link href="/docs/getting-started/hello-world" className="btn-outline">
148
360
  Hello World →
149
- </a>
361
+ </Link>
150
362
  </div>
151
363
  </div>
152
364
  </div>
153
365
  </div>
154
366
  </section>
155
367
 
156
- {/* Core Sections - Simple Grid */}
368
+ {/* Core Documentation - Blog Style Teasers */}
157
369
  <section className="mb-16">
158
- <h2 className="text-2xl font-bold text-gray-900 mb-6">Core Documentation</h2>
370
+ <div className="flex items-center mb-8">
371
+ <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4">
372
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
373
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
374
+ </svg>
375
+ </div>
376
+ <h2 className="text-3xl font-bold text-primary">Core Documentation</h2>
377
+ </div>
159
378
  <div className="grid md:grid-cols-3 gap-6">
160
379
 
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>
380
+ {/* Getting Started - Blog Teaser */}
381
+ <Link href="/docs/getting-started/5-minute-overview" className="group bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
382
+ <div className="w-12 h-12 bg-gradient-to-br from-blue-500 to-blue-600 rounded-lg flex items-center justify-center mb-4">
383
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
384
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
385
+ </svg>
386
+ </div>
387
+ <h3 className="text-xl font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">Getting Started</h3>
388
+ <p className="text-gray-600 mb-4 text-sm">
389
+ Learn the fundamentals of OSSA and build your first agent in minutes.
390
+ </p>
391
+ <ul className="space-y-2 text-sm">
392
+ <li className="text-gray-700 flex items-center">
393
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
394
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
395
+ </svg>
396
+ 5-Minute Overview
174
397
  </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>
398
+ <li className="text-gray-700 flex items-center">
399
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
400
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
401
+ </svg>
402
+ Hello World
179
403
  </li>
180
- <li>
181
- <a href="/docs/core-concepts/project-structure" className="text-blue-600 hover:text-blue-700">
182
- Project Structure
183
- </a>
404
+ <li className="text-gray-700 flex items-center">
405
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
406
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
407
+ </svg>
408
+ Your First Agent
184
409
  </li>
185
410
  </ul>
186
- </div>
411
+ </Link>
187
412
 
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>
413
+ {/* API Reference - Blog Teaser */}
414
+ <Link href="/schema" className="group bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
415
+ <div className="w-12 h-12 bg-gradient-to-br from-green-500 to-green-600 rounded-lg flex items-center justify-center mb-4">
416
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
417
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
418
+ </svg>
419
+ </div>
420
+ <h3 className="text-xl font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">API Reference</h3>
421
+ <p className="text-gray-600 mb-4 text-sm">
422
+ Complete schema reference, OpenAPI extensions, and quick reference guides.
423
+ </p>
424
+ <ul className="space-y-2 text-sm">
425
+ <li className="text-gray-700 flex items-center">
426
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
427
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
428
+ </svg>
429
+ Schema Reference
201
430
  </li>
202
- <li>
203
- <a href="/docs/quick-reference" className="text-blue-600 hover:text-blue-700">
204
- Quick Reference
205
- </a>
431
+ <li className="text-gray-700 flex items-center">
432
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
433
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
434
+ </svg>
435
+ OpenAPI Extensions
206
436
  </li>
207
- <li>
208
- <a href="/examples" className="text-blue-600 hover:text-blue-700">
209
- Examples
210
- </a>
437
+ <li className="text-gray-700 flex items-center">
438
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
439
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
440
+ </svg>
441
+ Quick Reference
211
442
  </li>
212
443
  </ul>
213
- </div>
444
+ </Link>
214
445
 
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>
446
+ {/* Migration Guides - Blog Teaser */}
447
+ <Link href="/docs/migration-guides/langchain-to-ossa" className="group bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
448
+ <div className="w-12 h-12 bg-gradient-to-br from-purple-500 to-purple-600 rounded-lg flex items-center justify-center mb-4">
449
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
450
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4" />
451
+ </svg>
452
+ </div>
453
+ <h3 className="text-xl font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">Migration Guides</h3>
454
+ <p className="text-gray-600 mb-4 text-sm">
455
+ Migrate your existing agents from popular frameworks to OSSA.
456
+ </p>
457
+ <ul className="space-y-2 text-sm">
458
+ <li className="text-gray-700 flex items-center">
459
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
460
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
461
+ </svg>
462
+ From LangChain
228
463
  </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>
464
+ <li className="text-gray-700 flex items-center">
465
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
466
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
467
+ </svg>
468
+ From Anthropic MCP
233
469
  </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>
470
+ <li className="text-gray-700 flex items-center">
471
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
472
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
473
+ </svg>
474
+ From OpenAI
238
475
  </li>
239
476
  </ul>
240
- </div>
477
+ </Link>
241
478
 
242
479
  </div>
243
480
  </section>
244
481
 
245
- {/* For Developers */}
482
+ {/* By Role - Blog Style Cards */}
246
483
  <section className="mb-16">
247
- <h2 className="text-2xl font-bold text-gray-900 mb-6">By Role</h2>
484
+ <div className="flex items-center mb-8">
485
+ <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4">
486
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
487
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
488
+ </svg>
489
+ </div>
490
+ <h2 className="text-3xl font-bold text-primary">By Role</h2>
491
+ </div>
248
492
  <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>
493
+ <Link href="/docs/for-audiences/developers" className="group bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300 text-center">
494
+ <div className="w-12 h-12 bg-gradient-to-br from-blue-500 to-blue-600 rounded-lg flex items-center justify-center mx-auto mb-4">
495
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
496
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" />
497
+ </svg>
498
+ </div>
499
+ <h3 className="font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">Developers</h3>
500
+ <p className="text-sm text-gray-600">Build agents with code</p>
501
+ </Link>
502
+ <Link href="/docs/for-audiences/architects" className="group bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300 text-center">
503
+ <div className="w-12 h-12 bg-gradient-to-br from-green-500 to-green-600 rounded-lg flex items-center justify-center mx-auto mb-4">
504
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
505
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z" />
506
+ </svg>
507
+ </div>
508
+ <h3 className="font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">Architects</h3>
255
509
  <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>
510
+ </Link>
511
+ <Link href="/docs/for-audiences/enterprises" className="group bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300 text-center">
512
+ <div className="w-12 h-12 bg-gradient-to-br from-purple-500 to-purple-600 rounded-lg flex items-center justify-center mx-auto mb-4">
513
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
514
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" />
515
+ </svg>
516
+ </div>
517
+ <h3 className="font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">Enterprises</h3>
259
518
  <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>
519
+ </Link>
520
+ <Link href="/docs/for-audiences/students-researchers" className="group bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300 text-center">
521
+ <div className="w-12 h-12 bg-gradient-to-br from-orange-500 to-orange-600 rounded-lg flex items-center justify-center mx-auto mb-4">
522
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
523
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
524
+ </svg>
525
+ </div>
526
+ <h3 className="font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">Researchers</h3>
263
527
  <p className="text-sm text-gray-600">Academic resources</p>
264
- </a>
528
+ </Link>
265
529
  </div>
266
530
  </section>
267
531
 
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">
532
+ {/* GitHub Repository Info */}
533
+ {repoInfo && (
534
+ <section className="mb-16">
535
+ <div className="bg-gradient-to-br from-gray-50 to-blue-50 rounded-2xl p-8 border-2 border-gray-200">
536
+ <div className="flex items-center justify-between mb-6">
537
+ <div className="flex items-center gap-4">
538
+ <div className="w-16 h-16 bg-gradient-to-br from-gray-800 to-gray-900 rounded-xl flex items-center justify-center">
539
+ <svg className="w-8 h-8 text-white" fill="currentColor" viewBox="0 0 24 24">
540
+ <path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" />
541
+ </svg>
542
+ </div>
543
+ <div>
544
+ <h3 className="text-2xl font-bold text-gray-900 mb-1">
545
+ <a
546
+ href={`https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}`}
547
+ target="_blank"
548
+ rel="noopener noreferrer"
549
+ className="hover:text-primary transition-colors"
550
+ >
551
+ {GITHUB_OWNER}/{GITHUB_REPO}
552
+ </a>
553
+ </h3>
554
+ {repoInfo.description && (
555
+ <p className="text-gray-600">{repoInfo.description}</p>
556
+ )}
557
+ </div>
558
+ </div>
559
+ <Link
560
+ href={`https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}`}
561
+ target="_blank"
562
+ rel="noopener noreferrer"
563
+ className="btn-primary whitespace-nowrap"
564
+ >
565
+ View on GitHub
566
+ </Link>
567
+ </div>
568
+ <div className="grid md:grid-cols-5 gap-4 pt-6 border-t-2 border-gray-200">
569
+ <div className="text-center">
570
+ <div className="text-3xl font-bold text-primary mb-1">{repoInfo.stars.toLocaleString()}</div>
571
+ <div className="text-sm text-gray-600">Stars</div>
572
+ </div>
573
+ <div className="text-center">
574
+ <div className="text-3xl font-bold text-primary mb-1">{repoInfo.forks.toLocaleString()}</div>
575
+ <div className="text-sm text-gray-600">Forks</div>
576
+ </div>
577
+ <div className="text-center">
578
+ <div className="text-3xl font-bold text-primary mb-1">{repoInfo.openIssues}</div>
579
+ <div className="text-sm text-gray-600">Issues</div>
580
+ </div>
581
+ <div className="text-center">
582
+ <div className="text-3xl font-bold text-primary mb-1">{repoInfo.openPullRequests}</div>
583
+ <div className="text-sm text-gray-600">Pull Requests</div>
584
+ </div>
585
+ <div className="text-center">
586
+ <div className="text-3xl font-bold text-primary mb-1">{repoInfo.language || 'N/A'}</div>
587
+ <div className="text-sm text-gray-600">Language</div>
588
+ </div>
589
+ </div>
590
+ </div>
591
+ </section>
592
+ )}
593
+
594
+ {/* Resources & Tools */}
595
+ <section className="border-t-2 border-gray-200 pt-12">
596
+ <div className="flex items-center mb-8">
597
+ <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4">
598
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
599
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />
600
+ </svg>
601
+ </div>
602
+ <h2 className="text-3xl font-bold text-primary">Resources & Tools</h2>
603
+ </div>
604
+ <div className="grid md:grid-cols-3 gap-6">
605
+ <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
606
+ <h3 className="text-lg font-bold text-gray-900 mb-4">Community</h3>
607
+ <ul className="space-y-3">
274
608
  <li>
275
- <a href="https://github.com/blueflyio/openstandardagents/issues" className="text-blue-600 hover:text-blue-700">
609
+ <a href="https://github.com/blueflyio/openstandardagents/issues" className="text-primary hover:text-secondary font-medium flex items-center">
610
+ <svg className="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20">
611
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
612
+ </svg>
276
613
  Issues & Bugs
277
614
  </a>
278
615
  </li>
279
616
  <li>
280
- <a href="/docs/contributing" className="text-blue-600 hover:text-blue-700">
617
+ <Link href="/docs/contributing" className="text-primary hover:text-secondary font-medium flex items-center">
618
+ <svg className="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20">
619
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
620
+ </svg>
281
621
  Contributing
282
- </a>
622
+ </Link>
283
623
  </li>
284
624
  </ul>
285
625
  </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">
626
+ <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
627
+ <h3 className="text-lg font-bold text-gray-900 mb-4">Resources</h3>
628
+ <ul className="space-y-3">
289
629
  <li>
290
- <a href="/docs/changelog" className="text-blue-600 hover:text-blue-700">
630
+ <Link href="/docs/changelog" className="text-primary hover:text-secondary font-medium flex items-center">
631
+ <svg className="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20">
632
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
633
+ </svg>
291
634
  Changelog
292
- </a>
635
+ </Link>
293
636
  </li>
294
637
  <li>
295
- <a href="/blog" className="text-blue-600 hover:text-blue-700">
638
+ <Link href="/blog" className="text-primary hover:text-secondary font-medium flex items-center">
639
+ <svg className="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20">
640
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
641
+ </svg>
296
642
  Blog
297
- </a>
643
+ </Link>
298
644
  </li>
299
645
  </ul>
300
646
  </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">
647
+ <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
648
+ <h3 className="text-lg font-bold text-gray-900 mb-4">Tools</h3>
649
+ <ul className="space-y-3">
304
650
  <li>
305
- <a href="/playground" className="text-blue-600 hover:text-blue-700">
651
+ <Link href="/playground" className="text-primary hover:text-secondary font-medium flex items-center">
652
+ <svg className="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20">
653
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
654
+ </svg>
306
655
  Playground
307
- </a>
656
+ </Link>
308
657
  </li>
309
658
  <li>
310
- <a href="/schema" className="text-blue-600 hover:text-blue-700">
659
+ <Link href="/schema" className="text-primary hover:text-secondary font-medium flex items-center">
660
+ <svg className="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20">
661
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
662
+ </svg>
311
663
  Schema Explorer
312
- </a>
664
+ </Link>
313
665
  </li>
314
666
  </ul>
315
667
  </div>
@@ -327,6 +679,152 @@ export default async function DocsPage({ params }: PageProps) {
327
679
  notFound();
328
680
  }
329
681
 
682
+ // Special handling for schema-reference page
683
+ const isSchemaReference = slug.length === 1 && slug[0] === 'schema-reference';
684
+
685
+ if (isSchemaReference) {
686
+ return (
687
+ <>
688
+ {/* Hero Section */}
689
+ <div className="bg-gradient-to-br from-secondary via-primary to-accent text-white py-16 px-4">
690
+ <div className="container mx-auto max-w-6xl text-center">
691
+ <div className="inline-flex items-center justify-center w-20 h-20 bg-white/20 backdrop-blur-sm rounded-full mb-6">
692
+ <svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
693
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
694
+ </svg>
695
+ </div>
696
+ <h1 className="text-5xl font-bold mb-4">Schema Reference</h1>
697
+ <p className="text-xl text-white/90 mb-2">
698
+ Complete reference documentation for the OSSA Agent Manifest Schema
699
+ </p>
700
+ <p className="text-lg text-white/80">
701
+ Framework-agnostic • Portable • Validated
702
+ </p>
703
+ </div>
704
+ </div>
705
+
706
+ <div className="flex min-h-screen">
707
+ <DocsSidebar />
708
+ <div className="flex-1 flex flex-col">
709
+ <main className="flex-1 container mx-auto max-w-6xl px-4 py-12">
710
+ {/* Quick Links Section */}
711
+ <section className="mb-12">
712
+ <div className="grid md:grid-cols-3 gap-6 mb-8">
713
+ <Link href="/schema" className="group bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
714
+ <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mb-4">
715
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
716
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
717
+ </svg>
718
+ </div>
719
+ <h3 className="text-xl font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">Interactive Schema Explorer</h3>
720
+ <p className="text-gray-600 text-sm">Explore the JSON schema interactively with live examples</p>
721
+ </Link>
722
+ <Link href="/playground" className="group bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
723
+ <div className="w-12 h-12 bg-gradient-to-br from-green-500 to-green-600 rounded-lg flex items-center justify-center mb-4">
724
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
725
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" />
726
+ </svg>
727
+ </div>
728
+ <h3 className="text-xl font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">Validate Your Agent</h3>
729
+ <p className="text-gray-600 text-sm">Test and validate your agent manifest in real-time</p>
730
+ </Link>
731
+ <Link href="/docs/openapi-extensions" className="group bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
732
+ <div className="w-12 h-12 bg-gradient-to-br from-purple-500 to-purple-600 rounded-lg flex items-center justify-center mb-4">
733
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
734
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01" />
735
+ </svg>
736
+ </div>
737
+ <h3 className="text-xl font-bold text-gray-900 mb-2 group-hover:text-primary transition-colors">OpenAPI Extensions</h3>
738
+ <p className="text-gray-600 text-sm">Learn how OSSA extends OpenAPI for agent definitions</p>
739
+ </Link>
740
+ </div>
741
+ </section>
742
+
743
+ {/* Schema Components Grid */}
744
+ <section className="mb-12">
745
+ <div className="flex items-center mb-8">
746
+ <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4">
747
+ <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
748
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />
749
+ </svg>
750
+ </div>
751
+ <h2 className="text-3xl font-bold text-primary">Schema Components</h2>
752
+ </div>
753
+ <div className="grid md:grid-cols-2 gap-6">
754
+ <div className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
755
+ <h3 className="text-xl font-bold mb-3 text-primary">Core Objects</h3>
756
+ <ul className="space-y-2 text-gray-700">
757
+ <li className="flex items-center">
758
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
759
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
760
+ </svg>
761
+ <Link href="/docs/schema-reference/ossa-manifest" className="hover:text-primary">OSSA Manifest</Link>
762
+ </li>
763
+ <li className="flex items-center">
764
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
765
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
766
+ </svg>
767
+ <Link href="/docs/schema-reference/agent-spec" className="hover:text-primary">Agent Spec</Link>
768
+ </li>
769
+ <li className="flex items-center">
770
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
771
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
772
+ </svg>
773
+ <Link href="/docs/schema-reference/llm-config" className="hover:text-primary">LLM Configuration</Link>
774
+ </li>
775
+ <li className="flex items-center">
776
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
777
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
778
+ </svg>
779
+ <Link href="/docs/schema-reference/tools" className="hover:text-primary">Tools</Link>
780
+ </li>
781
+ </ul>
782
+ </div>
783
+ <div className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
784
+ <h3 className="text-xl font-bold mb-3 text-primary">Configuration Objects</h3>
785
+ <ul className="space-y-2 text-gray-700">
786
+ <li className="flex items-center">
787
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
788
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
789
+ </svg>
790
+ <Link href="/docs/schema-reference/taxonomy" className="hover:text-primary">Taxonomy</Link>
791
+ </li>
792
+ <li className="flex items-center">
793
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
794
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
795
+ </svg>
796
+ <Link href="/docs/schema-reference/autonomy" className="hover:text-primary">Autonomy</Link>
797
+ </li>
798
+ <li className="flex items-center">
799
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
800
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
801
+ </svg>
802
+ <Link href="/docs/schema-reference/constraints" className="hover:text-primary">Constraints</Link>
803
+ </li>
804
+ <li className="flex items-center">
805
+ <svg className="w-4 h-4 text-primary mr-2" fill="currentColor" viewBox="0 0 20 20">
806
+ <path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
807
+ </svg>
808
+ <Link href="/docs/schema-reference/observability" className="hover:text-primary">Observability</Link>
809
+ </li>
810
+ </ul>
811
+ </div>
812
+ </div>
813
+ </section>
814
+
815
+ {/* Main Content */}
816
+ <article className="prose prose-lg max-w-none">
817
+ <div className="mt-8">
818
+ <MarkdownContent content={doc.content} currentPath={`/docs/${slug.join('/')}`} />
819
+ </div>
820
+ </article>
821
+ </main>
822
+ </div>
823
+ </div>
824
+ </>
825
+ );
826
+ }
827
+
330
828
  return (
331
829
  <div className="flex min-h-screen">
332
830
  <DocsSidebar />
@@ -338,7 +836,7 @@ export default async function DocsPage({ params }: PageProps) {
338
836
  <p className="text-xl text-gray-600">{doc.metadata.description}</p>
339
837
  )}
340
838
  <div className="mt-8">
341
- <MarkdownContent content={doc.content} />
839
+ <MarkdownContent content={doc.content} currentPath={`/docs/${slug.join('/')}`} />
342
840
  </div>
343
841
  </article>
344
842
  </main>