@bluefly/openstandardagents 0.2.4 → 0.2.5-RC
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/workflows/release.yml +1 -1
- package/.kiro/specs/agent-buildkit-templates/design.md +495 -0
- package/.kiro/specs/agent-buildkit-templates/requirements.md +165 -0
- package/.kiro/specs/kiro-ide-supercharger/README.md +202 -0
- package/.kiro/specs/kiro-ide-supercharger/design.md +1005 -0
- package/.kiro/specs/kiro-ide-supercharger/requirements.md +141 -0
- package/.kiro/specs/kiro-ide-supercharger/tasks.md +507 -0
- package/.kiro/specs/website-design-audit/design.md +679 -0
- package/.kiro/specs/website-design-audit/requirements.md +199 -0
- package/.releaserc.json +5 -4
- package/.version.json +6 -0
- package/CHANGELOG.md +140 -96
- package/CONTRIBUTING.md +23 -5
- package/README.md +121 -43
- package/bin/ossa +24 -3
- 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 +96 -18
- 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/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/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 +24 -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 → v0.2.4}/ossa-0.2.4-dev.yaml +1 -1
- package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +1819 -0
- 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-dev/ossa-0.2.5-dev.schema.json → v0.2.5/ossa-0.2.5.schema.json} +323 -359
- 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/types/index.d.ts +6 -1
- package/dist/types/index.d.ts.map +1 -1
- package/docs/issue-19-completion-summary.md +648 -0
- package/docs/issue-19-validation.md +351 -0
- package/examples/anthropic/claude-assistant.ossa.json +1 -1
- package/examples/autogen/multi-agent.ossa.json +1 -1
- package/examples/bridges/Dockerfile.production +1 -1
- package/examples/crewai/research-team.ossa.json +1 -1
- package/examples/cursor/code-review-agent.ossa.json +1 -1
- 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 +1 -1
- package/examples/langflow/workflow-agent.ossa.json +1 -1
- package/examples/langgraph/state-machine-agent.ossa.json +1 -1
- package/examples/llamaindex/rag-agent.ossa.json +1 -1
- package/examples/openai/basic-agent.ossa.yaml +61 -0
- package/examples/openai/multi-tool-agent.ossa.json +165 -0
- package/examples/openai/swarm-agent.ossa.json +1 -1
- package/examples/openapi-extensions/README.md +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/vercel/edge-agent.ossa.json +1 -1
- 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/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 +31 -21
- package/release.config.js +20 -5
- package/scripts/bump-version.ts +57 -0
- package/scripts/enhanced-version-manager.ts +257 -0
- package/scripts/gen-types.ts +51 -0
- package/scripts/gen-zod.ts +51 -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/process-doc-templates.ts +37 -0
- package/scripts/schemas/package.schema.ts +75 -0
- package/scripts/setup-branch-protection.sh +33 -0
- package/scripts/sync-version.ts +39 -0
- package/scripts/sync-versions.ts +488 -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 → v0.2.4}/ossa-0.2.4-dev.yaml +1 -1
- package/spec/v0.2.4/ossa-0.2.4.schema.json +1819 -0
- 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-dev/ossa-0.2.5-dev.schema.json → v0.2.5/ossa-0.2.5.schema.json} +323 -359
- 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/website/{.lighthouserc.js → .lighthouserc.ts} +5 -1
- package/website/Dockerfile +18 -5
- package/website/app/about/page.tsx +7 -7
- 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/examples/page.tsx +51 -41
- package/website/app/{globals.css → globals.scss} +50 -23
- 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 +144 -79
- 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 +31 -33
- package/website/components/schema/SchemaComponentsAccordion.tsx +84 -0
- package/website/components/schema/SchemaExplorer.tsx +4 -4
- 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 +18 -25
- package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +8 -8
- package/website/content/docs/OpenAPI-Extensions.md +576 -140
- package/website/content/docs/adapters/openai-adapter.md +693 -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/contributing.md +2 -2
- package/website/content/docs/ecosystem/framework-support.md +0 -2
- package/website/content/docs/examples/AIFlow-Framework-Integration-with-OSSA.md +107 -0
- package/website/content/docs/examples/Migration-Guides.md +2 -2
- package/website/content/docs/for-audiences/{architects.md → Architects.md} +1 -1
- package/website/content/docs/for-audiences/{developers.md → Developers.md} +3 -3
- package/website/content/docs/for-audiences/Enterprises.md +2 -2
- package/website/content/docs/for-audiences/Students-Researchers.md +1 -1
- package/website/content/docs/getting-started/{5-minute-overview.md → 5-Minute-Overview.md} +2 -2
- package/website/content/docs/getting-started/{first-agent.md → First-Agent.md} +1 -1
- package/website/content/docs/getting-started/Hello-World.md +3 -3
- package/website/content/docs/getting-started/{installation.md → Installation.md} +7 -7
- package/website/content/docs/getting-started/index.md +92 -0
- 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/README.md +1 -1
- 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/schema-reference/agent-spec.md +2 -2
- 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/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/use-cases/00-index.md +1 -1
- package/{docs/VERSIONING.md → website/content/docs/versioning.md} +9 -5
- package/website/lib/version.ts +18 -1
- package/website/lib/versions.json +78 -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/_variables.scss +36 -0
- package/website/tailwind.config.ts +93 -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/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 → v0.2.4}/ossa-0.2.4-dev.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 → v0.2.4}/ossa-0.2.4-dev.schema.json +0 -0
- /package/website/content/docs/{examples.md → Examples.md} +0 -0
- /package/website/content/docs/core-concepts/{project-structure.md → Project-Structure.md} +0 -0
- /package/website/content/docs/migration-guides/{00-index.md → 00-INDEX.md} +0 -0
- /package/{docs/migration → website/content/docs/migration-guides}/migration-manifest.json +0 -0
|
@@ -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 && (
|