fix(core): #2051 Windows AO dashboard/session error#2128
Open
showkawa wants to merge 6 commits into
Open
Conversation
When events-db is bundled into the Next.js server, the bundler's createRequire shim rejects file:// URL strings with ERR_INVALID_ARG_VALUE, crashing the dashboard on startup. Convert import.meta.url with fileURLToPath before calling createRequire. Closes AgentWrapper#2051 Co-Authored-By: Liang Huang <huangliangkawa@gmail.com>
…ed-2051 When events-db is bundled into the Next.js server, the bundler's createRequire shim rejects file:// URL strings with ERR_INVALID_ARG_VALUE, crashing the dashboard on startup. Convert import.meta.url with fileURLToPath before calling createRequire. Closes AgentWrapper#2051 Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Liang Huang <huangliangkawa@gmail.com>
Co-Authored-By: Liang Huang <huangliangkawa@gmail.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Liang Huang <huangliangkawa@gmail.com>
Add two new plugins that extend Agent Orchestrator to work with Atlassian's
ecosystem — Bitbucket Cloud for source control and Jira Cloud for issue tracking.
**scm-bitbucket** — Full Bitbucket Cloud SCM implementation (783 lines, 19 tests):
- PR lifecycle: detect by branch, create, merge (squash/merge/ff), close/decline
- CI status: pipeline status aggregation with graceful fallback for scoped API
token limitations (commit status endpoint returns 403)
- Reviews: approval tracking, review decision aggregation, bot filtering
- Comments: unresolved inline comment extraction, automated comment detection
with severity inference
- Webhooks: HMAC-SHA256 signature verification, event parsing for all PR/push events
- Auth: Bitbucket API tokens (new) with legacy App Password fallback
(deprecated Sep 2025, removed June 2026)
**tracker-jira** — Full Jira Cloud tracker implementation (377 lines, 45 tests):
- Issues: CRUD, JQL-based search via new /search/jql POST endpoint
(old /search GET deprecated by Atlassian)
- ADF conversion: Atlassian Document Format ↔ plaintext (178 lines, 30 tests)
- Workflow: state transitions, label management, comment posting
- Config: domain resolution, configurable project key and issue type
- Security: JQL injection prevention via escapeJql() on all filter values
**Integration across core, CLI, and web dashboard:**
- Core: plugin registry entries, config inference for bitbucket→jira pairing,
PR URL parsing for Bitbucket and GitLab URLs (fixes empty owner/repo that
caused "rate limited" banner on dashboard)
- CLI: dynamic import with graceful fallback when credentials not configured
- Web: static imports, transpilePackages, try/catch on registration to prevent
dashboard crash when Bitbucket/Jira credentials are not set
Both plugins are hardened against API edge cases:
- HTTP clients: retry with exponential backoff, 429 handling with clamped
Retry-After (1-60s, NaN-safe), 30s request timeouts
- Null-safety: all API response fields use optional chaining (deleted forks,
removed users, missing participants, null content)
- Auth errors: detectPR re-throws 401/403 instead of silently returning null
- Input escaping: branch names in Bitbucket queries, filter values in JQL
- Bitbucket /commit/{sha}/statuses/build returns 403 with scoped API tokens
(Bitbucket-side gap) — getCIChecks returns [] and getCISummary reports "none"
- Jira assignee updates require accountId (not display name) — logged as warning
- Bitbucket PRs have no "assignee" concept — assignPRToCurrentUser is a no-op
- Merge conflict detection: Bitbucket API doesn't expose conflicts, assumes
no conflicts (merge endpoint fails safely if conflicts exist)
```yaml
projects:
my-app:
repo: workspace/repo # Bitbucket workspace/repo-slug
scm:
plugin: bitbucket
tracker:
plugin: jira
domain: yourcompany # or yourcompany.atlassian.net
projectKey: PROJ # optional, for JQL filtering
```
Environment variables:
- BITBUCKET_USERNAME (Atlassian email), BITBUCKET_API_TOKEN
- JIRA_EMAIL, JIRA_API_TOKEN, JIRA_DOMAIN
- Bitbucket Cloud REST API v2.0 (live instance — PR state, reviews, CI, merge
readiness, webhook verification all verified)
- Jira Cloud REST API v3 (live instance — project listing, issue search via
/search/jql, issue creation, ADF rendering all verified)
- Full E2E: Jira issue → ao spawn → agent codes → git push → Bitbucket PR
created → dashboard shows session in "Ready" column with PR link
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…lugins feat(plugins): add Bitbucket Cloud SCM and Jira Cloud tracker plugins
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fix(core): use filesystem path for createRequire in events-db
When events-db is bundled into the Next.js server, the bundler's
createRequire shim rejects file:// URL strings with
ERR_INVALID_ARG_VALUE, crashing the dashboard on startup. Convert
import.meta.url with fileURLToPath before calling createRequire.
Closes #2051
Co-Authored-By: Liang Huang huangliangkawa@gmail.com