@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
@@ -1,17 +1,21 @@
1
1
  {
2
2
  "name": "ossa-website",
3
- "version": "0.2.3",
3
+ "version": "0.2.5-RC",
4
4
  "description": "Open Standard Agents - The OpenAPI for AI Agents",
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "sync-version": "node scripts/sync-version.js",
8
+ "fetch-versions": "node scripts/fetch-versions.js",
8
9
  "sync-wiki": "npx tsx scripts/sync-wiki.ts",
9
- "dev": "npm run sync-version && next dev",
10
- "build": "npm run sync-version && npm run sync-wiki && next build",
11
- "build:no-wiki": "npm run sync-version && next build",
10
+ "merge-docs-to-wiki": "npx tsx scripts/merge-docs-to-wiki.ts",
11
+ "upload-wiki": "npx tsx scripts/upload-wiki.ts",
12
+ "generate-examples": "node scripts/generate-examples-index.js",
13
+ "dev": "npm run fetch-versions && npm run sync-version && npm run generate-examples && next dev",
14
+ "build": "npm run fetch-versions && npm run sync-version && npm run sync-wiki && npm run generate-examples && next build",
15
+ "build:no-wiki": "npm run fetch-versions && npm run sync-version && npm run generate-examples && next build",
12
16
  "start": "next start",
13
17
  "lint": "next lint",
14
- "export": "npm run sync-version && npm run sync-wiki && next build"
18
+ "export": "npm run fetch-versions && npm run sync-version && npm run sync-wiki && npm run generate-examples && next build"
15
19
  },
16
20
  "keywords": [
17
21
  "ossa",
@@ -22,6 +26,7 @@
22
26
  "author": "OSSA Community",
23
27
  "license": "MIT",
24
28
  "dependencies": {
29
+ "axios": "^1.7.7",
25
30
  "@monaco-editor/react": "^4.6.0",
26
31
  "@types/node": "^24.10.0",
27
32
  "@types/react": "^18.3.1",
@@ -48,6 +53,7 @@
48
53
  "@types/react-syntax-highlighter": "^15.5.13",
49
54
  "eslint": "^9.18.0",
50
55
  "eslint-config-next": "^15.5.6",
56
+ "sass": "^1.94.2",
51
57
  "tsx": "^4.19.0"
52
58
  }
53
59
  }
@@ -1,7 +1,7 @@
1
1
  /** @type {import('postcss-load-config').Config} */
2
2
  const config = {
3
3
  plugins: {
4
- '@tailwindcss/postcss': {},
4
+ tailwindcss: {},
5
5
  autoprefixer: {},
6
6
  },
7
7
  };
