@bluefly/openstandardagents 0.2.5-RC → 0.2.8

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 (365) hide show
  1. package/.devfile.yaml +1 -1
  2. package/.env.example +1 -1
  3. package/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
  5. package/.github/workflows/dependabot-comment.yml +34 -0
  6. package/.github/workflows/pr-comment.yml +33 -0
  7. package/.husky/pre-commit +5 -0
  8. package/.kiro/config.json +21 -0
  9. package/.kiro/settings/mcp.json +61 -0
  10. package/.kiro/specs/scripts-migration-api-first/design.md +883 -0
  11. package/.kiro/specs/scripts-migration-api-first/requirements.md +165 -0
  12. package/.kiro/specs/scripts-migration-api-first/tasks.md +539 -0
  13. package/.kiro/specs/{website-design-audit → website-brand-identity}/design.md +381 -0
  14. package/.kiro/specs/{website-design-audit → website-brand-identity}/requirements.md +88 -0
  15. package/.kiro/specs/website-brand-identity/tasks.md +981 -0
  16. package/.version.json +2 -2
  17. package/.wiki-config.json +24 -0
  18. package/CHANGELOG.md +34 -18
  19. package/CODEOWNERS +75 -0
  20. package/CONTRIBUTING.md +1 -1
  21. package/README.md +176 -239
  22. package/bin/ossa-dev +42 -0
  23. package/bin/ossa-export +32 -0
  24. package/bin/ossa-generate +60 -0
  25. package/bin/ossa-health +40 -0
  26. package/bin/ossa-init +26 -0
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/repositories/schema.repository.d.ts +6 -1
  32. package/dist/repositories/schema.repository.d.ts.map +1 -1
  33. package/dist/repositories/schema.repository.js +63 -36
  34. package/dist/repositories/schema.repository.js.map +1 -1
  35. package/dist/services/github-sync/github-client.d.ts +14 -0
  36. package/dist/services/github-sync/github-client.d.ts.map +1 -0
  37. package/dist/services/github-sync/github-client.js +41 -0
  38. package/dist/services/github-sync/github-client.js.map +1 -0
  39. package/dist/services/github-sync/gitlab-client.d.ts +17 -0
  40. package/dist/services/github-sync/gitlab-client.d.ts.map +1 -0
  41. package/dist/services/github-sync/gitlab-client.js +42 -0
  42. package/dist/services/github-sync/gitlab-client.js.map +1 -0
  43. package/dist/services/github-sync/schemas.d.ts +46 -0
  44. package/dist/services/github-sync/schemas.d.ts.map +1 -0
  45. package/dist/services/github-sync/schemas.js +36 -0
  46. package/dist/services/github-sync/schemas.js.map +1 -0
  47. package/dist/services/github-sync/sync.service.d.ts +27 -0
  48. package/dist/services/github-sync/sync.service.d.ts.map +1 -0
  49. package/dist/services/github-sync/sync.service.js +99 -0
  50. package/dist/services/github-sync/sync.service.js.map +1 -0
  51. package/dist/services/migration.service.d.ts +4 -3
  52. package/dist/services/migration.service.d.ts.map +1 -1
  53. package/dist/services/migration.service.js +11 -10
  54. package/dist/services/migration.service.js.map +1 -1
  55. package/dist/services/release-automation/release.service.js +1 -1
  56. package/dist/services/release-automation/release.service.js.map +1 -1
  57. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  58. package/dist/services/runtime/claude/capability-mapper.d.ts +84 -0
  59. package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -0
  60. package/dist/services/runtime/claude/capability-mapper.js +245 -0
  61. package/dist/services/runtime/claude/capability-mapper.js.map +1 -0
  62. package/dist/services/runtime/claude/claude-adapter.d.ts +80 -0
  63. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -0
  64. package/dist/services/runtime/claude/claude-adapter.js +287 -0
  65. package/dist/services/runtime/claude/claude-adapter.js.map +1 -0
  66. package/dist/services/runtime/claude/manifest-parser.d.ts +77 -0
  67. package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -0
  68. package/dist/services/runtime/claude/manifest-parser.js +169 -0
  69. package/dist/services/runtime/claude/manifest-parser.js.map +1 -0
  70. package/dist/services/runtime/claude/types.d.ts +115 -0
  71. package/dist/services/runtime/claude/types.d.ts.map +1 -0
  72. package/dist/services/runtime/claude/types.js +6 -0
  73. package/dist/services/runtime/claude/types.js.map +1 -0
  74. package/dist/services/validation.service.d.ts.map +1 -1
  75. package/dist/services/validation.service.js +12 -1
  76. package/dist/services/validation.service.js.map +1 -1
  77. package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
  78. package/dist/spec/v0.2.6/CHANGELOG.md +401 -0
  79. package/dist/spec/v0.2.6/README.md +72 -0
  80. package/dist/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
  81. package/dist/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  82. package/dist/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
  83. package/dist/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
  84. package/dist/spec/v0.2.6-dev/CHANGELOG.md +164 -0
  85. package/dist/spec/v0.2.6-dev/README.md +75 -0
  86. package/dist/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
  87. package/dist/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  88. package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
  89. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
  90. package/dist/spec/v0.2.7/core/agentgraph.md +324 -0
  91. package/dist/spec/v0.2.7/resources/agentgraph.yaml +135 -0
  92. package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
  93. package/dist/spec/v0.2.8/README.md +72 -0
  94. package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  95. package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  96. package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  97. package/dist/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
  98. package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  99. package/dist/types/index.d.ts +3 -2
  100. package/dist/types/index.d.ts.map +1 -1
  101. package/dist/utils/index.d.ts +6 -0
  102. package/dist/utils/index.d.ts.map +1 -0
  103. package/dist/utils/index.js +6 -0
  104. package/dist/utils/index.js.map +1 -0
  105. package/dist/utils/version.d.ts +68 -0
  106. package/dist/utils/version.d.ts.map +1 -0
  107. package/dist/utils/version.js +156 -0
  108. package/dist/utils/version.js.map +1 -0
  109. package/docs/brand-guide/01-brand-overview.md +37 -0
  110. package/docs/brand-guide/02-logo-usage.md +43 -0
  111. package/docs/brand-guide/03-color-palette.md +70 -0
  112. package/docs/brand-guide/04-typography.md +82 -0
  113. package/docs/brand-guide/05-voice-and-tone.md +108 -0
  114. package/docs/brand-guide/06-visual-elements.md +137 -0
  115. package/docs/brand-guide/07-application-examples.md +153 -0
  116. package/docs/brand-guide/OssaLogo/OssA_Logo.svg +21 -0
  117. package/docs/brand-guide/OssaLogo/brand.af +0 -0
  118. package/docs/brand-guide/README.md +107 -0
  119. package/docs/comparison.md +315 -0
  120. package/docs/operations/automation-roadmap.md +245 -0
  121. package/docs/operations/github-sync-strategy.md +357 -0
  122. package/eslint-report.json +1 -0
  123. package/examples/adk-integration/code-review-workflow.yml +1 -1
  124. package/examples/adk-integration/customer-support.yml +1 -1
  125. package/examples/adk-integration/data-pipeline.yml +1 -1
  126. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  127. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  128. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  129. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  130. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  131. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  132. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  133. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  134. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  135. package/examples/anthropic/claude-assistant.ossa.json +5 -4
  136. package/examples/autogen/multi-agent.ossa.json +6 -4
  137. package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
  138. package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
  139. package/examples/common_npm/agent-router.ossa.yaml +1 -0
  140. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  141. package/examples/crewai/research-team.ossa.json +14 -5
  142. package/examples/cursor/code-review-agent.ossa.json +21 -6
  143. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
  144. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  145. package/examples/extensions/drupal-v1.yml +1 -1
  146. package/examples/extensions/kagent-v1.yml +1 -1
  147. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  148. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  149. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  150. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  151. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  152. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
  153. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  154. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  155. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  156. package/examples/langchain/chain-agent.ossa.json +21 -5
  157. package/examples/langflow/workflow-agent.ossa.json +2 -3
  158. package/examples/langgraph/state-machine-agent.ossa.json +2 -3
  159. package/examples/llamaindex/rag-agent.ossa.json +2 -3
  160. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  161. package/examples/multi-agent/README.md +74 -0
  162. package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
  163. package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
  164. package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
  165. package/examples/openai/basic-agent.ossa.yaml +1 -1
  166. package/examples/openai/multi-tool-agent.ossa.json +33 -10
  167. package/examples/openai/swarm-agent.ossa.json +18 -5
  168. package/examples/production/document-analyzer-openai.yml +1 -1
  169. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  170. package/examples/spec-examples/audit-agent.yml +1 -1
  171. package/examples/spec-examples/chat-agent.yml +1 -1
  172. package/examples/spec-examples/compliance-agent.yml +1 -1
  173. package/examples/spec-examples/monitoring-agent.yml +1 -1
  174. package/examples/spec-examples/workflow-agent.yml +1 -1
  175. package/examples/templates/ossa-compliance.yaml +1 -1
  176. package/examples/vercel/edge-agent.ossa.json +5 -4
  177. package/gl-code-quality-report.json +62 -0
  178. package/llms-ctx-full.txt +39 -0
  179. package/llms-ctx.txt +39 -0
  180. package/llms.txt +47 -0
  181. package/openapi/github-sync.yaml +115 -0
  182. package/package.json +26 -4
  183. package/scripts/README.md +103 -0
  184. package/scripts/auto-rebase-mrs.ts +106 -0
  185. package/scripts/batch-dependabot.sh +57 -0
  186. package/scripts/configure-gitlab-branch-protection.ts +95 -0
  187. package/scripts/create-issue-helper.ts +238 -0
  188. package/scripts/create-milestone-issue.ts +73 -0
  189. package/scripts/eslint-to-codequality.cjs +34 -0
  190. package/scripts/fix-schema-formats.js +82 -0
  191. package/scripts/generate-agents-catalog.ts +77 -0
  192. package/scripts/generate-api-docs.ts +218 -0
  193. package/scripts/generate-cli-docs.ts +410 -0
  194. package/scripts/generate-config-docs.ts +109 -0
  195. package/scripts/generate-errors-docs.ts +76 -0
  196. package/scripts/generate-examples-docs.ts +99 -0
  197. package/scripts/generate-llms-ctx.sh +17 -0
  198. package/scripts/generate-schema-docs.ts +317 -0
  199. package/scripts/generate-types-docs.ts +48 -0
  200. package/scripts/lowercase-docs.ts +43 -0
  201. package/scripts/manage-milestone-mrs.ts +279 -0
  202. package/scripts/rebase-all-mrs.sh +75 -0
  203. package/scripts/sync-github-pr.sh +48 -0
  204. package/scripts/sync-version.js +32 -0
  205. package/scripts/sync-wiki.sh +50 -0
  206. package/scripts/validate-all.js +127 -0
  207. package/scripts/validate-schema.ts +2 -1
  208. package/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
  209. package/spec/v0.2.6/CHANGELOG.md +401 -0
  210. package/spec/v0.2.6/README.md +72 -0
  211. package/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
  212. package/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  213. package/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
  214. package/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
  215. package/spec/v0.2.6-dev/CHANGELOG.md +164 -0
  216. package/spec/v0.2.6-dev/README.md +75 -0
  217. package/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
  218. package/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  219. package/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
  220. package/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
  221. package/spec/v0.2.7/core/agentgraph.md +324 -0
  222. package/spec/v0.2.7/resources/agentgraph.yaml +135 -0
  223. package/spec/v0.2.8/CHANGELOG.md +401 -0
  224. package/spec/v0.2.8/README.md +72 -0
  225. package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  226. package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  227. package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  228. package/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
  229. package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  230. package/test-results/junit.xml +299 -0
  231. package/.kiro/specs/agent-buildkit-templates/design.md +0 -495
  232. package/.kiro/specs/agent-buildkit-templates/requirements.md +0 -165
  233. package/.kiro/specs/kiro-ide-supercharger/README.md +0 -202
  234. package/.kiro/specs/kiro-ide-supercharger/design.md +0 -1005
  235. package/.kiro/specs/kiro-ide-supercharger/requirements.md +0 -141
  236. package/.kiro/specs/kiro-ide-supercharger/tasks.md +0 -507
  237. package/bin/validate-ossa-0.2.5-RC.ts +0 -244
  238. package/docs/issue-19-completion-summary.md +0 -648
  239. package/docs/issue-19-validation.md +0 -351
  240. package/scripts/lib/exec.ts +0 -37
  241. package/scripts/lib/file-ops.ts +0 -58
  242. package/scripts/lib/version.ts +0 -83
  243. package/website/.lighthouserc.ts +0 -24
  244. package/website/.prettierrc +0 -10
  245. package/website/Dockerfile +0 -30
  246. package/website/app/about/page.tsx +0 -295
  247. package/website/app/blog/[slug]/page.tsx +0 -208
  248. package/website/app/blog/page.tsx +0 -249
  249. package/website/app/design-guide/page.tsx +0 -511
  250. package/website/app/docs/[[...slug]]/page.tsx +0 -847
  251. package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
  252. package/website/app/ecosystem/page.tsx +0 -375
  253. package/website/app/examples/page.tsx +0 -133
  254. package/website/app/globals.scss +0 -135
  255. package/website/app/layout.tsx +0 -106
  256. package/website/app/license/page.tsx +0 -183
  257. package/website/app/not-found.tsx +0 -18
  258. package/website/app/page.tsx +0 -474
  259. package/website/app/playground/page.tsx +0 -487
  260. package/website/app/robots.ts +0 -19
  261. package/website/app/rss.xml/route.ts +0 -74
  262. package/website/app/schema/page.tsx +0 -1001
  263. package/website/app/sitemap.ts +0 -56
  264. package/website/app/specification/page.tsx +0 -287
  265. package/website/components/InstallCommand.tsx +0 -96
  266. package/website/components/Logo.tsx +0 -97
  267. package/website/components/StructuredData.tsx +0 -65
  268. package/website/components/docs/DocsSearch.tsx +0 -104
  269. package/website/components/docs/DocsSidebar.tsx +0 -155
  270. package/website/components/docs/MarkdownContent.tsx +0 -401
  271. package/website/components/docs/VersionSelector.tsx +0 -105
  272. package/website/components/examples/ExamplesViewer.tsx +0 -293
  273. package/website/components/layout/Footer.tsx +0 -116
  274. package/website/components/layout/Header.tsx +0 -168
  275. package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
  276. package/website/components/schema/SchemaExplorer.tsx +0 -213
  277. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
  278. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
  279. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
  280. package/website/content/blog/introducing-ossa-framework.md +0 -328
  281. package/website/content/blog/ossa-production-results.md +0 -279
  282. package/website/content/blog/welcome-to-ossa.md +0 -43
  283. package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
  284. package/website/content/docs/00-HOME.md +0 -153
  285. package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +0 -107
  286. package/website/content/docs/Examples.md +0 -71
  287. package/website/content/docs/OpenAPI-Extensions.md +0 -934
  288. package/website/content/docs/adapters/openai-adapter.md +0 -693
  289. package/website/content/docs/architecture/execution-flow.md +0 -335
  290. package/website/content/docs/architecture/multi-agent-systems.md +0 -737
  291. package/website/content/docs/architecture/overview.md +0 -121
  292. package/website/content/docs/architecture/stack-integration.md +0 -461
  293. package/website/content/docs/changelog.md +0 -246
  294. package/website/content/docs/contributing.md +0 -599
  295. package/website/content/docs/core-concepts/Project-Structure.md +0 -348
  296. package/website/content/docs/ecosystem/framework-support.md +0 -819
  297. package/website/content/docs/ecosystem/overview.md +0 -366
  298. package/website/content/docs/examples/AIFlow-Framework-Integration-with-OSSA.md +0 -107
  299. package/website/content/docs/examples/Migration-Guides.md +0 -214
  300. package/website/content/docs/for-audiences/Architects.md +0 -224
  301. package/website/content/docs/for-audiences/Developers.md +0 -220
  302. package/website/content/docs/for-audiences/Enterprises.md +0 -256
  303. package/website/content/docs/for-audiences/Students-Researchers.md +0 -122
  304. package/website/content/docs/getting-started/5-Minute-Overview.md +0 -85
  305. package/website/content/docs/getting-started/First-Agent.md +0 -196
  306. package/website/content/docs/getting-started/Hello-World.md +0 -184
  307. package/website/content/docs/getting-started/Installation.md +0 -155
  308. package/website/content/docs/getting-started/index.md +0 -92
  309. package/website/content/docs/getting-started/running-agents.md +0 -309
  310. package/website/content/docs/getting-started.md +0 -91
  311. package/website/content/docs/integrations/aiflow.md +0 -104
  312. package/website/content/docs/integrations/drupal.md +0 -105
  313. package/website/content/docs/migration-guides/00-INDEX.md +0 -76
  314. package/website/content/docs/migration-guides/README.md +0 -133
  315. package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
  316. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
  317. package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
  318. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
  319. package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
  320. package/website/content/docs/migration-guides/index.md +0 -133
  321. package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
  322. package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
  323. package/website/content/docs/migration-guides/migration-manifest.json +0 -64
  324. package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
  325. package/website/content/docs/openapi-extensions/examples.md +0 -550
  326. package/website/content/docs/openapi-extensions/index.md +0 -551
  327. package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
  328. package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
  329. package/website/content/docs/ossa-compliant-badge.md +0 -251
  330. package/website/content/docs/pre-release/index.md +0 -175
  331. package/website/content/docs/quick-reference.md +0 -17
  332. package/website/content/docs/readme.md +0 -35
  333. package/website/content/docs/schema-reference/agent-spec.md +0 -406
  334. package/website/content/docs/schema-reference/autonomy.md +0 -568
  335. package/website/content/docs/schema-reference/constraints.md +0 -543
  336. package/website/content/docs/schema-reference/index.md +0 -176
  337. package/website/content/docs/schema-reference/llm-config.md +0 -445
  338. package/website/content/docs/schema-reference/observability.md +0 -654
  339. package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
  340. package/website/content/docs/schema-reference/taxonomy.md +0 -509
  341. package/website/content/docs/schema-reference/tools.md +0 -628
  342. package/website/content/docs/templates/blog-post.md +0 -43
  343. package/website/content/docs/use-cases/00-index.md +0 -395
  344. package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
  345. package/website/content/docs/use-cases/customer-support.md +0 -1234
  346. package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
  347. package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
  348. package/website/content/docs/versioning.md +0 -288
  349. package/website/lib/version.ts +0 -35
  350. package/website/lib/versions.json +0 -78
  351. package/website/next.config.ts +0 -18
  352. package/website/nginx.conf +0 -32
  353. package/website/package-lock.json +0 -9679
  354. package/website/package.json +0 -59
  355. package/website/postcss.config.mjs +0 -9
  356. package/website/scripts/fetch-versions.js +0 -166
  357. package/website/scripts/generate-examples-index.js +0 -163
  358. package/website/scripts/merge-docs-to-wiki.ts +0 -207
  359. package/website/scripts/sync-version.js +0 -72
  360. package/website/scripts/sync-wiki.ts +0 -322
  361. package/website/scripts/upload-wiki.ts +0 -199
  362. package/website/styles/_variables.scss +0 -36
  363. package/website/tailwind.config.ts +0 -136
  364. /package/dist/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
  365. /package/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
