Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
e752467
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 15, 2026
3959fd1
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 15, 2026
b910620
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 15, 2026
b199bde
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 15, 2026
d64a874
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 15, 2026
b637168
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 15, 2026
f4da070
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
8c840d8
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
4dd336a
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
53f8788
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
1ee529d
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
35d048a
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
08014fd
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
2a02b9a
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
4ce66f2
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 2026
06fb607
bugfix-314-error-merging-release-branch-after-successful-deployment: …
efraespada Feb 17, 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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Full documentation: **[docs.page/vypdev/copilot](https://docs.page/vypdev/copilo
| [OpenCode (AI)](https://docs.page/vypdev/copilot/opencode-integration) | Progress, Bugbot, think, AI PR description |
| [Testing OpenCode locally](https://docs.page/vypdev/copilot/testing-opencode-plan-locally) | Run check-progress, detect-potential-problems, recommend-steps via CLI |
| [Single actions](https://docs.page/vypdev/copilot/single-actions) | On-demand: check progress, think, create release/tag, deployed |
| [Deploy label and merge flow](docs/single-actions/deploy-label-and-merge.mdx) | Deploy/deployed labels, post-deploy merges, waiting for checks per PR |
| [Issues](https://docs.page/vypdev/copilot/issues) | Issue configuration and types (feature, bugfix, hotfix, release, docs, chore) |
| [Pull requests](https://docs.page/vypdev/copilot/pull-requests) | PR configuration and AI description |
| [Troubleshooting](https://docs.page/vypdev/copilot/troubleshooting) | Common issues and solutions |
Expand Down
426 changes: 338 additions & 88 deletions build/cli/index.js

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions build/cli/src/data/repository/issue_repository.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,12 @@ export declare class IssueRepository {
isIssue: (owner: string, repository: string, issueNumber: number, token: string) => Promise<boolean>;
isPullRequest: (owner: string, repository: string, issueNumber: number, token: string) => Promise<boolean>;
getHeadBranch: (owner: string, repository: string, issueNumber: number, token: string) => Promise<string | undefined>;
addComment: (owner: string, repository: string, issueNumber: number, comment: string, token: string) => Promise<void>;
updateComment: (owner: string, repository: string, issueNumber: number, commentId: number, comment: string, token: string) => Promise<void>;
addComment: (owner: string, repository: string, issueNumber: number, comment: string, token: string, options?: {
commitSha?: string;
}) => Promise<void>;
updateComment: (owner: string, repository: string, issueNumber: number, commentId: number, comment: string, token: string, options?: {
commitSha?: string;
}) => Promise<void>;
/**
* Lists all comments on an issue (for bugbot: find existing findings by marker).
* Uses pagination to fetch every comment (default API returns only 30 per page).
Expand Down
10 changes: 8 additions & 2 deletions build/cli/src/data/repository/merge_repository.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import { Result } from '../model/result';
/**
* Repository for merging branches (via PR or direct merge).
* Isolated to allow unit tests with mocked Octokit.
* Repository for merging branches: creates a PR, waits for that PR's check runs (or status checks),
* then merges the PR; on failure, falls back to a direct Git merge.
*
* Check runs are filtered by PR (pull_requests) so we only wait for the current PR's checks,
* not those of another PR sharing the same head (e.g. release→main vs release→develop).
* If the PR has no check runs after a short wait, we proceed to merge (branch may have no required checks).
*
* @see docs/single-actions/deploy-label-and-merge.mdx for the deploy flow and check-wait behaviour.
*/
export declare class MergeRepository {
mergeBranch: (owner: string, repository: string, head: string, base: string, timeout: number, token: string) => Promise<Result[]>;
Expand Down
10 changes: 10 additions & 0 deletions build/cli/src/usecase/actions/deployed_action_use_case.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
import { Execution } from "../../data/model/execution";
import { Result } from "../../data/model/result";
import { ParamUseCase } from "../base/param_usecase";
/**
* Single action run after a successful deployment (triggered with the "deployed" action and an issue number).
*
* Requires the issue to have the "deploy" label and not already have the "deployed" label. Then:
* 1. Replaces the "deploy" label with "deployed".
* 2. If a release or hotfix branch is configured: merges it into default and develop (each via PR, waiting for that PR's checks).
* 3. Closes the issue only when all merges succeed.
*
* @see docs/single-actions/deploy-label-and-merge.mdx for the full flow and how merge/check waiting works.
*/
export declare class DeployedActionUseCase implements ParamUseCase<Execution, Result[]> {
taskId: string;
private issueRepository;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ export interface PublishFindingsParam {
execution: Execution;
context: BugbotContext;
findings: BugbotFinding[];
/** Commit SHA for bugbot watermark (commit link). When set, comment uses "for commit ..." watermark. */
commitSha?: string;
/** When findings were limited by max comments, add one summary comment with this overflow info. */
overflowCount?: number;
overflowTitles?: string[];
Expand Down
11 changes: 11 additions & 0 deletions build/cli/src/utils/comment_watermark.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/**
* Watermark appended to comments (issues and PRs) to attribute Copilot.
* Bugbot comments include commit link and note about auto-update on new commits.
*/
export declare const COPILOT_MARKETPLACE_URL = "https://github.com/marketplace/actions/copilot-github-with-super-powers";
export interface BugbotWatermarkOptions {
commitSha: string;
owner: string;
repo: string;
}
export declare function getCommentWatermark(options?: BugbotWatermarkOptions): string;
5 changes: 4 additions & 1 deletion build/cli/src/utils/logger.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ export interface LogEntry {
timestamp: number;
metadata?: Record<string, unknown>;
}
export declare function getAccumulatedLogEntries(): LogEntry[];
export declare function getAccumulatedLogsAsText(): string;
export declare function clearAccumulatedLogs(): void;
export declare function setGlobalLoggerDebug(debug: boolean, isRemote?: boolean): void;
export declare function setStructuredLogging(enabled: boolean): void;
export declare function logInfo(message: string, previousWasSingleLine?: boolean, metadata?: Record<string, unknown>): void;
export declare function logInfo(message: string, previousWasSingleLine?: boolean, metadata?: Record<string, unknown>, skipAccumulation?: boolean): void;
export declare function logWarn(message: string, metadata?: Record<string, unknown>): void;
export declare function logWarning(message: string): void;
export declare function logError(message: unknown, metadata?: Record<string, unknown>): void;
Expand Down
Loading