@bluefly/openstandardagents 0.2.5-RC → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/.devfile.yaml +1 -1
  2. package/.env.example +1 -1
  3. package/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
  5. package/.github/workflows/dependabot-comment.yml +34 -0
  6. package/.github/workflows/pr-comment.yml +33 -0
  7. package/.husky/pre-commit +5 -0
  8. package/.kiro/config.json +21 -0
  9. package/.kiro/settings/mcp.json +61 -0
  10. package/.kiro/specs/scripts-migration-api-first/design.md +883 -0
  11. package/.kiro/specs/scripts-migration-api-first/requirements.md +165 -0
  12. package/.kiro/specs/scripts-migration-api-first/tasks.md +539 -0
  13. package/.kiro/specs/{website-design-audit → website-brand-identity}/design.md +381 -0
  14. package/.kiro/specs/{website-design-audit → website-brand-identity}/requirements.md +88 -0
  15. package/.kiro/specs/website-brand-identity/tasks.md +981 -0
  16. package/.version.json +2 -2
  17. package/.wiki-config.json +24 -0
  18. package/CHANGELOG.md +34 -18
  19. package/CODEOWNERS +75 -0
  20. package/CONTRIBUTING.md +1 -1
  21. package/README.md +176 -239
  22. package/bin/ossa-dev +42 -0
  23. package/bin/ossa-export +32 -0
  24. package/bin/ossa-generate +60 -0
  25. package/bin/ossa-health +40 -0
  26. package/bin/ossa-init +26 -0
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/repositories/schema.repository.d.ts +6 -1
  32. package/dist/repositories/schema.repository.d.ts.map +1 -1
  33. package/dist/repositories/schema.repository.js +63 -36
  34. package/dist/repositories/schema.repository.js.map +1 -1
  35. package/dist/services/github-sync/github-client.d.ts +14 -0
  36. package/dist/services/github-sync/github-client.d.ts.map +1 -0
  37. package/dist/services/github-sync/github-client.js +41 -0
  38. package/dist/services/github-sync/github-client.js.map +1 -0
  39. package/dist/services/github-sync/gitlab-client.d.ts +17 -0
  40. package/dist/services/github-sync/gitlab-client.d.ts.map +1 -0
  41. package/dist/services/github-sync/gitlab-client.js +42 -0
  42. package/dist/services/github-sync/gitlab-client.js.map +1 -0
  43. package/dist/services/github-sync/schemas.d.ts +46 -0
  44. package/dist/services/github-sync/schemas.d.ts.map +1 -0
  45. package/dist/services/github-sync/schemas.js +36 -0
  46. package/dist/services/github-sync/schemas.js.map +1 -0
  47. package/dist/services/github-sync/sync.service.d.ts +27 -0
  48. package/dist/services/github-sync/sync.service.d.ts.map +1 -0
  49. package/dist/services/github-sync/sync.service.js +99 -0
  50. package/dist/services/github-sync/sync.service.js.map +1 -0
  51. package/dist/services/migration.service.d.ts +4 -3
  52. package/dist/services/migration.service.d.ts.map +1 -1
  53. package/dist/services/migration.service.js +11 -10
  54. package/dist/services/migration.service.js.map +1 -1
  55. package/dist/services/release-automation/release.service.js +1 -1
  56. package/dist/services/release-automation/release.service.js.map +1 -1
  57. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  58. package/dist/services/runtime/claude/capability-mapper.d.ts +84 -0
  59. package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -0
  60. package/dist/services/runtime/claude/capability-mapper.js +245 -0
  61. package/dist/services/runtime/claude/capability-mapper.js.map +1 -0
  62. package/dist/services/runtime/claude/claude-adapter.d.ts +80 -0
  63. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -0
  64. package/dist/services/runtime/claude/claude-adapter.js +287 -0
  65. package/dist/services/runtime/claude/claude-adapter.js.map +1 -0
  66. package/dist/services/runtime/claude/manifest-parser.d.ts +77 -0
  67. package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -0
  68. package/dist/services/runtime/claude/manifest-parser.js +169 -0
  69. package/dist/services/runtime/claude/manifest-parser.js.map +1 -0
  70. package/dist/services/runtime/claude/types.d.ts +115 -0
  71. package/dist/services/runtime/claude/types.d.ts.map +1 -0
  72. package/dist/services/runtime/claude/types.js +6 -0
  73. package/dist/services/runtime/claude/types.js.map +1 -0
  74. package/dist/services/validation.service.d.ts.map +1 -1
  75. package/dist/services/validation.service.js +12 -1
  76. package/dist/services/validation.service.js.map +1 -1
  77. package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
  78. package/dist/spec/v0.2.6/CHANGELOG.md +401 -0
  79. package/dist/spec/v0.2.6/README.md +72 -0
  80. package/dist/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
  81. package/dist/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  82. package/dist/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
  83. package/dist/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
  84. package/dist/spec/v0.2.6-dev/CHANGELOG.md +164 -0
  85. package/dist/spec/v0.2.6-dev/README.md +75 -0
  86. package/dist/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
  87. package/dist/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  88. package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
  89. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
  90. package/dist/spec/v0.2.7/core/agentgraph.md +324 -0
  91. package/dist/spec/v0.2.7/resources/agentgraph.yaml +135 -0
  92. package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
  93. package/dist/spec/v0.2.8/README.md +72 -0
  94. package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  95. package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  96. package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  97. package/dist/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
  98. package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  99. package/dist/types/index.d.ts +3 -2
  100. package/dist/types/index.d.ts.map +1 -1
  101. package/dist/utils/index.d.ts +6 -0
  102. package/dist/utils/index.d.ts.map +1 -0
  103. package/dist/utils/index.js +6 -0
  104. package/dist/utils/index.js.map +1 -0
  105. package/dist/utils/version.d.ts +68 -0
  106. package/dist/utils/version.d.ts.map +1 -0
  107. package/dist/utils/version.js +156 -0
  108. package/dist/utils/version.js.map +1 -0
  109. package/docs/brand-guide/01-brand-overview.md +37 -0
  110. package/docs/brand-guide/02-logo-usage.md +43 -0
  111. package/docs/brand-guide/03-color-palette.md +70 -0
  112. package/docs/brand-guide/04-typography.md +82 -0
  113. package/docs/brand-guide/05-voice-and-tone.md +108 -0
  114. package/docs/brand-guide/06-visual-elements.md +137 -0
  115. package/docs/brand-guide/07-application-examples.md +153 -0
  116. package/docs/brand-guide/OssaLogo/OssA_Logo.svg +21 -0
  117. package/docs/brand-guide/OssaLogo/brand.af +0 -0
  118. package/docs/brand-guide/README.md +107 -0
  119. package/docs/comparison.md +315 -0
  120. package/docs/operations/automation-roadmap.md +245 -0
  121. package/docs/operations/github-sync-strategy.md +357 -0
  122. package/eslint-report.json +1 -0
  123. package/examples/adk-integration/code-review-workflow.yml +1 -1
  124. package/examples/adk-integration/customer-support.yml +1 -1
  125. package/examples/adk-integration/data-pipeline.yml +1 -1
  126. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  127. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  128. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  129. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  130. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  131. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  132. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  133. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  134. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  135. package/examples/anthropic/claude-assistant.ossa.json +5 -4
  136. package/examples/autogen/multi-agent.ossa.json +6 -4
  137. package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
  138. package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
  139. package/examples/common_npm/agent-router.ossa.yaml +1 -0
  140. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  141. package/examples/crewai/research-team.ossa.json +14 -5
  142. package/examples/cursor/code-review-agent.ossa.json +21 -6
  143. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
  144. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  145. package/examples/extensions/drupal-v1.yml +1 -1
  146. package/examples/extensions/kagent-v1.yml +1 -1
  147. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  148. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  149. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  150. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  151. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  152. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
  153. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  154. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  155. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  156. package/examples/langchain/chain-agent.ossa.json +21 -5
  157. package/examples/langflow/workflow-agent.ossa.json +2 -3
  158. package/examples/langgraph/state-machine-agent.ossa.json +2 -3
  159. package/examples/llamaindex/rag-agent.ossa.json +2 -3
  160. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  161. package/examples/multi-agent/README.md +74 -0
  162. package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
  163. package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
  164. package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
  165. package/examples/openai/basic-agent.ossa.yaml +1 -1
  166. package/examples/openai/multi-tool-agent.ossa.json +33 -10
  167. package/examples/openai/swarm-agent.ossa.json +18 -5
  168. package/examples/production/document-analyzer-openai.yml +1 -1
  169. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  170. package/examples/spec-examples/audit-agent.yml +1 -1
  171. package/examples/spec-examples/chat-agent.yml +1 -1
  172. package/examples/spec-examples/compliance-agent.yml +1 -1
  173. package/examples/spec-examples/monitoring-agent.yml +1 -1
  174. package/examples/spec-examples/workflow-agent.yml +1 -1
  175. package/examples/templates/ossa-compliance.yaml +1 -1
  176. package/examples/vercel/edge-agent.ossa.json +5 -4
  177. package/gl-code-quality-report.json +62 -0
  178. package/llms-ctx-full.txt +39 -0
  179. package/llms-ctx.txt +39 -0
  180. package/llms.txt +47 -0
  181. package/openapi/github-sync.yaml +115 -0
  182. package/package.json +26 -4
  183. package/scripts/README.md +103 -0
  184. package/scripts/auto-rebase-mrs.ts +106 -0
  185. package/scripts/batch-dependabot.sh +57 -0
  186. package/scripts/configure-gitlab-branch-protection.ts +95 -0
  187. package/scripts/create-issue-helper.ts +238 -0
  188. package/scripts/create-milestone-issue.ts +73 -0
  189. package/scripts/eslint-to-codequality.cjs +34 -0
  190. package/scripts/fix-schema-formats.js +82 -0
  191. package/scripts/generate-agents-catalog.ts +77 -0
  192. package/scripts/generate-api-docs.ts +218 -0
  193. package/scripts/generate-cli-docs.ts +410 -0
  194. package/scripts/generate-config-docs.ts +109 -0
  195. package/scripts/generate-errors-docs.ts +76 -0
  196. package/scripts/generate-examples-docs.ts +99 -0
  197. package/scripts/generate-llms-ctx.sh +17 -0
  198. package/scripts/generate-schema-docs.ts +317 -0
  199. package/scripts/generate-types-docs.ts +48 -0
  200. package/scripts/lowercase-docs.ts +43 -0
  201. package/scripts/manage-milestone-mrs.ts +279 -0
  202. package/scripts/rebase-all-mrs.sh +75 -0
  203. package/scripts/sync-github-pr.sh +48 -0
  204. package/scripts/sync-version.js +32 -0
  205. package/scripts/sync-wiki.sh +50 -0
  206. package/scripts/validate-all.js +127 -0
  207. package/scripts/validate-schema.ts +2 -1
  208. package/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
  209. package/spec/v0.2.6/CHANGELOG.md +401 -0
  210. package/spec/v0.2.6/README.md +72 -0
  211. package/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
  212. package/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  213. package/spec/{v0.2.4/ossa-0.2.4-dev.schema.json → v0.2.6/ossa-0.2.6.schema.json} +128 -38
  214. package/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
  215. package/spec/v0.2.6-dev/CHANGELOG.md +164 -0
  216. package/spec/v0.2.6-dev/README.md +75 -0
  217. package/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
  218. package/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  219. package/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
  220. package/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
  221. package/spec/v0.2.7/core/agentgraph.md +324 -0
  222. package/spec/v0.2.7/resources/agentgraph.yaml +135 -0
  223. package/spec/v0.2.8/CHANGELOG.md +401 -0
  224. package/spec/v0.2.8/README.md +72 -0
  225. package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  226. package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  227. package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  228. package/spec/v0.2.8/ossa-0.2.8.schema.json +3153 -0
  229. package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  230. package/test-results/junit.xml +299 -0
  231. package/.kiro/specs/agent-buildkit-templates/design.md +0 -495
  232. package/.kiro/specs/agent-buildkit-templates/requirements.md +0 -165
  233. package/.kiro/specs/kiro-ide-supercharger/README.md +0 -202
  234. package/.kiro/specs/kiro-ide-supercharger/design.md +0 -1005
  235. package/.kiro/specs/kiro-ide-supercharger/requirements.md +0 -141
  236. package/.kiro/specs/kiro-ide-supercharger/tasks.md +0 -507
  237. package/bin/validate-ossa-0.2.5-RC.ts +0 -244
  238. package/docs/issue-19-completion-summary.md +0 -648
  239. package/docs/issue-19-validation.md +0 -351
  240. package/scripts/lib/exec.ts +0 -37
  241. package/scripts/lib/file-ops.ts +0 -58
  242. package/scripts/lib/version.ts +0 -83
  243. package/website/.lighthouserc.ts +0 -24
  244. package/website/.prettierrc +0 -10
  245. package/website/Dockerfile +0 -30
  246. package/website/app/about/page.tsx +0 -295
  247. package/website/app/blog/[slug]/page.tsx +0 -208
  248. package/website/app/blog/page.tsx +0 -249
  249. package/website/app/design-guide/page.tsx +0 -511
  250. package/website/app/docs/[[...slug]]/page.tsx +0 -847
  251. package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
  252. package/website/app/ecosystem/page.tsx +0 -375
  253. package/website/app/examples/page.tsx +0 -133
  254. package/website/app/globals.scss +0 -135
  255. package/website/app/layout.tsx +0 -106
  256. package/website/app/license/page.tsx +0 -183
  257. package/website/app/not-found.tsx +0 -18
  258. package/website/app/page.tsx +0 -474
  259. package/website/app/playground/page.tsx +0 -487
  260. package/website/app/robots.ts +0 -19
  261. package/website/app/rss.xml/route.ts +0 -74
  262. package/website/app/schema/page.tsx +0 -1001
  263. package/website/app/sitemap.ts +0 -56
  264. package/website/app/specification/page.tsx +0 -287
  265. package/website/components/InstallCommand.tsx +0 -96
  266. package/website/components/Logo.tsx +0 -97
  267. package/website/components/StructuredData.tsx +0 -65
  268. package/website/components/docs/DocsSearch.tsx +0 -104
  269. package/website/components/docs/DocsSidebar.tsx +0 -155
  270. package/website/components/docs/MarkdownContent.tsx +0 -401
  271. package/website/components/docs/VersionSelector.tsx +0 -105
  272. package/website/components/examples/ExamplesViewer.tsx +0 -293
  273. package/website/components/layout/Footer.tsx +0 -116
  274. package/website/components/layout/Header.tsx +0 -168
  275. package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
  276. package/website/components/schema/SchemaExplorer.tsx +0 -213
  277. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
  278. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
  279. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
  280. package/website/content/blog/introducing-ossa-framework.md +0 -328
  281. package/website/content/blog/ossa-production-results.md +0 -279
  282. package/website/content/blog/welcome-to-ossa.md +0 -43
  283. package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
  284. package/website/content/docs/00-HOME.md +0 -153
  285. package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +0 -107
  286. package/website/content/docs/Examples.md +0 -71
  287. package/website/content/docs/OpenAPI-Extensions.md +0 -934
  288. package/website/content/docs/adapters/openai-adapter.md +0 -693
  289. package/website/content/docs/architecture/execution-flow.md +0 -335
  290. package/website/content/docs/architecture/multi-agent-systems.md +0 -737
  291. package/website/content/docs/architecture/overview.md +0 -121
  292. package/website/content/docs/architecture/stack-integration.md +0 -461
  293. package/website/content/docs/changelog.md +0 -246
  294. package/website/content/docs/contributing.md +0 -599
  295. package/website/content/docs/core-concepts/Project-Structure.md +0 -348
  296. package/website/content/docs/ecosystem/framework-support.md +0 -819
  297. package/website/content/docs/ecosystem/overview.md +0 -366
  298. package/website/content/docs/examples/AIFlow-Framework-Integration-with-OSSA.md +0 -107
  299. package/website/content/docs/examples/Migration-Guides.md +0 -214
  300. package/website/content/docs/for-audiences/Architects.md +0 -224
  301. package/website/content/docs/for-audiences/Developers.md +0 -220
  302. package/website/content/docs/for-audiences/Enterprises.md +0 -256
  303. package/website/content/docs/for-audiences/Students-Researchers.md +0 -122
  304. package/website/content/docs/getting-started/5-Minute-Overview.md +0 -85
  305. package/website/content/docs/getting-started/First-Agent.md +0 -196
  306. package/website/content/docs/getting-started/Hello-World.md +0 -184
  307. package/website/content/docs/getting-started/Installation.md +0 -155
  308. package/website/content/docs/getting-started/index.md +0 -92
  309. package/website/content/docs/getting-started/running-agents.md +0 -309
  310. package/website/content/docs/getting-started.md +0 -91
  311. package/website/content/docs/integrations/aiflow.md +0 -104
  312. package/website/content/docs/integrations/drupal.md +0 -105
  313. package/website/content/docs/migration-guides/00-INDEX.md +0 -76
  314. package/website/content/docs/migration-guides/README.md +0 -133
  315. package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
  316. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
  317. package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
  318. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
  319. package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
  320. package/website/content/docs/migration-guides/index.md +0 -133
  321. package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
  322. package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
  323. package/website/content/docs/migration-guides/migration-manifest.json +0 -64
  324. package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
  325. package/website/content/docs/openapi-extensions/examples.md +0 -550
  326. package/website/content/docs/openapi-extensions/index.md +0 -551
  327. package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
  328. package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
  329. package/website/content/docs/ossa-compliant-badge.md +0 -251
  330. package/website/content/docs/pre-release/index.md +0 -175
  331. package/website/content/docs/quick-reference.md +0 -17
  332. package/website/content/docs/readme.md +0 -35
  333. package/website/content/docs/schema-reference/agent-spec.md +0 -406
  334. package/website/content/docs/schema-reference/autonomy.md +0 -568
  335. package/website/content/docs/schema-reference/constraints.md +0 -543
  336. package/website/content/docs/schema-reference/index.md +0 -176
  337. package/website/content/docs/schema-reference/llm-config.md +0 -445
  338. package/website/content/docs/schema-reference/observability.md +0 -654
  339. package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
  340. package/website/content/docs/schema-reference/taxonomy.md +0 -509
  341. package/website/content/docs/schema-reference/tools.md +0 -628
  342. package/website/content/docs/templates/blog-post.md +0 -43
  343. package/website/content/docs/use-cases/00-index.md +0 -395
  344. package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
  345. package/website/content/docs/use-cases/customer-support.md +0 -1234
  346. package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
  347. package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
  348. package/website/content/docs/versioning.md +0 -288
  349. package/website/lib/version.ts +0 -35
  350. package/website/lib/versions.json +0 -78
  351. package/website/next.config.ts +0 -18
  352. package/website/nginx.conf +0 -32
  353. package/website/package-lock.json +0 -9679
  354. package/website/package.json +0 -59
  355. package/website/postcss.config.mjs +0 -9
  356. package/website/scripts/fetch-versions.js +0 -166
  357. package/website/scripts/generate-examples-index.js +0 -163
  358. package/website/scripts/merge-docs-to-wiki.ts +0 -207
  359. package/website/scripts/sync-version.js +0 -72
  360. package/website/scripts/sync-wiki.ts +0 -322
  361. package/website/scripts/upload-wiki.ts +0 -199
  362. package/website/styles/_variables.scss +0 -36
  363. package/website/tailwind.config.ts +0 -136
  364. /package/dist/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
  365. /package/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
