@vypdev/copilot 3.3.0 → 3.5.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 +33 -5
- package/action.yml +85 -109
- package/build/api/index.js +4737 -1506
- package/build/api/src/api.d.ts +60 -14
- package/build/api/src/application/errors/application_error.d.ts +10 -0
- package/build/api/src/application/ports/bugbot_context_ports.d.ts +20 -7
- package/build/api/src/application/ports/bugbot_finding_publication_ports.d.ts +4 -4
- package/build/api/src/application/ports/bugbot_finding_resolution_ports.d.ts +4 -4
- package/build/api/src/application/ports/bugbot_issue_read_ports.d.ts +3 -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 +3 -17
- package/build/api/src/application/ports/bugbot_pull_request_resolution_ports.d.ts +7 -1
- package/build/api/src/application/ports/bugbot_pull_request_write_ports.d.ts +6 -1
- package/build/api/src/application/ports/bugbot_reconciliation_ports.d.ts +18 -0
- package/build/api/src/application/ports/bugbot_review_navigation_ports.d.ts +13 -0
- package/build/api/src/application/ports/bugbot_rule_ports.d.ts +1 -1
- package/build/api/src/application/ports/bugbot_scm_ports.d.ts +14 -0
- package/build/api/src/application/ports/bugbot_telemetry_ports.d.ts +27 -2
- package/build/api/src/application/ports/message_catalog_ports.d.ts +17 -0
- package/build/api/src/application/ports/pull_request_review_comment_ports.d.ts +31 -2
- package/build/api/src/data/model/application_error.d.ts +82 -0
- package/build/api/src/data/model/result.d.ts +3 -4
- package/build/api/src/domain/agent.d.ts +6 -5
- package/build/api/src/domain/branch_sync_validation.d.ts +4 -0
- package/build/api/src/domain/bugbot/context.d.ts +68 -0
- package/build/api/src/domain/bugbot/finding.d.ts +61 -0
- package/build/api/src/domain/bugbot/review_projection.d.ts +33 -0
- package/build/api/src/domain/bugbot/review_state.d.ts +29 -0
- package/build/api/src/domain/message_catalog.d.ts +35 -0
- package/build/api/src/tooling/bugbot_analytics.d.ts +2 -1
- package/build/cli/index.js +93317 -71617
- package/build/github_action/index.js +79616 -63218
- package/build/web/assets/index-2NVaAtP1.js +3 -0
- package/build/web/assets/index-FN-aja4Y.css +1 -0
- package/build/web/index.html +14 -0
- package/package.json +35 -22
- package/scripts/install-git-hooks.cjs +38 -14
- package/setup/ISSUE_TEMPLATE/hotfix.yml +1 -1
- package/setup/ISSUE_TEMPLATE/release.yml +1 -1
- package/setup/pull_request_template.md +9 -135
- package/setup/source-workflows/copilot_pull_request_approval.yml +55 -0
- package/setup/workflows/agent-cli-provisioning.yml +37 -13
- package/setup/workflows/copilot_close_inactive_issues.yml +4 -4
- package/setup/workflows/copilot_commit.yml +16 -16
- package/setup/workflows/copilot_credential_health.yml +0 -20
- package/setup/workflows/copilot_deployment_orchestration.yml +91 -0
- package/setup/workflows/copilot_issue.yml +15 -19
- package/setup/workflows/copilot_issue_comment.yml +17 -19
- package/setup/workflows/copilot_pull_request.yml +21 -22
- package/setup/workflows/copilot_pull_request_approval.yml +51 -0
- package/setup/workflows/copilot_pull_request_comment.yml +17 -19
- package/setup/workflows/copilot_pull_request_merge_queue.yml +20 -0
- package/setup/workflows/copilot_pull_request_review_state.yml +109 -0
- package/setup/workflows/hotfix_workflow.yml +157 -168
- package/setup/workflows/release_workflow.yml +157 -168
- package/build/api/src/application/usecases/steps/commit/bugbot/types.d.ts +0 -112
- package/build/api/src/data/model/agent.d.ts +0 -2
- package/build/api/src/data/model/ai.d.ts +0 -28
- package/build/api/src/data/model/branch_configuration.d.ts +0 -6
- package/build/api/src/data/model/branches.d.ts +0 -12
- package/build/api/src/data/model/commit.d.ts +0 -8
- package/build/api/src/data/model/config.d.ts +0 -30
- package/build/api/src/data/model/emoji.d.ts +0 -5
- package/build/api/src/data/model/execution.d.ts +0 -75
- package/build/api/src/data/model/execution_components.d.ts +0 -43
- package/build/api/src/data/model/execution_inputs.d.ts +0 -94
- package/build/api/src/data/model/hotfix.d.ts +0 -7
- package/build/api/src/data/model/images.d.ts +0 -27
- package/build/api/src/data/model/issue.d.ts +0 -27
- package/build/api/src/data/model/issue_types.d.ts +0 -30
- package/build/api/src/data/model/labels.d.ts +0 -60
- package/build/api/src/data/model/locale.d.ts +0 -6
- package/build/api/src/data/model/project_detail.d.ts +0 -15
- package/build/api/src/data/model/projects.d.ts +0 -14
- package/build/api/src/data/model/pull_request.d.ts +0 -32
- package/build/api/src/data/model/recommendation_state.d.ts +0 -6
- package/build/api/src/data/model/release.d.ts +0 -6
- package/build/api/src/data/model/single_action.d.ts +0 -43
- package/build/api/src/data/model/size_threshold.d.ts +0 -6
- package/build/api/src/data/model/size_thresholds.d.ts +0 -10
- package/build/api/src/data/model/tokens.d.ts +0 -4
- package/build/api/src/data/model/welcome.d.ts +0 -5
- package/build/api/src/data/model/workflows.d.ts +0 -5
- package/build/api/src/domain/bugbot/review_command.d.ts +0 -16
- package/build/api/src/domain/copilot_lifecycle.d.ts +0 -42
- package/build/api/src/domain/pull_request_description.d.ts +0 -13
|
@@ -3,230 +3,219 @@ name: Task - Release
|
|
|
3
3
|
on:
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
inputs:
|
|
6
|
-
|
|
7
|
-
description: '
|
|
6
|
+
mode:
|
|
7
|
+
description: 'Internal orchestration phase'
|
|
8
8
|
required: true
|
|
9
|
-
default:
|
|
9
|
+
default: prepare
|
|
10
|
+
type: choice
|
|
11
|
+
options: [prepare, publish]
|
|
12
|
+
operation-id:
|
|
13
|
+
description: 'Internal durable operation identifier'
|
|
14
|
+
required: false
|
|
15
|
+
default: ''
|
|
16
|
+
version:
|
|
17
|
+
description: 'Release version (MAJOR.MINOR.PATCH)'
|
|
18
|
+
required: false
|
|
19
|
+
default: ''
|
|
10
20
|
title:
|
|
11
|
-
description: '
|
|
12
|
-
required:
|
|
13
|
-
default: '
|
|
21
|
+
description: 'Release title'
|
|
22
|
+
required: false
|
|
23
|
+
default: ''
|
|
14
24
|
changelog:
|
|
15
|
-
description: '
|
|
16
|
-
required:
|
|
17
|
-
default: '
|
|
25
|
+
description: 'Release changelog'
|
|
26
|
+
required: false
|
|
27
|
+
default: ''
|
|
18
28
|
issue:
|
|
19
29
|
description: 'Launcher issue'
|
|
20
30
|
required: true
|
|
21
|
-
|
|
31
|
+
|
|
32
|
+
concurrency:
|
|
33
|
+
group: copilot-deployment-${{ github.repository_id }}-${{ inputs.issue }}
|
|
34
|
+
cancel-in-progress: false
|
|
35
|
+
queue: max
|
|
22
36
|
|
|
23
37
|
jobs:
|
|
24
|
-
|
|
25
|
-
name:
|
|
38
|
+
validate:
|
|
39
|
+
name: Validate deployment command
|
|
26
40
|
runs-on: ubuntu-latest
|
|
27
|
-
timeout-minutes:
|
|
28
|
-
permissions:
|
|
29
|
-
actions: read
|
|
30
|
-
contents: read
|
|
41
|
+
timeout-minutes: 5
|
|
42
|
+
permissions: {}
|
|
31
43
|
steps:
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
- name: Validate bounded orchestration inputs
|
|
45
|
+
uses: actions/github-script@v9
|
|
46
|
+
env:
|
|
47
|
+
MODE: ${{ inputs.mode }}
|
|
48
|
+
OPERATION_ID: ${{ inputs.operation-id }}
|
|
49
|
+
VERSION: ${{ inputs.version }}
|
|
50
|
+
ISSUE: ${{ inputs.issue }}
|
|
51
|
+
TITLE: ${{ inputs.title }}
|
|
52
|
+
CHANGELOG: ${{ inputs.changelog }}
|
|
37
53
|
with:
|
|
38
|
-
|
|
39
|
-
|
|
54
|
+
script: |
|
|
55
|
+
const mode = process.env.MODE;
|
|
56
|
+
const operationId = process.env.OPERATION_ID || '';
|
|
57
|
+
const version = process.env.VERSION || '';
|
|
58
|
+
const issueText = process.env.ISSUE || '';
|
|
59
|
+
const issue = Number(issueText);
|
|
60
|
+
const title = process.env.TITLE || '';
|
|
61
|
+
const changelog = process.env.CHANGELOG || '';
|
|
62
|
+
const errors = [];
|
|
63
|
+
if (!/^[1-9][0-9]*$/.test(issueText) || !Number.isSafeInteger(issue) || issue < 1) errors.push('Issue must be a positive safe integer.');
|
|
64
|
+
if (!/^[0-9]+\.[0-9]+\.[0-9]+$/.test(version)) errors.push('Version must use MAJOR.MINOR.PATCH.');
|
|
65
|
+
if (mode === 'prepare') {
|
|
66
|
+
if (operationId) errors.push('Operation ID must be empty in prepare mode.');
|
|
67
|
+
if (!title || title.length > 1000) errors.push('Title must contain 1-1000 characters.');
|
|
68
|
+
if (!changelog || changelog.length > 50000) errors.push('Changelog must contain 1-50000 characters.');
|
|
69
|
+
} else if (mode === 'publish') {
|
|
70
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._-]{7,127}$/.test(operationId)) errors.push('Operation ID is invalid.');
|
|
71
|
+
if (title || changelog) errors.push('Title and changelog must be empty in publish mode.');
|
|
72
|
+
} else errors.push('Mode must be prepare or publish.');
|
|
73
|
+
if (errors.length) core.setFailed(errors.join(' '));
|
|
40
74
|
|
|
41
75
|
prepare-version-files:
|
|
42
|
-
name: Prepare
|
|
76
|
+
name: Prepare and validate release
|
|
77
|
+
if: ${{ inputs.mode == 'prepare' }}
|
|
43
78
|
runs-on: ubuntu-latest
|
|
44
|
-
needs:
|
|
45
|
-
timeout-minutes:
|
|
79
|
+
needs: validate
|
|
80
|
+
timeout-minutes: 30
|
|
46
81
|
permissions:
|
|
47
82
|
contents: write
|
|
48
83
|
steps:
|
|
49
84
|
- uses: actions/checkout@v5
|
|
50
85
|
with:
|
|
51
86
|
persist-credentials: true
|
|
52
|
-
|
|
53
|
-
- name:
|
|
54
|
-
uses: actions/setup-node@v7
|
|
55
|
-
with:
|
|
56
|
-
node-version: '24.x'
|
|
57
|
-
|
|
58
|
-
- name: Set up pnpm
|
|
59
|
-
uses: pnpm/action-setup@v5
|
|
60
|
-
with:
|
|
61
|
-
version: 10.12.4
|
|
62
|
-
standalone: false
|
|
63
|
-
|
|
64
|
-
- name: Install dependencies
|
|
65
|
-
run: pnpm install --frozen-lockfile
|
|
66
|
-
|
|
67
|
-
- name: Validate inputs
|
|
68
|
-
env:
|
|
69
|
-
VERSION: ${{ github.event.inputs.version }}
|
|
70
|
-
ISSUE: ${{ github.event.inputs.issue }}
|
|
71
|
-
TITLE: ${{ github.event.inputs.title }}
|
|
72
|
-
CHANGELOG: ${{ github.event.inputs.changelog }}
|
|
73
|
-
run: |
|
|
74
|
-
err=0
|
|
75
|
-
if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
76
|
-
echo "::error::Version must be in semver format (e.g. 1.0.0)."
|
|
77
|
-
err=1
|
|
78
|
-
fi
|
|
79
|
-
if ! [[ "$ISSUE" =~ ^-?[0-9]+$ ]]; then
|
|
80
|
-
echo "::error::Issue must be a number (e.g. 123 or -1)."
|
|
81
|
-
err=1
|
|
82
|
-
fi
|
|
83
|
-
if [[ ${#TITLE} -gt 1000 ]]; then
|
|
84
|
-
echo "::error::Title must be at most 1000 characters."
|
|
85
|
-
err=1
|
|
86
|
-
fi
|
|
87
|
-
if [[ ${#CHANGELOG} -gt 50000 ]]; then
|
|
88
|
-
echo "::error::Changelog must be at most 50000 characters."
|
|
89
|
-
err=1
|
|
90
|
-
fi
|
|
91
|
-
[[ $err -eq 0 ]] || exit 1
|
|
92
|
-
|
|
93
|
-
# Example: generic step to perform the version update or compilation (uncomment and adjust as needed)
|
|
94
|
-
# - name: Generic step
|
|
95
|
-
# uses: whatever/action@v2
|
|
96
|
-
|
|
97
|
-
- name: Commit updated package.json and dist directory
|
|
87
|
+
# Add project-specific version, build, validation, smoke-test and generated-file steps here.
|
|
88
|
+
- name: Commit prepared release files
|
|
98
89
|
uses: EndBug/add-and-commit@v9
|
|
99
90
|
with:
|
|
100
|
-
add: './
|
|
91
|
+
add: './'
|
|
101
92
|
committer_name: GitHub Actions
|
|
102
93
|
committer_email: actions@github.com
|
|
103
94
|
default_author: user_info
|
|
104
|
-
message: 'gh-action:
|
|
95
|
+
message: 'gh-action: prepare release ${{ inputs.version }}'
|
|
105
96
|
|
|
106
|
-
|
|
107
|
-
name:
|
|
97
|
+
promote:
|
|
98
|
+
name: Open production promotion
|
|
99
|
+
if: ${{ inputs.mode == 'prepare' }}
|
|
108
100
|
runs-on: ubuntu-latest
|
|
109
|
-
|
|
110
|
-
|
|
101
|
+
needs: prepare-version-files
|
|
102
|
+
timeout-minutes: 10
|
|
111
103
|
permissions:
|
|
112
104
|
contents: read
|
|
105
|
+
issues: write
|
|
106
|
+
pull-requests: write
|
|
107
|
+
actions: write
|
|
113
108
|
steps:
|
|
114
|
-
-
|
|
115
|
-
uses: actions/checkout@v5
|
|
109
|
+
- uses: actions/checkout@v5
|
|
116
110
|
with:
|
|
117
111
|
persist-credentials: false
|
|
118
|
-
|
|
119
|
-
- name: Copilot - Create Tag
|
|
112
|
+
- name: Create or resume promotion PR
|
|
120
113
|
uses: vypdev/copilot@v3
|
|
121
|
-
if: ${{ success() }}
|
|
122
114
|
with:
|
|
123
|
-
|
|
115
|
+
single-action: prepare_deployment_action
|
|
116
|
+
single-action-issue: ${{ inputs.issue }}
|
|
117
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
118
|
+
single-action-version: ${{ inputs.version }}
|
|
119
|
+
single-action-title: ${{ inputs.title }}
|
|
120
|
+
single-action-changelog: ${{ inputs.changelog }}
|
|
124
121
|
main-branch: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
125
122
|
development-branch: ${{ vars.DEVELOPMENT_BRANCH || 'develop' }}
|
|
126
123
|
release-tree: ${{ vars.RELEASE_TREE || 'release' }}
|
|
127
124
|
hotfix-tree: ${{ vars.HOTFIX_TREE || 'hotfix' }}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
125
|
+
release-workflow: ${{ vars.RELEASE_WORKFLOW || 'release_workflow.yml' }}
|
|
126
|
+
hotfix-workflow: ${{ vars.HOTFIX_WORKFLOW || 'hotfix_workflow.yml' }}
|
|
127
|
+
release-reconciliation-strategy: ${{ vars.RELEASE_RECONCILIATION_STRATEGY || 'production-lineage' }}
|
|
128
|
+
hotfix-reconciliation-strategy: ${{ vars.HOTFIX_RECONCILIATION_STRATEGY || 'production-lineage' }}
|
|
129
|
+
reconciliation-pr-mode: ${{ vars.RECONCILIATION_PR_MODE || 'auto' }}
|
|
130
|
+
merge-queue-check-attestations: ${{ vars.MERGE_QUEUE_CHECK_ATTESTATIONS || '[]' }}
|
|
131
|
+
reconciliation-backmerge-mode: ${{ vars.RECONCILIATION_BACKMERGE_MODE || 'auto' }}
|
|
132
|
+
hotfix-active-release-policy: ${{ vars.HOTFIX_ACTIVE_RELEASE_POLICY || 'prefer-release' }}
|
|
133
|
+
reconciliation-tree: ${{ vars.RECONCILIATION_TREE || 'sync' }}
|
|
134
|
+
reconciliation-cleanup: ${{ vars.RECONCILIATION_CLEANUP || 'all' }}
|
|
135
|
+
reconciliation-issue-completion: ${{ vars.RECONCILIATION_ISSUE_COMPLETION || 'close' }}
|
|
136
|
+
orchestration-presentation-mode: ${{ vars.ORCHESTRATION_PRESENTATION_MODE || 'guided' }}
|
|
137
|
+
orchestration-diagrams: ${{ vars.ORCHESTRATION_DIAGRAMS || 'true' }}
|
|
138
|
+
orchestration-comment-mode: ${{ vars.ORCHESTRATION_COMMENT_MODE || 'update' }}
|
|
139
|
+
repository-locale: ${{ vars.REPOSITORY_LOCALE || 'en-US' }}
|
|
140
|
+
issues-locale: ${{ vars.ISSUES_LOCALE || '' }}
|
|
141
|
+
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || '' }}
|
|
142
|
+
token: ${{ secrets.PAT }}
|
|
143
|
+
|
|
144
|
+
publish:
|
|
145
|
+
name: Publish accepted production commit
|
|
146
|
+
if: ${{ inputs.mode == 'publish' }}
|
|
147
|
+
runs-on: ubuntu-latest
|
|
148
|
+
needs: validate
|
|
149
|
+
timeout-minutes: 30
|
|
150
|
+
permissions:
|
|
151
|
+
contents: write
|
|
152
|
+
issues: write
|
|
153
|
+
pull-requests: write
|
|
154
|
+
steps:
|
|
155
|
+
- uses: actions/checkout@v5
|
|
156
|
+
with:
|
|
157
|
+
persist-credentials: false
|
|
158
|
+
ref: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
159
|
+
- name: Create or verify production tag
|
|
160
|
+
uses: vypdev/copilot@v3
|
|
161
|
+
with:
|
|
162
|
+
single-action: create_tag
|
|
163
|
+
single-action-issue: ${{ inputs.issue }}
|
|
164
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
165
|
+
single-action-operation-id: ${{ inputs.operation-id }}
|
|
166
|
+
single-action-version: ${{ inputs.version }}
|
|
146
167
|
token: ${{ secrets.PAT }}
|
|
147
|
-
|
|
148
|
-
- name:
|
|
168
|
+
# Add project-specific deployment here. It runs only after production promotion merged.
|
|
169
|
+
- name: Create or verify GitHub Release
|
|
149
170
|
uses: vypdev/copilot@v3
|
|
150
|
-
if: ${{ success() }}
|
|
151
171
|
with:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
single-action: 'create_release'
|
|
158
|
-
single-action-issue: '${{ github.event.inputs.issue }}'
|
|
159
|
-
single-action-version: '${{ github.event.inputs.version }}'
|
|
160
|
-
single-action-title: '${{ github.event.inputs.title }}'
|
|
161
|
-
single-action-changelog: '${{ github.event.inputs.changelog }}'
|
|
162
|
-
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
163
|
-
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
164
|
-
agent-model: ${{ vars.AGENT_MODEL || 'gpt-5.6-luna' }}
|
|
165
|
-
agent-effort: ${{ vars.AGENT_EFFORT }}
|
|
166
|
-
agent-command: ${{ vars.AGENT_COMMAND }}
|
|
167
|
-
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
|
|
168
|
-
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
|
|
169
|
-
findings-model: ${{ vars.FINDINGS_MODEL }}
|
|
170
|
-
findings-effort: ${{ vars.FINDINGS_EFFORT }}
|
|
171
|
-
findings-command: ${{ vars.FINDINGS_COMMAND }}
|
|
172
|
-
fixer-provider: ${{ vars.FIXER_PROVIDER }}
|
|
173
|
-
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
|
|
174
|
-
fixer-model: ${{ vars.FIXER_MODEL }}
|
|
175
|
-
fixer-effort: ${{ vars.FIXER_EFFORT }}
|
|
176
|
-
fixer-command: ${{ vars.FIXER_COMMAND }}
|
|
172
|
+
single-action: create_release
|
|
173
|
+
single-action-issue: ${{ inputs.issue }}
|
|
174
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
175
|
+
single-action-operation-id: ${{ inputs.operation-id }}
|
|
176
|
+
single-action-version: ${{ inputs.version }}
|
|
177
177
|
token: ${{ secrets.PAT }}
|
|
178
|
-
|
|
179
|
-
# Example: generic step to perform the deployment (uncomment and adjust as needed)
|
|
180
|
-
# - name: Generic step
|
|
181
|
-
# uses: whatever/action@v2
|
|
182
|
-
|
|
183
|
-
- name: Copilot - Deploy success notification
|
|
178
|
+
- name: Start configured reconciliation
|
|
184
179
|
uses: vypdev/copilot@v3
|
|
185
|
-
if: ${{ success() }}
|
|
186
180
|
with:
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
single-action: 'deployed_action'
|
|
193
|
-
single-action-issue: '${{ github.event.inputs.issue }}'
|
|
194
|
-
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
195
|
-
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
196
|
-
agent-model: ${{ vars.AGENT_MODEL || 'gpt-5.6-luna' }}
|
|
197
|
-
agent-effort: ${{ vars.AGENT_EFFORT }}
|
|
198
|
-
agent-command: ${{ vars.AGENT_COMMAND }}
|
|
199
|
-
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
|
|
200
|
-
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
|
|
201
|
-
findings-model: ${{ vars.FINDINGS_MODEL }}
|
|
202
|
-
findings-effort: ${{ vars.FINDINGS_EFFORT }}
|
|
203
|
-
findings-command: ${{ vars.FINDINGS_COMMAND }}
|
|
204
|
-
fixer-provider: ${{ vars.FIXER_PROVIDER }}
|
|
205
|
-
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
|
|
206
|
-
fixer-model: ${{ vars.FIXER_MODEL }}
|
|
207
|
-
fixer-effort: ${{ vars.FIXER_EFFORT }}
|
|
208
|
-
fixer-command: ${{ vars.FIXER_COMMAND }}
|
|
181
|
+
single-action: published_deployment_action
|
|
182
|
+
single-action-issue: ${{ inputs.issue }}
|
|
183
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
184
|
+
single-action-operation-id: ${{ inputs.operation-id }}
|
|
185
|
+
single-action-version: ${{ inputs.version }}
|
|
209
186
|
token: ${{ secrets.PAT }}
|
|
210
187
|
|
|
211
188
|
report-failure:
|
|
212
|
-
name: Report
|
|
189
|
+
name: Report orchestration failure
|
|
213
190
|
runs-on: ubuntu-latest
|
|
214
191
|
timeout-minutes: 5
|
|
215
|
-
needs: [
|
|
216
|
-
if: ${{ failure() &&
|
|
192
|
+
needs: [validate, prepare-version-files, promote, publish]
|
|
193
|
+
if: ${{ failure() && needs.validate.result == 'success' }}
|
|
217
194
|
permissions:
|
|
218
195
|
issues: write
|
|
219
196
|
steps:
|
|
220
|
-
- name:
|
|
221
|
-
|
|
197
|
+
- name: Persist publication failure
|
|
198
|
+
if: ${{ inputs.mode == 'publish' }}
|
|
199
|
+
uses: vypdev/copilot@v3
|
|
200
|
+
with:
|
|
201
|
+
single-action: failed_deployment_action
|
|
202
|
+
single-action-issue: ${{ inputs.issue }}
|
|
203
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
204
|
+
single-action-operation-id: ${{ inputs.operation-id }}
|
|
205
|
+
single-action-version: ${{ inputs.version }}
|
|
206
|
+
single-action-message: Publication failed. Review ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} before retrying.
|
|
207
|
+
token: ${{ secrets.PAT }}
|
|
208
|
+
- name: Report preparation failure
|
|
209
|
+
if: ${{ inputs.mode == 'prepare' }}
|
|
222
210
|
uses: vypdev/copilot@v3
|
|
223
211
|
with:
|
|
224
212
|
single-action: publish_issue_comment
|
|
225
|
-
single-action-issue:
|
|
213
|
+
single-action-issue: ${{ inputs.issue }}
|
|
214
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
226
215
|
single-action-message: |
|
|
227
|
-
## ❌ Release
|
|
216
|
+
## ❌ Release orchestration needs attention
|
|
228
217
|
|
|
229
|
-
|
|
218
|
+
Phase `${{ inputs.mode }}` failed. Review the control center before retrying.
|
|
230
219
|
|
|
231
220
|
[Review the workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
|
|
232
|
-
token: ${{
|
|
221
|
+
token: ${{ secrets.PAT }}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bugbot types: data structures used across detection, publishing, and autofix.
|
|
3
|
-
* GitHub supplies the canonical PR diff and the configured agent can inspect
|
|
4
|
-
* the read-only workspace for context before returning findings.
|
|
5
|
-
*/
|
|
6
|
-
/** Single finding from the configured findings agent. */
|
|
7
|
-
export interface BugbotFinding {
|
|
8
|
-
id: string;
|
|
9
|
-
title: string;
|
|
10
|
-
description: string;
|
|
11
|
-
/** Computed locally; never accepted from the agent as an authority. */
|
|
12
|
-
fingerprint?: string;
|
|
13
|
-
/** Location-independent reconciliation identity computed locally. */
|
|
14
|
-
semanticFingerprint?: string;
|
|
15
|
-
file?: string;
|
|
16
|
-
line?: number;
|
|
17
|
-
endLine?: number;
|
|
18
|
-
severity?: string;
|
|
19
|
-
confidence?: number;
|
|
20
|
-
category?: string;
|
|
21
|
-
evidence?: string;
|
|
22
|
-
suggestion?: string;
|
|
23
|
-
/** Optional enclosing symbol used only to improve local identity. */
|
|
24
|
-
symbol?: string;
|
|
25
|
-
/** Short code anchor used only to improve local identity. */
|
|
26
|
-
codeSnippet?: string;
|
|
27
|
-
/** Exact replacement text for a GitHub suggested change, when safe and local. */
|
|
28
|
-
suggestedCode?: string;
|
|
29
|
-
}
|
|
30
|
-
export interface ExistingIssueFindingInfo {
|
|
31
|
-
commentId: number;
|
|
32
|
-
resolved: boolean;
|
|
33
|
-
fingerprint?: string;
|
|
34
|
-
semanticFingerprint?: string;
|
|
35
|
-
resolution?: BugbotFindingResolution;
|
|
36
|
-
}
|
|
37
|
-
export interface ExistingPullRequestFindingInfo {
|
|
38
|
-
commentIdentity: string;
|
|
39
|
-
pullRequestNumber: number;
|
|
40
|
-
resolved: boolean;
|
|
41
|
-
/** Fresh GitHub thread state when the provider supplied it. */
|
|
42
|
-
threadResolved?: boolean;
|
|
43
|
-
fingerprint?: string;
|
|
44
|
-
semanticFingerprint?: string;
|
|
45
|
-
resolution?: BugbotFindingResolution;
|
|
46
|
-
}
|
|
47
|
-
export type BugbotFindingResolution = 'fixed' | 'obsolete' | 'dismissed';
|
|
48
|
-
/** Tracks each published destination independently so partial failures remain retryable. */
|
|
49
|
-
export interface ExistingFindingInfo {
|
|
50
|
-
issue?: ExistingIssueFindingInfo;
|
|
51
|
-
pullRequest?: ExistingPullRequestFindingInfo;
|
|
52
|
-
}
|
|
53
|
-
export type ExistingByFindingId = Record<string, ExistingFindingInfo>;
|
|
54
|
-
export declare function isExistingFindingFullyResolved(finding: ExistingFindingInfo): boolean;
|
|
55
|
-
/** PR metadata used only when publishing findings to GitHub. */
|
|
56
|
-
export interface BugbotPrContext {
|
|
57
|
-
prHeadSha: string;
|
|
58
|
-
prFiles: Array<{
|
|
59
|
-
filename: string;
|
|
60
|
-
status: string;
|
|
61
|
-
}>;
|
|
62
|
-
pathToFirstDiffLine: Record<string, number>;
|
|
63
|
-
pathToDiffLocations?: Record<string, Array<{
|
|
64
|
-
line: number;
|
|
65
|
-
side: 'LEFT' | 'RIGHT';
|
|
66
|
-
}>>;
|
|
67
|
-
changes?: Array<{
|
|
68
|
-
filename: string;
|
|
69
|
-
status: string;
|
|
70
|
-
additions: number;
|
|
71
|
-
deletions: number;
|
|
72
|
-
patch: string;
|
|
73
|
-
}>;
|
|
74
|
-
}
|
|
75
|
-
/** Unresolved finding with a prompt-bounded comment body. */
|
|
76
|
-
export interface UnresolvedFindingWithBody {
|
|
77
|
-
id: string;
|
|
78
|
-
fullBody: string;
|
|
79
|
-
}
|
|
80
|
-
/** Finding projection used by prompts that ask the agent to select findings. */
|
|
81
|
-
export interface UnresolvedFindingSummary {
|
|
82
|
-
id: string;
|
|
83
|
-
title: string;
|
|
84
|
-
description?: string;
|
|
85
|
-
file?: string;
|
|
86
|
-
line?: number;
|
|
87
|
-
}
|
|
88
|
-
export declare function findExistingFindingInfo(existingByFindingId: ExistingByFindingId, finding: Pick<BugbotFinding, 'id' | 'fingerprint' | 'semanticFingerprint'>): ExistingFindingInfo | undefined;
|
|
89
|
-
/** Full context for detection, mutation, publishing, and autofix intent. */
|
|
90
|
-
export interface BugbotContext {
|
|
91
|
-
existingByFindingId: ExistingByFindingId;
|
|
92
|
-
/** Full issue-comment bodies reserved for read-modify-write operations. */
|
|
93
|
-
issueComments: Array<{
|
|
94
|
-
id: number;
|
|
95
|
-
body: string | null;
|
|
96
|
-
}>;
|
|
97
|
-
openPrNumbers: number[];
|
|
98
|
-
/** Bounded text sent to the configured findings agent. */
|
|
99
|
-
previousFindingsBlock: string;
|
|
100
|
-
/** Canonical, bounded PR diff supplied by the GitHub API. */
|
|
101
|
-
reviewDiffBlock?: string;
|
|
102
|
-
/** Bounded human review discussion that may affect finding validity. */
|
|
103
|
-
reviewConversationBlock?: string;
|
|
104
|
-
prContext: BugbotPrContext | null;
|
|
105
|
-
/** Bounded bodies used by intent prompts and autofix. */
|
|
106
|
-
unresolvedFindingsWithBody: UnresolvedFindingWithBody[];
|
|
107
|
-
/** Ordered, bounded rule content supplied to the reviewer. */
|
|
108
|
-
reviewRulesBlock?: string;
|
|
109
|
-
/** Auditable rule identities in effective precedence order. */
|
|
110
|
-
reviewRuleSources?: string[];
|
|
111
|
-
omittedReviewRules?: number;
|
|
112
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { AgentConfiguration, AgentTask, AgentTaskConfiguration } from './agent';
|
|
2
|
-
import { type PullRequestDescriptionMode } from '../../domain/pull_request_description';
|
|
3
|
-
import { type BugbotReviewConfiguration } from '../../domain/bugbot/review_configuration';
|
|
4
|
-
export declare class Ai {
|
|
5
|
-
private aiPullRequestDescription;
|
|
6
|
-
private aiMembersOnly;
|
|
7
|
-
private aiIgnoreFiles;
|
|
8
|
-
private aiIncludeReasoning;
|
|
9
|
-
private bugbotMinSeverity;
|
|
10
|
-
private bugbotCommentLimit;
|
|
11
|
-
private bugbotFixVerifyCommands;
|
|
12
|
-
private agentTasks;
|
|
13
|
-
private pullRequestDescriptionMode;
|
|
14
|
-
private bugbotReviewConfiguration;
|
|
15
|
-
constructor(_configurationSource: string, model: string, aiPullRequestDescription: boolean, aiMembersOnly: boolean, aiIgnoreFiles: string[], aiIncludeReasoning: boolean, bugbotMinSeverity: string, bugbotCommentLimit: number, bugbotFixVerifyCommands?: string[], agentTasks?: AgentTaskConfiguration, pullRequestDescriptionMode?: PullRequestDescriptionMode, bugbotReviewConfiguration?: Partial<BugbotReviewConfiguration>);
|
|
16
|
-
getAiPullRequestDescription(): boolean;
|
|
17
|
-
getPullRequestDescriptionMode(): PullRequestDescriptionMode;
|
|
18
|
-
getAiMembersOnly(): boolean;
|
|
19
|
-
getAiIgnoreFiles(): string[];
|
|
20
|
-
getAiIncludeReasoning(): boolean;
|
|
21
|
-
getBugbotMinSeverity(): string;
|
|
22
|
-
getBugbotCommentLimit(): number;
|
|
23
|
-
getBugbotFixVerifyCommands(): string[];
|
|
24
|
-
getBugbotReviewConfiguration(): BugbotReviewConfiguration;
|
|
25
|
-
/** Applies command-scoped review options and restores the shared configuration afterwards. */
|
|
26
|
-
withBugbotReviewConfiguration<T>(overrides: Partial<BugbotReviewConfiguration>, operation: () => Promise<T>): Promise<T>;
|
|
27
|
-
getAgentConfiguration(task: AgentTask): AgentConfiguration;
|
|
28
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class Branches {
|
|
2
|
-
main: string;
|
|
3
|
-
defaultBranch: string;
|
|
4
|
-
development: string;
|
|
5
|
-
featureTree: string;
|
|
6
|
-
bugfixTree: string;
|
|
7
|
-
hotfixTree: string;
|
|
8
|
-
releaseTree: string;
|
|
9
|
-
docsTree: string;
|
|
10
|
-
choreTree: string;
|
|
11
|
-
constructor(main: string, defaultBranch: string, development: string, featureTree: string, bugfixTree: string, hotfixTree: string, releaseTree: string, docsTree: string, choreTree: string);
|
|
12
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { EventCommitPayload, ExecutionInputs } from './execution_inputs';
|
|
2
|
-
export declare class Commit {
|
|
3
|
-
private inputs;
|
|
4
|
-
constructor(inputs?: ExecutionInputs | undefined);
|
|
5
|
-
get branchReference(): string;
|
|
6
|
-
get branch(): string;
|
|
7
|
-
get commits(): EventCommitPayload[];
|
|
8
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { BranchConfiguration } from "./branch_configuration";
|
|
2
|
-
import { RecommendationState } from "./recommendation_state";
|
|
3
|
-
import { Result } from "./result";
|
|
4
|
-
/** Version of the durable configuration contract stored in issue/PR content. */
|
|
5
|
-
export declare const CONFIG_SCHEMA_VERSION = 2;
|
|
6
|
-
export interface ConfigurationMigrationResult {
|
|
7
|
-
readonly payload: Record<string, unknown>;
|
|
8
|
-
readonly sourceVersion: number;
|
|
9
|
-
readonly migrated: boolean;
|
|
10
|
-
readonly futureVersion: boolean;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Normalizes persisted configuration without silently losing fields from a
|
|
14
|
-
* newer installation. Unknown keys are deliberately retained so a downgrade
|
|
15
|
-
* or a mixed-version workflow can round-trip data safely.
|
|
16
|
-
*/
|
|
17
|
-
export declare function migrateConfigurationPayload(value: unknown): ConfigurationMigrationResult;
|
|
18
|
-
export declare class Config {
|
|
19
|
-
readonly schemaVersion: number;
|
|
20
|
-
branchType: string;
|
|
21
|
-
releaseBranch: string | undefined;
|
|
22
|
-
workingBranch: string | undefined;
|
|
23
|
-
parentBranch: string | undefined;
|
|
24
|
-
hotfixOriginBranch: string | undefined;
|
|
25
|
-
hotfixBranch: string | undefined;
|
|
26
|
-
results: Result[];
|
|
27
|
-
branchConfiguration: BranchConfiguration | undefined;
|
|
28
|
-
recommendationState: RecommendationState | undefined;
|
|
29
|
-
constructor(data: unknown);
|
|
30
|
-
}
|