@bluefly/openstandardagents 0.2.7 → 0.2.9

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 (327) hide show
  1. package/.devfile.yaml +1 -1
  2. package/.env.example +1 -1
  3. package/.github/AGENTS.md +245 -0
  4. package/.github/agents/github-issue-triage.ossa.yaml +99 -0
  5. package/.github/agents/github-pr-triage.ossa.yaml +137 -0
  6. package/.github/workflows/issue-sync-to-gitlab.yml +138 -0
  7. package/.github/workflows/pr-triage-to-gitlab.yml +164 -0
  8. package/.version.json +2 -2
  9. package/.wiki-config.json +24 -0
  10. package/CHANGELOG.md +44 -18
  11. package/CODEOWNERS +75 -0
  12. package/CONTRIBUTING.md +103 -4
  13. package/README.md +178 -243
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/repositories/schema.repository.d.ts +6 -1
  19. package/dist/repositories/schema.repository.d.ts.map +1 -1
  20. package/dist/repositories/schema.repository.js +49 -27
  21. package/dist/repositories/schema.repository.js.map +1 -1
  22. package/dist/services/migration.service.d.ts +4 -3
  23. package/dist/services/migration.service.d.ts.map +1 -1
  24. package/dist/services/migration.service.js +11 -10
  25. package/dist/services/migration.service.js.map +1 -1
  26. package/dist/services/release-automation/release.service.js +1 -1
  27. package/dist/services/release-automation/release.service.js.map +1 -1
  28. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  29. package/dist/services/release-automation/webhook.service.js +3 -3
  30. package/dist/services/release-automation/webhook.service.js.map +1 -1
  31. package/dist/services/runtime/claude/claude-adapter.d.ts +1 -1
  32. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -1
  33. package/dist/services/runtime/claude/claude-adapter.js +2 -2
  34. package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
  35. package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
  36. package/dist/spec/v0.2.8/README.md +72 -0
  37. package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  38. package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  39. package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  40. package/{spec/v0.2.6-dev/ossa-0.2.5.schema.json → dist/spec/v0.2.8/ossa-0.2.8.schema.json} +1509 -52
  41. package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  42. package/dist/spec/v0.2.9/a2a-protocol.md +1337 -0
  43. package/dist/spec/v0.2.9/agent.md +1946 -0
  44. package/dist/spec/v0.2.9/capabilities/index.yaml +25 -0
  45. package/dist/spec/v0.2.9/capabilities/memory.yaml +251 -0
  46. package/dist/spec/v0.2.9/capability-schema.md +576 -0
  47. package/dist/spec/v0.2.9/compliance-profiles.md +533 -0
  48. package/dist/spec/v0.2.9/conformance-testing.md +1527 -0
  49. package/dist/spec/v0.2.9/gitlab-duo-integration.md +621 -0
  50. package/dist/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
  51. package/dist/spec/v0.2.9/runtime-semantics.md +464 -0
  52. package/dist/spec/v0.2.9/security-model.md +1245 -0
  53. package/dist/spec/v0.2.9/semantic-conventions.md +347 -0
  54. package/dist/spec/v0.2.9/types.ts +522 -0
  55. package/dist/types/index.d.ts +3 -2
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/dist/types/policy.d.ts +377 -0
  58. package/dist/types/policy.d.ts.map +1 -0
  59. package/dist/types/policy.js +84 -0
  60. package/dist/types/policy.js.map +1 -0
  61. package/dist/utils/index.d.ts +6 -0
  62. package/dist/utils/index.d.ts.map +1 -0
  63. package/dist/utils/index.js +6 -0
  64. package/dist/utils/index.js.map +1 -0
  65. package/dist/utils/version.d.ts +68 -0
  66. package/dist/utils/version.d.ts.map +1 -0
  67. package/dist/utils/version.js +156 -0
  68. package/dist/utils/version.js.map +1 -0
  69. package/docs/specs/policy-dsl.md +925 -0
  70. package/eslint-report.json +1 -0
  71. package/examples/adk-integration/code-review-workflow.yml +1 -1
  72. package/examples/adk-integration/customer-support.yml +1 -1
  73. package/examples/adk-integration/data-pipeline.yml +1 -1
  74. package/examples/advanced/reasoning-agent.yaml +136 -0
  75. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  76. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  77. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  78. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  79. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  80. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  81. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  82. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  83. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  84. package/examples/agents-md/code-agent.ossa.json +100 -0
  85. package/examples/agents-md/monorepo-agent.ossa.yaml +180 -0
  86. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  87. package/examples/autogen/multi-agent.ossa.json +1 -1
  88. package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
  89. package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
  90. package/examples/common_npm/agent-router.ossa.yaml +1 -0
  91. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  92. package/examples/crewai/research-team.ossa.json +1 -1
  93. package/examples/cursor/code-review-agent.ossa.json +1 -1
  94. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
  95. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  96. package/examples/extensions/agents-md-v1.yml +175 -0
  97. package/examples/extensions/drupal-v1.yml +1 -1
  98. package/examples/extensions/kagent-v1.yml +1 -1
  99. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  100. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  101. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  102. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  103. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  104. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
  105. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  106. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  107. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  108. package/examples/langchain/chain-agent.ossa.json +1 -1
  109. package/examples/langflow/workflow-agent.ossa.json +1 -1
  110. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  111. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  112. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  113. package/examples/multi-agent/README.md +74 -0
  114. package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
  115. package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
  116. package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
  117. package/examples/openai/basic-agent.ossa.yaml +1 -1
  118. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  119. package/examples/openai/swarm-agent.ossa.json +1 -1
  120. package/examples/production/document-analyzer-openai.yml +1 -1
  121. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  122. package/examples/spec-examples/audit-agent.yml +1 -1
  123. package/examples/spec-examples/chat-agent.yml +1 -1
  124. package/examples/spec-examples/compliance-agent.yml +1 -1
  125. package/examples/spec-examples/monitoring-agent.yml +1 -1
  126. package/examples/spec-examples/workflow-agent.yml +1 -1
  127. package/examples/templates/ossa-compliance.yaml +1 -1
  128. package/examples/vercel/edge-agent.ossa.json +1 -1
  129. package/gl-code-quality-report.json +62 -0
  130. package/llms-ctx-full.txt +39 -0
  131. package/llms-ctx.txt +39 -0
  132. package/llms.txt +47 -0
  133. package/package.json +6 -3
  134. package/scripts/README.md +25 -0
  135. package/scripts/compliance-audit.ts +796 -0
  136. package/scripts/eslint-to-codequality.cjs +34 -0
  137. package/scripts/generate-agents-catalog.ts +2 -1
  138. package/scripts/generate-api-docs.ts +2 -1
  139. package/scripts/generate-examples-docs.ts +2 -1
  140. package/scripts/generate-llms-ctx.sh +17 -0
  141. package/scripts/generate-schema-docs.ts +31 -10
  142. package/scripts/sync-version.js +4 -12
  143. package/scripts/validate-schema.ts +2 -1
  144. package/spec/v0.2.8/CHANGELOG.md +401 -0
  145. package/spec/v0.2.8/README.md +72 -0
  146. package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  147. package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  148. package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  149. package/spec/{v0.2.6-dev/ossa-0.2.6-dev.schema.json → v0.2.8/ossa-0.2.8.schema.json} +1509 -52
  150. package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  151. package/spec/v0.2.9/a2a-protocol.md +1337 -0
  152. package/spec/v0.2.9/agent.md +1946 -0
  153. package/spec/v0.2.9/capabilities/index.yaml +25 -0
  154. package/spec/v0.2.9/capabilities/memory.yaml +251 -0
  155. package/spec/v0.2.9/capability-schema.md +576 -0
  156. package/spec/v0.2.9/compliance-profiles.md +533 -0
  157. package/spec/v0.2.9/conformance-testing.md +1527 -0
  158. package/spec/v0.2.9/gitlab-duo-integration.md +621 -0
  159. package/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
  160. package/spec/v0.2.9/runtime-semantics.md +464 -0
  161. package/spec/v0.2.9/security-model.md +1245 -0
  162. package/spec/v0.2.9/semantic-conventions.md +347 -0
  163. package/spec/v0.2.9/types.ts +522 -0
  164. package/test-results/junit.xml +337 -0
  165. package/.github/workflows/pr-comment.yml +0 -33
  166. package/bin/validate-ossa-0.2.5-RC.ts +0 -244
  167. package/dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json +0 -1696
  168. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
  169. package/scripts/lib/exec.ts +0 -37
  170. package/scripts/lib/file-ops.ts +0 -58
  171. package/scripts/lib/version.ts +0 -83
  172. package/website/.lighthouserc.ts +0 -24
  173. package/website/.prettierrc +0 -10
  174. package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +0 -445
  175. package/website/Dockerfile +0 -30
  176. package/website/app/about/page.tsx +0 -304
  177. package/website/app/blog/[slug]/page.tsx +0 -208
  178. package/website/app/blog/page.tsx +0 -249
  179. package/website/app/design-guide/page.tsx +0 -511
  180. package/website/app/docs/[[...slug]]/page.tsx +0 -847
  181. package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
  182. package/website/app/ecosystem/page.tsx +0 -410
  183. package/website/app/examples/page.tsx +0 -133
  184. package/website/app/globals.scss +0 -370
  185. package/website/app/layout.tsx +0 -106
  186. package/website/app/license/page.tsx +0 -183
  187. package/website/app/not-found.tsx +0 -18
  188. package/website/app/page.tsx +0 -686
  189. package/website/app/page.tsx.bak +0 -679
  190. package/website/app/page.tsx.bak2 +0 -649
  191. package/website/app/playground/page.tsx +0 -487
  192. package/website/app/robots.ts +0 -19
  193. package/website/app/rss.xml/route.ts +0 -74
  194. package/website/app/schema/page.tsx +0 -1001
  195. package/website/app/sitemap.ts +0 -56
  196. package/website/app/specification/page.tsx +0 -287
  197. package/website/components/InstallCommand.tsx +0 -96
  198. package/website/components/Logo.tsx +0 -97
  199. package/website/components/StructuredData.tsx +0 -65
  200. package/website/components/docs/DocsSearch.tsx +0 -104
  201. package/website/components/docs/DocsSidebar.tsx +0 -155
  202. package/website/components/docs/MarkdownContent.tsx +0 -401
  203. package/website/components/docs/VersionSelector.tsx +0 -105
  204. package/website/components/examples/ExamplesViewer.tsx +0 -293
  205. package/website/components/layout/Footer.tsx +0 -116
  206. package/website/components/layout/Header.tsx +0 -172
  207. package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
  208. package/website/components/schema/SchemaExplorer.tsx +0 -213
  209. package/website/components/ui/Badge.tsx +0 -82
  210. package/website/components/ui/Button.tsx +0 -116
  211. package/website/components/ui/Card.tsx +0 -167
  212. package/website/components/ui/Checkbox.tsx +0 -141
  213. package/website/components/ui/Input.tsx +0 -169
  214. package/website/components/ui/Radio.tsx +0 -141
  215. package/website/components/ui/Select.tsx +0 -182
  216. package/website/components/ui/Tag.tsx +0 -158
  217. package/website/components/ui/Textarea.tsx +0 -195
  218. package/website/components/ui/index.ts +0 -11
  219. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
  220. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
  221. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
  222. package/website/content/blog/introducing-ossa-framework.md +0 -328
  223. package/website/content/blog/ossa-production-results.md +0 -279
  224. package/website/content/blog/welcome-to-ossa.md +0 -43
  225. package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
  226. package/website/content/docs/00-home.md +0 -153
  227. package/website/content/docs/adapters/openai-adapter.md +0 -693
  228. package/website/content/docs/agents/catalog.md +0 -28
  229. package/website/content/docs/aiflow-framework-integration-with-ossa.md +0 -107
  230. package/website/content/docs/api-reference/index.md +0 -38
  231. package/website/content/docs/api-reference/ossa-core-api.md +0 -634
  232. package/website/content/docs/api-reference/ossa-registry-api.md +0 -515
  233. package/website/content/docs/api-reference/unified-agent-gateway.md +0 -599
  234. package/website/content/docs/architecture/execution-flow.md +0 -335
  235. package/website/content/docs/architecture/multi-agent-systems.md +0 -737
  236. package/website/content/docs/architecture/overview.md +0 -121
  237. package/website/content/docs/architecture/stack-integration.md +0 -461
  238. package/website/content/docs/changelog.md +0 -246
  239. package/website/content/docs/cli-reference/index.md +0 -111
  240. package/website/content/docs/cli-reference/ossa-agents.md +0 -70
  241. package/website/content/docs/cli-reference/ossa-export.md +0 -56
  242. package/website/content/docs/cli-reference/ossa-generate.md +0 -66
  243. package/website/content/docs/cli-reference/ossa-gitlab-agent.md +0 -57
  244. package/website/content/docs/cli-reference/ossa-import.md +0 -56
  245. package/website/content/docs/cli-reference/ossa-init.md +0 -57
  246. package/website/content/docs/cli-reference/ossa-migrate.md +0 -62
  247. package/website/content/docs/cli-reference/ossa-run.md +0 -66
  248. package/website/content/docs/cli-reference/ossa-schema.md +0 -57
  249. package/website/content/docs/cli-reference/ossa-setup.md +0 -57
  250. package/website/content/docs/cli-reference/ossa-validate.md +0 -66
  251. package/website/content/docs/configuration/index.md +0 -97
  252. package/website/content/docs/contributing.md +0 -599
  253. package/website/content/docs/deployment/github-mirroring.md +0 -924
  254. package/website/content/docs/documentation.md +0 -100
  255. package/website/content/docs/ecosystem/framework-support.md +0 -1361
  256. package/website/content/docs/ecosystem/overview.md +0 -366
  257. package/website/content/docs/errors/index.md +0 -10
  258. package/website/content/docs/examples/aiflow-framework-integration-with-ossa.md +0 -107
  259. package/website/content/docs/examples/catalog.md +0 -300
  260. package/website/content/docs/for-audiences/students-researchers.md +0 -122
  261. package/website/content/docs/getting-started/index.md +0 -92
  262. package/website/content/docs/getting-started/installation.md +0 -155
  263. package/website/content/docs/getting-started/running-agents.md +0 -309
  264. package/website/content/docs/getting-started.md +0 -91
  265. package/website/content/docs/integrations/aiflow.md +0 -104
  266. package/website/content/docs/integrations/drupal.md +0 -105
  267. package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
  268. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
  269. package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
  270. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
  271. package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
  272. package/website/content/docs/migration-guides/index.md +0 -133
  273. package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
  274. package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
  275. package/website/content/docs/migration-guides/migration-manifest.json +0 -64
  276. package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
  277. package/website/content/docs/openapi-extensions/examples.md +0 -550
  278. package/website/content/docs/openapi-extensions/index.md +0 -551
  279. package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
  280. package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
  281. package/website/content/docs/ossa-compliant-badge.md +0 -251
  282. package/website/content/docs/pre-release/index.md +0 -175
  283. package/website/content/docs/quick-reference.md +0 -17
  284. package/website/content/docs/readme.md +0 -35
  285. package/website/content/docs/releases/v0.2.6.md +0 -99
  286. package/website/content/docs/schema-reference/agent-capabilities.md +0 -50
  287. package/website/content/docs/schema-reference/agent-id.md +0 -52
  288. package/website/content/docs/schema-reference/agent-name.md +0 -50
  289. package/website/content/docs/schema-reference/agent-role.md +0 -54
  290. package/website/content/docs/schema-reference/agent-spec.md +0 -406
  291. package/website/content/docs/schema-reference/agent-version.md +0 -50
  292. package/website/content/docs/schema-reference/autonomy.md +0 -568
  293. package/website/content/docs/schema-reference/constraints.md +0 -543
  294. package/website/content/docs/schema-reference/index.md +0 -45
  295. package/website/content/docs/schema-reference/llm-config.md +0 -445
  296. package/website/content/docs/schema-reference/observability.md +0 -654
  297. package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
  298. package/website/content/docs/schema-reference/taxonomy.md +0 -509
  299. package/website/content/docs/schema-reference/tools.md +0 -628
  300. package/website/content/docs/templates/blog-post.md +0 -43
  301. package/website/content/docs/types-reference/index.md +0 -105
  302. package/website/content/docs/use-cases/00-index.md +0 -395
  303. package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
  304. package/website/content/docs/use-cases/customer-support.md +0 -1234
  305. package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
  306. package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
  307. package/website/content/docs/versioning.md +0 -288
  308. package/website/dev.sh +0 -53
  309. package/website/docker-compose.dev.yml +0 -36
  310. package/website/lib/version.ts +0 -35
  311. package/website/lib/versions.json +0 -103
  312. package/website/next.config.ts +0 -18
  313. package/website/nginx.conf +0 -32
  314. package/website/package-lock.json +0 -9679
  315. package/website/package.json +0 -59
  316. package/website/postcss.config.mjs +0 -9
  317. package/website/scripts/fetch-versions.js +0 -166
  318. package/website/scripts/generate-examples-index.js +0 -163
  319. package/website/scripts/merge-docs-to-wiki.ts +0 -207
  320. package/website/scripts/sync-version.js +0 -72
  321. package/website/scripts/sync-wiki.ts +0 -322
  322. package/website/scripts/upload-wiki.ts +0 -199
  323. package/website/styles/_spacing.scss +0 -453
  324. package/website/styles/_tokens.scss +0 -245
  325. package/website/styles/_typography.scss +0 -361
  326. package/website/styles/_variables.scss +0 -287
  327. package/website/tailwind.config.ts +0 -170
