@bluefly/openstandardagents 0.2.4 → 0.2.7

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 (511) hide show
  1. package/.cursorrules +84 -0
  2. package/.devfile.yaml +87 -0
  3. package/.env.example +25 -3
  4. package/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
  6. package/.github/workflows/dependabot-comment.yml +34 -0
  7. package/.github/workflows/pr-comment.yml +33 -0
  8. package/.github/workflows/release.yml +1 -1
  9. package/.husky/pre-commit +5 -0
  10. package/.kiro/config.json +21 -0
  11. package/.kiro/settings/mcp.json +61 -0
  12. package/.kiro/specs/scripts-migration-api-first/design.md +883 -0
  13. package/.kiro/specs/scripts-migration-api-first/requirements.md +165 -0
  14. package/.kiro/specs/scripts-migration-api-first/tasks.md +539 -0
  15. package/.kiro/specs/website-brand-identity/design.md +1060 -0
  16. package/.kiro/specs/website-brand-identity/requirements.md +287 -0
  17. package/.kiro/specs/website-brand-identity/tasks.md +981 -0
  18. package/.releaserc.json +5 -4
  19. package/.version.json +6 -0
  20. package/CHANGELOG.md +163 -96
  21. package/CONTRIBUTING.md +23 -5
  22. package/README.md +130 -43
  23. package/bin/ossa +24 -3
  24. package/bin/ossa-dev +42 -0
  25. package/bin/ossa-export +32 -0
  26. package/bin/ossa-generate +60 -0
  27. package/bin/ossa-health +40 -0
  28. package/bin/ossa-init +26 -0
  29. package/bin/ossa-validate-all +55 -0
  30. package/bin/ossa-version +23 -0
  31. package/bin/validate-ossa-0.2.4.ts +244 -0
  32. package/bin/validate-ossa-0.2.5-RC.ts +244 -0
  33. package/bin/validate-ossa.ts +273 -0
  34. package/dist/di-container.d.ts +1 -1
  35. package/dist/di-container.d.ts.map +1 -1
  36. package/dist/di-container.js.map +1 -1
  37. package/dist/repositories/schema.repository.d.ts +17 -2
  38. package/dist/repositories/schema.repository.d.ts.map +1 -1
  39. package/dist/repositories/schema.repository.js +102 -19
  40. package/dist/repositories/schema.repository.js.map +1 -1
  41. package/dist/services/generation.service.d.ts +7 -5
  42. package/dist/services/generation.service.d.ts.map +1 -1
  43. package/dist/services/generation.service.js +92 -44
  44. package/dist/services/generation.service.js.map +1 -1
  45. package/dist/services/github-sync/github-client.d.ts +14 -0
  46. package/dist/services/github-sync/github-client.d.ts.map +1 -0
  47. package/dist/services/github-sync/github-client.js +41 -0
  48. package/dist/services/github-sync/github-client.js.map +1 -0
  49. package/dist/services/github-sync/gitlab-client.d.ts +17 -0
  50. package/dist/services/github-sync/gitlab-client.d.ts.map +1 -0
  51. package/dist/services/github-sync/gitlab-client.js +42 -0
  52. package/dist/services/github-sync/gitlab-client.js.map +1 -0
  53. package/dist/services/github-sync/schemas.d.ts +46 -0
  54. package/dist/services/github-sync/schemas.d.ts.map +1 -0
  55. package/dist/services/github-sync/schemas.js +36 -0
  56. package/dist/services/github-sync/schemas.js.map +1 -0
  57. package/dist/services/github-sync/sync.service.d.ts +27 -0
  58. package/dist/services/github-sync/sync.service.d.ts.map +1 -0
  59. package/dist/services/github-sync/sync.service.js +99 -0
  60. package/dist/services/github-sync/sync.service.js.map +1 -0
  61. package/dist/services/gitlab-agent.service.d.ts +94 -0
  62. package/dist/services/gitlab-agent.service.d.ts.map +1 -0
  63. package/dist/services/gitlab-agent.service.js +162 -0
  64. package/dist/services/gitlab-agent.service.js.map +1 -0
  65. package/dist/services/migration.service.d.ts +3 -3
  66. package/dist/services/migration.service.d.ts.map +1 -1
  67. package/dist/services/migration.service.js +108 -61
  68. package/dist/services/migration.service.js.map +1 -1
  69. package/dist/services/release-automation/base-crud.service.d.ts +93 -0
  70. package/dist/services/release-automation/base-crud.service.d.ts.map +1 -0
  71. package/dist/services/release-automation/base-crud.service.js +68 -0
  72. package/dist/services/release-automation/base-crud.service.js.map +1 -0
  73. package/dist/services/release-automation/index.d.ts +12 -0
  74. package/dist/services/release-automation/index.d.ts.map +1 -0
  75. package/dist/services/release-automation/index.js +12 -0
  76. package/dist/services/release-automation/index.js.map +1 -0
  77. package/dist/services/release-automation/merge-request.service.d.ts +119 -0
  78. package/dist/services/release-automation/merge-request.service.d.ts.map +1 -0
  79. package/dist/services/release-automation/merge-request.service.js +212 -0
  80. package/dist/services/release-automation/merge-request.service.js.map +1 -0
  81. package/dist/services/release-automation/milestone.service.d.ts +104 -0
  82. package/dist/services/release-automation/milestone.service.d.ts.map +1 -0
  83. package/dist/services/release-automation/milestone.service.js +207 -0
  84. package/dist/services/release-automation/milestone.service.js.map +1 -0
  85. package/dist/services/release-automation/release.service.d.ts +118 -0
  86. package/dist/services/release-automation/release.service.d.ts.map +1 -0
  87. package/dist/services/release-automation/release.service.js +207 -0
  88. package/dist/services/release-automation/release.service.js.map +1 -0
  89. package/dist/services/release-automation/schemas/release.schema.d.ts +299 -0
  90. package/dist/services/release-automation/schemas/release.schema.d.ts.map +1 -0
  91. package/dist/services/release-automation/schemas/release.schema.js +269 -0
  92. package/dist/services/release-automation/schemas/release.schema.js.map +1 -0
  93. package/dist/services/release-automation/tag.service.d.ts +99 -0
  94. package/dist/services/release-automation/tag.service.d.ts.map +1 -0
  95. package/dist/services/release-automation/tag.service.js +180 -0
  96. package/dist/services/release-automation/tag.service.js.map +1 -0
  97. package/dist/services/release-automation/webhook.service.d.ts +37 -0
  98. package/dist/services/release-automation/webhook.service.d.ts.map +1 -0
  99. package/dist/services/release-automation/webhook.service.js +173 -0
  100. package/dist/services/release-automation/webhook.service.js.map +1 -0
  101. package/dist/services/runtime/claude/capability-mapper.d.ts +84 -0
  102. package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -0
  103. package/dist/services/runtime/claude/capability-mapper.js +245 -0
  104. package/dist/services/runtime/claude/capability-mapper.js.map +1 -0
  105. package/dist/services/runtime/claude/claude-adapter.d.ts +80 -0
  106. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -0
  107. package/dist/services/runtime/claude/claude-adapter.js +287 -0
  108. package/dist/services/runtime/claude/claude-adapter.js.map +1 -0
  109. package/dist/services/runtime/claude/manifest-parser.d.ts +77 -0
  110. package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -0
  111. package/dist/services/runtime/claude/manifest-parser.js +169 -0
  112. package/dist/services/runtime/claude/manifest-parser.js.map +1 -0
  113. package/dist/services/runtime/claude/types.d.ts +115 -0
  114. package/dist/services/runtime/claude/types.d.ts.map +1 -0
  115. package/dist/services/runtime/claude/types.js +6 -0
  116. package/dist/services/runtime/claude/types.js.map +1 -0
  117. package/dist/services/runtime/openai.adapter.d.ts.map +1 -1
  118. package/dist/services/runtime/openai.adapter.js.map +1 -1
  119. package/dist/services/validation.service.d.ts.map +1 -1
  120. package/dist/services/validation.service.js +35 -11
  121. package/dist/services/validation.service.js.map +1 -1
  122. package/dist/services/validators/anthropic.validator.d.ts +2 -2
  123. package/dist/services/validators/anthropic.validator.d.ts.map +1 -1
  124. package/dist/services/validators/anthropic.validator.js +14 -9
  125. package/dist/services/validators/anthropic.validator.js.map +1 -1
  126. package/dist/services/validators/autogen.validator.d.ts +2 -2
  127. package/dist/services/validators/autogen.validator.d.ts.map +1 -1
  128. package/dist/services/validators/autogen.validator.js +18 -15
  129. package/dist/services/validators/autogen.validator.js.map +1 -1
  130. package/dist/services/validators/crewai.validator.d.ts +2 -2
  131. package/dist/services/validators/crewai.validator.d.ts.map +1 -1
  132. package/dist/services/validators/crewai.validator.js +18 -17
  133. package/dist/services/validators/crewai.validator.js.map +1 -1
  134. package/dist/services/validators/cursor.validator.d.ts +2 -2
  135. package/dist/services/validators/cursor.validator.d.ts.map +1 -1
  136. package/dist/services/validators/cursor.validator.js +15 -11
  137. package/dist/services/validators/cursor.validator.js.map +1 -1
  138. package/dist/services/validators/langchain.validator.d.ts +2 -2
  139. package/dist/services/validators/langchain.validator.d.ts.map +1 -1
  140. package/dist/services/validators/langchain.validator.js +14 -11
  141. package/dist/services/validators/langchain.validator.js.map +1 -1
  142. package/dist/services/validators/langflow.validator.d.ts +2 -2
  143. package/dist/services/validators/langflow.validator.d.ts.map +1 -1
  144. package/dist/services/validators/langflow.validator.js +14 -9
  145. package/dist/services/validators/langflow.validator.js.map +1 -1
  146. package/dist/services/validators/langgraph.validator.d.ts +2 -2
  147. package/dist/services/validators/langgraph.validator.d.ts.map +1 -1
  148. package/dist/services/validators/langgraph.validator.js +23 -18
  149. package/dist/services/validators/langgraph.validator.js.map +1 -1
  150. package/dist/services/validators/llamaindex.validator.d.ts +2 -2
  151. package/dist/services/validators/llamaindex.validator.d.ts.map +1 -1
  152. package/dist/services/validators/llamaindex.validator.js +19 -16
  153. package/dist/services/validators/llamaindex.validator.js.map +1 -1
  154. package/dist/services/validators/openai.validator.d.ts +2 -2
  155. package/dist/services/validators/openai.validator.d.ts.map +1 -1
  156. package/dist/services/validators/openai.validator.js +20 -16
  157. package/dist/services/validators/openai.validator.js.map +1 -1
  158. package/dist/services/validators/vercel-ai.validator.d.ts +2 -2
  159. package/dist/services/validators/vercel-ai.validator.d.ts.map +1 -1
  160. package/dist/services/validators/vercel-ai.validator.js +16 -15
  161. package/dist/services/validators/vercel-ai.validator.js.map +1 -1
  162. package/dist/spec/v0.2.0/ossa-0.2.0.schema.json +0 -0
  163. package/dist/spec/v0.2.1/ossa-0.2.1.schema.json +555 -0
  164. package/dist/spec/v0.2.3/CHANGELOG.md +7 -7
  165. package/dist/spec/v0.2.3/README.md +9 -9
  166. package/dist/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +18 -18
  167. package/{spec/v0.2.4-dev → dist/spec/v0.2.4}/CHANGELOG.md +8 -8
  168. package/dist/spec/{v0.2.4-dev → v0.2.4}/migrations/v0.2.3-to-v0.2.4.md +10 -10
  169. package/dist/spec/{v0.2.4-dev/ossa-0.2.4-dev.yaml → v0.2.4/ossa-0.2.4.yaml} +1 -1
  170. package/dist/spec/v0.2.5/CHANGELOG.md +401 -0
  171. package/dist/spec/v0.2.5/README.md +72 -0
  172. package/dist/spec/v0.2.5/migrations/v0.2.3-to-v0.2.4.md +599 -0
  173. package/dist/spec/v0.2.5/ossa-0.2.5.schema.json +1696 -0
  174. package/dist/spec/v0.2.5/ossa-0.2.5.yaml +581 -0
  175. package/dist/spec/v0.2.5-RC/CHANGELOG.md +401 -0
  176. package/dist/spec/v0.2.5-RC/README.md +72 -0
  177. package/{spec/v0.2.4-dev → dist/spec/v0.2.5-RC}/migrations/v0.2.3-to-v0.2.4.md +10 -10
  178. package/dist/spec/v0.2.5-RC/ossa-0.2.5-RC.schema.json +1696 -0
  179. package/dist/spec/v0.2.5-RC/ossa-0.2.5-RC.yaml +581 -0
  180. package/dist/spec/v0.2.6/CHANGELOG.md +401 -0
  181. package/dist/spec/v0.2.6/README.md +72 -0
  182. package/dist/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
  183. package/dist/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  184. package/dist/spec/v0.2.6/ossa-0.2.6.schema.json +1786 -0
  185. package/dist/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
  186. package/dist/spec/v0.2.6-dev/CHANGELOG.md +164 -0
  187. package/dist/spec/v0.2.6-dev/README.md +75 -0
  188. package/dist/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
  189. package/dist/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  190. package/dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json +1696 -0
  191. package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
  192. package/dist/spec/{v0.2.5-dev/ossa-0.2.5-dev.schema.json → v0.2.6-dev/ossa-0.2.6-dev.schema.json} +323 -359
  193. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
  194. package/dist/spec/v0.2.7/core/agentgraph.md +324 -0
  195. package/dist/spec/v0.2.7/resources/agentgraph.yaml +135 -0
  196. package/dist/types/index.d.ts +6 -1
  197. package/dist/types/index.d.ts.map +1 -1
  198. package/docs/brand-guide/01-brand-overview.md +37 -0
  199. package/docs/brand-guide/02-logo-usage.md +43 -0
  200. package/docs/brand-guide/03-color-palette.md +70 -0
  201. package/docs/brand-guide/04-typography.md +82 -0
  202. package/docs/brand-guide/05-voice-and-tone.md +108 -0
  203. package/docs/brand-guide/06-visual-elements.md +137 -0
  204. package/docs/brand-guide/07-application-examples.md +153 -0
  205. package/docs/brand-guide/OssaLogo/OssA_Logo.svg +21 -0
  206. package/docs/brand-guide/OssaLogo/brand.af +0 -0
  207. package/docs/brand-guide/README.md +107 -0
  208. package/docs/comparison.md +315 -0
  209. package/docs/operations/automation-roadmap.md +245 -0
  210. package/docs/operations/github-sync-strategy.md +357 -0
  211. package/examples/anthropic/claude-assistant.ossa.json +5 -4
  212. package/examples/autogen/multi-agent.ossa.json +6 -4
  213. package/examples/bridges/Dockerfile.production +1 -1
  214. package/examples/crewai/research-team.ossa.json +14 -5
  215. package/examples/cursor/code-review-agent.ossa.json +21 -6
  216. package/examples/enterprise/agent.yml +1 -1
  217. package/examples/getting-started/hello-world-complete.ossa.yaml +2 -2
  218. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  219. package/examples/langchain/chain-agent.ossa.json +21 -5
  220. package/examples/langflow/workflow-agent.ossa.json +2 -3
  221. package/examples/langgraph/state-machine-agent.ossa.json +2 -3
  222. package/examples/llamaindex/rag-agent.ossa.json +2 -3
  223. package/examples/openai/basic-agent.ossa.yaml +61 -0
  224. package/examples/openai/multi-tool-agent.ossa.json +188 -0
  225. package/examples/openai/swarm-agent.ossa.json +18 -5
  226. package/examples/openapi-extensions/README.md +1 -1
  227. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  228. package/examples/vercel/edge-agent.ossa.json +5 -4
  229. package/infrastructure/gitlab-agent/rbac.yaml +126 -0
  230. package/infrastructure/gitlab-agent/values.yaml +150 -0
  231. package/infrastructure/k8s/monitoring/00-namespace.yaml +7 -0
  232. package/infrastructure/k8s/monitoring/01-prometheus.yaml +142 -0
  233. package/infrastructure/k8s/monitoring/02-grafana.yaml +63 -0
  234. package/infrastructure/k8s/monitoring/03-lightweight.yaml +121 -0
  235. package/infrastructure/k8s/monitoring/README.md +73 -0
  236. package/infrastructure/k8s/monitoring/deploy.sh +38 -0
  237. package/openapi/CHANGELOG.md +21 -0
  238. package/openapi/README.md +46 -0
  239. package/openapi/{ossa-core-api.openapi.yaml → core/ossa-core-api.openapi.yaml} +59 -4
  240. package/openapi/{ossa-registry.openapi.yaml → core/ossa-registry.openapi.yaml} +75 -2
  241. package/openapi/{unified-agent-gateway.openapi.yaml → core/unified-agent-gateway.openapi.yaml} +3 -3
  242. package/openapi/github-sync.yaml +115 -0
  243. package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +136 -0
  244. package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +192 -0
  245. package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +149 -0
  246. package/openapi/reference-implementations/critic-agent-api.openapi.yaml +151 -0
  247. package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +217 -0
  248. package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +149 -0
  249. package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +151 -0
  250. package/openapi/reference-implementations/governor-agent-api.openapi.yaml +193 -0
  251. package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +165 -0
  252. package/openapi/reference-implementations/judge-agent-api.openapi.yaml +148 -0
  253. package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +167 -0
  254. package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +171 -0
  255. package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +171 -0
  256. package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +242 -0
  257. package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +187 -0
  258. package/openapi/{self-evolving-ecosystem.openapi.yaml → reference-implementations/self-evolving-ecosystem.openapi.yaml} +2 -2
  259. package/openapi/reference-implementations/worker-agent-api.openapi.yaml +208 -0
  260. package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +193 -0
  261. package/package.json +53 -22
  262. package/release.config.js +20 -5
  263. package/scripts/README.md +103 -0
  264. package/scripts/auto-rebase-mrs.ts +106 -0
  265. package/scripts/batch-dependabot.sh +57 -0
  266. package/scripts/bump-version.ts +57 -0
  267. package/scripts/configure-gitlab-branch-protection.ts +95 -0
  268. package/scripts/create-issue-helper.ts +238 -0
  269. package/scripts/create-milestone-issue.ts +73 -0
  270. package/scripts/enhanced-version-manager.ts +257 -0
  271. package/scripts/fix-schema-formats.js +82 -0
  272. package/scripts/gen-types.ts +51 -0
  273. package/scripts/gen-zod.ts +51 -0
  274. package/scripts/generate-agents-catalog.ts +77 -0
  275. package/scripts/generate-api-docs.ts +218 -0
  276. package/scripts/generate-cli-docs.ts +410 -0
  277. package/scripts/generate-config-docs.ts +109 -0
  278. package/scripts/generate-errors-docs.ts +76 -0
  279. package/scripts/generate-examples-docs.ts +99 -0
  280. package/scripts/generate-schema-docs.ts +296 -0
  281. package/scripts/generate-types-docs.ts +48 -0
  282. package/scripts/lib/exec.ts +37 -0
  283. package/scripts/lib/file-ops.ts +58 -0
  284. package/scripts/lib/version.ts +83 -0
  285. package/scripts/lowercase-docs.ts +43 -0
  286. package/scripts/manage-milestone-mrs.ts +279 -0
  287. package/scripts/process-doc-templates.ts +37 -0
  288. package/scripts/rebase-all-mrs.sh +75 -0
  289. package/scripts/schemas/package.schema.ts +75 -0
  290. package/scripts/setup-branch-protection.sh +33 -0
  291. package/scripts/sync-github-pr.sh +48 -0
  292. package/scripts/sync-version.js +40 -0
  293. package/scripts/sync-version.ts +39 -0
  294. package/scripts/sync-versions.ts +488 -0
  295. package/scripts/sync-wiki.sh +50 -0
  296. package/scripts/validate-all.js +127 -0
  297. package/scripts/validate-schema.ts +49 -0
  298. package/spec/v0.2.0/ossa-0.2.0.schema.json +0 -0
  299. package/spec/v0.2.1/ossa-0.2.1.schema.json +555 -0
  300. package/spec/v0.2.3/CHANGELOG.md +7 -7
  301. package/spec/v0.2.3/README.md +9 -9
  302. package/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +18 -18
  303. package/{dist/spec/v0.2.4-dev → spec/v0.2.4}/CHANGELOG.md +8 -8
  304. package/spec/v0.2.4/migrations/v0.2.3-to-v0.2.4.md +599 -0
  305. package/spec/{v0.2.4-dev/ossa-0.2.4-dev.yaml → v0.2.4/ossa-0.2.4.yaml} +1 -1
  306. package/spec/v0.2.5/CHANGELOG.md +401 -0
  307. package/spec/v0.2.5/README.md +72 -0
  308. package/spec/v0.2.5/migrations/v0.2.3-to-v0.2.4.md +599 -0
  309. package/spec/v0.2.5/ossa-0.2.5.schema.json +1696 -0
  310. package/spec/v0.2.5/ossa-0.2.5.yaml +581 -0
  311. package/spec/v0.2.5-RC/CHANGELOG.md +401 -0
  312. package/spec/v0.2.5-RC/README.md +72 -0
  313. package/spec/v0.2.5-RC/migrations/v0.2.3-to-v0.2.4.md +599 -0
  314. package/spec/v0.2.5-RC/ossa-0.2.5-RC.schema.json +1696 -0
  315. package/spec/v0.2.5-RC/ossa-0.2.5-RC.yaml +581 -0
  316. package/spec/v0.2.6/CHANGELOG.md +401 -0
  317. package/spec/v0.2.6/README.md +72 -0
  318. package/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
  319. package/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  320. package/spec/v0.2.6/ossa-0.2.6.schema.json +1786 -0
  321. package/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
  322. package/spec/v0.2.6-dev/CHANGELOG.md +164 -0
  323. package/spec/v0.2.6-dev/README.md +75 -0
  324. package/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
  325. package/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  326. package/spec/v0.2.6-dev/ossa-0.2.5.schema.json +1696 -0
  327. package/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
  328. package/spec/{v0.2.5-dev/ossa-0.2.5-dev.schema.json → v0.2.6-dev/ossa-0.2.6-dev.schema.json} +323 -359
  329. package/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
  330. package/spec/v0.2.7/core/agentgraph.md +324 -0
  331. package/spec/v0.2.7/resources/agentgraph.yaml +135 -0
  332. package/website/{.lighthouserc.js → .lighthouserc.ts} +5 -1
  333. package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +445 -0
  334. package/website/Dockerfile +18 -5
  335. package/website/app/about/page.tsx +60 -51
  336. package/website/app/blog/[slug]/page.tsx +61 -20
  337. package/website/app/blog/page.tsx +120 -33
  338. package/website/app/design-guide/page.tsx +511 -0
  339. package/website/app/docs/[[...slug]]/page.tsx +641 -143
  340. package/website/app/ecosystem/page.tsx +146 -111
  341. package/website/app/examples/page.tsx +51 -41
  342. package/website/app/globals.scss +370 -0
  343. package/website/app/layout.tsx +2 -2
  344. package/website/app/license/page.tsx +183 -0
  345. package/website/app/not-found.tsx +18 -0
  346. package/website/app/page.tsx +513 -236
  347. package/website/app/page.tsx.bak +679 -0
  348. package/website/app/page.tsx.bak2 +649 -0
  349. package/website/app/playground/page.tsx +25 -45
  350. package/website/app/schema/page.tsx +423 -392
  351. package/website/app/specification/page.tsx +245 -169
  352. package/website/components/Logo.tsx +75 -2
  353. package/website/components/docs/DocsSidebar.tsx +40 -3
  354. package/website/components/docs/MarkdownContent.tsx +265 -47
  355. package/website/components/docs/VersionSelector.tsx +64 -8
  356. package/website/components/examples/ExamplesViewer.tsx +2 -2
  357. package/website/components/layout/Footer.tsx +6 -1
  358. package/website/components/layout/Header.tsx +44 -42
  359. package/website/components/schema/SchemaComponentsAccordion.tsx +84 -0
  360. package/website/components/schema/SchemaExplorer.tsx +4 -4
  361. package/website/components/ui/Badge.tsx +82 -0
  362. package/website/components/ui/Button.tsx +116 -0
  363. package/website/components/ui/Card.tsx +167 -0
  364. package/website/components/ui/Checkbox.tsx +141 -0
  365. package/website/components/ui/Input.tsx +169 -0
  366. package/website/components/ui/Radio.tsx +141 -0
  367. package/website/components/ui/Select.tsx +182 -0
  368. package/website/components/ui/Tag.tsx +158 -0
  369. package/website/components/ui/Textarea.tsx +195 -0
  370. package/website/components/ui/index.ts +11 -0
  371. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +276 -276
  372. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +3 -14
  373. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +286 -0
  374. package/website/content/blog/introducing-ossa-framework.md +1 -1
  375. package/website/content/blog/ossa-production-results.md +5 -5
  376. package/website/content/blog/welcome-to-ossa.md +2 -2
  377. package/website/content/blog/why-ai-agents-need-open-standard.md +5 -5
  378. package/website/content/docs/{00-HOME.md → 00-home.md} +18 -25
  379. package/website/content/docs/adapters/openai-adapter.md +693 -0
  380. package/website/content/docs/agents/catalog.md +28 -0
  381. package/website/content/docs/aiflow-framework-integration-with-ossa.md +107 -0
  382. package/website/content/docs/api-reference/index.md +38 -0
  383. package/website/content/docs/api-reference/ossa-core-api.md +634 -0
  384. package/website/content/docs/api-reference/ossa-registry-api.md +515 -0
  385. package/website/content/docs/api-reference/unified-agent-gateway.md +599 -0
  386. package/website/content/docs/architecture/execution-flow.md +3 -3
  387. package/website/content/docs/architecture/multi-agent-systems.md +4 -4
  388. package/website/content/docs/architecture/overview.md +4 -4
  389. package/website/content/docs/architecture/stack-integration.md +4 -4
  390. package/website/content/docs/changelog.md +4 -4
  391. package/website/content/docs/cli-reference/index.md +111 -0
  392. package/website/content/docs/cli-reference/ossa-agents.md +70 -0
  393. package/website/content/docs/cli-reference/ossa-export.md +56 -0
  394. package/website/content/docs/cli-reference/ossa-generate.md +66 -0
  395. package/website/content/docs/cli-reference/ossa-gitlab-agent.md +57 -0
  396. package/website/content/docs/cli-reference/ossa-import.md +56 -0
  397. package/website/content/docs/cli-reference/ossa-init.md +57 -0
  398. package/website/content/docs/cli-reference/ossa-migrate.md +62 -0
  399. package/website/content/docs/cli-reference/ossa-run.md +66 -0
  400. package/website/content/docs/cli-reference/ossa-schema.md +57 -0
  401. package/website/content/docs/cli-reference/ossa-setup.md +57 -0
  402. package/website/content/docs/cli-reference/ossa-validate.md +66 -0
  403. package/website/content/docs/configuration/index.md +97 -0
  404. package/website/content/docs/contributing.md +2 -2
  405. package/website/content/docs/deployment/github-mirroring.md +924 -0
  406. package/website/content/docs/documentation.md +100 -0
  407. package/website/content/docs/ecosystem/framework-support.md +551 -11
  408. package/website/content/docs/errors/index.md +10 -0
  409. package/website/content/docs/{AIFlow-Framework-Integration-with-OSSA.md → examples/aiflow-framework-integration-with-ossa.md} +2 -2
  410. package/website/content/docs/examples/catalog.md +300 -0
  411. package/website/content/docs/for-audiences/{Students-Researchers.md → students-researchers.md} +1 -1
  412. package/website/content/docs/getting-started/index.md +92 -0
  413. package/website/content/docs/getting-started/installation.md +7 -7
  414. package/website/content/docs/getting-started/running-agents.md +215 -13
  415. package/{docs → website/content/docs}/getting-started.md +10 -6
  416. package/website/content/docs/integrations/aiflow.md +2 -2
  417. package/website/content/docs/integrations/drupal.md +2 -2
  418. package/website/content/docs/migration-guides/agent-schema-comparison.md +232 -0
  419. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +5 -5
  420. package/website/content/docs/migration-guides/crewai-to-ossa.md +3 -3
  421. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +11 -11
  422. package/{docs/migration → website/content/docs/migration-guides}/general-agent-schema.yml +1 -9
  423. package/website/content/docs/migration-guides/index.md +1 -1
  424. package/website/content/docs/migration-guides/langchain-to-ossa.md +17 -17
  425. package/website/content/docs/migration-guides/langflow-to-ossa.md +3 -3
  426. package/website/content/docs/migration-guides/openai-to-ossa.md +10 -10
  427. package/website/content/docs/openapi-extensions/examples.md +9 -9
  428. package/website/content/docs/openapi-extensions/index.md +59 -3
  429. package/website/content/docs/openapi-extensions/operation-extensions.md +61 -2
  430. package/website/content/docs/openapi-extensions/root-extensions.md +49 -3
  431. package/{docs/OSSA-COMPLIANT-BADGE.md → website/content/docs/ossa-compliant-badge.md} +18 -15
  432. package/website/content/docs/pre-release/index.md +10 -10
  433. package/website/content/docs/readme.md +35 -0
  434. package/website/content/docs/releases/v0.2.6.md +99 -0
  435. package/website/content/docs/schema-reference/agent-capabilities.md +50 -0
  436. package/website/content/docs/schema-reference/agent-id.md +52 -0
  437. package/website/content/docs/schema-reference/agent-name.md +50 -0
  438. package/website/content/docs/schema-reference/agent-role.md +54 -0
  439. package/website/content/docs/schema-reference/agent-spec.md +2 -2
  440. package/website/content/docs/schema-reference/agent-version.md +50 -0
  441. package/website/content/docs/schema-reference/autonomy.md +5 -5
  442. package/website/content/docs/schema-reference/constraints.md +5 -5
  443. package/website/content/docs/schema-reference/index.md +26 -157
  444. package/website/content/docs/schema-reference/llm-config.md +1 -1
  445. package/website/content/docs/schema-reference/observability.md +5 -5
  446. package/website/content/docs/schema-reference/ossa-manifest.md +6 -6
  447. package/website/content/docs/schema-reference/taxonomy.md +3 -3
  448. package/website/content/docs/types-reference/index.md +105 -0
  449. package/website/content/docs/use-cases/00-index.md +1 -1
  450. package/{docs/VERSIONING.md → website/content/docs/versioning.md} +9 -5
  451. package/website/dev.sh +53 -0
  452. package/website/docker-compose.dev.yml +36 -0
  453. package/website/lib/version.ts +18 -1
  454. package/website/lib/versions.json +103 -0
  455. package/website/next.config.ts +3 -1
  456. package/website/package-lock.json +552 -18
  457. package/website/package.json +11 -5
  458. package/website/postcss.config.mjs +1 -1
  459. package/website/scripts/fetch-versions.js +166 -0
  460. package/website/scripts/generate-examples-index.js +163 -0
  461. package/website/scripts/merge-docs-to-wiki.ts +207 -0
  462. package/website/scripts/sync-version.js +28 -0
  463. package/website/scripts/sync-wiki.ts +64 -3
  464. package/website/scripts/upload-wiki.ts +199 -0
  465. package/website/styles/_spacing.scss +453 -0
  466. package/website/styles/_tokens.scss +245 -0
  467. package/website/styles/_typography.scss +361 -0
  468. package/website/styles/_variables.scss +287 -0
  469. package/website/tailwind.config.ts +127 -22
  470. package/.releaserc.json.disabled +0 -81
  471. package/dist/spec/v0.2.5-dev/CHANGELOG.md +0 -171
  472. package/dist/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +0 -362
  473. package/dist/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +0 -464
  474. package/dist/spec/v0.2.5-dev/examples/research-team.ossa.yaml +0 -440
  475. package/dist/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +0 -317
  476. package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +0 -409
  477. package/docs/README.md +0 -31
  478. package/docs/agent-openapi-spec.yml +0 -942
  479. package/docs/openapi-extensions.md +0 -930
  480. package/docs/schemas/openapi-extensions.schema.json +0 -486
  481. package/openapi/gitlab-orchestrator.openapi.yaml +0 -330
  482. package/ossa-website-swarm-tasks.json +0 -105
  483. package/spec/v0.2.5-dev/CHANGELOG.md +0 -171
  484. package/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +0 -362
  485. package/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +0 -464
  486. package/spec/v0.2.5-dev/examples/research-team.ossa.yaml +0 -440
  487. package/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +0 -317
  488. package/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +0 -409
  489. package/website/app/api/validate/route.ts +0 -88
  490. package/website/app/globals.css +0 -108
  491. package/website/content/docs/OpenAPI-Extensions.md +0 -498
  492. package/website/content/docs/core-concepts/project-structure.md +0 -348
  493. package/website/content/docs/examples/Migration-Guides.md +0 -214
  494. package/website/content/docs/examples.md +0 -71
  495. package/website/content/docs/for-audiences/Enterprises.md +0 -256
  496. package/website/content/docs/for-audiences/architects.md +0 -224
  497. package/website/content/docs/for-audiences/developers.md +0 -220
  498. package/website/content/docs/getting-started/5-minute-overview.md +0 -85
  499. package/website/content/docs/getting-started/Hello-World.md +0 -184
  500. package/website/content/docs/getting-started/first-agent.md +0 -196
  501. package/website/content/docs/migration-guides/00-index.md +0 -76
  502. package/website/content/docs/migration-guides/README.md +0 -133
  503. package/website/next.config.js +0 -17
  504. package/website/postcss.config.js +0 -7
  505. package/website/tailwind.config.js +0 -58
  506. /package/dist/spec/{v0.2.4-dev/ossa-0.2.4-dev.schema.json → v0.2.4/ossa-0.2.4.schema.json} +0 -0
  507. /package/openapi/{ossa-registry-api.openapi.yaml → core/ossa-registry-api.openapi.yaml} +0 -0
  508. /package/openapi/{drupal-agent-api.openapi.yaml → reference-implementations/drupal-agent-api.openapi.yaml} +0 -0
  509. /package/openapi/{helm-generator.openapi.yaml → reference-implementations/helm-generator.openapi.yaml} +0 -0
  510. /package/spec/{v0.2.4-dev/ossa-0.2.4-dev.schema.json → v0.2.4/ossa-0.2.4.schema.json} +0 -0
  511. /package/{docs/migration → website/content/docs/migration-guides}/migration-manifest.json +0 -0