@@ -1,322 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- /**
3
- * GitLab Wiki Sync Script
4
- *
5
- * Fetches wiki pages from GitLab and saves them to content/docs for static site generation.
6
- * Run this during build or manually with: npx tsx scripts/sync-wiki.ts
7
- */
8
-
9
- import fs from 'fs';
10
- import path from 'path';
11
- import os from 'os';
12
-
13
- // Load .env.local first to get project path
14
- loadEnvLocal();
15
-
16
- // Get GITLAB_HOST from env or CI variables, with fallback
17
- const GITLAB_HOST = process.env.GITLAB_HOST || process.env.CI_SERVER_HOST || 'gitlab.com';
18
- // Get project path from env (GITLAB_PROJECT_PATH) or fallback to default
19
- const PROJECT_PATH = process.env.GITLAB_PROJECT_PATH || 'blueflyio/openstandardagents';
20
- const DOCS_DIR = path.join(process.cwd(), 'content/docs');
21
- const BLOG_DIR = path.join(process.cwd(), 'content/blog');
22
-
23
- interface WikiPage {
24
- slug: string;
25
- title: string;
26
- content: string;
27
- format: string;
28
- }
29
-
30
- function loadEnvLocal(): void {
31
- // Check multiple common locations for .env.local
32
- const envPaths: string[] = [];
33
-
34
- // If ENV_FILE is set, use that first
35
- if (process.env.ENV_FILE) {
36
- envPaths.push(process.env.ENV_FILE);
37
- }
38
-
39
- // Current directory and parent directories (walk up to 5 levels)
40
- let currentDir = process.cwd();
41
- for (let i = 0; i < 5; i++) {
42
- envPaths.push(path.join(currentDir, '.env.local'));
43
- const parentDir = path.dirname(currentDir);
44
- if (parentDir === currentDir) break; // Reached filesystem root
45
- currentDir = parentDir;
46
- }
47
-
48
- // User home directory
49
- envPaths.push(path.join(os.homedir(), '.env.local'));
50
-
51
- for (const envLocalPath of envPaths) {
52
- if (fs.existsSync(envLocalPath)) {
53
- try {
54
- const envContent = fs.readFileSync(envLocalPath, 'utf-8');
55
- envContent.split('\n').forEach(line => {
56
- const trimmed = line.trim();
57
- if (trimmed && !trimmed.startsWith('#')) {
58
- const [key, ...valueParts] = trimmed.split('=');
59
- if (key && valueParts.length > 0) {
60
- const value = valueParts.join('=').replace(/^["']|["']$/g, '').trim();
61
- if (!process.env[key] && value) {
62
- process.env[key] = value;
63
- }
64
- }
65
- }
66
- });
67
- // Load from first found file only
68
- return;
69
- } catch (error) {
70
- // Continue to next location if this one fails
71
- continue;
72
- }
73
- }
74
- }
75
- }
76
-
77
- async function getGitLabToken(): Promise<string | null> {
78
- // .env.local already loaded at top level
79
-
80
- // Try environment variables (check multiple possible names)
81
- if (process.env.GITLAB_TOKEN) {
82
- return process.env.GITLAB_TOKEN;
83
- }
84
- if (process.env.GITLAB_PUSH_TOKEN) {
85
- return process.env.GITLAB_PUSH_TOKEN;
86
- }
87
- if (process.env.CI_JOB_TOKEN) {
88
- return process.env.CI_JOB_TOKEN;
89
- }
90
-
91
- // Try reading from ~/.tokens/gitlab
92
- const tokenPath = path.join(process.env.HOME || '', '.tokens', 'gitlab');
93
- if (fs.existsSync(tokenPath)) {
94
- return fs.readFileSync(tokenPath, 'utf-8').trim();
95
- }
96
-
97
- return null;
98
- }
99
-
100
- async function fetchWikiPages(): Promise<WikiPage[]> {
101
- const token = await getGitLabToken();
102
-
103
- if (!token) {
104
- console.log('⚠️ No GitLab token found - skipping wiki sync');
105
- console.log(' Set GITLAB_TOKEN env var or create ~/.tokens/gitlab to enable sync');
106
- return [];
107
- }
108
-
109
- const encodedPath = encodeURIComponent(PROJECT_PATH);
110
-
111
- const response = await fetch(
112
- `https://${GITLAB_HOST}/api/v4/projects/${encodedPath}/wikis?with_content=1`,
113
- {
114
- headers: {
115
- 'PRIVATE-TOKEN': token,
116
- },
117
- }
118
- );
119
-
120
- if (!response.ok) {
121
- // Handle auth errors gracefully - use existing content
122
- if (response.status === 401 || response.status === 403) {
123
- console.log(`⚠️ Wiki API returned ${response.status} - using existing content`);
124
- console.log(' Token may lack wiki read permission');
125
- return [];
126
- }
127
- throw new Error(`Failed to fetch wiki pages: ${response.status} ${response.statusText}`);
128
- }
129
-
130
- return response.json();
131
- }
132
-
133
- function slugToFilePath(slug: string): string {
134
- // Convert GitLab wiki slug to local file path
135
- // e.g., "Getting-Started/5-Minute-Overview" -> "getting-started/5-minute-overview.md"
136
- const parts = slug.split('/');
137
-
138
- // Lowercase everything for URL-friendly paths
139
- if (parts.length > 1) {
140
- const dirs = parts.slice(0, -1).map(d => d.toLowerCase());
141
- const filename = parts[parts.length - 1].toLowerCase();
142
- return path.join(...dirs, `${filename}.md`);
143
- }
144
-
145
- return `${slug.toLowerCase()}.md`;
146
- }
147
-
148
- function processContent(content: string, title: string): string {
149
- // Add frontmatter if not present
150
- if (!content.startsWith('---')) {
151
- const frontmatter = `---
152
- title: "${title.replace(/"/g, '\\"')}"
153
- ---
154
-
155
- `;
156
- return frontmatter + content;
157
- }
158
- return content;
159
- }
160
-
161
- function processBlogContent(content: string, title: string): string {
162
- // Extract or generate blog metadata from content
163
- let bodyContent = content;
164
- let existingMeta: Record<string, string> = {};
165
-
166
- // Parse existing frontmatter if present
167
- if (content.startsWith('---')) {
168
- const endIndex = content.indexOf('---', 3);
169
- if (endIndex !== -1) {
170
- const frontmatterText = content.substring(3, endIndex).trim();
171
- bodyContent = content.substring(endIndex + 3).trim();
172
-
173
- // Parse simple key: value frontmatter
174
- frontmatterText.split('\n').forEach(line => {
175
- const colonIndex = line.indexOf(':');
176
- if (colonIndex > 0) {
177
- const key = line.substring(0, colonIndex).trim();
178
- const value = line.substring(colonIndex + 1).trim();
179
- existingMeta[key] = value;
180
- }
181
- });
182
- }
183
- }
184
-
185
- // Look for author in content (e.g., "**Thomas Scola**")
186
- const authorMatch = bodyContent.match(/\*\*([^*]+)\*\*\s*\n\s*\*([^*]+)\*/);
187
- const extractedAuthor = authorMatch ? authorMatch[1].trim() : null;
188
-
189
- // Try to extract excerpt from abstract or first paragraph
190
- let excerpt = '';
191
- const abstractMatch = bodyContent.match(/###\s*Abstract\s*\n+([^\n#]+)/i);
192
- if (abstractMatch) {
193
- excerpt = abstractMatch[1].substring(0, 200).trim();
194
- if (abstractMatch[1].length > 200) excerpt += '...';
195
- } else {
196
- const lines = bodyContent.split('\n');
197
- const firstPara = lines.find(line =>
198
- line.trim() &&
199
- !line.startsWith('#') &&
200
- !line.startsWith('*') &&
201
- !line.startsWith('[')
202
- );
203
- if (firstPara) {
204
- excerpt = firstPara.substring(0, 200).trim();
205
- if (firstPara.length > 200) excerpt += '...';
206
- }
207
- }
208
-
209
- // Build final frontmatter with blog-specific fields
210
- const finalTitle = existingMeta.title || title;
211
- const date = existingMeta.date || new Date().toISOString().split('T')[0];
212
- const author = existingMeta.author || extractedAuthor || 'OSSA Team';
213
- const category = existingMeta.category || 'Research';
214
- const tags = existingMeta.tags || '["OSSA", "AI Agents", "Standards"]';
215
- const finalExcerpt = existingMeta.excerpt || excerpt;
216
-
217
- const frontmatter = `---
218
- title: "${finalTitle.replace(/"/g, '\\"').replace(/\\/g, '')}"
219
- date: "${date}"
220
- author: "${author}"
221
- category: "${category}"
222
- tags: ${tags}
223
- excerpt: "${finalExcerpt.replace(/"/g, '\\"')}"
224
- ---
225
-
226
- `;
227
- return frontmatter + bodyContent;
228
- }
229
-
230
- async function syncWiki(): Promise<void> {
231
- console.log('🔄 Syncing GitLab wiki...');
232
-
233
- // Fetch all wiki pages
234
- const pages = await fetchWikiPages();
235
-
236
- // If no pages returned (no token or empty wiki), skip sync
237
- if (pages.length === 0) {
238
- console.log('📋 No pages to sync - using existing content');
239
- return;
240
- }
241
-
242
- console.log(`📚 Found ${pages.length} wiki pages`);
243
-
244
- // Track synced files for cleanup
245
- const syncedDocs = new Set<string>();
246
- const syncedBlogs = new Set<string>();
247
-
248
- for (const page of pages) {
249
- // Skip Home page (we have our own docs landing)
250
- if (page.slug === 'Home') {
251
- console.log(`⏭️ Skipping Home page (using custom landing)`);
252
- continue;
253
- }
254
-
255
- // Handle Blog pages separately
256
- if (page.slug === 'Blog' || page.slug.startsWith('Blog/')) {
257
- // Skip the Blog index and template pages
258
- if (page.slug === 'Blog' || page.slug === 'Blog/Template') {
259
- console.log(`⏭️ Skipping ${page.slug} (not a blog post)`);
260
- continue;
261
- }
262
-
263
- // Extract blog post name from slug (Blog/My-Post -> My-Post)
264
- const blogSlug = page.slug.replace('Blog/', '');
265
- const filename = `${blogSlug}.md`;
266
- const fullPath = path.join(BLOG_DIR, filename);
267
-
268
- // Ensure blog directory exists
269
- if (!fs.existsSync(BLOG_DIR)) {
270
- fs.mkdirSync(BLOG_DIR, { recursive: true });
271
- }
272
-
273
- // Process and write blog content
274
- const processedContent = processBlogContent(page.content, page.title);
275
- fs.writeFileSync(fullPath, processedContent);
276
- syncedBlogs.add(filename);
277
-
278
- console.log(`📝 Blog: ${page.slug} -> content/blog/${filename}`);
279
- continue;
280
- }
281
-
282
- // Regular docs pages
283
- const relativePath = slugToFilePath(page.slug);
284
- const fullPath = path.join(DOCS_DIR, relativePath);
285
- const dirPath = path.dirname(fullPath);
286
-
287
- // Ensure directory exists
288
- if (!fs.existsSync(dirPath)) {
289
- fs.mkdirSync(dirPath, { recursive: true });
290
- }
291
-
292
- // Process and write content
293
- const processedContent = processContent(page.content, page.title);
294
- fs.writeFileSync(fullPath, processedContent);
295
- syncedDocs.add(relativePath);
296
-
297
- console.log(`✅ ${page.slug} -> ${relativePath}`);
298
- }
299
-
300
- console.log(`\n✨ Synced ${syncedDocs.size} docs + ${syncedBlogs.size} blog posts`);
301
-
302
- // Write manifest for tracking
303
- const manifest = {
304
- lastSync: new Date().toISOString(),
305
- source: `https://${GITLAB_HOST}/${PROJECT_PATH}/-/wikis/home`,
306
- docs: Array.from(syncedDocs).sort(),
307
- blogs: Array.from(syncedBlogs).sort(),
308
- };
309
-
310
- fs.writeFileSync(
311
- path.join(DOCS_DIR, '.wiki-sync-manifest.json'),
312
- JSON.stringify(manifest, null, 2)
313
- );
314
-
315
- console.log('📋 Updated .wiki-sync-manifest.json');
316
- }
317
-
318
- // Run if called directly
319
- syncWiki().catch((error) => {
320
- console.error('❌ Wiki sync failed:', error.message);
321
- process.exit(1);
322
- });
@@ -1,199 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- /**
3
- * Upload Wiki Export to GitLab
4
- *
5
- * Uploads prepared wiki files from .wiki-export to GitLab wiki via API
6
- */
7
-
8
- import fs from 'fs';
9
- import path from 'path';
10
- import os from 'os';
11
-
12
- // Load .env.local first to get project path
13
- loadEnvLocal();
14
-
15
- const GITLAB_HOST = process.env.GITLAB_HOST || process.env.CI_SERVER_HOST || 'gitlab.com';
16
- // Get project path from env (GITLAB_PROJECT_PATH) or fallback to default
17
- const PROJECT_PATH = process.env.GITLAB_PROJECT_PATH || 'blueflyio/openstandardagents';
18
- const EXPORT_DIR = path.join(process.cwd(), '.wiki-export');
19
-
20
- function loadEnvLocal(): void {
21
- // Check multiple common locations for .env.local
22
- const envPaths: string[] = [];
23
-
24
- // If ENV_FILE is set, use that first
25
- if (process.env.ENV_FILE) {
26
- envPaths.push(process.env.ENV_FILE);
27
- }
28
-
29
- // Current directory and parent directories (walk up to 5 levels)
30
- let currentDir = process.cwd();
31
- for (let i = 0; i < 5; i++) {
32
- envPaths.push(path.join(currentDir, '.env.local'));
33
- const parentDir = path.dirname(currentDir);
34
- if (parentDir === currentDir) break; // Reached filesystem root
35
- currentDir = parentDir;
36
- }
37
-
38
- // User home directory
39
- envPaths.push(path.join(os.homedir(), '.env.local'));
40
-
41
- for (const envLocalPath of envPaths) {
42
- if (fs.existsSync(envLocalPath)) {
43
- try {
44
- const envContent = fs.readFileSync(envLocalPath, 'utf-8');
45
- envContent.split('\n').forEach(line => {
46
- const trimmed = line.trim();
47
- if (trimmed && !trimmed.startsWith('#')) {
48
- const [key, ...valueParts] = trimmed.split('=');
49
- if (key && valueParts.length > 0) {
50
- const value = valueParts.join('=').replace(/^["']|["']$/g, '').trim();
51
- if (!process.env[key] && value) {
52
- process.env[key] = value;
53
- }
54
- }
55
- }
56
- });
57
- // Load from first found file only
58
- return;
59
- } catch (error) {
60
- // Continue to next location if this one fails
61
- continue;
62
- }
63
- }
64
- }
65
- }
66
-
67
- async function getGitLabToken(): Promise<string | null> {
68
- // .env.local already loaded at top level
69
-
70
- // Try environment variables (check multiple possible names)
71
- if (process.env.GITLAB_TOKEN) {
72
- return process.env.GITLAB_TOKEN;
73
- }
74
- if (process.env.GITLAB_PUSH_TOKEN) {
75
- return process.env.GITLAB_PUSH_TOKEN;
76
- }
77
- if (process.env.CI_JOB_TOKEN) {
78
- return process.env.CI_JOB_TOKEN;
79
- }
80
-
81
- const tokenPath = path.join(process.env.HOME || '', '.tokens', 'gitlab');
82
- if (fs.existsSync(tokenPath)) {
83
- return fs.readFileSync(tokenPath, 'utf-8').trim();
84
- }
85
-
86
- return null;
87
- }
88
-
89
- async function uploadWikiPage(slug: string, content: string): Promise<boolean> {
90
- const token = await getGitLabToken();
91
- if (!token) {
92
- console.error('❌ No GitLab token found');
93
- console.error(' Set GITLAB_TOKEN env var or create ~/.tokens/gitlab');
94
- return false;
95
- }
96
-
97
- const encodedPath = encodeURIComponent(PROJECT_PATH);
98
- const url = `https://${GITLAB_HOST}/api/v4/projects/${encodedPath}/wikis`;
99
-
100
- try {
101
- const response = await fetch(url, {
102
- method: 'POST',
103
- headers: {
104
- 'PRIVATE-TOKEN': token,
105
- 'Content-Type': 'application/json',
106
- },
107
- body: JSON.stringify({
108
- title: slug,
109
- content: content,
110
- format: 'markdown',
111
- }),
112
- });
113
-
114
- if (response.ok) {
115
- return true;
116
- } else if (response.status === 409 || response.status === 400) {
117
- // Page already exists, try to update it
118
- const updateUrl = `${url}/${encodeURIComponent(slug)}`;
119
- const updateResponse = await fetch(updateUrl, {
120
- method: 'PUT',
121
- headers: {
122
- 'PRIVATE-TOKEN': token,
123
- 'Content-Type': 'application/json',
124
- },
125
- body: JSON.stringify({
126
- content: content,
127
- format: 'markdown',
128
- }),
129
- });
130
- if (updateResponse.ok) {
131
- return true;
132
- } else {
133
- const errorText = await updateResponse.text();
134
- console.error(` Update error: ${updateResponse.status} ${updateResponse.statusText}`);
135
- console.error(` ${errorText.substring(0, 200)}`);
136
- return false;
137
- }
138
- } else {
139
- const errorText = await response.text();
140
- console.error(` API error: ${response.status} ${response.statusText}`);
141
- console.error(` ${errorText.substring(0, 200)}`);
142
- return false;
143
- }
144
- } catch (error: any) {
145
- console.error(` Network error: ${error.message}`);
146
- return false;
147
- }
148
- }
149
-
150
- async function uploadWikiFiles(): Promise<void> {
151
- console.log('🔄 Uploading wiki files to GitLab...\n');
152
-
153
- if (!fs.existsSync(EXPORT_DIR)) {
154
- console.error('❌ .wiki-export directory not found');
155
- console.error(' Run: npm run merge-docs-to-wiki first');
156
- return;
157
- }
158
-
159
- const manifestPath = path.join(EXPORT_DIR, 'MANIFEST.json');
160
- if (!fs.existsSync(manifestPath)) {
161
- console.error('❌ MANIFEST.json not found');
162
- return;
163
- }
164
-
165
- const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
166
- console.log(`📚 Found ${manifest.length} files to upload\n`);
167
-
168
- let successCount = 0;
169
- let failCount = 0;
170
-
171
- for (const item of manifest) {
172
- const filePath = path.join(EXPORT_DIR, `${item.slug}.md`);
173
- if (!fs.existsSync(filePath)) {
174
- console.log(`⚠️ ${item.slug} - file not found, skipping`);
175
- failCount++;
176
- continue;
177
- }
178
-
179
- const content = fs.readFileSync(filePath, 'utf-8');
180
- console.log(`📤 Uploading ${item.slug}...`);
181
-
182
- const success = await uploadWikiPage(item.slug, content);
183
- if (success) {
184
- console.log(`✅ ${item.slug} - uploaded successfully`);
185
- successCount++;
186
- } else {
187
- console.log(`❌ ${item.slug} - upload failed`);
188
- failCount++;
189
- }
190
- }
191
-
192
- console.log(`\n✨ Upload complete: ${successCount} succeeded, ${failCount} failed`);
193
- }
194
-
195
- uploadWikiFiles().catch((error) => {
196
- console.error('❌ Upload failed:', error.message);
197
- process.exit(1);
198
- });
199
-
@@ -1,36 +0,0 @@
1
- // OSSA Design System - Centralized Color Variables
2
- // Update colors here to change them site-wide
3
-
4
- // Brand Colors
5
- $ossa-primary: #4A3ECD; // Main blue-purple - OSSA hub/standard
6
- $ossa-secondary: #1CB9ED; // Cyan-blue - Agent nodes
7
- $ossa-accent: #9060EA; // Purple accent
8
-
9
- // Semantic Colors - Muted for better visual harmony
10
- $ossa-success: #10b981; // Muted green
11
- $ossa-warning: #f59e0b; // Muted amber
12
- $ossa-error: #ef4444; // Muted red
13
- $ossa-info: #06b6d4; // Muted cyan
14
-
15
- // Neutral Colors
16
- $ossa-dark: #212529;
17
- $ossa-gray-900: #343a40;
18
- $ossa-gray-700: #495057;
19
- $ossa-gray-500: #6c757d;
20
- $ossa-gray-300: #dee2e6;
21
- $ossa-gray-100: #f8f9fa;
22
- $ossa-white: #ffffff;
23
-
24
- // Gradients - Lightest blue to darkest purple, blue spans more
25
- // Order: secondary (lightest blue #1CB9ED) -> primary (blue-purple #4A3ECD) -> accent (darkest purple #9060EA)
26
- $gradient-brand: linear-gradient(135deg, $ossa-secondary 0%, $ossa-secondary 40%, $ossa-primary 70%, $ossa-accent 100%);
27
- $gradient-hero: linear-gradient(135deg, $ossa-secondary 0%, $ossa-secondary 35%, $ossa-primary 65%, $ossa-accent 100%);
28
- $gradient-button: linear-gradient(135deg, $ossa-secondary 0%, $ossa-secondary 45%, $ossa-primary 75%, $ossa-accent 100%);
29
-
30
- // Code Colors
31
- $code-bg: #1e1e1e;
32
- $code-text: #d4d4d4;
33
- $code-keyword: #569cd6;
34
- $code-string: #ce9178;
35
- $code-comment: #6a9955;
36
-
@@ -1,136 +0,0 @@
1
- import type { Config } from 'tailwindcss';
2
-
3
- const config: Config = {
4
- content: [
5
- './pages/**/*.{js,ts,jsx,tsx,mdx}',
6
- './components/**/*.{js,ts,jsx,tsx,mdx}',
7
- './app/**/*.{js,ts,jsx,tsx,mdx}',
8
- ],
9
- theme: {
10
- extend: {
11
- colors: {
12
- primary: {
13
- DEFAULT: 'var(--ossa-primary)', // From SCSS variables - #4A3ECD
14
- 50: '#f5f4fd',
15
- 100: '#e8e5fa',
16
- 200: '#d4cff5',
17
- 300: '#b5abee',
18
- 400: '#8f7ee4',
19
- 500: 'var(--ossa-primary)', // #4A3ECD - from SCSS
20
- 600: '#3d2fb8',
21
- 700: '#322598',
22
- 800: '#2a1f7a',
23
- 900: '#241f65',
24
- 950: '#15113a',
25
- },
26
- secondary: {
27
- DEFAULT: 'var(--ossa-secondary)', // From SCSS variables - #1CB9ED
28
- 50: '#ecfbff',
29
- 100: '#d1f5fe',
30
- 200: '#a8e9fd',
31
- 300: '#6fd8fa',
32
- 400: '#2ec0f5',
33
- 500: 'var(--ossa-secondary)', // #1CB9ED - from SCSS
34
- 600: '#0a9dd1',
35
- 700: '#087da9',
36
- 800: '#0c6688',
37
- 900: '#105570',
38
- 950: '#08374a',
39
- },
40
- accent: {
41
- DEFAULT: 'var(--ossa-accent)', // From SCSS variables - #9060EA
42
- 50: '#f7f4fe',
43
- 100: '#ede9fd',
44
- 200: '#ddd4fb',
45
- 300: '#c5b3f8',
46
- 400: '#a887f3',
47
- 500: 'var(--ossa-accent)', // #9060EA - from SCSS
48
- 600: '#7c3aed',
49
- 700: '#6b28d9',
50
- 800: '#5923b8',
51
- 900: '#4b1f97',
52
- 950: '#2d0f5c',
53
- },
54
- // Semantic colors - centralized and muted
55
- // These reference CSS variables which come from SCSS variables in styles/_variables.scss
56
- // Update colors in ONE place: styles/_variables.scss
57
- success: {
58
- DEFAULT: 'var(--ossa-success)',
59
- 50: '#ecfdf5',
60
- 100: '#d1fae5',
61
- 200: '#a7f3d0',
62
- 300: '#6ee7b7',
63
- 400: '#34d399',
64
- 500: 'var(--ossa-success)', // #10b981 - from SCSS
65
- 600: '#059669',
66
- 700: '#047857',
67
- 800: '#065f46',
68
- 900: '#064e3b',
69
- },
70
- warning: {
71
- DEFAULT: 'var(--ossa-warning)',
72
- 50: '#fffbeb',
73
- 100: '#fef3c7',
74
- 200: '#fde68a',
75
- 300: '#fcd34d',
76
- 400: '#fbbf24',
77
- 500: 'var(--ossa-warning)', // #f59e0b - from SCSS
78
- 600: '#d97706',
79
- 700: '#b45309',
80
- 800: '#92400e',
81
- 900: '#78350f',
82
- },
83
- error: {
84
- DEFAULT: 'var(--ossa-error)',
85
- 50: '#fef2f2',
86
- 100: '#fee2e2',
87
- 200: '#fecaca',
88
- 300: '#fca5a5',
89
- 400: '#f87171',
90
- 500: 'var(--ossa-error)', // #ef4444 - from SCSS
91
- 600: '#dc2626',
92
- 700: '#b91c1c',
93
- 800: '#991b1b',
94
- 900: '#7f1d1d',
95
- },
96
- info: {
97
- DEFAULT: 'var(--ossa-info)',
98
- 50: '#ecfeff',
99
- 100: '#cffafe',
100
- 200: '#a5f3fc',
101
- 300: '#67e8f9',
102
- 400: '#22d3ee',
103
- 500: 'var(--ossa-info)', // #06b6d4 - from SCSS
104
- 600: '#0891b2',
105
- 700: '#0e7490',
106
- 800: '#155e75',
107
- 900: '#164e63',
108
- },
109
- },
110
- fontFamily: {
111
- sans: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
112
- mono: ['JetBrains Mono', 'Menlo', 'Monaco', 'Courier New', 'monospace'],
113
- body: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
114
- heading: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
115
- code: ['JetBrains Mono', 'Menlo', 'Monaco', 'Courier New', 'monospace'],
116
- },
117
- typography: {
118
- DEFAULT: {
119
- css: {
120
- maxWidth: 'none',
121
- color: '#334155',
122
- a: {
123
- color: '#0284c7',
124
- '&:hover': {
125
- color: '#0369a1',
126
- },
127
- },
128
- },
129
- },
130
- },
131
- },
132
- },
133
- plugins: [],
134
- };
135
-
136
- export default config;