@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.
- package/.devfile.yaml +1 -1
- package/.env.example +1 -1
- package/.github/AGENTS.md +245 -0
- package/.github/agents/github-issue-triage.ossa.yaml +99 -0
- package/.github/agents/github-pr-triage.ossa.yaml +137 -0
- package/.github/workflows/issue-sync-to-gitlab.yml +138 -0
- package/.github/workflows/pr-triage-to-gitlab.yml +164 -0
- package/.version.json +2 -2
- package/.wiki-config.json +24 -0
- package/CHANGELOG.md +44 -18
- package/CODEOWNERS +75 -0
- package/CONTRIBUTING.md +103 -4
- package/README.md +178 -243
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/repositories/schema.repository.d.ts +6 -1
- package/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +49 -27
- package/dist/repositories/schema.repository.js.map +1 -1
- package/dist/services/migration.service.d.ts +4 -3
- package/dist/services/migration.service.d.ts.map +1 -1
- package/dist/services/migration.service.js +11 -10
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/release-automation/release.service.js +1 -1
- package/dist/services/release-automation/release.service.js.map +1 -1
- package/dist/services/release-automation/schemas/release.schema.js +1 -1
- package/dist/services/release-automation/webhook.service.js +3 -3
- package/dist/services/release-automation/webhook.service.js.map +1 -1
- package/dist/services/runtime/claude/claude-adapter.d.ts +1 -1
- package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -1
- package/dist/services/runtime/claude/claude-adapter.js +2 -2
- package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
- package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.8/README.md +72 -0
- package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- 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
- package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/dist/spec/v0.2.9/a2a-protocol.md +1337 -0
- package/dist/spec/v0.2.9/agent.md +1946 -0
- package/dist/spec/v0.2.9/capabilities/index.yaml +25 -0
- package/dist/spec/v0.2.9/capabilities/memory.yaml +251 -0
- package/dist/spec/v0.2.9/capability-schema.md +576 -0
- package/dist/spec/v0.2.9/compliance-profiles.md +533 -0
- package/dist/spec/v0.2.9/conformance-testing.md +1527 -0
- package/dist/spec/v0.2.9/gitlab-duo-integration.md +621 -0
- package/dist/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
- package/dist/spec/v0.2.9/runtime-semantics.md +464 -0
- package/dist/spec/v0.2.9/security-model.md +1245 -0
- package/dist/spec/v0.2.9/semantic-conventions.md +347 -0
- package/dist/spec/v0.2.9/types.ts +522 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/policy.d.ts +377 -0
- package/dist/types/policy.d.ts.map +1 -0
- package/dist/types/policy.js +84 -0
- package/dist/types/policy.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/version.d.ts +68 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +156 -0
- package/dist/utils/version.js.map +1 -0
- package/docs/specs/policy-dsl.md +925 -0
- package/eslint-report.json +1 -0
- package/examples/adk-integration/code-review-workflow.yml +1 -1
- package/examples/adk-integration/customer-support.yml +1 -1
- package/examples/adk-integration/data-pipeline.yml +1 -1
- package/examples/advanced/reasoning-agent.yaml +136 -0
- package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
- package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
- package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
- package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
- package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
- package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
- package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
- package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
- package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
- package/examples/agents-md/code-agent.ossa.json +100 -0
- package/examples/agents-md/monorepo-agent.ossa.yaml +180 -0
- package/examples/anthropic/claude-assistant.ossa.json +1 -1
- package/examples/autogen/multi-agent.ossa.json +1 -1
- package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
- package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
- package/examples/common_npm/agent-router.ossa.yaml +1 -0
- package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
- package/examples/crewai/research-team.ossa.json +1 -1
- package/examples/cursor/code-review-agent.ossa.json +1 -1
- package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
- package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
- package/examples/extensions/agents-md-v1.yml +175 -0
- package/examples/extensions/drupal-v1.yml +1 -1
- package/examples/extensions/kagent-v1.yml +1 -1
- package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
- package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
- package/examples/kagent/compliance-validator.ossa.yaml +1 -1
- package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
- package/examples/kagent/documentation-agent.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
- package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
- package/examples/kagent/security-scanner.ossa.yaml +1 -1
- package/examples/langchain/chain-agent.ossa.json +1 -1
- package/examples/langflow/workflow-agent.ossa.json +1 -1
- package/examples/langgraph/state-machine-agent.ossa.json +1 -1
- package/examples/llamaindex/rag-agent.ossa.json +1 -1
- package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
- package/examples/multi-agent/README.md +74 -0
- package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
- package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
- package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
- package/examples/openai/basic-agent.ossa.yaml +1 -1
- package/examples/openai/multi-tool-agent.ossa.json +1 -1
- package/examples/openai/swarm-agent.ossa.json +1 -1
- package/examples/production/document-analyzer-openai.yml +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/spec-examples/audit-agent.yml +1 -1
- package/examples/spec-examples/chat-agent.yml +1 -1
- package/examples/spec-examples/compliance-agent.yml +1 -1
- package/examples/spec-examples/monitoring-agent.yml +1 -1
- package/examples/spec-examples/workflow-agent.yml +1 -1
- package/examples/templates/ossa-compliance.yaml +1 -1
- package/examples/vercel/edge-agent.ossa.json +1 -1
- package/gl-code-quality-report.json +62 -0
- package/llms-ctx-full.txt +39 -0
- package/llms-ctx.txt +39 -0
- package/llms.txt +47 -0
- package/package.json +6 -3
- package/scripts/README.md +25 -0
- package/scripts/compliance-audit.ts +796 -0
- package/scripts/eslint-to-codequality.cjs +34 -0
- package/scripts/generate-agents-catalog.ts +2 -1
- package/scripts/generate-api-docs.ts +2 -1
- package/scripts/generate-examples-docs.ts +2 -1
- package/scripts/generate-llms-ctx.sh +17 -0
- package/scripts/generate-schema-docs.ts +31 -10
- package/scripts/sync-version.js +4 -12
- package/scripts/validate-schema.ts +2 -1
- package/spec/v0.2.8/CHANGELOG.md +401 -0
- package/spec/v0.2.8/README.md +72 -0
- package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/spec/{v0.2.6-dev/ossa-0.2.6-dev.schema.json → v0.2.8/ossa-0.2.8.schema.json} +1509 -52
- package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/spec/v0.2.9/a2a-protocol.md +1337 -0
- package/spec/v0.2.9/agent.md +1946 -0
- package/spec/v0.2.9/capabilities/index.yaml +25 -0
- package/spec/v0.2.9/capabilities/memory.yaml +251 -0
- package/spec/v0.2.9/capability-schema.md +576 -0
- package/spec/v0.2.9/compliance-profiles.md +533 -0
- package/spec/v0.2.9/conformance-testing.md +1527 -0
- package/spec/v0.2.9/gitlab-duo-integration.md +621 -0
- package/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
- package/spec/v0.2.9/runtime-semantics.md +464 -0
- package/spec/v0.2.9/security-model.md +1245 -0
- package/spec/v0.2.9/semantic-conventions.md +347 -0
- package/spec/v0.2.9/types.ts +522 -0
- package/test-results/junit.xml +337 -0
- package/.github/workflows/pr-comment.yml +0 -33
- package/bin/validate-ossa-0.2.5-RC.ts +0 -244
- package/dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json +0 -1696
- package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
- package/scripts/lib/exec.ts +0 -37
- package/scripts/lib/file-ops.ts +0 -58
- package/scripts/lib/version.ts +0 -83
- package/website/.lighthouserc.ts +0 -24
- package/website/.prettierrc +0 -10
- package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +0 -445
- package/website/Dockerfile +0 -30
- package/website/app/about/page.tsx +0 -304
- package/website/app/blog/[slug]/page.tsx +0 -208
- package/website/app/blog/page.tsx +0 -249
- package/website/app/design-guide/page.tsx +0 -511
- package/website/app/docs/[[...slug]]/page.tsx +0 -847
- package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
- package/website/app/ecosystem/page.tsx +0 -410
- package/website/app/examples/page.tsx +0 -133
- package/website/app/globals.scss +0 -370
- package/website/app/layout.tsx +0 -106
- package/website/app/license/page.tsx +0 -183
- package/website/app/not-found.tsx +0 -18
- package/website/app/page.tsx +0 -686
- package/website/app/page.tsx.bak +0 -679
- package/website/app/page.tsx.bak2 +0 -649
- package/website/app/playground/page.tsx +0 -487
- package/website/app/robots.ts +0 -19
- package/website/app/rss.xml/route.ts +0 -74
- package/website/app/schema/page.tsx +0 -1001
- package/website/app/sitemap.ts +0 -56
- package/website/app/specification/page.tsx +0 -287
- package/website/components/InstallCommand.tsx +0 -96
- package/website/components/Logo.tsx +0 -97
- package/website/components/StructuredData.tsx +0 -65
- package/website/components/docs/DocsSearch.tsx +0 -104
- package/website/components/docs/DocsSidebar.tsx +0 -155
- package/website/components/docs/MarkdownContent.tsx +0 -401
- package/website/components/docs/VersionSelector.tsx +0 -105
- package/website/components/examples/ExamplesViewer.tsx +0 -293
- package/website/components/layout/Footer.tsx +0 -116
- package/website/components/layout/Header.tsx +0 -172
- package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
- package/website/components/schema/SchemaExplorer.tsx +0 -213
- package/website/components/ui/Badge.tsx +0 -82
- package/website/components/ui/Button.tsx +0 -116
- package/website/components/ui/Card.tsx +0 -167
- package/website/components/ui/Checkbox.tsx +0 -141
- package/website/components/ui/Input.tsx +0 -169
- package/website/components/ui/Radio.tsx +0 -141
- package/website/components/ui/Select.tsx +0 -182
- package/website/components/ui/Tag.tsx +0 -158
- package/website/components/ui/Textarea.tsx +0 -195
- package/website/components/ui/index.ts +0 -11
- package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
- package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
- package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
- package/website/content/blog/introducing-ossa-framework.md +0 -328
- package/website/content/blog/ossa-production-results.md +0 -279
- package/website/content/blog/welcome-to-ossa.md +0 -43
- package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
- package/website/content/docs/00-home.md +0 -153
- package/website/content/docs/adapters/openai-adapter.md +0 -693
- package/website/content/docs/agents/catalog.md +0 -28
- package/website/content/docs/aiflow-framework-integration-with-ossa.md +0 -107
- package/website/content/docs/api-reference/index.md +0 -38
- package/website/content/docs/api-reference/ossa-core-api.md +0 -634
- package/website/content/docs/api-reference/ossa-registry-api.md +0 -515
- package/website/content/docs/api-reference/unified-agent-gateway.md +0 -599
- package/website/content/docs/architecture/execution-flow.md +0 -335
- package/website/content/docs/architecture/multi-agent-systems.md +0 -737
- package/website/content/docs/architecture/overview.md +0 -121
- package/website/content/docs/architecture/stack-integration.md +0 -461
- package/website/content/docs/changelog.md +0 -246
- package/website/content/docs/cli-reference/index.md +0 -111
- package/website/content/docs/cli-reference/ossa-agents.md +0 -70
- package/website/content/docs/cli-reference/ossa-export.md +0 -56
- package/website/content/docs/cli-reference/ossa-generate.md +0 -66
- package/website/content/docs/cli-reference/ossa-gitlab-agent.md +0 -57
- package/website/content/docs/cli-reference/ossa-import.md +0 -56
- package/website/content/docs/cli-reference/ossa-init.md +0 -57
- package/website/content/docs/cli-reference/ossa-migrate.md +0 -62
- package/website/content/docs/cli-reference/ossa-run.md +0 -66
- package/website/content/docs/cli-reference/ossa-schema.md +0 -57
- package/website/content/docs/cli-reference/ossa-setup.md +0 -57
- package/website/content/docs/cli-reference/ossa-validate.md +0 -66
- package/website/content/docs/configuration/index.md +0 -97
- package/website/content/docs/contributing.md +0 -599
- package/website/content/docs/deployment/github-mirroring.md +0 -924
- package/website/content/docs/documentation.md +0 -100
- package/website/content/docs/ecosystem/framework-support.md +0 -1361
- package/website/content/docs/ecosystem/overview.md +0 -366
- package/website/content/docs/errors/index.md +0 -10
- package/website/content/docs/examples/aiflow-framework-integration-with-ossa.md +0 -107
- package/website/content/docs/examples/catalog.md +0 -300
- package/website/content/docs/for-audiences/students-researchers.md +0 -122
- package/website/content/docs/getting-started/index.md +0 -92
- package/website/content/docs/getting-started/installation.md +0 -155
- package/website/content/docs/getting-started/running-agents.md +0 -309
- package/website/content/docs/getting-started.md +0 -91
- package/website/content/docs/integrations/aiflow.md +0 -104
- package/website/content/docs/integrations/drupal.md +0 -105
- package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
- package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
- package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
- package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
- package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
- package/website/content/docs/migration-guides/index.md +0 -133
- package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
- package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
- package/website/content/docs/migration-guides/migration-manifest.json +0 -64
- package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
- package/website/content/docs/openapi-extensions/examples.md +0 -550
- package/website/content/docs/openapi-extensions/index.md +0 -551
- package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
- package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
- package/website/content/docs/ossa-compliant-badge.md +0 -251
- package/website/content/docs/pre-release/index.md +0 -175
- package/website/content/docs/quick-reference.md +0 -17
- package/website/content/docs/readme.md +0 -35
- package/website/content/docs/releases/v0.2.6.md +0 -99
- package/website/content/docs/schema-reference/agent-capabilities.md +0 -50
- package/website/content/docs/schema-reference/agent-id.md +0 -52
- package/website/content/docs/schema-reference/agent-name.md +0 -50
- package/website/content/docs/schema-reference/agent-role.md +0 -54
- package/website/content/docs/schema-reference/agent-spec.md +0 -406
- package/website/content/docs/schema-reference/agent-version.md +0 -50
- package/website/content/docs/schema-reference/autonomy.md +0 -568
- package/website/content/docs/schema-reference/constraints.md +0 -543
- package/website/content/docs/schema-reference/index.md +0 -45
- package/website/content/docs/schema-reference/llm-config.md +0 -445
- package/website/content/docs/schema-reference/observability.md +0 -654
- package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
- package/website/content/docs/schema-reference/taxonomy.md +0 -509
- package/website/content/docs/schema-reference/tools.md +0 -628
- package/website/content/docs/templates/blog-post.md +0 -43
- package/website/content/docs/types-reference/index.md +0 -105
- package/website/content/docs/use-cases/00-index.md +0 -395
- package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
- package/website/content/docs/use-cases/customer-support.md +0 -1234
- package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
- package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
- package/website/content/docs/versioning.md +0 -288
- package/website/dev.sh +0 -53
- package/website/docker-compose.dev.yml +0 -36
- package/website/lib/version.ts +0 -35
- package/website/lib/versions.json +0 -103
- package/website/next.config.ts +0 -18
- package/website/nginx.conf +0 -32
- package/website/package-lock.json +0 -9679
- package/website/package.json +0 -59
- package/website/postcss.config.mjs +0 -9
- package/website/scripts/fetch-versions.js +0 -166
- package/website/scripts/generate-examples-index.js +0 -163
- package/website/scripts/merge-docs-to-wiki.ts +0 -207
- package/website/scripts/sync-version.js +0 -72
- package/website/scripts/sync-wiki.ts +0 -322
- package/website/scripts/upload-wiki.ts +0 -199
- package/website/styles/_spacing.scss +0 -453
- package/website/styles/_tokens.scss +0 -245
- package/website/styles/_typography.scss +0 -361
- package/website/styles/_variables.scss +0 -287
- package/website/tailwind.config.ts +0 -170
package/website/app/sitemap.ts
DELETED
|
@@ -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
|
-
|