@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
@@ -13,6 +13,31 @@ interface PageProps {
13
13
 
14
14
  const blogDirectory = path.join(process.cwd(), 'content/blog');
15
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
+
16
41
  function getBlogPost(slug: string): { content: string; metadata: any } | null {
17
42
  const fullPath = path.join(blogDirectory, `${slug}.md`);
18
43
 
@@ -20,20 +45,40 @@ function getBlogPost(slug: string): { content: string; metadata: any } | null {
20
45
  return null;
21
46
  }
22
47
 
23
- const fileContents = fs.readFileSync(fullPath, 'utf8');
24
- const { data, content } = matter(fileContents);
25
-
26
- return {
27
- content,
28
- metadata: {
29
- title: data.title,
30
- date: data.date,
31
- author: data.author,
32
- category: data.category,
33
- tags: data.tags || [],
34
- excerpt: data.excerpt,
35
- },
36
- };
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
+ }
37
82
  }
38
83
 
39
84
  function getAllBlogSlugs(): string[] {
@@ -97,11 +142,7 @@ export default async function BlogPostPage({ params }: PageProps) {
97
142
  <svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
98
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" />
99
144
  </svg>
100
- <span>{new Date(post.metadata.date).toLocaleDateString('en-US', {
101
- year: 'numeric',
102
- month: 'long',
103
- day: 'numeric'
104
- })}</span>
145
+ <span>{post.metadata.formattedDate}</span>
105
146
  </div>
106
147
  </div>
107
148
  </div>
@@ -109,7 +150,7 @@ export default async function BlogPostPage({ params }: PageProps) {
109
150
 
110
151
  {/* Content */}
111
152
  <div className="container mx-auto max-w-4xl px-4 py-12">
112
- <article className="glass-card p-8 md:p-12 rounded-lg shadow-lg">
153
+ <article className="bg-white p-8 md:p-12 rounded-lg shadow-lg border border-gray-200">
113
154
  <div className="prose prose-lg max-w-none
114
155
  prose-headings:text-gray-900
115
156
  prose-h1:text-4xl prose-h1:font-bold prose-h1:mb-6
@@ -1,12 +1,19 @@
1
1
  import Link from 'next/link';
2
+ import type { Metadata } from 'next';
2
3
  import fs from 'fs';
3
4
  import path from 'path';
4
5
  import matter from 'gray-matter';
5
6
 
7
+ export const metadata: Metadata = {
8
+ title: 'OSSA Blog - Insights, Research, and Updates',
9
+ description: 'Insights, research, and updates on the open standard for AI agents. Learn about OSSA, agent orchestration, and best practices.',
10
+ };
11
+
6
12
  interface BlogPost {
7
13
  slug: string;
8
14
  title: string;
9
15
  date: string;
16
+ formattedDate: string;
10
17
  author: string;
11
18
  category: string;
12
19
  tags: string[];
@@ -15,38 +22,121 @@ interface BlogPost {
15
22
 
16
23
  const blogDirectory = path.join(process.cwd(), 'content/blog');
17
24
 
25
+ // Helper function to fix malformed YAML frontmatter (double quotes)
26
+ function fixYamlFrontmatter(content: string): string {
27
+ // Fix double-quoted values in frontmatter
28
+ // Pattern: key: ""value"" -> key: "value"
29
+ // Also handle escaped quotes in values
30
+ let fixed = content;
31
+
32
+ // Fix double quotes around values (key: ""value"" -> key: "value")
33
+ fixed = fixed.replace(/(\w+):\s*""([^"]*)""/g, '$1: "$2"');
34
+
35
+ // Fix escaped quotes in excerpt (\"value\" -> value)
36
+ fixed = fixed.replace(/excerpt:\s*"\\"([^"]*)\\""/g, 'excerpt: "$1"');
37
+
38
+ return fixed;
39
+ }
40
+
18
41
  function getAllBlogPosts(): BlogPost[] {
42
+ if (!fs.existsSync(blogDirectory)) {
43
+ console.warn(`Blog directory does not exist: ${blogDirectory}`);
44
+ return [];
45
+ }
46
+
19
47
  const fileNames = fs.readdirSync(blogDirectory);
20
48
  const posts = fileNames
21
49
  .filter(fileName => fileName.endsWith('.md'))
22
50
  .map(fileName => {
23
- const slug = fileName.replace(/\.md$/, '');
24
- const fullPath = path.join(blogDirectory, fileName);
25
- const fileContents = fs.readFileSync(fullPath, 'utf8');
26
- const { data } = matter(fileContents);
27
-
28
- return {
29
- slug,
30
- title: data.title || slug,
31
- date: data.date || new Date().toISOString(),
32
- author: data.author || 'OSSA Team',
33
- category: data.category || 'General',
34
- tags: data.tags || [],
35
- excerpt: data.excerpt || '',
36
- };
51
+ try {
52
+ const slug = fileName.replace(/\.md$/, '');
53
+ const fullPath = path.join(blogDirectory, fileName);
54
+ const fileContents = fs.readFileSync(fullPath, 'utf8');
55
+
56
+ // Fix malformed YAML before parsing
57
+ const fixedContent = fixYamlFrontmatter(fileContents);
58
+ const { data } = matter(fixedContent);
59
+
60
+ // Clean up extracted values (remove extra quotes if present)
61
+ const cleanValue = (value: any): any => {
62
+ if (typeof value === 'string') {
63
+ // Remove surrounding double quotes if present
64
+ return value.replace(/^""(.*)""$/, '$1').replace(/^"(.*)"$/, '$1');
65
+ }
66
+ return value;
67
+ };
68
+
69
+ const dateValue = cleanValue(data.date) || new Date().toISOString();
70
+ const dateObj = new Date(dateValue);
71
+ const validDate = isNaN(dateObj.getTime()) ? new Date() : dateObj;
72
+
73
+ // Format date during server-side rendering to avoid hydration mismatch
74
+ const formattedDate = validDate.toLocaleDateString('en-US', {
75
+ year: 'numeric',
76
+ month: 'long',
77
+ day: 'numeric'
78
+ });
79
+
80
+ return {
81
+ slug,
82
+ title: cleanValue(data.title) || slug,
83
+ date: validDate.toISOString(),
84
+ formattedDate,
85
+ author: cleanValue(data.author) || 'OSSA Team',
86
+ category: cleanValue(data.category) || 'General',
87
+ tags: Array.isArray(data.tags) ? data.tags.map(cleanValue) : [],
88
+ excerpt: cleanValue(data.excerpt) || '',
89
+ };
90
+ } catch (error) {
91
+ console.error(`Error parsing blog post ${fileName}:`, error);
92
+ // Return a default post so the page doesn't crash
93
+ const defaultDate = new Date();
94
+ return {
95
+ slug: fileName.replace(/\.md$/, ''),
96
+ title: fileName.replace(/\.md$/, ''),
97
+ date: defaultDate.toISOString(),
98
+ formattedDate: defaultDate.toLocaleDateString('en-US', {
99
+ year: 'numeric',
100
+ month: 'long',
101
+ day: 'numeric'
102
+ }),
103
+ author: 'OSSA Team',
104
+ category: 'General',
105
+ tags: [],
106
+ excerpt: '',
107
+ };
108
+ }
37
109
  })
38
- .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
110
+ .filter(post => post !== null && post !== undefined)
111
+ .sort((a, b) => {
112
+ try {
113
+ const dateA = new Date(a.date).getTime();
114
+ const dateB = new Date(b.date).getTime();
115
+ if (isNaN(dateA) || isNaN(dateB)) return 0;
116
+ return dateB - dateA;
117
+ } catch {
118
+ return 0;
119
+ }
120
+ });
39
121
 
40
122
  return posts;
41
123
  }
42
124
 
43
125
  export default function BlogPage() {
44
- const posts = getAllBlogPosts();
45
-
46
- // Featured post - OpenAPI AI Agents Standard
47
- const featuredSlug = 'openapi-ai-agents-standard';
48
- const featuredPost = posts.find(p => p.slug.toLowerCase().includes(featuredSlug) || p.slug.toLowerCase().includes('openapi'));
49
- const otherPosts = posts.filter(p => p.slug !== featuredPost?.slug);
126
+ let posts: BlogPost[] = [];
127
+ let featuredPost: BlogPost | undefined;
128
+ let otherPosts: BlogPost[] = [];
129
+
130
+ try {
131
+ posts = getAllBlogPosts();
132
+ // Featured post - Welcome to OSSA
133
+ const featuredSlug = 'welcome-to-ossa';
134
+ featuredPost = posts.find(p => p.slug.toLowerCase() === featuredSlug);
135
+ otherPosts = posts.filter(p => p.slug !== featuredPost?.slug);
136
+ } catch (error) {
137
+ console.error('Error loading blog posts:', error);
138
+ // Continue with empty arrays - page will show "No blog posts yet"
139
+ }
50
140
 
51
141
  return (
52
142
  <div className="min-h-screen bg-gray-50">
@@ -54,9 +144,14 @@ export default function BlogPage() {
54
144
  <div className="bg-gradient-to-br from-primary via-blue-600 to-secondary text-white py-20 px-4">
55
145
  <div className="container mx-auto max-w-6xl">
56
146
  <h1 className="text-5xl font-bold mb-6">OSSA Blog</h1>
57
- <p className="text-xl opacity-90 max-w-3xl">
147
+ <p className="text-xl opacity-90 max-w-3xl mb-4">
58
148
  Insights, research, and updates on the open standard for AI agents
59
149
  </p>
150
+ {featuredPost && featuredPost.title && featuredPost.excerpt && (
151
+ <p className="text-lg opacity-80 max-w-3xl">
152
+ Start with our featured article: <strong>&quot;{featuredPost.title}&quot;</strong> - {featuredPost.excerpt}
153
+ </p>
154
+ )}
60
155
  </div>
61
156
  </div>
62
157
 
@@ -89,11 +184,7 @@ export default function BlogPage() {
89
184
  <div className="flex items-center gap-4 text-sm text-gray-500">
90
185
  <span className="font-medium">{featuredPost.author}</span>
91
186
  <span>•</span>
92
- <span>{new Date(featuredPost.date).toLocaleDateString('en-US', {
93
- year: 'numeric',
94
- month: 'long',
95
- day: 'numeric'
96
- })}</span>
187
+ <span>{featuredPost.formattedDate}</span>
97
188
  </div>
98
189
  <span className="text-primary font-medium">Read article →</span>
99
190
  </div>
@@ -110,7 +201,7 @@ export default function BlogPage() {
110
201
  <Link
111
202
  key={post.slug}
112
203
  href={`/blog/${post.slug}`}
113
- className="glass-card p-6 rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 block"
204
+ className="bg-white p-6 rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 block border border-gray-200"
114
205
  >
115
206
  <div className="mb-4">
116
207
  <span className="inline-block px-3 py-1 text-xs font-semibold text-primary bg-blue-100 rounded-full">
@@ -128,11 +219,7 @@ export default function BlogPage() {
128
219
 
129
220
  <div className="flex items-center justify-between text-sm text-gray-500">
130
221
  <span>{post.author}</span>
131
- <span>{new Date(post.date).toLocaleDateString('en-US', {
132
- year: 'numeric',
133
- month: 'long',
134
- day: 'numeric'
135
- })}</span>
222
+ <span>{post.formattedDate}</span>
136
223
  </div>
137
224
 
138
225
  {post.tags.length > 0 && (