### Start Testing Environment with code-server Source: https://github.com/atlassian/atlascode/blob/main/e2e/README.md Use this command to start the testing environment, including code-server, for local testing purposes. Access the UI at http://127.0.0.1:9988. ```sh npm test:e2e:docker:serve ``` -------------------------------- ### Rovo Dev Configuration File Example Source: https://context7.com/atlassian/atlascode/llms.txt Example of a Rovo Dev configuration file (`~/.rovodev/config.yml`) for setting logging paths and overriding model behavior. ```yaml # ~/.rovodev/config.yml — main Rovo Dev settings logging: path: ~/.rovodev/rovodev.log # custom log path (optional) # Model and behavior overrides can also be placed here ``` -------------------------------- ### List Bitbucket Repository Branches Source: https://context7.com/atlassian/atlascode/llms.txt Returns an array of branch name strings for a specified repository. Also provides a helper to get the development branch. ```typescript const branches = await bbApi.repositories.getBranches(site); console.log(branches); // ["main", "develop", "feature/auth-refactor", "fix/login-bug"] // Get the development branch for PR targeting const devBranch = await bbApi.repositories.getDevelopmentBranch(site); console.log(devBranch); // "develop" ``` -------------------------------- ### LoginManager.userInitiatedOAuthLogin Source: https://context7.com/atlassian/atlascode/llms.txt Starts the OAuth 2.0 dance for a given site and saves the resulting credentials. Called when the user clicks a login button in the settings UI or runs `Atlassian: Open Settings`. ```APIDOC ## LoginManager.userInitiatedOAuthLogin ### Description Starts the OAuth 2.0 dance for a given site and saves the resulting credentials. Called when the user clicks a login button in the settings UI or runs `Atlassian: Open Settings`. ### Method ```typescript await loginManager.userInitiatedOAuthLogin(site, 'vscode://atlassian.atlascode/authCallback', true, 'onboarding'); ``` ### Parameters - **site** (SiteInfo) - Required - Information about the site to authenticate with. - **callback** (string) - Required - The redirect URI registered for the OAuth app. - **isOnboarding** (boolean) - Required - If true, skips the "already authenticated" guard. - **flowType** (string) - Required - The type of onboarding flow. ### Result OAuth tokens are stored in the VS Code SecretStorage via CredentialManager. The site is registered in SiteManager, triggering SitesAvailable update events. ``` -------------------------------- ### Get and Set AI Agent Model Source: https://context7.com/atlassian/atlascode/llms.txt Retrieve the current AI model configuration and switch to a different available model. Ensure you have the correct model IDs before attempting to switch. ```typescript // Get current model const modelInfo = await client.getAgentModel(); console.log(modelInfo.model_name); // "Claude Sonnet 4" console.log(modelInfo.model_id); // "claude-sonnet-4" console.log(modelInfo.credit_multiplier); // "1x" // List all available models const available = await client.getAvailableAgentModels(); available.models.forEach(m => { console.log(`${m.name} (${m.model_id}) — ${m.credit_multiplier} credits`); }); // Claude Sonnet 4 (claude-sonnet-4) — 1x credits // Claude Opus 4 (claude-opus-4) — 5x credits // Switch to a different model await client.setAgentModel('claude-opus-4'); ``` -------------------------------- ### Jira Commands for VS Code Source: https://context7.com/atlassian/atlascode/llms.txt Execute various Jira-related commands within VS Code, such as opening issues, creating issues, starting work, and transitioning issues. ```typescript import * as vscode from 'vscode'; import { Commands } from './src/constants'; // Open a Jira issue by key (shows a webview panel with full issue details) await vscode.commands.executeCommand(Commands.ShowIssueForKey, 'PROJ-123'); // Open a Jira issue from a URL await vscode.commands.executeCommand( Commands.ShowIssueForURL, 'https://mycompany.atlassian.net/browse/PROJ-456' ); // Open the create issue webview await vscode.commands.executeCommand(Commands.CreateIssue); // Start work on a Jira issue: transitions it, creates a git branch, optionally opens Rovo Dev await vscode.commands.executeCommand(Commands.StartWorkOnIssue, { key: 'PROJ-789', siteDetails: site, }); // Transition an issue via Quick Pick await vscode.commands.executeCommand(Commands.TransitionIssue, issueNode); // Assign the issue to the current authenticated user await vscode.commands.executeCommand(Commands.AssignIssueToMe, issueNode); // Refresh the Assigned Work Items tree view await vscode.commands.executeCommand(Commands.RefreshAssignedWorkItemsExplorer); // Open or refresh JQL-based filters await vscode.commands.executeCommand(Commands.JiraFilter); await vscode.commands.executeCommand(Commands.RefreshCustomJqlExplorer); ``` -------------------------------- ### Build Docker Image for E2E Tests Source: https://github.com/atlassian/atlascode/blob/main/e2e/README.md Execute this command to build the Docker image used for running end-to-end tests. ```sh npm run test:e2e:docker:build ``` -------------------------------- ### Generate SSL Certificates for Wiremock Source: https://github.com/atlassian/atlascode/blob/main/e2e/README.md Run this command to prepare mock certificates required by Wiremock for end-to-end testing. ```sh npm run test:e2e:sslcerts ``` -------------------------------- ### Obtain Jira and Bitbucket API Clients Source: https://context7.com/atlassian/atlascode/llms.txt Retrieves authenticated HTTP clients for Jira or Bitbucket. Clients are cached and have a Time-To-Live (TTL) of 45 minutes for OAuth or are persistent for server instances. Demonstrates fetching an issue and accessing Bitbucket API methods. ```typescript import { Container } from './src/container'; import { ProductJira } from './src/atlclients/authInfo'; // Get all authenticated Jira sites and obtain a client for the first one const sites = Container.siteManager.getSitesAvailable(ProductJira); if (sites.length === 0) { throw new Error('No Jira sites authenticated'); } const jiraClient = await Container.clientManager.jiraClient(sites[0]); // jiraClient is a JiraClient / JiraCloudClient from @atlassian-pi/jira-pi-client // Fetch an issue directly via the low-level client const rawIssue = await jiraClient.getIssue('PROJ-123', ['summary', 'status', 'assignee']); console.log(rawIssue.fields.summary); // e.g. "Fix login redirect" // Obtain a Bitbucket Cloud client const bbSites = Container.siteManager.getSitesAvailable(ProductBitbucket); const bbApi = await Container.clientManager.bbClient(bbSites[0]); // bbApi is a BitbucketApi { pullrequests: PullRequestApi, repositories: RepositoriesApi, ... } ``` -------------------------------- ### Manage JQL Filter Entries with JQLManager Source: https://context7.com/atlassian/atlascode/llms.txt Access user's configured JQL filters. Use `enabledJQLEntries()` to get active filters and `notifiableJQLEntries()` for filters with issue-monitoring enabled. ```typescript import { Container } from './src/container'; const jqlManager = Container.jqlManager; // All JQL entries that are enabled const enabled = jqlManager.enabledJQLEntries(); console.log(enabled.map(e => `${e.name}: ${e.query}`)); // ["My issues: assignee = currentUser() AND StatusCategory != Done ORDER BY updated DESC"] // Only entries with issue-monitoring enabled (triggers desktop notifications) const monitored = jqlManager.notifiableJQLEntries(); // Auto-generated default entries — one per authenticated Jira site const defaults = jqlManager.getAllDefaultJQLEntries(); // Each default entry is: { name: "My issues", query: "assignee = currentUser() AND StatusCategory != Done ..." } ``` -------------------------------- ### Package the Extension for Testing Source: https://github.com/atlassian/atlascode/blob/main/e2e/README.md Re-build the extension by running this command to ensure the latest changes are included in the .vsix artifact used for E2E tests. ```sh npm run extension:package ``` -------------------------------- ### Run Tests for Atlassian VS Code Extension Source: https://github.com/atlassian/atlascode/blob/main/README.md Execute the test suite for the Atlassian VS Code extension using npm. ```bash npm run test ``` -------------------------------- ### Run Headless E2E Tests in Docker Source: https://github.com/atlassian/atlascode/blob/main/e2e/README.md This command initiates the end-to-end tests in a headless mode within a Docker container. ```sh npm run test:e2e:docker ``` -------------------------------- ### LoginManager.userInitiatedServerLogin Source: https://context7.com/atlassian/atlascode/llms.txt Authenticates against a self-hosted Jira or Bitbucket Data Center / Server instance using username + password (Basic) or a Personal Access Token. ```APIDOC ## LoginManager.userInitiatedServerLogin ### Description Authenticates against a self-hosted Jira or Bitbucket Data Center / Server instance using username + password (Basic) or a Personal Access Token. ### Method ```typescript await loginManager.userInitiatedServerLogin(serverSite, basicCreds); await loginManager.userInitiatedServerLogin({ host: 'bitbucket.mycompany.internal', product: ProductBitbucket }, patCreds); ``` ### Parameters - **siteInfo** (SiteInfo) - Required - Information about the server site. - **credentials** (BasicAuthInfo | PATAuthInfo) - Required - The authentication credentials (Basic Auth or PAT). ### Result Credentials saved, site added to SiteManager. ``` -------------------------------- ### Authenticate Jira/Bitbucket DC/Server with Basic Auth or PAT Source: https://context7.com/atlassian/atlascode/llms.txt Authenticates with self-hosted Jira or Bitbucket Data Center/Server instances. Supports Basic authentication (username/password or API token) and Personal Access Tokens (PAT) for Bitbucket. ```typescript import { BasicAuthInfo, PATAuthInfo, ProductBitbucket, SiteInfo } from './src/atlclients/authInfo'; // Basic auth (username + API token for Cloud, or password for Server) const serverSite: SiteInfo = { host: 'jira.mycompany.internal', product: ProductJira, }; const basicCreds: BasicAuthInfo = { username: 'alice@example.com', password: 'my-api-token-or-password', user: { id: '', displayName: '', email: '', avatarUrl: '' }, state: AuthInfoState.Valid, }; await loginManager.userInitiatedServerLogin(serverSite, basicCreds); // PAT auth for Bitbucket DC const patCreds: PATAuthInfo = { token: 'BBDC-', user: { id: '', displayName: '', email: '', avatarUrl: '' }, state: AuthInfoState.Valid, }; await loginManager.userInitiatedServerLogin( { host: 'bitbucket.mycompany.internal', product: ProductBitbucket }, patCreds, ); // Result: credentials saved, site added to SiteManager. ``` -------------------------------- ### Bitbucket Commands for VS Code Source: https://context7.com/atlassian/atlascode/llms.txt Execute Bitbucket commands within VS Code, including creating pull requests, refreshing views, and running pipelines. ```typescript // Create a new pull request (opens the create PR webview) await vscode.commands.executeCommand(Commands.CreatePullRequest); // Refresh the pull requests tree view await vscode.commands.executeCommand(Commands.BitbucketRefreshPullRequests); // Run a Bitbucket Pipeline for the current branch (opens branch picker) await vscode.commands.executeCommand(Commands.RunPipelineForBranch); // Re-run the last pipeline for a specific build await vscode.commands.executeCommand(Commands.RerunPipeline, pipelineNode); // Refresh the pipelines tree view await vscode.commands.executeCommand(Commands.RefreshPipelines); // Toggle nested file view in pull request diff tree await vscode.commands.executeCommand(Commands.BitbucketToggleFileNesting); ``` -------------------------------- ### provideCodeLenses for Jira issue creation Source: https://context7.com/atlassian/atlascode/llms.txt Scans a text document for configured TODO-style triggers and returns CodeLens items that open the Jira create-issue dialog. ```APIDOC ## provideCodeLenses for Jira issue creation Scans a text document for configured TODO-style triggers (`TODO`, `BUG`, `FIXME`, etc.) and returns CodeLens items that, when clicked, open the Jira create-issue dialog pre-filled with the TODO text. ### Command `atlascode.jira.createIssue` ### Parameters for `executeCommand` - `fromCodeLens` (boolean) - Indicates if the command was triggered from a CodeLens. - `summary` (string) - The summary text for the Jira issue, extracted from the TODO comment. - `uri` (vscode.Uri) - The URI of the file where the TODO was found. - `insertionPoint` (vscode.Position) - The position in the file where the TODO was found. - `context` (string) - Surrounding text context for the TODO comment. ``` -------------------------------- ### issueForKey Source: https://context7.com/atlassian/atlascode/llms.txt Searches all available Jira sites in parallel for an issue matching the given key, with a 1-minute timeout. ```APIDOC ## issueForKey ### Description Searches all available Jira sites in parallel and returns the first site that has an issue matching the given key, with a 1-minute timeout. ### Usage ```typescript import { issueForKey } from './src/jira/issueForKey'; try { const issue = await issueForKey('PROJ-100'); console.log(`Found on site: ${issue.siteDetails.host}`); console.log(`Summary: ${issue.summary}`); } catch (e) { console.error(e); // "no issue found with key PROJ-100" } ``` ``` -------------------------------- ### Configure Rovo Dev MCP Server Source: https://context7.com/atlassian/atlascode/llms.txt Configuration for the Model Context Protocol server in Rovo Dev CLI. This JSON file specifies the servers to connect to, including their commands, arguments, and environment variables. ```json // ~/.rovodev/mcp.json — Model Context Protocol server configuration { "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "" } }, "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"] } } } ``` -------------------------------- ### ClientManager.jiraClient / ClientManager.bbClient Source: https://context7.com/atlassian/atlascode/llms.txt Resolves and caches an authenticated Jira or Bitbucket HTTP client for a given site. Clients are TTL-cached (45 min for OAuth, forever for server). ```APIDOC ## ClientManager.jiraClient / ClientManager.bbClient ### Description Resolves and caches an authenticated Jira or Bitbucket HTTP client for a given site. Clients are TTL-cached (45 min for OAuth, forever for server). ### Method ```typescript const jiraClient = await Container.clientManager.jiraClient(sites[0]); const bbApi = await Container.clientManager.bbClient(bbSites[0]); ``` ### Parameters - **site** (SiteInfo) - Required - The authenticated site for which to obtain a client. ### Returns - **JiraClient | JiraCloudClient | BitbucketApi** - An authenticated HTTP client for the specified product. ### Example Usage ```typescript // Get all authenticated Jira sites and obtain a client for the first one const sites = Container.siteManager.getSitesAvailable(ProductJira); if (sites.length === 0) { throw new Error('No Jira sites authenticated'); } const jiraClient = await Container.clientManager.jiraClient(sites[0]); // jiraClient is a JiraClient / JiraCloudClient from @atlassian-pi/jira-pi-client // Fetch an issue directly via the low-level client const rawIssue = await jiraClient.getIssue('PROJ-123', ['summary', 'status', 'assignee']); console.log(rawIssue.fields.summary); // e.g. "Fix login redirect" // Obtain a Bitbucket Cloud client const bbSites = Container.siteManager.getSitesAvailable(ProductBitbucket); const bbApi = await Container.clientManager.bbClient(bbSites[0]); // bbApi is a BitbucketApi { pullrequests: PullRequestApi, repositories: RepositoriesApi, ... } ``` ``` -------------------------------- ### Accept MCP Server Terms Source: https://context7.com/atlassian/atlascode/llms.txt Explicitly accept or deny terms of service for MCP servers before using their tools. Bulk acceptance is also supported. ```typescript // Accept terms for a specific MCP server await client.acceptMcpTerms('github-mcp', 'accept'); // Deny a specific server await client.acceptMcpTerms('untrusted-mcp', 'deny'); // Bulk accept all pending MCP terms await client.acceptMcpTerms(true); ``` -------------------------------- ### fetchCreateIssueUI / fetchEditIssueUI Source: https://context7.com/atlassian/atlascode/llms.txt Loads Jira issue create/edit form metadata, including field definitions and issue link types. ```APIDOC ## fetchCreateIssueUI / fetchEditIssueUI ### Description Retrieves all field metadata required to render a Jira create or edit issue form for a given project, including field definitions, issue link types, and create metadata. ### Usage ```typescript import { fetchCreateIssueUI, fetchEditIssueUI } from './src/jira/fetchIssue'; import { Container } from './src/container'; import { ProductJira } from './src/atlclients/authInfo'; const site = Container.siteManager.getSitesAvailable(ProductJira)[0]; // Get create form metadata for project "PROJ" const createUI = await fetchCreateIssueUI(site, 'PROJ'); // createUI.issueTypeScreens contains renderable field info grouped by issue type // Get edit form metadata for an existing issue const existingIssue = await fetchMinimalIssue('PROJ-100', site); const editUI = await fetchEditIssueUI(existingIssue); // editUI.fields contains all editable field definitions with current values ``` ``` -------------------------------- ### issuesForJQL Source: https://context7.com/atlassian/atlascode/llms.txt Executes a JQL query against a Jira site and returns an array of MinimalIssue objects, with support for pagination. ```APIDOC ## issuesForJQL ### Description Executes a JQL query against a Jira site and returns an array of `MinimalIssue` objects. Respects the `fetchAllQueryResults` configuration to paginate beyond 100 results. ### Usage ```typescript import { issuesForJQL } from './src/jira/issuesForJql'; import { Container } from './src/container'; import { ProductJira } from './src/atlclients/authInfo'; const site = Container.siteManager.getSitesAvailable(ProductJira)[0]; // Fetch all open bugs assigned to the current user, sorted by priority const issues = await issuesForJQL( 'assignee = currentUser() AND issuetype = Bug AND status != Done ORDER BY priority ASC', site ); issues.forEach(issue => { console.log(`${issue.key}: ${issue.summary} [${issue.status.name}]`); }); // Output example: // PROJ-12: Login page crashes on Firefox [To Do] // PROJ-34: API timeout after 30s [In Progress] ``` ``` -------------------------------- ### CloudRepositoriesApi.get Source: https://context7.com/atlassian/atlascode/llms.txt Fetch repository metadata. ```APIDOC ## CloudRepositoriesApi.get Fetch repository metadata. ### Description Returns a `Repo` object for the given `BitbucketSite`, including the repository's name, URL, main branch, and branching model. Results are cached per owner+repo slug. ### Method `get(site: BitbucketSite)` ### Parameters - **site** (BitbucketSite) - An object containing `details`, `ownerSlug`, and `repoSlug`. ### Response - **Repo** (object) - Contains repository details like `displayName`, `mainbranch`, `developmentBranch`, and `url`. ``` -------------------------------- ### RovoDevCodeActionProvider Source: https://context7.com/atlassian/atlascode/llms.txt Provides inline AI fix and explain actions on code selections within VS Code. ```APIDOC ### `RovoDevCodeActionProvider` — Inline AI fix/explain actions on code selections Implements `vscode.CodeActionProvider` to surface "Fix with Rovo Dev" and "Explain with Rovo Dev" quick-fix actions whenever the user has a non-empty code selection, optionally overlapping with a diagnostic. ```typescript // Registered automatically for all languages when Rovo Dev is enabled. // In settings.json: // { "atlascode.rovodev.enabled": true } // When the user selects code that has an error diagnostic, they see: // [Quick Fix] Fix with Rovo Dev // [Quick Fix] Explain with Rovo Dev // [Quick Fix] Rovo Dev: Add to Context // The "Fix" action builds a prompt like: // "Please fix problem with this code. // File: /workspace/src/auth.ts (TypeScript) // Selected code: [selected lines] // Surrounding code: [±10 lines] // Imports: [first 50 import lines] // Diagnostics: [error messages from VS Code]" // Then calls: vscode.commands.executeCommand('atlascode.rovodev.askRovoDev', builtPrompt, contextItems); ``` ``` -------------------------------- ### Fetch Bitbucket Repository Metadata Source: https://context7.com/atlassian/atlascode/llms.txt Retrieves repository metadata including name, URL, main branch, and branching model for a given Bitbucket site. Results are cached. ```typescript import { Container } from './src/container'; import { ProductBitbucket } from './src/atlclients/authInfo'; import { BitbucketSite } from './src/bitbucket/model'; const bbSites = Container.siteManager.getSitesAvailable(ProductBitbucket); const bbApi = await Container.clientManager.bbClient(bbSites[0]); const site: BitbucketSite = { details: bbSites[0], ownerSlug: 'myorg', repoSlug: 'my-repo', }; const repo = await bbApi.repositories.get(site); console.log(repo.displayName); // "my-repo" console.log(repo.mainbranch); // "main" console.log(repo.developmentBranch); // "develop" console.log(repo.url); // "https://bitbucket.org/myorg/my-repo" ``` -------------------------------- ### Create Jira Issues from TODO Comments with CodeLens Source: https://context7.com/atlassian/atlascode/llms.txt Scans documents for TODO-style triggers and provides CodeLens items to create Jira issues. Configuration for triggers is done in `settings.json`. ```typescript import { provideCodeLenses } from './src/jira/todoObserver'; import * as vscode from 'vscode'; // Registered automatically as a CodeLens provider for all file types. // Configuration controls the trigger keywords and enable/disable. // In settings.json: // { // "atlascode.jira.todoIssues.enabled": true, // "atlascode.jira.todoIssues.triggers": ["TODO", "FIXME", "BUG", "HACK"] // } // When a user opens a file with this content: // const x = 1; // TODO: handle edge case when x is negative // // A "Create Jira Issue" lens appears above/inline with the comment. // Clicking it runs: vscode.commands.executeCommand('atlascode.jira.createIssue', { fromCodeLens: true, summary: 'handle edge case when x is negative', uri: vscode.Uri.file('/workspace/src/utils.ts'), insertionPoint: new vscode.Position(0, 45), context: '// surrounding 20 chars of context', }); ``` -------------------------------- ### Fetch Current Bitbucket User Source: https://context7.com/atlassian/atlascode/llms.txt Retrieves the `User` model for the currently authenticated Bitbucket Cloud account. Requires `Container` and `ProductBitbucket` imports. ```typescript import { Container } from './src/container'; import { ProductBitbucket } from './src/atlclients/authInfo'; const bbSites = Container.siteManager.getSitesAvailable(ProductBitbucket); const bbApi = await Container.clientManager.bbClient(bbSites[0]); const me = await bbApi.pullrequests.getCurrentUser(bbSites[0]); console.log(me.displayName); // "Alice Smith" console.log(me.accountId); // "557058:abc123..." console.log(me.mention); // "@[Alice Smith](account_id:557058:abc123...)" ``` -------------------------------- ### RovoDevApiClient.resumeToolCall Source: https://context7.com/atlassian/atlascode/llms.txt Approve or deny AI tool executions when the agent is paused before executing a tool. ```APIDOC ## `RovoDevApiClient.resumeToolCall` — Approve or deny AI tool executions When the agent is paused before executing a tool (e.g., writing a file, running a command), the extension calls this to either approve or deny each pending tool call. ```typescript // After receiving a "pause_on_call_tools_start" event in the SSE stream, // the UI shows a confirmation dialog. The user's choices are sent here: await client.resumeToolCall({ 'tool-call-id-abc123': 'allow', // approve this tool 'tool-call-id-def456': 'deny', // reject this tool 'tool-call-id-ghi789': 'undecided', // defaults to 'deny' }); ``` ``` -------------------------------- ### Query issues using JQL Source: https://context7.com/atlassian/atlascode/llms.txt Executes a JQL query against a Jira site and returns an array of MinimalIssue objects. Supports pagination beyond 100 results via fetchAllQueryResults configuration. ```typescript import { issuesForJQL } from './src/jira/issuesForJql'; import { Container } from './src/container'; import { ProductJira } from './src/atlclients/authInfo'; const site = Container.siteManager.getSitesAvailable(ProductJira)[0]; // Fetch all open bugs assigned to the current user, sorted by priority const issues = await issuesForJQL( 'assignee = currentUser() AND issuetype = Bug AND status != Done ORDER BY priority ASC', site ); issues.forEach(issue => { console.log(`${issue.key}: ${issue.summary} [${issue.status.name}]`); }); // Output example: // PROJ-12: Login page crashes on Firefox [To Do] // PROJ-34: API timeout after 30s [In Progress] ``` -------------------------------- ### CloudRepositoriesApi.getBranches Source: https://context7.com/atlassian/atlascode/llms.txt List repository branches. ```APIDOC ## CloudRepositoriesApi.getBranches List repository branches. ### Description Returns an array of branch name strings for a given repository. ### Method `getBranches(site: BitbucketSite)` ### Parameters - **site** (BitbucketSite) - An object containing `details`, `ownerSlug`, and `repoSlug`. ### Response - **string[]** - An array of branch names. ``` ```APIDOC ## CloudRepositoriesApi.getDevelopmentBranch Get the development branch for a repository. ### Description Returns the name of the development branch for a given repository. ### Method `getDevelopmentBranch(site: BitbucketSite)` ### Parameters - **site** (BitbucketSite) - An object containing `details`, `ownerSlug`, and `repoSlug`. ### Response - **string** - The name of the development branch. ``` -------------------------------- ### transitionIssue Source: https://context7.com/atlassian/atlascode/llms.txt Moves a Jira issue to a new status by applying a workflow transition and triggers refresh events. ```APIDOC ## transitionIssue ### Description Applies a workflow transition to an issue, then fires refresh events to update open tree views. ### Usage ```typescript import { transitionIssue } from './src/jira/transitionIssue'; import { fetchMinimalIssue } from './src/jira/fetchIssue'; import { Container } from './src/container'; import { ProductJira } from './src/atlclients/authInfo'; const site = Container.siteManager.getSitesAvailable(ProductJira)[0]; const issue = await fetchMinimalIssue('PROJ-789', site); // Find the "In Progress" transition const transition = issue.transitions.find(t => t.name === 'In Progress'); if (!transition) { throw new Error('Transition not found'); } await transitionIssue(issue, transition, { source: 'sidebar' }); // Result: issue status updated, JiraWorkItems and CustomJQL tree views refresh automatically. ``` ``` -------------------------------- ### VS Code Commands: atlascode.rovodev.* Source: https://context7.com/atlassian/atlascode/llms.txt Integrates Rovo Dev commands into the VS Code command palette and keybindings for various actions. ```APIDOC ### VS Code Commands: `atlascode.rovodev.*` — Rovo Dev command palette and keybinding integration The extension registers the following Rovo Dev commands, accessible from the command palette or programmatically via `vscode.commands.executeCommand`. ```typescript import * as vscode from 'vscode'; import { RovodevCommands } from './src/rovo-dev/api/componentApi'; // Open the Rovo Dev sidebar chat panel await vscode.commands.executeCommand(RovodevCommands.RovodevOpenChat); // Shortcut: Ctrl+Alt+I (Cmd+Alt+I on macOS) from any editor // Send a prompt programmatically with file context await vscode.commands.executeCommand( RovodevCommands.RovodevAsk, 'Write unit tests for this function', [ { contextType: 'file', isFocus: true, file: { name: 'utils.ts', absolutePath: '/workspace/src/utils.ts', }, selection: { start: 10, end: 40 }, enabled: true, } ] ); // Add current editor selection to Rovo Dev context (Ctrl+Alt+A / Cmd+Alt+A) await vscode.commands.executeCommand(RovodevCommands.RovodevAddToContext); // Start a fresh session await vscode.commands.executeCommand(RovodevCommands.RovodevNewSession); // Browse past sessions via Quick Pick await vscode.commands.executeCommand(RovodevCommands.RovodevSessionHistory); // Open config/memory/log files in the editor await vscode.commands.executeCommand(RovodevCommands.OpenRovoDevConfig); // ~/.rovodev/config.yml await vscode.commands.executeCommand(RovodevCommands.OpenRovoDevMcpJson); // ~/.rovodev/mcp.json await vscode.commands.executeCommand(RovodevCommands.OpenRovoDevGlobalMemory); // ~/.rovodev/.agent.md await vscode.commands.executeCommand(RovodevCommands.OpenRovoDevLogFile); // ~/.rovodev/rovodev.log // Enable Rovo Dev (if disabled) await vscode.commands.executeCommand(RovodevCommands.RovodevEnable); // Restart the Rovo Dev background process await vscode.commands.executeCommand(RovodevCommands.RestartProcess); ``` ``` -------------------------------- ### Interact with Rovo Dev AI Backend Source: https://context7.com/atlassian/atlascode/llms.txt Use RovoDevApiClient to communicate with the local Rovo Dev CLI process. Supports chat streaming, session management, and agent mode switching. ```typescript import { RovoDevApiClient } from './src/rovo-dev/client/rovoDevApiClient'; import { RovoDevChatRequest } from './src/rovo-dev/client'; // Construct the client (the process manager handles starting the CLI subprocess) const client = new RovoDevApiClient('127.0.0.1', 51234, 'session-bearer-token'); // Check the health and current state of the Rovo Dev process const health = await client.healthcheck(); console.log(health.status); // "healthy" console.log(health.version); // "202604.30.2" console.log(health.sessionId); // current session UUID // Send a chat message with file context (streams SSE responses) const request: RovoDevChatRequest = { message: 'Explain what this function does and suggest improvements.', context: [ { type: 'file', file_path: '/workspace/src/auth/loginManager.ts', selection: { start: 49, end: 80 }, }, ], }; const abortController = new AbortController(); const response = await client.chat(request, false, abortController.signal); // response is a ReadableStream of Server-Sent Events (text/event-stream) // Each event contains a JSON chunk from the AI response // Cancel an in-progress response const cancelResult = await client.cancel(); console.log(cancelResult.cancelled); // true // Get/set the agent mode const modeInfo = await client.getAgentMode(); console.log(modeInfo.mode); // "default" | "ask" | "plan" await client.setAgentMode('ask'); // Switch to ask-only mode (no file writes) // Session management const sessions = await client.listSessions(); sessions.forEach(s => console.log(`${s.id}: ${s.title} (${s.num_messages} messages)`)); const newSessionId = await client.createSession(); await client.restoreSession(sessions[0].id); const forkedId = await client.forkSession(sessions[0].id); await client.deleteSession(forkedId); ``` -------------------------------- ### RovoDevApiClient.acceptMcpTerms Source: https://context7.com/atlassian/atlascode/llms.txt Accept MCP server terms of service. Required before using tools from newly configured MCP servers. ```APIDOC ## `RovoDevApiClient.acceptMcpTerms` — Accept MCP server terms of service When new MCP servers are configured, the CLI requires explicit acceptance of their terms before tools from those servers can be used. ```typescript // Accept terms for a specific MCP server await client.acceptMcpTerms('github-mcp', 'accept'); // Deny a specific server await client.acceptMcpTerms('untrusted-mcp', 'deny'); // Bulk accept all pending MCP terms await client.acceptMcpTerms(true); ``` ``` -------------------------------- ### Find an issue across all authenticated Jira sites Source: https://context7.com/atlassian/atlascode/llms.txt Searches all available Jira sites in parallel for a given issue key with a 1-minute timeout. Logs the site and summary if found, or an error if not. ```typescript import { issueForKey } from './src/jira/issueForKey'; try { const issue = await issueForKey('PROJ-100'); console.log(`Found on site: ${issue.siteDetails.host}`); console.log(`Summary: ${issue.summary}`); } catch (e) { console.error(e); // "no issue found with key PROJ-100" } ``` -------------------------------- ### CloudPullRequestApi Source: https://context7.com/atlassian/atlascode/llms.txt Provides methods to list, create, fetch, approve, merge, and comment on Bitbucket Cloud pull requests. ```APIDOC ## `CloudPullRequestApi` — Pull request CRUD and review operations Provides methods to list, create, fetch, approve, merge, and comment on Bitbucket Cloud pull requests. ### List open pull requests Lists open pull requests, paginated with up to 25 per page by default. ```typescript const paginated = await bbApi.pullrequests.getList(site); paginated.data.forEach(pr => { console.log(`#${pr.data.id}: ${pr.data.title} [${pr.data.state}] `); }); ``` ### Create a new pull request Creates a new pull request with specified details. ```typescript import { CreatePullRequestData } from './src/bitbucket/model'; const createData: CreatePullRequestData = { title: 'Add dark mode support', description: 'Implements #PROJ-42 — adds a theme toggle to settings.', sourceBranchName: 'feature/dark-mode', destinationBranchName: 'main', closeSourceBranch: true, reviewerAccountIds: ['557058:reviewer-id'], }; const newPR = await bbApi.pullrequests.create(site, createData); console.log(`Created PR #${newPR.data.id}: ${newPR.data.links?.html?.href}`); ``` ### Approve a pull request Approves an existing pull request. ```typescript await bbApi.pullrequests.approve(site, newPR); ``` ### Add a comment to a pull request Adds a comment to a pull request. ```typescript const comment = await bbApi.pullrequests.postComment(site, newPR, 'LGTM! Nice work.'); console.log(`Comment #${comment.id} posted`); ``` ### Merge a pull request Merges a pull request. ```typescript const merged = await bbApi.pullrequests.merge(site, newPR, false, undefined, 'squash'); console.log(`Merged: ${merged.data.state}`); // "MERGED" ``` ```