@@ -1,60 +1,63 @@
1
1
  'use client';
2
2
 
3
3
  import Link from 'next/link';
4
+ import { usePathname } from 'next/navigation';
4
5
  import { useState } from 'react';
5
6
 
6
7
  export function Header() {
7
8
  const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
9
+ const pathname = usePathname();
10
+
11
+ const isActive = (path: string) => pathname === path || pathname?.startsWith(path + '/');
8
12
 
9
13
  return (
10
14
  <header className="bg-white border-b border-gray-300 sticky top-0 z-50">
11
15
  <nav className="container mx-auto max-w-6xl px-4">
12
16
  <div className="flex items-center justify-between h-16">
13
- <Link href="/" className="flex items-center space-x-3 group">
17
+ <Link href="/" className="flex items-center space-x-2 group">
14
18
  <img
15
19
  src="/assets/brand/ossa-logo.svg"
16
20
  alt="OSSA Logo"
17
21
  className="h-10 w-10 transition-transform group-hover:scale-110"
18
22
  />
19
- <span className="text-2xl font-bold bg-gradient-to-r from-[#0066CC] to-[#00B8D4] bg-clip-text text-transparent">
23
+ <span className="text-2xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent">
20
24
  OSSA
21
25
  </span>
22
26
  </Link>
23
27
 
24
28
  {/* Desktop Navigation */}
25
- <div className="hidden md:flex items-center space-x-6">
26
- <Link href="/about" className="text-gray-600 hover:text-[#0066CC] transition-colors font-medium">
29
+ <div className="hidden md:flex items-center space-x-3 lg:space-x-6 text-sm lg:text-base">
30
+ <Link href="/about" className={`px-3 py-2 rounded-lg transition-all font-medium whitespace-nowrap ${isActive('/about') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}>
27
31
  About
28
32
  </Link>
29
- <Link href="/specification" className="text-gray-600 hover:text-[#0066CC] transition-colors font-medium">
33
+ <Link href="/specification" className={`px-3 py-2 rounded-lg transition-all font-medium whitespace-nowrap ${isActive('/specification') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}>
30
34
  Specification
31
35
  </Link>
32
- <Link href="/docs" className="text-gray-600 hover:text-[#0066CC] transition-colors font-medium">
33
- Documentation
34
- </Link>
35
- <Link href="/schema" className="text-gray-600 hover:text-[#0066CC] transition-colors font-medium">
36
+ <Link href="/schema" className={`px-3 py-2 rounded-lg transition-all font-medium whitespace-nowrap ${isActive('/schema') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}>
36
37
  Schema
37
38
  </Link>
38
- <Link href="/playground" className="text-gray-600 hover:text-[#0066CC] transition-colors font-medium">
39
+ <Link href="/docs" className={`px-3 py-2 rounded-lg transition-all font-medium whitespace-nowrap ${isActive('/docs') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}>
40
+ Docs
41
+ </Link>
42
+ <Link href="/blog" className={`px-3 py-2 rounded-lg transition-all font-medium whitespace-nowrap ${isActive('/blog') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}>
43
+ Blog
44
+ </Link>
45
+ <Link href="/playground" className={`px-3 py-2 rounded-lg transition-all font-medium whitespace-nowrap ${isActive('/playground') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}>
39
46
  Playground
40
47
  </Link>
41
- <Link href="/examples" className="text-gray-600 hover:text-[#0066CC] transition-colors font-medium">
48
+ <Link href="/examples" className={`px-3 py-2 rounded-lg transition-all font-medium whitespace-nowrap ${isActive('/examples') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}>
42
49
  Examples
43
50
  </Link>
44
- <Link href="/blog" className="text-gray-600 hover:text-[#0066CC] transition-colors font-medium">
45
- Blog
46
- </Link>
47
51
  <a
48
52
  href="https://github.com/blueflyio/openstandardagents"
49
53
  target="_blank"
50
54
  rel="noopener noreferrer"
51
- className="text-gray-600 hover:text-[#0066CC] transition-colors flex items-center gap-1 font-medium"
55
+ className="text-gray-600 hover:text-primary transition-colors flex items-center font-medium"
52
56
  title="View on GitHub"
53
57
  >
54
58
  <svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
55
59
  <path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" />
56
60
  </svg>
57
- GitHub
58
61
  </a>
59
62
  </div>
60
63
 
@@ -92,77 +95,76 @@ export function Header() {
92
95
  </div>
93
96
 
94
97
  {/* Mobile Navigation */}
95
- {mobileMenuOpen && (
96
- <div
97
- id="mobile-menu"
98
- className="md:hidden py-4 border-t border-gray-300"
99
- role="navigation"
100
- aria-label="Mobile navigation"
101
- >
98
+ <div
99
+ id="mobile-menu"
100
+ className={`md:hidden overflow-hidden transition-all duration-300 ease-in-out ${
101
+ mobileMenuOpen ? 'max-h-96 opacity-100 py-4 border-t border-gray-300' : 'max-h-0 opacity-0'
102
+ }`}
103
+ role="navigation"
104
+ aria-label="Mobile navigation"
105
+ >
102
106
  <Link
103
107
  href="/about"
104
- className="block py-2 text-gray-600 hover:text-[#0066CC] transition-colors font-medium"
108
+ className={`block px-3 py-2 rounded-lg transition-all font-medium ${isActive('/about') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}
105
109
  onClick={() => setMobileMenuOpen(false)}
106
110
  >
107
111
  About
108
112
  </Link>
109
113
  <Link
110
114
  href="/specification"
111
- className="block py-2 text-gray-600 hover:text-[#0066CC] transition-colors font-medium"
115
+ className={`block px-3 py-2 rounded-lg transition-all font-medium ${isActive('/specification') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}
112
116
  onClick={() => setMobileMenuOpen(false)}
113
117
  >
114
118
  Specification
115
119
  </Link>
120
+ <Link
121
+ href="/schema"
122
+ className={`block px-3 py-2 rounded-lg transition-all font-medium ${isActive('/schema') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}
123
+ onClick={() => setMobileMenuOpen(false)}
124
+ >
125
+ Schema
126
+ </Link>
116
127
  <Link
117
128
  href="/docs"
118
- className="block py-2 text-gray-600 hover:text-[#0066CC] transition-colors font-medium"
129
+ className={`block px-3 py-2 rounded-lg transition-all font-medium ${isActive('/docs') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}
119
130
  onClick={() => setMobileMenuOpen(false)}
120
131
  >
121
- Documentation
132
+ Docs
122
133
  </Link>
123
134
  <Link
124
- href="/schema"
125
- className="block py-2 text-gray-600 hover:text-[#0066CC] transition-colors font-medium"
135
+ href="/blog"
136
+ className={`block px-3 py-2 rounded-lg transition-all font-medium ${isActive('/blog') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}
126
137
  onClick={() => setMobileMenuOpen(false)}
127
138
  >
128
- Schema
139
+ Blog
129
140
  </Link>
130
141
  <Link
131
142
  href="/playground"
132
- className="block py-2 text-gray-600 hover:text-[#0066CC] transition-colors font-medium"
143
+ className={`block px-3 py-2 rounded-lg transition-all font-medium ${isActive('/playground') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}
133
144
  onClick={() => setMobileMenuOpen(false)}
134
145
  >
135
146
  Playground
136
147
  </Link>
137
148
  <Link
138
149
  href="/examples"
139
- className="block py-2 text-gray-600 hover:text-[#0066CC] transition-colors font-medium"
150
+ className={`block px-3 py-2 rounded-lg transition-all font-medium ${isActive('/examples') ? 'text-primary bg-primary/10' : 'text-gray-600 hover:text-primary hover:bg-primary/5'}`}
140
151
  onClick={() => setMobileMenuOpen(false)}
141
152
  >
142
153
  Examples
143
154
  </Link>
144
- <Link
145
- href="/blog"
146
- className="block py-2 text-gray-600 hover:text-[#0066CC] transition-colors font-medium"
147
- onClick={() => setMobileMenuOpen(false)}
148
- >
149
- Blog
150
- </Link>
151
155
  <a
152
156
  href="https://github.com/blueflyio/openstandardagents"
153
157
  target="_blank"
154
158
  rel="noopener noreferrer"
155
- className="block py-2 text-gray-600 hover:text-[#0066CC] transition-colors flex items-center gap-2 font-medium"
159
+ className="flex items-center gap-2 py-2 text-gray-600 hover:text-primary transition-colors font-medium"
156
160
  onClick={() => setMobileMenuOpen(false)}
157
161
  title="View on GitHub"
158
162
  >
159
163
  <svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
160
164
  <path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" />
161
165
  </svg>
162
- GitHub
163
166
  </a>
164
167
  </div>
165
- )}
166
168
  </nav>
167
169
  </header>
168
170
  );
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+
3
+ import { useState } from 'react';
4
+
5
+ interface AccordionItemProps {
6
+ title: string;
7
+ children: React.ReactNode;
8
+ isOpen: boolean;
9
+ onToggle: () => void;
10
+ borderColor: string;
11
+ bgColor: string;
12
+ }
13
+
14
+ function AccordionItem({ title, children, isOpen, onToggle, borderColor, bgColor }: AccordionItemProps) {
15
+ return (
16
+ <div className={`bg-white rounded-lg border-l-4 ${borderColor} shadow-md transition-all`}>
17
+ <button
18
+ onClick={onToggle}
19
+ className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 transition-colors"
20
+ aria-expanded={isOpen}
21
+ >
22
+ <h3 className="text-xl font-bold text-gray-900">{title}</h3>
23
+ <svg
24
+ className={`w-5 h-5 text-gray-600 transition-transform ${isOpen ? 'rotate-180' : ''}`}
25
+ fill="none"
26
+ stroke="currentColor"
27
+ viewBox="0 0 24 24"
28
+ >
29
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
30
+ </svg>
31
+ </button>
32
+ {isOpen && (
33
+ <div className="px-6 pb-6 border-t border-gray-200">
34
+ <div className="pt-4">
35
+ {children}
36
+ </div>
37
+ </div>
38
+ )}
39
+ </div>
40
+ );
41
+ }
42
+
43
+ interface SchemaComponentsAccordionProps {
44
+ items: Array<{
45
+ id: string;
46
+ title: string;
47
+ content: React.ReactNode;
48
+ borderColor: string;
49
+ }>;
50
+ }
51
+
52
+ export function SchemaComponentsAccordion({ items }: SchemaComponentsAccordionProps) {
53
+ const [openItems, setOpenItems] = useState<Set<string>>(new Set([items[0]?.id]));
54
+
55
+ const toggleItem = (id: string) => {
56
+ setOpenItems(prev => {
57
+ const next = new Set(prev);
58
+ if (next.has(id)) {
59
+ next.delete(id);
60
+ } else {
61
+ next.add(id);
62
+ }
63
+ return next;
64
+ });
65
+ };
66
+
67
+ return (
68
+ <div className="space-y-4">
69
+ {items.map((item) => (
70
+ <AccordionItem
71
+ key={item.id}
72
+ title={item.title}
73
+ isOpen={openItems.has(item.id)}
74
+ onToggle={() => toggleItem(item.id)}
75
+ borderColor={item.borderColor}
76
+ bgColor="bg-white"
77
+ >
78
+ {item.content}
79
+ </AccordionItem>
80
+ ))}
81
+ </div>
82
+ );
83
+ }
84
+
@@ -141,16 +141,16 @@ export function SchemaExplorer({ schema }: SchemaExplorerProps) {
141
141
  : schema;
142
142
 
143
143
  return (
144
- <div className="grid lg:grid-cols-2 gap-6">
145
- {/* Property Tree */}
144
+ <div className="space-y-6">
145
+ {/* Property Tree - Row 1 */}
146
146
  <div className="card">
147
147
  <h2 className="text-xl font-semibold mb-4">Schema Structure</h2>
148
- <div className="space-y-1 max-h-[600px] overflow-y-auto">
148
+ <div className="space-y-1 max-h-[400px] overflow-y-auto">
149
149
  {rootProperties.map((prop) => renderProperty(prop))}
150
150
  </div>
151
151
  </div>
152
152
 
153
- {/* Property Details */}
153
+ {/* Property Details - Row 2 */}
154
154
  <div className="card">
155
155
  <h2 className="text-xl font-semibold mb-4">
156
156
  {selectedPath || 'Schema Overview'}
@@ -0,0 +1,82 @@
1
+ import React from 'react';
2
+
3
+ type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info' | 'primary' | 'secondary';
4
+ type BadgeSize = 'sm' | 'md' | 'lg';
5
+
6
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
7
+ /** Badge content */
8
+ children: React.ReactNode;
9
+ /** Visual variant */
10
+ variant?: BadgeVariant;
11
+ /** Size variant */
12
+ size?: BadgeSize;
13
+ /** Icon to display before text */
14
+ icon?: React.ReactNode;
15
+ /** Dot indicator instead of full background */
16
+ dot?: boolean;
17
+ }
18
+
19
+ const variantClasses: Record<BadgeVariant, string> = {
20
+ default: 'bg-gray-100 text-gray-800 border border-gray-300',
21
+ success: 'bg-success-100 text-success-800 border border-success-300',
22
+ warning: 'bg-warning-100 text-warning-800 border border-warning-300',
23
+ error: 'bg-error-100 text-error-800 border border-error-300',
24
+ info: 'bg-info-100 text-info-800 border border-info-300',
25
+ primary: 'bg-primary-100 text-primary-800 border border-primary-300',
26
+ secondary: 'bg-secondary-100 text-secondary-800 border border-secondary-300',
27
+ };
28
+
29
+ const sizeClasses: Record<BadgeSize, string> = {
30
+ sm: 'px-2 py-0.5 text-xs',
31
+ md: 'px-3 py-1 text-sm',
32
+ lg: 'px-4 py-1.5 text-base',
33
+ };
34
+
35
+ const dotVariantClasses: Record<BadgeVariant, string> = {
36
+ default: 'bg-gray-500',
37
+ success: 'bg-success-500',
38
+ warning: 'bg-warning-500',
39
+ error: 'bg-error-500',
40
+ info: 'bg-info-500',
41
+ primary: 'bg-primary-500',
42
+ secondary: 'bg-secondary-500',
43
+ };
44
+
45
+ export const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(
46
+ (
47
+ {
48
+ className = '',
49
+ variant = 'default',
50
+ size = 'md',
51
+ children,
52
+ icon,
53
+ dot = false,
54
+ ...props
55
+ },
56
+ ref
57
+ ) => {
58
+ const classes = [
59
+ 'inline-flex items-center justify-center rounded-full font-semibold',
60
+ variantClasses[variant],
61
+ sizeClasses[size],
62
+ className,
63
+ ]
64
+ .filter(Boolean)
65
+ .join(' ');
66
+
67
+ return (
68
+ <span ref={ref} className={classes} {...props}>
69
+ {dot && (
70
+ <span
71
+ className={`w-2 h-2 rounded-full mr-1.5 ${dotVariantClasses[variant]}`}
72
+ aria-hidden="true"
73
+ />
74
+ )}
75
+ {icon && <span className="mr-1">{icon}</span>}
76
+ {children}
77
+ </span>
78
+ );
79
+ }
80
+ );
81
+
82
+ Badge.displayName = 'Badge';
@@ -0,0 +1,116 @@
1
+ import React from 'react';
2
+
3
+ type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'success';
4
+ type ButtonSize = 'sm' | 'md' | 'lg';
5
+
6
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
7
+ /** Button content */
8
+ children: React.ReactNode;
9
+ /** Visual variant */
10
+ variant?: ButtonVariant;
11
+ /** Size variant */
12
+ size?: ButtonSize;
13
+ /** Full width button */
14
+ fullWidth?: boolean;
15
+ /** Loading state */
16
+ loading?: boolean;
17
+ /** Icon to display before text */
18
+ iconLeft?: React.ReactNode;
19
+ /** Icon to display after text */
20
+ iconRight?: React.ReactNode;
21
+ /** Accessible label for screen readers */
22
+ ariaLabel?: string;
23
+ }
24
+
25
+ const variantClasses: Record<ButtonVariant, string> = {
26
+ primary:
27
+ 'bg-gradient-to-r from-secondary via-primary to-accent text-white hover:shadow-lg hover:scale-105 focus:ring-primary/30',
28
+ secondary:
29
+ 'bg-secondary text-white hover:bg-secondary/90 hover:shadow-md focus:ring-secondary/30',
30
+ outline:
31
+ 'border-2 border-primary text-primary bg-transparent hover:bg-primary hover:text-white focus:ring-primary/30',
32
+ ghost:
33
+ 'text-primary bg-transparent hover:bg-primary/10 focus:ring-primary/20',
34
+ danger:
35
+ 'bg-error text-white hover:bg-error-600 hover:shadow-md focus:ring-error/30',
36
+ success:
37
+ 'bg-success text-white hover:bg-success-600 hover:shadow-md focus:ring-success/30',
38
+ };
39
+
40
+ const sizeClasses: Record<ButtonSize, string> = {
41
+ sm: 'px-4 py-2 text-sm min-h-[36px]',
42
+ md: 'px-6 py-3 text-base min-h-[44px]',
43
+ lg: 'px-8 py-4 text-lg min-h-[52px]',
44
+ };
45
+
46
+ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
47
+ (
48
+ {
49
+ className = '',
50
+ variant = 'primary',
51
+ size = 'md',
52
+ fullWidth = false,
53
+ children,
54
+ loading = false,
55
+ iconLeft,
56
+ iconRight,
57
+ disabled,
58
+ ariaLabel,
59
+ ...props
60
+ },
61
+ ref
62
+ ) => {
63
+ const baseClasses =
64
+ 'inline-flex items-center justify-center rounded-lg font-semibold transition-all duration-200 focus:outline-none focus:ring-4 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed';
65
+
66
+ const classes = [
67
+ baseClasses,
68
+ variantClasses[variant],
69
+ sizeClasses[size],
70
+ fullWidth ? 'w-full' : 'w-auto',
71
+ className,
72
+ ]
73
+ .filter(Boolean)
74
+ .join(' ');
75
+
76
+ return (
77
+ <button
78
+ ref={ref}
79
+ className={classes}
80
+ disabled={disabled || loading}
81
+ aria-label={ariaLabel}
82
+ aria-busy={loading}
83
+ {...props}
84
+ >
85
+ {loading && (
86
+ <svg
87
+ className="animate-spin -ml-1 mr-3 h-5 w-5"
88
+ xmlns="http://www.w3.org/2000/svg"
89
+ fill="none"
90
+ viewBox="0 0 24 24"
91
+ aria-hidden="true"
92
+ >
93
+ <circle
94
+ className="opacity-25"
95
+ cx="12"
96
+ cy="12"
97
+ r="10"
98
+ stroke="currentColor"
99
+ strokeWidth="4"
100
+ />
101
+ <path
102
+ className="opacity-75"
103
+ fill="currentColor"
104
+ d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
105
+ />
106
+ </svg>
107
+ )}
108
+ {!loading && iconLeft && <span className="mr-2">{iconLeft}</span>}
109
+ {children}
110
+ {!loading && iconRight && <span className="ml-2">{iconRight}</span>}
111
+ </button>
112
+ );
113
+ }
114
+ );
115
+
116
+ Button.displayName = 'Button';
@@ -0,0 +1,167 @@
1
+ import React from 'react';
2
+
3
+ type CardVariant = 'default' | 'featured' | 'interactive' | 'ghost';
4
+ type CardPadding = 'sm' | 'md' | 'lg';
5
+ type CardElevation = 0 | 1 | 2 | 3;
6
+
7
+ export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
8
+ /** Card content */
9
+ children: React.ReactNode;
10
+ /** Visual variant */
11
+ variant?: CardVariant;
12
+ /** Padding size */
13
+ padding?: CardPadding;
14
+ /** Shadow elevation level */
15
+ elevation?: CardElevation;
16
+ /** Enable hover effects */
17
+ hover?: boolean;
18
+ /** Make card clickable */
19
+ onClick?: () => void;
20
+ }
21
+
22
+ const variantClasses: Record<CardVariant, string> = {
23
+ default: 'bg-white border border-gray-200 rounded-xl',
24
+ featured:
25
+ 'bg-gradient-to-br from-blue-50 to-indigo-50 border-2 border-primary/20 rounded-xl',
26
+ interactive:
27
+ 'bg-white border-2 border-gray-200 rounded-xl cursor-pointer hover:border-primary',
28
+ ghost: 'bg-transparent border-none',
29
+ };
30
+
31
+ const paddingClasses: Record<CardPadding, string> = {
32
+ sm: 'p-4',
33
+ md: 'p-6',
34
+ lg: 'p-8',
35
+ };
36
+
37
+ const elevationClasses: Record<CardElevation, string> = {
38
+ 0: 'shadow-none',
39
+ 1: 'shadow-sm',
40
+ 2: 'shadow-md',
41
+ 3: 'shadow-lg',
42
+ };
43
+
44
+ const hoverClasses = 'hover:shadow-xl hover:-translate-y-1 transition-all duration-300';
45
+
46
+ export const Card = React.forwardRef<HTMLDivElement, CardProps>(
47
+ (
48
+ {
49
+ className = '',
50
+ variant = 'default',
51
+ padding = 'md',
52
+ elevation = 1,
53
+ hover = false,
54
+ children,
55
+ onClick,
56
+ ...props
57
+ },
58
+ ref
59
+ ) => {
60
+ const classes = [
61
+ variantClasses[variant],
62
+ paddingClasses[padding],
63
+ elevationClasses[elevation],
64
+ hover || onClick ? hoverClasses : '',
65
+ onClick ? 'cursor-pointer' : '',
66
+ className,
67
+ ]
68
+ .filter(Boolean)
69
+ .join(' ');
70
+
71
+ return (
72
+ <div
73
+ ref={ref}
74
+ className={classes}
75
+ onClick={onClick}
76
+ role={onClick ? 'button' : undefined}
77
+ tabIndex={onClick ? 0 : undefined}
78
+ onKeyDown={
79
+ onClick
80
+ ? (e) => {
81
+ if (e.key === 'Enter' || e.key === ' ') {
82
+ e.preventDefault();
83
+ onClick();
84
+ }
85
+ }
86
+ : undefined
87
+ }
88
+ {...props}
89
+ >
90
+ {children}
91
+ </div>
92
+ );
93
+ }
94
+ );
95
+
96
+ Card.displayName = 'Card';
97
+
98
+ // Card sub-components for better composition
99
+ export const CardHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({
100
+ className = '',
101
+ children,
102
+ ...props
103
+ }) => {
104
+ return (
105
+ <div className={`mb-4 ${className}`} {...props}>
106
+ {children}
107
+ </div>
108
+ );
109
+ };
110
+
111
+ CardHeader.displayName = 'CardHeader';
112
+
113
+ export const CardTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>> = ({
114
+ className = '',
115
+ children,
116
+ ...props
117
+ }) => {
118
+ return (
119
+ <h3 className={`text-2xl font-semibold text-gray-900 ${className}`} {...props}>
120
+ {children}
121
+ </h3>
122
+ );
123
+ };
124
+
125
+ CardTitle.displayName = 'CardTitle';
126
+
127
+ export const CardDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>> = ({
128
+ className = '',
129
+ children,
130
+ ...props
131
+ }) => {
132
+ return (
133
+ <p className={`text-gray-600 ${className}`} {...props}>
134
+ {children}
135
+ </p>
136
+ );
137
+ };
138
+
139
+ CardDescription.displayName = 'CardDescription';
140
+
141
+ export const CardContent: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({
142
+ className = '',
143
+ children,
144
+ ...props
145
+ }) => {
146
+ return (
147
+ <div className={className} {...props}>
148
+ {children}
149
+ </div>
150
+ );
151
+ };
152
+
153
+ CardContent.displayName = 'CardContent';
154
+
155
+ export const CardFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({
156
+ className = '',
157
+ children,
158
+ ...props
159
+ }) => {
160
+ return (
161
+ <div className={`mt-4 pt-4 border-t border-gray-200 ${className}`} {...props}>
162
+ {children}
163
+ </div>
164
+ );
165
+ };
166
+
167
+ CardFooter.displayName = 'CardFooter';