@bluefly/openstandardagents 0.2.4 → 0.2.7
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/.cursorrules +84 -0
- package/.devfile.yaml +87 -0
- package/.env.example +25 -3
- package/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
- package/.github/workflows/dependabot-comment.yml +34 -0
- package/.github/workflows/pr-comment.yml +33 -0
- package/.github/workflows/release.yml +1 -1
- package/.husky/pre-commit +5 -0
- package/.kiro/config.json +21 -0
- package/.kiro/settings/mcp.json +61 -0
- package/.kiro/specs/scripts-migration-api-first/design.md +883 -0
- package/.kiro/specs/scripts-migration-api-first/requirements.md +165 -0
- package/.kiro/specs/scripts-migration-api-first/tasks.md +539 -0
- package/.kiro/specs/website-brand-identity/design.md +1060 -0
- package/.kiro/specs/website-brand-identity/requirements.md +287 -0
- package/.kiro/specs/website-brand-identity/tasks.md +981 -0
- package/.releaserc.json +5 -4
- package/.version.json +6 -0
- package/CHANGELOG.md +163 -96
- package/CONTRIBUTING.md +23 -5
- package/README.md +130 -43
- package/bin/ossa +24 -3
- package/bin/ossa-dev +42 -0
- package/bin/ossa-export +32 -0
- package/bin/ossa-generate +60 -0
- package/bin/ossa-health +40 -0
- package/bin/ossa-init +26 -0
- package/bin/ossa-validate-all +55 -0
- package/bin/ossa-version +23 -0
- package/bin/validate-ossa-0.2.4.ts +244 -0
- package/bin/validate-ossa-0.2.5-RC.ts +244 -0
- package/bin/validate-ossa.ts +273 -0
- package/dist/di-container.d.ts +1 -1
- package/dist/di-container.d.ts.map +1 -1
- package/dist/di-container.js.map +1 -1
- package/dist/repositories/schema.repository.d.ts +17 -2
- package/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +102 -19
- package/dist/repositories/schema.repository.js.map +1 -1
- package/dist/services/generation.service.d.ts +7 -5
- package/dist/services/generation.service.d.ts.map +1 -1
- package/dist/services/generation.service.js +92 -44
- package/dist/services/generation.service.js.map +1 -1
- package/dist/services/github-sync/github-client.d.ts +14 -0
- package/dist/services/github-sync/github-client.d.ts.map +1 -0
- package/dist/services/github-sync/github-client.js +41 -0
- package/dist/services/github-sync/github-client.js.map +1 -0
- package/dist/services/github-sync/gitlab-client.d.ts +17 -0
- package/dist/services/github-sync/gitlab-client.d.ts.map +1 -0
- package/dist/services/github-sync/gitlab-client.js +42 -0
- package/dist/services/github-sync/gitlab-client.js.map +1 -0
- package/dist/services/github-sync/schemas.d.ts +46 -0
- package/dist/services/github-sync/schemas.d.ts.map +1 -0
- package/dist/services/github-sync/schemas.js +36 -0
- package/dist/services/github-sync/schemas.js.map +1 -0
- package/dist/services/github-sync/sync.service.d.ts +27 -0
- package/dist/services/github-sync/sync.service.d.ts.map +1 -0
- package/dist/services/github-sync/sync.service.js +99 -0
- package/dist/services/github-sync/sync.service.js.map +1 -0
- package/dist/services/gitlab-agent.service.d.ts +94 -0
- package/dist/services/gitlab-agent.service.d.ts.map +1 -0
- package/dist/services/gitlab-agent.service.js +162 -0
- package/dist/services/gitlab-agent.service.js.map +1 -0
- package/dist/services/migration.service.d.ts +3 -3
- package/dist/services/migration.service.d.ts.map +1 -1
- package/dist/services/migration.service.js +108 -61
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/release-automation/base-crud.service.d.ts +93 -0
- package/dist/services/release-automation/base-crud.service.d.ts.map +1 -0
- package/dist/services/release-automation/base-crud.service.js +68 -0
- package/dist/services/release-automation/base-crud.service.js.map +1 -0
- package/dist/services/release-automation/index.d.ts +12 -0
- package/dist/services/release-automation/index.d.ts.map +1 -0
- package/dist/services/release-automation/index.js +12 -0
- package/dist/services/release-automation/index.js.map +1 -0
- package/dist/services/release-automation/merge-request.service.d.ts +119 -0
- package/dist/services/release-automation/merge-request.service.d.ts.map +1 -0
- package/dist/services/release-automation/merge-request.service.js +212 -0
- package/dist/services/release-automation/merge-request.service.js.map +1 -0
- package/dist/services/release-automation/milestone.service.d.ts +104 -0
- package/dist/services/release-automation/milestone.service.d.ts.map +1 -0
- package/dist/services/release-automation/milestone.service.js +207 -0
- package/dist/services/release-automation/milestone.service.js.map +1 -0
- package/dist/services/release-automation/release.service.d.ts +118 -0
- package/dist/services/release-automation/release.service.d.ts.map +1 -0
- package/dist/services/release-automation/release.service.js +207 -0
- package/dist/services/release-automation/release.service.js.map +1 -0
- package/dist/services/release-automation/schemas/release.schema.d.ts +299 -0
- package/dist/services/release-automation/schemas/release.schema.d.ts.map +1 -0
- package/dist/services/release-automation/schemas/release.schema.js +269 -0
- package/dist/services/release-automation/schemas/release.schema.js.map +1 -0
- package/dist/services/release-automation/tag.service.d.ts +99 -0
- package/dist/services/release-automation/tag.service.d.ts.map +1 -0
- package/dist/services/release-automation/tag.service.js +180 -0
- package/dist/services/release-automation/tag.service.js.map +1 -0
- package/dist/services/release-automation/webhook.service.d.ts +37 -0
- package/dist/services/release-automation/webhook.service.d.ts.map +1 -0
- package/dist/services/release-automation/webhook.service.js +173 -0
- package/dist/services/release-automation/webhook.service.js.map +1 -0
- package/dist/services/runtime/claude/capability-mapper.d.ts +84 -0
- package/dist/services/runtime/claude/capability-mapper.d.ts.map +1 -0
- package/dist/services/runtime/claude/capability-mapper.js +245 -0
- package/dist/services/runtime/claude/capability-mapper.js.map +1 -0
- package/dist/services/runtime/claude/claude-adapter.d.ts +80 -0
- package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -0
- package/dist/services/runtime/claude/claude-adapter.js +287 -0
- package/dist/services/runtime/claude/claude-adapter.js.map +1 -0
- package/dist/services/runtime/claude/manifest-parser.d.ts +77 -0
- package/dist/services/runtime/claude/manifest-parser.d.ts.map +1 -0
- package/dist/services/runtime/claude/manifest-parser.js +169 -0
- package/dist/services/runtime/claude/manifest-parser.js.map +1 -0
- package/dist/services/runtime/claude/types.d.ts +115 -0
- package/dist/services/runtime/claude/types.d.ts.map +1 -0
- package/dist/services/runtime/claude/types.js +6 -0
- package/dist/services/runtime/claude/types.js.map +1 -0
- package/dist/services/runtime/openai.adapter.d.ts.map +1 -1
- package/dist/services/runtime/openai.adapter.js.map +1 -1
- package/dist/services/validation.service.d.ts.map +1 -1
- package/dist/services/validation.service.js +35 -11
- package/dist/services/validation.service.js.map +1 -1
- package/dist/services/validators/anthropic.validator.d.ts +2 -2
- package/dist/services/validators/anthropic.validator.d.ts.map +1 -1
- package/dist/services/validators/anthropic.validator.js +14 -9
- package/dist/services/validators/anthropic.validator.js.map +1 -1
- package/dist/services/validators/autogen.validator.d.ts +2 -2
- package/dist/services/validators/autogen.validator.d.ts.map +1 -1
- package/dist/services/validators/autogen.validator.js +18 -15
- package/dist/services/validators/autogen.validator.js.map +1 -1
- package/dist/services/validators/crewai.validator.d.ts +2 -2
- package/dist/services/validators/crewai.validator.d.ts.map +1 -1
- package/dist/services/validators/crewai.validator.js +18 -17
- package/dist/services/validators/crewai.validator.js.map +1 -1
- package/dist/services/validators/cursor.validator.d.ts +2 -2
- package/dist/services/validators/cursor.validator.d.ts.map +1 -1
- package/dist/services/validators/cursor.validator.js +15 -11
- package/dist/services/validators/cursor.validator.js.map +1 -1
- package/dist/services/validators/langchain.validator.d.ts +2 -2
- package/dist/services/validators/langchain.validator.d.ts.map +1 -1
- package/dist/services/validators/langchain.validator.js +14 -11
- package/dist/services/validators/langchain.validator.js.map +1 -1
- package/dist/services/validators/langflow.validator.d.ts +2 -2
- package/dist/services/validators/langflow.validator.d.ts.map +1 -1
- package/dist/services/validators/langflow.validator.js +14 -9
- package/dist/services/validators/langflow.validator.js.map +1 -1
- package/dist/services/validators/langgraph.validator.d.ts +2 -2
- package/dist/services/validators/langgraph.validator.d.ts.map +1 -1
- package/dist/services/validators/langgraph.validator.js +23 -18
- package/dist/services/validators/langgraph.validator.js.map +1 -1
- package/dist/services/validators/llamaindex.validator.d.ts +2 -2
- package/dist/services/validators/llamaindex.validator.d.ts.map +1 -1
- package/dist/services/validators/llamaindex.validator.js +19 -16
- package/dist/services/validators/llamaindex.validator.js.map +1 -1
- package/dist/services/validators/openai.validator.d.ts +2 -2
- package/dist/services/validators/openai.validator.d.ts.map +1 -1
- package/dist/services/validators/openai.validator.js +20 -16
- package/dist/services/validators/openai.validator.js.map +1 -1
- package/dist/services/validators/vercel-ai.validator.d.ts +2 -2
- package/dist/services/validators/vercel-ai.validator.d.ts.map +1 -1
- package/dist/services/validators/vercel-ai.validator.js +16 -15
- package/dist/services/validators/vercel-ai.validator.js.map +1 -1
- package/dist/spec/v0.2.0/ossa-0.2.0.schema.json +0 -0
- package/dist/spec/v0.2.1/ossa-0.2.1.schema.json +555 -0
- package/dist/spec/v0.2.3/CHANGELOG.md +7 -7
- package/dist/spec/v0.2.3/README.md +9 -9
- package/dist/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +18 -18
- package/{spec/v0.2.4-dev → dist/spec/v0.2.4}/CHANGELOG.md +8 -8
- package/dist/spec/{v0.2.4-dev → v0.2.4}/migrations/v0.2.3-to-v0.2.4.md +10 -10
- package/dist/spec/{v0.2.4-dev/ossa-0.2.4-dev.yaml → v0.2.4/ossa-0.2.4.yaml} +1 -1
- package/dist/spec/v0.2.5/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.5/README.md +72 -0
- package/dist/spec/v0.2.5/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.5/ossa-0.2.5.schema.json +1696 -0
- package/dist/spec/v0.2.5/ossa-0.2.5.yaml +581 -0
- package/dist/spec/v0.2.5-RC/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.5-RC/README.md +72 -0
- package/{spec/v0.2.4-dev → dist/spec/v0.2.5-RC}/migrations/v0.2.3-to-v0.2.4.md +10 -10
- package/dist/spec/v0.2.5-RC/ossa-0.2.5-RC.schema.json +1696 -0
- package/dist/spec/v0.2.5-RC/ossa-0.2.5-RC.yaml +581 -0
- package/dist/spec/v0.2.6/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.6/README.md +72 -0
- package/dist/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/v0.2.6/ossa-0.2.6.schema.json +1786 -0
- package/dist/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
- package/dist/spec/v0.2.6-dev/CHANGELOG.md +164 -0
- package/dist/spec/v0.2.6-dev/README.md +75 -0
- package/dist/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/dist/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json +1696 -0
- package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/dist/spec/{v0.2.5-dev/ossa-0.2.5-dev.schema.json → v0.2.6-dev/ossa-0.2.6-dev.schema.json} +323 -359
- package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
- package/dist/spec/v0.2.7/core/agentgraph.md +324 -0
- package/dist/spec/v0.2.7/resources/agentgraph.yaml +135 -0
- package/dist/types/index.d.ts +6 -1
- package/dist/types/index.d.ts.map +1 -1
- package/docs/brand-guide/01-brand-overview.md +37 -0
- package/docs/brand-guide/02-logo-usage.md +43 -0
- package/docs/brand-guide/03-color-palette.md +70 -0
- package/docs/brand-guide/04-typography.md +82 -0
- package/docs/brand-guide/05-voice-and-tone.md +108 -0
- package/docs/brand-guide/06-visual-elements.md +137 -0
- package/docs/brand-guide/07-application-examples.md +153 -0
- package/docs/brand-guide/OssaLogo/OssA_Logo.svg +21 -0
- package/docs/brand-guide/OssaLogo/brand.af +0 -0
- package/docs/brand-guide/README.md +107 -0
- package/docs/comparison.md +315 -0
- package/docs/operations/automation-roadmap.md +245 -0
- package/docs/operations/github-sync-strategy.md +357 -0
- package/examples/anthropic/claude-assistant.ossa.json +5 -4
- package/examples/autogen/multi-agent.ossa.json +6 -4
- package/examples/bridges/Dockerfile.production +1 -1
- package/examples/crewai/research-team.ossa.json +14 -5
- package/examples/cursor/code-review-agent.ossa.json +21 -6
- package/examples/enterprise/agent.yml +1 -1
- package/examples/getting-started/hello-world-complete.ossa.yaml +2 -2
- package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
- package/examples/langchain/chain-agent.ossa.json +21 -5
- package/examples/langflow/workflow-agent.ossa.json +2 -3
- package/examples/langgraph/state-machine-agent.ossa.json +2 -3
- package/examples/llamaindex/rag-agent.ossa.json +2 -3
- package/examples/openai/basic-agent.ossa.yaml +61 -0
- package/examples/openai/multi-tool-agent.ossa.json +188 -0
- package/examples/openai/swarm-agent.ossa.json +18 -5
- package/examples/openapi-extensions/README.md +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/vercel/edge-agent.ossa.json +5 -4
- package/infrastructure/gitlab-agent/rbac.yaml +126 -0
- package/infrastructure/gitlab-agent/values.yaml +150 -0
- package/infrastructure/k8s/monitoring/00-namespace.yaml +7 -0
- package/infrastructure/k8s/monitoring/01-prometheus.yaml +142 -0
- package/infrastructure/k8s/monitoring/02-grafana.yaml +63 -0
- package/infrastructure/k8s/monitoring/03-lightweight.yaml +121 -0
- package/infrastructure/k8s/monitoring/README.md +73 -0
- package/infrastructure/k8s/monitoring/deploy.sh +38 -0
- package/openapi/CHANGELOG.md +21 -0
- package/openapi/README.md +46 -0
- package/openapi/{ossa-core-api.openapi.yaml → core/ossa-core-api.openapi.yaml} +59 -4
- package/openapi/{ossa-registry.openapi.yaml → core/ossa-registry.openapi.yaml} +75 -2
- package/openapi/{unified-agent-gateway.openapi.yaml → core/unified-agent-gateway.openapi.yaml} +3 -3
- package/openapi/github-sync.yaml +115 -0
- package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +136 -0
- package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +192 -0
- package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +149 -0
- package/openapi/reference-implementations/critic-agent-api.openapi.yaml +151 -0
- package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +217 -0
- package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +149 -0
- package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +151 -0
- package/openapi/reference-implementations/governor-agent-api.openapi.yaml +193 -0
- package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +165 -0
- package/openapi/reference-implementations/judge-agent-api.openapi.yaml +148 -0
- package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +167 -0
- package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +171 -0
- package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +171 -0
- package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +242 -0
- package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +187 -0
- package/openapi/{self-evolving-ecosystem.openapi.yaml → reference-implementations/self-evolving-ecosystem.openapi.yaml} +2 -2
- package/openapi/reference-implementations/worker-agent-api.openapi.yaml +208 -0
- package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +193 -0
- package/package.json +53 -22
- package/release.config.js +20 -5
- package/scripts/README.md +103 -0
- package/scripts/auto-rebase-mrs.ts +106 -0
- package/scripts/batch-dependabot.sh +57 -0
- package/scripts/bump-version.ts +57 -0
- package/scripts/configure-gitlab-branch-protection.ts +95 -0
- package/scripts/create-issue-helper.ts +238 -0
- package/scripts/create-milestone-issue.ts +73 -0
- package/scripts/enhanced-version-manager.ts +257 -0
- package/scripts/fix-schema-formats.js +82 -0
- package/scripts/gen-types.ts +51 -0
- package/scripts/gen-zod.ts +51 -0
- package/scripts/generate-agents-catalog.ts +77 -0
- package/scripts/generate-api-docs.ts +218 -0
- package/scripts/generate-cli-docs.ts +410 -0
- package/scripts/generate-config-docs.ts +109 -0
- package/scripts/generate-errors-docs.ts +76 -0
- package/scripts/generate-examples-docs.ts +99 -0
- package/scripts/generate-schema-docs.ts +296 -0
- package/scripts/generate-types-docs.ts +48 -0
- package/scripts/lib/exec.ts +37 -0
- package/scripts/lib/file-ops.ts +58 -0
- package/scripts/lib/version.ts +83 -0
- package/scripts/lowercase-docs.ts +43 -0
- package/scripts/manage-milestone-mrs.ts +279 -0
- package/scripts/process-doc-templates.ts +37 -0
- package/scripts/rebase-all-mrs.sh +75 -0
- package/scripts/schemas/package.schema.ts +75 -0
- package/scripts/setup-branch-protection.sh +33 -0
- package/scripts/sync-github-pr.sh +48 -0
- package/scripts/sync-version.js +40 -0
- package/scripts/sync-version.ts +39 -0
- package/scripts/sync-versions.ts +488 -0
- package/scripts/sync-wiki.sh +50 -0
- package/scripts/validate-all.js +127 -0
- package/scripts/validate-schema.ts +49 -0
- package/spec/v0.2.0/ossa-0.2.0.schema.json +0 -0
- package/spec/v0.2.1/ossa-0.2.1.schema.json +555 -0
- package/spec/v0.2.3/CHANGELOG.md +7 -7
- package/spec/v0.2.3/README.md +9 -9
- package/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +18 -18
- package/{dist/spec/v0.2.4-dev → spec/v0.2.4}/CHANGELOG.md +8 -8
- package/spec/v0.2.4/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/{v0.2.4-dev/ossa-0.2.4-dev.yaml → v0.2.4/ossa-0.2.4.yaml} +1 -1
- package/spec/v0.2.5/CHANGELOG.md +401 -0
- package/spec/v0.2.5/README.md +72 -0
- package/spec/v0.2.5/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.5/ossa-0.2.5.schema.json +1696 -0
- package/spec/v0.2.5/ossa-0.2.5.yaml +581 -0
- package/spec/v0.2.5-RC/CHANGELOG.md +401 -0
- package/spec/v0.2.5-RC/README.md +72 -0
- package/spec/v0.2.5-RC/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.5-RC/ossa-0.2.5-RC.schema.json +1696 -0
- package/spec/v0.2.5-RC/ossa-0.2.5-RC.yaml +581 -0
- package/spec/v0.2.6/CHANGELOG.md +401 -0
- package/spec/v0.2.6/README.md +72 -0
- package/spec/v0.2.6/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.6/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/v0.2.6/ossa-0.2.6.schema.json +1786 -0
- package/spec/v0.2.6/ossa-0.2.6.yaml +581 -0
- package/spec/v0.2.6-dev/CHANGELOG.md +164 -0
- package/spec/v0.2.6-dev/README.md +75 -0
- package/spec/v0.2.6-dev/migrations/v0.2.2-to-v0.2.3.md +343 -0
- package/spec/v0.2.6-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.6-dev/ossa-0.2.5.schema.json +1696 -0
- package/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/spec/{v0.2.5-dev/ossa-0.2.5-dev.schema.json → v0.2.6-dev/ossa-0.2.6-dev.schema.json} +323 -359
- package/spec/v0.2.6-dev/ossa-0.2.6-dev.yaml +448 -0
- package/spec/v0.2.7/core/agentgraph.md +324 -0
- package/spec/v0.2.7/resources/agentgraph.yaml +135 -0
- package/website/{.lighthouserc.js → .lighthouserc.ts} +5 -1
- package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +445 -0
- package/website/Dockerfile +18 -5
- package/website/app/about/page.tsx +60 -51
- package/website/app/blog/[slug]/page.tsx +61 -20
- package/website/app/blog/page.tsx +120 -33
- package/website/app/design-guide/page.tsx +511 -0
- package/website/app/docs/[[...slug]]/page.tsx +641 -143
- package/website/app/ecosystem/page.tsx +146 -111
- package/website/app/examples/page.tsx +51 -41
- package/website/app/globals.scss +370 -0
- package/website/app/layout.tsx +2 -2
- package/website/app/license/page.tsx +183 -0
- package/website/app/not-found.tsx +18 -0
- package/website/app/page.tsx +513 -236
- package/website/app/page.tsx.bak +679 -0
- package/website/app/page.tsx.bak2 +649 -0
- package/website/app/playground/page.tsx +25 -45
- package/website/app/schema/page.tsx +423 -392
- package/website/app/specification/page.tsx +245 -169
- package/website/components/Logo.tsx +75 -2
- package/website/components/docs/DocsSidebar.tsx +40 -3
- package/website/components/docs/MarkdownContent.tsx +265 -47
- package/website/components/docs/VersionSelector.tsx +64 -8
- package/website/components/examples/ExamplesViewer.tsx +2 -2
- package/website/components/layout/Footer.tsx +6 -1
- package/website/components/layout/Header.tsx +44 -42
- package/website/components/schema/SchemaComponentsAccordion.tsx +84 -0
- package/website/components/schema/SchemaExplorer.tsx +4 -4
- package/website/components/ui/Badge.tsx +82 -0
- package/website/components/ui/Button.tsx +116 -0
- package/website/components/ui/Card.tsx +167 -0
- package/website/components/ui/Checkbox.tsx +141 -0
- package/website/components/ui/Input.tsx +169 -0
- package/website/components/ui/Radio.tsx +141 -0
- package/website/components/ui/Select.tsx +182 -0
- package/website/components/ui/Tag.tsx +158 -0
- package/website/components/ui/Textarea.tsx +195 -0
- package/website/components/ui/index.ts +11 -0
- package/website/content/blog/OpenAPI-AI-Agents-Standard.md +276 -276
- package/website/content/blog/Why-Formal-Standards-Matter-Now.md +3 -14
- package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +286 -0
- package/website/content/blog/introducing-ossa-framework.md +1 -1
- package/website/content/blog/ossa-production-results.md +5 -5
- package/website/content/blog/welcome-to-ossa.md +2 -2
- package/website/content/blog/why-ai-agents-need-open-standard.md +5 -5
- package/website/content/docs/{00-HOME.md → 00-home.md} +18 -25
- package/website/content/docs/adapters/openai-adapter.md +693 -0
- package/website/content/docs/agents/catalog.md +28 -0
- package/website/content/docs/aiflow-framework-integration-with-ossa.md +107 -0
- package/website/content/docs/api-reference/index.md +38 -0
- package/website/content/docs/api-reference/ossa-core-api.md +634 -0
- package/website/content/docs/api-reference/ossa-registry-api.md +515 -0
- package/website/content/docs/api-reference/unified-agent-gateway.md +599 -0
- package/website/content/docs/architecture/execution-flow.md +3 -3
- package/website/content/docs/architecture/multi-agent-systems.md +4 -4
- package/website/content/docs/architecture/overview.md +4 -4
- package/website/content/docs/architecture/stack-integration.md +4 -4
- package/website/content/docs/changelog.md +4 -4
- package/website/content/docs/cli-reference/index.md +111 -0
- package/website/content/docs/cli-reference/ossa-agents.md +70 -0
- package/website/content/docs/cli-reference/ossa-export.md +56 -0
- package/website/content/docs/cli-reference/ossa-generate.md +66 -0
- package/website/content/docs/cli-reference/ossa-gitlab-agent.md +57 -0
- package/website/content/docs/cli-reference/ossa-import.md +56 -0
- package/website/content/docs/cli-reference/ossa-init.md +57 -0
- package/website/content/docs/cli-reference/ossa-migrate.md +62 -0
- package/website/content/docs/cli-reference/ossa-run.md +66 -0
- package/website/content/docs/cli-reference/ossa-schema.md +57 -0
- package/website/content/docs/cli-reference/ossa-setup.md +57 -0
- package/website/content/docs/cli-reference/ossa-validate.md +66 -0
- package/website/content/docs/configuration/index.md +97 -0
- package/website/content/docs/contributing.md +2 -2
- package/website/content/docs/deployment/github-mirroring.md +924 -0
- package/website/content/docs/documentation.md +100 -0
- package/website/content/docs/ecosystem/framework-support.md +551 -11
- package/website/content/docs/errors/index.md +10 -0
- package/website/content/docs/{AIFlow-Framework-Integration-with-OSSA.md → examples/aiflow-framework-integration-with-ossa.md} +2 -2
- package/website/content/docs/examples/catalog.md +300 -0
- package/website/content/docs/for-audiences/{Students-Researchers.md → students-researchers.md} +1 -1
- package/website/content/docs/getting-started/index.md +92 -0
- package/website/content/docs/getting-started/installation.md +7 -7
- package/website/content/docs/getting-started/running-agents.md +215 -13
- package/{docs → website/content/docs}/getting-started.md +10 -6
- package/website/content/docs/integrations/aiflow.md +2 -2
- package/website/content/docs/integrations/drupal.md +2 -2
- package/website/content/docs/migration-guides/agent-schema-comparison.md +232 -0
- package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +5 -5
- package/website/content/docs/migration-guides/crewai-to-ossa.md +3 -3
- package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +11 -11
- package/{docs/migration → website/content/docs/migration-guides}/general-agent-schema.yml +1 -9
- package/website/content/docs/migration-guides/index.md +1 -1
- package/website/content/docs/migration-guides/langchain-to-ossa.md +17 -17
- package/website/content/docs/migration-guides/langflow-to-ossa.md +3 -3
- package/website/content/docs/migration-guides/openai-to-ossa.md +10 -10
- package/website/content/docs/openapi-extensions/examples.md +9 -9
- package/website/content/docs/openapi-extensions/index.md +59 -3
- package/website/content/docs/openapi-extensions/operation-extensions.md +61 -2
- package/website/content/docs/openapi-extensions/root-extensions.md +49 -3
- package/{docs/OSSA-COMPLIANT-BADGE.md → website/content/docs/ossa-compliant-badge.md} +18 -15
- package/website/content/docs/pre-release/index.md +10 -10
- package/website/content/docs/readme.md +35 -0
- package/website/content/docs/releases/v0.2.6.md +99 -0
- package/website/content/docs/schema-reference/agent-capabilities.md +50 -0
- package/website/content/docs/schema-reference/agent-id.md +52 -0
- package/website/content/docs/schema-reference/agent-name.md +50 -0
- package/website/content/docs/schema-reference/agent-role.md +54 -0
- package/website/content/docs/schema-reference/agent-spec.md +2 -2
- package/website/content/docs/schema-reference/agent-version.md +50 -0
- package/website/content/docs/schema-reference/autonomy.md +5 -5
- package/website/content/docs/schema-reference/constraints.md +5 -5
- package/website/content/docs/schema-reference/index.md +26 -157
- package/website/content/docs/schema-reference/llm-config.md +1 -1
- package/website/content/docs/schema-reference/observability.md +5 -5
- package/website/content/docs/schema-reference/ossa-manifest.md +6 -6
- package/website/content/docs/schema-reference/taxonomy.md +3 -3
- package/website/content/docs/types-reference/index.md +105 -0
- package/website/content/docs/use-cases/00-index.md +1 -1
- package/{docs/VERSIONING.md → website/content/docs/versioning.md} +9 -5
- package/website/dev.sh +53 -0
- package/website/docker-compose.dev.yml +36 -0
- package/website/lib/version.ts +18 -1
- package/website/lib/versions.json +103 -0
- package/website/next.config.ts +3 -1
- package/website/package-lock.json +552 -18
- package/website/package.json +11 -5
- package/website/postcss.config.mjs +1 -1
- package/website/scripts/fetch-versions.js +166 -0
- package/website/scripts/generate-examples-index.js +163 -0
- package/website/scripts/merge-docs-to-wiki.ts +207 -0
- package/website/scripts/sync-version.js +28 -0
- package/website/scripts/sync-wiki.ts +64 -3
- package/website/scripts/upload-wiki.ts +199 -0
- package/website/styles/_spacing.scss +453 -0
- package/website/styles/_tokens.scss +245 -0
- package/website/styles/_typography.scss +361 -0
- package/website/styles/_variables.scss +287 -0
- package/website/tailwind.config.ts +127 -22
- package/.releaserc.json.disabled +0 -81
- package/dist/spec/v0.2.5-dev/CHANGELOG.md +0 -171
- package/dist/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +0 -362
- package/dist/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +0 -464
- package/dist/spec/v0.2.5-dev/examples/research-team.ossa.yaml +0 -440
- package/dist/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +0 -317
- package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +0 -409
- package/docs/README.md +0 -31
- package/docs/agent-openapi-spec.yml +0 -942
- package/docs/openapi-extensions.md +0 -930
- package/docs/schemas/openapi-extensions.schema.json +0 -486
- package/openapi/gitlab-orchestrator.openapi.yaml +0 -330
- package/ossa-website-swarm-tasks.json +0 -105
- package/spec/v0.2.5-dev/CHANGELOG.md +0 -171
- package/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +0 -362
- package/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +0 -464
- package/spec/v0.2.5-dev/examples/research-team.ossa.yaml +0 -440
- package/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +0 -317
- package/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +0 -409
- package/website/app/api/validate/route.ts +0 -88
- package/website/app/globals.css +0 -108
- package/website/content/docs/OpenAPI-Extensions.md +0 -498
- package/website/content/docs/core-concepts/project-structure.md +0 -348
- package/website/content/docs/examples/Migration-Guides.md +0 -214
- package/website/content/docs/examples.md +0 -71
- package/website/content/docs/for-audiences/Enterprises.md +0 -256
- package/website/content/docs/for-audiences/architects.md +0 -224
- package/website/content/docs/for-audiences/developers.md +0 -220
- package/website/content/docs/getting-started/5-minute-overview.md +0 -85
- package/website/content/docs/getting-started/Hello-World.md +0 -184
- package/website/content/docs/getting-started/first-agent.md +0 -196
- package/website/content/docs/migration-guides/00-index.md +0 -76
- package/website/content/docs/migration-guides/README.md +0 -133
- package/website/next.config.js +0 -17
- package/website/postcss.config.js +0 -7
- package/website/tailwind.config.js +0 -58
- /package/dist/spec/{v0.2.4-dev/ossa-0.2.4-dev.schema.json → v0.2.4/ossa-0.2.4.schema.json} +0 -0
- /package/openapi/{ossa-registry-api.openapi.yaml → core/ossa-registry-api.openapi.yaml} +0 -0
- /package/openapi/{drupal-agent-api.openapi.yaml → reference-implementations/drupal-agent-api.openapi.yaml} +0 -0
- /package/openapi/{helm-generator.openapi.yaml → reference-implementations/helm-generator.openapi.yaml} +0 -0
- /package/spec/{v0.2.4-dev/ossa-0.2.4-dev.schema.json → v0.2.4/ossa-0.2.4.schema.json} +0 -0
- /package/{docs/migration → website/content/docs/migration-guides}/migration-manifest.json +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import Link from 'next/link';
|
|
4
4
|
import { usePathname } from 'next/navigation';
|
|
5
|
-
import { useState } from 'react';
|
|
5
|
+
import { useState, useEffect } from 'react';
|
|
6
6
|
import { DocsSearch } from './DocsSearch';
|
|
7
7
|
import { VersionSelector } from './VersionSelector';
|
|
8
8
|
|
|
@@ -36,6 +36,13 @@ const navigation = [
|
|
|
36
36
|
{ href: '/docs/migration-guides/drupal-eca-to-ossa', label: 'Drupal ECA to OSSA' },
|
|
37
37
|
],
|
|
38
38
|
},
|
|
39
|
+
{
|
|
40
|
+
title: 'Ecosystem',
|
|
41
|
+
items: [
|
|
42
|
+
{ href: '/docs/ecosystem/overview', label: 'Ecosystem Overview' },
|
|
43
|
+
{ href: '/docs/ecosystem/framework-support', label: 'Framework Support' },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
39
46
|
{
|
|
40
47
|
title: 'Reference',
|
|
41
48
|
items: [
|
|
@@ -55,7 +62,37 @@ const navigation = [
|
|
|
55
62
|
|
|
56
63
|
export function DocsSidebar() {
|
|
57
64
|
const pathname = usePathname();
|
|
58
|
-
|
|
65
|
+
|
|
66
|
+
// Calculate initial open sections based on pathname to avoid hydration mismatch
|
|
67
|
+
const getInitialOpenSections = (): string[] => {
|
|
68
|
+
const sections: string[] = ['Getting Started'];
|
|
69
|
+
const currentSection = navigation.find((section) =>
|
|
70
|
+
section.items.some((item) => item.href === pathname)
|
|
71
|
+
);
|
|
72
|
+
if (currentSection && !sections.includes(currentSection.title)) {
|
|
73
|
+
sections.push(currentSection.title);
|
|
74
|
+
}
|
|
75
|
+
return sections;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const [openSections, setOpenSections] = useState<string[]>(getInitialOpenSections);
|
|
79
|
+
|
|
80
|
+
// Update open sections when pathname changes (for client-side navigation)
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
const currentSection = navigation.find((section) =>
|
|
83
|
+
section.items.some((item) => item.href === pathname)
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
if (currentSection) {
|
|
87
|
+
setOpenSections((prev) => {
|
|
88
|
+
// Only add if not already in the array
|
|
89
|
+
if (!prev.includes(currentSection.title)) {
|
|
90
|
+
return [...prev, currentSection.title];
|
|
91
|
+
}
|
|
92
|
+
return prev;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}, [pathname]);
|
|
59
96
|
|
|
60
97
|
const toggleSection = (title: string): void => {
|
|
61
98
|
setOpenSections((prev) =>
|
|
@@ -68,7 +105,7 @@ export function DocsSidebar() {
|
|
|
68
105
|
return (
|
|
69
106
|
<aside className="w-64 bg-gray-100 border-r border-gray-300 p-4 overflow-y-auto h-screen sticky top-0">
|
|
70
107
|
<nav>
|
|
71
|
-
<Link href="/docs" className="block mb-6 font-semibold text-primary hover:text-
|
|
108
|
+
<Link href="/docs" className="block mb-6 font-semibold text-primary hover:text-accent">
|
|
72
109
|
Documentation
|
|
73
110
|
</Link>
|
|
74
111
|
<div className="mb-6">
|
|
@@ -1,40 +1,192 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import React, { useEffect } from 'react';
|
|
2
4
|
import ReactMarkdown from 'react-markdown';
|
|
3
5
|
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
|
4
6
|
import { vscDarkPlus } from 'react-syntax-highlighter/dist/cjs/styles/prism';
|
|
5
7
|
import remarkGfm from 'remark-gfm';
|
|
8
|
+
import Link from 'next/link';
|
|
9
|
+
import { usePathname } from 'next/navigation';
|
|
6
10
|
|
|
7
11
|
interface MarkdownContentProps {
|
|
8
12
|
content: string;
|
|
13
|
+
currentPath?: string; // Current pathname for resolving relative links
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Helper function to generate ID from heading text
|
|
17
|
+
function generateId(text: string): string {
|
|
18
|
+
// Extract ID from {#id} syntax if present
|
|
19
|
+
const idMatch = text.match(/\{#([^}]+)\}/);
|
|
20
|
+
if (idMatch) {
|
|
21
|
+
return idMatch[1];
|
|
22
|
+
}
|
|
23
|
+
// Otherwise generate from text
|
|
24
|
+
return text
|
|
25
|
+
.toString()
|
|
26
|
+
.toLowerCase()
|
|
27
|
+
.replace(/[^\w\s-]/g, '')
|
|
28
|
+
.replace(/\s+/g, '-')
|
|
29
|
+
.replace(/-+/g, '-')
|
|
30
|
+
.trim();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Helper function to clean heading text (remove {#id} syntax)
|
|
34
|
+
function cleanHeadingText(text: string): string {
|
|
35
|
+
return text.replace(/\s*\{#[^}]+\}\s*$/, '').trim();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Helper function to fix markdown bold syntax with spaces
|
|
39
|
+
function fixMarkdownBold(content: string): string {
|
|
40
|
+
// Fix patterns like "** text**" or "**text **" to "**text**"
|
|
41
|
+
// Also handle cases where ** is at the start of a line or after a heading
|
|
42
|
+
return content
|
|
43
|
+
// Fix "** text" patterns (space after opening **)
|
|
44
|
+
.replace(/\*\* +([^*]+?)\*\*/g, '**$1**')
|
|
45
|
+
// Fix "text **" patterns (space before closing **)
|
|
46
|
+
.replace(/\*\*([^*]+?) +\*\*/g, '**$1**')
|
|
47
|
+
// Fix "** text **" patterns (spaces on both sides)
|
|
48
|
+
.replace(/\*\* +([^*]+?) +\*\*/g, '**$1**');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Helper function to resolve relative markdown links to Next.js routes
|
|
52
|
+
function resolveMarkdownLink(href: string, currentPath: string): string {
|
|
53
|
+
// Already absolute or external
|
|
54
|
+
if (href.startsWith('/') || href.startsWith('http') || href.startsWith('#')) {
|
|
55
|
+
return href;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Split anchor from path
|
|
59
|
+
const [pathPart, anchor] = href.split('#');
|
|
60
|
+
const anchorPart = anchor ? `#${anchor}` : '';
|
|
61
|
+
|
|
62
|
+
// Remove .md extension
|
|
63
|
+
let normalized = pathPart.replace(/\.md$/, '');
|
|
64
|
+
|
|
65
|
+
// Handle relative paths starting with ./
|
|
66
|
+
if (normalized.startsWith('./')) {
|
|
67
|
+
normalized = normalized.slice(2);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Convert PascalCase/CamelCase to kebab-case
|
|
71
|
+
normalized = normalized
|
|
72
|
+
.replace(/([a-z])([A-Z])/g, '$1-$2') // Insert dash before capital letters
|
|
73
|
+
.toLowerCase()
|
|
74
|
+
.replace(/[^a-z0-9/-]/g, '-') // Replace non-alphanumeric with dash
|
|
75
|
+
.replace(/-+/g, '-') // Collapse multiple dashes
|
|
76
|
+
.replace(/^-|-$/g, ''); // Remove leading/trailing dashes
|
|
77
|
+
|
|
78
|
+
// If currentPath is provided, resolve relative to it
|
|
79
|
+
if (currentPath && !normalized.startsWith('/')) {
|
|
80
|
+
// Get the directory of the current page
|
|
81
|
+
const pathParts = currentPath.split('/').filter(Boolean);
|
|
82
|
+
// Remove the last part (current file) to get directory
|
|
83
|
+
const currentDir = pathParts.slice(0, -1);
|
|
84
|
+
|
|
85
|
+
// Handle parent directory references (../)
|
|
86
|
+
if (normalized.startsWith('../')) {
|
|
87
|
+
const upLevels = (normalized.match(/\.\.\//g) || []).length;
|
|
88
|
+
normalized = normalized.replace(/\.\.\//g, '');
|
|
89
|
+
const newDir = currentDir.slice(0, -upLevels);
|
|
90
|
+
return `/docs/${newDir.join('/')}/${normalized}${anchorPart}`;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Same directory or subdirectory
|
|
94
|
+
if (currentDir.length > 0) {
|
|
95
|
+
return `/docs/${currentDir.join('/')}/${normalized}${anchorPart}`;
|
|
96
|
+
}
|
|
97
|
+
return `/docs/${normalized}${anchorPart}`;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Default to /docs/ prefix if no current path
|
|
101
|
+
return `/docs/${normalized}${anchorPart}`;
|
|
9
102
|
}
|
|
10
103
|
|
|
11
|
-
export function MarkdownContent({ content }: MarkdownContentProps) {
|
|
104
|
+
export function MarkdownContent({ content, currentPath }: MarkdownContentProps) {
|
|
105
|
+
const pathname = usePathname();
|
|
106
|
+
const basePath = currentPath || pathname;
|
|
107
|
+
|
|
108
|
+
// Handle anchor link scrolling on mount and hash changes
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
const handleHashChange = () => {
|
|
111
|
+
const hash = window.location.hash.slice(1);
|
|
112
|
+
if (hash) {
|
|
113
|
+
setTimeout(() => {
|
|
114
|
+
const element = document.getElementById(hash);
|
|
115
|
+
if (element) {
|
|
116
|
+
element.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
117
|
+
// Offset for sticky header
|
|
118
|
+
window.scrollBy(0, -80);
|
|
119
|
+
}
|
|
120
|
+
}, 100);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
handleHashChange();
|
|
125
|
+
window.addEventListener('hashchange', handleHashChange);
|
|
126
|
+
return () => window.removeEventListener('hashchange', handleHashChange);
|
|
127
|
+
}, [pathname]);
|
|
128
|
+
|
|
129
|
+
// Fix markdown bold syntax issues
|
|
130
|
+
const fixedContent = fixMarkdownBold(content);
|
|
131
|
+
|
|
12
132
|
return (
|
|
13
|
-
<div className="markdown-content">
|
|
133
|
+
<div className="markdown-content [&_pre_code]:bg-transparent [&_pre_code]:text-code-text">
|
|
14
134
|
<ReactMarkdown
|
|
15
135
|
remarkPlugins={[remarkGfm]}
|
|
16
136
|
components={{
|
|
17
|
-
// Headings
|
|
18
|
-
h1: ({ children }) =>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
137
|
+
// Headings with IDs
|
|
138
|
+
h1: ({ children }) => {
|
|
139
|
+
const text = React.Children.toArray(children).join('');
|
|
140
|
+
const id = generateId(text);
|
|
141
|
+
const cleanText = cleanHeadingText(text);
|
|
142
|
+
return (
|
|
143
|
+
<h1
|
|
144
|
+
id={id}
|
|
145
|
+
className="text-3xl md:text-4xl font-bold text-gray-900 mt-8 mb-4 pb-2 border-b border-gray-200 scroll-mt-20"
|
|
146
|
+
>
|
|
147
|
+
{cleanText}
|
|
148
|
+
</h1>
|
|
149
|
+
);
|
|
150
|
+
},
|
|
151
|
+
h2: ({ children }) => {
|
|
152
|
+
const text = React.Children.toArray(children).join('');
|
|
153
|
+
const id = generateId(text);
|
|
154
|
+
const cleanText = cleanHeadingText(text);
|
|
155
|
+
return (
|
|
156
|
+
<h2
|
|
157
|
+
id={id}
|
|
158
|
+
className="text-2xl md:text-3xl font-semibold text-gray-900 mt-8 mb-4 scroll-mt-20"
|
|
159
|
+
>
|
|
160
|
+
{cleanText}
|
|
161
|
+
</h2>
|
|
162
|
+
);
|
|
163
|
+
},
|
|
164
|
+
h3: ({ children }) => {
|
|
165
|
+
const text = React.Children.toArray(children).join('');
|
|
166
|
+
const id = generateId(text);
|
|
167
|
+
const cleanText = cleanHeadingText(text);
|
|
168
|
+
return (
|
|
169
|
+
<h3
|
|
170
|
+
id={id}
|
|
171
|
+
className="text-xl md:text-2xl font-semibold text-gray-900 mt-6 mb-3 scroll-mt-20"
|
|
172
|
+
>
|
|
173
|
+
{cleanText}
|
|
174
|
+
</h3>
|
|
175
|
+
);
|
|
176
|
+
},
|
|
177
|
+
h4: ({ children }) => {
|
|
178
|
+
const text = React.Children.toArray(children).join('');
|
|
179
|
+
const id = generateId(text);
|
|
180
|
+
const cleanText = cleanHeadingText(text);
|
|
181
|
+
return (
|
|
182
|
+
<h4
|
|
183
|
+
id={id}
|
|
184
|
+
className="text-lg md:text-xl font-semibold text-gray-900 mt-4 mb-2 scroll-mt-20"
|
|
185
|
+
>
|
|
186
|
+
{cleanText}
|
|
187
|
+
</h4>
|
|
188
|
+
);
|
|
189
|
+
},
|
|
38
190
|
|
|
39
191
|
// Paragraphs
|
|
40
192
|
p: ({ children }) => (
|
|
@@ -43,31 +195,75 @@ export function MarkdownContent({ content }: MarkdownContentProps) {
|
|
|
43
195
|
</p>
|
|
44
196
|
),
|
|
45
197
|
|
|
46
|
-
// Links
|
|
47
|
-
a: ({ href, children }) =>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
198
|
+
// Links - handle anchor links and internal/external links
|
|
199
|
+
a: ({ href, children }) => {
|
|
200
|
+
if (!href) return <>{children}</>;
|
|
201
|
+
|
|
202
|
+
// Handle anchor links (starting with #)
|
|
203
|
+
if (href.startsWith('#')) {
|
|
204
|
+
return (
|
|
205
|
+
<a
|
|
206
|
+
href={href}
|
|
207
|
+
onClick={(e) => {
|
|
208
|
+
e.preventDefault();
|
|
209
|
+
const id = href.slice(1);
|
|
210
|
+
const element = document.getElementById(id);
|
|
211
|
+
if (element) {
|
|
212
|
+
element.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
213
|
+
// Offset for sticky header
|
|
214
|
+
window.scrollBy(0, -80);
|
|
215
|
+
// Update URL without scrolling
|
|
216
|
+
window.history.pushState(null, '', `${pathname}${href}`);
|
|
217
|
+
}
|
|
218
|
+
}}
|
|
219
|
+
className="text-primary hover:text-accent underline"
|
|
220
|
+
>
|
|
221
|
+
{children}
|
|
222
|
+
</a>
|
|
223
|
+
);
|
|
224
|
+
}
|
|
57
225
|
|
|
58
|
-
|
|
226
|
+
// Handle external links
|
|
227
|
+
if (href.startsWith('http')) {
|
|
228
|
+
return (
|
|
229
|
+
<a
|
|
230
|
+
href={href}
|
|
231
|
+
className="text-primary hover:text-accent underline"
|
|
232
|
+
target="_blank"
|
|
233
|
+
rel="noopener noreferrer"
|
|
234
|
+
>
|
|
235
|
+
{children}
|
|
236
|
+
</a>
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Resolve relative markdown links to Next.js routes
|
|
241
|
+
const resolvedHref = resolveMarkdownLink(href, basePath);
|
|
242
|
+
|
|
243
|
+
// Handle internal links
|
|
244
|
+
return (
|
|
245
|
+
<Link
|
|
246
|
+
href={resolvedHref}
|
|
247
|
+
className="text-primary hover:text-primary-dark underline"
|
|
248
|
+
>
|
|
249
|
+
{children}
|
|
250
|
+
</Link>
|
|
251
|
+
);
|
|
252
|
+
},
|
|
253
|
+
|
|
254
|
+
// Lists - Tighter spacing for technical documentation
|
|
59
255
|
ul: ({ children }) => (
|
|
60
|
-
<ul className="list-disc list-
|
|
256
|
+
<ul className="list-disc list-outside mb-3 ml-5 space-y-1 text-gray-700 text-base">
|
|
61
257
|
{children}
|
|
62
258
|
</ul>
|
|
63
259
|
),
|
|
64
260
|
ol: ({ children }) => (
|
|
65
|
-
<ol className="list-decimal list-
|
|
261
|
+
<ol className="list-decimal list-outside mb-3 ml-5 space-y-1 text-gray-700 text-base">
|
|
66
262
|
{children}
|
|
67
263
|
</ol>
|
|
68
264
|
),
|
|
69
265
|
li: ({ children }) => (
|
|
70
|
-
<li className="leading-
|
|
266
|
+
<li className="leading-relaxed pl-1">
|
|
71
267
|
{children}
|
|
72
268
|
</li>
|
|
73
269
|
),
|
|
@@ -109,13 +305,16 @@ export function MarkdownContent({ content }: MarkdownContentProps) {
|
|
|
109
305
|
),
|
|
110
306
|
|
|
111
307
|
// Code
|
|
112
|
-
code({ className, children }) {
|
|
308
|
+
code({ className, children, ...props }: any) {
|
|
113
309
|
const match = /language-(\w+)/.exec(className || '');
|
|
114
310
|
const isInline = !match;
|
|
115
311
|
|
|
312
|
+
// Check if this code is inside a pre tag (block code)
|
|
313
|
+
const isBlockCode = (props.node?.parent as any)?.tagName === 'pre';
|
|
314
|
+
|
|
116
315
|
if (match) {
|
|
117
316
|
return (
|
|
118
|
-
<div className="my-4 rounded-lg overflow-hidden">
|
|
317
|
+
<div className="my-4 rounded-lg overflow-hidden overflow-x-auto">
|
|
119
318
|
<SyntaxHighlighter
|
|
120
319
|
style={vscDarkPlus as any}
|
|
121
320
|
language={match[1]}
|
|
@@ -124,6 +323,8 @@ export function MarkdownContent({ content }: MarkdownContentProps) {
|
|
|
124
323
|
margin: 0,
|
|
125
324
|
borderRadius: '0.5rem',
|
|
126
325
|
fontSize: '0.875rem',
|
|
326
|
+
backgroundColor: '#1e1e1e',
|
|
327
|
+
color: '#d4d4d4',
|
|
127
328
|
}}
|
|
128
329
|
>
|
|
129
330
|
{String(children).replace(/\n$/, '')}
|
|
@@ -132,19 +333,36 @@ export function MarkdownContent({ content }: MarkdownContentProps) {
|
|
|
132
333
|
);
|
|
133
334
|
}
|
|
134
335
|
|
|
336
|
+
// If it's a block code (inside pre), use dark background - no light background
|
|
337
|
+
if (isBlockCode) {
|
|
338
|
+
return (
|
|
339
|
+
<code className="bg-transparent text-code-text text-sm font-mono whitespace-pre">
|
|
340
|
+
{children}
|
|
341
|
+
</code>
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// Inline code
|
|
135
346
|
return (
|
|
136
|
-
<code className="bg-gray-100 text-
|
|
347
|
+
<code className="bg-gray-100 text-primary px-1.5 py-0.5 rounded text-sm font-mono">
|
|
137
348
|
{children}
|
|
138
349
|
</code>
|
|
139
350
|
);
|
|
140
351
|
},
|
|
141
352
|
|
|
142
353
|
// Pre (for code blocks without language)
|
|
143
|
-
pre: ({ children }) =>
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
354
|
+
pre: ({ children }) => {
|
|
355
|
+
// Check if children contain a code element
|
|
356
|
+
const hasCode = React.Children.toArray(children).some(
|
|
357
|
+
(child: any) => child?.type === 'code' || child?.props?.node?.tagName === 'code'
|
|
358
|
+
);
|
|
359
|
+
|
|
360
|
+
return (
|
|
361
|
+
<pre className="bg-code-bg text-code-text p-4 rounded-lg overflow-x-auto my-4 text-sm font-mono">
|
|
362
|
+
{children}
|
|
363
|
+
</pre>
|
|
364
|
+
);
|
|
365
|
+
},
|
|
148
366
|
|
|
149
367
|
// Horizontal rule
|
|
150
368
|
hr: () => (
|
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
import { usePathname, useRouter } from 'next/navigation';
|
|
4
4
|
import { useState } from 'react';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
import {
|
|
6
|
+
STABLE_VERSION_TAG,
|
|
7
|
+
DEV_VERSION_TAG,
|
|
8
|
+
ALL_VERSIONS,
|
|
9
|
+
STABLE_VERSIONS,
|
|
10
|
+
DEV_VERSIONS,
|
|
11
|
+
getVersionInfo
|
|
12
|
+
} from '@/lib/version';
|
|
11
13
|
|
|
12
14
|
export function VersionSelector() {
|
|
13
|
-
const [selectedVersion, setSelectedVersion] = useState(
|
|
15
|
+
const [selectedVersion, setSelectedVersion] = useState(STABLE_VERSION_TAG);
|
|
14
16
|
const router = useRouter();
|
|
15
17
|
const pathname = usePathname();
|
|
16
18
|
|
|
@@ -20,6 +22,45 @@ export function VersionSelector() {
|
|
|
20
22
|
// For now, we just update the UI
|
|
21
23
|
};
|
|
22
24
|
|
|
25
|
+
// Build version options grouped by type
|
|
26
|
+
const versionOptions: Array<{ value: string; label: string; disabled: boolean; group?: string }> = [];
|
|
27
|
+
|
|
28
|
+
// Add stable versions
|
|
29
|
+
if (STABLE_VERSIONS.length > 0) {
|
|
30
|
+
STABLE_VERSIONS.forEach((v) => {
|
|
31
|
+
const isLatest = v.version === STABLE_VERSION_TAG.replace('v', '');
|
|
32
|
+
versionOptions.push({
|
|
33
|
+
value: v.tag,
|
|
34
|
+
label: `${v.tag}${isLatest ? ' (Latest Stable)' : ''}${v.published ? '' : ' (Unpublished)'}`,
|
|
35
|
+
disabled: !v.available,
|
|
36
|
+
group: 'stable'
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Add dev/pre-release versions
|
|
42
|
+
if (DEV_VERSIONS.length > 0) {
|
|
43
|
+
DEV_VERSIONS.forEach((v) => {
|
|
44
|
+
const isLatestDev = v.version === (DEV_VERSION_TAG?.replace('v', '') || '');
|
|
45
|
+
const typeLabel = v.type === 'dev' ? 'Dev' : 'Pre-release';
|
|
46
|
+
versionOptions.push({
|
|
47
|
+
value: v.tag,
|
|
48
|
+
label: `${v.tag} (${typeLabel}${isLatestDev ? ' - Latest' : ''})${v.published ? '' : ' - Unpublished'}`,
|
|
49
|
+
disabled: !v.available,
|
|
50
|
+
group: v.type
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Fallback if no versions loaded
|
|
56
|
+
if (versionOptions.length === 0) {
|
|
57
|
+
versionOptions.push({
|
|
58
|
+
value: STABLE_VERSION_TAG,
|
|
59
|
+
label: `${STABLE_VERSION_TAG} (Current)`,
|
|
60
|
+
disabled: false
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
23
64
|
return (
|
|
24
65
|
<div className="mb-4">
|
|
25
66
|
<label htmlFor="version-select" className="block text-sm font-medium text-gray-700 mb-2">
|
|
@@ -33,7 +74,7 @@ export function VersionSelector() {
|
|
|
33
74
|
aria-label="Select OSSA version"
|
|
34
75
|
aria-describedby="version-description"
|
|
35
76
|
>
|
|
36
|
-
{
|
|
77
|
+
{versionOptions.map((version) => (
|
|
37
78
|
<option
|
|
38
79
|
key={version.value}
|
|
39
80
|
value={version.value}
|
|
@@ -43,6 +84,21 @@ export function VersionSelector() {
|
|
|
43
84
|
</option>
|
|
44
85
|
))}
|
|
45
86
|
</select>
|
|
87
|
+
<p id="version-description" className="mt-1 text-sm text-gray-500">
|
|
88
|
+
{(() => {
|
|
89
|
+
const info = getVersionInfo(selectedVersion.replace('v', ''));
|
|
90
|
+
if (info) {
|
|
91
|
+
if (info.type === 'stable') {
|
|
92
|
+
return 'Stable release - recommended for production';
|
|
93
|
+
} else if (info.type === 'dev') {
|
|
94
|
+
return 'Development version - may contain breaking changes';
|
|
95
|
+
} else {
|
|
96
|
+
return 'Pre-release version - use with caution';
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return 'Select a version to view documentation';
|
|
100
|
+
})()}
|
|
101
|
+
</p>
|
|
46
102
|
</div>
|
|
47
103
|
);
|
|
48
104
|
}
|
|
@@ -179,7 +179,7 @@ export function ExamplesViewer({ examples }: ExamplesViewerProps) {
|
|
|
179
179
|
onClick={() => handleSelectExample(example)}
|
|
180
180
|
className={`w-full text-left px-4 py-3 rounded-lg text-sm transition-all border-2 ${
|
|
181
181
|
selectedExample?.path === example.path
|
|
182
|
-
? 'bg-gradient-to-r from-primary to-
|
|
182
|
+
? 'bg-gradient-to-r from-secondary via-primary to-accent text-white border-primary shadow-md'
|
|
183
183
|
: 'bg-white border-gray-200 hover:border-primary/50 hover:shadow-md'
|
|
184
184
|
}`}
|
|
185
185
|
>
|
|
@@ -231,7 +231,7 @@ export function ExamplesViewer({ examples }: ExamplesViewerProps) {
|
|
|
231
231
|
</div>
|
|
232
232
|
<button
|
|
233
233
|
onClick={() => copyToClipboard(selectedExample.content)}
|
|
234
|
-
className="bg-gradient-to-r from-primary to-
|
|
234
|
+
className="bg-gradient-to-r from-secondary via-primary to-accent text-white px-6 py-3 rounded-lg font-medium hover:shadow-lg transition-all flex items-center gap-2"
|
|
235
235
|
aria-label="Copy example code to clipboard"
|
|
236
236
|
title="Copy code"
|
|
237
237
|
>
|
|
@@ -8,7 +8,7 @@ export function Footer() {
|
|
|
8
8
|
<div>
|
|
9
9
|
<h3 className="text-white font-semibold mb-4">Open Standard Agents</h3>
|
|
10
10
|
<p className="text-sm">
|
|
11
|
-
|
|
11
|
+
OSSA is an Open Standard for AI Agents. The vendor-neutral specification was created by Thomas Scola, founder of Bluefly.io.
|
|
12
12
|
</p>
|
|
13
13
|
</div>
|
|
14
14
|
<div>
|
|
@@ -49,6 +49,11 @@ export function Footer() {
|
|
|
49
49
|
Blog
|
|
50
50
|
</Link>
|
|
51
51
|
</li>
|
|
52
|
+
<li>
|
|
53
|
+
<Link href="/design-guide" className="hover:text-white transition-colors">
|
|
54
|
+
Design Guide
|
|
55
|
+
</Link>
|
|
56
|
+
</li>
|
|
52
57
|
</ul>
|
|
53
58
|
</div>
|
|
54
59
|
<div>
|