Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
58b5c54
Merge pull request #632 from vypdev/master
vypbot Oct 20, 2026
4a3fe4b
bugfix: bound durable Actions permission fixtures (#577)
efraespada Oct 21, 2026
ae66873
docs-637-clarify-deployment-queue-syntax-and-managed-agents-md-hash-s…
efraespada Oct 21, 2026
6ecf1f4
Merge pull request #638 from vypdev/bugfix/577-bugfix-intermittent-ho…
efraespada Oct 21, 2026
eb97eee
chore: run RepoWise only through manual dispatch
efraespada Oct 21, 2026
3ede9d1
Merge develop into chore/639-ejecutar-repowise-solo-bajo-demanda-para…
vypbot Oct 21, 2026
d491146
Merge develop into docs/637-clarify-deployment-queue-syntax-and-manag…
vypbot Oct 21, 2026
ff3410b
fix: diagnose unsupported stored configuration with safe recovery
efraespada Oct 21, 2026
491d0f4
Merge pull request #641 from vypdev/chore/639-ejecutar-repowise-solo-…
efraespada Oct 21, 2026
b7486e0
Merge develop into docs/637-clarify-deployment-queue-syntax-and-manag…
vypbot Oct 21, 2026
aa9bb01
Merge develop into bugfix/635-improve-diagnostics-and-recovery-for-un…
vypbot Oct 21, 2026
55a7549
chore: bound manual RepoWise history and reuse indexed analysis
efraespada Oct 21, 2026
b6fba19
Merge pull request #640 from vypdev/docs/637-clarify-deployment-queue…
efraespada Oct 21, 2026
3031f2d
test: isolate RepoWise failure fixtures from live summaries
efraespada Oct 21, 2026
de6ae7b
test: enforce current cached RepoWise report provenance
efraespada Oct 21, 2026
fe5fa7a
Merge develop into chore/644-optimize-manual-repowise-analysis-and-co…
vypbot Oct 21, 2026
defc7b9
perf: bound parallel RepoWise history scanning to two workers
efraespada Oct 21, 2026
69e5f8f
Merge develop into bugfix/635-improve-diagnostics-and-recovery-for-un…
vypbot Oct 21, 2026
6a6dc12
docs: clarify bounded RepoWise worker budgets
efraespada Oct 21, 2026
78861c2
Merge pull request #645 from vypdev/chore/644-optimize-manual-repowis…
efraespada Oct 21, 2026
aafb613
Merge develop into bugfix/635-improve-diagnostics-and-recovery-for-un…
vypbot Oct 21, 2026
6c3e5a7
Merge pull request #642 from vypdev/bugfix/635-improve-diagnostics-an…
efraespada Oct 21, 2026
1285e4a
fix: pass live queue attestations on publication callbacks
efraespada Oct 21, 2026
8725ad7
fix: surface rejected SDD ownership with bounded recovery
efraespada Oct 21, 2026
bbcce0f
test: register bounded SDD diagnostic publication authority
efraespada Oct 21, 2026
a280c14
Merge pull request #649 from vypdev/bugfix/643-release-and-hotfix-pub…
efraespada Oct 21, 2026
4d41ad1
Merge develop into bugfix/636-pre-branch-sdd-ownership-analysis-fails…
vypbot Oct 21, 2026
0b19fe4
fix: preserve actionable finding mutation diagnostics
efraespada Oct 21, 2026
eb100c3
test: reject malformed SDD analysis without ownership recovery
efraespada Oct 21, 2026
890b926
Merge develop into bugfix/646-bug-bugbot-persists-a-review-then-fails…
vypbot Oct 21, 2026
5e637f9
fix: diagnose only the submitted finding batch
efraespada Oct 21, 2026
710547d
Merge pull request #650 from vypdev/bugfix/636-pre-branch-sdd-ownersh…
efraespada Oct 21, 2026
38b5eb4
Merge develop into bugfix/646-bug-bugbot-persists-a-review-then-fails…
vypbot Oct 21, 2026
cb82695
fix: retain transient recovery for HTTP 408 and 425
efraespada Oct 21, 2026
d447e86
docs(sdd): specify issue contract in specs/repository-verification-se…
vypbot Oct 21, 2026
14169d6
fix: preserve the issue publication error boundary
efraespada Oct 21, 2026
bb67cb4
Merge pull request #651 from vypdev/bugfix/646-bug-bugbot-persists-a-…
efraespada Oct 21, 2026
45335e8
feat: prepare repository verification with trusted setup hooks
efraespada Oct 21, 2026
398723d
Merge develop into feature/647-support-repository-owned-verification-…
vypbot Oct 21, 2026
e4387b8
feat: run repository verification setup as native composite actions
efraespada Oct 21, 2026
54c2201
fix: preserve native verification runtime through deferred post steps
efraespada Oct 21, 2026
41bfdc1
test: identify native fixture candidate changes on Windows
efraespada Oct 21, 2026
4487754
fix: keep Python setup caches out of the candidate tree
efraespada Oct 21, 2026
59fda5f
bugfix-653-bug-generated-companion-sdd-publishes-colliding-case-ids-a…
efraespada Oct 21, 2026
920335a
test: remove generated fixture bundle after deferred post steps
efraespada Oct 21, 2026
3b933a5
bugfix-653-bug-generated-companion-sdd-publishes-colliding-case-ids-a…
efraespada Oct 21, 2026
5ba7f58
fix: bind verification readiness to untracked file modes
efraespada Oct 21, 2026
2c17043
Merge pull request #652 from vypdev/feature/647-support-repository-ow…
efraespada Oct 21, 2026
d55309e
Merge develop into bugfix/653-bug-generated-companion-sdd-publishes-c…
vypbot Oct 21, 2026
7fc0576
bugfix-653-bug-generated-companion-sdd-publishes-colliding-case-ids-a…
efraespada Oct 21, 2026
effc63b
docs(sdd): specify issue contract in specs/verification-setup-onboard…
vypbot Oct 21, 2026
902fff8
bugfix-653-bug-generated-companion-sdd-publishes-colliding-case-ids-a…
efraespada Oct 21, 2026
f21020d
feat(#656): generate consumer verification setup and expose activation
efraespada Oct 21, 2026
a8f8dbb
bugfix-653-bug-generated-companion-sdd-publishes-colliding-case-ids-a…
efraespada Oct 21, 2026
b4e0cd3
bugfix-653-bug-generated-companion-sdd-publishes-colliding-case-ids-a…
efraespada Oct 21, 2026
a271064
fix(#656): pin setup directory traversal and regenerate isolated bundles
efraespada Oct 21, 2026
7b91d61
docs(#656): keep upgrade steps visible around command examples
efraespada Oct 21, 2026
6b77907
docs(#656): separate upgrade stage labels from preceding paragraphs
efraespada Oct 21, 2026
71878d4
Merge pull request #654 from vypdev/bugfix/653-bug-generated-companio…
efraespada Oct 21, 2026
6dd7963
Merge develop into feature/656-generate-verification-setup-starter-pr…
vypbot Oct 21, 2026
9cec538
Merge pull request #657 from vypdev/feature/656-generate-verification…
efraespada Oct 21, 2026
cb0ed01
bugfix-655-bugbot-reconciliation-retains-an-orphan-unknown-finding-al…
efraespada Oct 21, 2026
c02a600
bugfix-655-bugbot-reconciliation-retains-an-orphan-unknown-finding-al…
efraespada Oct 21, 2026
c055c6c
Merge pull request #658 from vypdev/bugfix/655-bugbot-reconciliation-…
efraespada Oct 21, 2026
c9d2749
release-3.10.0: prepare release 3.10.0
vypbot Oct 21, 2026
9e0ee54
fix(release): validate proposed paths and literal configuration markers
efraespada Oct 21, 2026
9dfe8fa
docs(sdd): specify issue contract in specs/copilot-comment-workflow-c…
vypbot Oct 21, 2026
805385a
chore: centralize comment workflow coordination (#662)
efraespada Oct 21, 2026
53567e5
fix(setup): retain unsupported coordinator refs as unreadable (#662)
efraespada Oct 21, 2026
f5f462b
Merge pull request #663 from vypdev/chore/662-refactor-centralize-nat…
efraespada Oct 21, 2026
4d7906e
Merge develop into release/3.10.0
vypbot Oct 21, 2026
d33064a
fix(verification): clean up only owned native requests (#665)
efraespada Oct 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .copilot/AGENT_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,6 @@ The setup runner profile selects placement; it does not install the project's la

Declare reviewed version prefixes in `.copilot/verification-prerequisites.json` (schemaVersion 1, runtimes such as java 17, node 24, pnpm 10). Copilot checks declared versions in the credential-free verification environment before each configured verification command; a missing or incompatible runtime blocks publication. Without this optional declaration, existing verification behavior remains and no language is inferred. Java provisioning may use `actions/setup-java`; `JAVA_HOME` and `PATH` survive isolation, while agent credentials and tool-option injection variables do not. Do not add an unreviewed bootstrap or weaken verification to work around a missing runtime. Read [verification prerequisites and same-job setup](https://docs.page/vypdev/copilot/security-operations/operations/verification#repository-verification-prerequisites).

The optional repository-owned composite action prepares each candidate before verification. Setup creates .github/actions/copilot-verification-setup/action.yml only if missing and preserves an existing consumer action and its assets. The shared terminal/web assistant offers explicit activation, disabled by default. Customize the generated failing placeholder before enabling; setup generation and installer PRs do not prove runtime readiness. Review `.github/actions/copilot-verification-setup/action.yml` and its assets onto trusted main, update generated workflows, then enable `VERIFICATION_SETUP=true` (Action input `verification-setup`, disabled by default). GitHub Actions executes the trusted snapshot before each command with a fresh private HOME; candidate changes cannot replace it. Native post steps finish before profile cleanup. Setup failure blocks verification and commit/push. The local CLI cannot execute composite actions and fails closed when opted in. Read [repository-owned setup](https://docs.page/vypdev/copilot/security-operations/operations/verification#repository-owned-setup).

For the full contributor flow, read [repository collaboration](https://github.com/vypdev/copilot/blob/master/docs/agents/repository-collaboration.mdx). For drift and recovery, read [guidance troubleshooting](https://github.com/vypdev/copilot/blob/master/docs/agents/repository-guidance-troubleshooting.mdx).
2 changes: 1 addition & 1 deletion .copilot/setup-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
".copilot/AGENT_GUIDE.md": {
"role": "guide",
"sha256": "07ef187d584f4da868a6cebe6b6d7c7654b057af703e0d10ede11f768ba64674"
"sha256": "c3bd0df4bfdcbba2a007b1596a93480a3bb3145a6285e0a91809f3a93c3fbcd0"
},
".copilot/repository-profile.json": {
"role": "profile",
Expand Down
6 changes: 6 additions & 0 deletions .github/actions/copilot-native-cleanup-check/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
name: Verify native setup cleanup
runs:
using: node24
main: main.cjs
post: post.cjs
post-if: always()
2 changes: 2 additions & 0 deletions .github/actions/copilot-native-cleanup-check/main.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
const fs = require('node:fs');
fs.appendFileSync(process.env.GITHUB_STATE, `workspace=${fs.realpathSync(process.cwd())}\n`);
10 changes: 10 additions & 0 deletions .github/actions/copilot-native-cleanup-check/post.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const fs = require('node:fs');
const path = require('node:path');
const workspace = process.env.STATE_workspace;
// Keep the poisoned candidate bundle through every deferred post step, then remove
// only this job's ignored generated fixture output so subsequent runs start clean.
fs.rmSync(path.join(workspace, '.github/actions/copilot-native-fixture/dist'), { recursive: true, force: true });
for (const file of [path.join(workspace, '.git/copilot-verification-setup'), path.join(path.dirname(workspace), '.copilot-native-fixture-runtime')]) {
if (fs.existsSync(file)) throw new Error('Native acceptance left owned staging or runtime snapshots after post cleanup.');
}
console.log('Native acceptance cleanup passed after all deferred post steps.');
10 changes: 10 additions & 0 deletions .github/actions/copilot-native-fixture/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: Copilot native verification acceptance
inputs:
verification-setup:
default: 'true'
description: Exercise the native verification bridge
runs:
using: node24
main: dist/index.js
post: dist/index.js
post-if: always() && env.COPILOT_NATIVE_PHASE != ''
738 changes: 738 additions & 0 deletions .github/workflows/copilot_comment_runtime.yml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .github/workflows/copilot_commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ jobs:
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
issue-managed-branches: true
pre-branch-sdd: true
verification-setup: ${{ vars.VERIFICATION_SETUP || 'false' }}
debug: ${{ vars.DEBUG }}
bugbot-severity: ${{ vars.BUGBOT_SEVERITY || 'low' }}
bugbot-comment-limit: ${{ vars.BUGBOT_COMMENT_LIMIT || '20' }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/copilot_issue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ jobs:
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
issue-managed-branches: true
pre-branch-sdd: true
verification-setup: ${{ vars.VERIFICATION_SETUP || 'false' }}
ai-ignore-files: build/*,specs/CATALOG.md
bugbot-dry-run: ${{ vars.BUGBOT_DRY_RUN || 'false' }}
bugbot-effort: ${{ vars.BUGBOT_EFFORT || 'smart' }}
Expand Down
127 changes: 24 additions & 103 deletions .github/workflows/copilot_issue_comment.yml
Original file line number Diff line number Diff line change
@@ -1,111 +1,32 @@
# Generated by scripts/generate-native-verification-workflows.cjs
# Project runtimes: .copilot/verification-prerequisites.json
# Dependencies: .github/actions/copilot-verification-setup/action.yml
# https://docs.page/vypdev/copilot/security-operations/operations/verification#repository-verification-prerequisites
name: Copilot - Issue Comment

on:
'on':
issue_comment:
types: [created, edited]

types:
- created
- edited
jobs:
copilot-issues:
if: ${{ vars.COPILOT_BOT_LOGIN == '' || github.actor != vars.COPILOT_BOT_LOGIN }}
name: Copilot - Issue Comment
runs-on: [self-hosted, codex, Linux]
timeout-minutes: 120
uses: $/.github/workflows/copilot_comment_runtime.yml
Comment thread
efraespada marked this conversation as resolved.
Resolved
permissions:
checks: write
contents: read
env:
# Preparation covers parser whitespace and mentions; authorization stays in the Action.
COPILOT_PREPARE_VERIFICATION: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS != '' && ((contains(github.event.comment.body, '/copilot') && ((contains(github.event.comment.body, 'sync-branch') && !contains(github.event.comment.body, '--dry-run')) || contains(github.event.comment.body, 'implement') || contains(github.event.comment.body, 'fix') || contains(github.event.comment.body, 'remember'))) || (vars.COPILOT_BOT_LOGIN != '' && contains(github.event.comment.body, format('@{0}', vars.COPILOT_BOT_LOGIN)) && !contains(github.event.comment.body, '--dry-run'))) }}
steps:
- name: Checkout Repository
uses: actions/checkout@v5
with:
persist-credentials: false
fetch-depth: 0

- name: Prepare repository pnpm
if: env.COPILOT_PREPARE_VERIFICATION == 'true'
uses: pnpm/action-setup@v5
with:
version: 10.12.4
Comment thread
efraespada marked this conversation as resolved.
Resolved
standalone: false
dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }}

- name: Prepare repository Node
if: env.COPILOT_PREPARE_VERIFICATION == 'true'
uses: actions/setup-node@v7
with:
node-version: '24.x'

- name: Install repository verification dependencies
if: env.COPILOT_PREPARE_VERIFICATION == 'true'
shell: bash
run: pnpm install --frozen-lockfile --ignore-scripts

- uses: ./
with:
repository-locale: ${{ vars.REPOSITORY_LOCALE || 'en-US' }}
issues-locale: ${{ vars.ISSUES_LOCALE || '' }}
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || '' }}
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
issue-managed-branches: true
pre-branch-sdd: true
ai-ignore-files: build/*,specs/CATALOG.md
debug: ${{ vars.DEBUG }}
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
agent-model: ${{ vars.AGENT_MODEL || 'gpt-6-luna' }}
agent-effort: ${{ vars.AGENT_EFFORT }}
agent-executable: ${{ vars.AGENT_EXECUTABLE }}
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
findings-model: ${{ vars.FINDINGS_MODEL }}
findings-effort: ${{ vars.FINDINGS_EFFORT }}
findings-executable: ${{ vars.FINDINGS_EXECUTABLE }}
fixer-provider: ${{ vars.FIXER_PROVIDER }}
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
fixer-model: ${{ vars.FIXER_MODEL }}
fixer-effort: ${{ vars.FIXER_EFFORT }}
fixer-executable: ${{ vars.FIXER_EXECUTABLE }}
planner-provider: ${{ vars.PLANNER_PROVIDER }}
planner-model-provider: ${{ vars.PLANNER_MODEL_PROVIDER }}
planner-model: ${{ vars.PLANNER_MODEL }}
planner-effort: ${{ vars.PLANNER_EFFORT }}
planner-executable: ${{ vars.PLANNER_EXECUTABLE }}
reviewer-provider: ${{ vars.REVIEWER_PROVIDER }}
reviewer-model-provider: ${{ vars.REVIEWER_MODEL_PROVIDER }}
reviewer-model: ${{ vars.REVIEWER_MODEL }}
reviewer-effort: ${{ vars.REVIEWER_EFFORT }}
reviewer-executable: ${{ vars.REVIEWER_EXECUTABLE }}
tester-provider: ${{ vars.TESTER_PROVIDER }}
tester-model-provider: ${{ vars.TESTER_MODEL_PROVIDER }}
tester-model: ${{ vars.TESTER_MODEL }}
tester-effort: ${{ vars.TESTER_EFFORT }}
tester-executable: ${{ vars.TESTER_EXECUTABLE }}
project-ids: ${{ vars.PROJECT_IDS }}
token: ${{ secrets.PAT }}
bugbot-fix-verify-commands: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS }}
bugbot-dry-run: ${{ vars.BUGBOT_DRY_RUN || 'false' }}
bugbot-effort: ${{ vars.BUGBOT_EFFORT || 'smart' }}
bugbot-review-drafts: ${{ vars.BUGBOT_REVIEW_DRAFTS || 'false' }}
bugbot-trace-rules: ${{ vars.BUGBOT_TRACE_RULES || 'false' }}
bugbot-suggested-changes: ${{ vars.BUGBOT_SUGGESTED_CHANGES || 'true' }}
bugbot-telemetry: ${{ vars.BUGBOT_TELEMETRY || 'true' }}
bugbot-fail-on-unresolved: ${{ vars.BUGBOT_FAIL_ON_UNRESOLVED || 'false' }}
bugbot-organization-rules: ${{ vars.BUGBOT_ORGANIZATION_RULES }}
env:
AGENT_PROVIDER: ${{ vars.AGENT_PROVIDER || 'codex' }}
AGENT_MODEL_PROVIDER: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
AGENT_MODEL: ${{ vars.AGENT_MODEL }}
AGENT_EFFORT: ${{ vars.AGENT_EFFORT }}
AGENT_ALLOWED_MODEL_PROVIDERS: ${{ vars.AGENT_ALLOWED_MODEL_PROVIDERS || 'openai' }}
AGENT_ALLOWED_MODELS: ${{ vars.AGENT_ALLOWED_MODELS || 'openai/gpt-6-luna' }}
AGENT_EXECUTABLE: ${{ vars.AGENT_EXECUTABLE }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
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 || '' }}
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
COPILOT_EVIDENCE_TOKEN: ${{ github.token }}
with:
runs-on: '["self-hosted","codex","Linux"]'
issue-managed-branches: 'true'
pre-branch-sdd: 'true'
ai-ignore-files: build/*,specs/CATALOG.md
prepare-source-verification: true
secrets:
PAT: ${{ secrets.PAT }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
1 change: 1 addition & 0 deletions .github/workflows/copilot_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ jobs:
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
issue-managed-branches: true
pre-branch-sdd: true
verification-setup: ${{ vars.VERIFICATION_SETUP || 'false' }}
ai-ignore-files: build/*,specs/CATALOG.md
bugbot-severity: ${{ vars.BUGBOT_SEVERITY || 'low' }}
bugbot-comment-limit: ${{ vars.BUGBOT_COMMENT_LIMIT || '20' }}
Expand Down
127 changes: 24 additions & 103 deletions .github/workflows/copilot_pull_request_comment.yml
Original file line number Diff line number Diff line change
@@ -1,111 +1,32 @@
# Generated by scripts/generate-native-verification-workflows.cjs
# Project runtimes: .copilot/verification-prerequisites.json
# Dependencies: .github/actions/copilot-verification-setup/action.yml
# https://docs.page/vypdev/copilot/security-operations/operations/verification#repository-verification-prerequisites
name: Copilot - Pull Request Comment

on:
'on':
pull_request_review_comment:
types: [created, edited]

types:
- created
- edited
jobs:
copilot-pull-requests:
if: ${{ (vars.COPILOT_BOT_LOGIN == '' || github.actor != vars.COPILOT_BOT_LOGIN) && github.event.pull_request.head.repo.full_name == github.repository }}
name: Copilot - Pull Request Comment
runs-on: [self-hosted, codex, Linux]
timeout-minutes: 120
uses: $/.github/workflows/copilot_comment_runtime.yml
permissions:
checks: write
contents: read
env:
# Preparation covers parser whitespace and mentions; authorization stays in the Action.
COPILOT_PREPARE_VERIFICATION: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS != '' && ((contains(github.event.comment.body, '/copilot') && ((contains(github.event.comment.body, 'sync-branch') && !contains(github.event.comment.body, '--dry-run')) || contains(github.event.comment.body, 'implement') || contains(github.event.comment.body, 'fix') || contains(github.event.comment.body, 'remember'))) || (vars.COPILOT_BOT_LOGIN != '' && contains(github.event.comment.body, format('@{0}', vars.COPILOT_BOT_LOGIN)) && !contains(github.event.comment.body, '--dry-run'))) }}
steps:
- name: Checkout Repository
uses: actions/checkout@v5
with:
persist-credentials: false
fetch-depth: 0

- name: Prepare repository pnpm
if: env.COPILOT_PREPARE_VERIFICATION == 'true'
uses: pnpm/action-setup@v5
with:
version: 10.12.4
standalone: false
dest: ${{ runner.temp }}/setup-pnpm-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }}

- name: Prepare repository Node
if: env.COPILOT_PREPARE_VERIFICATION == 'true'
uses: actions/setup-node@v7
with:
node-version: '24.x'

- name: Install repository verification dependencies
if: env.COPILOT_PREPARE_VERIFICATION == 'true'
shell: bash
run: pnpm install --frozen-lockfile --ignore-scripts

- uses: ./
with:
repository-locale: ${{ vars.REPOSITORY_LOCALE || 'en-US' }}
issues-locale: ${{ vars.ISSUES_LOCALE || '' }}
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || '' }}
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
issue-managed-branches: true
pre-branch-sdd: true
ai-ignore-files: build/*,specs/CATALOG.md
debug: ${{ vars.DEBUG }}
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
agent-model: ${{ vars.AGENT_MODEL || 'gpt-6-luna' }}
agent-effort: ${{ vars.AGENT_EFFORT }}
agent-executable: ${{ vars.AGENT_EXECUTABLE }}
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
findings-model: ${{ vars.FINDINGS_MODEL }}
findings-effort: ${{ vars.FINDINGS_EFFORT }}
findings-executable: ${{ vars.FINDINGS_EXECUTABLE }}
fixer-provider: ${{ vars.FIXER_PROVIDER }}
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
fixer-model: ${{ vars.FIXER_MODEL }}
fixer-effort: ${{ vars.FIXER_EFFORT }}
fixer-executable: ${{ vars.FIXER_EXECUTABLE }}
reviewer-provider: ${{ vars.REVIEWER_PROVIDER }}
reviewer-model-provider: ${{ vars.REVIEWER_MODEL_PROVIDER }}
reviewer-model: ${{ vars.REVIEWER_MODEL }}
reviewer-effort: ${{ vars.REVIEWER_EFFORT }}
reviewer-executable: ${{ vars.REVIEWER_EXECUTABLE }}
planner-provider: ${{ vars.PLANNER_PROVIDER }}
planner-model-provider: ${{ vars.PLANNER_MODEL_PROVIDER }}
planner-model: ${{ vars.PLANNER_MODEL }}
planner-effort: ${{ vars.PLANNER_EFFORT }}
planner-executable: ${{ vars.PLANNER_EXECUTABLE }}
tester-provider: ${{ vars.TESTER_PROVIDER }}
tester-model-provider: ${{ vars.TESTER_MODEL_PROVIDER }}
tester-model: ${{ vars.TESTER_MODEL }}
tester-effort: ${{ vars.TESTER_EFFORT }}
tester-executable: ${{ vars.TESTER_EXECUTABLE }}
project-ids: ${{ vars.PROJECT_IDS }}
token: ${{ secrets.PAT }}
bugbot-fix-verify-commands: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS }}
bugbot-dry-run: ${{ vars.BUGBOT_DRY_RUN || 'false' }}
bugbot-effort: ${{ vars.BUGBOT_EFFORT || 'smart' }}
bugbot-review-drafts: ${{ vars.BUGBOT_REVIEW_DRAFTS || 'false' }}
bugbot-trace-rules: ${{ vars.BUGBOT_TRACE_RULES || 'false' }}
bugbot-suggested-changes: ${{ vars.BUGBOT_SUGGESTED_CHANGES || 'true' }}
bugbot-telemetry: ${{ vars.BUGBOT_TELEMETRY || 'true' }}
bugbot-fail-on-unresolved: ${{ vars.BUGBOT_FAIL_ON_UNRESOLVED || 'false' }}
bugbot-organization-rules: ${{ vars.BUGBOT_ORGANIZATION_RULES }}
env:
AGENT_PROVIDER: ${{ vars.AGENT_PROVIDER || 'codex' }}
AGENT_MODEL_PROVIDER: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
AGENT_MODEL: ${{ vars.AGENT_MODEL }}
AGENT_EFFORT: ${{ vars.AGENT_EFFORT }}
AGENT_ALLOWED_MODEL_PROVIDERS: ${{ vars.AGENT_ALLOWED_MODEL_PROVIDERS || 'openai' }}
AGENT_ALLOWED_MODELS: ${{ vars.AGENT_ALLOWED_MODELS || 'openai/gpt-6-luna' }}
AGENT_EXECUTABLE: ${{ vars.AGENT_EXECUTABLE }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
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 || '' }}
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
COPILOT_EVIDENCE_TOKEN: ${{ github.token }}
with:
runs-on: '["self-hosted","codex","Linux"]'
issue-managed-branches: 'true'
pre-branch-sdd: 'true'
ai-ignore-files: build/*,specs/CATALOG.md
prepare-source-verification: true
secrets:
PAT: ${{ secrets.PAT }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
1 change: 1 addition & 0 deletions .github/workflows/copilot_pull_request_review_state.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ jobs:
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
issue-managed-branches: true
pre-branch-sdd: true
verification-setup: ${{ vars.VERIFICATION_SETUP || 'false' }}
ai-ignore-files: build/*,specs/CATALOG.md
bugbot-severity: ${{ vars.BUGBOT_SEVERITY || 'low' }}
bugbot-comment-limit: ${{ vars.BUGBOT_COMMENT_LIMIT || '20' }}
Expand Down
Loading
Loading