@vypdev/copilot 3.2.0 → 3.3.0
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/README.md +49 -16
- package/action.yml +67 -35
- package/build/api/index.js +4666 -0
- package/build/api/src/api.d.ts +35 -0
- package/build/api/src/application/ports/agent_configuration_ports.d.ts +3 -0
- package/build/api/src/application/ports/agent_findings_ports.d.ts +8 -0
- package/build/api/src/application/ports/agent_query_ports.d.ts +14 -0
- package/build/api/src/application/ports/bugbot_context_ports.d.ts +9 -0
- package/build/api/src/application/ports/bugbot_finding_publication_ports.d.ts +7 -0
- package/build/api/src/application/ports/bugbot_finding_resolution_ports.d.ts +6 -0
- package/build/api/src/application/ports/bugbot_issue_read_ports.d.ts +10 -0
- package/build/api/src/application/ports/bugbot_issue_write_ports.d.ts +12 -0
- package/build/api/src/application/ports/bugbot_pull_request_read_ports.d.ts +47 -0
- package/build/api/src/application/ports/bugbot_pull_request_resolution_ports.d.ts +3 -0
- package/build/api/src/application/ports/bugbot_pull_request_write_ports.d.ts +4 -0
- package/build/api/src/application/ports/bugbot_rule_ports.d.ts +12 -0
- package/build/api/src/application/ports/bugbot_telemetry_ports.d.ts +32 -0
- package/build/api/src/application/ports/pull_request_review_comment_ports.d.ts +43 -0
- package/build/api/src/application/usecases/steps/commit/bugbot/types.d.ts +112 -0
- package/build/api/src/data/model/agent.d.ts +2 -0
- package/build/api/src/data/model/ai.d.ts +28 -0
- package/build/api/src/data/model/branch_configuration.d.ts +6 -0
- package/build/api/src/data/model/branches.d.ts +12 -0
- package/build/api/src/data/model/commit.d.ts +8 -0
- package/build/api/src/data/model/config.d.ts +30 -0
- package/build/api/src/data/model/emoji.d.ts +5 -0
- package/build/api/src/data/model/execution.d.ts +75 -0
- package/build/api/src/data/model/execution_components.d.ts +43 -0
- package/build/api/src/data/model/execution_inputs.d.ts +94 -0
- package/build/api/src/data/model/hotfix.d.ts +7 -0
- package/build/api/src/data/model/images.d.ts +27 -0
- package/build/api/src/data/model/issue.d.ts +27 -0
- package/build/api/src/data/model/issue_types.d.ts +30 -0
- package/build/api/src/data/model/labels.d.ts +60 -0
- package/build/api/src/data/model/locale.d.ts +6 -0
- package/build/api/src/data/model/project_detail.d.ts +15 -0
- package/build/api/src/data/model/projects.d.ts +14 -0
- package/build/api/src/data/model/pull_request.d.ts +32 -0
- package/build/api/src/data/model/recommendation_state.d.ts +6 -0
- package/build/api/src/data/model/release.d.ts +6 -0
- package/build/api/src/data/model/result.d.ts +25 -0
- package/build/api/src/data/model/single_action.d.ts +43 -0
- package/build/api/src/data/model/size_threshold.d.ts +6 -0
- package/build/api/src/data/model/size_thresholds.d.ts +10 -0
- package/build/api/src/data/model/tokens.d.ts +4 -0
- package/build/api/src/data/model/welcome.d.ts +5 -0
- package/build/api/src/data/model/workflows.d.ts +5 -0
- package/build/api/src/domain/agent.d.ts +26 -0
- package/build/api/src/domain/bugbot/finding_identity.d.ts +26 -0
- package/build/api/src/domain/bugbot/review_command.d.ts +16 -0
- package/build/api/src/domain/bugbot/review_configuration.d.ts +25 -0
- package/build/api/src/domain/copilot_lifecycle.d.ts +42 -0
- package/build/api/src/domain/pull_request_description.d.ts +13 -0
- package/build/api/src/tooling/bugbot_analytics.d.ts +24 -0
- package/build/api/src/tooling/bugbot_benchmark.d.ts +26 -0
- package/build/api/src/tooling/bugbot_quality_eval.d.ts +41 -0
- package/build/cli/index.js +12469 -1740
- package/build/github_action/index.js +10042 -1291
- package/package.json +16 -6
- package/setup/ISSUE_TEMPLATE/help_request.yml +5 -0
- package/setup/workflows/agent-cli-provisioning.yml +26 -27
- package/setup/workflows/copilot_branch_sync.yml +19 -0
- package/setup/workflows/copilot_close_inactive_issues.yml +49 -0
- package/setup/workflows/copilot_commit.yml +56 -1
- package/setup/workflows/copilot_credential_health.yml +190 -0
- package/setup/workflows/copilot_issue.yml +42 -2
- package/setup/workflows/copilot_issue_comment.yml +53 -4
- package/setup/workflows/copilot_pull_request.yml +65 -3
- package/setup/workflows/copilot_pull_request_comment.yml +53 -4
- package/setup/workflows/hotfix_workflow.yml +39 -19
- package/setup/workflows/release_workflow.yml +39 -19
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vypdev/copilot",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"packageManager": "pnpm@10.12.4",
|
|
5
5
|
"description": "Automates branch management, GitHub project linking, and issue/PR tracking with Git-Flow methodology.",
|
|
6
6
|
"homepage": "https://github.com/vypdev/copilot",
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
"url": "https://github.com/vypdev/copilot/issues"
|
|
13
13
|
},
|
|
14
14
|
"main": "build/github_action/index.js",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": "./build/github_action/index.js",
|
|
17
|
+
"./bugbot": {
|
|
18
|
+
"types": "./build/api/src/api.d.ts",
|
|
19
|
+
"default": "./build/api/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
15
22
|
"bin": {
|
|
16
23
|
"copilot": "./build/cli/index.js"
|
|
17
24
|
},
|
|
@@ -19,6 +26,8 @@
|
|
|
19
26
|
"action.yml",
|
|
20
27
|
"build/cli/index.js",
|
|
21
28
|
"build/github_action/index.js",
|
|
29
|
+
"build/api/index.js",
|
|
30
|
+
"build/api/src/",
|
|
22
31
|
"setup/ISSUE_TEMPLATE/",
|
|
23
32
|
"setup/workflows/",
|
|
24
33
|
"setup/pull_request_template.md",
|
|
@@ -33,18 +42,20 @@
|
|
|
33
42
|
"node": ">=24"
|
|
34
43
|
},
|
|
35
44
|
"scripts": {
|
|
36
|
-
"build": "ncc build src/actions/github_action.ts -o build/github_action && ncc build src/cli.ts -o build/cli && chmod +x build/cli/index.js",
|
|
45
|
+
"build": "node scripts/clean-generated-bundles.cjs && ncc build src/actions/github_action.ts -o build/github_action && ncc build src/cli.ts -o build/cli && ncc build src/api.ts -o build/api && node scripts/prepare-generated-bundles.cjs && chmod +x build/cli/index.js",
|
|
37
46
|
"validate:build": "node scripts/validate-build.cjs",
|
|
38
47
|
"validate:npm-package": "node scripts/validate-npm-package.cjs",
|
|
39
48
|
"smoke:npm-package": "node scripts/smoke-test-npm-package.cjs",
|
|
40
49
|
"test": "jest",
|
|
41
50
|
"test:watch": "jest --watch",
|
|
42
51
|
"test:coverage": "jest --coverage",
|
|
52
|
+
"eval:bugbot": "jest src/tooling/__tests__/bugbot_quality_eval.test.ts src/tooling/__tests__/bugbot_benchmark.test.ts --runInBand",
|
|
43
53
|
"typecheck": "tsc --noEmit",
|
|
44
54
|
"metrics:architecture": "node scripts/collect-architecture-metrics.cjs",
|
|
45
55
|
"lint": "eslint src",
|
|
46
56
|
"validate:agent-docs": "node scripts/validate-agent-documentation.cjs",
|
|
47
57
|
"validate:docs-page": "node scripts/validate-docs-page-assets.cjs",
|
|
58
|
+
"validate:documentation": "node scripts/validate-documentation-contract.cjs",
|
|
48
59
|
"validate:workflows": "node scripts/validate-workflow-contract.cjs",
|
|
49
60
|
"lint:fix": "eslint src --fix",
|
|
50
61
|
"postinstall": "node scripts/install-git-hooks.cjs"
|
|
@@ -59,7 +70,6 @@
|
|
|
59
70
|
"@actions/github": "^6.0.1",
|
|
60
71
|
"@types/axios": "^0.14.4",
|
|
61
72
|
"@types/chance": "^1.1.6",
|
|
62
|
-
"@types/dotenv": "^8.2.3",
|
|
63
73
|
"@types/js-yaml": "^4.0.9",
|
|
64
74
|
"axios": "^1.8.4",
|
|
65
75
|
"boxen": "^8.0.1",
|
|
@@ -67,9 +77,9 @@
|
|
|
67
77
|
"chance": "^1.1.12",
|
|
68
78
|
"commander": "^12.0.0",
|
|
69
79
|
"dockerode": "^4.0.5",
|
|
70
|
-
"dotenv": "^16.5.0",
|
|
71
80
|
"js-yaml": "^4.1.0",
|
|
72
|
-
"shell-quote": "^1.8.3"
|
|
81
|
+
"shell-quote": "^1.8.3",
|
|
82
|
+
"tweetnacl": "^1.0.3"
|
|
73
83
|
},
|
|
74
84
|
"devDependencies": {
|
|
75
85
|
"@eslint/js": "^9.15.0",
|
|
@@ -83,4 +93,4 @@
|
|
|
83
93
|
"typescript": "^5.2.2",
|
|
84
94
|
"typescript-eslint": "^8.15.0"
|
|
85
95
|
}
|
|
86
|
-
}
|
|
96
|
+
}
|
|
@@ -17,6 +17,11 @@ body:
|
|
|
17
17
|
value: |
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
+
- type: markdown
|
|
21
|
+
attributes:
|
|
22
|
+
value: |
|
|
23
|
+
**Copilot assistance:** After opening this issue, mention `@vypbot` in a comment to ask for an explanation, diagnosis, or read-only code/security analysis. Use `/copilot help` to see all available commands.
|
|
24
|
+
|
|
20
25
|
- type: dropdown
|
|
21
26
|
id: help_area
|
|
22
27
|
attributes:
|
|
@@ -14,41 +14,40 @@ jobs:
|
|
|
14
14
|
steps:
|
|
15
15
|
- name: Checkout repository
|
|
16
16
|
uses: actions/checkout@v5
|
|
17
|
+
with:
|
|
18
|
+
persist-credentials: false
|
|
17
19
|
|
|
18
20
|
- name: Verify selected CLI binary and headless contract
|
|
19
21
|
shell: bash
|
|
20
22
|
env:
|
|
21
23
|
AGENT_PROVIDER: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
24
|
+
FINDINGS_PROVIDER: ${{ vars.FINDINGS_PROVIDER }}
|
|
25
|
+
FIXER_PROVIDER: ${{ vars.FIXER_PROVIDER }}
|
|
26
|
+
PLANNER_PROVIDER: ${{ vars.PLANNER_PROVIDER }}
|
|
27
|
+
REVIEWER_PROVIDER: ${{ vars.REVIEWER_PROVIDER }}
|
|
28
|
+
TESTER_PROVIDER: ${{ vars.TESTER_PROVIDER }}
|
|
22
29
|
AGENT_COMMAND: ${{ vars.AGENT_COMMAND }}
|
|
23
30
|
run: |
|
|
24
31
|
set -euo pipefail
|
|
25
32
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
command -v agent
|
|
44
|
-
agent --version >/dev/null
|
|
45
|
-
agent --help >/dev/null
|
|
46
|
-
;;
|
|
47
|
-
*)
|
|
48
|
-
echo "Unsupported AGENT_PROVIDER: $AGENT_PROVIDER" >&2
|
|
49
|
-
exit 1
|
|
50
|
-
;;
|
|
33
|
+
providers=("$AGENT_PROVIDER" "$FINDINGS_PROVIDER" "$FIXER_PROVIDER" "$PLANNER_PROVIDER" "$REVIEWER_PROVIDER" "$TESTER_PROVIDER")
|
|
34
|
+
checked=""
|
|
35
|
+
for provider in "${providers[@]}"; do
|
|
36
|
+
[[ -z "${provider// }" ]] && continue
|
|
37
|
+
[[ " $checked " == *" $provider "* ]] && continue
|
|
38
|
+
checked="$checked $provider"
|
|
39
|
+
if [[ -n "${AGENT_COMMAND// }" && "$provider" == "$AGENT_PROVIDER" ]]; then
|
|
40
|
+
read -r executable _ <<< "$AGENT_COMMAND"
|
|
41
|
+
command -v "$executable"
|
|
42
|
+
echo "Configured agent command: $executable"
|
|
43
|
+
continue
|
|
44
|
+
fi
|
|
45
|
+
case "$provider" in
|
|
46
|
+
opencode) command -v opencode; opencode --version >/dev/null; opencode run --help >/dev/null ;;
|
|
47
|
+
codex) command -v codex; codex --version >/dev/null; codex exec --help >/dev/null ;;
|
|
48
|
+
cursor) command -v agent; agent --version >/dev/null; agent --help >/dev/null ;;
|
|
49
|
+
*) echo "Unsupported agent provider: $provider" >&2; exit 1 ;;
|
|
51
50
|
esac
|
|
52
|
-
|
|
51
|
+
done
|
|
53
52
|
|
|
54
|
-
echo "Agent CLI contract passed for $
|
|
53
|
+
echo "Agent CLI contract passed for: $checked."
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: Copilot - Branch Sync
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- '**'
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
branch-sync:
|
|
10
|
+
name: Copilot - Branch Sync
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
timeout-minutes: 120
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
steps:
|
|
16
|
+
- uses: vypdev/copilot@v3
|
|
17
|
+
with:
|
|
18
|
+
single-action: check_branch_sync_action
|
|
19
|
+
token: ${{ secrets.PAT }}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: Copilot - Close Inactive Issues
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '0 */6 * * *'
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
inactivity_threshold_hours:
|
|
9
|
+
description: Hours without activity before closing a waiting issue
|
|
10
|
+
required: false
|
|
11
|
+
default: '168'
|
|
12
|
+
type: string
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
copilot-inactive-issues:
|
|
19
|
+
name: Copilot - Close Inactive Issues
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
timeout-minutes: 120
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout Repository
|
|
26
|
+
uses: actions/checkout@v5
|
|
27
|
+
with:
|
|
28
|
+
persist-credentials: false
|
|
29
|
+
|
|
30
|
+
- uses: vypdev/copilot@v3
|
|
31
|
+
with:
|
|
32
|
+
single-action: close_inactive_issues_action
|
|
33
|
+
inactivity-threshold-hours: ${{ inputs.inactivity_threshold_hours || vars.INACTIVITY_THRESHOLD_HOURS || '168' }}
|
|
34
|
+
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
35
|
+
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
36
|
+
agent-model: ${{ vars.AGENT_MODEL || 'gpt-5.6-luna' }}
|
|
37
|
+
agent-effort: ${{ vars.AGENT_EFFORT }}
|
|
38
|
+
agent-command: ${{ vars.AGENT_COMMAND }}
|
|
39
|
+
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
|
|
40
|
+
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
|
|
41
|
+
findings-model: ${{ vars.FINDINGS_MODEL }}
|
|
42
|
+
findings-effort: ${{ vars.FINDINGS_EFFORT }}
|
|
43
|
+
findings-command: ${{ vars.FINDINGS_COMMAND }}
|
|
44
|
+
fixer-provider: ${{ vars.FIXER_PROVIDER }}
|
|
45
|
+
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
|
|
46
|
+
fixer-model: ${{ vars.FIXER_MODEL }}
|
|
47
|
+
fixer-effort: ${{ vars.FIXER_EFFORT }}
|
|
48
|
+
fixer-command: ${{ vars.FIXER_COMMAND }}
|
|
49
|
+
token: ${{ secrets.PAT }}
|
|
@@ -9,16 +9,70 @@ on:
|
|
|
9
9
|
|
|
10
10
|
jobs:
|
|
11
11
|
copilot-commits:
|
|
12
|
+
if: ${{ vars.COPILOT_BOT_LOGIN == '' || github.actor != vars.COPILOT_BOT_LOGIN }}
|
|
12
13
|
name: Copilot - Commit
|
|
13
14
|
runs-on: ubuntu-latest
|
|
14
15
|
timeout-minutes: 120
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
15
18
|
steps:
|
|
16
19
|
- name: Checkout Repository
|
|
17
20
|
uses: actions/checkout@v5
|
|
21
|
+
with:
|
|
22
|
+
persist-credentials: false
|
|
23
|
+
fetch-depth: 0
|
|
24
|
+
|
|
25
|
+
- name: Fetch push review range
|
|
26
|
+
if: github.event.after != '0000000000000000000000000000000000000000'
|
|
27
|
+
env:
|
|
28
|
+
BEFORE_SHA: ${{ github.event.before }}
|
|
29
|
+
AFTER_SHA: ${{ github.event.after }}
|
|
30
|
+
BRANCH_CREATED: ${{ github.event.created }}
|
|
31
|
+
run: |
|
|
32
|
+
git cat-file -e "${AFTER_SHA}^{commit}"
|
|
33
|
+
if [ "$BRANCH_CREATED" != "true" ] && ! git cat-file -e "${BEFORE_SHA}^{commit}"; then
|
|
34
|
+
echo "::notice::The previous push commit is unavailable; Bugbot will use its documented fallback scope."
|
|
35
|
+
fi
|
|
18
36
|
|
|
19
37
|
- uses: vypdev/copilot@v3
|
|
20
38
|
with:
|
|
39
|
+
ai-ignore-files: ${{ vars.AI_IGNORE_FILES || 'build/*' }}
|
|
21
40
|
debug: ${{ vars.DEBUG }}
|
|
41
|
+
main-branch: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
42
|
+
development-branch: ${{ vars.DEVELOPMENT_BRANCH || 'develop' }}
|
|
43
|
+
feature-tree: ${{ vars.FEATURE_TREE || 'feature' }}
|
|
44
|
+
bugfix-tree: ${{ vars.BUGFIX_TREE || 'bugfix' }}
|
|
45
|
+
hotfix-tree: ${{ vars.HOTFIX_TREE || 'hotfix' }}
|
|
46
|
+
release-tree: ${{ vars.RELEASE_TREE || 'release' }}
|
|
47
|
+
docs-tree: ${{ vars.DOCS_TREE || 'docs' }}
|
|
48
|
+
chore-tree: ${{ vars.CHORE_TREE || 'chore' }}
|
|
49
|
+
branch-management-always: ${{ vars.BRANCH_MANAGEMENT_ALWAYS || 'false' }}
|
|
50
|
+
reopen-issue-on-push: ${{ vars.REOPEN_ISSUE_ON_PUSH || 'true' }}
|
|
51
|
+
desired-assignees-count: ${{ vars.DESIRED_ASSIGNEES_COUNT || '1' }}
|
|
52
|
+
desired-reviewers-count: ${{ vars.DESIRED_REVIEWERS_COUNT || '1' }}
|
|
53
|
+
merge-timeout: ${{ vars.MERGE_TIMEOUT || '600' }}
|
|
54
|
+
issues-locale: ${{ vars.ISSUES_LOCALE || 'en-US' }}
|
|
55
|
+
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || 'en-US' }}
|
|
56
|
+
commit-prefix-transforms: ${{ vars.COMMIT_PREFIX_TRANSFORMS || 'replace-slash' }}
|
|
57
|
+
ai-pull-request-description: ${{ vars.AI_PULL_REQUEST_DESCRIPTION || 'true' }}
|
|
58
|
+
ai-pull-request-description-mode: ${{ vars.AI_PULL_REQUEST_DESCRIPTION_MODE || 'replace' }}
|
|
59
|
+
ai-members-only: ${{ vars.AI_MEMBERS_ONLY || 'false' }}
|
|
60
|
+
ai-include-reasoning: ${{ vars.AI_INCLUDE_REASONING || 'false' }}
|
|
61
|
+
bugbot-severity: ${{ vars.BUGBOT_SEVERITY || 'low' }}
|
|
62
|
+
bugbot-comment-limit: ${{ vars.BUGBOT_COMMENT_LIMIT || '20' }}
|
|
63
|
+
bugbot-fix-verify-commands: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS }}
|
|
64
|
+
bugbot-dry-run: ${{ vars.BUGBOT_DRY_RUN || 'false' }}
|
|
65
|
+
bugbot-effort: ${{ vars.BUGBOT_EFFORT || 'smart' }}
|
|
66
|
+
bugbot-review-drafts: ${{ vars.BUGBOT_REVIEW_DRAFTS || 'false' }}
|
|
67
|
+
bugbot-trace-rules: ${{ vars.BUGBOT_TRACE_RULES || 'false' }}
|
|
68
|
+
bugbot-suggested-changes: ${{ vars.BUGBOT_SUGGESTED_CHANGES || 'true' }}
|
|
69
|
+
bugbot-telemetry: ${{ vars.BUGBOT_TELEMETRY || 'true' }}
|
|
70
|
+
bugbot-fail-on-unresolved: ${{ vars.BUGBOT_FAIL_ON_UNRESOLVED || 'false' }}
|
|
71
|
+
bugbot-organization-rules: ${{ vars.BUGBOT_ORGANIZATION_RULES }}
|
|
72
|
+
project-column-issue-created: ${{ vars.PROJECT_COLUMN_ISSUE_CREATED || 'Todo' }}
|
|
73
|
+
project-column-pull-request-created: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_CREATED || 'In Progress' }}
|
|
74
|
+
project-column-issue-in-progress: ${{ vars.PROJECT_COLUMN_ISSUE_IN_PROGRESS || 'In Progress' }}
|
|
75
|
+
project-column-pull-request-in-progress: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_IN_PROGRESS || 'In Progress' }}
|
|
22
76
|
project-ids: ${{ vars.PROJECT_IDS }}
|
|
23
77
|
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
24
78
|
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
@@ -53,5 +107,6 @@ jobs:
|
|
|
53
107
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
54
108
|
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
|
|
55
109
|
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
56
|
-
CURSOR_API_KEY: ${{ (vars.AGENT_PROVIDER == 'cursor' || vars.FINDINGS_PROVIDER == 'cursor' || vars.FIXER_PROVIDER == 'cursor' || vars.PLANNER_PROVIDER == 'cursor' || vars.REVIEWER_PROVIDER == 'cursor' || vars.TESTER_PROVIDER == 'cursor'
|
|
110
|
+
CURSOR_API_KEY: ${{ (vars.AGENT_PROVIDER == 'cursor' || vars.FINDINGS_PROVIDER == 'cursor' || vars.FIXER_PROVIDER == 'cursor' || vars.PLANNER_PROVIDER == 'cursor' || vars.REVIEWER_PROVIDER == 'cursor' || vars.TESTER_PROVIDER == 'cursor') && secrets.CURSOR_API_KEY || '' }}
|
|
111
|
+
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
|
|
57
112
|
CODEX_ACCESS_TOKEN: ${{ secrets.CODEX_ACCESS_TOKEN }}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
name: Copilot - Credential Health
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
check_pat:
|
|
7
|
+
description: Check the workflow PAT against GitHub
|
|
8
|
+
required: false
|
|
9
|
+
default: false
|
|
10
|
+
type: boolean
|
|
11
|
+
check_openai:
|
|
12
|
+
description: Check OPENAI_API_KEY
|
|
13
|
+
required: false
|
|
14
|
+
default: false
|
|
15
|
+
type: boolean
|
|
16
|
+
check_anthropic:
|
|
17
|
+
description: Check ANTHROPIC_API_KEY
|
|
18
|
+
required: false
|
|
19
|
+
default: false
|
|
20
|
+
type: boolean
|
|
21
|
+
check_google:
|
|
22
|
+
description: Check GOOGLE_API_KEY
|
|
23
|
+
required: false
|
|
24
|
+
default: false
|
|
25
|
+
type: boolean
|
|
26
|
+
check_openrouter:
|
|
27
|
+
description: Check OPENROUTER_API_KEY
|
|
28
|
+
required: false
|
|
29
|
+
default: false
|
|
30
|
+
type: boolean
|
|
31
|
+
check_cursor:
|
|
32
|
+
description: Check CURSOR_API_KEY
|
|
33
|
+
required: false
|
|
34
|
+
default: false
|
|
35
|
+
type: boolean
|
|
36
|
+
check_opencode:
|
|
37
|
+
description: Check OPENCODE_API_KEY
|
|
38
|
+
required: false
|
|
39
|
+
default: false
|
|
40
|
+
type: boolean
|
|
41
|
+
check_codex:
|
|
42
|
+
description: Check CODEX_ACCESS_TOKEN
|
|
43
|
+
required: false
|
|
44
|
+
default: false
|
|
45
|
+
type: boolean
|
|
46
|
+
check_codex_api_key:
|
|
47
|
+
description: Check CODEX_API_KEY
|
|
48
|
+
required: false
|
|
49
|
+
default: false
|
|
50
|
+
type: boolean
|
|
51
|
+
|
|
52
|
+
permissions:
|
|
53
|
+
contents: read
|
|
54
|
+
|
|
55
|
+
jobs:
|
|
56
|
+
verify-pat:
|
|
57
|
+
if: ${{ inputs.check_pat }}
|
|
58
|
+
name: Verify PAT
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
timeout-minutes: 10
|
|
61
|
+
steps:
|
|
62
|
+
- name: Validate PAT without exposing its value
|
|
63
|
+
shell: bash
|
|
64
|
+
env:
|
|
65
|
+
PAT: ${{ secrets.PAT }}
|
|
66
|
+
run: |
|
|
67
|
+
set -euo pipefail
|
|
68
|
+
[[ -n "${PAT:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
69
|
+
curl --fail --silent --show-error --location --max-time 20 -H "Authorization: Bearer $PAT" -H 'Accept: application/vnd.github+json' https://api.github.com/user >/dev/null
|
|
70
|
+
curl --fail --silent --show-error --location --max-time 20 -H "Authorization: Bearer $PAT" -H 'Accept: application/vnd.github+json' "https://api.github.com/repos/${GITHUB_REPOSITORY}" >/dev/null
|
|
71
|
+
|
|
72
|
+
verify-openai:
|
|
73
|
+
if: ${{ inputs.check_openai }}
|
|
74
|
+
name: Verify OPENAI_API_KEY
|
|
75
|
+
runs-on: ubuntu-latest
|
|
76
|
+
timeout-minutes: 10
|
|
77
|
+
steps:
|
|
78
|
+
- name: Validate OpenAI key without exposing its value
|
|
79
|
+
shell: bash
|
|
80
|
+
env:
|
|
81
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
82
|
+
run: |
|
|
83
|
+
set -euo pipefail
|
|
84
|
+
[[ -n "${OPENAI_API_KEY:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
85
|
+
curl --fail --silent --show-error --location --max-time 20 -H "Authorization: Bearer $OPENAI_API_KEY" https://api.openai.com/v1/models >/dev/null
|
|
86
|
+
|
|
87
|
+
verify-anthropic:
|
|
88
|
+
if: ${{ inputs.check_anthropic }}
|
|
89
|
+
name: Verify ANTHROPIC_API_KEY
|
|
90
|
+
runs-on: ubuntu-latest
|
|
91
|
+
timeout-minutes: 10
|
|
92
|
+
steps:
|
|
93
|
+
- name: Validate Anthropic key without exposing its value
|
|
94
|
+
shell: bash
|
|
95
|
+
env:
|
|
96
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
97
|
+
run: |
|
|
98
|
+
set -euo pipefail
|
|
99
|
+
[[ -n "${ANTHROPIC_API_KEY:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
100
|
+
curl --fail --silent --show-error --location --max-time 20 -H "x-api-key: $ANTHROPIC_API_KEY" -H 'anthropic-version: 2023-06-01' https://api.anthropic.com/v1/models >/dev/null
|
|
101
|
+
|
|
102
|
+
verify-google:
|
|
103
|
+
if: ${{ inputs.check_google }}
|
|
104
|
+
name: Verify GOOGLE_API_KEY
|
|
105
|
+
runs-on: ubuntu-latest
|
|
106
|
+
timeout-minutes: 10
|
|
107
|
+
steps:
|
|
108
|
+
- name: Validate Google key without exposing its value
|
|
109
|
+
shell: bash
|
|
110
|
+
env:
|
|
111
|
+
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
|
|
112
|
+
run: |
|
|
113
|
+
set -euo pipefail
|
|
114
|
+
[[ -n "${GOOGLE_API_KEY:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
115
|
+
curl --fail --silent --show-error --location --max-time 20 "https://generativelanguage.googleapis.com/v1beta/models?key=$GOOGLE_API_KEY" >/dev/null
|
|
116
|
+
|
|
117
|
+
verify-openrouter:
|
|
118
|
+
if: ${{ inputs.check_openrouter }}
|
|
119
|
+
name: Verify OPENROUTER_API_KEY
|
|
120
|
+
runs-on: ubuntu-latest
|
|
121
|
+
timeout-minutes: 10
|
|
122
|
+
steps:
|
|
123
|
+
- name: Validate OpenRouter key without exposing its value
|
|
124
|
+
shell: bash
|
|
125
|
+
env:
|
|
126
|
+
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
127
|
+
run: |
|
|
128
|
+
set -euo pipefail
|
|
129
|
+
[[ -n "${OPENROUTER_API_KEY:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
130
|
+
curl --fail --silent --show-error --location --max-time 20 -H "Authorization: Bearer $OPENROUTER_API_KEY" https://openrouter.ai/api/v1/models >/dev/null
|
|
131
|
+
|
|
132
|
+
verify-cursor:
|
|
133
|
+
if: ${{ inputs.check_cursor }}
|
|
134
|
+
name: Verify CURSOR_API_KEY
|
|
135
|
+
runs-on: ubuntu-latest
|
|
136
|
+
timeout-minutes: 10
|
|
137
|
+
steps:
|
|
138
|
+
- name: Validate Cursor key without exposing its value
|
|
139
|
+
shell: bash
|
|
140
|
+
env:
|
|
141
|
+
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
|
|
142
|
+
run: |
|
|
143
|
+
set -euo pipefail
|
|
144
|
+
[[ -n "${CURSOR_API_KEY:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
145
|
+
curl --fail --silent --show-error --location --max-time 20 -u "$CURSOR_API_KEY:" 'https://api.cursor.com/analytics/ai-code/changes?startDate=30d&page=1&pageSize=1' >/dev/null
|
|
146
|
+
|
|
147
|
+
verify-opencode:
|
|
148
|
+
if: ${{ inputs.check_opencode }}
|
|
149
|
+
name: Verify OPENCODE_API_KEY
|
|
150
|
+
runs-on: ubuntu-latest
|
|
151
|
+
timeout-minutes: 10
|
|
152
|
+
steps:
|
|
153
|
+
- name: Validate OpenCode key without exposing its value
|
|
154
|
+
shell: bash
|
|
155
|
+
env:
|
|
156
|
+
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
|
|
157
|
+
run: |
|
|
158
|
+
set -euo pipefail
|
|
159
|
+
[[ -n "${OPENCODE_API_KEY:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
160
|
+
curl --fail --silent --show-error --location --max-time 20 -H "Authorization: Bearer $OPENCODE_API_KEY" https://opencode.ai/zen/v1/models >/dev/null
|
|
161
|
+
|
|
162
|
+
verify-codex:
|
|
163
|
+
if: ${{ inputs.check_codex }}
|
|
164
|
+
name: Verify CODEX_ACCESS_TOKEN
|
|
165
|
+
runs-on: ubuntu-latest
|
|
166
|
+
timeout-minutes: 10
|
|
167
|
+
steps:
|
|
168
|
+
- name: Validate Codex token without exposing its value
|
|
169
|
+
shell: bash
|
|
170
|
+
env:
|
|
171
|
+
CODEX_ACCESS_TOKEN: ${{ secrets.CODEX_ACCESS_TOKEN }}
|
|
172
|
+
run: |
|
|
173
|
+
set -euo pipefail
|
|
174
|
+
[[ -n "${CODEX_ACCESS_TOKEN:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
175
|
+
curl --fail --silent --show-error --location --max-time 20 -H "Authorization: Bearer $CODEX_ACCESS_TOKEN" https://api.openai.com/v1/models >/dev/null
|
|
176
|
+
|
|
177
|
+
verify-codex-api-key:
|
|
178
|
+
if: ${{ inputs.check_codex_api_key }}
|
|
179
|
+
name: Verify CODEX_API_KEY
|
|
180
|
+
runs-on: ubuntu-latest
|
|
181
|
+
timeout-minutes: 10
|
|
182
|
+
steps:
|
|
183
|
+
- name: Validate Codex API key without exposing its value
|
|
184
|
+
shell: bash
|
|
185
|
+
env:
|
|
186
|
+
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
|
|
187
|
+
run: |
|
|
188
|
+
set -euo pipefail
|
|
189
|
+
[[ -n "${CODEX_API_KEY:-}" ]] || { echo 'Required credential is missing.' >&2; exit 1; }
|
|
190
|
+
curl --fail --silent --show-error --location --max-time 20 -H "Authorization: Bearer $CODEX_API_KEY" https://api.openai.com/v1/models >/dev/null
|
|
@@ -6,6 +6,7 @@ on:
|
|
|
6
6
|
|
|
7
7
|
jobs:
|
|
8
8
|
copilot-issues:
|
|
9
|
+
if: ${{ vars.COPILOT_BOT_LOGIN == '' || github.actor != vars.COPILOT_BOT_LOGIN }}
|
|
9
10
|
name: Copilot - Issue
|
|
10
11
|
runs-on: ubuntu-latest
|
|
11
12
|
timeout-minutes: 120
|
|
@@ -14,11 +15,49 @@ jobs:
|
|
|
14
15
|
steps:
|
|
15
16
|
- name: Checkout Repository
|
|
16
17
|
uses: actions/checkout@v5
|
|
18
|
+
with:
|
|
19
|
+
persist-credentials: false
|
|
17
20
|
|
|
18
21
|
- uses: vypdev/copilot@v3
|
|
19
22
|
with:
|
|
20
|
-
ai-ignore-files: build/*
|
|
23
|
+
ai-ignore-files: ${{ vars.AI_IGNORE_FILES || 'build/*' }}
|
|
21
24
|
debug: ${{ vars.DEBUG }}
|
|
25
|
+
main-branch: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
26
|
+
development-branch: ${{ vars.DEVELOPMENT_BRANCH || 'develop' }}
|
|
27
|
+
feature-tree: ${{ vars.FEATURE_TREE || 'feature' }}
|
|
28
|
+
bugfix-tree: ${{ vars.BUGFIX_TREE || 'bugfix' }}
|
|
29
|
+
hotfix-tree: ${{ vars.HOTFIX_TREE || 'hotfix' }}
|
|
30
|
+
release-tree: ${{ vars.RELEASE_TREE || 'release' }}
|
|
31
|
+
docs-tree: ${{ vars.DOCS_TREE || 'docs' }}
|
|
32
|
+
chore-tree: ${{ vars.CHORE_TREE || 'chore' }}
|
|
33
|
+
branch-management-always: ${{ vars.BRANCH_MANAGEMENT_ALWAYS || 'false' }}
|
|
34
|
+
reopen-issue-on-push: ${{ vars.REOPEN_ISSUE_ON_PUSH || 'true' }}
|
|
35
|
+
desired-assignees-count: ${{ vars.DESIRED_ASSIGNEES_COUNT || '1' }}
|
|
36
|
+
desired-reviewers-count: ${{ vars.DESIRED_REVIEWERS_COUNT || '1' }}
|
|
37
|
+
merge-timeout: ${{ vars.MERGE_TIMEOUT || '600' }}
|
|
38
|
+
issues-locale: ${{ vars.ISSUES_LOCALE || 'en-US' }}
|
|
39
|
+
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || 'en-US' }}
|
|
40
|
+
commit-prefix-transforms: ${{ vars.COMMIT_PREFIX_TRANSFORMS || 'replace-slash' }}
|
|
41
|
+
ai-pull-request-description: ${{ vars.AI_PULL_REQUEST_DESCRIPTION || 'true' }}
|
|
42
|
+
ai-pull-request-description-mode: ${{ vars.AI_PULL_REQUEST_DESCRIPTION_MODE || 'replace' }}
|
|
43
|
+
ai-members-only: ${{ vars.AI_MEMBERS_ONLY || 'false' }}
|
|
44
|
+
ai-include-reasoning: ${{ vars.AI_INCLUDE_REASONING || 'false' }}
|
|
45
|
+
bugbot-severity: ${{ vars.BUGBOT_SEVERITY || 'low' }}
|
|
46
|
+
bugbot-comment-limit: ${{ vars.BUGBOT_COMMENT_LIMIT || '20' }}
|
|
47
|
+
bugbot-fix-verify-commands: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS }}
|
|
48
|
+
bugbot-dry-run: ${{ vars.BUGBOT_DRY_RUN || 'false' }}
|
|
49
|
+
bugbot-effort: ${{ vars.BUGBOT_EFFORT || 'smart' }}
|
|
50
|
+
bugbot-review-drafts: ${{ vars.BUGBOT_REVIEW_DRAFTS || 'false' }}
|
|
51
|
+
bugbot-trace-rules: ${{ vars.BUGBOT_TRACE_RULES || 'false' }}
|
|
52
|
+
bugbot-suggested-changes: ${{ vars.BUGBOT_SUGGESTED_CHANGES || 'true' }}
|
|
53
|
+
bugbot-telemetry: ${{ vars.BUGBOT_TELEMETRY || 'true' }}
|
|
54
|
+
bugbot-fail-on-unresolved: ${{ vars.BUGBOT_FAIL_ON_UNRESOLVED || 'false' }}
|
|
55
|
+
bugbot-organization-rules: ${{ vars.BUGBOT_ORGANIZATION_RULES }}
|
|
56
|
+
project-ids: ${{ vars.PROJECT_IDS }}
|
|
57
|
+
project-column-issue-created: ${{ vars.PROJECT_COLUMN_ISSUE_CREATED || 'Todo' }}
|
|
58
|
+
project-column-pull-request-created: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_CREATED || 'In Progress' }}
|
|
59
|
+
project-column-issue-in-progress: ${{ vars.PROJECT_COLUMN_ISSUE_IN_PROGRESS || 'In Progress' }}
|
|
60
|
+
project-column-pull-request-in-progress: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_IN_PROGRESS || 'In Progress' }}
|
|
22
61
|
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
23
62
|
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
24
63
|
agent-model: ${{ vars.AGENT_MODEL || 'gpt-5.6-luna' }}
|
|
@@ -57,5 +96,6 @@ jobs:
|
|
|
57
96
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
58
97
|
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
|
|
59
98
|
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
60
|
-
CURSOR_API_KEY: ${{ (vars.AGENT_PROVIDER == 'cursor' || vars.FINDINGS_PROVIDER == 'cursor' || vars.FIXER_PROVIDER == 'cursor' || vars.PLANNER_PROVIDER == 'cursor' || vars.REVIEWER_PROVIDER == 'cursor' || vars.TESTER_PROVIDER == 'cursor'
|
|
99
|
+
CURSOR_API_KEY: ${{ (vars.AGENT_PROVIDER == 'cursor' || vars.FINDINGS_PROVIDER == 'cursor' || vars.FIXER_PROVIDER == 'cursor' || vars.PLANNER_PROVIDER == 'cursor' || vars.REVIEWER_PROVIDER == 'cursor' || vars.TESTER_PROVIDER == 'cursor') && secrets.CURSOR_API_KEY || '' }}
|
|
100
|
+
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
|
|
61
101
|
CODEX_ACCESS_TOKEN: ${{ secrets.CODEX_ACCESS_TOKEN }}
|
|
@@ -6,19 +6,58 @@ on:
|
|
|
6
6
|
|
|
7
7
|
jobs:
|
|
8
8
|
copilot-issues:
|
|
9
|
+
if: ${{ vars.COPILOT_BOT_LOGIN == '' || github.actor != vars.COPILOT_BOT_LOGIN }}
|
|
9
10
|
name: Copilot - Issue Comment
|
|
10
11
|
runs-on: ubuntu-latest
|
|
11
12
|
timeout-minutes: 120
|
|
12
13
|
permissions:
|
|
13
|
-
contents:
|
|
14
|
+
contents: read
|
|
14
15
|
steps:
|
|
15
16
|
- name: Checkout Repository
|
|
16
17
|
uses: actions/checkout@v5
|
|
18
|
+
with:
|
|
19
|
+
persist-credentials: false
|
|
20
|
+
fetch-depth: 0
|
|
17
21
|
|
|
18
22
|
- uses: vypdev/copilot@v3
|
|
19
23
|
with:
|
|
20
|
-
ai-ignore-files: build/*
|
|
24
|
+
ai-ignore-files: ${{ vars.AI_IGNORE_FILES || 'build/*' }}
|
|
21
25
|
debug: ${{ vars.DEBUG }}
|
|
26
|
+
main-branch: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
27
|
+
development-branch: ${{ vars.DEVELOPMENT_BRANCH || 'develop' }}
|
|
28
|
+
feature-tree: ${{ vars.FEATURE_TREE || 'feature' }}
|
|
29
|
+
bugfix-tree: ${{ vars.BUGFIX_TREE || 'bugfix' }}
|
|
30
|
+
hotfix-tree: ${{ vars.HOTFIX_TREE || 'hotfix' }}
|
|
31
|
+
release-tree: ${{ vars.RELEASE_TREE || 'release' }}
|
|
32
|
+
docs-tree: ${{ vars.DOCS_TREE || 'docs' }}
|
|
33
|
+
chore-tree: ${{ vars.CHORE_TREE || 'chore' }}
|
|
34
|
+
branch-management-always: ${{ vars.BRANCH_MANAGEMENT_ALWAYS || 'false' }}
|
|
35
|
+
reopen-issue-on-push: ${{ vars.REOPEN_ISSUE_ON_PUSH || 'true' }}
|
|
36
|
+
desired-assignees-count: ${{ vars.DESIRED_ASSIGNEES_COUNT || '1' }}
|
|
37
|
+
desired-reviewers-count: ${{ vars.DESIRED_REVIEWERS_COUNT || '1' }}
|
|
38
|
+
merge-timeout: ${{ vars.MERGE_TIMEOUT || '600' }}
|
|
39
|
+
issues-locale: ${{ vars.ISSUES_LOCALE || 'en-US' }}
|
|
40
|
+
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || 'en-US' }}
|
|
41
|
+
commit-prefix-transforms: ${{ vars.COMMIT_PREFIX_TRANSFORMS || 'replace-slash' }}
|
|
42
|
+
ai-pull-request-description: ${{ vars.AI_PULL_REQUEST_DESCRIPTION || 'true' }}
|
|
43
|
+
ai-pull-request-description-mode: ${{ vars.AI_PULL_REQUEST_DESCRIPTION_MODE || 'replace' }}
|
|
44
|
+
ai-members-only: ${{ vars.AI_MEMBERS_ONLY || 'false' }}
|
|
45
|
+
ai-include-reasoning: ${{ vars.AI_INCLUDE_REASONING || 'false' }}
|
|
46
|
+
bugbot-severity: ${{ vars.BUGBOT_SEVERITY || 'low' }}
|
|
47
|
+
bugbot-comment-limit: ${{ vars.BUGBOT_COMMENT_LIMIT || '20' }}
|
|
48
|
+
bugbot-fix-verify-commands: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS }}
|
|
49
|
+
bugbot-dry-run: ${{ vars.BUGBOT_DRY_RUN || 'false' }}
|
|
50
|
+
bugbot-effort: ${{ vars.BUGBOT_EFFORT || 'smart' }}
|
|
51
|
+
bugbot-review-drafts: ${{ vars.BUGBOT_REVIEW_DRAFTS || 'false' }}
|
|
52
|
+
bugbot-trace-rules: ${{ vars.BUGBOT_TRACE_RULES || 'false' }}
|
|
53
|
+
bugbot-suggested-changes: ${{ vars.BUGBOT_SUGGESTED_CHANGES || 'true' }}
|
|
54
|
+
bugbot-telemetry: ${{ vars.BUGBOT_TELEMETRY || 'true' }}
|
|
55
|
+
bugbot-fail-on-unresolved: ${{ vars.BUGBOT_FAIL_ON_UNRESOLVED || 'false' }}
|
|
56
|
+
bugbot-organization-rules: ${{ vars.BUGBOT_ORGANIZATION_RULES }}
|
|
57
|
+
project-column-issue-created: ${{ vars.PROJECT_COLUMN_ISSUE_CREATED || 'Todo' }}
|
|
58
|
+
project-column-pull-request-created: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_CREATED || 'In Progress' }}
|
|
59
|
+
project-column-issue-in-progress: ${{ vars.PROJECT_COLUMN_ISSUE_IN_PROGRESS || 'In Progress' }}
|
|
60
|
+
project-column-pull-request-in-progress: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_IN_PROGRESS || 'In Progress' }}
|
|
22
61
|
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
23
62
|
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
24
63
|
agent-model: ${{ vars.AGENT_MODEL || 'gpt-5.6-luna' }}
|
|
@@ -39,8 +78,17 @@ jobs:
|
|
|
39
78
|
planner-model: ${{ vars.PLANNER_MODEL }}
|
|
40
79
|
planner-effort: ${{ vars.PLANNER_EFFORT }}
|
|
41
80
|
planner-command: ${{ vars.PLANNER_COMMAND }}
|
|
81
|
+
reviewer-provider: ${{ vars.REVIEWER_PROVIDER }}
|
|
82
|
+
reviewer-model-provider: ${{ vars.REVIEWER_MODEL_PROVIDER }}
|
|
83
|
+
reviewer-model: ${{ vars.REVIEWER_MODEL }}
|
|
84
|
+
reviewer-effort: ${{ vars.REVIEWER_EFFORT }}
|
|
85
|
+
reviewer-command: ${{ vars.REVIEWER_COMMAND }}
|
|
86
|
+
tester-provider: ${{ vars.TESTER_PROVIDER }}
|
|
87
|
+
tester-model-provider: ${{ vars.TESTER_MODEL_PROVIDER }}
|
|
88
|
+
tester-model: ${{ vars.TESTER_MODEL }}
|
|
89
|
+
tester-effort: ${{ vars.TESTER_EFFORT }}
|
|
90
|
+
tester-command: ${{ vars.TESTER_COMMAND }}
|
|
42
91
|
project-ids: ${{ vars.PROJECT_IDS }}
|
|
43
|
-
bugbot-fix-verify-commands: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS }}
|
|
44
92
|
token: ${{ secrets.PAT }}
|
|
45
93
|
env:
|
|
46
94
|
AGENT_PROVIDER: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
@@ -59,5 +107,6 @@ jobs:
|
|
|
59
107
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
60
108
|
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
|
|
61
109
|
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
62
|
-
CURSOR_API_KEY: ${{ (vars.AGENT_PROVIDER == 'cursor' || vars.FINDINGS_PROVIDER == 'cursor' || vars.FIXER_PROVIDER == 'cursor' || vars.PLANNER_PROVIDER == 'cursor' || vars.REVIEWER_PROVIDER == 'cursor' || vars.TESTER_PROVIDER == 'cursor'
|
|
110
|
+
CURSOR_API_KEY: ${{ (vars.AGENT_PROVIDER == 'cursor' || vars.FINDINGS_PROVIDER == 'cursor' || vars.FIXER_PROVIDER == 'cursor' || vars.PLANNER_PROVIDER == 'cursor' || vars.REVIEWER_PROVIDER == 'cursor' || vars.TESTER_PROVIDER == 'cursor') && secrets.CURSOR_API_KEY || '' }}
|
|
111
|
+
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
|
|
63
112
|
CODEX_ACCESS_TOKEN: ${{ secrets.CODEX_ACCESS_TOKEN }}
|