Skip to content

feat: add BitBucket integration for pull request management#609

Open
NoahCardoza wants to merge 6 commits intoiloom-ai:mainfrom
NoahCardoza:feature/bitbucket-integration
Open

feat: add BitBucket integration for pull request management#609
NoahCardoza wants to merge 6 commits intoiloom-ai:mainfrom
NoahCardoza:feature/bitbucket-integration

Conversation

@NoahCardoza
Copy link
Contributor

Summary

  • Add BitBucket VCS provider with PR creation, listing, reviewer resolution, and repository auto-detection from git remotes
  • Add Jira issue tracker provider with sprint/board support, issue transitions, and JQL-based queries
  • Address code review feedback: fix error swallowing, BBQL injection, sensitive field redaction, dead code removal, and test coverage gaps

Test plan

  • pnpm build compiles successfully
  • pnpm test — all 3937 tests pass
  • New tests for checkForExistingPR error propagation (401/403 re-thrown, network errors return null)
  • New tests for redactSensitiveFields (null/undefined, primitives, sensitive keys, nested objects, arrays)
  • New tests for BitBucket URL patterns in parseGitRemotes (HTTPS/SSH, with/without .git)

🤖 Generated with Claude Code

NoahCardoza and others added 6 commits February 17, 2026 09:42
Adds BitBucket Cloud support including:
- BitBucketApiClient for REST API v2.0 communication
- BitBucketVCSProvider implementing VersionControlProvider interface
- VCSProviderFactory for provider instantiation
- ProviderCoordinator for cross-provider workflows
- bitbucket-pr merge mode in finish command
- Reviewer auto-assignment with username-to-UUID resolution
- Auto-detection of workspace/repo from git remote
- Debug subcommand for integration testing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

# Conflicts:
#	README.md
#	src/lib/SessionSummaryService.ts
#	src/lib/SettingsManager.ts
…s bitbucket

Implements the TODO(bitbucket) in the issues command to detect the
configured VCS provider and use BitBucketApiClient.listPullRequests()
instead of fetchGitHubPRList() when provider is 'bitbucket'.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prevent real subprocess spawning (execa for dark mode detection) and
file system reads (dotenv-flow) that caused timeouts in non-interactive
shells. Uses plain functions instead of vi.fn() to survive vitest
mockReset between tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…VCSProvider

Move settings extraction and validation logic from factories and issues.ts
into the provider classes themselves, reducing duplication and simplifying
call sites. Also adds listPullRequests() to BitBucketVCSProvider to
encapsulate workspace detection + PR listing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add redactSensitiveFields() to mask apiToken, token, secret, and password
values in settings debug logs, preventing credential exposure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix error swallowing in checkForExistingPR (re-throw 401/403 auth errors),
escape branch names in BBQL queries to prevent injection, remove verbose
allMembers debug dump, add 'credential' to redaction keys, use dynamic
import for BitBucketVCSProvider in issues command, remove dead
ProviderCoordinator.ts, fix prTitlePrefix default to false, remove
redundant vi.clearAllMocks(), and add test coverage for
redactSensitiveFields, checkForExistingPR error handling, and BitBucket
URL patterns in remote parsing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant