@bluefly/openstandardagents 0.2.7 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devfile.yaml +1 -1
- package/.env.example +1 -1
- package/.version.json +2 -2
- package/.wiki-config.json +24 -0
- package/CHANGELOG.md +11 -18
- package/CODEOWNERS +75 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +171 -243
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/repositories/schema.repository.d.ts +6 -1
- package/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +49 -27
- package/dist/repositories/schema.repository.js.map +1 -1
- package/dist/services/migration.service.d.ts +4 -3
- package/dist/services/migration.service.d.ts.map +1 -1
- package/dist/services/migration.service.js +11 -10
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/release-automation/release.service.js +1 -1
- package/dist/services/release-automation/release.service.js.map +1 -1
- package/dist/services/release-automation/schemas/release.schema.js +1 -1
- package/dist/services/runtime/claude/claude-adapter.js +1 -1
- package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
- package/dist/spec/v0.2.8/CHANGELOG.md +401 -0
- package/dist/spec/v0.2.8/README.md +72 -0
- package/dist/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/dist/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/dist/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/{spec/v0.2.6-dev/ossa-0.2.5.schema.json → dist/spec/v0.2.8/ossa-0.2.8.schema.json} +1509 -52
- package/dist/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/version.d.ts +68 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +156 -0
- package/dist/utils/version.js.map +1 -0
- package/eslint-report.json +1 -0
- package/examples/adk-integration/code-review-workflow.yml +1 -1
- package/examples/adk-integration/customer-support.yml +1 -1
- package/examples/adk-integration/data-pipeline.yml +1 -1
- package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
- package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
- package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
- package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
- package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
- package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
- package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
- package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
- package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
- package/examples/anthropic/claude-assistant.ossa.json +1 -1
- package/examples/autogen/multi-agent.ossa.json +1 -1
- package/examples/claude-code/code-reviewer.ossa.yaml +78 -0
- package/examples/claude-code/ossa-validator.ossa.yaml +80 -0
- package/examples/common_npm/agent-router.ossa.yaml +1 -0
- package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
- package/examples/crewai/research-team.ossa.json +1 -1
- package/examples/cursor/code-review-agent.ossa.json +1 -1
- package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -0
- package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
- package/examples/extensions/drupal-v1.yml +1 -1
- package/examples/extensions/kagent-v1.yml +1 -1
- package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
- package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
- package/examples/kagent/compliance-validator.ossa.yaml +1 -1
- package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
- package/examples/kagent/documentation-agent.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -0
- package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
- package/examples/kagent/security-scanner.ossa.yaml +1 -1
- package/examples/langchain/chain-agent.ossa.json +1 -1
- package/examples/langflow/workflow-agent.ossa.json +1 -1
- package/examples/langgraph/state-machine-agent.ossa.json +1 -1
- package/examples/llamaindex/rag-agent.ossa.json +1 -1
- package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
- package/examples/multi-agent/README.md +74 -0
- package/examples/multi-agent/conditional-router.ossa.yaml +42 -0
- package/examples/multi-agent/parallel-execution.ossa.yaml +54 -0
- package/examples/multi-agent/sequential-pipeline.ossa.yaml +45 -0
- package/examples/openai/basic-agent.ossa.yaml +1 -1
- package/examples/openai/multi-tool-agent.ossa.json +1 -1
- package/examples/openai/swarm-agent.ossa.json +1 -1
- package/examples/production/document-analyzer-openai.yml +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/spec-examples/audit-agent.yml +1 -1
- package/examples/spec-examples/chat-agent.yml +1 -1
- package/examples/spec-examples/compliance-agent.yml +1 -1
- package/examples/spec-examples/monitoring-agent.yml +1 -1
- package/examples/spec-examples/workflow-agent.yml +1 -1
- package/examples/templates/ossa-compliance.yaml +1 -1
- package/examples/vercel/edge-agent.ossa.json +1 -1
- package/gl-code-quality-report.json +62 -0
- package/llms-ctx-full.txt +39 -0
- package/llms-ctx.txt +39 -0
- package/llms.txt +47 -0
- package/package.json +3 -2
- package/scripts/eslint-to-codequality.cjs +34 -0
- package/scripts/generate-llms-ctx.sh +17 -0
- package/scripts/generate-schema-docs.ts +31 -10
- package/scripts/sync-version.js +4 -12
- package/scripts/validate-schema.ts +2 -1
- package/spec/v0.2.8/CHANGELOG.md +401 -0
- package/spec/v0.2.8/README.md +72 -0
- package/spec/v0.2.8/migrations/v0.2.3-to-v0.2.4.md +599 -0
- package/spec/v0.2.8/migrations/v0.2.5-RC-to-v0.2.6.md +65 -0
- package/spec/v0.2.8/migrations/v0.2.6-to-v0.2.8.md +81 -0
- package/{dist/spec/v0.2.6-dev/ossa-0.2.5.schema.json → spec/v0.2.8/ossa-0.2.8.schema.json} +1509 -52
- package/spec/v0.2.8/ossa-0.2.8.yaml +581 -0
- package/test-results/junit.xml +299 -0
- package/bin/validate-ossa-0.2.5-RC.ts +0 -244
- package/dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
- package/scripts/lib/exec.ts +0 -37
- package/scripts/lib/file-ops.ts +0 -58
- package/scripts/lib/version.ts +0 -83
- package/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json +0 -1696
- package/website/.lighthouserc.ts +0 -24
- package/website/.prettierrc +0 -10
- package/website/DESIGN_SYSTEM_IMPLEMENTATION.md +0 -445
- package/website/Dockerfile +0 -30
- package/website/app/about/page.tsx +0 -304
- package/website/app/blog/[slug]/page.tsx +0 -208
- package/website/app/blog/page.tsx +0 -249
- package/website/app/design-guide/page.tsx +0 -511
- package/website/app/docs/[[...slug]]/page.tsx +0 -847
- package/website/app/docs/core-concepts/project-structure/page.tsx +0 -349
- package/website/app/ecosystem/page.tsx +0 -410
- package/website/app/examples/page.tsx +0 -133
- package/website/app/globals.scss +0 -370
- package/website/app/layout.tsx +0 -106
- package/website/app/license/page.tsx +0 -183
- package/website/app/not-found.tsx +0 -18
- package/website/app/page.tsx +0 -686
- package/website/app/page.tsx.bak +0 -679
- package/website/app/page.tsx.bak2 +0 -649
- package/website/app/playground/page.tsx +0 -487
- package/website/app/robots.ts +0 -19
- package/website/app/rss.xml/route.ts +0 -74
- package/website/app/schema/page.tsx +0 -1001
- package/website/app/sitemap.ts +0 -56
- package/website/app/specification/page.tsx +0 -287
- package/website/components/InstallCommand.tsx +0 -96
- package/website/components/Logo.tsx +0 -97
- package/website/components/StructuredData.tsx +0 -65
- package/website/components/docs/DocsSearch.tsx +0 -104
- package/website/components/docs/DocsSidebar.tsx +0 -155
- package/website/components/docs/MarkdownContent.tsx +0 -401
- package/website/components/docs/VersionSelector.tsx +0 -105
- package/website/components/examples/ExamplesViewer.tsx +0 -293
- package/website/components/layout/Footer.tsx +0 -116
- package/website/components/layout/Header.tsx +0 -172
- package/website/components/schema/SchemaComponentsAccordion.tsx +0 -84
- package/website/components/schema/SchemaExplorer.tsx +0 -213
- package/website/components/ui/Badge.tsx +0 -82
- package/website/components/ui/Button.tsx +0 -116
- package/website/components/ui/Card.tsx +0 -167
- package/website/components/ui/Checkbox.tsx +0 -141
- package/website/components/ui/Input.tsx +0 -169
- package/website/components/ui/Radio.tsx +0 -141
- package/website/components/ui/Select.tsx +0 -182
- package/website/components/ui/Tag.tsx +0 -158
- package/website/components/ui/Textarea.tsx +0 -195
- package/website/components/ui/index.ts +0 -11
- package/website/content/blog/OpenAPI-AI-Agents-Standard.md +0 -285
- package/website/content/blog/Why-Formal-Standards-Matter-Now.md +0 -198
- package/website/content/blog/gitlab-kubernetes-agent-ecosystem.md +0 -286
- package/website/content/blog/introducing-ossa-framework.md +0 -328
- package/website/content/blog/ossa-production-results.md +0 -279
- package/website/content/blog/welcome-to-ossa.md +0 -43
- package/website/content/blog/why-ai-agents-need-open-standard.md +0 -98
- package/website/content/docs/00-home.md +0 -153
- package/website/content/docs/adapters/openai-adapter.md +0 -693
- package/website/content/docs/agents/catalog.md +0 -28
- package/website/content/docs/aiflow-framework-integration-with-ossa.md +0 -107
- package/website/content/docs/api-reference/index.md +0 -38
- package/website/content/docs/api-reference/ossa-core-api.md +0 -634
- package/website/content/docs/api-reference/ossa-registry-api.md +0 -515
- package/website/content/docs/api-reference/unified-agent-gateway.md +0 -599
- package/website/content/docs/architecture/execution-flow.md +0 -335
- package/website/content/docs/architecture/multi-agent-systems.md +0 -737
- package/website/content/docs/architecture/overview.md +0 -121
- package/website/content/docs/architecture/stack-integration.md +0 -461
- package/website/content/docs/changelog.md +0 -246
- package/website/content/docs/cli-reference/index.md +0 -111
- package/website/content/docs/cli-reference/ossa-agents.md +0 -70
- package/website/content/docs/cli-reference/ossa-export.md +0 -56
- package/website/content/docs/cli-reference/ossa-generate.md +0 -66
- package/website/content/docs/cli-reference/ossa-gitlab-agent.md +0 -57
- package/website/content/docs/cli-reference/ossa-import.md +0 -56
- package/website/content/docs/cli-reference/ossa-init.md +0 -57
- package/website/content/docs/cli-reference/ossa-migrate.md +0 -62
- package/website/content/docs/cli-reference/ossa-run.md +0 -66
- package/website/content/docs/cli-reference/ossa-schema.md +0 -57
- package/website/content/docs/cli-reference/ossa-setup.md +0 -57
- package/website/content/docs/cli-reference/ossa-validate.md +0 -66
- package/website/content/docs/configuration/index.md +0 -97
- package/website/content/docs/contributing.md +0 -599
- package/website/content/docs/deployment/github-mirroring.md +0 -924
- package/website/content/docs/documentation.md +0 -100
- package/website/content/docs/ecosystem/framework-support.md +0 -1361
- package/website/content/docs/ecosystem/overview.md +0 -366
- package/website/content/docs/errors/index.md +0 -10
- package/website/content/docs/examples/aiflow-framework-integration-with-ossa.md +0 -107
- package/website/content/docs/examples/catalog.md +0 -300
- package/website/content/docs/for-audiences/students-researchers.md +0 -122
- package/website/content/docs/getting-started/index.md +0 -92
- package/website/content/docs/getting-started/installation.md +0 -155
- package/website/content/docs/getting-started/running-agents.md +0 -309
- package/website/content/docs/getting-started.md +0 -91
- package/website/content/docs/integrations/aiflow.md +0 -104
- package/website/content/docs/integrations/drupal.md +0 -105
- package/website/content/docs/migration-guides/agent-schema-comparison.md +0 -232
- package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +0 -1750
- package/website/content/docs/migration-guides/crewai-to-ossa.md +0 -274
- package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +0 -2017
- package/website/content/docs/migration-guides/general-agent-schema.yml +0 -247
- package/website/content/docs/migration-guides/index.md +0 -133
- package/website/content/docs/migration-guides/langchain-to-ossa.md +0 -1714
- package/website/content/docs/migration-guides/langflow-to-ossa.md +0 -2075
- package/website/content/docs/migration-guides/migration-manifest.json +0 -64
- package/website/content/docs/migration-guides/openai-to-ossa.md +0 -1202
- package/website/content/docs/openapi-extensions/examples.md +0 -550
- package/website/content/docs/openapi-extensions/index.md +0 -551
- package/website/content/docs/openapi-extensions/operation-extensions.md +0 -457
- package/website/content/docs/openapi-extensions/root-extensions.md +0 -410
- package/website/content/docs/ossa-compliant-badge.md +0 -251
- package/website/content/docs/pre-release/index.md +0 -175
- package/website/content/docs/quick-reference.md +0 -17
- package/website/content/docs/readme.md +0 -35
- package/website/content/docs/releases/v0.2.6.md +0 -99
- package/website/content/docs/schema-reference/agent-capabilities.md +0 -50
- package/website/content/docs/schema-reference/agent-id.md +0 -52
- package/website/content/docs/schema-reference/agent-name.md +0 -50
- package/website/content/docs/schema-reference/agent-role.md +0 -54
- package/website/content/docs/schema-reference/agent-spec.md +0 -406
- package/website/content/docs/schema-reference/agent-version.md +0 -50
- package/website/content/docs/schema-reference/autonomy.md +0 -568
- package/website/content/docs/schema-reference/constraints.md +0 -543
- package/website/content/docs/schema-reference/index.md +0 -45
- package/website/content/docs/schema-reference/llm-config.md +0 -445
- package/website/content/docs/schema-reference/observability.md +0 -654
- package/website/content/docs/schema-reference/ossa-manifest.md +0 -309
- package/website/content/docs/schema-reference/taxonomy.md +0 -509
- package/website/content/docs/schema-reference/tools.md +0 -628
- package/website/content/docs/templates/blog-post.md +0 -43
- package/website/content/docs/types-reference/index.md +0 -105
- package/website/content/docs/use-cases/00-index.md +0 -395
- package/website/content/docs/use-cases/cicd-code-review.md +0 -1236
- package/website/content/docs/use-cases/customer-support.md +0 -1234
- package/website/content/docs/use-cases/enterprise-compliance.md +0 -1208
- package/website/content/docs/use-cases/research-multi-agent.md +0 -1161
- package/website/content/docs/versioning.md +0 -288
- package/website/dev.sh +0 -53
- package/website/docker-compose.dev.yml +0 -36
- package/website/lib/version.ts +0 -35
- package/website/lib/versions.json +0 -103
- package/website/next.config.ts +0 -18
- package/website/nginx.conf +0 -32
- package/website/package-lock.json +0 -9679
- package/website/package.json +0 -59
- package/website/postcss.config.mjs +0 -9
- package/website/scripts/fetch-versions.js +0 -166
- package/website/scripts/generate-examples-index.js +0 -163
- package/website/scripts/merge-docs-to-wiki.ts +0 -207
- package/website/scripts/sync-version.js +0 -72
- package/website/scripts/sync-wiki.ts +0 -322
- package/website/scripts/upload-wiki.ts +0 -199
- package/website/styles/_spacing.scss +0 -453
- package/website/styles/_tokens.scss +0 -245
- package/website/styles/_typography.scss +0 -361
- package/website/styles/_variables.scss +0 -287
- package/website/tailwind.config.ts +0 -170
package/website/package.json
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ossa-website",
|
|
3
|
-
"version": "0.2.6",
|
|
4
|
-
"description": "Open Standard Agents - The OpenAPI for AI Agents",
|
|
5
|
-
"private": true,
|
|
6
|
-
"scripts": {
|
|
7
|
-
"sync-version": "node scripts/sync-version.js",
|
|
8
|
-
"fetch-versions": "node scripts/fetch-versions.js",
|
|
9
|
-
"sync-wiki": "npx tsx scripts/sync-wiki.ts",
|
|
10
|
-
"merge-docs-to-wiki": "npx tsx scripts/merge-docs-to-wiki.ts",
|
|
11
|
-
"upload-wiki": "npx tsx scripts/upload-wiki.ts",
|
|
12
|
-
"generate-examples": "node scripts/generate-examples-index.js",
|
|
13
|
-
"dev": "npm run fetch-versions && npm run sync-version && npm run generate-examples && next dev",
|
|
14
|
-
"build": "npm run fetch-versions && npm run sync-version && npm run sync-wiki && npm run generate-examples && next build",
|
|
15
|
-
"build:no-wiki": "npm run fetch-versions && npm run sync-version && npm run generate-examples && next build",
|
|
16
|
-
"start": "next start",
|
|
17
|
-
"lint": "next lint",
|
|
18
|
-
"export": "npm run fetch-versions && npm run sync-version && npm run sync-wiki && npm run generate-examples && next build"
|
|
19
|
-
},
|
|
20
|
-
"keywords": [
|
|
21
|
-
"ossa",
|
|
22
|
-
"ai-agents",
|
|
23
|
-
"standard",
|
|
24
|
-
"specification"
|
|
25
|
-
],
|
|
26
|
-
"author": "OSSA Community",
|
|
27
|
-
"license": "MIT",
|
|
28
|
-
"dependencies": {
|
|
29
|
-
"axios": "^1.7.7",
|
|
30
|
-
"@monaco-editor/react": "^4.6.0",
|
|
31
|
-
"@types/node": "^24.10.0",
|
|
32
|
-
"@types/react": "^18.3.1",
|
|
33
|
-
"ajv": "^8.17.1",
|
|
34
|
-
"ajv-formats": "^3.0.1",
|
|
35
|
-
"autoprefixer": "^10.4.22",
|
|
36
|
-
"date-fns": "^4.1.0",
|
|
37
|
-
"gray-matter": "^4.0.3",
|
|
38
|
-
"lucide-react": "^0.294.0",
|
|
39
|
-
"next": "^15.5.6",
|
|
40
|
-
"postcss": "^8.5.6",
|
|
41
|
-
"prism-react-renderer": "^2.3.1",
|
|
42
|
-
"react": "^18.3.1",
|
|
43
|
-
"react-dom": "^18.3.1",
|
|
44
|
-
"react-markdown": "^9.0.1",
|
|
45
|
-
"react-syntax-highlighter": "^15.5.0",
|
|
46
|
-
"remark-gfm": "^4.0.0",
|
|
47
|
-
"tailwindcss": "^3.4.1",
|
|
48
|
-
"typescript": "^5.9.3",
|
|
49
|
-
"yaml": "^2.8.1"
|
|
50
|
-
},
|
|
51
|
-
"devDependencies": {
|
|
52
|
-
"@types/react-dom": "^18.3.1",
|
|
53
|
-
"@types/react-syntax-highlighter": "^15.5.13",
|
|
54
|
-
"eslint": "^9.18.0",
|
|
55
|
-
"eslint-config-next": "^15.5.6",
|
|
56
|
-
"sass": "^1.94.2",
|
|
57
|
-
"tsx": "^4.19.0"
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const axios = require('axios');
|
|
4
|
-
|
|
5
|
-
const NPM_PACKAGE_NAME = '@bluefly/openstandardagents';
|
|
6
|
-
const NPM_REGISTRY_URL = `https://registry.npmjs.org/${NPM_PACKAGE_NAME}`;
|
|
7
|
-
const SPEC_DIR = path.join(__dirname, '../../spec');
|
|
8
|
-
const OUTPUT_FILE = path.join(__dirname, '../lib/versions.json');
|
|
9
|
-
|
|
10
|
-
async function fetchVersions() {
|
|
11
|
-
console.log('Fetching version information...');
|
|
12
|
-
|
|
13
|
-
let npmVersions = [];
|
|
14
|
-
let distTags = {};
|
|
15
|
-
|
|
16
|
-
try {
|
|
17
|
-
console.log(`Querying npm registry: ${NPM_REGISTRY_URL}`);
|
|
18
|
-
const response = await axios.get(NPM_REGISTRY_URL);
|
|
19
|
-
const data = response.data;
|
|
20
|
-
|
|
21
|
-
npmVersions = Object.keys(data.versions || {});
|
|
22
|
-
distTags = data['dist-tags'] || {};
|
|
23
|
-
console.log(`Found ${npmVersions.length} published versions on npm`);
|
|
24
|
-
console.log('Dist tags:', distTags);
|
|
25
|
-
} catch (error) {
|
|
26
|
-
console.error('Error fetching npm versions:', error.message);
|
|
27
|
-
// Fallback to local package.json if npm registry is unreachable
|
|
28
|
-
const packageJsonPath = path.join(__dirname, '../../package.json');
|
|
29
|
-
if (fs.existsSync(packageJsonPath)) {
|
|
30
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
31
|
-
npmVersions = [packageJson.version];
|
|
32
|
-
distTags = { latest: packageJson.version };
|
|
33
|
-
console.log('Falling back to local package.json version:', packageJson.version);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Scan local spec directory for available schema versions
|
|
38
|
-
const localSpecVersions = [];
|
|
39
|
-
if (fs.existsSync(SPEC_DIR)) {
|
|
40
|
-
const specDirs = fs.readdirSync(SPEC_DIR)
|
|
41
|
-
.filter(dir => {
|
|
42
|
-
const dirPath = path.join(SPEC_DIR, dir);
|
|
43
|
-
return fs.statSync(dirPath).isDirectory() && dir.startsWith('v');
|
|
44
|
-
})
|
|
45
|
-
.map(dir => dir.substring(1)) // Remove 'v' prefix
|
|
46
|
-
.sort((a, b) => {
|
|
47
|
-
const [aMajor, aMinor, aPatch] = a.split('.').map(Number);
|
|
48
|
-
const [bMajor, bMinor, bPatch] = b.split('.').map(Number);
|
|
49
|
-
if (aMajor !== bMajor) return bMajor - aMajor;
|
|
50
|
-
if (aMinor !== bMinor) return bMinor - aMinor;
|
|
51
|
-
return bPatch - aPatch;
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
localSpecVersions.push(...specDirs);
|
|
55
|
-
console.log(`Scanning spec directory: ${SPEC_DIR}`);
|
|
56
|
-
console.log(`Found ${localSpecVersions.length} schema versions in spec/`);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const allVersions = [];
|
|
60
|
-
const processedVersions = new Set();
|
|
61
|
-
|
|
62
|
-
// Add npm published versions
|
|
63
|
-
npmVersions.forEach(version => {
|
|
64
|
-
if (!processedVersions.has(version)) {
|
|
65
|
-
const isStable = distTags.latest === version;
|
|
66
|
-
const isDev = distTags.dev === version;
|
|
67
|
-
// Pre-release versions: -dev, -pre, -rc, alpha, beta, or version like 0.2.4-dev
|
|
68
|
-
const isPreRelease = version.includes('-dev') || version.includes('-pre') || version.includes('-rc') || version.includes('alpha') || version.includes('beta');
|
|
69
|
-
// Dev versions are specifically tagged as 'dev' in npm or end with -dev
|
|
70
|
-
const isDevVersion = isDev || (version.includes('-dev') && !version.includes('-pre'));
|
|
71
|
-
|
|
72
|
-
allVersions.push({
|
|
73
|
-
version,
|
|
74
|
-
tag: `v${version}`,
|
|
75
|
-
apiVersion: `ossa/v${version}`,
|
|
76
|
-
type: isStable ? 'stable' : (isDevVersion ? 'dev' : (isPreRelease ? 'prerelease' : 'stable')),
|
|
77
|
-
published: true,
|
|
78
|
-
available: true,
|
|
79
|
-
});
|
|
80
|
-
processedVersions.add(version);
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
// Add local spec versions that are not yet in allVersions
|
|
85
|
-
localSpecVersions.forEach(version => {
|
|
86
|
-
if (!processedVersions.has(version)) {
|
|
87
|
-
const schemaPath = path.join(SPEC_DIR, `v${version}`, `ossa-${version}.schema.json`);
|
|
88
|
-
const schemaExists = fs.existsSync(schemaPath);
|
|
89
|
-
|
|
90
|
-
// Determine version type for local versions
|
|
91
|
-
let versionType = 'local';
|
|
92
|
-
if (version === '0.2.4-dev') {
|
|
93
|
-
// v0.2.4-dev is a pre-release version
|
|
94
|
-
versionType = 'prerelease';
|
|
95
|
-
} else if (version.includes('-dev')) {
|
|
96
|
-
// Other -dev versions (like 0.2.5-dev) are dev versions
|
|
97
|
-
versionType = 'dev';
|
|
98
|
-
} else if (version.includes('-pre') || version.includes('-rc') || version.includes('alpha') || version.includes('beta')) {
|
|
99
|
-
versionType = 'prerelease';
|
|
100
|
-
} else {
|
|
101
|
-
// Stable versions (like 0.2.3)
|
|
102
|
-
versionType = 'stable';
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
allVersions.push({
|
|
106
|
-
version,
|
|
107
|
-
tag: `v${version}`,
|
|
108
|
-
apiVersion: `ossa/v${version}`,
|
|
109
|
-
type: versionType,
|
|
110
|
-
published: false,
|
|
111
|
-
available: schemaExists,
|
|
112
|
-
schemaPath: schemaExists ? schemaPath : undefined,
|
|
113
|
-
});
|
|
114
|
-
processedVersions.add(version);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
// Sort versions (latest stable first, then dev, then older stable, then local)
|
|
119
|
-
allVersions.sort((a, b) => {
|
|
120
|
-
// Prioritize stable, then dev, then prerelease, then local
|
|
121
|
-
const typeOrder = { stable: 0, dev: 1, prerelease: 2, local: 3 };
|
|
122
|
-
if (typeOrder[a.type] !== typeOrder[b.type]) {
|
|
123
|
-
return typeOrder[a.type] - typeOrder[b.type];
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Then sort by version number (descending)
|
|
127
|
-
const [aMajor, aMinor, aPatch] = a.version.split('.').map(Number);
|
|
128
|
-
const [bMajor, bMinor, bPatch] = b.version.split('.').map(Number);
|
|
129
|
-
if (aMajor !== bMajor) return bMajor - aMajor;
|
|
130
|
-
if (aMinor !== bMinor) return bMinor - aMinor;
|
|
131
|
-
return bPatch - aPatch;
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
// Prioritize npm's latest tag for stable version
|
|
135
|
-
const npmStableVersion = distTags.latest || allVersions.find(v => v.type === 'stable' && v.published)?.version;
|
|
136
|
-
const stableVersion = npmStableVersion || allVersions.find(v => v.type === 'stable')?.version || '0.2.3'; // Fallback
|
|
137
|
-
|
|
138
|
-
// Prioritize npm's dev tag for dev version
|
|
139
|
-
const npmDevVersion = distTags.dev || allVersions.find(v => (v.type === 'dev' || v.type === 'prerelease') && v.published)?.version;
|
|
140
|
-
const devVersion = npmDevVersion || allVersions.find(v => v.type === 'dev')?.version || allVersions.find(v => v.type === 'prerelease')?.version || '0.2.5-dev'; // Fallback
|
|
141
|
-
|
|
142
|
-
const versionsData = {
|
|
143
|
-
stable: stableVersion,
|
|
144
|
-
latest: stableVersion, // 'latest' dist-tag points to stable
|
|
145
|
-
dev: devVersion, // 'dev' dist-tag points to dev
|
|
146
|
-
all: allVersions,
|
|
147
|
-
fallbackVersion: '0.2.3', // Fallback if all else fails
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
// Ensure output directory exists
|
|
151
|
-
const outputDir = path.dirname(OUTPUT_FILE);
|
|
152
|
-
if (!fs.existsSync(outputDir)) {
|
|
153
|
-
fs.mkdirSync(outputDir, { recursive: true });
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
fs.writeFileSync(OUTPUT_FILE, JSON.stringify(versionsData, null, 2));
|
|
157
|
-
console.log(`✅ Generated ${OUTPUT_FILE}`);
|
|
158
|
-
console.log(` Stable: ${versionsData.stable}`);
|
|
159
|
-
console.log(` Dev: ${versionsData.dev}`);
|
|
160
|
-
console.log(` Total versions: ${versionsData.all.length}`);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
fetchVersions().catch(error => {
|
|
164
|
-
console.error('Error in fetchVersions:', error);
|
|
165
|
-
process.exit(1);
|
|
166
|
-
});
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Generate examples index JSON for static export
|
|
5
|
-
* Run during build to create examples.json
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const fs = require('fs');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
|
|
11
|
-
const examplesDir = path.join(__dirname, '../../examples');
|
|
12
|
-
const outputFile = path.join(__dirname, '../public/examples.json');
|
|
13
|
-
|
|
14
|
-
function getAllExamples() {
|
|
15
|
-
const examples = [];
|
|
16
|
-
|
|
17
|
-
if (!fs.existsSync(examplesDir)) {
|
|
18
|
-
console.log('⚠️ Examples directory not found:', examplesDir);
|
|
19
|
-
return examples;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Map directories to 10 main categories
|
|
23
|
-
function getCategory(dirPath) {
|
|
24
|
-
const relativePath = path.relative(examplesDir, dirPath).toLowerCase();
|
|
25
|
-
const pathParts = relativePath.split(path.sep);
|
|
26
|
-
const topLevel = pathParts[0];
|
|
27
|
-
|
|
28
|
-
// 1. Getting Started
|
|
29
|
-
if (topLevel === 'getting-started' || topLevel === 'quickstart' || topLevel === 'minimal') {
|
|
30
|
-
return 'Getting Started';
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// 2. Framework Integration
|
|
34
|
-
if (['langchain', 'crewai', 'openai', 'anthropic', 'autogen', 'langflow', 'langgraph', 'llamaindex', 'cursor', 'vercel'].includes(topLevel)) {
|
|
35
|
-
return 'Framework Integration';
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// 3. Agent Types
|
|
39
|
-
if (topLevel === 'agent-manifests' || pathParts.includes('workers') || pathParts.includes('orchestrators') ||
|
|
40
|
-
pathParts.includes('critics') || pathParts.includes('judges') || pathParts.includes('monitors') ||
|
|
41
|
-
pathParts.includes('governors') || pathParts.includes('integrators')) {
|
|
42
|
-
return 'Agent Types';
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// 4. Production
|
|
46
|
-
if (topLevel === 'production' || topLevel === 'enterprise' || relativePath.includes('compliance')) {
|
|
47
|
-
return 'Production';
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// 5. Infrastructure
|
|
51
|
-
if (topLevel === 'kagent' || topLevel === 'bridges' || relativePath.includes('k8s') ||
|
|
52
|
-
relativePath.includes('kubernetes') || relativePath.includes('docker') || relativePath.includes('serverless')) {
|
|
53
|
-
return 'Infrastructure';
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// 6. Advanced Patterns
|
|
57
|
-
if (topLevel === 'advanced' || relativePath.includes('patterns') || relativePath.includes('workflows') ||
|
|
58
|
-
relativePath.includes('model-router') || relativePath.includes('smart-model')) {
|
|
59
|
-
return 'Advanced Patterns';
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// 7. Integration Patterns
|
|
63
|
-
if (topLevel === 'integration-patterns' || topLevel === 'adk-integration' ||
|
|
64
|
-
(topLevel === 'bridges' && !relativePath.includes('k8s') && !relativePath.includes('phase4'))) {
|
|
65
|
-
return 'Integration Patterns';
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// 8. OpenAPI Extensions
|
|
69
|
-
if (topLevel === 'openapi-extensions' || (relativePath.includes('openapi') && topLevel !== 'openapi-extensions')) {
|
|
70
|
-
return 'OpenAPI Extensions';
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// 9. Migration Guides
|
|
74
|
-
if (topLevel === 'migration-guides') {
|
|
75
|
-
return 'Migration Guides';
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// 10. Spec Examples & Templates
|
|
79
|
-
if (topLevel === 'spec-examples' || topLevel === 'templates' || topLevel === 'extensions' ||
|
|
80
|
-
topLevel === 'common_npm' || topLevel === 'architecture' || topLevel === 'typescript' ||
|
|
81
|
-
topLevel === 'drupal') {
|
|
82
|
-
return 'Spec Examples & Templates';
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Handle root-level files
|
|
86
|
-
if (relativePath === '' || pathParts.length === 0 || !topLevel) {
|
|
87
|
-
return 'Getting Started';
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return 'Getting Started';
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function traverseDir(dir, parentCategory = '') {
|
|
94
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
95
|
-
const currentCategory = getCategory(dir);
|
|
96
|
-
|
|
97
|
-
for (const entry of entries) {
|
|
98
|
-
const fullPath = path.join(dir, entry.name);
|
|
99
|
-
const relativePath = path.relative(examplesDir, fullPath);
|
|
100
|
-
|
|
101
|
-
// Skip certain directories
|
|
102
|
-
if (entry.isDirectory()) {
|
|
103
|
-
if (entry.name === '__pycache__' || entry.name === 'node_modules' || entry.name === '.git') {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
traverseDir(fullPath, currentCategory);
|
|
107
|
-
} else if (
|
|
108
|
-
entry.isFile() &&
|
|
109
|
-
(entry.name.endsWith('.yml') ||
|
|
110
|
-
entry.name.endsWith('.yaml') ||
|
|
111
|
-
entry.name.endsWith('.json') ||
|
|
112
|
-
entry.name.endsWith('.ts')) &&
|
|
113
|
-
!entry.name.startsWith('.') &&
|
|
114
|
-
entry.name !== '.gitlab-ci.yml'
|
|
115
|
-
) {
|
|
116
|
-
try {
|
|
117
|
-
const content = fs.readFileSync(fullPath, 'utf8');
|
|
118
|
-
// Get category from file path for better categorization
|
|
119
|
-
let fileCategory = currentCategory || getCategory(path.dirname(fullPath));
|
|
120
|
-
|
|
121
|
-
// Override category based on filename for root-level files
|
|
122
|
-
const fileName = entry.name.toLowerCase();
|
|
123
|
-
if (relativePath === entry.name) {
|
|
124
|
-
// Root-level file
|
|
125
|
-
if (fileName.includes('compliance')) {
|
|
126
|
-
fileCategory = 'Production';
|
|
127
|
-
} else if (fileName.includes('bridge')) {
|
|
128
|
-
fileCategory = 'Integration Patterns';
|
|
129
|
-
} else {
|
|
130
|
-
fileCategory = 'Getting Started';
|
|
131
|
-
}
|
|
132
|
-
} else if (fileName.includes('service-registry') || fileName.includes('registry')) {
|
|
133
|
-
fileCategory = 'Spec Examples & Templates';
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
examples.push({
|
|
137
|
-
name: entry.name,
|
|
138
|
-
path: relativePath,
|
|
139
|
-
content,
|
|
140
|
-
category: fileCategory,
|
|
141
|
-
});
|
|
142
|
-
} catch (error) {
|
|
143
|
-
console.warn(`⚠️ Skipping ${fullPath}:`, error.message);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
traverseDir(examplesDir);
|
|
150
|
-
return examples;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
const examples = getAllExamples();
|
|
154
|
-
|
|
155
|
-
// Ensure public directory exists
|
|
156
|
-
const publicDir = path.dirname(outputFile);
|
|
157
|
-
if (!fs.existsSync(publicDir)) {
|
|
158
|
-
fs.mkdirSync(publicDir, { recursive: true });
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
fs.writeFileSync(outputFile, JSON.stringify(examples, null, 2));
|
|
162
|
-
console.log(`✅ Generated ${outputFile} with ${examples.length} examples`);
|
|
163
|
-
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env npx tsx
|
|
2
|
-
/**
|
|
3
|
-
* Merge Local Docs to GitLab Wiki
|
|
4
|
-
*
|
|
5
|
-
* This script helps prepare content from /docs directory for merging into GitLab wiki.
|
|
6
|
-
* It reads files from the project's /docs directory and outputs them in a format
|
|
7
|
-
* suitable for GitLab wiki pages.
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* npx tsx scripts/merge-docs-to-wiki.ts
|
|
11
|
-
*
|
|
12
|
-
* This will:
|
|
13
|
-
* 1. Read all markdown files from ../../docs
|
|
14
|
-
* 2. Convert them to GitLab wiki format
|
|
15
|
-
* 3. Output instructions for manual wiki upload
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import fs from 'fs';
|
|
19
|
-
import path from 'path';
|
|
20
|
-
|
|
21
|
-
const DOCS_SOURCE_DIR = path.join(process.cwd(), 'content/docs');
|
|
22
|
-
const OUTPUT_DIR = path.join(process.cwd(), '.wiki-export');
|
|
23
|
-
|
|
24
|
-
interface DocFile {
|
|
25
|
-
relativePath: string;
|
|
26
|
-
fullPath: string;
|
|
27
|
-
content: string;
|
|
28
|
-
wikiSlug: string;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function getAllDocFiles(dir: string, basePath: string = ''): DocFile[] {
|
|
32
|
-
const files: DocFile[] = [];
|
|
33
|
-
|
|
34
|
-
if (!fs.existsSync(dir)) {
|
|
35
|
-
console.log(`⚠️ Directory ${dir} does not exist`);
|
|
36
|
-
return files;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
40
|
-
|
|
41
|
-
for (const entry of entries) {
|
|
42
|
-
const fullPath = path.join(dir, entry.name);
|
|
43
|
-
const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name;
|
|
44
|
-
|
|
45
|
-
if (entry.isDirectory()) {
|
|
46
|
-
// Skip certain directories
|
|
47
|
-
if (entry.name === 'node_modules' || entry.name.startsWith('.')) {
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
files.push(...getAllDocFiles(fullPath, relativePath));
|
|
51
|
-
} else if (entry.isFile() && entry.name.endsWith('.md')) {
|
|
52
|
-
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
53
|
-
// Convert file path to wiki slug format
|
|
54
|
-
// e.g., "getting-started.md" -> "Getting-Started"
|
|
55
|
-
// e.g., "migration/general-agent-schema.yml" -> "Migration/General-Agent-Schema"
|
|
56
|
-
const wikiSlug = relativePath
|
|
57
|
-
.replace(/\.md$/, '')
|
|
58
|
-
.split('/')
|
|
59
|
-
.map(part => part
|
|
60
|
-
.split('-')
|
|
61
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
62
|
-
.join('-')
|
|
63
|
-
)
|
|
64
|
-
.join('/');
|
|
65
|
-
|
|
66
|
-
files.push({
|
|
67
|
-
relativePath,
|
|
68
|
-
fullPath,
|
|
69
|
-
content,
|
|
70
|
-
wikiSlug,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return files;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function processContentForWiki(content: string, filename: string): string {
|
|
79
|
-
// Remove frontmatter if present (wiki doesn't use it)
|
|
80
|
-
if (content.startsWith('---')) {
|
|
81
|
-
const endIndex = content.indexOf('---', 3);
|
|
82
|
-
if (endIndex !== -1) {
|
|
83
|
-
content = content.substring(endIndex + 3).trim();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Fix relative links - convert to wiki-relative format
|
|
88
|
-
// This is a basic conversion - may need manual adjustment
|
|
89
|
-
content = content.replace(/\]\(\.\.\/examples\//g, '](Examples/');
|
|
90
|
-
content = content.replace(/\]\(\.\.\/spec\//g, '](Specification/');
|
|
91
|
-
content = content.replace(/\]\(\.\.\/migration\//g, '](Migration/');
|
|
92
|
-
content = content.replace(/\]\(getting-started\.md\)/g, '](Getting-Started)');
|
|
93
|
-
content = content.replace(/\]\(openapi-extensions\.md\)/g, '](OpenAPI-Extensions)');
|
|
94
|
-
|
|
95
|
-
return content;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
async function mergeDocsToWiki(): Promise<void> {
|
|
99
|
-
console.log('🔄 Preparing docs for GitLab wiki merge...\n');
|
|
100
|
-
|
|
101
|
-
// Read all doc files
|
|
102
|
-
const docFiles = getAllDocFiles(DOCS_SOURCE_DIR);
|
|
103
|
-
|
|
104
|
-
if (docFiles.length === 0) {
|
|
105
|
-
console.log('❌ No markdown files found in docs directory');
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
console.log(`📚 Found ${docFiles.length} documentation files\n`);
|
|
110
|
-
|
|
111
|
-
// Create output directory
|
|
112
|
-
if (!fs.existsSync(OUTPUT_DIR)) {
|
|
113
|
-
fs.mkdirSync(OUTPUT_DIR, { recursive: true });
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Process and write files
|
|
117
|
-
const manifest: Array<{ slug: string; file: string; size: number }> = [];
|
|
118
|
-
|
|
119
|
-
for (const doc of docFiles) {
|
|
120
|
-
const processedContent = processContentForWiki(doc.content, doc.relativePath);
|
|
121
|
-
const outputPath = path.join(OUTPUT_DIR, `${doc.wikiSlug}.md`);
|
|
122
|
-
|
|
123
|
-
// Ensure directory exists
|
|
124
|
-
const outputDir = path.dirname(outputPath);
|
|
125
|
-
if (!fs.existsSync(outputDir)) {
|
|
126
|
-
fs.mkdirSync(outputDir, { recursive: true });
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
fs.writeFileSync(outputPath, processedContent);
|
|
130
|
-
manifest.push({
|
|
131
|
-
slug: doc.wikiSlug,
|
|
132
|
-
file: doc.relativePath,
|
|
133
|
-
size: processedContent.length,
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
console.log(`✅ ${doc.relativePath} -> ${doc.wikiSlug}`);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Write manifest
|
|
140
|
-
const manifestPath = path.join(OUTPUT_DIR, 'MANIFEST.json');
|
|
141
|
-
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
|
|
142
|
-
|
|
143
|
-
// Write instructions
|
|
144
|
-
const instructions = `# GitLab Wiki Merge Instructions
|
|
145
|
-
|
|
146
|
-
## Files Prepared
|
|
147
|
-
|
|
148
|
-
${docFiles.length} documentation files have been prepared for GitLab wiki.
|
|
149
|
-
|
|
150
|
-
## How to Merge
|
|
151
|
-
|
|
152
|
-
### Option 1: Manual Upload (Recommended for First Time)
|
|
153
|
-
|
|
154
|
-
1. Go to your GitLab project: https://${process.env.GITLAB_HOST || 'gitlab.com'}/blueflyio/openstandardagents/-/wikis
|
|
155
|
-
2. For each file in the manifest:
|
|
156
|
-
- Click "New Page"
|
|
157
|
-
- Use the slug as the page title (e.g., "Getting-Started")
|
|
158
|
-
- Copy the content from .wiki-export/[slug].md
|
|
159
|
-
- Save the page
|
|
160
|
-
|
|
161
|
-
### Option 2: GitLab API (Automated)
|
|
162
|
-
|
|
163
|
-
You can use the GitLab API to upload pages programmatically:
|
|
164
|
-
|
|
165
|
-
\`\`\`bash
|
|
166
|
-
# Set your GitLab token
|
|
167
|
-
export GITLAB_TOKEN="your-token-here"
|
|
168
|
-
// GITLAB_HOST should be set via environment variable or CI_SERVER_HOST
|
|
169
|
-
|
|
170
|
-
# Upload each page
|
|
171
|
-
for file in .wiki-export/*.md; do
|
|
172
|
-
slug=$(basename "$file" .md)
|
|
173
|
-
curl -X POST \\
|
|
174
|
-
"https://\${GITLAB_HOST}/api/v4/projects/llm%2Fopenstandardagents/wikis" \\
|
|
175
|
-
-H "PRIVATE-TOKEN: \${GITLAB_TOKEN}" \\
|
|
176
|
-
-F "title=\${slug}" \\
|
|
177
|
-
-F "content=@\${file}"
|
|
178
|
-
done
|
|
179
|
-
\`\`\`
|
|
180
|
-
|
|
181
|
-
## Files to Upload
|
|
182
|
-
|
|
183
|
-
See MANIFEST.json for the complete list of files and their wiki slugs.
|
|
184
|
-
|
|
185
|
-
## Notes
|
|
186
|
-
|
|
187
|
-
- Links may need manual adjustment after upload
|
|
188
|
-
- Images and assets should be uploaded separately
|
|
189
|
-
- Some relative links may need to be updated for wiki structure
|
|
190
|
-
`;
|
|
191
|
-
|
|
192
|
-
fs.writeFileSync(path.join(OUTPUT_DIR, 'INSTRUCTIONS.md'), instructions);
|
|
193
|
-
|
|
194
|
-
console.log(`\n✨ Prepared ${docFiles.length} files for wiki merge`);
|
|
195
|
-
console.log(`📁 Output directory: ${OUTPUT_DIR}`);
|
|
196
|
-
console.log(`\n📋 Next steps:`);
|
|
197
|
-
console.log(` 1. Review files in ${OUTPUT_DIR}`);
|
|
198
|
-
console.log(` 2. Follow instructions in ${OUTPUT_DIR}/INSTRUCTIONS.md`);
|
|
199
|
-
console.log(` 3. Upload to GitLab wiki manually or via API`);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// Run if called directly
|
|
203
|
-
mergeDocsToWiki().catch((error) => {
|
|
204
|
-
console.error('❌ Failed to prepare docs for wiki:', error.message);
|
|
205
|
-
process.exit(1);
|
|
206
|
-
});
|
|
207
|
-
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Sync version from package.json to lib/version.ts
|
|
5
|
-
*
|
|
6
|
-
* Run: npm run sync-version
|
|
7
|
-
* Automatically runs on: npm run dev, npm run build
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const fs = require('fs');
|
|
11
|
-
const path = require('path');
|
|
12
|
-
|
|
13
|
-
const packageJsonPath = path.join(__dirname, '..', 'package.json');
|
|
14
|
-
const versionTsPath = path.join(__dirname, '..', 'lib', 'version.ts');
|
|
15
|
-
|
|
16
|
-
// Read package.json
|
|
17
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
18
|
-
const version = packageJson.version;
|
|
19
|
-
|
|
20
|
-
// Read versions.json if it exists
|
|
21
|
-
const versionsJsonPath = path.join(__dirname, '..', 'lib', 'versions.json');
|
|
22
|
-
let versionsData = { all: [], stable: version, dev: null };
|
|
23
|
-
try {
|
|
24
|
-
if (fs.existsSync(versionsJsonPath)) {
|
|
25
|
-
versionsData = JSON.parse(fs.readFileSync(versionsJsonPath, 'utf8'));
|
|
26
|
-
}
|
|
27
|
-
} catch (e) {
|
|
28
|
-
// Ignore if versions.json doesn't exist yet
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// Generate version.ts content
|
|
32
|
-
const versionTsContent = `// OSSA version constants
|
|
33
|
-
// AUTO-GENERATED - DO NOT EDIT DIRECTLY
|
|
34
|
-
// Update package.json version instead, then run: npm run sync-version
|
|
35
|
-
|
|
36
|
-
import versionsData from './versions.json';
|
|
37
|
-
|
|
38
|
-
export const OSSA_VERSION = "${version}";
|
|
39
|
-
export const OSSA_VERSION_TAG = \`v\${OSSA_VERSION}\`;
|
|
40
|
-
export const OSSA_API_VERSION = \`ossa/v\${OSSA_VERSION}\`;
|
|
41
|
-
export const OSSA_SCHEMA_VERSION = OSSA_VERSION;
|
|
42
|
-
|
|
43
|
-
// Aliases for backward compatibility
|
|
44
|
-
export const STABLE_VERSION = OSSA_VERSION;
|
|
45
|
-
export const STABLE_VERSION_TAG = OSSA_VERSION_TAG;
|
|
46
|
-
|
|
47
|
-
// Version data from versions.json
|
|
48
|
-
export const STABLE_VERSIONS = versionsData.all.filter((v: any) => v.type === 'stable');
|
|
49
|
-
export const DEV_VERSIONS = versionsData.all.filter((v: any) => v.type === 'dev' || v.type === 'prerelease');
|
|
50
|
-
export const ALL_VERSIONS = versionsData.all;
|
|
51
|
-
export const DEV_VERSION_TAG = versionsData.dev ? \`v\${versionsData.dev}\` : undefined;
|
|
52
|
-
|
|
53
|
-
// Utility to get version info
|
|
54
|
-
export function getVersionInfo(version: string): any {
|
|
55
|
-
return versionsData.all.find((v: any) => v.version === version);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Utility to get schema path
|
|
59
|
-
export function getSchemaPath(ver = OSSA_VERSION): string {
|
|
60
|
-
return \`/schemas/ossa-\${ver}.schema.json\`;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Utility to get spec path
|
|
64
|
-
export function getSpecPath(ver = OSSA_VERSION): string {
|
|
65
|
-
return \`/spec/v\${ver}/ossa-\${ver}.schema.json\`;
|
|
66
|
-
}
|
|
67
|
-
`;
|
|
68
|
-
|
|
69
|
-
// Write version.ts
|
|
70
|
-
fs.writeFileSync(versionTsPath, versionTsContent);
|
|
71
|
-
|
|
72
|
-
console.log(`✅ Synced version ${version} to lib/version.ts`);
|