@bluefly/openstandardagents 0.2.8 → 0.2.9

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.
Files changed (112) hide show
  1. package/.env.example +1 -1
  2. package/.github/AGENTS.md +245 -0
  3. package/.github/agents/github-issue-triage.ossa.yaml +99 -0
  4. package/.github/agents/github-pr-triage.ossa.yaml +137 -0
  5. package/.github/workflows/issue-sync-to-gitlab.yml +138 -0
  6. package/.github/workflows/pr-triage-to-gitlab.yml +164 -0
  7. package/.version.json +1 -1
  8. package/.wiki-config.json +1 -1
  9. package/CHANGELOG.md +33 -0
  10. package/CONTRIBUTING.md +102 -3
  11. package/README.md +17 -10
  12. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  13. package/dist/services/release-automation/webhook.service.js +3 -3
  14. package/dist/services/release-automation/webhook.service.js.map +1 -1
  15. package/dist/services/runtime/claude/claude-adapter.d.ts +1 -1
  16. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -1
  17. package/dist/services/runtime/claude/claude-adapter.js +1 -1
  18. package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
  19. package/dist/spec/v0.2.9/a2a-protocol.md +1337 -0
  20. package/dist/spec/v0.2.9/agent.md +1946 -0
  21. package/dist/spec/v0.2.9/capabilities/index.yaml +25 -0
  22. package/dist/spec/v0.2.9/capabilities/memory.yaml +251 -0
  23. package/dist/spec/v0.2.9/capability-schema.md +576 -0
  24. package/dist/spec/v0.2.9/compliance-profiles.md +533 -0
  25. package/dist/spec/v0.2.9/conformance-testing.md +1527 -0
  26. package/dist/spec/v0.2.9/gitlab-duo-integration.md +621 -0
  27. package/dist/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
  28. package/dist/spec/v0.2.9/runtime-semantics.md +464 -0
  29. package/dist/spec/v0.2.9/security-model.md +1245 -0
  30. package/dist/spec/v0.2.9/semantic-conventions.md +347 -0
  31. package/dist/spec/v0.2.9/types.ts +522 -0
  32. package/dist/types/policy.d.ts +377 -0
  33. package/dist/types/policy.d.ts.map +1 -0
  34. package/dist/types/policy.js +84 -0
  35. package/dist/types/policy.js.map +1 -0
  36. package/dist/utils/version.js +1 -1
  37. package/docs/specs/policy-dsl.md +925 -0
  38. package/examples/adk-integration/code-review-workflow.yml +1 -1
  39. package/examples/adk-integration/customer-support.yml +1 -1
  40. package/examples/adk-integration/data-pipeline.yml +1 -1
  41. package/examples/advanced/reasoning-agent.yaml +136 -0
  42. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  43. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  44. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  45. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  46. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  47. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  48. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  49. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  50. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  51. package/examples/agents-md/code-agent.ossa.json +100 -0
  52. package/examples/agents-md/monorepo-agent.ossa.yaml +180 -0
  53. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  54. package/examples/autogen/multi-agent.ossa.json +1 -1
  55. package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
  56. package/examples/claude-code/ossa-validator.ossa.yaml +2 -2
  57. package/examples/common_npm/agent-router.ossa.yaml +1 -1
  58. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  59. package/examples/crewai/research-team.ossa.json +1 -1
  60. package/examples/cursor/code-review-agent.ossa.json +1 -1
  61. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -1
  62. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  63. package/examples/extensions/agents-md-v1.yml +175 -0
  64. package/examples/extensions/drupal-v1.yml +1 -1
  65. package/examples/extensions/kagent-v1.yml +1 -1
  66. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  67. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  68. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  69. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  70. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  71. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -1
  72. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  73. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  74. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  75. package/examples/langchain/chain-agent.ossa.json +1 -1
  76. package/examples/langflow/workflow-agent.ossa.json +1 -1
  77. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  78. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  79. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  80. package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
  81. package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
  82. package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
  83. package/examples/openai/basic-agent.ossa.yaml +1 -1
  84. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  85. package/examples/openai/swarm-agent.ossa.json +1 -1
  86. package/examples/production/document-analyzer-openai.yml +1 -1
  87. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  88. package/examples/templates/ossa-compliance.yaml +1 -1
  89. package/examples/vercel/edge-agent.ossa.json +1 -1
  90. package/llms.txt +1 -1
  91. package/package.json +5 -3
  92. package/scripts/README.md +25 -0
  93. package/scripts/compliance-audit.ts +796 -0
  94. package/scripts/generate-agents-catalog.ts +2 -1
  95. package/scripts/generate-api-docs.ts +2 -1
  96. package/scripts/generate-examples-docs.ts +2 -1
  97. package/scripts/generate-llms-ctx.sh +2 -2
  98. package/spec/v0.2.9/a2a-protocol.md +1337 -0
  99. package/spec/v0.2.9/agent.md +1946 -0
  100. package/spec/v0.2.9/capabilities/index.yaml +25 -0
  101. package/spec/v0.2.9/capabilities/memory.yaml +251 -0
  102. package/spec/v0.2.9/capability-schema.md +576 -0
  103. package/spec/v0.2.9/compliance-profiles.md +533 -0
  104. package/spec/v0.2.9/conformance-testing.md +1527 -0
  105. package/spec/v0.2.9/gitlab-duo-integration.md +621 -0
  106. package/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
  107. package/spec/v0.2.9/runtime-semantics.md +464 -0
  108. package/spec/v0.2.9/security-model.md +1245 -0
  109. package/spec/v0.2.9/semantic-conventions.md +347 -0
  110. package/spec/v0.2.9/types.ts +522 -0
  111. package/test-results/junit.xml +184 -146
  112. package/.github/workflows/pr-comment.yml +0 -33
