@bluefly/openstandardagents 0.2.5-RC → 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/.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/.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-design-audit → website-brand-identity}/design.md +381 -0
- package/.kiro/specs/{website-design-audit → website-brand-identity}/requirements.md +88 -0
- package/.kiro/specs/website-brand-identity/tasks.md +981 -0
- package/CHANGELOG.md +23 -0
- package/README.md +12 -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/dist/repositories/schema.repository.d.ts.map +1 -1
- package/dist/repositories/schema.repository.js +15 -10
- package/dist/repositories/schema.repository.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/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/validation.service.d.ts.map +1 -1
- package/dist/services/validation.service.js +12 -1
- package/dist/services/validation.service.js.map +1 -1
- package/dist/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
- 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.4/ossa-0.2.4-dev.schema.json → v0.2.6-dev/ossa-0.2.5.schema.json} +9 -9
- package/dist/spec/v0.2.6-dev/ossa-0.2.5.yaml +581 -0
- package/{spec/v0.2.4/ossa-0.2.4-dev.schema.json → dist/spec/v0.2.6-dev/ossa-0.2.6-dev.schema.json} +9 -9
- 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/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/crewai/research-team.ossa.json +14 -5
- package/examples/cursor/code-review-agent.ossa.json +21 -6
- 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/multi-tool-agent.ossa.json +32 -9
- package/examples/openai/swarm-agent.ossa.json +18 -5
- package/examples/vercel/edge-agent.ossa.json +5 -4
- package/openapi/github-sync.yaml +115 -0
- package/package.json +25 -4
- package/scripts/README.md +103 -0
- package/scripts/auto-rebase-mrs.ts +106 -0
- package/scripts/batch-dependabot.sh +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/fix-schema-formats.js +82 -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/lowercase-docs.ts +43 -0
- package/scripts/manage-milestone-mrs.ts +279 -0
- package/scripts/rebase-all-mrs.sh +75 -0
- package/scripts/sync-github-pr.sh +48 -0
- package/scripts/sync-version.js +40 -0
- package/scripts/sync-wiki.sh +50 -0
- package/scripts/validate-all.js +127 -0
- package/spec/v0.2.4/ossa-0.2.4.schema.json +85 -208
- 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.6-dev/ossa-0.2.6-dev.schema.json +1696 -0
- 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/DESIGN_SYSTEM_IMPLEMENTATION.md +445 -0
- package/website/app/about/page.tsx +53 -44
- package/website/app/ecosystem/page.tsx +146 -111
- package/website/app/globals.scss +256 -21
- package/website/app/page.tsx +394 -182
- package/website/app/page.tsx.bak +679 -0
- package/website/app/page.tsx.bak2 +649 -0
- package/website/app/schema/page.tsx +3 -3
- package/website/app/specification/page.tsx +1 -1
- package/website/components/layout/Header.tsx +27 -23
- 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/docs/{00-HOME.md → 00-home.md} +1 -1
- package/website/content/docs/agents/catalog.md +28 -0
- package/website/content/docs/{AIFlow-Framework-Integration-with-OSSA.md → aiflow-framework-integration-with-ossa.md} +2 -2
- 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/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/deployment/github-mirroring.md +924 -0
- package/website/content/docs/documentation.md +100 -0
- package/website/content/docs/ecosystem/framework-support.md +551 -9
- package/website/content/docs/errors/index.md +10 -0
- package/website/content/docs/examples/{AIFlow-Framework-Integration-with-OSSA.md → 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/{Installation.md → installation.md} +1 -1
- package/website/content/docs/getting-started.md +1 -1
- package/website/content/docs/integrations/aiflow.md +2 -2
- 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 +7 -7
- package/website/content/docs/migration-guides/langchain-to-ossa.md +4 -4
- package/website/content/docs/openapi-extensions/index.md +1 -1
- package/website/content/docs/ossa-compliant-badge.md +1 -1
- package/website/content/docs/pre-release/index.md +5 -5
- 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-version.md +50 -0
- package/website/content/docs/schema-reference/index.md +26 -157
- package/website/content/docs/types-reference/index.md +105 -0
- package/website/content/docs/versioning.md +3 -3
- package/website/dev.sh +53 -0
- package/website/docker-compose.dev.yml +36 -0
- package/website/lib/version.ts +1 -1
- package/website/lib/versions.json +45 -20
- package/website/package.json +1 -1
- 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 +270 -19
- package/website/tailwind.config.ts +113 -79
- package/.kiro/specs/agent-buildkit-templates/design.md +0 -495
- package/.kiro/specs/agent-buildkit-templates/requirements.md +0 -165
- package/.kiro/specs/kiro-ide-supercharger/README.md +0 -202
- package/.kiro/specs/kiro-ide-supercharger/design.md +0 -1005
- package/.kiro/specs/kiro-ide-supercharger/requirements.md +0 -141
- package/.kiro/specs/kiro-ide-supercharger/tasks.md +0 -507
- package/docs/issue-19-completion-summary.md +0 -648
- package/docs/issue-19-validation.md +0 -351
- package/website/content/docs/Examples.md +0 -71
- package/website/content/docs/OpenAPI-Extensions.md +0 -934
- 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/for-audiences/Architects.md +0 -224
- package/website/content/docs/for-audiences/Developers.md +0 -220
- package/website/content/docs/for-audiences/Enterprises.md +0 -256
- package/website/content/docs/getting-started/5-Minute-Overview.md +0 -85
- package/website/content/docs/getting-started/First-Agent.md +0 -196
- package/website/content/docs/getting-started/Hello-World.md +0 -184
- package/website/content/docs/migration-guides/00-INDEX.md +0 -76
- package/website/content/docs/migration-guides/README.md +0 -133
- /package/dist/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
- /package/spec/v0.2.4/{ossa-0.2.4-dev.yaml → ossa-0.2.4.yaml} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"apiVersion": "ossa/v0.2",
|
|
2
|
+
"apiVersion": "ossa/v0.2.4",
|
|
3
3
|
"kind": "Agent",
|
|
4
4
|
"metadata": {
|
|
5
5
|
"name": "swarm-agent",
|
|
@@ -17,12 +17,26 @@
|
|
|
17
17
|
{
|
|
18
18
|
"type": "function",
|
|
19
19
|
"name": "search_web",
|
|
20
|
-
"capabilities": [
|
|
20
|
+
"capabilities": [
|
|
21
|
+
{
|
|
22
|
+
"name": "search"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "retrieve"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
21
28
|
},
|
|
22
29
|
{
|
|
23
30
|
"type": "function",
|
|
24
31
|
"name": "execute_code",
|
|
25
|
-
"capabilities": [
|
|
32
|
+
"capabilities": [
|
|
33
|
+
{
|
|
34
|
+
"name": "run"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "evaluate"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
26
40
|
}
|
|
27
41
|
]
|
|
28
42
|
},
|
|
@@ -55,5 +69,4 @@
|
|
|
55
69
|
}
|
|
56
70
|
}
|
|
57
71
|
}
|
|
58
|
-
}
|
|
59
|
-
|
|
72
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"apiVersion": "ossa/v0.2",
|
|
2
|
+
"apiVersion": "ossa/v0.2.4",
|
|
3
3
|
"kind": "Agent",
|
|
4
4
|
"metadata": {
|
|
5
5
|
"name": "edge-chat-agent",
|
|
@@ -33,11 +33,12 @@
|
|
|
33
33
|
"description": "City name"
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
|
-
"required": [
|
|
36
|
+
"required": [
|
|
37
|
+
"location"
|
|
38
|
+
]
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
]
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
openapi: 3.1.0
|
|
2
|
+
info:
|
|
3
|
+
title: GitHub Sync API
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: API for syncing GitHub PRs to GitLab
|
|
6
|
+
|
|
7
|
+
servers:
|
|
8
|
+
- url: http://localhost:3000
|
|
9
|
+
description: Development
|
|
10
|
+
|
|
11
|
+
paths:
|
|
12
|
+
/sync/pr/{number}:
|
|
13
|
+
post:
|
|
14
|
+
summary: Sync GitHub PR to GitLab
|
|
15
|
+
operationId: syncPR
|
|
16
|
+
tags: [Sync]
|
|
17
|
+
parameters:
|
|
18
|
+
- name: number
|
|
19
|
+
in: path
|
|
20
|
+
required: true
|
|
21
|
+
schema:
|
|
22
|
+
type: integer
|
|
23
|
+
responses:
|
|
24
|
+
'200':
|
|
25
|
+
description: MR created
|
|
26
|
+
content:
|
|
27
|
+
application/json:
|
|
28
|
+
schema:
|
|
29
|
+
$ref: '#/components/schemas/GitLabMR'
|
|
30
|
+
|
|
31
|
+
/sync/batch:
|
|
32
|
+
post:
|
|
33
|
+
summary: Batch sync PRs
|
|
34
|
+
operationId: batchSync
|
|
35
|
+
tags: [Sync]
|
|
36
|
+
requestBody:
|
|
37
|
+
content:
|
|
38
|
+
application/json:
|
|
39
|
+
schema:
|
|
40
|
+
type: object
|
|
41
|
+
properties:
|
|
42
|
+
author:
|
|
43
|
+
type: string
|
|
44
|
+
example: app/dependabot
|
|
45
|
+
responses:
|
|
46
|
+
'200':
|
|
47
|
+
description: Batch MR created
|
|
48
|
+
content:
|
|
49
|
+
application/json:
|
|
50
|
+
schema:
|
|
51
|
+
$ref: '#/components/schemas/GitLabMR'
|
|
52
|
+
|
|
53
|
+
/sync/list:
|
|
54
|
+
get:
|
|
55
|
+
summary: List syncable PRs
|
|
56
|
+
operationId: listPRs
|
|
57
|
+
tags: [Sync]
|
|
58
|
+
parameters:
|
|
59
|
+
- name: author
|
|
60
|
+
in: query
|
|
61
|
+
schema:
|
|
62
|
+
type: string
|
|
63
|
+
responses:
|
|
64
|
+
'200':
|
|
65
|
+
description: List of PRs
|
|
66
|
+
content:
|
|
67
|
+
application/json:
|
|
68
|
+
schema:
|
|
69
|
+
type: array
|
|
70
|
+
items:
|
|
71
|
+
$ref: '#/components/schemas/GitHubPR'
|
|
72
|
+
|
|
73
|
+
components:
|
|
74
|
+
schemas:
|
|
75
|
+
GitHubPR:
|
|
76
|
+
type: object
|
|
77
|
+
required: [number, title, author, state]
|
|
78
|
+
properties:
|
|
79
|
+
number:
|
|
80
|
+
type: integer
|
|
81
|
+
title:
|
|
82
|
+
type: string
|
|
83
|
+
body:
|
|
84
|
+
type: string
|
|
85
|
+
nullable: true
|
|
86
|
+
author:
|
|
87
|
+
type: object
|
|
88
|
+
properties:
|
|
89
|
+
login:
|
|
90
|
+
type: string
|
|
91
|
+
state:
|
|
92
|
+
type: string
|
|
93
|
+
enum: [open, closed]
|
|
94
|
+
|
|
95
|
+
GitLabMR:
|
|
96
|
+
type: object
|
|
97
|
+
required: [iid, title, source_branch, target_branch, state, web_url]
|
|
98
|
+
properties:
|
|
99
|
+
iid:
|
|
100
|
+
type: integer
|
|
101
|
+
title:
|
|
102
|
+
type: string
|
|
103
|
+
description:
|
|
104
|
+
type: string
|
|
105
|
+
nullable: true
|
|
106
|
+
source_branch:
|
|
107
|
+
type: string
|
|
108
|
+
target_branch:
|
|
109
|
+
type: string
|
|
110
|
+
state:
|
|
111
|
+
type: string
|
|
112
|
+
enum: [opened, closed, merged]
|
|
113
|
+
web_url:
|
|
114
|
+
type: string
|
|
115
|
+
format: uri
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bluefly/openstandardagents",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"exports": {
|
|
5
|
-
"./schema": "./spec/v0.2.
|
|
5
|
+
"./schema": "./spec/v0.2.6/ossa-0.2.6.schema.json",
|
|
6
6
|
".": {
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"import": "./dist/index.js",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"homepage": "https://openstandardagents.org",
|
|
58
58
|
"scripts": {
|
|
59
|
-
"version:sync": "
|
|
59
|
+
"version:sync": "node scripts/sync-version.js",
|
|
60
60
|
"version:bump": "tsx scripts/bump-version.ts",
|
|
61
61
|
"version:enhanced": "tsx scripts/enhanced-version-manager.ts",
|
|
62
62
|
"version:check": "tsx scripts/sync-versions.ts --check",
|
|
@@ -78,13 +78,31 @@
|
|
|
78
78
|
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
79
79
|
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
80
80
|
"validate:schema": "tsx scripts/validate-schema.ts",
|
|
81
|
+
"docs:api:generate": "tsx scripts/generate-api-docs.ts",
|
|
82
|
+
"docs:cli:generate": "tsx scripts/generate-cli-docs.ts",
|
|
83
|
+
"docs:schema:generate": "tsx scripts/generate-schema-docs.ts",
|
|
84
|
+
"docs:examples:generate": "tsx scripts/generate-examples-docs.ts",
|
|
85
|
+
"docs:agents:generate": "tsx scripts/generate-agents-catalog.ts",
|
|
86
|
+
"docs:types:generate": "tsx scripts/generate-types-docs.ts",
|
|
87
|
+
"docs:errors:generate": "tsx scripts/generate-errors-docs.ts",
|
|
88
|
+
"docs:config:generate": "tsx scripts/generate-config-docs.ts",
|
|
89
|
+
"docs:lowercase": "tsx scripts/lowercase-docs.ts",
|
|
90
|
+
"docs:generate": "npm run docs:api:generate && npm run docs:cli:generate && npm run docs:schema:generate && npm run docs:examples:generate && npm run docs:agents:generate && npm run docs:types:generate && npm run docs:errors:generate && npm run docs:config:generate && npm run docs:lowercase",
|
|
91
|
+
"docs:validate": "echo 'Documentation validation not yet implemented'",
|
|
92
|
+
"docs:lint": "echo 'Documentation linting not yet implemented'",
|
|
81
93
|
"validate:examples": "node -r ts-node/register tests/integration/examples/validate-all-examples.test.ts",
|
|
82
94
|
"validate:power-suite": "tsx bin/validate-ossa.ts",
|
|
83
95
|
"gen:types": "tsx scripts/gen-types.ts",
|
|
84
96
|
"gen:zod": "tsx scripts/gen-zod.ts",
|
|
85
97
|
"gen:all": "npm run gen:types && npm run gen:zod",
|
|
86
98
|
"cli:legacy": "node cli/bin/ossa --help",
|
|
87
|
-
"prepublishOnly": "npm run clean && npm run build && npm run test && npm run lint"
|
|
99
|
+
"prepublishOnly": "npm run clean && npm run build && npm run test && npm run lint",
|
|
100
|
+
"validate:all": "node scripts/validate-all.js",
|
|
101
|
+
"fix:schemas": "node scripts/fix-schema-formats.js",
|
|
102
|
+
"prepare": "husky install || true",
|
|
103
|
+
"sync:pr": "tsx src/cli/commands/github-sync.command.ts pr",
|
|
104
|
+
"sync:batch": "tsx src/cli/commands/github-sync.command.ts batch",
|
|
105
|
+
"sync:list": "tsx src/cli/commands/github-sync.command.ts list"
|
|
88
106
|
},
|
|
89
107
|
"keywords": [
|
|
90
108
|
"ossa",
|
|
@@ -100,6 +118,9 @@
|
|
|
100
118
|
"author": "OSSA Standards Team",
|
|
101
119
|
"license": "Apache-2.0",
|
|
102
120
|
"dependencies": {
|
|
121
|
+
"@anthropic-ai/sdk": "^0.71.0",
|
|
122
|
+
"@gitbeaker/node": "^35.8.1",
|
|
123
|
+
"@octokit/rest": "^20.0.0",
|
|
103
124
|
"ajv": "^8.12.0",
|
|
104
125
|
"ajv-formats": "^3.0.1",
|
|
105
126
|
"axios": "^1.12.2",
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Validation Scripts
|
|
2
|
+
|
|
3
|
+
Automated validation and maintenance scripts for OSSA.
|
|
4
|
+
|
|
5
|
+
## Scripts
|
|
6
|
+
|
|
7
|
+
### validate-all.js
|
|
8
|
+
|
|
9
|
+
Comprehensive validation suite:
|
|
10
|
+
- Version consistency across packages
|
|
11
|
+
- Schema exports and files
|
|
12
|
+
- Spec directory structure
|
|
13
|
+
- Schema validation
|
|
14
|
+
- Version reference checks
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm run validate:all
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### fix-schema-formats.js
|
|
21
|
+
|
|
22
|
+
Automatically fixes unsupported format constraints in JSON schemas.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm run fix:schemas
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Removes format constraints like `"format": "uri"` that aren't supported by ajv-cli.
|
|
29
|
+
|
|
30
|
+
### sync-version.js (website)
|
|
31
|
+
|
|
32
|
+
Syncs version from package.json to website code.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
cd website && npm run sync-version
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## CI/CD Integration
|
|
39
|
+
|
|
40
|
+
Validation runs automatically on:
|
|
41
|
+
- Merge requests
|
|
42
|
+
- Commits to main/development
|
|
43
|
+
|
|
44
|
+
See `.gitlab-ci-validation.yml` for configuration.
|
|
45
|
+
|
|
46
|
+
## Pre-commit Hook
|
|
47
|
+
|
|
48
|
+
Install husky to run validations before commit:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm install
|
|
52
|
+
npm run prepare
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Maintenance
|
|
56
|
+
|
|
57
|
+
### Adding New Validations
|
|
58
|
+
|
|
59
|
+
Edit `scripts/validate-all.js`:
|
|
60
|
+
|
|
61
|
+
```javascript
|
|
62
|
+
check('New Check', () => {
|
|
63
|
+
// Your validation logic
|
|
64
|
+
if (somethingWrong) {
|
|
65
|
+
throw new Error('Description');
|
|
66
|
+
}
|
|
67
|
+
console.log('✓ Check passed');
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Adding Unsupported Formats
|
|
72
|
+
|
|
73
|
+
Edit `scripts/fix-schema-formats.js`:
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
const UNSUPPORTED_FORMATS = ['uri', 'new-format'];
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Troubleshooting
|
|
80
|
+
|
|
81
|
+
### Schema validation fails
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
npm run fix:schemas
|
|
85
|
+
npm run validate:schema
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Version mismatch
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Update root version
|
|
92
|
+
npm version patch
|
|
93
|
+
|
|
94
|
+
# Sync to website
|
|
95
|
+
cd website && npm run sync-version
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Pre-commit hook not running
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm run prepare
|
|
102
|
+
chmod +x .husky/pre-commit
|
|
103
|
+
```
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Auto-rebase all open MRs onto their target branches
|
|
4
|
+
* Runs in CI or manually to keep MRs up to date
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Gitlab } from '@gitbeaker/rest';
|
|
8
|
+
import { execSync } from 'child_process';
|
|
9
|
+
|
|
10
|
+
const PROJECT_ID = 'blueflyio/openstandardagents';
|
|
11
|
+
const TOKEN = process.env.GITLAB_TOKEN || process.env.SERVICE_ACCOUNT_OSSA_TOKEN || process.env.GITLAB_PUSH_TOKEN;
|
|
12
|
+
|
|
13
|
+
if (!TOKEN) {
|
|
14
|
+
console.error('❌ Error: GITLAB_TOKEN or SERVICE_ACCOUNT_OSSA_TOKEN required');
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const gitlab = new Gitlab({
|
|
19
|
+
host: 'https://gitlab.com',
|
|
20
|
+
token: TOKEN,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
async function rebaseMR(mr: any): Promise<boolean> {
|
|
24
|
+
const { iid, source_branch, target_branch, merge_status } = mr;
|
|
25
|
+
|
|
26
|
+
console.log(`\n🔄 Rebasing MR !${iid}: ${source_branch} -> ${target_branch}`);
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
// Fetch branches
|
|
30
|
+
execSync(`git fetch origin ${source_branch} ${target_branch}`, { stdio: 'inherit' });
|
|
31
|
+
|
|
32
|
+
// Check if behind
|
|
33
|
+
const behind = execSync(
|
|
34
|
+
`git rev-list --count origin/${target_branch}..origin/${source_branch} 2>/dev/null || echo 0`
|
|
35
|
+
).toString().trim();
|
|
36
|
+
|
|
37
|
+
if (behind === '0') {
|
|
38
|
+
console.log(` ✅ Already up to date`);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
console.log(` ⚠️ ${behind} commits behind, rebasing...`);
|
|
43
|
+
|
|
44
|
+
// Create worktree
|
|
45
|
+
const worktreePath = `../rebase-${iid}-${source_branch.replace(/\//g, '-')}`;
|
|
46
|
+
try {
|
|
47
|
+
execSync(`git worktree remove ${worktreePath}`, { stdio: 'ignore' });
|
|
48
|
+
} catch {}
|
|
49
|
+
|
|
50
|
+
execSync(`git worktree add ${worktreePath} origin/${source_branch}`, { stdio: 'inherit' });
|
|
51
|
+
|
|
52
|
+
// Rebase
|
|
53
|
+
try {
|
|
54
|
+
execSync(`cd ${worktreePath} && git rebase origin/${target_branch}`, { stdio: 'inherit' });
|
|
55
|
+
|
|
56
|
+
// Push
|
|
57
|
+
execSync(`cd ${worktreePath} && git push origin ${source_branch} --force-with-lease`, { stdio: 'inherit' });
|
|
58
|
+
|
|
59
|
+
console.log(` ✅ Rebased and pushed successfully`);
|
|
60
|
+
|
|
61
|
+
// Cleanup
|
|
62
|
+
execSync(`git worktree remove ${worktreePath}`, { stdio: 'ignore' });
|
|
63
|
+
|
|
64
|
+
return true;
|
|
65
|
+
} catch (error) {
|
|
66
|
+
console.error(` ❌ Rebase failed - conflicts may exist`);
|
|
67
|
+
console.error(` Worktree: ${worktreePath}`);
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
} catch (error: any) {
|
|
71
|
+
console.error(` ❌ Error: ${error.message}`);
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async function main() {
|
|
77
|
+
console.log('🔄 Auto-rebasing all open MRs\n');
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
const mrs = await gitlab.MergeRequests.all({
|
|
81
|
+
projectId: PROJECT_ID,
|
|
82
|
+
state: 'opened',
|
|
83
|
+
perPage: 20,
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
console.log(`Found ${mrs.length} open MRs\n`);
|
|
87
|
+
|
|
88
|
+
const results = await Promise.all(mrs.map(rebaseMR));
|
|
89
|
+
|
|
90
|
+
const success = results.filter(Boolean).length;
|
|
91
|
+
const failed = results.length - success;
|
|
92
|
+
|
|
93
|
+
console.log(`\n✅ Summary:`);
|
|
94
|
+
console.log(` Successfully rebased: ${success}`);
|
|
95
|
+
console.log(` Failed: ${failed}`);
|
|
96
|
+
|
|
97
|
+
if (failed > 0) {
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
} catch (error: any) {
|
|
101
|
+
console.error('❌ Error:', error.message);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
main();
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
# Batch merge Dependabot PRs from GitHub
|
|
5
|
+
# Creates a single GitLab MR with all updates
|
|
6
|
+
|
|
7
|
+
REPO="blueflyio/openstandardagents"
|
|
8
|
+
BRANCH="batch-dependabot-$(date +%Y%m%d)"
|
|
9
|
+
|
|
10
|
+
echo "🤖 Batching Dependabot PRs..."
|
|
11
|
+
|
|
12
|
+
# Get all open Dependabot PRs
|
|
13
|
+
DEPENDABOT_PRS=$(gh pr list --repo $REPO --author app/dependabot --state open --json number -q '.[].number')
|
|
14
|
+
|
|
15
|
+
if [ -z "$DEPENDABOT_PRS" ]; then
|
|
16
|
+
echo "No Dependabot PRs found"
|
|
17
|
+
exit 0
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
echo "Found PRs: $DEPENDABOT_PRS"
|
|
21
|
+
|
|
22
|
+
# Create new branch
|
|
23
|
+
git checkout -b $BRANCH main
|
|
24
|
+
|
|
25
|
+
# Merge each PR
|
|
26
|
+
for PR in $DEPENDABOT_PRS; do
|
|
27
|
+
echo "Merging PR #$PR..."
|
|
28
|
+
gh pr checkout $PR
|
|
29
|
+
git merge --no-ff --no-edit FETCH_HEAD || {
|
|
30
|
+
echo "⚠️ Conflict in PR #$PR, skipping"
|
|
31
|
+
git merge --abort
|
|
32
|
+
continue
|
|
33
|
+
}
|
|
34
|
+
done
|
|
35
|
+
|
|
36
|
+
# Push to GitLab
|
|
37
|
+
git push origin $BRANCH
|
|
38
|
+
|
|
39
|
+
# Create GitLab MR
|
|
40
|
+
glab mr create \
|
|
41
|
+
--title "chore(deps): batch Dependabot updates $(date +%Y-%m-%d)" \
|
|
42
|
+
--description "Batched Dependabot PRs from GitHub:
|
|
43
|
+
|
|
44
|
+
$(echo "$DEPENDABOT_PRS" | while read pr; do
|
|
45
|
+
echo "- https://github.com/$REPO/pull/$pr"
|
|
46
|
+
done)
|
|
47
|
+
|
|
48
|
+
**Changes:**
|
|
49
|
+
- Dependency updates from Dependabot
|
|
50
|
+
- Tested in CI before merge
|
|
51
|
+
|
|
52
|
+
**GitHub PRs will auto-close** when this merges and syncs back." \
|
|
53
|
+
--source-branch $BRANCH \
|
|
54
|
+
--target-branch main \
|
|
55
|
+
--label "dependencies"
|
|
56
|
+
|
|
57
|
+
echo "✅ Created GitLab MR with batched updates"
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Configure GitLab Branch Protection Rules
|
|
4
|
+
* Sets up protection for main and development branches via GitLab API
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Gitlab } from '@gitbeaker/rest';
|
|
8
|
+
|
|
9
|
+
const PROJECT_ID = 'blueflyio/openstandardagents';
|
|
10
|
+
const TOKEN = process.env.GITLAB_TOKEN || process.env.SERVICE_ACCOUNT_OSSA_TOKEN || process.env.GITLAB_PUSH_TOKEN;
|
|
11
|
+
|
|
12
|
+
if (!TOKEN) {
|
|
13
|
+
console.error('❌ Error: GITLAB_TOKEN or SERVICE_ACCOUNT_OSSA_TOKEN required');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const gitlab = new Gitlab({
|
|
18
|
+
host: 'https://gitlab.com',
|
|
19
|
+
token: TOKEN,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
interface ProtectionRule {
|
|
23
|
+
name: string;
|
|
24
|
+
push_access_levels?: Array<{ access_level: number }>;
|
|
25
|
+
merge_access_levels?: Array<{ access_level: number }>;
|
|
26
|
+
allow_force_push?: boolean;
|
|
27
|
+
allowed_to_push?: Array<{ user_id?: number; group_id?: number }>;
|
|
28
|
+
allowed_to_merge?: Array<{ user_id?: number; group_id?: number }>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async function protectBranch(branch: string, rules: ProtectionRule): Promise<void> {
|
|
32
|
+
try {
|
|
33
|
+
console.log(`\n🔒 Protecting branch: ${branch}`);
|
|
34
|
+
|
|
35
|
+
// Check if branch is already protected
|
|
36
|
+
const existing = await gitlab.ProtectedBranches.all(PROJECT_ID);
|
|
37
|
+
const isProtected = existing.some((pb: any) => pb.name === branch);
|
|
38
|
+
|
|
39
|
+
if (isProtected) {
|
|
40
|
+
console.log(` ⚠️ ${branch} is already protected. Updating...`);
|
|
41
|
+
await gitlab.ProtectedBranches.unprotect(PROJECT_ID, branch);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Protect the branch
|
|
45
|
+
await gitlab.ProtectedBranches.protect(PROJECT_ID, branch, {
|
|
46
|
+
push_access_levels: [{ access_level: 0 }], // No one can push
|
|
47
|
+
merge_access_levels: [{ access_level: 40 }], // Maintainers can merge
|
|
48
|
+
allow_force_push: false,
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
console.log(` ✅ ${branch} protected successfully`);
|
|
52
|
+
console.log(` - Push: Blocked (no direct pushes)`);
|
|
53
|
+
console.log(` - Merge: Maintainers only (via MR)`);
|
|
54
|
+
console.log(` - Force push: Disabled`);
|
|
55
|
+
} catch (error: any) {
|
|
56
|
+
console.error(` ❌ Failed to protect ${branch}:`, error.message);
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async function main() {
|
|
62
|
+
console.log('🔒 Configuring GitLab Branch Protection Rules\n');
|
|
63
|
+
console.log(`Project: ${PROJECT_ID}`);
|
|
64
|
+
console.log(`Token: ${TOKEN.substring(0, 10)}...`);
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
// Protect main branch
|
|
68
|
+
await protectBranch('main', {
|
|
69
|
+
name: 'main',
|
|
70
|
+
push_access_levels: [{ access_level: 0 }], // No one
|
|
71
|
+
merge_access_levels: [{ access_level: 40 }], // Maintainers
|
|
72
|
+
allow_force_push: false,
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Protect development branch
|
|
76
|
+
await protectBranch('development', {
|
|
77
|
+
name: 'development',
|
|
78
|
+
push_access_levels: [{ access_level: 0 }], // No one
|
|
79
|
+
merge_access_levels: [{ access_level: 40 }], // Maintainers
|
|
80
|
+
allow_force_push: false,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
console.log('\n✅ Branch protection configured successfully!');
|
|
84
|
+
console.log('\nProtected branches:');
|
|
85
|
+
console.log(' - main: No direct pushes, MR required');
|
|
86
|
+
console.log(' - development: No direct pushes, MR required');
|
|
87
|
+
console.log('\nView in GitLab:');
|
|
88
|
+
console.log(` https://gitlab.com/${PROJECT_ID}/-/settings/repository#protected-branches`);
|
|
89
|
+
} catch (error: any) {
|
|
90
|
+
console.error('\n❌ Error configuring branch protection:', error.message);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
main();
|