@robinpath/bitbucket
Advanced tools
| /** | ||
| * RobinPath Bitbucket Module (Node port) | ||
| * | ||
| * Bitbucket Cloud REST API v2 client covering the day-to-day surface: | ||
| * workspaces, repositories, branches, commits, pull requests, pipelines, | ||
| * issues, webhooks, deployments, and users. | ||
| * | ||
| * Mirror of packages/php/bitbucket/src/index.php — shares the same credential | ||
| * contract, metadata shape, and error taxonomy so the visual editor can | ||
| * render both identically. | ||
| * | ||
| * Authentication uses HTTP Basic `<username>:<app_password>` (or an OAuth | ||
| * bearer if provided). Credentials are pulled from the RobinPath vault. | ||
| * | ||
| * Credential type declared by this module: | ||
| * - bitbucket : { username, app_password, workspace? } | ||
| * Basic auth with an App Password (Bitbucket → Personal settings → App | ||
| * passwords). `workspace` is an optional default used when scripts pass | ||
| * an empty workspace argument. | ||
| * | ||
| * All handlers return the parsed JSON response. Errors are never thrown — | ||
| * they are returned as `{error, code, status?, bitbucket_error?}`. | ||
| */ | ||
| import type { BuiltinHandler, CredentialTypeSchema, FunctionMetadata, ModuleHost, ModuleMetadata } from "@robinpath/core"; | ||
| export declare function configureBitbucket(h: ModuleHost): void; | ||
| export declare const BitbucketFunctions: Record<string, BuiltinHandler>; | ||
| export declare const BitbucketCredentialTypes: CredentialTypeSchema[]; | ||
| export declare const BitbucketFunctionMetadata: Record<string, FunctionMetadata>; | ||
| export declare const BitbucketModuleMetadata: ModuleMetadata; | ||
| //# sourceMappingURL=bitbucket.d.ts.map |
| {"version":3,"file":"bitbucket.d.ts","sourceRoot":"","sources":["../src/bitbucket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAezB,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAEtD;AAmmBD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAyB7D,CAAC;AAIF,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,EAwC1D,CAAC;AAoEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAsqBtE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,cA2BrC,CAAC"} |
+1392
| /** | ||
| * RobinPath Bitbucket Module (Node port) | ||
| * | ||
| * Bitbucket Cloud REST API v2 client covering the day-to-day surface: | ||
| * workspaces, repositories, branches, commits, pull requests, pipelines, | ||
| * issues, webhooks, deployments, and users. | ||
| * | ||
| * Mirror of packages/php/bitbucket/src/index.php — shares the same credential | ||
| * contract, metadata shape, and error taxonomy so the visual editor can | ||
| * render both identically. | ||
| * | ||
| * Authentication uses HTTP Basic `<username>:<app_password>` (or an OAuth | ||
| * bearer if provided). Credentials are pulled from the RobinPath vault. | ||
| * | ||
| * Credential type declared by this module: | ||
| * - bitbucket : { username, app_password, workspace? } | ||
| * Basic auth with an App Password (Bitbucket → Personal settings → App | ||
| * passwords). `workspace` is an optional default used when scripts pass | ||
| * an empty workspace argument. | ||
| * | ||
| * All handlers return the parsed JSON response. Errors are never thrown — | ||
| * they are returned as `{error, code, status?, bitbucket_error?}`. | ||
| */ | ||
| // ── Module-local state ───────────────────────────────────────────────── | ||
| const state = {}; | ||
| function host() { | ||
| if (!state.host) { | ||
| throw new Error("Bitbucket module not initialized. Pass the adapter to rp.registerModule() via loadModule so its configure() hook runs first."); | ||
| } | ||
| return state.host; | ||
| } | ||
| export function configureBitbucket(h) { | ||
| state.host = h; | ||
| } | ||
| // ── Constants ────────────────────────────────────────────────────────── | ||
| const API_BASE = "https://api.bitbucket.org/2.0/"; | ||
| const USER_AGENT = "RobinPath-WP/1.0"; | ||
| const CREDENTIAL_TYPE = "bitbucket"; | ||
| function errorReturn(error, code, extra = {}) { | ||
| return { error, code, ...extra }; | ||
| } | ||
| function isErr(x) { | ||
| return typeof x === "object" && x !== null && "error" in x && "code" in x; | ||
| } | ||
| async function resolveCredential(credentialSlug) { | ||
| if (!credentialSlug) { | ||
| return errorReturn("Credential slug is required.", "credential_not_found"); | ||
| } | ||
| let fields; | ||
| try { | ||
| fields = await host().credentials.get(credentialSlug); | ||
| } | ||
| catch (e) { | ||
| return errorReturn(e instanceof Error ? e.message : String(e), "credential_not_found"); | ||
| } | ||
| if (!fields) { | ||
| return errorReturn(`Credential '${credentialSlug}' not found.`, "credential_not_found"); | ||
| } | ||
| // Prefer explicit OAuth token if present, else Basic username:app_password. | ||
| const token = String(fields.token ?? fields.access_token ?? ""); | ||
| if (token) { | ||
| return { | ||
| authHeader: `Bearer ${token}`, | ||
| defaultWorkspace: String(fields.workspace ?? ""), | ||
| }; | ||
| } | ||
| const username = String(fields.username ?? ""); | ||
| const appPassword = String(fields.app_password ?? fields.password ?? ""); | ||
| if (!username || !appPassword) { | ||
| return errorReturn("Credential is missing `username` + `app_password` (or a `token` for OAuth).", "token_missing"); | ||
| } | ||
| return { | ||
| authHeader: `Basic ${Buffer.from(`${username}:${appPassword}`).toString("base64")}`, | ||
| defaultWorkspace: String(fields.workspace ?? ""), | ||
| }; | ||
| } | ||
| function resolveWorkspace(wsArg, resolved) { | ||
| const ws = wsArg !== "" ? wsArg : resolved.defaultWorkspace; | ||
| return ws; | ||
| } | ||
| // ── HTTP helpers ─────────────────────────────────────────────────────── | ||
| function defaultHeaders(authHeader, withBody) { | ||
| const h = { | ||
| Accept: "application/json", | ||
| Authorization: authHeader, | ||
| "User-Agent": USER_AGENT, | ||
| }; | ||
| if (withBody) | ||
| h["Content-Type"] = "application/json"; | ||
| return h; | ||
| } | ||
| function bitbucketError(status, decoded) { | ||
| let message = `Bitbucket returned HTTP ${status}.`; | ||
| if (decoded && typeof decoded === "object") { | ||
| const d = decoded; | ||
| // Bitbucket errors shape: {error: {message: "..."}} or {type: "error", error: {...}} | ||
| if (d.error && typeof d.error === "object" && "message" in d.error) { | ||
| const m = d.error.message; | ||
| if (typeof m === "string") | ||
| message = m; | ||
| } | ||
| else if (typeof d.message === "string") { | ||
| message = d.message; | ||
| } | ||
| } | ||
| else if (typeof decoded === "string" && decoded !== "") { | ||
| message = decoded.slice(0, 500); | ||
| } | ||
| let code = "bitbucket_error"; | ||
| if (status === 404) | ||
| code = "not_found"; | ||
| else if (status === 401 || status === 403) | ||
| code = "permission_denied"; | ||
| else if (status === 400 || status === 422) | ||
| code = "validation_failed"; | ||
| else if (status === 429) | ||
| code = "rate_limited"; | ||
| return errorReturn(message, code, { status, bitbucket_error: decoded }); | ||
| } | ||
| async function http(authHeader, method, endpoint, body) { | ||
| const url = API_BASE + endpoint.replace(/^\/+/, ""); | ||
| const hasBody = body !== undefined && body !== null; | ||
| const init = { | ||
| method, | ||
| headers: defaultHeaders(authHeader, hasBody), | ||
| }; | ||
| if (hasBody) | ||
| init.body = JSON.stringify(body); | ||
| let response; | ||
| try { | ||
| response = await fetch(url, init); | ||
| } | ||
| catch (e) { | ||
| return errorReturn(e instanceof Error ? e.message : String(e), "transport"); | ||
| } | ||
| const status = response.status; | ||
| const raw = await response.text(); | ||
| if (status === 204) | ||
| return { ok: true, status }; | ||
| let decoded = null; | ||
| if (raw) { | ||
| try { | ||
| decoded = JSON.parse(raw); | ||
| } | ||
| catch { | ||
| decoded = raw; | ||
| } | ||
| } | ||
| if (status < 200 || status >= 300) { | ||
| return bitbucketError(status, decoded); | ||
| } | ||
| return decoded ?? { ok: true }; | ||
| } | ||
| // ── Param helpers ────────────────────────────────────────────────────── | ||
| function asOpts(v) { | ||
| return v && typeof v === "object" && !Array.isArray(v) ? v : {}; | ||
| } | ||
| function asString(v) { | ||
| if (v === undefined || v === null) | ||
| return ""; | ||
| return String(v); | ||
| } | ||
| function requireWorkspace(ws) { | ||
| if (!ws) { | ||
| return errorReturn("Workspace is required (pass as arg or set `workspace` on the credential).", "workspace_missing"); | ||
| } | ||
| return null; | ||
| } | ||
| function buildQuery(params) { | ||
| const parts = []; | ||
| for (const [k, v] of Object.entries(params)) { | ||
| if (v === null || v === undefined || v === "") | ||
| continue; | ||
| parts.push(`${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`); | ||
| } | ||
| return parts.length === 0 ? "" : `?${parts.join("&")}`; | ||
| } | ||
| // ── Handlers ─────────────────────────────────────────────────────────── | ||
| const listWorkspaces = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const opts = asOpts(args[1]); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const q = buildQuery({ role: opts.role, q: opts.q, sort: opts.sort, pagelen: opts.pagelen }); | ||
| return (await http(resolved.authHeader, "GET", `/workspaces${q}`)); | ||
| }; | ||
| const getWorkspace = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "GET", `/workspaces/${encodeURIComponent(ws)}`)); | ||
| }; | ||
| const listRepositories = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const opts = asOpts(args[2]); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| const q = buildQuery({ role: opts.role, q: opts.q, sort: opts.sort, pagelen: opts.pagelen }); | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}${q}`)); | ||
| }; | ||
| const getRepository = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}`)); | ||
| }; | ||
| const createRepository = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const bodyArg = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "POST", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}`, bodyArg)); | ||
| }; | ||
| const deleteRepository = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "DELETE", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}`)); | ||
| }; | ||
| const listBranches = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const opts = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| const q = buildQuery({ q: opts.q, sort: opts.sort, pagelen: opts.pagelen }); | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/refs/branches${q}`)); | ||
| }; | ||
| const createBranch = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const name = asString(args[3]); | ||
| const targetHash = asString(args[4]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| if (!name) | ||
| return errorReturn("Branch `name` is required.", "validation_failed"); | ||
| if (!targetHash) | ||
| return errorReturn("Branch `targetHash` is required.", "validation_failed"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "POST", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/refs/branches`, { name, target: { hash: targetHash } })); | ||
| }; | ||
| const deleteBranch = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const name = asString(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| if (!name) | ||
| return errorReturn("Branch `name` is required.", "validation_failed"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "DELETE", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/refs/branches/${encodeURIComponent(name)}`)); | ||
| }; | ||
| const listPullRequests = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const opts = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| const q = buildQuery({ state: opts.state, q: opts.q, sort: opts.sort, pagelen: opts.pagelen }); | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pullrequests${q}`)); | ||
| }; | ||
| const getPullRequest = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const id = asString(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| if (!id) | ||
| return errorReturn("Pull request `id` is required.", "validation_failed"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pullrequests/${encodeURIComponent(id)}`)); | ||
| }; | ||
| const createPullRequest = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const bodyArg = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "POST", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pullrequests`, bodyArg)); | ||
| }; | ||
| const updatePullRequest = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const id = asString(args[3]); | ||
| const bodyArg = asOpts(args[4]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| if (!id) | ||
| return errorReturn("Pull request `id` is required.", "validation_failed"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "PUT", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pullrequests/${encodeURIComponent(id)}`, bodyArg)); | ||
| }; | ||
| const mergePullRequest = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const id = asString(args[3]); | ||
| const bodyArg = asOpts(args[4]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| if (!id) | ||
| return errorReturn("Pull request `id` is required.", "validation_failed"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "POST", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pullrequests/${encodeURIComponent(id)}/merge`, bodyArg)); | ||
| }; | ||
| const declinePullRequest = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const id = asString(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| if (!id) | ||
| return errorReturn("Pull request `id` is required.", "validation_failed"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "POST", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pullrequests/${encodeURIComponent(id)}/decline`)); | ||
| }; | ||
| const listCommits = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const opts = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| const q = buildQuery({ include: opts.include, exclude: opts.exclude, pagelen: opts.pagelen }); | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/commits${q}`)); | ||
| }; | ||
| const listPipelines = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const opts = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| const q = buildQuery({ sort: opts.sort, pagelen: opts.pagelen }); | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pipelines/${q}`)); | ||
| }; | ||
| const getPipeline = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const uuid = asString(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| if (!uuid) | ||
| return errorReturn("Pipeline `uuid` is required.", "validation_failed"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pipelines/${encodeURIComponent(uuid)}`)); | ||
| }; | ||
| const triggerPipeline = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const bodyArg = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "POST", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/pipelines/`, bodyArg)); | ||
| }; | ||
| const listIssues = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const opts = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| const q = buildQuery({ q: opts.q, sort: opts.sort, state: opts.state, pagelen: opts.pagelen }); | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/issues${q}`)); | ||
| }; | ||
| const createIssue = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| const bodyArg = asOpts(args[3]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "POST", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/issues`, bodyArg)); | ||
| }; | ||
| const listWebhooks = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/hooks`)); | ||
| }; | ||
| const listDeployments = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const workspace = asString(args[1]); | ||
| const repoSlug = asString(args[2]); | ||
| if (!repoSlug) | ||
| return errorReturn("`repoSlug` is required.", "repo_missing"); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const ws = resolveWorkspace(workspace, resolved); | ||
| const err = requireWorkspace(ws); | ||
| if (err) | ||
| return err; | ||
| return (await http(resolved.authHeader, "GET", `/repositories/${encodeURIComponent(ws)}/${encodeURIComponent(repoSlug)}/deployments`)); | ||
| }; | ||
| const getUser = async (args) => { | ||
| const cred = String(args[0] ?? ""); | ||
| const usernameArg = asString(args[1]); | ||
| const resolved = await resolveCredential(cred); | ||
| if (isErr(resolved)) | ||
| return resolved; | ||
| const endpoint = usernameArg !== "" | ||
| ? `/users/${encodeURIComponent(usernameArg)}` | ||
| : `/user`; | ||
| return (await http(resolved.authHeader, "GET", endpoint)); | ||
| }; | ||
| // ── Exports: functions map ───────────────────────────────────────────── | ||
| export const BitbucketFunctions = { | ||
| listWorkspaces, | ||
| getWorkspace, | ||
| listRepositories, | ||
| getRepository, | ||
| createRepository, | ||
| deleteRepository, | ||
| listBranches, | ||
| createBranch, | ||
| deleteBranch, | ||
| listPullRequests, | ||
| getPullRequest, | ||
| createPullRequest, | ||
| updatePullRequest, | ||
| mergePullRequest, | ||
| declinePullRequest, | ||
| listCommits, | ||
| listPipelines, | ||
| getPipeline, | ||
| triggerPipeline, | ||
| listIssues, | ||
| createIssue, | ||
| listWebhooks, | ||
| listDeployments, | ||
| getUser, | ||
| }; | ||
| // ── Exports: credential types ────────────────────────────────────────── | ||
| export const BitbucketCredentialTypes = [ | ||
| { | ||
| slug: CREDENTIAL_TYPE, | ||
| title: "Bitbucket", | ||
| icon: "git-branch", | ||
| fields: [ | ||
| { | ||
| name: "username", | ||
| title: "Username", | ||
| type: "text", | ||
| required: true, | ||
| placeholder: "your-bitbucket-username", | ||
| description: "Your Atlassian/Bitbucket username (NOT your email).", | ||
| }, | ||
| { | ||
| name: "app_password", | ||
| title: "App password", | ||
| type: "password", | ||
| required: true, | ||
| placeholder: "•••••••••••", | ||
| description: "Create one at Bitbucket → Personal settings → App passwords. Grant at least Repositories: Read/Write and Pull requests: Read/Write.", | ||
| }, | ||
| { | ||
| name: "workspace", | ||
| title: "Default workspace", | ||
| type: "text", | ||
| required: false, | ||
| placeholder: "my-team", | ||
| description: "Optional. Used when scripts pass an empty workspace argument.", | ||
| }, | ||
| { | ||
| name: "token", | ||
| title: "OAuth token", | ||
| type: "password", | ||
| required: false, | ||
| description: "Optional. If set, takes precedence over username + app password.", | ||
| }, | ||
| ], | ||
| }, | ||
| ]; | ||
| // ── Exports: metadata ────────────────────────────────────────────────── | ||
| const credentialParam = { | ||
| name: "credential", | ||
| title: "Credential", | ||
| description: "Slug of a saved `bitbucket` credential.", | ||
| dataType: "string", | ||
| formInputType: "resource", | ||
| required: true, | ||
| allowExpression: true, | ||
| placeholder: "my_bitbucket", | ||
| resource: { | ||
| type: "credential", | ||
| listFn: "credential.list", | ||
| modes: ["list", "expression"], | ||
| searchable: true, | ||
| filter: { type: CREDENTIAL_TYPE }, | ||
| }, | ||
| }; | ||
| const workspaceParam = { | ||
| name: "workspace", | ||
| title: "Workspace", | ||
| description: "Workspace slug. Pass empty string to use the credential's `workspace`.", | ||
| dataType: "string", | ||
| formInputType: "text", | ||
| required: false, | ||
| allowExpression: true, | ||
| placeholder: "my-team", | ||
| }; | ||
| const repoParam = { | ||
| name: "repoSlug", | ||
| title: "Repository slug", | ||
| description: "Repository slug (the kebab-case path part of the repo URL).", | ||
| dataType: "string", | ||
| formInputType: "text", | ||
| required: true, | ||
| allowExpression: true, | ||
| placeholder: "my-repo", | ||
| }; | ||
| const prIdParam = { | ||
| name: "id", | ||
| title: "Pull request ID", | ||
| description: "Numeric pull request ID.", | ||
| dataType: "string", | ||
| formInputType: "text", | ||
| required: true, | ||
| allowExpression: true, | ||
| placeholder: "42", | ||
| }; | ||
| const commonErrors = { | ||
| credential_not_found: "No credential with that slug exists in the vault.", | ||
| token_missing: "Credential is missing `username` + `app_password` (or `token` for OAuth).", | ||
| workspace_missing: "No workspace supplied and credential has no `workspace`.", | ||
| repo_missing: "Repository slug is required.", | ||
| validation_failed: "Bitbucket rejected the request (HTTP 400 / 422).", | ||
| permission_denied: "Authentication or scope error (HTTP 401 / 403).", | ||
| not_found: "Resource not found (HTTP 404).", | ||
| rate_limited: "Bitbucket rate limit (HTTP 429).", | ||
| transport: "Network failure calling api.bitbucket.org.", | ||
| bitbucket_error: "Bitbucket returned an unexpected error.", | ||
| }; | ||
| export const BitbucketFunctionMetadata = { | ||
| listWorkspaces: { | ||
| title: "List workspaces", | ||
| summary: "All workspaces visible to the token", | ||
| description: "Calls `GET /workspaces`.", | ||
| group: "workspaces", | ||
| action: "query", | ||
| icon: "users", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "workspace"], | ||
| parameters: [ | ||
| credentialParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "Recognized keys:\n role : 'member'|'collaborator'|'owner'\n q : BBQL query\n sort : sort key\n pagelen : 10–100", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 4, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "Paginated `{values: […], pagelen, page, size, next?}`.", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listWorkspaces "my_bitbucket"', | ||
| }, | ||
| getWorkspace: { | ||
| title: "Get workspace", | ||
| summary: "Fetch a single workspace", | ||
| description: "Calls `GET /workspaces/{workspace}`.", | ||
| group: "workspaces", | ||
| action: "read", | ||
| icon: "info", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "workspace"], | ||
| parameters: [credentialParam, workspaceParam], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.getWorkspace "my_bitbucket" "my-team"', | ||
| }, | ||
| listRepositories: { | ||
| title: "List repositories", | ||
| summary: "All repos in a workspace", | ||
| description: "Calls `GET /repositories/{workspace}`.", | ||
| group: "repositories", | ||
| action: "query", | ||
| icon: "git-branch", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "repo"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "role, q, sort, pagelen (see Bitbucket BBQL).", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 3, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listRepositories "my_bitbucket" "my-team"', | ||
| }, | ||
| getRepository: { | ||
| title: "Get repository", | ||
| summary: "Fetch a single repo", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}`.", | ||
| group: "repositories", | ||
| action: "read", | ||
| icon: "info", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "repo"], | ||
| parameters: [credentialParam, workspaceParam, repoParam], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.getRepository "my_bitbucket" "my-team" "my-repo"', | ||
| }, | ||
| createRepository: { | ||
| title: "Create repository", | ||
| summary: "Create a new repo in a workspace", | ||
| description: "Calls `POST /repositories/{workspace}/{repoSlug}` with a settings body.", | ||
| group: "repositories", | ||
| action: "write", | ||
| icon: "plus", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: false, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "repo", "create"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "settings", | ||
| title: "Settings", | ||
| description: "e.g. `{scm: 'git', is_private: true, description: '...', fork_policy: 'no_public_forks'}`.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 5, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.createRepository "my_bitbucket" "my-team" "my-repo" {is_private: true}', | ||
| }, | ||
| deleteRepository: { | ||
| title: "Delete repository", | ||
| summary: "Permanently delete a repo", | ||
| description: "Calls `DELETE /repositories/{workspace}/{repoSlug}`.", | ||
| group: "repositories", | ||
| action: "delete", | ||
| icon: "trash-2", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "repo", "delete"], | ||
| parameters: [credentialParam, workspaceParam, repoParam], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.deleteRepository "my_bitbucket" "my-team" "my-repo"', | ||
| }, | ||
| listBranches: { | ||
| title: "List branches", | ||
| summary: "Branches in a repository", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/refs/branches`.", | ||
| group: "branches", | ||
| action: "query", | ||
| icon: "git-branch", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "branch"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "q, sort, pagelen.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 3, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listBranches "my_bitbucket" "my-team" "my-repo"', | ||
| }, | ||
| createBranch: { | ||
| title: "Create branch", | ||
| summary: "New branch pointing at a commit", | ||
| description: "Calls `POST /repositories/{workspace}/{repoSlug}/refs/branches`.", | ||
| group: "branches", | ||
| action: "write", | ||
| icon: "plus", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: false, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "branch", "create"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "name", | ||
| title: "Branch name", | ||
| dataType: "string", | ||
| description: "New branch name.", | ||
| formInputType: "text", | ||
| required: true, | ||
| allowExpression: true, | ||
| placeholder: "feature/my-thing", | ||
| }, | ||
| { | ||
| name: "targetHash", | ||
| title: "Target commit hash", | ||
| dataType: "string", | ||
| description: "40-char commit SHA the branch should point at.", | ||
| formInputType: "text", | ||
| required: true, | ||
| allowExpression: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.createBranch "my_bitbucket" "my-team" "my-repo" "feature/x" "abc123…"', | ||
| }, | ||
| deleteBranch: { | ||
| title: "Delete branch", | ||
| summary: "Delete a branch by name", | ||
| description: "Calls `DELETE /repositories/{workspace}/{repoSlug}/refs/branches/{name}`.", | ||
| group: "branches", | ||
| action: "delete", | ||
| icon: "trash-2", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "branch", "delete"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "name", | ||
| title: "Branch name", | ||
| dataType: "string", | ||
| description: "Name of the branch to delete.", | ||
| formInputType: "text", | ||
| required: true, | ||
| allowExpression: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.deleteBranch "my_bitbucket" "my-team" "my-repo" "feature/x"', | ||
| }, | ||
| listPullRequests: { | ||
| title: "List pull requests", | ||
| summary: "PRs in a repository", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/pullrequests`.", | ||
| group: "pull_requests", | ||
| action: "query", | ||
| icon: "git-pull-request", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pr"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "state ('OPEN'|'MERGED'|'DECLINED'|'SUPERSEDED'), q, sort, pagelen.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 3, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listPullRequests "my_bitbucket" "my-team" "my-repo" {state: "OPEN"}', | ||
| }, | ||
| getPullRequest: { | ||
| title: "Get pull request", | ||
| summary: "One PR by ID", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/pullrequests/{id}`.", | ||
| group: "pull_requests", | ||
| action: "read", | ||
| icon: "git-pull-request", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pr"], | ||
| parameters: [credentialParam, workspaceParam, repoParam, prIdParam], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.getPullRequest "my_bitbucket" "my-team" "my-repo" "42"', | ||
| }, | ||
| createPullRequest: { | ||
| title: "Create pull request", | ||
| summary: "Open a new PR", | ||
| description: "Calls `POST /repositories/{workspace}/{repoSlug}/pullrequests`.", | ||
| group: "pull_requests", | ||
| action: "write", | ||
| icon: "plus", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: false, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pr", "create"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "body", | ||
| title: "PR body", | ||
| description: "e.g. `{title: 'Add X', source: {branch: {name: 'feature/x'}}, destination: {branch: {name: 'main'}}, description: '...', close_source_branch: true}`.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: true, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 8, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.createPullRequest "my_bitbucket" "my-team" "my-repo" {title: "Add X", source: {branch: {name: "feature/x"}}, destination: {branch: {name: "main"}}}', | ||
| }, | ||
| updatePullRequest: { | ||
| title: "Update pull request", | ||
| summary: "Edit PR title / body / reviewers", | ||
| description: "Calls `PUT /repositories/{workspace}/{repoSlug}/pullrequests/{id}`.", | ||
| group: "pull_requests", | ||
| action: "write", | ||
| icon: "edit-3", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pr", "update"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| prIdParam, | ||
| { | ||
| name: "body", | ||
| title: "Changes", | ||
| description: "Any subset of the PR body shape.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: true, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 5, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.updatePullRequest "my_bitbucket" "my-team" "my-repo" "42" {title: "New title"}', | ||
| }, | ||
| mergePullRequest: { | ||
| title: "Merge pull request", | ||
| summary: "Merge an open PR", | ||
| description: "Calls `POST /repositories/{workspace}/{repoSlug}/pullrequests/{id}/merge`.", | ||
| group: "pull_requests", | ||
| action: "write", | ||
| icon: "git-merge", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: false, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pr", "merge"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| prIdParam, | ||
| { | ||
| name: "body", | ||
| title: "Merge options", | ||
| description: "Optional. e.g. `{merge_strategy: 'merge_commit'|'squash'|'fast_forward', close_source_branch: true, message: '...'}`.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 4, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.mergePullRequest "my_bitbucket" "my-team" "my-repo" "42" {merge_strategy: "squash"}', | ||
| }, | ||
| declinePullRequest: { | ||
| title: "Decline pull request", | ||
| summary: "Close without merging", | ||
| description: "Calls `POST /repositories/{workspace}/{repoSlug}/pullrequests/{id}/decline`.", | ||
| group: "pull_requests", | ||
| action: "write", | ||
| icon: "x-circle", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: false, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pr", "decline"], | ||
| parameters: [credentialParam, workspaceParam, repoParam, prIdParam], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.declinePullRequest "my_bitbucket" "my-team" "my-repo" "42"', | ||
| }, | ||
| listCommits: { | ||
| title: "List commits", | ||
| summary: "Repository commit history", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/commits`.", | ||
| group: "commits", | ||
| action: "query", | ||
| icon: "git-commit", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "commit"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "include, exclude, pagelen.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 3, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listCommits "my_bitbucket" "my-team" "my-repo"', | ||
| }, | ||
| listPipelines: { | ||
| title: "List pipelines", | ||
| summary: "Pipelines in a repository", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/pipelines/`.", | ||
| group: "pipelines", | ||
| action: "query", | ||
| icon: "play-circle", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pipeline"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "sort, pagelen.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 3, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listPipelines "my_bitbucket" "my-team" "my-repo"', | ||
| }, | ||
| getPipeline: { | ||
| title: "Get pipeline", | ||
| summary: "One pipeline by UUID", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/pipelines/{uuid}`.", | ||
| group: "pipelines", | ||
| action: "read", | ||
| icon: "info", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pipeline"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "uuid", | ||
| title: "Pipeline UUID", | ||
| dataType: "string", | ||
| description: "Pipeline UUID including the `{}` braces.", | ||
| formInputType: "text", | ||
| required: true, | ||
| allowExpression: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.getPipeline "my_bitbucket" "my-team" "my-repo" "{abc-…}"', | ||
| }, | ||
| triggerPipeline: { | ||
| title: "Trigger pipeline", | ||
| summary: "Run a pipeline on demand", | ||
| description: "Calls `POST /repositories/{workspace}/{repoSlug}/pipelines/`.", | ||
| group: "pipelines", | ||
| action: "write", | ||
| icon: "play", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: false, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "pipeline", "trigger"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "body", | ||
| title: "Pipeline body", | ||
| description: "e.g. `{target: {ref_type: 'branch', ref_name: 'main', type: 'pipeline_ref_target'}}`.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: true, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 6, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.triggerPipeline "my_bitbucket" "my-team" "my-repo" {target: {ref_type: "branch", ref_name: "main", type: "pipeline_ref_target"}}', | ||
| }, | ||
| listIssues: { | ||
| title: "List issues", | ||
| summary: "Issue tracker entries", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/issues`.", | ||
| group: "issues", | ||
| action: "query", | ||
| icon: "list", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "issue"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "q, sort, state, pagelen.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 3, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listIssues "my_bitbucket" "my-team" "my-repo"', | ||
| }, | ||
| createIssue: { | ||
| title: "Create issue", | ||
| summary: "Open a new issue", | ||
| description: "Calls `POST /repositories/{workspace}/{repoSlug}/issues`.", | ||
| group: "issues", | ||
| action: "write", | ||
| icon: "plus", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: false, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "issue", "create"], | ||
| parameters: [ | ||
| credentialParam, | ||
| workspaceParam, | ||
| repoParam, | ||
| { | ||
| name: "body", | ||
| title: "Issue body", | ||
| description: "e.g. `{title: '...', content: {raw: '...'}, priority: 'minor', kind: 'bug'}`.", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: true, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 6, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.createIssue "my_bitbucket" "my-team" "my-repo" {title: "Broken", priority: "major"}', | ||
| }, | ||
| listWebhooks: { | ||
| title: "List webhooks", | ||
| summary: "Configured webhooks on a repo", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/hooks`.", | ||
| group: "misc", | ||
| action: "query", | ||
| icon: "link", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "webhook"], | ||
| parameters: [credentialParam, workspaceParam, repoParam], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listWebhooks "my_bitbucket" "my-team" "my-repo"', | ||
| }, | ||
| listDeployments: { | ||
| title: "List deployments", | ||
| summary: "Deployment history on a repo", | ||
| description: "Calls `GET /repositories/{workspace}/{repoSlug}/deployments`.", | ||
| group: "misc", | ||
| action: "query", | ||
| icon: "rocket", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "deployment"], | ||
| parameters: [credentialParam, workspaceParam, repoParam], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.listDeployments "my_bitbucket" "my-team" "my-repo"', | ||
| }, | ||
| getUser: { | ||
| title: "Get user", | ||
| summary: "Authenticated user or a username", | ||
| description: "Calls `GET /user` (no username) or `GET /users/{username}`. Returns basic profile info.", | ||
| group: "users", | ||
| action: "read", | ||
| icon: "user", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["bitbucket", "user"], | ||
| parameters: [ | ||
| credentialParam, | ||
| { | ||
| name: "username", | ||
| title: "Username", | ||
| dataType: "string", | ||
| description: "Username (optional — empty for the authenticated user).", | ||
| formInputType: "text", | ||
| required: false, | ||
| allowExpression: true, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'bitbucket.getUser "my_bitbucket" ""', | ||
| }, | ||
| }; | ||
| export const BitbucketModuleMetadata = { | ||
| slug: "bitbucket", | ||
| title: "Bitbucket", | ||
| summary: "Bitbucket Cloud — repos, PRs, pipelines, branches, commits, issues, deployments.", | ||
| description: "Bitbucket Cloud REST API v2. Authenticates as a user via App Password (Basic) or OAuth. Every call takes the workspace slug explicitly — the credential's `workspace` is used as a fallback when the arg is empty.\n\nReturns parsed JSON responses as-is. Errors are structured envelopes — never thrown.", | ||
| category: "devops", | ||
| icon: "icon.svg", | ||
| color: "#2684FF", | ||
| version: "0.2.0", | ||
| docsUrl: "https://docs.robinpath.com/modules/bitbucket", | ||
| status: "stable", | ||
| requires: [], | ||
| minNodeVersion: "18.0.0", | ||
| credentialsType: CREDENTIAL_TYPE, | ||
| operationGroups: { | ||
| workspaces: { title: "Workspaces", description: "Teams / organizations.", order: 1 }, | ||
| repositories: { title: "Repositories", description: "Git repos.", order: 2 }, | ||
| branches: { title: "Branches", description: "Git branches.", order: 3 }, | ||
| commits: { title: "Commits", description: "Commit history.", order: 4 }, | ||
| pull_requests: { title: "Pull requests", description: "Code review + merges.", order: 5 }, | ||
| pipelines: { title: "Pipelines", description: "Bitbucket Pipelines CI.", order: 6 }, | ||
| issues: { title: "Issues", description: "Issue tracker.", order: 7 }, | ||
| users: { title: "Users", description: "Profile lookups.", order: 8 }, | ||
| misc: { title: "Misc", description: "Webhooks, deployments.", order: 9 }, | ||
| }, | ||
| methods: Object.keys(BitbucketFunctions), | ||
| }; | ||
| //# sourceMappingURL=bitbucket.js.map |
| {"version":3,"file":"bitbucket.js","sourceRoot":"","sources":["../src/bitbucket.ts"],"names":[],"mappings":"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"} |
| import type { ModuleAdapter } from "@robinpath/core"; | ||
| declare const BitbucketModule: ModuleAdapter; | ||
| export default BitbucketModule; | ||
| export { BitbucketModule }; | ||
| export { BitbucketFunctions, BitbucketFunctionMetadata, BitbucketModuleMetadata, BitbucketCredentialTypes, configureBitbucket, } from "./bitbucket.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AASrD,QAAA,MAAM,eAAe,EAAE,aAQtB,CAAC;AAEF,eAAe,eAAe,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"} |
| import { BitbucketFunctions, BitbucketFunctionMetadata, BitbucketModuleMetadata, BitbucketCredentialTypes, configureBitbucket, } from "./bitbucket.js"; | ||
| const BitbucketModule = { | ||
| name: "bitbucket", | ||
| functions: BitbucketFunctions, | ||
| functionMetadata: BitbucketFunctionMetadata, | ||
| moduleMetadata: BitbucketModuleMetadata, | ||
| credentialTypes: BitbucketCredentialTypes, | ||
| configure: configureBitbucket, | ||
| global: false, | ||
| }; | ||
| export default BitbucketModule; | ||
| export { BitbucketModule }; | ||
| export { BitbucketFunctions, BitbucketFunctionMetadata, BitbucketModuleMetadata, BitbucketCredentialTypes, configureBitbucket, } from "./bitbucket.js"; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,MAAM,eAAe,GAAkB;IACrC,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,kBAAkB;IAC7B,gBAAgB,EAAE,yBAAyB;IAC3C,cAAc,EAAE,uBAAuB;IACvC,eAAe,EAAE,wBAAwB;IACzC,SAAS,EAAE,kBAAkB;IAC7B,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,eAAe,eAAe,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"} |
+21
-9
| { | ||
| "name": "@robinpath/bitbucket", | ||
| "version": "0.1.2", | ||
| "version": "0.3.0", | ||
| "publishConfig": { | ||
@@ -23,12 +23,17 @@ "access": "public" | ||
| "peerDependencies": { | ||
| "@robinpath/core": ">=0.20.0" | ||
| "@robinpath/core": ">=0.40.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@robinpath/core": "^0.30.1", | ||
| "@robinpath/core": "^0.40.0", | ||
| "typescript": "^5.6.0" | ||
| }, | ||
| "description": "Bitbucket module for RobinPath.", | ||
| "description": "Bitbucket Cloud REST API v2 — workspaces, repositories, branches, commits, pull requests, pipelines, issues, webhooks, deployments. Uses the encrypted credential vault for App Password (Basic) or OAuth tokens.", | ||
| "keywords": [ | ||
| "bitbucket", | ||
| "devops" | ||
| "devops", | ||
| "git", | ||
| "pipelines", | ||
| "pull-request", | ||
| "ci", | ||
| "cd" | ||
| ], | ||
@@ -38,7 +43,14 @@ "license": "MIT", | ||
| "category": "devops", | ||
| "type": "integration", | ||
| "auth": "api-key", | ||
| "functionCount": 25, | ||
| "baseUrl": "https://api.bitbucket.org" | ||
| "type": "module", | ||
| "auth": "credential-vault", | ||
| "credentialType": "bitbucket", | ||
| "functionCount": 24, | ||
| "baseUrl": "https://api.bitbucket.org/2.0", | ||
| "language": "nodejs", | ||
| "platforms": [ | ||
| "cloud", | ||
| "cli", | ||
| "desktop" | ||
| ] | ||
| } | ||
| } |
+1
-1
@@ -22,3 +22,3 @@ # @robinpath/bitbucket | ||
| ```bash | ||
| npm install @robinpath/bitbucket | ||
| robinpath add @robinpath/bitbucket | ||
| ``` | ||
@@ -25,0 +25,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
103735
2366.94%10
400%1439
Infinity%2
100%