package/.env.example CHANGED
@@ -4,7 +4,7 @@
4
4
  # ===========================================
5
5
  # Version & Environment
6
6
  # ===========================================
7
- VERSION=0.2.8
7
+ VERSION=0.2.9
8
8
  NODE_ENV=production
9
9
  LOG_LEVEL=info
10
10
 
@@ -0,0 +1,245 @@
1
+ # AGENTS.md - Repository-Level Agent Guidance
2
+
3
+ > This file provides guidance for AI coding agents working on this repository.
4
+ > Follows the [agents.md](https://agents.md) specification.
5
+
6
+ ## Overview
7
+
8
+ This is the **OSSA (Open Standard for Scalable AI Agents)** repository - the OpenAPI for AI Agents.
9
+
10
+ **Important**: This GitHub repository is a **public mirror** of our [GitLab repository](https://gitlab.com/blueflyio/openstandardagents). All CI/CD, testing, and releases happen on GitLab.
11
+
12
+ ## Development Environment
13
+
14
+ ### Setup
15
+
16
+ ```bash
17
+ # Clone (from GitHub mirror)
18
+ git clone https://github.com/blueflyio/openstandardagents.git
19
+ cd openstandardagents
20
+
21
+ # Install dependencies
22
+ npm install
23
+
24
+ # Build
25
+ npm run build
26
+
27
+ # Run tests
28
+ npm test
29
+ ```
30
+
31
+ ### Key Directories
32
+
33
+ | Directory | Purpose |
34
+ |-----------|---------|
35
+ | `spec/` | OSSA schema definitions (JSON Schema) |
36
+ | `src/` | TypeScript CLI and validation library |
37
+ | `examples/` | Example agent manifests for various platforms |
38
+ | `docs/` | Public documentation |
39
+ | `.gitlab/` | GitLab CI/CD and internal agents |
40
+ | `.github/` | GitHub workflows and community tooling |
41
+
42
+ ### Technology Stack
43
+
44
+ - **Language**: TypeScript (strict mode)
45
+ - **Runtime**: Node.js 20+
46
+ - **Package Manager**: npm (with legacy-peer-deps)
47
+ - **Testing**: Jest
48
+ - **Linting**: ESLint + Prettier
49
+ - **Schema**: JSON Schema Draft-07
50
+
51
+ ## Testing
52
+
53
+ ### Running Tests
54
+
55
+ ```bash
56
+ # All tests
57
+ npm test
58
+
59
+ # With coverage
60
+ npm test -- --coverage
61
+
62
+ # Specific file
63
+ npm test -- schema.repository.test.ts
64
+
65
+ # Watch mode
66
+ npm test -- --watch
67
+ ```
68
+
69
+ ### Test Requirements
70
+
71
+ - All schema changes require validation tests
72
+ - All CLI commands require integration tests
73
+ - Minimum 80% code coverage
74
+ - Tests must pass on Node.js 20 and 22
75
+
76
+ ### Validation
77
+
78
+ ```bash
79
+ # Validate all example manifests
80
+ npm run validate
81
+
82
+ # Validate specific manifest
83
+ npx ossa validate examples/cursor/code-review-agent.ossa.json
84
+ ```
85
+
86
+ ## Pull Request Instructions
87
+
88
+ ### PR Workflow (GitHub Mirror)
89
+
90
+ 1. **Open PR on GitHub** - Community contributions welcome
91
+ 2. **Automated Triage** - OSSA agents label and categorize
92
+ 3. **Review** - Maintainers review on GitHub
93
+ 4. **GitLab Sync** - Approved PRs create GitLab MR
94
+ 5. **CI/CD** - Full test suite runs on GitLab
95
+ 6. **Merge** - Changes merge on GitLab
96
+ 7. **Mirror Sync** - GitHub automatically updated
97
+ 8. **PR Auto-Close** - Your PR closes when changes appear
98
+
99
+ ### Commit Convention
100
+
101
+ Use [Conventional Commits](https://conventionalcommits.org):
102
+
103
+ ```bash
104
+ # Feature (minor version bump)
105
+ git commit -m "feat(schema): add agents_md extension support"
106
+
107
+ # Bug fix (patch version bump)
108
+ git commit -m "fix(cli): resolve validation timeout"
109
+
110
+ # Breaking change (major version bump)
111
+ git commit -m "feat!: redesign manifest schema
112
+
113
+ BREAKING CHANGE: apiVersion format changed"
114
+
115
+ # Documentation (no release)
116
+ git commit -m "docs: update getting started guide"
117
+ ```
118
+
119
+ ### PR Title Format
120
+
121
+ PR titles should follow conventional commits (becomes squash commit):
122
+
123
+ - ✅ `feat: add LangGraph extension support`
124
+ - ✅ `fix(schema): correct required fields`
125
+ - ❌ `Updated some stuff`
126
+ - ❌ `WIP`
127
+
128
+ ## Code Style
129
+
130
+ ### TypeScript Guidelines
131
+
132
+ ```typescript
133
+ // ✅ Good: Explicit types, descriptive names
134
+ export async function validateManifest(
135
+ manifest: OssaManifest,
136
+ options: ValidationOptions = {}
137
+ ): Promise<ValidationResult> {
138
+ // Implementation
139
+ }
140
+
141
+ // ❌ Bad: Any types, unclear names
142
+ export async function validate(m: any, o?: any) {
143
+ // Implementation
144
+ }
145
+ ```
146
+
147
+ ### Schema Guidelines
148
+
149
+ ```json
150
+ {
151
+ "$schema": "http://json-schema.org/draft-07/schema#",
152
+ "type": "object",
153
+ "required": ["apiVersion", "kind", "metadata", "spec"],
154
+ "properties": {
155
+ "apiVersion": {
156
+ "type": "string",
157
+ "pattern": "^ossa/v[0-9]+\\.[0-9]+\\.[0-9]+$",
158
+ "description": "OSSA API version"
159
+ }
160
+ }
161
+ }
162
+ ```
163
+
164
+ ### File Naming
165
+
166
+ - Schema files: `ossa-{version}.schema.json`
167
+ - Example manifests: `{name}.ossa.{json|yaml}`
168
+ - Tests: `{name}.test.ts`
169
+ - Services: `{name}.service.ts`
170
+
171
+ ## Security
172
+
173
+ ### Sensitive Data
174
+
175
+ **NEVER** commit:
176
+ - API keys or tokens
177
+ - Private keys or certificates
178
+ - Database credentials
179
+ - Internal URLs or endpoints
180
+
181
+ ### Security Issues
182
+
183
+ **DO NOT** open public issues for security vulnerabilities.
184
+
185
+ Report via email: **ops@openstandardagents.org**
186
+
187
+ ## Architecture Notes
188
+
189
+ ### Schema Versioning
190
+
191
+ - Current: `ossa/v0.2.9` (latest stable)
192
+ - Development: `ossa/v0.2.9` (in progress)
193
+ - Format: `ossa/v{major}.{minor}.{patch}`
194
+
195
+ ### Extension System
196
+
197
+ Extensions allow platform-specific configuration:
198
+
199
+ ```yaml
200
+ extensions:
201
+ cursor:
202
+ enabled: true
203
+ agent_type: composer
204
+ openai_agents:
205
+ enabled: true
206
+ model: gpt-4o
207
+ agents_md:
208
+ enabled: true
209
+ generate: true
210
+ ```
211
+
212
+ ### Supported Extensions
213
+
214
+ | Extension | Platform | Status |
215
+ |-----------|----------|--------|
216
+ | `cursor` | Cursor IDE | Stable |
217
+ | `openai_agents` | OpenAI Agents SDK | Stable |
218
+ | `anthropic` | Claude/Anthropic | Stable |
219
+ | `langchain` | LangChain | Stable |
220
+ | `crewai` | CrewAI | Stable |
221
+ | `kagent` | kAgent (K8s) | Stable |
222
+ | `agents_md` | agents.md | New in v0.2.9 |
223
+
224
+ ## Common Tasks
225
+
226
+ ### Adding a New Extension
227
+
228
+ 1. Add schema definition in `spec/v{version}/ossa-{version}.schema.json`
229
+ 2. Create example in `examples/{extension}/`
230
+ 3. Add validator in `src/services/validation/`
231
+ 4. Write tests in `tests/`
232
+ 5. Update documentation
233
+
234
+ ### Updating Schema Version
235
+
236
+ 1. Copy `spec/v{old}/` to `spec/v{new}/`
237
+ 2. Update `$id`, `title`, and version references
238
+ 3. Make changes
239
+ 4. Update `src/types/index.ts`
240
+ 5. Run `npm run validate`
241
+
242
+ ---
243
+
244
+ *Generated from OSSA agent manifests in `.github/agents/`*
245
+ *Last updated: 2025-12-04*
@@ -0,0 +1,99 @@
1
+ # OSSA Agent Manifest: GitHub Issue Triage Agent
2
+ # Triages issues from GitHub and syncs to GitLab
3
+ apiVersion: ossa/v0.2.9
4
+ kind: Agent
5
+
6
+ metadata:
7
+ name: github-issue-triage
8
+ version: 1.0.0
9
+ description: |
10
+ Triages GitHub issues, auto-labels based on content,
11
+ and syncs to GitLab issue tracker for tracking.
12
+ labels:
13
+ platform: github
14
+ domain: devops
15
+ workflow: issue-triage
16
+ annotations:
17
+ documentation: https://openstandardagents.org/docs/agents/github-issue-triage
18
+
19
+ spec:
20
+ taxonomy:
21
+ domain: devops
22
+ subdomain: issue-management
23
+ capability: triage
24
+
25
+ role: |
26
+ You are a GitHub issue triage agent for OSSA.
27
+
28
+ Your responsibilities:
29
+ 1. Welcome issue reporters and thank them for feedback
30
+ 2. Auto-label issues based on content analysis:
31
+ - bug: Error reports, unexpected behavior
32
+ - enhancement: Feature requests, improvements
33
+ - documentation: Doc updates, clarifications
34
+ - question: Usage questions, help requests
35
+ - component:schema: Schema-related issues
36
+ - component:cli: CLI tool issues
37
+ - component:extensions: Platform extension issues
38
+ 3. Detect duplicate issues and link them
39
+ 4. Escalate security issues immediately
40
+ 5. Create corresponding GitLab issues for tracking
41
+ 6. Sync comments between platforms
42
+
43
+ Be helpful and responsive. Issue reporters are often users
44
+ trying to adopt OSSA and need guidance.
45
+
46
+ llm:
47
+ provider: openai
48
+ model: gpt-4o-mini
49
+ temperature: 0.2
50
+ maxTokens: 1500
51
+
52
+ tools:
53
+ - type: http
54
+ name: github-api
55
+ description: GitHub REST API for issue operations
56
+ endpoint: https://api.github.com
57
+ auth:
58
+ type: bearer
59
+ tokenPath: GITHUB_TOKEN
60
+
61
+ - type: http
62
+ name: gitlab-api
63
+ description: GitLab API for issue sync
64
+ endpoint: https://gitlab.com/api/v4
65
+ auth:
66
+ type: bearer
67
+ tokenPath: GITLAB_TOKEN
68
+
69
+ autonomy:
70
+ level: autonomous
71
+ approval_required: false
72
+ allowed_actions:
73
+ - label_issue
74
+ - comment_issue
75
+ - assign_issue
76
+ - create_gitlab_issue
77
+ - link_duplicate
78
+ blocked_actions:
79
+ - close_issue
80
+ - delete_issue
81
+
82
+ constraints:
83
+ cost:
84
+ maxTokensPerDay: 30000
85
+ maxTokensPerRequest: 2000
86
+ performance:
87
+ maxLatencySeconds: 15
88
+ timeoutSeconds: 60
89
+
90
+ observability:
91
+ logging:
92
+ level: info
93
+ metrics:
94
+ enabled: true
95
+ customMetrics:
96
+ - name: issues_triaged
97
+ type: counter
98
+ - name: duplicates_detected
99
+ type: counter
@@ -0,0 +1,137 @@
1
+ # OSSA Agent Manifest: GitHub PR Triage Agent
2
+ # Triages pull requests from GitHub mirror and syncs to GitLab
3
+ apiVersion: ossa/v0.2.9
4
+ kind: Agent
5
+
6
+ metadata:
7
+ name: github-pr-triage
8
+ version: 1.0.0
9
+ description: |
10
+ Triages GitHub pull requests, validates contributions,
11
+ and creates corresponding merge requests on GitLab.
12
+ labels:
13
+ platform: github
14
+ domain: devops
15
+ workflow: pr-triage
16
+ annotations:
17
+ documentation: https://openstandardagents.org/docs/agents/github-pr-triage
18
+ source: https://gitlab.com/blueflyio/openstandardagents
19
+
20
+ spec:
21
+ taxonomy:
22
+ domain: devops
23
+ subdomain: code-review
24
+ capability: pr-triage
25
+
26
+ role: |
27
+ You are a GitHub PR triage agent for the OSSA (Open Standard for Scalable AI Agents) project.
28
+
29
+ Your responsibilities:
30
+ 1. Welcome contributors and explain the GitHub-to-GitLab workflow
31
+ 2. Validate PR titles follow Conventional Commits format
32
+ 3. Check PR content for:
33
+ - Schema changes (spec/**) - require careful review
34
+ - CLI changes (src/**) - require tests
35
+ - Documentation changes (docs/**) - can be fast-tracked
36
+ - Example additions (examples/**) - require validation
37
+ 4. Auto-label PRs based on content type
38
+ 5. Create corresponding GitLab MR when approved
39
+ 6. Sync comments and reviews between platforms
40
+
41
+ Be welcoming to new contributors. Many are unfamiliar with the dual-repo workflow.
42
+ Provide clear guidance on how to contribute effectively.
43
+
44
+ llm:
45
+ provider: openai
46
+ model: gpt-4o
47
+ temperature: 0.3
48
+ maxTokens: 2000
49
+
50
+ tools:
51
+ - type: http
52
+ name: github-api
53
+ description: GitHub REST API for PR operations
54
+ endpoint: https://api.github.com
55
+ auth:
56
+ type: bearer
57
+ tokenPath: GITHUB_TOKEN
58
+ config:
59
+ headers:
60
+ Accept: application/vnd.github+json
61
+ X-GitHub-Api-Version: "2022-11-28"
62
+
63
+ - type: http
64
+ name: gitlab-api
65
+ description: GitLab API for MR creation
66
+ endpoint: https://gitlab.com/api/v4
67
+ auth:
68
+ type: bearer
69
+ tokenPath: GITLAB_TOKEN
70
+
71
+ - type: mcp
72
+ name: git-operations
73
+ description: Git operations for branch sync
74
+ server: git-mcp
75
+ capabilities:
76
+ - name: clone
77
+ - name: checkout
78
+ - name: push
79
+ - name: diff
80
+
81
+ autonomy:
82
+ level: supervised
83
+ approval_required: false
84
+ allowed_actions:
85
+ - label_pr
86
+ - comment_pr
87
+ - request_changes
88
+ - create_gitlab_mr
89
+ - sync_comments
90
+ blocked_actions:
91
+ - merge_pr
92
+ - close_pr_without_reason
93
+ - delete_branch
94
+
95
+ constraints:
96
+ cost:
97
+ maxTokensPerDay: 50000
98
+ maxTokensPerRequest: 4000
99
+ performance:
100
+ maxLatencySeconds: 30
101
+ timeoutSeconds: 120
102
+
103
+ observability:
104
+ logging:
105
+ level: info
106
+ format: json
107
+ metrics:
108
+ enabled: true
109
+ customMetrics:
110
+ - name: prs_triaged
111
+ type: counter
112
+ description: Number of PRs triaged
113
+ - name: gitlab_mrs_created
114
+ type: counter
115
+ description: Number of GitLab MRs created from GitHub PRs
116
+
117
+ extensions:
118
+ cursor:
119
+ enabled: false
120
+
121
+ agents_md:
122
+ enabled: true
123
+ generate: true
124
+ output_path: .github/AGENTS.md
125
+ sections:
126
+ dev_environment:
127
+ enabled: true
128
+ custom: |
129
+ - This repo is a GitHub mirror of GitLab
130
+ - PRs here trigger triage to GitLab
131
+ - Use Conventional Commits for PR titles
132
+ pr_instructions:
133
+ enabled: true
134
+ custom: |
135
+ - PRs are reviewed here then synced to GitLab
136
+ - CI/CD runs on GitLab, not GitHub
137
+ - Maintainers will create GitLab MR from approved PRs
@@ -0,0 +1,138 @@
1
+ name: Issue Sync to GitLab
2
+
3
+ on:
4
+ issues:
5
+ types: [opened, edited, closed, reopened, labeled]
6
+ issue_comment:
7
+ types: [created]
8
+
9
+ permissions:
10
+ contents: read
11
+ issues: write
12
+
13
+ jobs:
14
+ # Triage new issues
15
+ triage-issue:
16
+ if: github.event_name == 'issues' && github.event.action == 'opened'
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - name: Auto-label Issue
20
+ uses: actions/github-script@v7
21
+ with:
22
+ script: |
23
+ const issue = context.payload.issue;
24
+ const title = issue.title.toLowerCase();
25
+ const body = (issue.body || '').toLowerCase();
26
+ const labels = ['github-issue'];
27
+
28
+ // Auto-detect issue type from title/body
29
+ if (title.includes('bug') || title.includes('error') || title.includes('fix')) {
30
+ labels.push('bug');
31
+ } else if (title.includes('feature') || title.includes('request') || title.includes('add')) {
32
+ labels.push('enhancement');
33
+ } else if (title.includes('doc') || title.includes('readme')) {
34
+ labels.push('documentation');
35
+ } else if (title.includes('question') || title.includes('help')) {
36
+ labels.push('question');
37
+ }
38
+
39
+ // Detect component from content
40
+ if (body.includes('schema') || body.includes('manifest')) {
41
+ labels.push('component:schema');
42
+ }
43
+ if (body.includes('cli') || body.includes('command')) {
44
+ labels.push('component:cli');
45
+ }
46
+ if (body.includes('extension') || body.includes('cursor') || body.includes('langchain')) {
47
+ labels.push('component:extensions');
48
+ }
49
+
50
+ await github.rest.issues.addLabels({
51
+ owner: context.repo.owner,
52
+ repo: context.repo.repo,
53
+ issue_number: issue.number,
54
+ labels: labels
55
+ });
56
+
57
+ - name: Welcome Comment
58
+ uses: actions/github-script@v7
59
+ with:
60
+ script: |
61
+ const issue = context.payload.issue;
62
+ const author = issue.user.login;
63
+
64
+ const welcomeMessage = `## 👋 Thanks for opening an issue, @${author}!
65
+
66
+ We appreciate your feedback on **OSSA (Open Standard for Scalable AI Agents)**.
67
+
68
+ ### 📋 What happens next?
69
+
70
+ 1. **🏷️ Auto-Labeling** - Issue has been automatically labeled based on content
71
+ 2. **🔗 GitLab Sync** - This issue will be synced to our [GitLab repository](https://gitlab.com/blueflyio/openstandardagents/-/issues)
72
+ 3. **👀 Triage** - Core team will review within 24-48 hours
73
+ 4. **💬 Updates** - You'll be notified here when there's progress
74
+
75
+ ### 🔍 Quick Links
76
+
77
+ - 📖 [Documentation](https://openstandardagents.org)
78
+ - 💬 [Discord Community](https://discord.gg/ossa)
79
+ - 🦊 [GitLab Issues](https://gitlab.com/blueflyio/openstandardagents/-/issues)
80
+
81
+ ---
82
+
83
+ *This repository is a public mirror. Active development happens on [GitLab](https://gitlab.com/blueflyio/openstandardagents).*`;
84
+
85
+ await github.rest.issues.createComment({
86
+ owner: context.repo.owner,
87
+ repo: context.repo.repo,
88
+ issue_number: issue.number,
89
+ body: welcomeMessage
90
+ });
91
+
92
+ - name: Notify GitLab Agent Platform
93
+ if: ${{ secrets.GITLAB_WEBHOOK_URL }}
94
+ run: |
95
+ curl -X POST "${{ secrets.GITLAB_WEBHOOK_URL }}" \
96
+ -H "Content-Type: application/json" \
97
+ -H "X-GitHub-Event: issues" \
98
+ -d '{
99
+ "event": "github_issue_opened",
100
+ "issue_number": ${{ github.event.issue.number }},
101
+ "issue_title": "${{ github.event.issue.title }}",
102
+ "issue_url": "${{ github.event.issue.html_url }}",
103
+ "author": "${{ github.event.issue.user.login }}"
104
+ }'
105
+
106
+ # Sync issue closure
107
+ sync-issue-close:
108
+ if: github.event_name == 'issues' && github.event.action == 'closed'
109
+ runs-on: ubuntu-latest
110
+ steps:
111
+ - name: Log Closure
112
+ run: |
113
+ echo "Issue #${{ github.event.issue.number }} closed"
114
+ echo "Closed by: ${{ github.event.sender.login }}"
115
+
116
+ # Sync new comments
117
+ sync-comment:
118
+ if: github.event_name == 'issue_comment' && github.event.action == 'created'
119
+ runs-on: ubuntu-latest
120
+ steps:
121
+ - name: Notify GitLab of Comment
122
+ if: ${{ secrets.GITLAB_WEBHOOK_URL }}
123
+ run: |
124
+ # Skip bot comments
125
+ if [[ "${{ github.event.comment.user.login }}" == *"bot"* ]]; then
126
+ echo "Skipping bot comment"
127
+ exit 0
128
+ fi
129
+
130
+ curl -X POST "${{ secrets.GITLAB_WEBHOOK_URL }}" \
131
+ -H "Content-Type: application/json" \
132
+ -H "X-GitHub-Event: issue_comment" \
133
+ -d '{
134
+ "event": "github_comment_created",
135
+ "issue_number": ${{ github.event.issue.number }},
136
+ "comment_url": "${{ github.event.comment.html_url }}",
137
+ "author": "${{ github.event.comment.user.login }}"
138
+ }'