@bluefly/openstandardagents 0.2.7 → 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 (277) hide show
  1. package/.devfile.yaml +1 -1
  2. package/.env.example +1 -1
  3. package/.version.json +2 -2
  4. package/.wiki-config.json +24 -0
  5. package/CHANGELOG.md +11 -18
  6. package/CODEOWNERS +75 -0
  7. package/CONTRIBUTING.md +1 -1
  8. package/README.md +171 -243
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/repositories/schema.repository.d.ts +6 -1
  14. package/dist/repositories/schema.repository.d.ts.map +1 -1
  15. package/dist/repositories/schema.repository.js +49 -27
  16. package/dist/repositories/schema.repository.js.map +1 -1
  17. package/dist/services/migration.service.d.ts +4 -3
  18. package/dist/services/migration.service.d.ts.map +1 -1
  19. package/dist/services/migration.service.js +11 -10
  20. package/dist/services/migration.service.js.map +1 -1
  21. package/dist/services/release-automation/release.service.js +1 -1
  22. package/dist/services/release-automation/release.service.js.map +1 -1
  23. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  24. package/dist/services/runtime/claude/claude-adapter.js +1 -1
  25. package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
  26. package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
  27. package/dist/spec/v0.2.8/README.md +72 -0
  28. package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  29. package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  30. package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  31. 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
  32. package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  33. package/dist/types/index.d.ts +3 -2
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/utils/index.d.ts +6 -0
  36. package/dist/utils/index.d.ts.map +1 -0
  37. package/dist/utils/index.js +6 -0
  38. package/dist/utils/index.js.map +1 -0
  39. package/dist/utils/version.d.ts +68 -0
  40. package/dist/utils/version.d.ts.map +1 -0
  41. package/dist/utils/version.js +156 -0
  42. package/dist/utils/version.js.map +1 -0
  43. package/eslint-report.json +1 -0
  44. package/examples/adk-integration/code-review-workflow.yml +1 -1
  45. package/examples/adk-integration/customer-support.yml +1 -1
  46. package/examples/adk-integration/data-pipeline.yml +1 -1
  47. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  48. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  49. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  50. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  51. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  52. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  53. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  54. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  55. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  56. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  57. package/examples/autogen/multi-agent.ossa.json +1 -1
  58. package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
  59. package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
  60. package/examples/common_npm/agent-router.ossa.yaml +1 -0
  61. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  62. package/examples/crewai/research-team.ossa.json +1 -1
  63. package/examples/cursor/code-review-agent.ossa.json +1 -1
  64. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
  65. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  66. package/examples/extensions/drupal-v1.yml +1 -1
  67. package/examples/extensions/kagent-v1.yml +1 -1
  68. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  69. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  70. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  71. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  72. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  73. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
  74. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  75. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  76. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  77. package/examples/langchain/chain-agent.ossa.json +1 -1
  78. package/examples/langflow/workflow-agent.ossa.json +1 -1
  79. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  80. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  81. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  82. package/examples/multi-agent/README.md +74 -0
  83. package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
  84. package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
  85. package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
  86. package/examples/openai/basic-agent.ossa.yaml +1 -1
  87. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  88. package/examples/openai/swarm-agent.ossa.json +1 -1
  89. package/examples/production/document-analyzer-openai.yml +1 -1
  90. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  91. package/examples/spec-examples/audit-agent.yml +1 -1
  92. package/examples/spec-examples/chat-agent.yml +1 -1
  93. package/examples/spec-examples/compliance-agent.yml +1 -1
  94. package/examples/spec-examples/monitoring-agent.yml +1 -1
  95. package/examples/spec-examples/workflow-agent.yml +1 -1
  96. package/examples/templates/ossa-compliance.yaml +1 -1
  97. package/examples/vercel/edge-agent.ossa.json +1 -1
  98. package/gl-code-quality-report.json +62 -0
  99. package/llms-ctx-full.txt +39 -0
  100. package/llms-ctx.txt +39 -0
  101. package/llms.txt +47 -0
  102. package/package.json +3 -2
  103. package/scripts/eslint-to-codequality.cjs +34 -0
  104. package/scripts/generate-llms-ctx.sh +17 -0
  105. package/scripts/generate-schema-docs.ts +31 -10
  106. package/scripts/sync-version.js +4 -12
  107. package/scripts/validate-schema.ts +2 -1
  108. package/spec/v0.2.8/CHANGELOG.md +401 -0
  109. package/spec/v0.2.8/README.md +72 -0
  110. package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
  111. package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
  112. package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
  113. package/{dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json → spec/v0.2.8/ossa-0.2.8.schema.json} +1509 -52
  114. package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
  115. package/test-results/junit.xml +299 -0
  116. package/bin/validate-ossa-0.2.5-RC.ts +0 -244
  117. package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
  118. package/scripts/lib/exec.ts +0 -37
  119. package/scripts/lib/file-ops.ts +0 -58
  120. package/scripts/lib/version.ts +0 -83
  121. package/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
  122. package/website/.lighthouserc.ts +0 -24
  123. package/website/.prettierrc +0 -10
  124. package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +0 -445
  125. package/website/Dockerfile +0 -30
  126. package/website/app/about/page.tsx +0 -304
  127. package/website/app/blog/[slug]/page.tsx +0 -208
  128. package/website/app/blog/page.tsx +0 -249
  129. package/website/app/design-guide/page.tsx +0 -511
  130. package/website/app/docs/[[...slug]]/page.tsx +0 -847
  131. package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
  132. package/website/app/ecosystem/page.tsx +0 -410
  133. package/website/app/examples/page.tsx +0 -133
  134. package/website/app/globals.scss +0 -370
  135. package/website/app/layout.tsx +0 -106
  136. package/website/app/license/page.tsx +0 -183
  137. package/website/app/not-found.tsx +0 -18
  138. package/website/app/page.tsx +0 -686
  139. package/website/app/page.tsx.bak +0 -679
  140. package/website/app/page.tsx.bak2 +0 -649
  141. package/website/app/playground/page.tsx +0 -487
  142. package/website/app/robots.ts +0 -19
  143. package/website/app/rss.xml/route.ts +0 -74
  144. package/website/app/schema/page.tsx +0 -1001
  145. package/website/app/sitemap.ts +0 -56
  146. package/website/app/specification/page.tsx +0 -287
  147. package/website/components/InstallCommand.tsx +0 -96
  148. package/website/components/Logo.tsx +0 -97
  149. package/website/components/StructuredData.tsx +0 -65
  150. package/website/components/docs/DocsSearch.tsx +0 -104
  151. package/website/components/docs/DocsSidebar.tsx +0 -155
  152. package/website/components/docs/MarkdownContent.tsx +0 -401
  153. package/website/components/docs/VersionSelector.tsx +0 -105
  154. package/website/components/examples/ExamplesViewer.tsx +0 -293
  155. package/website/components/layout/Footer.tsx +0 -116
  156. package/website/components/layout/Header.tsx +0 -172
  157. package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
  158. package/website/components/schema/SchemaExplorer.tsx +0 -213
  159. package/website/components/ui/Badge.tsx +0 -82
  160. package/website/components/ui/Button.tsx +0 -116
  161. package/website/components/ui/Card.tsx +0 -167
  162. package/website/components/ui/Checkbox.tsx +0 -141
  163. package/website/components/ui/Input.tsx +0 -169
  164. package/website/components/ui/Radio.tsx +0 -141
  165. package/website/components/ui/Select.tsx +0 -182
  166. package/website/components/ui/Tag.tsx +0 -158
  167. package/website/components/ui/Textarea.tsx +0 -195
  168. package/website/components/ui/index.ts +0 -11
  169. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
  170. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
  171. package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
  172. package/website/content/blog/introducing-ossa-framework.md +0 -328
  173. package/website/content/blog/ossa-production-results.md +0 -279
  174. package/website/content/blog/welcome-to-ossa.md +0 -43
  175. package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
  176. package/website/content/docs/00-home.md +0 -153
  177. package/website/content/docs/adapters/openai-adapter.md +0 -693
  178. package/website/content/docs/agents/catalog.md +0 -28
  179. package/website/content/docs/aiflow-framework-integration-with-ossa.md +0 -107
  180. package/website/content/docs/api-reference/index.md +0 -38
  181. package/website/content/docs/api-reference/ossa-core-api.md +0 -634
  182. package/website/content/docs/api-reference/ossa-registry-api.md +0 -515
  183. package/website/content/docs/api-reference/unified-agent-gateway.md +0 -599
  184. package/website/content/docs/architecture/execution-flow.md +0 -335
  185. package/website/content/docs/architecture/multi-agent-systems.md +0 -737
  186. package/website/content/docs/architecture/overview.md +0 -121
  187. package/website/content/docs/architecture/stack-integration.md +0 -461
  188. package/website/content/docs/changelog.md +0 -246
  189. package/website/content/docs/cli-reference/index.md +0 -111
  190. package/website/content/docs/cli-reference/ossa-agents.md +0 -70
  191. package/website/content/docs/cli-reference/ossa-export.md +0 -56
  192. package/website/content/docs/cli-reference/ossa-generate.md +0 -66
  193. package/website/content/docs/cli-reference/ossa-gitlab-agent.md +0 -57
  194. package/website/content/docs/cli-reference/ossa-import.md +0 -56
  195. package/website/content/docs/cli-reference/ossa-init.md +0 -57
  196. package/website/content/docs/cli-reference/ossa-migrate.md +0 -62
  197. package/website/content/docs/cli-reference/ossa-run.md +0 -66
  198. package/website/content/docs/cli-reference/ossa-schema.md +0 -57
  199. package/website/content/docs/cli-reference/ossa-setup.md +0 -57
  200. package/website/content/docs/cli-reference/ossa-validate.md +0 -66
  201. package/website/content/docs/configuration/index.md +0 -97
  202. package/website/content/docs/contributing.md +0 -599
  203. package/website/content/docs/deployment/github-mirroring.md +0 -924
  204. package/website/content/docs/documentation.md +0 -100
  205. package/website/content/docs/ecosystem/framework-support.md +0 -1361
  206. package/website/content/docs/ecosystem/overview.md +0 -366
  207. package/website/content/docs/errors/index.md +0 -10
  208. package/website/content/docs/examples/aiflow-framework-integration-with-ossa.md +0 -107
  209. package/website/content/docs/examples/catalog.md +0 -300
  210. package/website/content/docs/for-audiences/students-researchers.md +0 -122
  211. package/website/content/docs/getting-started/index.md +0 -92
  212. package/website/content/docs/getting-started/installation.md +0 -155
  213. package/website/content/docs/getting-started/running-agents.md +0 -309
  214. package/website/content/docs/getting-started.md +0 -91
  215. package/website/content/docs/integrations/aiflow.md +0 -104
  216. package/website/content/docs/integrations/drupal.md +0 -105
  217. package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
  218. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
  219. package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
  220. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
  221. package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
  222. package/website/content/docs/migration-guides/index.md +0 -133
  223. package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
  224. package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
  225. package/website/content/docs/migration-guides/migration-manifest.json +0 -64
  226. package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
  227. package/website/content/docs/openapi-extensions/examples.md +0 -550
  228. package/website/content/docs/openapi-extensions/index.md +0 -551
  229. package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
  230. package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
  231. package/website/content/docs/ossa-compliant-badge.md +0 -251
  232. package/website/content/docs/pre-release/index.md +0 -175
  233. package/website/content/docs/quick-reference.md +0 -17
  234. package/website/content/docs/readme.md +0 -35
  235. package/website/content/docs/releases/v0.2.6.md +0 -99
  236. package/website/content/docs/schema-reference/agent-capabilities.md +0 -50
  237. package/website/content/docs/schema-reference/agent-id.md +0 -52
  238. package/website/content/docs/schema-reference/agent-name.md +0 -50
  239. package/website/content/docs/schema-reference/agent-role.md +0 -54
  240. package/website/content/docs/schema-reference/agent-spec.md +0 -406
  241. package/website/content/docs/schema-reference/agent-version.md +0 -50
  242. package/website/content/docs/schema-reference/autonomy.md +0 -568
  243. package/website/content/docs/schema-reference/constraints.md +0 -543
  244. package/website/content/docs/schema-reference/index.md +0 -45
  245. package/website/content/docs/schema-reference/llm-config.md +0 -445
  246. package/website/content/docs/schema-reference/observability.md +0 -654
  247. package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
  248. package/website/content/docs/schema-reference/taxonomy.md +0 -509
  249. package/website/content/docs/schema-reference/tools.md +0 -628
  250. package/website/content/docs/templates/blog-post.md +0 -43
  251. package/website/content/docs/types-reference/index.md +0 -105
  252. package/website/content/docs/use-cases/00-index.md +0 -395
  253. package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
  254. package/website/content/docs/use-cases/customer-support.md +0 -1234
  255. package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
  256. package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
  257. package/website/content/docs/versioning.md +0 -288
  258. package/website/dev.sh +0 -53
  259. package/website/docker-compose.dev.yml +0 -36
  260. package/website/lib/version.ts +0 -35
  261. package/website/lib/versions.json +0 -103
  262. package/website/next.config.ts +0 -18
  263. package/website/nginx.conf +0 -32
  264. package/website/package-lock.json +0 -9679
  265. package/website/package.json +0 -59
  266. package/website/postcss.config.mjs +0 -9
  267. package/website/scripts/fetch-versions.js +0 -166
  268. package/website/scripts/generate-examples-index.js +0 -163
  269. package/website/scripts/merge-docs-to-wiki.ts +0 -207
  270. package/website/scripts/sync-version.js +0 -72
  271. package/website/scripts/sync-wiki.ts +0 -322
  272. package/website/scripts/upload-wiki.ts +0 -199
  273. package/website/styles/_spacing.scss +0 -453
  274. package/website/styles/_tokens.scss +0 -245
  275. package/website/styles/_typography.scss +0 -361
  276. package/website/styles/_variables.scss +0 -287
  277. 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
-