@@ -0,0 +1,166 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const axios = require('axios');
4
+
5
+ const NPM_PACKAGE_NAME = '@bluefly/openstandardagents';
6
+ const NPM_REGISTRY_URL = `https://registry.npmjs.org/${NPM_PACKAGE_NAME}`;
7
+ const SPEC_DIR = path.join(__dirname, '../../spec');
8
+ const OUTPUT_FILE = path.join(__dirname, '../lib/versions.json');
9
+
10
+ async function fetchVersions() {
11
+ console.log('Fetching version information...');
12
+
13
+ let npmVersions = [];
14
+ let distTags = {};
15
+
16
+ try {
17
+ console.log(`Querying npm registry: ${NPM_REGISTRY_URL}`);
18
+ const response = await axios.get(NPM_REGISTRY_URL);
19
+ const data = response.data;
20
+
21
+ npmVersions = Object.keys(data.versions || {});
22
+ distTags = data['dist-tags'] || {};
23
+ console.log(`Found ${npmVersions.length} published versions on npm`);
24
+ console.log('Dist tags:', distTags);
25
+ } catch (error) {
26
+ console.error('Error fetching npm versions:', error.message);
27
+ // Fallback to local package.json if npm registry is unreachable
28
+ const packageJsonPath = path.join(__dirname, '../../package.json');
29
+ if (fs.existsSync(packageJsonPath)) {
30
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
31
+ npmVersions = [packageJson.version];
32
+ distTags = { latest: packageJson.version };
33
+ console.log('Falling back to local package.json version:', packageJson.version);
34
+ }
35
+ }
36
+
37
+ // Scan local spec directory for available schema versions
38
+ const localSpecVersions = [];
39
+ if (fs.existsSync(SPEC_DIR)) {
40
+ const specDirs = fs.readdirSync(SPEC_DIR)
41
+ .filter(dir => {
42
+ const dirPath = path.join(SPEC_DIR, dir);
43
+ return fs.statSync(dirPath).isDirectory() && dir.startsWith('v');
44
+ })
45
+ .map(dir => dir.substring(1)) // Remove 'v' prefix
46
+ .sort((a, b) => {
47
+ const [aMajor, aMinor, aPatch] = a.split('.').map(Number);
48
+ const [bMajor, bMinor, bPatch] = b.split('.').map(Number);
49
+ if (aMajor !== bMajor) return bMajor - aMajor;
50
+ if (aMinor !== bMinor) return bMinor - aMinor;
51
+ return bPatch - aPatch;
52
+ });
53
+
54
+ localSpecVersions.push(...specDirs);
55
+ console.log(`Scanning spec directory: ${SPEC_DIR}`);
56
+ console.log(`Found ${localSpecVersions.length} schema versions in spec/`);
57
+ }
58
+
59
+ const allVersions = [];
60
+ const processedVersions = new Set();
61
+
62
+ // Add npm published versions
63
+ npmVersions.forEach(version => {
64
+ if (!processedVersions.has(version)) {
65
+ const isStable = distTags.latest === version;
66
+ const isDev = distTags.dev === version;
67
+ // Pre-release versions: -dev, -pre, -rc, alpha, beta, or version like 0.2.4-dev
68
+ const isPreRelease = version.includes('-dev') || version.includes('-pre') || version.includes('-rc') || version.includes('alpha') || version.includes('beta');
69
+ // Dev versions are specifically tagged as 'dev' in npm or end with -dev
70
+ const isDevVersion = isDev || (version.includes('-dev') && !version.includes('-pre'));
71
+
72
+ allVersions.push({
73
+ version,
74
+ tag: `v${version}`,
75
+ apiVersion: `ossa/v${version}`,
76
+ type: isStable ? 'stable' : (isDevVersion ? 'dev' : (isPreRelease ? 'prerelease' : 'stable')),
77
+ published: true,
78
+ available: true,
79
+ });
80
+ processedVersions.add(version);
81
+ }
82
+ });
83
+
84
+ // Add local spec versions that are not yet in allVersions
85
+ localSpecVersions.forEach(version => {
86
+ if (!processedVersions.has(version)) {
87
+ const schemaPath = path.join(SPEC_DIR, `v${version}`, `ossa-${version}.schema.json`);
88
+ const schemaExists = fs.existsSync(schemaPath);
89
+
90
+ // Determine version type for local versions
91
+ let versionType = 'local';
92
+ if (version === '0.2.4-dev') {
93
+ // v0.2.4-dev is a pre-release version
94
+ versionType = 'prerelease';
95
+ } else if (version.includes('-dev')) {
96
+ // Other -dev versions (like 0.2.5-dev) are dev versions
97
+ versionType = 'dev';
98
+ } else if (version.includes('-pre') || version.includes('-rc') || version.includes('alpha') || version.includes('beta')) {
99
+ versionType = 'prerelease';
100
+ } else {
101
+ // Stable versions (like 0.2.3)
102
+ versionType = 'stable';
103
+ }
104
+
105
+ allVersions.push({
106
+ version,
107
+ tag: `v${version}`,
108
+ apiVersion: `ossa/v${version}`,
109
+ type: versionType,
110
+ published: false,
111
+ available: schemaExists,
112
+ schemaPath: schemaExists ? schemaPath : undefined,
113
+ });
114
+ processedVersions.add(version);
115
+ }
116
+ });
117
+
118
+ // Sort versions (latest stable first, then dev, then older stable, then local)
119
+ allVersions.sort((a, b) => {
120
+ // Prioritize stable, then dev, then prerelease, then local
121
+ const typeOrder = { stable: 0, dev: 1, prerelease: 2, local: 3 };
122
+ if (typeOrder[a.type] !== typeOrder[b.type]) {
123
+ return typeOrder[a.type] - typeOrder[b.type];
124
+ }
125
+
126
+ // Then sort by version number (descending)
127
+ const [aMajor, aMinor, aPatch] = a.version.split('.').map(Number);
128
+ const [bMajor, bMinor, bPatch] = b.version.split('.').map(Number);
129
+ if (aMajor !== bMajor) return bMajor - aMajor;
130
+ if (aMinor !== bMinor) return bMinor - aMinor;
131
+ return bPatch - aPatch;
132
+ });
133
+
134
+ // Prioritize npm's latest tag for stable version
135
+ const npmStableVersion = distTags.latest || allVersions.find(v => v.type === 'stable' && v.published)?.version;
136
+ const stableVersion = npmStableVersion || allVersions.find(v => v.type === 'stable')?.version || '0.2.3'; // Fallback
137
+
138
+ // Prioritize npm's dev tag for dev version
139
+ const npmDevVersion = distTags.dev || allVersions.find(v => (v.type === 'dev' || v.type === 'prerelease') && v.published)?.version;
140
+ const devVersion = npmDevVersion || allVersions.find(v => v.type === 'dev')?.version || allVersions.find(v => v.type === 'prerelease')?.version || '0.2.5-dev'; // Fallback
141
+
142
+ const versionsData = {
143
+ stable: stableVersion,
144
+ latest: stableVersion, // 'latest' dist-tag points to stable
145
+ dev: devVersion, // 'dev' dist-tag points to dev
146
+ all: allVersions,
147
+ fallbackVersion: '0.2.3', // Fallback if all else fails
148
+ };
149
+
150
+ // Ensure output directory exists
151
+ const outputDir = path.dirname(OUTPUT_FILE);
152
+ if (!fs.existsSync(outputDir)) {
153
+ fs.mkdirSync(outputDir, { recursive: true });
154
+ }
155
+
156
+ fs.writeFileSync(OUTPUT_FILE, JSON.stringify(versionsData, null, 2));
157
+ console.log(`āœ… Generated ${OUTPUT_FILE}`);
158
+ console.log(` Stable: ${versionsData.stable}`);
159
+ console.log(` Dev: ${versionsData.dev}`);
160
+ console.log(` Total versions: ${versionsData.all.length}`);
161
+ }
162
+
163
+ fetchVersions().catch(error => {
164
+ console.error('Error in fetchVersions:', error);
165
+ process.exit(1);
166
+ });
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Generate examples index JSON for static export
5
+ * Run during build to create examples.json
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ const examplesDir = path.join(__dirname, '../../examples');
12
+ const outputFile = path.join(__dirname, '../public/examples.json');
13
+
14
+ function getAllExamples() {
15
+ const examples = [];
16
+
17
+ if (!fs.existsSync(examplesDir)) {
18
+ console.log('āš ļø Examples directory not found:', examplesDir);
19
+ return examples;
20
+ }
21
+
22
+ // Map directories to 10 main categories
23
+ function getCategory(dirPath) {
24
+ const relativePath = path.relative(examplesDir, dirPath).toLowerCase();
25
+ const pathParts = relativePath.split(path.sep);
26
+ const topLevel = pathParts[0];
27
+
28
+ // 1. Getting Started
29
+ if (topLevel === 'getting-started' || topLevel === 'quickstart' || topLevel === 'minimal') {
30
+ return 'Getting Started';
31
+ }
32
+
33
+ // 2. Framework Integration
34
+ if (['langchain', 'crewai', 'openai', 'anthropic', 'autogen', 'langflow', 'langgraph', 'llamaindex', 'cursor', 'vercel'].includes(topLevel)) {
35
+ return 'Framework Integration';
36
+ }
37
+
38
+ // 3. Agent Types
39
+ if (topLevel === 'agent-manifests' || pathParts.includes('workers') || pathParts.includes('orchestrators') ||
40
+ pathParts.includes('critics') || pathParts.includes('judges') || pathParts.includes('monitors') ||
41
+ pathParts.includes('governors') || pathParts.includes('integrators')) {
42
+ return 'Agent Types';
43
+ }
44
+
45
+ // 4. Production
46
+ if (topLevel === 'production' || topLevel === 'enterprise' || relativePath.includes('compliance')) {
47
+ return 'Production';
48
+ }
49
+
50
+ // 5. Infrastructure
51
+ if (topLevel === 'kagent' || topLevel === 'bridges' || relativePath.includes('k8s') ||
52
+ relativePath.includes('kubernetes') || relativePath.includes('docker') || relativePath.includes('serverless')) {
53
+ return 'Infrastructure';
54
+ }
55
+
56
+ // 6. Advanced Patterns
57
+ if (topLevel === 'advanced' || relativePath.includes('patterns') || relativePath.includes('workflows') ||
58
+ relativePath.includes('model-router') || relativePath.includes('smart-model')) {
59
+ return 'Advanced Patterns';
60
+ }
61
+
62
+ // 7. Integration Patterns
63
+ if (topLevel === 'integration-patterns' || topLevel === 'adk-integration' ||
64
+ (topLevel === 'bridges' && !relativePath.includes('k8s') && !relativePath.includes('phase4'))) {
65
+ return 'Integration Patterns';
66
+ }
67
+
68
+ // 8. OpenAPI Extensions
69
+ if (topLevel === 'openapi-extensions' || (relativePath.includes('openapi') && topLevel !== 'openapi-extensions')) {
70
+ return 'OpenAPI Extensions';
71
+ }
72
+
73
+ // 9. Migration Guides
74
+ if (topLevel === 'migration-guides') {
75
+ return 'Migration Guides';
76
+ }
77
+
78
+ // 10. Spec Examples & Templates
79
+ if (topLevel === 'spec-examples' || topLevel === 'templates' || topLevel === 'extensions' ||
80
+ topLevel === 'common_npm' || topLevel === 'architecture' || topLevel === 'typescript' ||
81
+ topLevel === 'drupal') {
82
+ return 'Spec Examples & Templates';
83
+ }
84
+
85
+ // Handle root-level files
86
+ if (relativePath === '' || pathParts.length === 0 || !topLevel) {
87
+ return 'Getting Started';
88
+ }
89
+
90
+ return 'Getting Started';
91
+ }
92
+
93
+ function traverseDir(dir, parentCategory = '') {
94
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
95
+ const currentCategory = getCategory(dir);
96
+
97
+ for (const entry of entries) {
98
+ const fullPath = path.join(dir, entry.name);
99
+ const relativePath = path.relative(examplesDir, fullPath);
100
+
101
+ // Skip certain directories
102
+ if (entry.isDirectory()) {
103
+ if (entry.name === '__pycache__' || entry.name === 'node_modules' || entry.name === '.git') {
104
+ continue;
105
+ }
106
+ traverseDir(fullPath, currentCategory);
107
+ } else if (
108
+ entry.isFile() &&
109
+ (entry.name.endsWith('.yml') ||
110
+ entry.name.endsWith('.yaml') ||
111
+ entry.name.endsWith('.json') ||
112
+ entry.name.endsWith('.ts')) &&
113
+ !entry.name.startsWith('.') &&
114
+ entry.name !== '.gitlab-ci.yml'
115
+ ) {
116
+ try {
117
+ const content = fs.readFileSync(fullPath, 'utf8');
118
+ // Get category from file path for better categorization
119
+ let fileCategory = currentCategory || getCategory(path.dirname(fullPath));
120
+
121
+ // Override category based on filename for root-level files
122
+ const fileName = entry.name.toLowerCase();
123
+ if (relativePath === entry.name) {
124
+ // Root-level file
125
+ if (fileName.includes('compliance')) {
126
+ fileCategory = 'Production';
127
+ } else if (fileName.includes('bridge')) {
128
+ fileCategory = 'Integration Patterns';
129
+ } else {
130
+ fileCategory = 'Getting Started';
131
+ }
132
+ } else if (fileName.includes('service-registry') || fileName.includes('registry')) {
133
+ fileCategory = 'Spec Examples & Templates';
134
+ }
135
+
136
+ examples.push({
137
+ name: entry.name,
138
+ path: relativePath,
139
+ content,
140
+ category: fileCategory,
141
+ });
142
+ } catch (error) {
143
+ console.warn(`āš ļø Skipping ${fullPath}:`, error.message);
144
+ }
145
+ }
146
+ }
147
+ }
148
+
149
+ traverseDir(examplesDir);
150
+ return examples;
151
+ }
152
+
153
+ const examples = getAllExamples();
154
+
155
+ // Ensure public directory exists
156
+ const publicDir = path.dirname(outputFile);
157
+ if (!fs.existsSync(publicDir)) {
158
+ fs.mkdirSync(publicDir, { recursive: true });
159
+ }
160
+
161
+ fs.writeFileSync(outputFile, JSON.stringify(examples, null, 2));
162
+ console.log(`āœ… Generated ${outputFile} with ${examples.length} examples`);
163
+
@@ -0,0 +1,207 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Merge Local Docs to GitLab Wiki
4
+ *
5
+ * This script helps prepare content from /docs directory for merging into GitLab wiki.
6
+ * It reads files from the project's /docs directory and outputs them in a format
7
+ * suitable for GitLab wiki pages.
8
+ *
9
+ * Usage:
10
+ * npx tsx scripts/merge-docs-to-wiki.ts
11
+ *
12
+ * This will:
13
+ * 1. Read all markdown files from ../../docs
14
+ * 2. Convert them to GitLab wiki format
15
+ * 3. Output instructions for manual wiki upload
16
+ */
17
+
18
+ import fs from 'fs';
19
+ import path from 'path';
20
+
21
+ const DOCS_SOURCE_DIR = path.join(process.cwd(), 'content/docs');
22
+ const OUTPUT_DIR = path.join(process.cwd(), '.wiki-export');
23
+
24
+ interface DocFile {
25
+ relativePath: string;
26
+ fullPath: string;
27
+ content: string;
28
+ wikiSlug: string;
29
+ }
30
+
31
+ function getAllDocFiles(dir: string, basePath: string = ''): DocFile[] {
32
+ const files: DocFile[] = [];
33
+
34
+ if (!fs.existsSync(dir)) {
35
+ console.log(`āš ļø Directory ${dir} does not exist`);
36
+ return files;
37
+ }
38
+
39
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
40
+
41
+ for (const entry of entries) {
42
+ const fullPath = path.join(dir, entry.name);
43
+ const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name;
44
+
45
+ if (entry.isDirectory()) {
46
+ // Skip certain directories
47
+ if (entry.name === 'node_modules' || entry.name.startsWith('.')) {
48
+ continue;
49
+ }
50
+ files.push(...getAllDocFiles(fullPath, relativePath));
51
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
52
+ const content = fs.readFileSync(fullPath, 'utf-8');
53
+ // Convert file path to wiki slug format
54
+ // e.g., "getting-started.md" -> "Getting-Started"
55
+ // e.g., "migration/general-agent-schema.yml" -> "Migration/General-Agent-Schema"
56
+ const wikiSlug = relativePath
57
+ .replace(/\.md$/, '')
58
+ .split('/')
59
+ .map(part => part
60
+ .split('-')
61
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
62
+ .join('-')
63
+ )
64
+ .join('/');
65
+
66
+ files.push({
67
+ relativePath,
68
+ fullPath,
69
+ content,
70
+ wikiSlug,
71
+ });
72
+ }
73
+ }
74
+
75
+ return files;
76
+ }
77
+
78
+ function processContentForWiki(content: string, filename: string): string {
79
+ // Remove frontmatter if present (wiki doesn't use it)
80
+ if (content.startsWith('---')) {
81
+ const endIndex = content.indexOf('---', 3);
82
+ if (endIndex !== -1) {
83
+ content = content.substring(endIndex + 3).trim();
84
+ }
85
+ }
86
+
87
+ // Fix relative links - convert to wiki-relative format
88
+ // This is a basic conversion - may need manual adjustment
89
+ content = content.replace(/\]\(\.\.\/examples\//g, '](Examples/');
90
+ content = content.replace(/\]\(\.\.\/spec\//g, '](Specification/');
91
+ content = content.replace(/\]\(\.\.\/migration\//g, '](Migration/');
92
+ content = content.replace(/\]\(getting-started\.md\)/g, '](Getting-Started)');
93
+ content = content.replace(/\]\(openapi-extensions\.md\)/g, '](OpenAPI-Extensions)');
94
+
95
+ return content;
96
+ }
97
+
98
+ async function mergeDocsToWiki(): Promise<void> {
99
+ console.log('šŸ”„ Preparing docs for GitLab wiki merge...\n');
100
+
101
+ // Read all doc files
102
+ const docFiles = getAllDocFiles(DOCS_SOURCE_DIR);
103
+
104
+ if (docFiles.length === 0) {
105
+ console.log('āŒ No markdown files found in docs directory');
106
+ return;
107
+ }
108
+
109
+ console.log(`šŸ“š Found ${docFiles.length} documentation files\n`);
110
+
111
+ // Create output directory
112
+ if (!fs.existsSync(OUTPUT_DIR)) {
113
+ fs.mkdirSync(OUTPUT_DIR, { recursive: true });
114
+ }
115
+
116
+ // Process and write files
117
+ const manifest: Array<{ slug: string; file: string; size: number }> = [];
118
+
119
+ for (const doc of docFiles) {
120
+ const processedContent = processContentForWiki(doc.content, doc.relativePath);
121
+ const outputPath = path.join(OUTPUT_DIR, `${doc.wikiSlug}.md`);
122
+
123
+ // Ensure directory exists
124
+ const outputDir = path.dirname(outputPath);
125
+ if (!fs.existsSync(outputDir)) {
126
+ fs.mkdirSync(outputDir, { recursive: true });
127
+ }
128
+
129
+ fs.writeFileSync(outputPath, processedContent);
130
+ manifest.push({
131
+ slug: doc.wikiSlug,
132
+ file: doc.relativePath,
133
+ size: processedContent.length,
134
+ });
135
+
136
+ console.log(`āœ… ${doc.relativePath} -> ${doc.wikiSlug}`);
137
+ }
138
+
139
+ // Write manifest
140
+ const manifestPath = path.join(OUTPUT_DIR, 'MANIFEST.json');
141
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
142
+
143
+ // Write instructions
144
+ const instructions = `# GitLab Wiki Merge Instructions
145
+
146
+ ## Files Prepared
147
+
148
+ ${docFiles.length} documentation files have been prepared for GitLab wiki.
149
+
150
+ ## How to Merge
151
+
152
+ ### Option 1: Manual Upload (Recommended for First Time)
153
+
154
+ 1. Go to your GitLab project: https://${process.env.GITLAB_HOST || 'gitlab.com'}/blueflyio/openstandardagents/-/wikis
155
+ 2. For each file in the manifest:
156
+ - Click "New Page"
157
+ - Use the slug as the page title (e.g., "Getting-Started")
158
+ - Copy the content from .wiki-export/[slug].md
159
+ - Save the page
160
+
161
+ ### Option 2: GitLab API (Automated)
162
+
163
+ You can use the GitLab API to upload pages programmatically:
164
+
165
+ \`\`\`bash
166
+ # Set your GitLab token
167
+ export GITLAB_TOKEN="your-token-here"
168
+ // GITLAB_HOST should be set via environment variable or CI_SERVER_HOST
169
+
170
+ # Upload each page
171
+ for file in .wiki-export/*.md; do
172
+ slug=$(basename "$file" .md)
173
+ curl -X POST \\
174
+ "https://\${GITLAB_HOST}/api/v4/projects/llm%2Fopenstandardagents/wikis" \\
175
+ -H "PRIVATE-TOKEN: \${GITLAB_TOKEN}" \\
176
+ -F "title=\${slug}" \\
177
+ -F "content=@\${file}"
178
+ done
179
+ \`\`\`
180
+
181
+ ## Files to Upload
182
+
183
+ See MANIFEST.json for the complete list of files and their wiki slugs.
184
+
185
+ ## Notes
186
+
187
+ - Links may need manual adjustment after upload
188
+ - Images and assets should be uploaded separately
189
+ - Some relative links may need to be updated for wiki structure
190
+ `;
191
+
192
+ fs.writeFileSync(path.join(OUTPUT_DIR, 'INSTRUCTIONS.md'), instructions);
193
+
194
+ console.log(`\n✨ Prepared ${docFiles.length} files for wiki merge`);
195
+ console.log(`šŸ“ Output directory: ${OUTPUT_DIR}`);
196
+ console.log(`\nšŸ“‹ Next steps:`);
197
+ console.log(` 1. Review files in ${OUTPUT_DIR}`);
198
+ console.log(` 2. Follow instructions in ${OUTPUT_DIR}/INSTRUCTIONS.md`);
199
+ console.log(` 3. Upload to GitLab wiki manually or via API`);
200
+ }
201
+
202
+ // Run if called directly
203
+ mergeDocsToWiki().catch((error) => {
204
+ console.error('āŒ Failed to prepare docs for wiki:', error.message);
205
+ process.exit(1);
206
+ });
207
+
@@ -17,16 +17,44 @@ const versionTsPath = path.join(__dirname, '..', 'lib', 'version.ts');
17
17
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
18
18
  const version = packageJson.version;
19
19
 
20
+ // Read versions.json if it exists
21
+ const versionsJsonPath = path.join(__dirname, '..', 'lib', 'versions.json');
22
+ let versionsData = { all: [], stable: version, dev: null };
23
+ try {
24
+ if (fs.existsSync(versionsJsonPath)) {
25
+ versionsData = JSON.parse(fs.readFileSync(versionsJsonPath, 'utf8'));
26
+ }
27
+ } catch (e) {
28
+ // Ignore if versions.json doesn't exist yet
29
+ }
30
+
20
31
  // Generate version.ts content
21
32
  const versionTsContent = `// OSSA version constants
22
33
  // AUTO-GENERATED - DO NOT EDIT DIRECTLY
23
34
  // Update package.json version instead, then run: npm run sync-version
24
35
 
36
+ import versionsData from './versions.json';
37
+
25
38
  export const OSSA_VERSION = "${version}";
26
39
  export const OSSA_VERSION_TAG = \`v\${OSSA_VERSION}\`;
27
40
  export const OSSA_API_VERSION = \`ossa/v\${OSSA_VERSION}\`;
28
41
  export const OSSA_SCHEMA_VERSION = OSSA_VERSION;
29
42
 
43
+ // Aliases for backward compatibility
44
+ export const STABLE_VERSION = OSSA_VERSION;
45
+ export const STABLE_VERSION_TAG = OSSA_VERSION_TAG;
46
+
47
+ // Version data from versions.json
48
+ export const STABLE_VERSIONS = versionsData.all.filter((v: any) => v.type === 'stable');
49
+ export const DEV_VERSIONS = versionsData.all.filter((v: any) => v.type === 'dev' || v.type === 'prerelease');
50
+ export const ALL_VERSIONS = versionsData.all;
51
+ export const DEV_VERSION_TAG = versionsData.dev ? \`v\${versionsData.dev}\` : undefined;
52
+
53
+ // Utility to get version info
54
+ export function getVersionInfo(version: string): any {
55
+ return versionsData.all.find((v: any) => v.version === version);
56
+ }
57
+
30
58
  // Utility to get schema path
31
59
  export function getSchemaPath(ver = OSSA_VERSION): string {
32
60
  return \`/schemas/ossa-\${ver}.schema.json\`;