@@ -1,37 +0,0 @@
1
- /**
2
- * Execution Utilities
3
- *
4
- * DRY: Reusable command execution with proper error handling
5
- * Type-safe: Validates commands and handles errors
6
- */
7
-
8
- import { execSync } from 'child_process';
9
- import { z } from 'zod';
10
-
11
- const CommandSchema = z.string().min(1);
12
-
13
- interface ExecOptions {
14
- encoding?: BufferEncoding;
15
- stdio?: 'inherit' | 'pipe';
16
- }
17
-
18
- /**
19
- * Execute command with validation and error handling
20
- */
21
- export function execCommand(
22
- command: string,
23
- options: ExecOptions = {}
24
- ): string {
25
- const validatedCommand = CommandSchema.parse(command);
26
-
27
- try {
28
- const result = execSync(validatedCommand, {
29
- encoding: options.encoding || 'utf8',
30
- stdio: options.stdio || 'pipe',
31
- });
32
- return result as string;
33
- } catch (error: any) {
34
- const message = error?.message || 'Command execution failed';
35
- throw new Error(`Command failed: ${validatedCommand}\n${message}`);
36
- }
37
- }
@@ -1,58 +0,0 @@
1
- /**
2
- * File Operations Utilities
3
- *
4
- * DRY: Reusable file operations with proper error handling
5
- * Type-safe: Validates paths and operations
6
- */
7
-
8
- import { readFileSync, writeFileSync, existsSync } from 'fs';
9
- import { z } from 'zod';
10
-
11
- const FilePathSchema = z.string().min(1);
12
-
13
- /**
14
- * Read file with validation
15
- */
16
- export function readFile(filePath: string): string {
17
- const validatedPath = FilePathSchema.parse(filePath);
18
-
19
- if (!existsSync(validatedPath)) {
20
- throw new Error(`File not found: ${validatedPath}`);
21
- }
22
-
23
- try {
24
- return readFileSync(validatedPath, 'utf8');
25
- } catch (error) {
26
- throw new Error(`Failed to read file ${validatedPath}: ${error instanceof Error ? error.message : String(error)}`);
27
- }
28
- }
29
-
30
- /**
31
- * Write file with validation
32
- */
33
- export function writeFile(filePath: string, content: string): void {
34
- const validatedPath = FilePathSchema.parse(filePath);
35
-
36
- try {
37
- writeFileSync(validatedPath, content, 'utf8');
38
- } catch (error) {
39
- throw new Error(`Failed to write file ${validatedPath}: ${error instanceof Error ? error.message : String(error)}`);
40
- }
41
- }
42
-
43
- /**
44
- * Check if file exists
45
- */
46
- export function fileExists(filePath: string): boolean {
47
- const validatedPath = FilePathSchema.parse(filePath);
48
- return existsSync(validatedPath);
49
- }
50
-
51
- /**
52
- * Validate file exists or throw
53
- */
54
- export function requireFile(filePath: string, errorMessage?: string): void {
55
- if (!fileExists(filePath)) {
56
- throw new Error(errorMessage || `Required file not found: ${filePath}`);
57
- }
58
- }
@@ -1,83 +0,0 @@
1
- /**
2
- * Version Management Utilities
3
- *
4
- * DRY: Single source of truth for version operations
5
- * Type-safe: Uses Zod for validation
6
- */
7
-
8
- import { readFileSync } from 'fs';
9
- import { join, dirname } from 'path';
10
- import { fileURLToPath } from 'url';
11
- import { z } from 'zod';
12
- import {
13
- PackageJsonSchema,
14
- VersionSchema,
15
- type PackageJson,
16
- type Version,
17
- } from '../schemas/package.schema.js';
18
-
19
- const __filename = fileURLToPath(import.meta.url);
20
- const __dirname = dirname(__filename);
21
- const ROOT = join(__dirname, '..', '..');
22
-
23
- /**
24
- * Get current version from package.json with Zod validation
25
- */
26
- export function getCurrentVersion(): Version {
27
- const packageJsonPath = join(ROOT, 'package.json');
28
- const content = readFileSync(packageJsonPath, 'utf8');
29
-
30
- try {
31
- const json = JSON.parse(content);
32
- const pkg = PackageJsonSchema.parse(json);
33
- return VersionSchema.parse(pkg.version);
34
- } catch (error) {
35
- if (error instanceof z.ZodError) {
36
- throw new Error(
37
- `Invalid package.json version: ${error.errors.map((e) => e.message).join(', ')}`
38
- );
39
- }
40
- throw error;
41
- }
42
- }
43
-
44
- /**
45
- * Get package.json with validation
46
- */
47
- export function getPackageJson(): PackageJson {
48
- const packageJsonPath = join(ROOT, 'package.json');
49
- const content = readFileSync(packageJsonPath, 'utf8');
50
-
51
- try {
52
- const json = JSON.parse(content);
53
- return PackageJsonSchema.parse(json);
54
- } catch (error) {
55
- if (error instanceof z.ZodError) {
56
- throw new Error(
57
- `Invalid package.json: ${error.errors.map((e) => e.message).join(', ')}`
58
- );
59
- }
60
- throw error;
61
- }
62
- }
63
-
64
- /**
65
- * Build schema path from version
66
- */
67
- export function getSchemaPath(version: Version): string {
68
- return `spec/v${version}/ossa-${version}.schema.json`;
69
- }
70
-
71
- /**
72
- * Build output path for generated types
73
- */
74
- export function getTypesOutputPath(version: Version): string {
75
- return `src/types/generated/ossa-${version}.types.ts`;
76
- }
77
-
78
- /**
79
- * Build output path for generated Zod schemas
80
- */
81
- export function getZodOutputPath(version: Version): string {
82
- return `src/types/generated/ossa-${version}.zod.ts`;
83
- }
@@ -1,24 +0,0 @@
1
- import type { Config } from '@lhci/cli';
2
-
3
- const config: Config = {
4
- ci: {
5
- collect: {
6
- staticDistDir: './out',
7
- numberOfRuns: 3,
8
- },
9
- assert: {
10
- assertions: {
11
- 'categories:performance': ['error', { minScore: 0.9 }],
12
- 'categories:accessibility': ['error', { minScore: 0.9 }],
13
- 'categories:best-practices': ['error', { minScore: 0.9 }],
14
- 'categories:seo': ['error', { minScore: 0.9 }],
15
- },
16
- },
17
- upload: {
18
- target: 'temporary-public-storage',
19
- },
20
- },
21
- };
22
-
23
- export default config;
24
-
@@ -1,10 +0,0 @@
1
- {
2
- "semi": true,
3
- "trailingComma": "es5",
4
- "singleQuote": true,
5
- "printWidth": 80,
6
- "tabWidth": 2,
7
- "useTabs": false,
8
- "plugins": ["prettier-plugin-tailwindcss"]
9
- }
10
-
@@ -1,445 +0,0 @@
1
- # OSSA Website Design System Implementation
2
-
3
- ## Overview
4
-
5
- This document summarizes the design system implementation for the OSSA website based on Issue #45. The implementation follows a phased approach to transform the website from developer-oriented to enterprise-ready with professional polish, accessibility compliance (WCAG 2.1 AA), and clear value articulation.
6
-
7
- ## Implementation Status
8
-
9
- ### ✅ Phase 1: Foundation & Design Tokens (COMPLETED)
10
-
11
- #### 1.1 Design Token System (`website/styles/_tokens.scss`)
12
- - **Color Scales**: Full 50-900 scales for all brand colors
13
- - Primary (Blue-Purple #4A3ECD): 11 shades
14
- - Secondary (Cyan-Blue #1CB9ED): 11 shades
15
- - Accent (Purple #9060EA): 11 shades
16
- - Success (Green #10b981): 11 shades
17
- - Warning (Amber #f59e0b): 11 shades
18
- - Error (Red #ef4444): 11 shades
19
- - Info (Cyan #06b6d4): 11 shades
20
- - Neutral/Gray: 11 shades
21
-
22
- - **Gradient Tokens**: CSS custom properties for consistent gradients
23
- - Primary, Secondary, Accent gradients
24
- - Hero, Button gradients
25
- - Success, Warning, Error, Info gradients
26
- - Background gradients (light, primary, secondary)
27
-
28
- - **Dark Mode Mappings**: Future-ready dark mode color system
29
- - Background colors (primary, secondary, tertiary)
30
- - Text colors (primary, secondary, tertiary)
31
-
32
- - **Focus Ring Colors**: Accessibility-compliant focus indicators
33
- - Primary, Secondary, Accent focus rings
34
- - Alpha variants for layering
35
-
36
- - **Additional Tokens**:
37
- - Shadow system (sm, md, lg, xl, 2xl + colored shadows)
38
- - Border radius (none to 3xl + full)
39
- - Transitions (fast, base, slow, slower)
40
- - Z-index layers (dropdown to tooltip)
41
- - Opacity scale (0-100)
42
-
43
- #### 1.2 Typography System (`website/styles/_typography.scss`)
44
- - **Font Families**:
45
- - Sans: Inter (body, headings, display)
46
- - Mono: JetBrains Mono (code)
47
-
48
- - **Font Weights**: 9 levels (100-900)
49
-
50
- - **Typography Hierarchy**:
51
- - Display: 72px / 48px mobile (extrabold, 1.1 line-height)
52
- - H1: 56px / 40px mobile (bold, 1.2 line-height)
53
- - H2: 40px / 32px mobile (bold, 1.3 line-height)
54
- - H3: 32px / 28px mobile (semibold, 1.4 line-height)
55
- - H4: 24px / 22px mobile (semibold, 1.5 line-height)
56
- - H5: 20px / 18px mobile (semibold, 1.5 line-height)
57
- - H6: 18px / 16px mobile (semibold, 1.5 line-height)
58
- - Body: 16px (normal, 1.6 line-height)
59
- - Small: 14px (normal, 1.5 line-height)
60
- - Extra Small: 12px (normal, 1.4 line-height)
61
-
62
- - **Responsive Typography**: Automatic mobile scaling (20-30% reduction)
63
-
64
- - **Utility Classes**:
65
- - Typography mixins for all levels
66
- - Font weight utilities
67
- - Letter spacing utilities
68
- - Text transform utilities
69
- - Text decoration utilities
70
- - Text alignment utilities
71
- - Truncate and line-clamp utilities
72
-
73
- #### 1.3 Spacing & Layout System (`website/styles/_spacing.scss`)
74
- - **Spacing Scale**: 4px base unit (0 to 96rem)
75
- - Granular scale: 0, 1px, 2px, 4px, 6px, 8px, 10px, 12px, 14px, 16px...
76
- - Extended scale up to 384px (96rem)
77
-
78
- - **Vertical Rhythm System**:
79
- - Section spacing: sm (48px), md (64px), lg (80px), xl (96px)
80
- - Component spacing: xs (8px), sm (12px), md (16px), lg (24px), xl (32px)
81
- - Element spacing: xs (4px), sm (8px), md (12px), lg (16px), xl (24px)
82
-
83
- - **Container Max-Widths**:
84
- - sm: 640px
85
- - md: 768px
86
- - lg: 1024px
87
- - xl: 1280px
88
- - 2xl: 1536px
89
-
90
- - **Content Max-Widths** (for readable text):
91
- - sm: 576px
92
- - md: 672px
93
- - lg: 768px
94
- - xl: 896px
95
- - 2xl: 1024px
96
- - 3xl: 1152px
97
- - 4xl: 1280px
98
-
99
- - **Utility Classes**:
100
- - Container classes with responsive padding
101
- - Content container classes
102
- - Section spacing classes
103
- - Stack (vertical) and inline (horizontal) spacing
104
- - Margin utilities (all directions)
105
- - Padding utilities (all directions)
106
- - Gap utilities for flexbox/grid
107
-
108
- #### 1.4 Variables Integration (`website/styles/_variables.scss`)
109
- - Imports all token files (@use syntax)
110
- - Maintains backward compatibility with existing variable names
111
- - Maps old variables to new token system
112
-
113
- ### ✅ Phase 2: Core Component Library (COMPLETED)
114
-
115
- #### 2.1 Button Component (`website/components/ui/Button.tsx`)
116
- - **Variants**: 4 types
117
- - Primary: Gradient background (primary-500 to primary-600)
118
- - Secondary: Gradient background (secondary-500 to secondary-600)
119
- - Outline: Transparent with border
120
- - Ghost: Transparent with hover background
121
-
122
- - **Sizes**: 3 options
123
- - sm: text-sm, px-3, py-1.5
124
- - md: text-base, px-4, py-2
125
- - lg: text-lg, px-6, py-3
126
-
127
- - **States**: 6 states
128
- - Default: Base styling
129
- - Hover: Enhanced shadow, darker gradient
130
- - Active: Darkest gradient
131
- - Focus: 2px ring with offset
132
- - Disabled: 50% opacity, no pointer events
133
- - Loading: Animated spinner, disabled state
134
-
135
- - **Features**:
136
- - Left/right icon support
137
- - Full width option
138
- - Accessible (ARIA attributes)
139
- - Keyboard navigation support
140
-
141
- #### 2.2 Card Component (`website/components/ui/Card.tsx`)
142
- - **Variants**: 4 types
143
- - Default: White background, border, subtle shadow
144
- - Bordered: White background, 2px border
145
- - Elevated: White background, large shadow
146
- - Flat: Gray background, no border
147
-
148
- - **Padding**: 4 options (none, sm, md, lg)
149
-
150
- - **Interactive**: Optional hover effects
151
- - Enhanced shadow
152
- - Border color change
153
- - Subtle scale animation
154
-
155
- - **Sub-components**:
156
- - CardHeader: Top section with margin
157
- - CardTitle: Heading (h1-h6 support)
158
- - CardDescription: Subtitle text
159
- - CardContent: Main content area
160
- - CardFooter: Bottom section with border
161
-
162
- - **Semantic HTML**: Supports div, article, section
163
-
164
- #### 2.3 Form Components
165
-
166
- **Input Component** (`website/components/ui/Input.tsx`):
167
- - Label with required indicator
168
- - Error states with red styling
169
- - Helper text
170
- - Left/right icon support
171
- - Full width option
172
- - Accessibility:
173
- - Auto-generated IDs
174
- - aria-invalid
175
- - aria-describedby
176
- - Proper label association
177
-
178
- **Select Component** (`website/components/ui/Select.tsx`):
179
- - Custom dropdown styling
180
- - Label with required indicator
181
- - Error states
182
- - Helper text
183
- - Options array or children support
184
- - Custom dropdown icon
185
- - Full accessibility support
186
-
187
- **Checkbox Component** (`website/components/ui/Checkbox.tsx`):
188
- - Label and helper text
189
- - Error states
190
- - Proper focus indicators (2px ring)
191
- - Accessible (ARIA attributes)
192
- - Disabled state support
193
-
194
- **Radio Component** (`website/components/ui/Radio.tsx`):
195
- - Label and helper text
196
- - Error states
197
- - Proper focus indicators (2px ring)
198
- - Accessible (ARIA attributes)
199
- - Disabled state support
200
-
201
- **Textarea Component** (`website/components/ui/Textarea.tsx`):
202
- - Label with required indicator
203
- - Error states
204
- - Helper text
205
- - Character count (optional)
206
- - Resize options (none, vertical, horizontal, both)
207
- - Min-height: 100px
208
- - Full accessibility support
209
-
210
- #### 2.4 Badge & Tag Components
211
-
212
- **Badge Component** (`website/components/ui/Badge.tsx`):
213
- - **Variants**: 7 types
214
- - default, success, warning, error, info, primary, secondary
215
- - **Sizes**: sm, md, lg
216
- - **Features**:
217
- - Optional dot indicator
218
- - Rounded full (pill shape)
219
- - Border styling
220
- - Color-coded backgrounds
221
-
222
- **Tag Component** (`website/components/ui/Tag.tsx`):
223
- - **Variants**: 7 types (same as Badge)
224
- - **Sizes**: sm, md, lg
225
- - **Features**:
226
- - Removable option with X button
227
- - onRemove callback
228
- - Rounded corners (not full)
229
- - Hover effects
230
- - Accessible remove button
231
-
232
- #### 2.5 Component Export (`website/components/ui/index.ts`)
233
- - Barrel export file for easy importing
234
- - Exports all components and their TypeScript types
235
- - Usage: `import { Button, Card, Input } from '@/components/ui'`
236
-
237
- ## Accessibility Features Implemented
238
-
239
- ### WCAG 2.1 AA Compliance
240
- - ✅ **Focus Indicators**: 2px ring with offset on all interactive elements
241
- - ✅ **Color Contrast**: All text/background combinations meet 4.5:1 (normal) or 3:1 (large text)
242
- - ✅ **Keyboard Navigation**: All components fully keyboard accessible
243
- - ✅ **ARIA Attributes**: Proper labels, roles, and states
244
- - ✅ **Form Labels**: All inputs properly associated with labels
245
- - ✅ **Error States**: Clear error messages with role="alert"
246
- - ✅ **Touch Targets**: Minimum 44x44px for mobile (buttons, checkboxes, radios)
247
- - ✅ **Screen Reader Support**: Descriptive text, aria-describedby, aria-invalid
248
-
249
- ### Accessibility Utilities
250
- - sr-only class for screen reader only content
251
- - focus:not-sr-only for skip links
252
- - aria-busy for loading states
253
- - aria-hidden for decorative icons
254
-
255
- ## Design System Benefits
256
-
257
- ### For Developers
258
- - **Consistent API**: All components follow same prop patterns
259
- - **TypeScript Support**: Full type definitions for all components
260
- - **Easy Imports**: Barrel exports for clean imports
261
- - **Responsive**: Mobile-first with automatic scaling
262
- - **Customizable**: className prop for extending styles
263
- - **Well-Documented**: Inline comments and prop descriptions
264
-
265
- ### For Users
266
- - **Accessible**: WCAG 2.1 AA compliant
267
- - **Performant**: Optimized transitions and animations
268
- - **Responsive**: Works on all screen sizes
269
- - **Consistent**: Unified visual language
270
- - **Professional**: Enterprise-grade polish
271
-
272
- ### For the Project
273
- - **Maintainable**: Centralized design tokens
274
- - **Scalable**: Easy to add new components
275
- - **Flexible**: Supports theming and customization
276
- - **Future-Ready**: Dark mode support prepared
277
- - **Brand Consistent**: Follows OSSA brand guidelines
278
-
279
- ## Next Steps (Remaining Phases)
280
-
281
- ### Phase 3: Layout & Navigation (Weeks 5-6)
282
- - [ ] Enhance Header component (active states, keyboard nav)
283
- - [ ] Enhance Footer component (multi-column, social links)
284
- - [ ] Create Breadcrumb component
285
- - [ ] Create TableOfContents component
286
- - [ ] Create Sidebar navigation component
287
- - [ ] Improve mobile navigation
288
-
289
- ### Phase 4: Content & Messaging (Weeks 7-8)
290
- - [ ] Homepage redesign with new components
291
- - [ ] Create ValueProposition component
292
- - [ ] Create ComparisonMatrix component
293
- - [ ] Create FeatureGrid component
294
- - [ ] Create SocialProof component
295
- - [ ] Add architecture diagrams
296
- - [ ] Create CodeBlock component with copy button
297
- - [ ] Create CodeExample component
298
- - [ ] Create enterprise landing page
299
-
300
- ### Phase 5: Interactive Elements (Weeks 9-10)
301
- - [ ] Create LoadingSpinner component
302
- - [ ] Create Skeleton component
303
- - [ ] Create Toast notification component
304
- - [ ] Add scroll animations
305
- - [ ] Add micro-interactions
306
- - [ ] Enhance playground
307
-
308
- ### Phase 6: Accessibility & Performance (Weeks 11-12)
309
- - [ ] Complete accessibility audit
310
- - [ ] Add SkipLink component
311
- - [ ] Ensure all images have alt text
312
- - [ ] Optimize performance (Lighthouse >90)
313
- - [ ] Optimize Core Web Vitals
314
- - [ ] Add lazy loading
315
-
316
- ### Phase 7: Testing & QA (Weeks 13-14)
317
- - [ ] Set up visual regression testing
318
- - [ ] Cross-browser testing
319
- - [ ] Component testing
320
- - [ ] Accessibility testing
321
- - [ ] Performance testing
322
-
323
- ## Files Created
324
-
325
- ### Design Tokens
326
- - `website/styles/_tokens.scss` - Color scales, gradients, shadows, etc.
327
- - `website/styles/_typography.scss` - Typography system
328
- - `website/styles/_spacing.scss` - Spacing and layout system
329
- - `website/styles/_variables.scss` - Updated with imports
330
-
331
- ### UI Components
332
- - `website/components/ui/Button.tsx` - Button component
333
- - `website/components/ui/Card.tsx` - Card component with sub-components
334
- - `website/components/ui/Input.tsx` - Input component
335
- - `website/components/ui/Select.tsx` - Select component
336
- - `website/components/ui/Checkbox.tsx` - Checkbox component
337
- - `website/components/ui/Radio.tsx` - Radio component
338
- - `website/components/ui/Textarea.tsx` - Textarea component
339
- - `website/components/ui/Badge.tsx` - Badge component
340
- - `website/components/ui/Tag.tsx` - Tag component
341
- - `website/components/ui/index.ts` - Barrel export
342
-
343
- ## Usage Examples
344
-
345
- ### Button
346
- ```tsx
347
- import { Button } from '@/components/ui';
348
-
349
- <Button variant="primary" size="lg" loading={isLoading}>
350
- Get Started
351
- </Button>
352
-
353
- <Button variant="outline" leftIcon={<Icon />}>
354
- Learn More
355
- </Button>
356
- ```
357
-
358
- ### Card
359
- ```tsx
360
- import { Card, CardHeader, CardTitle, CardDescription, CardContent } from '@/components/ui';
361
-
362
- <Card variant="elevated" interactive>
363
- <CardHeader>
364
- <CardTitle>Feature Title</CardTitle>
365
- <CardDescription>Feature description</CardDescription>
366
- </CardHeader>
367
- <CardContent>
368
- Content goes here
369
- </CardContent>
370
- </Card>
371
- ```
372
-
373
- ### Form
374
- ```tsx
375
- import { Input, Select, Checkbox, Textarea } from '@/components/ui';
376
-
377
- <Input
378
- label="Email"
379
- type="email"
380
- required
381
- error={errors.email}
382
- helperText="We'll never share your email"
383
- />
384
-
385
- <Select
386
- label="Country"
387
- options={countries}
388
- error={errors.country}
389
- />
390
-
391
- <Checkbox
392
- label="I agree to the terms"
393
- error={errors.terms}
394
- />
395
-
396
- <Textarea
397
- label="Message"
398
- showCharCount
399
- maxLength={500}
400
- resize="vertical"
401
- />
402
- ```
403
-
404
- ### Badge & Tag
405
- ```tsx
406
- import { Badge, Tag } from '@/components/ui';
407
-
408
- <Badge variant="success" dot>Active</Badge>
409
- <Badge variant="warning" size="sm">Beta</Badge>
410
-
411
- <Tag variant="primary" removable onRemove={() => handleRemove()}>
412
- React
413
- </Tag>
414
- ```
415
-
416
- ## Technical Notes
417
-
418
- ### Dependencies
419
- - No additional dependencies required
420
- - Uses existing Tailwind CSS configuration
421
- - Compatible with Next.js 15 and React 18
422
-
423
- ### Browser Support
424
- - Modern browsers (Chrome, Firefox, Safari, Edge)
425
- - Progressive enhancement for older browsers
426
- - Graceful degradation for unsupported features
427
-
428
- ### Performance
429
- - Minimal CSS footprint (SCSS compiled to CSS)
430
- - No runtime CSS-in-JS overhead
431
- - Optimized transitions (GPU-accelerated)
432
- - Tree-shakeable exports
433
-
434
- ## Conclusion
435
-
436
- Phase 1 (Foundation & Design Tokens) and Phase 2 (Core Component Library) are complete. The design system provides a solid foundation for building the remaining phases. All components are production-ready, accessible, and follow best practices.
437
-
438
- The implementation prioritizes:
439
- 1. **Accessibility** - WCAG 2.1 AA compliance from the start
440
- 2. **Developer Experience** - Consistent API, TypeScript support
441
- 3. **Performance** - Optimized animations, minimal overhead
442
- 4. **Maintainability** - Centralized tokens, clear structure
443
- 5. **Scalability** - Easy to extend and customize
444
-
445
- Next steps involve implementing the remaining phases (3-7) to complete the full design system transformation outlined in Issue #45.
@@ -1,30 +0,0 @@
1
- # OSSA Website - Next.js Dev Server (for quick deployment)
2
- # Build from project root to access examples directory
3
- FROM node:20-alpine
4
-
5
- WORKDIR /app
6
-
7
- # Copy package files
8
- COPY website/package*.json ./website/
9
- RUN cd website && npm install --legacy-peer-deps
10
-
11
- # Copy examples directory (needed for generate-examples script)
12
- COPY examples ./examples
13
-
14
- # Copy website source code
15
- COPY website ./website
16
-
17
- WORKDIR /app/website
18
-
19
- # Generate examples.json - this MUST succeed
20
- RUN npm run generate-examples
21
-
22
- # Verify examples.json was created and has content
23
- RUN test -f public/examples.json && echo "✅ examples.json created" || (echo "❌ examples.json NOT FOUND" && exit 1)
24
- RUN test -s public/examples.json && echo "✅ examples.json has content" || (echo "❌ examples.json is empty" && exit 1)
25
-
26
- # Expose port
27
- EXPOSE 3000
28
-
29
- # Start Next.js dev server
30
- CMD ["npm", "run", "dev"]