@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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Link from 'next/link';
|
|
2
2
|
import type { Metadata } from 'next';
|
|
3
|
+
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/Card';
|
|
3
4
|
|
|
4
5
|
export const metadata: Metadata = {
|
|
5
6
|
title: 'About - Open Standard Agents Initiative',
|
|
@@ -10,7 +11,7 @@ export default function AboutPage() {
|
|
|
10
11
|
return (
|
|
11
12
|
<>
|
|
12
13
|
{/* Hero Section */}
|
|
13
|
-
<div className="bg-gradient-to-br from-
|
|
14
|
+
<div className="bg-gradient-to-br from-secondary via-primary to-accent text-white py-20 px-4">
|
|
14
15
|
<div className="container mx-auto max-w-4xl text-center">
|
|
15
16
|
<div className="inline-flex items-center justify-center w-20 h-20 bg-white/20 backdrop-blur-sm rounded-full mb-6">
|
|
16
17
|
<svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -28,7 +29,7 @@ export default function AboutPage() {
|
|
|
28
29
|
<div className="max-w-4xl mx-auto">
|
|
29
30
|
<section className="mb-16">
|
|
30
31
|
<div className="flex items-center mb-6">
|
|
31
|
-
<div className="w-12 h-12 bg-gradient-to-br from-primary to-
|
|
32
|
+
<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">
|
|
32
33
|
<svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
33
34
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" />
|
|
34
35
|
</svg>
|
|
@@ -49,7 +50,7 @@ export default function AboutPage() {
|
|
|
49
50
|
|
|
50
51
|
<section className="mb-16">
|
|
51
52
|
<div className="flex items-center mb-6">
|
|
52
|
-
<div className="w-12 h-12 bg-gradient-to-br from-secondary
|
|
53
|
+
<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">
|
|
53
54
|
<svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
54
55
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
55
56
|
</svg>
|
|
@@ -95,14 +96,14 @@ export default function AboutPage() {
|
|
|
95
96
|
|
|
96
97
|
<section className="mb-16">
|
|
97
98
|
<div className="flex items-center mb-6">
|
|
98
|
-
<div className="w-12 h-12 bg-gradient-to-br from-primary to-
|
|
99
|
+
<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">
|
|
99
100
|
<svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
100
101
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
|
|
101
102
|
</svg>
|
|
102
103
|
</div>
|
|
103
104
|
<h2 className="text-3xl font-bold text-primary">What We Are</h2>
|
|
104
105
|
</div>
|
|
105
|
-
<
|
|
106
|
+
<Card variant="default" padding="md" elevation={1} hover className="mb-4 border-l-4 border-primary">
|
|
106
107
|
<div className="flex items-start">
|
|
107
108
|
<div className="w-10 h-10 bg-primary/10 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
|
|
108
109
|
<span className="text-2xl">✅</span>
|
|
@@ -114,8 +115,8 @@ export default function AboutPage() {
|
|
|
114
115
|
</p>
|
|
115
116
|
</div>
|
|
116
117
|
</div>
|
|
117
|
-
</
|
|
118
|
-
<
|
|
118
|
+
</Card>
|
|
119
|
+
<Card variant="default" padding="md" elevation={1} hover className="mb-4 border-l-4 border-secondary">
|
|
119
120
|
<div className="flex items-start">
|
|
120
121
|
<div className="w-10 h-10 bg-secondary/10 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
|
|
121
122
|
<span className="text-2xl">✅</span>
|
|
@@ -127,8 +128,8 @@ export default function AboutPage() {
|
|
|
127
128
|
</p>
|
|
128
129
|
</div>
|
|
129
130
|
</div>
|
|
130
|
-
</
|
|
131
|
-
<
|
|
131
|
+
</Card>
|
|
132
|
+
<Card variant="default" padding="md" elevation={1} hover className="mb-4 border-l-4 border-primary">
|
|
132
133
|
<div className="flex items-start">
|
|
133
134
|
<div className="w-10 h-10 bg-primary/10 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
|
|
134
135
|
<span className="text-2xl">✅</span>
|
|
@@ -140,7 +141,7 @@ export default function AboutPage() {
|
|
|
140
141
|
</p>
|
|
141
142
|
</div>
|
|
142
143
|
</div>
|
|
143
|
-
</
|
|
144
|
+
</Card>
|
|
144
145
|
</section>
|
|
145
146
|
|
|
146
147
|
<section className="mb-16">
|
|
@@ -152,7 +153,7 @@ export default function AboutPage() {
|
|
|
152
153
|
</div>
|
|
153
154
|
<h2 className="text-3xl font-bold text-gray-700">What We Are NOT</h2>
|
|
154
155
|
</div>
|
|
155
|
-
<
|
|
156
|
+
<Card variant="default" padding="md" elevation={1} hover className="mb-4 bg-gray-50 border-l-4 border-gray-400">
|
|
156
157
|
<div className="flex items-start">
|
|
157
158
|
<div className="w-10 h-10 bg-gray-200 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
|
|
158
159
|
<span className="text-2xl">❌</span>
|
|
@@ -164,8 +165,8 @@ export default function AboutPage() {
|
|
|
164
165
|
</p>
|
|
165
166
|
</div>
|
|
166
167
|
</div>
|
|
167
|
-
</
|
|
168
|
-
<
|
|
168
|
+
</Card>
|
|
169
|
+
<Card variant="default" padding="md" elevation={1} hover className="mb-4 bg-gray-50 border-l-4 border-gray-400">
|
|
169
170
|
<div className="flex items-start">
|
|
170
171
|
<div className="w-10 h-10 bg-gray-200 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
|
|
171
172
|
<span className="text-2xl">❌</span>
|
|
@@ -177,8 +178,8 @@ export default function AboutPage() {
|
|
|
177
178
|
</p>
|
|
178
179
|
</div>
|
|
179
180
|
</div>
|
|
180
|
-
</
|
|
181
|
-
<
|
|
181
|
+
</Card>
|
|
182
|
+
<Card variant="default" padding="md" elevation={1} hover className="mb-4 bg-gray-50 border-l-4 border-gray-400">
|
|
182
183
|
<div className="flex items-start">
|
|
183
184
|
<div className="w-10 h-10 bg-gray-200 rounded-lg flex items-center justify-center mr-4 flex-shrink-0">
|
|
184
185
|
<span className="text-2xl">❌</span>
|
|
@@ -190,12 +191,12 @@ export default function AboutPage() {
|
|
|
190
191
|
</p>
|
|
191
192
|
</div>
|
|
192
193
|
</div>
|
|
193
|
-
</
|
|
194
|
+
</Card>
|
|
194
195
|
</section>
|
|
195
196
|
|
|
196
197
|
<section className="mb-16">
|
|
197
198
|
<div className="flex items-center mb-6">
|
|
198
|
-
<div className="w-12 h-12 bg-gradient-to-br from-
|
|
199
|
+
<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">
|
|
199
200
|
<svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
200
201
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
|
|
201
202
|
</svg>
|
|
@@ -216,7 +217,7 @@ export default function AboutPage() {
|
|
|
216
217
|
<section className="mb-16">
|
|
217
218
|
<div className="bg-gradient-to-br from-primary/10 via-accent/10 to-secondary/10 rounded-2xl p-8 mb-8">
|
|
218
219
|
<div className="flex items-center mb-6">
|
|
219
|
-
<div className="w-12 h-12 bg-gradient-to-br from-primary to-
|
|
220
|
+
<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">
|
|
220
221
|
<svg className="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
221
222
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" />
|
|
222
223
|
</svg>
|
|
@@ -228,47 +229,55 @@ export default function AboutPage() {
|
|
|
228
229
|
</p>
|
|
229
230
|
</div>
|
|
230
231
|
<div className="grid md:grid-cols-2 gap-4">
|
|
231
|
-
<Link href="https://github.com/blueflyio/openstandardagents" target="_blank" rel="noopener noreferrer"
|
|
232
|
-
<
|
|
233
|
-
<
|
|
234
|
-
<
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
232
|
+
<Link href="https://github.com/blueflyio/openstandardagents" target="_blank" rel="noopener noreferrer">
|
|
233
|
+
<Card variant="interactive" padding="md" elevation={1} className="border-l-4 border-primary group h-full">
|
|
234
|
+
<div className="flex items-center mb-3">
|
|
235
|
+
<svg className="w-6 h-6 text-primary mr-2 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
236
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" />
|
|
237
|
+
</svg>
|
|
238
|
+
<h3 className="text-xl font-semibold text-primary">Contribute Code</h3>
|
|
239
|
+
</div>
|
|
240
|
+
<p className="text-gray-700">Submit pull requests, report issues, and help improve the specification.</p>
|
|
241
|
+
</Card>
|
|
239
242
|
</Link>
|
|
240
|
-
<Link href="/docs"
|
|
241
|
-
<
|
|
242
|
-
<
|
|
243
|
-
<
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
243
|
+
<Link href="/docs">
|
|
244
|
+
<Card variant="interactive" padding="md" elevation={1} className="border-l-4 border-secondary group h-full">
|
|
245
|
+
<div className="flex items-center mb-3">
|
|
246
|
+
<svg className="w-6 h-6 text-secondary mr-2 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
247
|
+
<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" />
|
|
248
|
+
</svg>
|
|
249
|
+
<h3 className="text-xl font-semibold text-secondary">Improve Documentation</h3>
|
|
250
|
+
</div>
|
|
251
|
+
<p className="text-gray-700">Help make OSA more accessible with better docs and examples.</p>
|
|
252
|
+
</Card>
|
|
248
253
|
</Link>
|
|
249
|
-
<Link href="/examples"
|
|
250
|
-
<
|
|
251
|
-
<
|
|
252
|
-
<
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
254
|
+
<Link href="/examples">
|
|
255
|
+
<Card variant="interactive" padding="md" elevation={1} className="border-l-4 border-primary group h-full">
|
|
256
|
+
<div className="flex items-center mb-3">
|
|
257
|
+
<svg className="w-6 h-6 text-primary mr-2 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
258
|
+
<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" />
|
|
259
|
+
</svg>
|
|
260
|
+
<h3 className="text-xl font-semibold text-primary">Share Examples</h3>
|
|
261
|
+
</div>
|
|
262
|
+
<p className="text-gray-700">Contribute real-world examples and use cases.</p>
|
|
263
|
+
</Card>
|
|
257
264
|
</Link>
|
|
258
|
-
<Link href="https://github.com/blueflyio/openstandardagents/issues" target="_blank" rel="noopener noreferrer"
|
|
259
|
-
<
|
|
260
|
-
<
|
|
261
|
-
<
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
265
|
+
<Link href="https://github.com/blueflyio/openstandardagents/issues" target="_blank" rel="noopener noreferrer">
|
|
266
|
+
<Card variant="interactive" padding="md" elevation={1} className="border-l-4 border-secondary group h-full">
|
|
267
|
+
<div className="flex items-center mb-3">
|
|
268
|
+
<svg className="w-6 h-6 text-secondary mr-2 group-hover:scale-110 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
269
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z" />
|
|
270
|
+
</svg>
|
|
271
|
+
<h3 className="text-xl font-semibold text-secondary">Provide Feedback</h3>
|
|
272
|
+
</div>
|
|
273
|
+
<p className="text-gray-700">Share your experience and help prioritize features.</p>
|
|
274
|
+
</Card>
|
|
266
275
|
</Link>
|
|
267
276
|
</div>
|
|
268
277
|
</section>
|
|
269
278
|
|
|
270
279
|
<section className="mb-12">
|
|
271
|
-
<div className="bg-gradient-to-r from-primary to-
|
|
280
|
+
<div className="bg-gradient-to-r from-secondary via-primary to-accent text-white rounded-2xl p-8">
|
|
272
281
|
<div className="flex items-center mb-4">
|
|
273
282
|
<svg className="w-8 h-8 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
274
283
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
|
|
@@ -13,6 +13,31 @@ interface PageProps {
|
|
|
13
13
|
|
|
14
14
|
const blogDirectory = path.join(process.cwd(), 'content/blog');
|
|
15
15
|
|
|
16
|
+
// Helper function to fix malformed YAML frontmatter (double quotes)
|
|
17
|
+
function fixYamlFrontmatter(content: string): string {
|
|
18
|
+
// Fix double-quoted values in frontmatter
|
|
19
|
+
// Pattern: key: ""value"" -> key: "value"
|
|
20
|
+
// Also handle escaped quotes in values
|
|
21
|
+
let fixed = content;
|
|
22
|
+
|
|
23
|
+
// Fix double quotes around values (key: ""value"" -> key: "value")
|
|
24
|
+
fixed = fixed.replace(/(\w+):\s*""([^"]*)""/g, '$1: "$2"');
|
|
25
|
+
|
|
26
|
+
// Fix escaped quotes in excerpt (\"value\" -> value)
|
|
27
|
+
fixed = fixed.replace(/excerpt:\s*"\\"([^"]*)\\""/g, 'excerpt: "$1"');
|
|
28
|
+
|
|
29
|
+
return fixed;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Helper to clean extracted values
|
|
33
|
+
function cleanValue(value: any): any {
|
|
34
|
+
if (typeof value === 'string') {
|
|
35
|
+
// Remove surrounding double quotes if present
|
|
36
|
+
return value.replace(/^""(.*)""$/, '$1').replace(/^"(.*)"$/, '$1');
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
|
|
16
41
|
function getBlogPost(slug: string): { content: string; metadata: any } | null {
|
|
17
42
|
const fullPath = path.join(blogDirectory, `${slug}.md`);
|
|
18
43
|
|
|
@@ -20,20 +45,40 @@ function getBlogPost(slug: string): { content: string; metadata: any } | null {
|
|
|
20
45
|
return null;
|
|
21
46
|
}
|
|
22
47
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
48
|
+
try {
|
|
49
|
+
const fileContents = fs.readFileSync(fullPath, 'utf8');
|
|
50
|
+
|
|
51
|
+
// Fix malformed YAML before parsing
|
|
52
|
+
const fixedContent = fixYamlFrontmatter(fileContents);
|
|
53
|
+
const { data, content } = matter(fixedContent);
|
|
54
|
+
|
|
55
|
+
const dateValue = cleanValue(data.date) || new Date().toISOString();
|
|
56
|
+
const dateObj = new Date(dateValue);
|
|
57
|
+
const validDate = isNaN(dateObj.getTime()) ? new Date() : dateObj;
|
|
58
|
+
|
|
59
|
+
// Format date during server-side rendering to avoid hydration mismatch
|
|
60
|
+
const formattedDate = validDate.toLocaleDateString('en-US', {
|
|
61
|
+
year: 'numeric',
|
|
62
|
+
month: 'long',
|
|
63
|
+
day: 'numeric'
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
content,
|
|
68
|
+
metadata: {
|
|
69
|
+
title: cleanValue(data.title) || slug,
|
|
70
|
+
date: validDate.toISOString(),
|
|
71
|
+
formattedDate,
|
|
72
|
+
author: cleanValue(data.author) || 'OSSA Team',
|
|
73
|
+
category: cleanValue(data.category) || 'General',
|
|
74
|
+
tags: Array.isArray(data.tags) ? data.tags.map(cleanValue) : [],
|
|
75
|
+
excerpt: cleanValue(data.excerpt) || '',
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.error(`Error parsing blog post ${slug}:`, error);
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
37
82
|
}
|
|
38
83
|
|
|
39
84
|
function getAllBlogSlugs(): string[] {
|
|
@@ -97,11 +142,7 @@ export default async function BlogPostPage({ params }: PageProps) {
|
|
|
97
142
|
<svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
98
143
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
|
|
99
144
|
</svg>
|
|
100
|
-
<span>{
|
|
101
|
-
year: 'numeric',
|
|
102
|
-
month: 'long',
|
|
103
|
-
day: 'numeric'
|
|
104
|
-
})}</span>
|
|
145
|
+
<span>{post.metadata.formattedDate}</span>
|
|
105
146
|
</div>
|
|
106
147
|
</div>
|
|
107
148
|
</div>
|
|
@@ -109,7 +150,7 @@ export default async function BlogPostPage({ params }: PageProps) {
|
|
|
109
150
|
|
|
110
151
|
{/* Content */}
|
|
111
152
|
<div className="container mx-auto max-w-4xl px-4 py-12">
|
|
112
|
-
<article className="
|
|
153
|
+
<article className="bg-white p-8 md:p-12 rounded-lg shadow-lg border border-gray-200">
|
|
113
154
|
<div className="prose prose-lg max-w-none
|
|
114
155
|
prose-headings:text-gray-900
|
|
115
156
|
prose-h1:text-4xl prose-h1:font-bold prose-h1:mb-6
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import Link from 'next/link';
|
|
2
|
+
import type { Metadata } from 'next';
|
|
2
3
|
import fs from 'fs';
|
|
3
4
|
import path from 'path';
|
|
4
5
|
import matter from 'gray-matter';
|
|
5
6
|
|
|
7
|
+
export const metadata: Metadata = {
|
|
8
|
+
title: 'OSSA Blog - Insights, Research, and Updates',
|
|
9
|
+
description: 'Insights, research, and updates on the open standard for AI agents. Learn about OSSA, agent orchestration, and best practices.',
|
|
10
|
+
};
|
|
11
|
+
|
|
6
12
|
interface BlogPost {
|
|
7
13
|
slug: string;
|
|
8
14
|
title: string;
|
|
9
15
|
date: string;
|
|
16
|
+
formattedDate: string;
|
|
10
17
|
author: string;
|
|
11
18
|
category: string;
|
|
12
19
|
tags: string[];
|
|
@@ -15,38 +22,121 @@ interface BlogPost {
|
|
|
15
22
|
|
|
16
23
|
const blogDirectory = path.join(process.cwd(), 'content/blog');
|
|
17
24
|
|
|
25
|
+
// Helper function to fix malformed YAML frontmatter (double quotes)
|
|
26
|
+
function fixYamlFrontmatter(content: string): string {
|
|
27
|
+
// Fix double-quoted values in frontmatter
|
|
28
|
+
// Pattern: key: ""value"" -> key: "value"
|
|
29
|
+
// Also handle escaped quotes in values
|
|
30
|
+
let fixed = content;
|
|
31
|
+
|
|
32
|
+
// Fix double quotes around values (key: ""value"" -> key: "value")
|
|
33
|
+
fixed = fixed.replace(/(\w+):\s*""([^"]*)""/g, '$1: "$2"');
|
|
34
|
+
|
|
35
|
+
// Fix escaped quotes in excerpt (\"value\" -> value)
|
|
36
|
+
fixed = fixed.replace(/excerpt:\s*"\\"([^"]*)\\""/g, 'excerpt: "$1"');
|
|
37
|
+
|
|
38
|
+
return fixed;
|
|
39
|
+
}
|
|
40
|
+
|
|
18
41
|
function getAllBlogPosts(): BlogPost[] {
|
|
42
|
+
if (!fs.existsSync(blogDirectory)) {
|
|
43
|
+
console.warn(`Blog directory does not exist: ${blogDirectory}`);
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
|
|
19
47
|
const fileNames = fs.readdirSync(blogDirectory);
|
|
20
48
|
const posts = fileNames
|
|
21
49
|
.filter(fileName => fileName.endsWith('.md'))
|
|
22
50
|
.map(fileName => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
51
|
+
try {
|
|
52
|
+
const slug = fileName.replace(/\.md$/, '');
|
|
53
|
+
const fullPath = path.join(blogDirectory, fileName);
|
|
54
|
+
const fileContents = fs.readFileSync(fullPath, 'utf8');
|
|
55
|
+
|
|
56
|
+
// Fix malformed YAML before parsing
|
|
57
|
+
const fixedContent = fixYamlFrontmatter(fileContents);
|
|
58
|
+
const { data } = matter(fixedContent);
|
|
59
|
+
|
|
60
|
+
// Clean up extracted values (remove extra quotes if present)
|
|
61
|
+
const cleanValue = (value: any): any => {
|
|
62
|
+
if (typeof value === 'string') {
|
|
63
|
+
// Remove surrounding double quotes if present
|
|
64
|
+
return value.replace(/^""(.*)""$/, '$1').replace(/^"(.*)"$/, '$1');
|
|
65
|
+
}
|
|
66
|
+
return value;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const dateValue = cleanValue(data.date) || new Date().toISOString();
|
|
70
|
+
const dateObj = new Date(dateValue);
|
|
71
|
+
const validDate = isNaN(dateObj.getTime()) ? new Date() : dateObj;
|
|
72
|
+
|
|
73
|
+
// Format date during server-side rendering to avoid hydration mismatch
|
|
74
|
+
const formattedDate = validDate.toLocaleDateString('en-US', {
|
|
75
|
+
year: 'numeric',
|
|
76
|
+
month: 'long',
|
|
77
|
+
day: 'numeric'
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
slug,
|
|
82
|
+
title: cleanValue(data.title) || slug,
|
|
83
|
+
date: validDate.toISOString(),
|
|
84
|
+
formattedDate,
|
|
85
|
+
author: cleanValue(data.author) || 'OSSA Team',
|
|
86
|
+
category: cleanValue(data.category) || 'General',
|
|
87
|
+
tags: Array.isArray(data.tags) ? data.tags.map(cleanValue) : [],
|
|
88
|
+
excerpt: cleanValue(data.excerpt) || '',
|
|
89
|
+
};
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error(`Error parsing blog post ${fileName}:`, error);
|
|
92
|
+
// Return a default post so the page doesn't crash
|
|
93
|
+
const defaultDate = new Date();
|
|
94
|
+
return {
|
|
95
|
+
slug: fileName.replace(/\.md$/, ''),
|
|
96
|
+
title: fileName.replace(/\.md$/, ''),
|
|
97
|
+
date: defaultDate.toISOString(),
|
|
98
|
+
formattedDate: defaultDate.toLocaleDateString('en-US', {
|
|
99
|
+
year: 'numeric',
|
|
100
|
+
month: 'long',
|
|
101
|
+
day: 'numeric'
|
|
102
|
+
}),
|
|
103
|
+
author: 'OSSA Team',
|
|
104
|
+
category: 'General',
|
|
105
|
+
tags: [],
|
|
106
|
+
excerpt: '',
|
|
107
|
+
};
|
|
108
|
+
}
|
|
37
109
|
})
|
|
38
|
-
.
|
|
110
|
+
.filter(post => post !== null && post !== undefined)
|
|
111
|
+
.sort((a, b) => {
|
|
112
|
+
try {
|
|
113
|
+
const dateA = new Date(a.date).getTime();
|
|
114
|
+
const dateB = new Date(b.date).getTime();
|
|
115
|
+
if (isNaN(dateA) || isNaN(dateB)) return 0;
|
|
116
|
+
return dateB - dateA;
|
|
117
|
+
} catch {
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
39
121
|
|
|
40
122
|
return posts;
|
|
41
123
|
}
|
|
42
124
|
|
|
43
125
|
export default function BlogPage() {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
126
|
+
let posts: BlogPost[] = [];
|
|
127
|
+
let featuredPost: BlogPost | undefined;
|
|
128
|
+
let otherPosts: BlogPost[] = [];
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
posts = getAllBlogPosts();
|
|
132
|
+
// Featured post - Welcome to OSSA
|
|
133
|
+
const featuredSlug = 'welcome-to-ossa';
|
|
134
|
+
featuredPost = posts.find(p => p.slug.toLowerCase() === featuredSlug);
|
|
135
|
+
otherPosts = posts.filter(p => p.slug !== featuredPost?.slug);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
console.error('Error loading blog posts:', error);
|
|
138
|
+
// Continue with empty arrays - page will show "No blog posts yet"
|
|
139
|
+
}
|
|
50
140
|
|
|
51
141
|
return (
|
|
52
142
|
<div className="min-h-screen bg-gray-50">
|
|
@@ -54,9 +144,14 @@ export default function BlogPage() {
|
|
|
54
144
|
<div className="bg-gradient-to-br from-primary via-blue-600 to-secondary text-white py-20 px-4">
|
|
55
145
|
<div className="container mx-auto max-w-6xl">
|
|
56
146
|
<h1 className="text-5xl font-bold mb-6">OSSA Blog</h1>
|
|
57
|
-
<p className="text-xl opacity-90 max-w-3xl">
|
|
147
|
+
<p className="text-xl opacity-90 max-w-3xl mb-4">
|
|
58
148
|
Insights, research, and updates on the open standard for AI agents
|
|
59
149
|
</p>
|
|
150
|
+
{featuredPost && featuredPost.title && featuredPost.excerpt && (
|
|
151
|
+
<p className="text-lg opacity-80 max-w-3xl">
|
|
152
|
+
Start with our featured article: <strong>"{featuredPost.title}"</strong> - {featuredPost.excerpt}
|
|
153
|
+
</p>
|
|
154
|
+
)}
|
|
60
155
|
</div>
|
|
61
156
|
</div>
|
|
62
157
|
|
|
@@ -89,11 +184,7 @@ export default function BlogPage() {
|
|
|
89
184
|
<div className="flex items-center gap-4 text-sm text-gray-500">
|
|
90
185
|
<span className="font-medium">{featuredPost.author}</span>
|
|
91
186
|
<span>•</span>
|
|
92
|
-
<span>{
|
|
93
|
-
year: 'numeric',
|
|
94
|
-
month: 'long',
|
|
95
|
-
day: 'numeric'
|
|
96
|
-
})}</span>
|
|
187
|
+
<span>{featuredPost.formattedDate}</span>
|
|
97
188
|
</div>
|
|
98
189
|
<span className="text-primary font-medium">Read article →</span>
|
|
99
190
|
</div>
|
|
@@ -110,7 +201,7 @@ export default function BlogPage() {
|
|
|
110
201
|
<Link
|
|
111
202
|
key={post.slug}
|
|
112
203
|
href={`/blog/${post.slug}`}
|
|
113
|
-
className="
|
|
204
|
+
className="bg-white p-6 rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 block border border-gray-200"
|
|
114
205
|
>
|
|
115
206
|
<div className="mb-4">
|
|
116
207
|
<span className="inline-block px-3 py-1 text-xs font-semibold text-primary bg-blue-100 rounded-full">
|
|
@@ -128,11 +219,7 @@ export default function BlogPage() {
|
|
|
128
219
|
|
|
129
220
|
<div className="flex items-center justify-between text-sm text-gray-500">
|
|
130
221
|
<span>{post.author}</span>
|
|
131
|
-
<span>{
|
|
132
|
-
year: 'numeric',
|
|
133
|
-
month: 'long',
|
|
134
|
-
day: 'numeric'
|
|
135
|
-
})}</span>
|
|
222
|
+
<span>{post.formattedDate}</span>
|
|
136
223
|
</div>
|
|
137
224
|
|
|
138
225
|
{post.tags.length > 0 && (
|