@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,56 +0,0 @@
1
- import { MetadataRoute } from 'next';
2
- import fs from 'fs';
3
- import path from 'path';
4
-
5
- export const dynamic = 'force-static';
6
-
7
- function getAllPages(): string[] {
8
- const pages: string[] = ['', '/docs', '/playground', '/examples', '/schema', '/blog'];
9
-
10
- // Add blog posts
11
- const blogDir = path.join(process.cwd(), '../content/blog');
12
- if (fs.existsSync(blogDir)) {
13
- const files = fs.readdirSync(blogDir);
14
- files
15
- .filter((file) => file.endsWith('.md'))
16
- .forEach((file) => {
17
- pages.push(`/blog/${file.replace(/\.md$/, '')}`);
18
- });
19
- }
20
-
21
- // Add docs pages
22
- const docsDir = path.join(process.cwd(), '../../.gitlab/wiki-content');
23
- if (fs.existsSync(docsDir)) {
24
- const traverseDir = (dir: string, basePath = ''): void => {
25
- const entries = fs.readdirSync(dir, { withFileTypes: true });
26
- for (const entry of entries) {
27
- if (entry.isDirectory()) {
28
- traverseDir(path.join(dir, entry.name), `${basePath}/${entry.name}`);
29
- } else if (entry.isFile() && entry.name.endsWith('.md')) {
30
- const slug = entry.name.replace(/\.md$/, '');
31
- if (slug !== 'index') {
32
- pages.push(`/docs${basePath}/${slug}`);
33
- } else if (basePath) {
34
- pages.push(`/docs${basePath}`);
35
- }
36
- }
37
- }
38
- }
39
- traverseDir(docsDir);
40
- }
41
-
42
- return pages;
43
- }
44
-
45
- export default function sitemap(): MetadataRoute.Sitemap {
46
- const baseUrl = 'https://openstandardagents.org';
47
- const pages = getAllPages();
48
-
49
- return pages.map((page) => ({
50
- url: `${baseUrl}${page === '' ? '' : page}`,
51
- lastModified: new Date(),
52
- changeFrequency: page.startsWith('/blog') ? 'weekly' : 'monthly',
53
- priority: page === '' ? 1.0 : page.startsWith('/docs') ? 0.9 : 0.8,
54
- }));
55
- }
56
-
@@ -1,287 +0,0 @@
1
- import Link from 'next/link';
2
- import type { Metadata } from 'next';
3
- import { STABLE_VERSION_TAG, STABLE_VERSION } from '@/lib/version';
4
-
5
- export const metadata: Metadata = {
6
- title: 'Specification - Open Standard Agents',
7
- description: 'The complete Open Standard Agents specification documentation.',
8
- };
9
-
10
- export default function SpecificationPage() {
11
- return (
12
- <>
13
- {/* Hero Section */}
14
- <div className="bg-gradient-to-br from-secondary via-primary to-accent text-white py-16 px-4">
15
- <div className="container mx-auto max-w-6xl text-center">
16
- <div className="inline-flex items-center justify-center w-20 h-20 bg-white/20 backdrop-blur-sm rounded-full mb-6">
17
- <svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
18
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
19
- </svg>
20
- </div>
21
- <h1 className="text-5xl font-bold mb-4">OSSA Specification</h1>
22
- <p className="text-xl text-white/90 mb-2">
23
- Complete technical specification for defining, validating, and deploying AI agents
24
- </p>
25
- <p className="text-lg text-white/80">
26
- Version {STABLE_VERSION_TAG} • The OpenAPI for AI Agents
27
- </p>
28
- </div>
29
- </div>
30
-
31
- <div className="container mx-auto max-w-7xl px-4 py-12">
32
- <div className="max-w-4xl mx-auto">
33
- {/* Current Version Highlighted Block */}
34
- <section className="mb-12">
35
- <div className="bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50 rounded-2xl p-8 border-2 border-blue-200 shadow-lg">
36
- <div className="flex items-center justify-between mb-6">
37
- <div>
38
- <h2 className="text-3xl font-bold mb-2 text-primary">Current Version</h2>
39
- <h3 className="text-2xl font-semibold mb-2 text-gray-900">{STABLE_VERSION_TAG}</h3>
40
- <p className="text-gray-700">Latest stable release</p>
41
- </div>
42
- <Link href="/schema" className="btn-primary whitespace-nowrap">
43
- View Schema
44
- </Link>
45
- </div>
46
- <div className="grid md:grid-cols-2 gap-6 mt-6 pt-6 border-t-2 border-blue-200">
47
- <div>
48
- <h4 className="font-bold mb-2 text-gray-900">Release Date</h4>
49
- <p className="text-gray-700 text-lg">November 2024</p>
50
- </div>
51
- <div>
52
- <h4 className="font-bold mb-2 text-gray-900">Status</h4>
53
- <span className="inline-block px-4 py-2 bg-green-100 text-green-800 rounded-full text-sm font-semibold border-2 border-green-300">
54
- Stable
55
- </span>
56
- </div>
57
- </div>
58
- </div>
59
- </section>
60
-
61
- {/* Why This Specification? */}
62
- <section className="mb-16">
63
- <div className="bg-gradient-to-br from-amber-50 via-orange-50 to-yellow-50 rounded-2xl p-8">
64
- <div className="flex items-start mb-6">
65
- <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
66
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
67
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
68
- </svg>
69
- </div>
70
- <div>
71
- <h2 className="text-3xl font-bold mb-4 text-gray-900">Why This Specification?</h2>
72
- <div className="space-y-4 text-lg text-gray-700">
73
- <p>
74
- <strong className="text-primary">The Problem:</strong> Every AI framework defines agents differently.
75
- LangChain has "chains," CrewAI has "crews," OpenAI has "assistants," Anthropic has different tools.
76
- This creates <span className="text-red-600 font-semibold">vendor lock-in</span> and makes it impossible to share agents between teams or frameworks.
77
- </p>
78
- <p>
79
- <strong className="text-secondary">The Solution:</strong> OSSA provides a single, standard way to describe agents that works everywhere.
80
- Like OpenAPI revolutionized REST APIs, OSSA revolutionizes AI agents with a vendor-neutral specification.
81
- </p>
82
- <p>
83
- <strong className="text-primary">The Result:</strong> Write your agent definition once, deploy it to any framework.
84
- Switch providers without rewriting code. Share agents across organizations. True portability and interoperability.
85
- </p>
86
- </div>
87
- </div>
88
- </div>
89
- </div>
90
- </section>
91
-
92
- <section className="mb-12">
93
- <div className="flex items-center mb-8">
94
- <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4">
95
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
96
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />
97
- </svg>
98
- </div>
99
- <h2 className="text-3xl font-bold text-primary">Specification Structure</h2>
100
- </div>
101
- <div className="space-y-4">
102
- <div className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
103
- <h3 className="text-xl font-bold mb-3 text-primary">1. Core Specification</h3>
104
- <p className="text-gray-700 mb-4">
105
- The fundamental structure of an OSA agent manifest, including metadata, specification,
106
- and extensions.
107
- </p>
108
- <Link href="/docs/getting-started/first-agent" className="text-primary hover:text-secondary font-semibold inline-flex items-center">
109
- Read Core Specification →
110
- </Link>
111
- </div>
112
-
113
- <div className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
114
- <h3 className="text-xl font-bold mb-3 text-primary">2. Schema Reference</h3>
115
- <p className="text-gray-700 mb-4">
116
- Complete JSON Schema definition with all properties, types, constraints, and validation rules.
117
- </p>
118
- <Link href="/schema" className="text-primary hover:text-secondary font-semibold inline-flex items-center">
119
- Explore Schema →
120
- </Link>
121
- </div>
122
-
123
- <div className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
124
- <h3 className="text-xl font-bold mb-3 text-primary">3. Platform Extensions</h3>
125
- <p className="text-gray-700 mb-4">
126
- Framework-specific extensions for Cursor, OpenAI, CrewAI, LangChain, Anthropic,
127
- Langflow, AutoGen, and more.
128
- </p>
129
- <Link href="/docs/examples/migration-guides" className="text-primary hover:text-secondary font-semibold inline-flex items-center">
130
- View Extensions →
131
- </Link>
132
- </div>
133
-
134
- <div className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
135
- <h3 className="text-xl font-bold mb-3 text-primary">4. Validation Rules</h3>
136
- <p className="text-gray-700 mb-4">
137
- Comprehensive validation rules, error messages, and best practices for creating valid agent manifests.
138
- </p>
139
- <Link href="/playground" className="text-primary hover:text-secondary font-semibold inline-flex items-center">
140
- Try Validation →
141
- </Link>
142
- </div>
143
- </div>
144
- </section>
145
-
146
- <section className="mb-12">
147
- <div className="flex items-center mb-8">
148
- <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4">
149
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
150
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
151
- </svg>
152
- </div>
153
- <h2 className="text-3xl font-bold text-primary">Key Concepts</h2>
154
- </div>
155
- <div className="space-y-6">
156
- <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
157
- <h3 className="text-xl font-bold mb-3 text-primary">Agent Manifest</h3>
158
- <p className="text-gray-700 mb-4">
159
- A YAML or JSON file that describes an AI agent, including its role, LLM configuration,
160
- tools, and deployment requirements.
161
- </p>
162
- <div className="bg-gray-900 rounded-lg p-4 mt-3 border-2 border-gray-700">
163
- <pre className="text-green-400 text-sm overflow-x-auto font-mono">
164
- <code>{`apiVersion: ossa/v${STABLE_VERSION}
165
- kind: Agent
166
- metadata:
167
- name: my-agent
168
- spec:
169
- role: You are a helpful assistant
170
- llm:
171
- provider: openai
172
- model: gpt-4`}</code>
173
- </pre>
174
- </div>
175
- </div>
176
-
177
- <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
178
- <h3 className="text-xl font-bold mb-3 text-primary">Schema Validation</h3>
179
- <p className="text-gray-700">
180
- Every agent manifest must conform to the OSA JSON Schema. Validation ensures correctness,
181
- completeness, and compatibility before deployment.
182
- </p>
183
- </div>
184
-
185
- <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
186
- <h3 className="text-xl font-bold mb-3 text-primary">Platform Extensions</h3>
187
- <p className="text-gray-700">
188
- Framework-specific extensions allow agents to leverage platform-specific features while
189
- maintaining core OSA compatibility.
190
- </p>
191
- </div>
192
-
193
- <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
194
- <h3 className="text-xl font-bold mb-3 text-primary">Export/Import</h3>
195
- <p className="text-gray-700">
196
- Convert OSA manifests to framework-specific formats (export) or import existing agents
197
- into OSA format for standardization.
198
- </p>
199
- </div>
200
- </div>
201
- </section>
202
-
203
- <section className="mb-12">
204
- <div className="flex items-center mb-8">
205
- <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4">
206
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
207
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
208
- </svg>
209
- </div>
210
- <h2 className="text-3xl font-bold text-primary">Version History</h2>
211
- </div>
212
- <div className="space-y-4">
213
- <div className="bg-gradient-to-br from-blue-50 to-indigo-50 border-2 border-primary rounded-xl p-6 shadow-lg">
214
- <div className="flex items-center justify-between mb-2">
215
- <h3 className="text-xl font-bold text-gray-900">{STABLE_VERSION_TAG}</h3>
216
- <span className="px-4 py-2 bg-green-100 text-green-800 rounded-full text-sm font-semibold border-2 border-green-300">
217
- Current
218
- </span>
219
- </div>
220
- <p className="text-gray-700 mb-2 font-medium">November 2024</p>
221
- <p className="text-gray-700">
222
- Enhanced platform extensions, improved validation, and expanded tool support.
223
- </p>
224
- </div>
225
-
226
- <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
227
- <div className="flex items-center justify-between mb-2">
228
- <h3 className="text-xl font-semibold text-gray-900">v0.2.6</h3>
229
- <span className="px-3 py-1 bg-gray-200 text-gray-700 rounded-full text-sm font-medium">
230
- Previous
231
- </span>
232
- </div>
233
- <p className="text-gray-700 mb-2">October 2024</p>
234
- <p className="text-gray-700">
235
- Initial platform extensions and improved schema structure.
236
- </p>
237
- </div>
238
-
239
- <div className="bg-white border-2 border-gray-200 rounded-xl p-6 shadow-md">
240
- <div className="flex items-center justify-between mb-2">
241
- <h3 className="text-xl font-semibold text-gray-900">v0.1.9</h3>
242
- <span className="px-3 py-1 bg-gray-200 text-gray-700 rounded-full text-sm font-medium">
243
- Legacy
244
- </span>
245
- </div>
246
- <p className="text-gray-700 mb-2">September 2024</p>
247
- <p className="text-gray-700">
248
- Initial release with basic agent definition structure.
249
- </p>
250
- </div>
251
- </div>
252
- </section>
253
-
254
- <section className="mb-12">
255
- <div className="flex items-center mb-8">
256
- <div className="w-12 h-12 bg-gradient-to-br from-secondary via-primary to-accent rounded-lg flex items-center justify-center mr-4">
257
- <svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
258
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
259
- </svg>
260
- </div>
261
- <h2 className="text-3xl font-bold text-primary">Resources</h2>
262
- </div>
263
- <div className="grid md:grid-cols-2 gap-4">
264
- <Link href="/schema" className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
265
- <h3 className="text-xl font-bold mb-2 text-primary">Interactive Schema Explorer</h3>
266
- <p className="text-gray-700">Explore the complete JSON Schema interactively.</p>
267
- </Link>
268
- <Link href="/playground" className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
269
- <h3 className="text-xl font-bold mb-2 text-primary">Validation Playground</h3>
270
- <p className="text-gray-700">Test and validate your agent manifests in real-time.</p>
271
- </Link>
272
- <Link href="/examples" className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
273
- <h3 className="text-xl font-bold mb-2 text-primary">Examples Gallery</h3>
274
- <p className="text-gray-700">Browse real-world examples and use cases.</p>
275
- </Link>
276
- <Link href="/docs" className="bg-white border-2 border-blue-100 rounded-xl p-6 shadow-md hover:shadow-xl hover:border-primary transition-all duration-300">
277
- <h3 className="text-xl font-bold mb-2 text-primary">Full Documentation</h3>
278
- <p className="text-gray-700">Comprehensive guides and tutorials.</p>
279
- </Link>
280
- </div>
281
- </section>
282
- </div>
283
- </div>
284
- </>
285
- );
286
- }
287
-
@@ -1,96 +0,0 @@
1
- 'use client';
2
-
3
- import { useState } from 'react';
4
-
5
- export function InstallCommand() {
6
- const [copiedIndex, setCopiedIndex] = useState<number | null>(null);
7
-
8
- const steps = [
9
- {
10
- title: '1. Install',
11
- command: 'npm install -g @bluefly/openstandardagents',
12
- },
13
- {
14
- title: '2. Create',
15
- command: 'osa init my-agent',
16
- },
17
- {
18
- title: '3. Validate',
19
- command: 'osa validate my-agent.ossa.yaml',
20
- },
21
- {
22
- title: '4. Export',
23
- command: 'osa export --to langchain',
24
- },
25
- ];
26
-
27
- const copyToClipboard = async (command: string, index: number) => {
28
- try {
29
- await navigator.clipboard.writeText(command);
30
- setCopiedIndex(index);
31
- setTimeout(() => setCopiedIndex(null), 2000);
32
- } catch (err) {
33
- console.error('Failed to copy:', err);
34
- }
35
- };
36
-
37
- return (
38
- <div className="bg-gradient-to-r from-primary to-secondary text-white rounded-lg p-8 shadow-xl">
39
- <div className="container mx-auto max-w-6xl">
40
- <h3 className="text-2xl font-bold mb-2">Get Started in Minutes</h3>
41
- <p className="text-lg mb-6 opacity-90">
42
- Install the CLI, create your first agent, and start building with OSSA
43
- </p>
44
-
45
- <div className="grid md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6">
46
- {steps.map((step, index) => (
47
- <div key={index} className="bg-white/10 backdrop-blur-sm rounded-lg p-4">
48
- <h4 className="font-semibold mb-2 text-sm">{step.title}</h4>
49
- <div className="bg-black/30 rounded p-2 flex items-start justify-between gap-2">
50
- <code className="text-xs font-mono text-white flex-1 break-all">
51
- {step.command}
52
- </code>
53
- <button
54
- onClick={() => copyToClipboard(step.command, index)}
55
- className="flex-shrink-0 p-1 hover:bg-white/20 rounded transition-colors"
56
- aria-label="Copy command"
57
- >
58
- {copiedIndex === index ? (
59
- <svg className="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
60
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
61
- </svg>
62
- ) : (
63
- <svg className="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
64
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
65
- </svg>
66
- )}
67
- </button>
68
- </div>
69
- </div>
70
- ))}
71
- </div>
72
-
73
- <div className="flex flex-wrap gap-4 text-sm">
74
- <a href="/docs/getting-started/5-minute-overview" className="text-white hover:underline flex items-center gap-2">
75
- <svg className="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
76
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
77
- </svg>
78
- Quick Start Guide
79
- </a>
80
- <a href="/examples" className="text-white hover:underline flex items-center gap-2">
81
- <svg className="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
82
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" />
83
- </svg>
84
- View Examples
85
- </a>
86
- <a href="/docs" className="text-white hover:underline flex items-center gap-2">
87
- <svg className="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
88
- <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
89
- </svg>
90
- Full Documentation
91
- </a>
92
- </div>
93
- </div>
94
- </div>
95
- );
96
- }
@@ -1,97 +0,0 @@
1
- 'use client';
2
-
3
- interface LogoProps {
4
- domain: string;
5
- name: string;
6
- }
7
-
8
- // Special handling for domains that don't work with clearbit
9
- // Use SimpleIcons or direct logo URLs where available
10
- const LOGO_FALLBACKS: Record<string, string> = {
11
- 'kagent.dev': 'https://www.google.com/s2/favicons?sz=256&domain=kagent.dev',
12
- 'langchain.com': 'https://simpleicons.org/icons/langchain.svg',
13
- 'crewai.com': 'https://www.google.com/s2/favicons?sz=128&domain=crewai.com',
14
- 'llamaindex.ai': 'https://www.google.com/s2/favicons?sz=128&domain=llamaindex.ai',
15
- 'modelcontextprotocol.io': 'https://simpleicons.org/icons/anthropic.svg',
16
- 'librechat.com': 'https://simpleicons.org/icons/react.svg',
17
- 'langflow.com': 'https://simpleicons.org/icons/python.svg',
18
- 'openai.com': 'https://simpleicons.org/icons/openai.svg',
19
- 'anthropic.com': 'https://simpleicons.org/icons/anthropic.svg',
20
- 'cursor.sh': 'https://simpleicons.org/icons/cursor.svg',
21
- 'microsoft.com': 'https://www.google.com/s2/favicons?sz=256&domain=microsoft.com',
22
- 'vercel.com': 'https://simpleicons.org/icons/vercel.svg',
23
- 'drupal.org': 'https://simpleicons.org/icons/drupal.svg',
24
- 'huggingface.co': 'https://simpleicons.org/icons/huggingface.svg',
25
- 'google.com': 'https://simpleicons.org/icons/google.svg',
26
- 'deepmind.google': 'https://www.google.com/s2/favicons?sz=256&domain=deepmind.google',
27
- 'aws.amazon.com': 'https://www.google.com/s2/favicons?sz=128&domain=aws.amazon.com',
28
- 'azure.com': 'https://simpleicons.org/icons/microsoftazure.svg',
29
- 'github.com': 'https://simpleicons.org/icons/github.svg',
30
- 'docker.com': 'https://simpleicons.org/icons/docker.svg',
31
- 'kubernetes.io': 'https://simpleicons.org/icons/kubernetes.svg',
32
- };
33
-
34
- export function Logo({ domain, name }: LogoProps) {
35
- const getLogoSrc = () => {
36
- // Check for name-based fallbacks first (for cases where domain is shared)
37
- if (name === 'LangGraph' && domain === 'langchain.com') {
38
- return 'https://simpleicons.org/icons/langchain.svg';
39
- }
40
- if (name === 'LlamaIndex') {
41
- return 'https://www.google.com/s2/favicons?sz=128&domain=llamaindex.ai';
42
- }
43
- if (name === 'CrewAI') {
44
- return 'https://www.google.com/s2/favicons?sz=128&domain=crewai.com';
45
- }
46
- if (name === 'AutoGen') {
47
- return 'https://www.google.com/s2/favicons?sz=256&domain=microsoft.com';
48
- }
49
- if (name === 'Vercel AI') {
50
- return 'https://simpleicons.org/icons/vercel.svg';
51
- }
52
- if (name === 'MCP') {
53
- return 'https://simpleicons.org/icons/anthropic.svg';
54
- }
55
- if (name === 'Kagent' || name === 'kAgent') {
56
- return 'https://www.google.com/s2/favicons?sz=256&domain=kagent.dev';
57
- }
58
- if (name === 'AWS') {
59
- return 'https://www.google.com/s2/favicons?sz=128&domain=aws.amazon.com';
60
- }
61
- if (name === 'Microsoft') {
62
- return 'https://www.google.com/s2/favicons?sz=256&domain=microsoft.com';
63
- }
64
- if (name === 'Gemini') {
65
- return 'https://www.google.com/s2/favicons?sz=256&domain=deepmind.google';
66
- }
67
- // Check domain-based fallbacks
68
- if (LOGO_FALLBACKS[domain]) {
69
- return LOGO_FALLBACKS[domain];
70
- }
71
- return `https://logo.clearbit.com/${domain}`;
72
- };
73
-
74
- const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {
75
- // Try Google favicon service as fallback
76
- const fallbackSrc = `https://www.google.com/s2/favicons?sz=256&domain=${domain}`;
77
- if (e.currentTarget.src !== fallbackSrc) {
78
- e.currentTarget.src = fallbackSrc;
79
- } else {
80
- // If both fail, use a placeholder
81
- e.currentTarget.src = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiByeD0iNCIgZmlsbD0iI0U1RTdFQiIvPgo8cGF0aCBkPSJNMTIgOEMxMy4xIDggMTQgOC45IDE0IDEwQzE0IDExLjEgMTMuMSAxMiAxMiAxMkMxMC45IDEyIDEwIDExLjEgMTAgMTBDMTAgOC45IDEwLjkgOCAxMiA4Wk0xMiAxNEMxMy4xIDE0IDE0IDE0LjkgMTQgMTZDMTQgMTcuMSAxMy4xIDE4IDEyIDE4QzEwLjkgMTggMTAgMTcuMSAxMCAxNkMxMCAxNC45IDEwLjkgMTQgMTIgMTRaIiBmaWxsPSIjOUI5Q0E0Ii8+Cjwvc3ZnPgo=';
82
- }
83
- };
84
-
85
- return (
86
- <div className="flex flex-col items-center gap-3 p-4 hover:bg-white rounded-lg transition-all">
87
- <img
88
- src={getLogoSrc()}
89
- alt={name}
90
- className="h-12 w-12 object-contain"
91
- style={{ filter: 'grayscale(100%) contrast(1.2)' }}
92
- onError={handleError}
93
- />
94
- <span className="text-sm font-medium text-gray-600">{name}</span>
95
- </div>
96
- );
97
- }
@@ -1,65 +0,0 @@
1
- interface StructuredDataProps {
2
- type: 'Organization' | 'WebSite' | 'Article';
3
- data: Record<string, any>;
4
- }
5
-
6
- export function StructuredData({ type, data }: StructuredDataProps) {
7
- const baseUrl = 'https://openstandardagents.org';
8
-
9
- const getStructuredData = (): object => {
10
- switch (type) {
11
- case 'Organization':
12
- return {
13
- '@context': 'https://schema.org',
14
- '@type': 'Organization',
15
- name: 'OSSA Standards Team',
16
- url: baseUrl,
17
- logo: `${baseUrl}/assets/brand/ossa-logo.svg`,
18
- sameAs: [
19
- 'https://github.com/blueflyio/openstandardagents',
20
- 'https://www.npmjs.com/package/@bluefly/openstandardagents',
21
- ],
22
- ...data,
23
- };
24
- case 'WebSite':
25
- return {
26
- '@context': 'https://schema.org',
27
- '@type': 'WebSite',
28
- name: 'OSSA',
29
- url: baseUrl,
30
- description: 'Open Standard for Scalable AI Agents - The OpenAPI for AI Agents',
31
- ...data,
32
- };
33
- case 'Article':
34
- return {
35
- '@context': 'https://schema.org',
36
- '@type': 'Article',
37
- headline: data.title,
38
- datePublished: data.date,
39
- author: {
40
- '@type': 'Person',
41
- name: data.author || 'OSSA Team',
42
- },
43
- publisher: {
44
- '@type': 'Organization',
45
- name: 'OSSA Standards Team',
46
- logo: {
47
- '@type': 'ImageObject',
48
- url: `${baseUrl}/logo.png`,
49
- },
50
- },
51
- ...data,
52
- };
53
- default:
54
- return {};
55
- }
56
- };
57
-
58
- return (
59
- <script
60
- type="application/ld+json"
61
- dangerouslySetInnerHTML={{ __html: JSON.stringify(getStructuredData()) }}
62
- />
63
- );
64
- }
65
-