@@ -1,295 +0,0 @@
1
- import Link from 'next/link';
2
- import type { Metadata } from 'next';
3
-
4
- export const metadata: Metadata = {
5
- title: 'About - Open Standard Agents Initiative',
6
- description: 'Learn about the Open Standard Agents Initiative - the vendor-neutral specification for AI agent orchestration.',
7
- };
8
-
9
- export default function AboutPage() {
10
- return (
11
- <>
12
- {/* Hero Section */}
13
- <div className="bg-gradient-to-br from-secondary via-primary to-accent text-white py-20 px-4">
14
- <div className="container mx-auto max-w-4xl text-center">
15
- <div className="inline-flex items-center justify-center w-20 h-20 bg-white/20 backdrop-blur-sm rounded-full mb-6">
16
- <svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
17
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
18
- </svg>
19
- </div>
20
- <h1 className="text-5xl font-bold mb-4">About Open Standard Agents</h1>
21
- <p className="text-xl text-white/90">
22
- Building the future of agent interoperability through open standards
23
- </p>
24
- </div>
25
- </div>
26
-
27
- <div className="container mx-auto max-w-7xl px-4 py-12">
28
- <div className="max-w-4xl mx-auto">
29
- <section className="mb-16">
30
- <div className="flex items-center mb-6">
31
- <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">
32
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
33
- <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" />
34
- </svg>
35
- </div>
36
- <h2 className="text-3xl font-bold text-primary">The Initiative</h2>
37
- </div>
38
- <p className="text-lg text-gray-700 mb-4">
39
- The <strong>Open Standard Agents Initiative</strong> provides an open source, technical community
40
- within which industry participants can easily contribute to building a vendor-neutral, portable,
41
- and open specification for providing technical metadata for AI agents - the &quot;Open Standard Agents Specification&quot; (OSA).
42
- </p>
43
- <p className="text-lg text-gray-700 mb-4">
44
- Just as the <a href="https://www.openapis.org" target="_blank" rel="noopener noreferrer" className="text-primary hover:underline">OpenAPI Initiative</a> standardized REST APIs,
45
- the Open Standard Agents Initiative standardizes AI agent definitions, enabling interoperability
46
- across frameworks, runtimes, and organizations.
47
- </p>
48
- </section>
49
-
50
- <section className="mb-16">
51
- <div className="flex items-center mb-6">
52
- <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">
53
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
54
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
55
- </svg>
56
- </div>
57
- <h2 className="text-3xl font-bold text-primary">Our Mission</h2>
58
- </div>
59
- <p className="text-lg text-gray-700 mb-4">
60
- To create a vendor-neutral, open specification that enables:
61
- </p>
62
- <div className="grid gap-4 mt-6">
63
- <div className="flex items-start bg-gradient-to-r from-primary/5 to-transparent p-4 rounded-lg border-l-4 border-primary">
64
- <svg className="w-6 h-6 text-primary mr-3 mt-0.5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
65
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
66
- </svg>
67
- <span className="text-lg text-gray-700">Interoperability between different AI agent frameworks and runtimes</span>
68
- </div>
69
- <div className="flex items-start bg-gradient-to-r from-secondary/5 to-transparent p-4 rounded-lg border-l-4 border-secondary">
70
- <svg className="w-6 h-6 text-secondary mr-3 mt-0.5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
71
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4" />
72
- </svg>
73
- <span className="text-lg text-gray-700">Portability of agent definitions across teams and organizations</span>
74
- </div>
75
- <div className="flex items-start bg-gradient-to-r from-primary/5 to-transparent p-4 rounded-lg border-l-4 border-primary">
76
- <svg className="w-6 h-6 text-primary mr-3 mt-0.5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
77
- <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" />
78
- </svg>
79
- <span className="text-lg text-gray-700">Standardization of agent metadata, tools, and capabilities</span>
80
- </div>
81
- <div className="flex items-start bg-gradient-to-r from-secondary/5 to-transparent p-4 rounded-lg border-l-4 border-secondary">
82
- <svg className="w-6 h-6 text-secondary mr-3 mt-0.5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
83
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
84
- </svg>
85
- <span className="text-lg text-gray-700">Validation and verification of agent definitions before deployment</span>
86
- </div>
87
- <div className="flex items-start bg-gradient-to-r from-primary/5 to-transparent p-4 rounded-lg border-l-4 border-primary">
88
- <svg className="w-6 h-6 text-primary mr-3 mt-0.5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
89
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z" />
90
- </svg>
91
- <span className="text-lg text-gray-700">Tooling and ecosystem development around agent specifications</span>
92
- </div>
93
- </div>
94
- </section>
95
-
96
- <section className="mb-16">
97
- <div className="flex items-center mb-6">
98
- <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">
99
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
100
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
101
- </svg>
102
- </div>
103
- <h2 className="text-3xl font-bold text-primary">What We Are</h2>
104
- </div>
105
- <div className="card p-6 mb-4 border-l-4 border-primary hover:shadow-xl transition-all duration-300 hover:-translate-y-1">
106
- <div className="flex items-start">
107
- <div className="w-10 h-10 bg-primary/10 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
108
- <span className="text-2xl">✅</span>
109
- </div>
110
- <div>
111
- <h3 className="text-xl font-semibold mb-2 text-primary">A Specification</h3>
112
- <p className="text-gray-700">
113
- OSA defines a standard format for describing AI agents, their capabilities, tools, and deployment requirements.
114
- </p>
115
- </div>
116
- </div>
117
- </div>
118
- <div className="card p-6 mb-4 border-l-4 border-secondary hover:shadow-xl transition-all duration-300 hover:-translate-y-1">
119
- <div className="flex items-start">
120
- <div className="w-10 h-10 bg-secondary/10 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
121
- <span className="text-2xl">✅</span>
122
- </div>
123
- <div>
124
- <h3 className="text-xl font-semibold mb-2 text-secondary">Open Source</h3>
125
- <p className="text-gray-700">
126
- Licensed under Apache 2.0. Free to use, modify, and distribute. Community-driven development.
127
- </p>
128
- </div>
129
- </div>
130
- </div>
131
- <div className="card p-6 mb-4 border-l-4 border-primary hover:shadow-xl transition-all duration-300 hover:-translate-y-1">
132
- <div className="flex items-start">
133
- <div className="w-10 h-10 bg-primary/10 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
134
- <span className="text-2xl">✅</span>
135
- </div>
136
- <div>
137
- <h3 className="text-xl font-semibold mb-2 text-primary">Vendor-Neutral</h3>
138
- <p className="text-gray-700">
139
- No single vendor controls the specification. Governed by the community and technical steering committee.
140
- </p>
141
- </div>
142
- </div>
143
- </div>
144
- </section>
145
-
146
- <section className="mb-16">
147
- <div className="flex items-center mb-6">
148
- <div className="w-12 h-12 bg-gradient-to-br from-gray-400 to-gray-600 rounded-lg flex items-center justify-center mr-4">
149
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
150
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
151
- </svg>
152
- </div>
153
- <h2 className="text-3xl font-bold text-gray-700">What We Are NOT</h2>
154
- </div>
155
- <div className="card p-6 mb-4 bg-gray-50 border-l-4 border-gray-400 hover:shadow-lg transition-shadow">
156
- <div className="flex items-start">
157
- <div className="w-10 h-10 bg-gray-200 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
158
- <span className="text-2xl">❌</span>
159
- </div>
160
- <div>
161
- <h3 className="text-xl font-semibold mb-2 text-gray-700">A Framework</h3>
162
- <p className="text-gray-700">
163
- OSA does not implement agents. It defines the specification that frameworks follow.
164
- </p>
165
- </div>
166
- </div>
167
- </div>
168
- <div className="card p-6 mb-4 bg-gray-50 border-l-4 border-gray-400 hover:shadow-lg transition-shadow">
169
- <div className="flex items-start">
170
- <div className="w-10 h-10 bg-gray-200 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
171
- <span className="text-2xl">❌</span>
172
- </div>
173
- <div>
174
- <h3 className="text-xl font-semibold mb-2 text-gray-700">A Runtime</h3>
175
- <p className="text-gray-700">
176
- OSA does not execute agents. It describes agents that runtimes can execute.
177
- </p>
178
- </div>
179
- </div>
180
- </div>
181
- <div className="card p-6 mb-4 bg-gray-50 border-l-4 border-gray-400 hover:shadow-lg transition-shadow">
182
- <div className="flex items-start">
183
- <div className="w-10 h-10 bg-gray-200 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
184
- <span className="text-2xl">❌</span>
185
- </div>
186
- <div>
187
- <h3 className="text-xl font-semibold mb-2 text-gray-700">Proprietary</h3>
188
- <p className="text-gray-700">
189
- OSA is not owned by any single company. It's maintained by the open source community.
190
- </p>
191
- </div>
192
- </div>
193
- </div>
194
- </section>
195
-
196
- <section className="mb-16">
197
- <div className="flex items-center mb-6">
198
- <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">
199
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
200
- <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" />
201
- </svg>
202
- </div>
203
- <h2 className="text-3xl font-bold text-primary">Governance</h2>
204
- </div>
205
- <p className="text-lg text-gray-700 mb-4">
206
- The Open Standard Agents Initiative follows an open governance model:
207
- </p>
208
- <ul className="list-disc list-inside space-y-2 text-lg text-gray-700 mb-4">
209
- <li><strong>Technical Steering Committee:</strong> Guides technical direction and specification evolution</li>
210
- <li><strong>Working Groups:</strong> Focus on specific areas (schema, tooling, frameworks, etc.)</li>
211
- <li><strong>Community Contributors:</strong> Anyone can contribute via pull requests and discussions</li>
212
- <li><strong>Specification Process:</strong> Open RFC process for proposing changes and new features</li>
213
- </ul>
214
- </section>
215
-
216
- <section className="mb-16">
217
- <div className="bg-gradient-to-br from-primary/10 via-accent/10 to-secondary/10 rounded-2xl p-8 mb-8">
218
- <div className="flex items-center mb-6">
219
- <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">
220
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
221
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" />
222
- </svg>
223
- </div>
224
- <h2 className="text-3xl font-bold text-primary">Get Involved</h2>
225
- </div>
226
- <p className="text-lg text-gray-700 mb-6">
227
- Join the Open Standard Agents community and help shape the future of agent interoperability:
228
- </p>
229
- </div>
230
- <div className="grid md:grid-cols-2 gap-4">
231
- <Link href="https://github.com/blueflyio/openstandardagents" target="_blank" rel="noopener noreferrer" className="card-hover p-6 border-l-4 border-primary group hover:-translate-y-1 transition-all duration-300">
232
- <div className="flex items-center mb-3">
233
- <svg className="w-6 h-6 text-primary mr-2 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
234
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" />
235
- </svg>
236
- <h3 className="text-xl font-semibold text-primary">Contribute Code</h3>
237
- </div>
238
- <p className="text-gray-700">Submit pull requests, report issues, and help improve the specification.</p>
239
- </Link>
240
- <Link href="/docs" className="card-hover p-6 border-l-4 border-secondary group hover:-translate-y-1 transition-all duration-300">
241
- <div className="flex items-center mb-3">
242
- <svg className="w-6 h-6 text-secondary mr-2 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
243
- <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" />
244
- </svg>
245
- <h3 className="text-xl font-semibold text-secondary">Improve Documentation</h3>
246
- </div>
247
- <p className="text-gray-700">Help make OSA more accessible with better docs and examples.</p>
248
- </Link>
249
- <Link href="/examples" className="card-hover p-6 border-l-4 border-primary group hover:-translate-y-1 transition-all duration-300">
250
- <div className="flex items-center mb-3">
251
- <svg className="w-6 h-6 text-primary mr-2 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
252
- <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" />
253
- </svg>
254
- <h3 className="text-xl font-semibold text-primary">Share Examples</h3>
255
- </div>
256
- <p className="text-gray-700">Contribute real-world examples and use cases.</p>
257
- </Link>
258
- <Link href="https://github.com/blueflyio/openstandardagents/issues" target="_blank" rel="noopener noreferrer" className="card-hover p-6 border-l-4 border-secondary group hover:-translate-y-1 transition-all duration-300">
259
- <div className="flex items-center mb-3">
260
- <svg className="w-6 h-6 text-secondary mr-2 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
261
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z" />
262
- </svg>
263
- <h3 className="text-xl font-semibold text-secondary">Provide Feedback</h3>
264
- </div>
265
- <p className="text-gray-700">Share your experience and help prioritize features.</p>
266
- </Link>
267
- </div>
268
- </section>
269
-
270
- <section className="mb-12">
271
- <div className="bg-gradient-to-r from-secondary via-primary to-accent text-white rounded-2xl p-8">
272
- <div className="flex items-center mb-4">
273
- <svg className="w-8 h-8 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
274
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
275
- </svg>
276
- <h2 className="text-3xl font-bold">License</h2>
277
- </div>
278
- <p className="text-lg text-white/90 mb-4">
279
- The Open Standard Agents Specification is licensed under the{' '}
280
- <a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank" rel="noopener noreferrer" className="text-white font-semibold hover:underline">
281
- Apache License 2.0
282
- </a>.
283
- </p>
284
- <p className="text-lg text-white/90">
285
- This means you are free to use, modify, and distribute OSA in your projects,
286
- both open source and commercial, without restrictions.
287
- </p>
288
- </div>
289
- </section>
290
- </div>
291
- </div>
292
- </>
293
- );
294
- }
295
-
@@ -1,208 +0,0 @@
1
- import { notFound } from 'next/navigation';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import matter from 'gray-matter';
5
- import { MarkdownContent } from '@/components/docs/MarkdownContent';
6
- import Link from 'next/link';
7
-
8
- interface PageProps {
9
- params: Promise<{
10
- slug: string;
11
- }>;
12
- }
13
-
14
- const blogDirectory = path.join(process.cwd(), 'content/blog');
15
-
16
- // Helper function to fix malformed YAML frontmatter (double quotes)
17
- function fixYamlFrontmatter(content: string): string {
18
- // Fix double-quoted values in frontmatter
19
- // Pattern: key: ""value"" -> key: "value"
20
- // Also handle escaped quotes in values
21
- let fixed = content;
22
-
23
- // Fix double quotes around values (key: ""value"" -> key: "value")
24
- fixed = fixed.replace(/(\w+):\s*""([^"]*)""/g, '$1: "$2"');
25
-
26
- // Fix escaped quotes in excerpt (\"value\" -> value)
27
- fixed = fixed.replace(/excerpt:\s*"\\"([^"]*)\\""/g, 'excerpt: "$1"');
28
-
29
- return fixed;
30
- }
31
-
32
- // Helper to clean extracted values
33
- function cleanValue(value: any): any {
34
- if (typeof value === 'string') {
35
- // Remove surrounding double quotes if present
36
- return value.replace(/^""(.*)""$/, '$1').replace(/^"(.*)"$/, '$1');
37
- }
38
- return value;
39
- }
40
-
41
- function getBlogPost(slug: string): { content: string; metadata: any } | null {
42
- const fullPath = path.join(blogDirectory, `${slug}.md`);
43
-
44
- if (!fs.existsSync(fullPath)) {
45
- return null;
46
- }
47
-
48
- try {
49
- const fileContents = fs.readFileSync(fullPath, 'utf8');
50
-
51
- // Fix malformed YAML before parsing
52
- const fixedContent = fixYamlFrontmatter(fileContents);
53
- const { data, content } = matter(fixedContent);
54
-
55
- const dateValue = cleanValue(data.date) || new Date().toISOString();
56
- const dateObj = new Date(dateValue);
57
- const validDate = isNaN(dateObj.getTime()) ? new Date() : dateObj;
58
-
59
- // Format date during server-side rendering to avoid hydration mismatch
60
- const formattedDate = validDate.toLocaleDateString('en-US', {
61
- year: 'numeric',
62
- month: 'long',
63
- day: 'numeric'
64
- });
65
-
66
- return {
67
- content,
68
- metadata: {
69
- title: cleanValue(data.title) || slug,
70
- date: validDate.toISOString(),
71
- formattedDate,
72
- author: cleanValue(data.author) || 'OSSA Team',
73
- category: cleanValue(data.category) || 'General',
74
- tags: Array.isArray(data.tags) ? data.tags.map(cleanValue) : [],
75
- excerpt: cleanValue(data.excerpt) || '',
76
- },
77
- };
78
- } catch (error) {
79
- console.error(`Error parsing blog post ${slug}:`, error);
80
- return null;
81
- }
82
- }
83
-
84
- function getAllBlogSlugs(): string[] {
85
- const fileNames = fs.readdirSync(blogDirectory);
86
- return fileNames
87
- .filter(fileName => fileName.endsWith('.md'))
88
- .map(fileName => fileName.replace(/\.md$/, ''));
89
- }
90
-
91
- export const dynamic = 'force-static';
92
- export const dynamicParams = false;
93
-
94
- export async function generateStaticParams() {
95
- const slugs = getAllBlogSlugs();
96
- return slugs.map((slug) => ({
97
- slug,
98
- }));
99
- }
100
-
101
- export default async function BlogPostPage({ params }: PageProps) {
102
- const { slug } = await params;
103
- const post = getBlogPost(slug);
104
-
105
- if (!post) {
106
- notFound();
107
- }
108
-
109
- return (
110
- <div className="min-h-screen bg-gray-50">
111
- {/* Hero Section */}
112
- <div className="bg-gradient-to-br from-primary via-blue-600 to-secondary text-white py-16 px-4">
113
- <div className="container mx-auto max-w-4xl">
114
- <div className="mb-4">
115
- <Link
116
- href="/blog"
117
- className="inline-flex items-center text-white/80 hover:text-white transition-colors"
118
- >
119
- <svg className="h-5 w-5 mr-2" fill="none" viewBox="0 0 24 24" stroke="currentColor">
120
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 19l-7-7 7-7" />
121
- </svg>
122
- Back to Blog
123
- </Link>
124
- </div>
125
-
126
- <div className="mb-4">
127
- <span className="inline-block px-3 py-1 text-xs font-semibold bg-white/20 rounded-full">
128
- {post.metadata.category}
129
- </span>
130
- </div>
131
-
132
- <h1 className="text-4xl md:text-5xl font-bold mb-6">{post.metadata.title}</h1>
133
-
134
- <div className="flex items-center gap-6 text-white/90">
135
- <div className="flex items-center gap-2">
136
- <svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
137
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />
138
- </svg>
139
- <span>{post.metadata.author}</span>
140
- </div>
141
- <div className="flex items-center gap-2">
142
- <svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
143
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
144
- </svg>
145
- <span>{post.metadata.formattedDate}</span>
146
- </div>
147
- </div>
148
- </div>
149
- </div>
150
-
151
- {/* Content */}
152
- <div className="container mx-auto max-w-4xl px-4 py-12">
153
- <article className="bg-white p-8 md:p-12 rounded-lg shadow-lg border border-gray-200">
154
- <div className="prose prose-lg max-w-none
155
- prose-headings:text-gray-900
156
- prose-h1:text-4xl prose-h1:font-bold prose-h1:mb-6
157
- prose-h2:text-3xl prose-h2:font-bold prose-h2:mt-12 prose-h2:mb-4
158
- prose-h3:text-2xl prose-h3:font-semibold prose-h3:mt-8 prose-h3:mb-3
159
- prose-p:text-gray-700 prose-p:leading-relaxed prose-p:mb-6
160
- prose-a:text-primary prose-a:no-underline hover:prose-a:underline
161
- prose-strong:text-gray-900 prose-strong:font-semibold
162
- prose-code:text-primary prose-code:bg-gray-100 prose-code:px-1 prose-code:py-0.5 prose-code:rounded
163
- prose-pre:bg-gray-900 prose-pre:text-gray-100
164
- prose-ul:my-6 prose-ul:list-disc prose-ul:pl-6
165
- prose-ol:my-6 prose-ol:list-decimal prose-ol:pl-6
166
- prose-li:text-gray-700 prose-li:mb-2
167
- prose-blockquote:border-l-4 prose-blockquote:border-primary prose-blockquote:pl-4 prose-blockquote:italic
168
- prose-table:w-full prose-table:border-collapse
169
- prose-th:bg-gray-100 prose-th:p-3 prose-th:text-left prose-th:font-semibold
170
- prose-td:p-3 prose-td:border-t prose-td:border-gray-200
171
- ">
172
- <MarkdownContent content={post.content} />
173
- </div>
174
-
175
- {/* Tags */}
176
- {post.metadata.tags.length > 0 && (
177
- <div className="mt-12 pt-8 border-t border-gray-200">
178
- <h3 className="text-sm font-semibold text-gray-900 mb-3">Tags</h3>
179
- <div className="flex flex-wrap gap-2">
180
- {post.metadata.tags.map((tag: string) => (
181
- <span
182
- key={tag}
183
- className="px-3 py-1 bg-blue-100 text-primary text-sm font-medium rounded-full"
184
- >
185
- {tag}
186
- </span>
187
- ))}
188
- </div>
189
- </div>
190
- )}
191
- </article>
192
-
193
- {/* Back to Blog */}
194
- <div className="mt-12 text-center">
195
- <Link
196
- href="/blog"
197
- className="inline-flex items-center px-6 py-3 bg-primary text-white font-semibold rounded-lg hover:bg-blue-700 transition-colors"
198
- >
199
- <svg className="h-5 w-5 mr-2" fill="none" viewBox="0 0 24 24" stroke="currentColor">
200
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 19l-7-7 7-7" />
201
- </svg>
202
- Back to All Posts
203
- </Link>
204
- </div>
205
- </div>
206
- </div>
207
- );
208
- }