@mcp-use/cli 3.6.5-canary.1 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +6 -10099
  4. package/package.json +11 -39
  5. package/LICENSE +0 -22
  6. package/README.md +0 -570
  7. package/dist/commands/auth.d.ts +0 -34
  8. package/dist/commands/auth.d.ts.map +0 -1
  9. package/dist/commands/client-auth.d.ts +0 -4
  10. package/dist/commands/client-auth.d.ts.map +0 -1
  11. package/dist/commands/client.d.ts +0 -29
  12. package/dist/commands/client.d.ts.map +0 -1
  13. package/dist/commands/deploy.d.ts +0 -83
  14. package/dist/commands/deploy.d.ts.map +0 -1
  15. package/dist/commands/deployments.d.ts +0 -3
  16. package/dist/commands/deployments.d.ts.map +0 -1
  17. package/dist/commands/env.d.ts +0 -3
  18. package/dist/commands/env.d.ts.map +0 -1
  19. package/dist/commands/org.d.ts +0 -13
  20. package/dist/commands/org.d.ts.map +0 -1
  21. package/dist/commands/screenshot.d.ts +0 -99
  22. package/dist/commands/screenshot.d.ts.map +0 -1
  23. package/dist/commands/servers.d.ts +0 -3
  24. package/dist/commands/servers.d.ts.map +0 -1
  25. package/dist/commands/skills.d.ts +0 -3
  26. package/dist/commands/skills.d.ts.map +0 -1
  27. package/dist/index.cjs +0 -10118
  28. package/dist/index.cjs.map +0 -1
  29. package/dist/index.js.map +0 -1
  30. package/dist/shims/next-shims-cjs.cjs +0 -42
  31. package/dist/shims/next-shims-loader.mjs +0 -119
  32. package/dist/shims/next-shims-noop.cjs +0 -146
  33. package/dist/shims/next-shims-register.mjs +0 -14
  34. package/dist/shims/next-shims-registry.json +0 -11
  35. package/dist/utils/api.d.ts +0 -329
  36. package/dist/utils/api.d.ts.map +0 -1
  37. package/dist/utils/cdp-screenshot.d.ts +0 -68
  38. package/dist/utils/cdp-screenshot.d.ts.map +0 -1
  39. package/dist/utils/chrome-path.d.ts +0 -14
  40. package/dist/utils/chrome-path.d.ts.map +0 -1
  41. package/dist/utils/cloud-urls.d.ts +0 -13
  42. package/dist/utils/cloud-urls.d.ts.map +0 -1
  43. package/dist/utils/config.d.ts +0 -54
  44. package/dist/utils/config.d.ts.map +0 -1
  45. package/dist/utils/errors.d.ts +0 -6
  46. package/dist/utils/errors.d.ts.map +0 -1
  47. package/dist/utils/format.d.ts +0 -94
  48. package/dist/utils/format.d.ts.map +0 -1
  49. package/dist/utils/git.d.ts +0 -56
  50. package/dist/utils/git.d.ts.map +0 -1
  51. package/dist/utils/next-shims.d.ts +0 -77
  52. package/dist/utils/next-shims.d.ts.map +0 -1
  53. package/dist/utils/oauth.d.ts +0 -22
  54. package/dist/utils/oauth.d.ts.map +0 -1
  55. package/dist/utils/parse-args.d.ts +0 -27
  56. package/dist/utils/parse-args.d.ts.map +0 -1
  57. package/dist/utils/project-link.d.ts +0 -11
  58. package/dist/utils/project-link.d.ts.map +0 -1
  59. package/dist/utils/session-storage.d.ts +0 -46
  60. package/dist/utils/session-storage.d.ts.map +0 -1
  61. package/dist/utils/session.d.ts +0 -39
  62. package/dist/utils/session.d.ts.map +0 -1
  63. package/dist/utils/tarball.d.ts +0 -13
  64. package/dist/utils/tarball.d.ts.map +0 -1
  65. package/dist/utils/update-check.d.ts +0 -6
  66. package/dist/utils/update-check.d.ts.map +0 -1
  67. package/dist/utils/widget-paths.d.ts +0 -2
  68. package/dist/utils/widget-paths.d.ts.map +0 -1
@@ -1,42 +0,0 @@
1
- /**
2
- * CommonJS-side Next.js runtime-module shim.
3
- *
4
- * Node's ESM loader hooks (registered via `module.register()`) don't
5
- * intercept CommonJS `require()` calls made by tsx's CJS transformer. tsx
6
- * compiles TypeScript to CJS by default, so a transitive `import 'server-only'`
7
- * inside a user tool becomes `require('server-only')` at runtime — which
8
- * ends up loading the real module and throwing.
9
- *
10
- * This file patches `Module._resolveFilename` at require-time so that any
11
- * CJS `require()` for one of the shimmed specifiers resolves to a sibling
12
- * no-op module instead.
13
- *
14
- * Loaded via `node -r <path>` (or `NODE_OPTIONS=-r <path>`) before the user
15
- * entry is evaluated. Paired with `next-shims-register.mjs` on the ESM side
16
- * for belt-and-braces coverage.
17
- */
18
-
19
- const Module = require("node:module");
20
- const path = require("node:path");
21
-
22
- // Absolute path to the no-op CJS module that satisfies every shimmed specifier.
23
- const noopPath = path.join(__dirname, "next-shims-noop.cjs");
24
-
25
- // Single source of truth — see next-shims-registry.json. The loader.mjs reads
26
- // the same file so ESM and CJS interception stay in lockstep.
27
- const { shimmedModules } = require("./next-shims-registry.json");
28
- const SHIMMED = new Set(shimmedModules);
29
-
30
- const originalResolveFilename = Module._resolveFilename;
31
-
32
- Module._resolveFilename = function patchedResolveFilename(
33
- request,
34
- parent,
35
- isMain,
36
- options
37
- ) {
38
- if (SHIMMED.has(request)) {
39
- return noopPath;
40
- }
41
- return originalResolveFilename.call(this, request, parent, isMain, options);
42
- };
@@ -1,119 +0,0 @@
1
- /**
2
- * Node.js ESM loader hook that resolves Next.js server-runtime modules to
3
- * no-op implementations when the MCP server runs outside of Next.js.
4
- *
5
- * Registered by `next-shims-register.mjs` when the CLI detects `next` in the
6
- * user's package.json. See cli/src/utils/next-shims.ts for the host wiring.
7
- *
8
- * The mapping covers modules that exist inside a Next.js runtime but have
9
- * no meaningful behavior outside of it. Each shim is a data: URL so the
10
- * loader has zero on-disk footprint.
11
- *
12
- * The list of specifiers we intercept lives in `next-shims-registry.json`
13
- * so this file and `next-shims-cjs.cjs` can't drift out of sync. The
14
- * per-module stub bodies (below) still live here because each one has its
15
- * own export surface.
16
- */
17
-
18
- import registry from "./next-shims-registry.json" with { type: "json" };
19
-
20
- const SHIMS = new Map([
21
- // `import "server-only"` — throws hard at import time in the real package.
22
- // In the MCP process there is no client/server boundary to enforce.
23
- ["server-only", "data:text/javascript,export{};"],
24
-
25
- // `import "client-only"` — symmetric case; also throws in its real form.
26
- ["client-only", "data:text/javascript,export{};"],
27
-
28
- // `import { revalidatePath, revalidateTag, unstable_cache } from "next/cache"`
29
- // revalidate* are side-effect functions; unstable_cache wraps a function
30
- // and returns a memoized version — here we return the original untouched.
31
- [
32
- "next/cache",
33
- "data:text/javascript," +
34
- encodeURIComponent(
35
- "export function revalidatePath(){}" +
36
- "export function revalidateTag(){}" +
37
- "export function unstable_cache(fn){return fn}" +
38
- "export function unstable_noStore(){}" +
39
- "export const unstable_cacheLife = ()=>{};" +
40
- "export const unstable_cacheTag = ()=>{};"
41
- ),
42
- ],
43
-
44
- // `import { headers, cookies, draftMode } from "next/headers"`
45
- // The real implementation requires an incoming RSC request context. For the
46
- // MCP server we return inert stand-ins — most tools only read metadata and
47
- // default to empty values when they're unavailable.
48
- [
49
- "next/headers",
50
- "data:text/javascript," +
51
- encodeURIComponent(
52
- "export function headers(){return new Headers();}" +
53
- "export function cookies(){return{get(){return undefined},getAll(){return []},has(){return false},set(){},delete(){}};}" +
54
- "export function draftMode(){return{isEnabled:false,enable(){},disable(){}};}"
55
- ),
56
- ],
57
-
58
- // `import { redirect, notFound } from "next/navigation"` — server-side
59
- // helpers. redirect/notFound throw special errors in Next; we keep their
60
- // throw semantics so callers fail loudly instead of silently continuing.
61
- [
62
- "next/navigation",
63
- "data:text/javascript," +
64
- encodeURIComponent(
65
- "export function redirect(u){const e=new Error('redirect('+u+') called outside Next.js');e.digest='NEXT_REDIRECT;'+u;throw e;}" +
66
- "export function permanentRedirect(u){return redirect(u);}" +
67
- "export function notFound(){const e=new Error('notFound() called outside Next.js');e.digest='NEXT_NOT_FOUND';throw e;}" +
68
- "export const RedirectType={push:'push',replace:'replace'};"
69
- ),
70
- ],
71
-
72
- // `import { NextResponse, NextRequest } from "next/server"` — thin wrappers
73
- // around Response/Request. The MCP server rarely needs them, but importing
74
- // the real module pulls in a lot of Next internals. Provide minimal stubs.
75
- [
76
- "next/server",
77
- "data:text/javascript," +
78
- encodeURIComponent(
79
- "export class NextResponse extends Response{static json(data,init){return new Response(JSON.stringify(data),{...init,headers:{...(init&&init.headers),'content-type':'application/json'}});}static redirect(url,status){return new Response(null,{status:status||302,headers:{location:String(url)}});}static next(){return new Response(null);}static rewrite(){return new Response(null);}}" +
80
- "export class NextRequest extends Request{constructor(input,init){super(input,init);this.nextUrl=new URL(typeof input==='string'?input:input.url);this.cookies={get(){return undefined},getAll(){return []},has(){return false},set(){},delete(){}};}}" +
81
- "export const userAgent=()=>({ua:'',browser:{},device:{},engine:{},os:{},cpu:{},isBot:false});"
82
- ),
83
- ],
84
- ]);
85
-
86
- // Sanity check: every entry in the registry must have a stub body in SHIMS,
87
- // and every stub body must correspond to a registered specifier. Drift here
88
- // means ESM imports succeed while CJS requires fall through (or vice versa),
89
- // which is the exact invariant the registry exists to prevent.
90
- {
91
- const registered = new Set(registry.shimmedModules);
92
- for (const key of SHIMS.keys()) {
93
- if (!registered.has(key)) {
94
- throw new Error(
95
- `next-shims-loader: "${key}" has a stub body but is not in next-shims-registry.json`
96
- );
97
- }
98
- }
99
- for (const key of registered) {
100
- if (!SHIMS.has(key)) {
101
- throw new Error(
102
- `next-shims-loader: "${key}" is in next-shims-registry.json but has no stub body in next-shims-loader.mjs`
103
- );
104
- }
105
- }
106
- }
107
-
108
- /**
109
- * @param {string} specifier
110
- * @param {{conditions: string[], importAssertions: object, parentURL?: string}} context
111
- * @param {(specifier: string, context: object) => Promise<{url: string, format?: string, shortCircuit?: boolean}>} nextResolve
112
- */
113
- export async function resolve(specifier, context, nextResolve) {
114
- const shim = SHIMS.get(specifier);
115
- if (shim) {
116
- return { url: shim, shortCircuit: true, format: "module" };
117
- }
118
- return nextResolve(specifier, context);
119
- }
@@ -1,146 +0,0 @@
1
- /**
2
- * No-op CommonJS module used by the CJS shim.
3
- *
4
- * `Module._resolveFilename` in `next-shims-cjs.cjs` redirects every shimmed
5
- * specifier (`server-only`, `next/cache`, etc.) to this file. A single
6
- * flexible module satisfies all of them because each caller only accesses
7
- * the exports relevant to its specifier; anything it doesn't touch is
8
- * harmless.
9
- *
10
- * Keep exports aligned with `next-shims-loader.mjs`.
11
- */
12
-
13
- "use strict";
14
-
15
- // --- next/cache ------------------------------------------------------------
16
- function revalidatePath() {}
17
- function revalidateTag() {}
18
- function unstable_cache(fn) {
19
- return fn;
20
- }
21
- function unstable_noStore() {}
22
- const unstable_cacheLife = () => {};
23
- const unstable_cacheTag = () => {};
24
-
25
- // --- next/headers ----------------------------------------------------------
26
- function headers() {
27
- return new Headers();
28
- }
29
- function cookies() {
30
- return {
31
- get() {
32
- return undefined;
33
- },
34
- getAll() {
35
- return [];
36
- },
37
- has() {
38
- return false;
39
- },
40
- set() {},
41
- delete() {},
42
- };
43
- }
44
- function draftMode() {
45
- return {
46
- isEnabled: false,
47
- enable() {},
48
- disable() {},
49
- };
50
- }
51
-
52
- // --- next/navigation -------------------------------------------------------
53
- function redirect(url) {
54
- const err = new Error(`redirect(${url}) called outside Next.js`);
55
- err.digest = "NEXT_REDIRECT;" + url;
56
- throw err;
57
- }
58
- function permanentRedirect(url) {
59
- return redirect(url);
60
- }
61
- function notFound() {
62
- const err = new Error("notFound() called outside Next.js");
63
- err.digest = "NEXT_NOT_FOUND";
64
- throw err;
65
- }
66
- const RedirectType = { push: "push", replace: "replace" };
67
-
68
- // --- next/server -----------------------------------------------------------
69
- class NextResponse extends Response {
70
- static json(data, init) {
71
- const headers = { ...((init && init.headers) || {}) };
72
- headers["content-type"] = "application/json";
73
- return new Response(JSON.stringify(data), { ...init, headers });
74
- }
75
- static redirect(url, status) {
76
- return new Response(null, {
77
- status: status || 302,
78
- headers: { location: String(url) },
79
- });
80
- }
81
- static next() {
82
- return new Response(null);
83
- }
84
- static rewrite() {
85
- return new Response(null);
86
- }
87
- }
88
-
89
- class NextRequest extends Request {
90
- constructor(input, init) {
91
- super(input, init);
92
- this.nextUrl = new URL(typeof input === "string" ? input : input.url);
93
- this.cookies = {
94
- get() {
95
- return undefined;
96
- },
97
- getAll() {
98
- return [];
99
- },
100
- has() {
101
- return false;
102
- },
103
- set() {},
104
- delete() {},
105
- };
106
- }
107
- }
108
-
109
- function userAgent() {
110
- return {
111
- ua: "",
112
- browser: {},
113
- device: {},
114
- engine: {},
115
- os: {},
116
- cpu: {},
117
- isBot: false,
118
- };
119
- }
120
-
121
- // --- export surface --------------------------------------------------------
122
- // `server-only` / `client-only` exports nothing; the import itself is the
123
- // side effect. Everything else is exported below; callers only read the
124
- // names their specifier exposes.
125
- module.exports = {
126
- // next/cache
127
- revalidatePath,
128
- revalidateTag,
129
- unstable_cache,
130
- unstable_noStore,
131
- unstable_cacheLife,
132
- unstable_cacheTag,
133
- // next/headers
134
- headers,
135
- cookies,
136
- draftMode,
137
- // next/navigation
138
- redirect,
139
- permanentRedirect,
140
- notFound,
141
- RedirectType,
142
- // next/server
143
- NextResponse,
144
- NextRequest,
145
- userAgent,
146
- };
@@ -1,14 +0,0 @@
1
- /**
2
- * Registers the Next.js server-runtime shim loader.
3
- *
4
- * Passed as `node --import=<this-file>` by the CLI when spawning tsx in
5
- * --no-hmr mode, so the shim loader is active before tsx evaluates the
6
- * user's MCP server entry.
7
- *
8
- * The HMR path calls `module.register()` directly in-process; see
9
- * cli/src/utils/next-shims.ts.
10
- */
11
-
12
- import { register } from "node:module";
13
-
14
- register("./next-shims-loader.mjs", import.meta.url);
@@ -1,11 +0,0 @@
1
- {
2
- "$comment": "Single source of truth for the Next.js server-runtime modules we shim in the MCP server context (and reject in widget builds). Loaded by next-shims-cjs.cjs (CommonJS require) and next-shims-loader.mjs (ESM import assertions). When adding a new specifier, also add its stub to next-shims-noop.cjs and its data-URL stub to next-shims-loader.mjs.",
3
- "shimmedModules": [
4
- "server-only",
5
- "client-only",
6
- "next/cache",
7
- "next/headers",
8
- "next/navigation",
9
- "next/server"
10
- ]
11
- }
@@ -1,329 +0,0 @@
1
- export declare class GitHubAuthRequiredError extends Error {
2
- readonly authorizeUrl: string;
3
- constructor(message: string, authorizeUrl: string);
4
- }
5
- /** Thrown when the API returns 401 (invalid or expired API key for this backend). */
6
- export declare class ApiUnauthorizedError extends Error {
7
- readonly status: 401;
8
- constructor(message?: string);
9
- }
10
- export interface OrgInfo {
11
- id: string;
12
- name: string;
13
- slug: string | null;
14
- role: string;
15
- }
16
- export interface AuthTestResponse {
17
- message: string;
18
- user_id: string;
19
- email: string;
20
- orgs: OrgInfo[];
21
- default_org_id: string | null;
22
- }
23
- interface CreateServerBody {
24
- type: "github";
25
- organizationId: string;
26
- installationId: string;
27
- name: string;
28
- repoFullName: string;
29
- branch?: string;
30
- rootDir?: string;
31
- port?: number;
32
- buildCommand?: string;
33
- startCommand?: string;
34
- /** Path to a non-default Dockerfile, relative to rootDir (or repo root). */
35
- dockerfilePath?: string;
36
- env?: Record<string, string>;
37
- description?: string;
38
- tags?: string[];
39
- region?: string;
40
- /** Glob patterns; only matching repo changes trigger auto-deploy. Empty = all changes. */
41
- watchPaths?: string[];
42
- /** When true, GitHub auto-deploy waits for other check runs to succeed. */
43
- waitForCi?: boolean;
44
- }
45
- interface CreateServerResponse {
46
- server: {
47
- id: string;
48
- slug: string | null;
49
- };
50
- deploymentId: string | null;
51
- }
52
- /**
53
- * Body for `PATCH /servers/:id`. Field names mirror the backend
54
- * `UpdateServerBody` exactly. `productionBranch` controls which branch
55
- * triggers production deploys; build/start command overrides live nested
56
- * under `config` (the backend merges `config` shallowly with the existing
57
- * value, so only the provided keys change).
58
- */
59
- export interface UpdateServerBody {
60
- name?: string;
61
- description?: string;
62
- productionBranch?: string;
63
- tags?: string[];
64
- /** Glob patterns; only matching repo changes trigger auto-deploy. Empty array = all changes. */
65
- watchPaths?: string[];
66
- /** Branch globs for webhook auto-deploys; empty array allows all branches. */
67
- deployBranchPatterns?: string[];
68
- /** When true, GitHub auto-deploy waits for other check runs to succeed. */
69
- waitForCi?: boolean;
70
- config?: Record<string, unknown>;
71
- }
72
- /** Connected GitHub repository (subset of OpenAPI server payload). */
73
- interface CloudServerConnectedRepository {
74
- id: string;
75
- /** Null for platform-managed repos — the API never exposes the managed repo path. */
76
- repoFullName: string | null;
77
- productionBranch: string;
78
- /** Glob patterns limiting which repo changes trigger auto-deploy. Empty = all changes. */
79
- watchPaths?: string[];
80
- /** Branch globs for webhook auto-deploys. Empty = all branches. */
81
- deployBranchPatterns?: string[];
82
- /** When true, GitHub auto-deploy waits for other check runs to succeed. */
83
- waitForCi?: boolean;
84
- isActive: boolean;
85
- /** True when deployed via the platform-managed org (no user GitHub). */
86
- isManaged?: boolean;
87
- userId: string;
88
- githubInstallationId: string;
89
- createdAt: string;
90
- updatedAt: string;
91
- }
92
- /** Server record from `GET /servers` or `GET /servers/{id}` (fields used by CLI). */
93
- interface CloudServer {
94
- id: string;
95
- slug: string | null;
96
- organizationId: string;
97
- userId: string | null;
98
- connectedRepositoryId: string;
99
- connectedRepository?: CloudServerConnectedRepository;
100
- name: string | null;
101
- description: string | null;
102
- tags?: string[];
103
- config?: unknown;
104
- createdAt: string;
105
- updatedAt: string;
106
- displayPreferences?: {
107
- icon?: string;
108
- color?: string;
109
- };
110
- status: string;
111
- latestDeploymentStatus: string | null;
112
- activeDeploymentId: string | null;
113
- previousDeploymentId: string | null;
114
- region: string;
115
- providerRegion?: string;
116
- runProvider?: string;
117
- buildProvider?: string;
118
- /** Public MCP endpoint when provisioned (preferred over synthesizing from id/slug). */
119
- mcpUrl?: string | null;
120
- domains?: unknown[];
121
- deployments?: unknown[];
122
- _count?: {
123
- deployments?: number;
124
- };
125
- }
126
- interface CreateDeploymentInput {
127
- serverId: string;
128
- name?: string;
129
- branch?: string;
130
- commitSha?: string;
131
- commitMessage?: string;
132
- trigger?: "manual" | "webhook" | "redeploy" | "rollback";
133
- prNumber?: number;
134
- }
135
- interface CreateDeploymentResponse {
136
- id: string;
137
- }
138
- export interface Deployment {
139
- id: string;
140
- userId: string;
141
- name: string;
142
- source: unknown;
143
- status: "pending" | "building" | "running" | "stopped" | "failed";
144
- port: number | null;
145
- healthCheckPath: string | null;
146
- provider: string;
147
- appName: string;
148
- error: string | null;
149
- gitCommitSha: string | null;
150
- gitBranch: string | null;
151
- gitCommitMessage: string | null;
152
- isProductionDeployment: boolean | null;
153
- deploymentTrigger: string | null;
154
- serverId: string | null;
155
- createdAt: string;
156
- updatedAt: string;
157
- buildStartedAt: string | null;
158
- buildCompletedAt: string | null;
159
- archivedAt: string | null;
160
- mcpUrl?: string;
161
- }
162
- interface BuildLogsResponse {
163
- logs: string;
164
- offset: number;
165
- totalLength: number;
166
- status: string;
167
- }
168
- interface PaginatedResponse<T> {
169
- items: T[];
170
- total: number;
171
- limit: number;
172
- skip: number;
173
- }
174
- interface PaginationParams {
175
- limit?: number;
176
- skip?: number;
177
- }
178
- interface SortablePaginationParams extends PaginationParams {
179
- sort?: string;
180
- }
181
- interface GitHubInstallation {
182
- id: string;
183
- installation_id: string;
184
- account_login: string;
185
- account_type: string;
186
- }
187
- export interface GitHubConnectionStatus {
188
- is_connected: boolean;
189
- installations?: GitHubInstallation[];
190
- }
191
- export type EnvEnvironment = "production" | "preview" | "development";
192
- export interface EnvVariable {
193
- id: string;
194
- serverId: string;
195
- key: string;
196
- /** `null` for write-only `sensitive` rows — the API withholds the stored value. */
197
- value: string | null;
198
- environments: EnvEnvironment[];
199
- /** Branch pin: null/omitted = production scope; a branch name = that branch's preview. */
200
- branch?: string | null;
201
- sensitive: boolean;
202
- createdAt: string;
203
- updatedAt: string;
204
- }
205
- interface CreateEnvVariableBody {
206
- key: string;
207
- value: string;
208
- environments?: EnvEnvironment[];
209
- /** Branch pin (body field). Null/omitted = production scope. */
210
- branch?: string | null;
211
- sensitive?: boolean;
212
- }
213
- interface UpdateEnvVariableBody {
214
- value?: string;
215
- environments?: EnvEnvironment[];
216
- /** Branch pin (body field). Null/omitted = production scope. */
217
- branch?: string | null;
218
- sensitive?: boolean;
219
- }
220
- export declare class McpUseAPI {
221
- private baseUrl;
222
- private apiKey;
223
- private orgId;
224
- constructor(baseUrl?: string, apiKey?: string, orgId?: string);
225
- static create(): Promise<McpUseAPI>;
226
- setOrgId(orgId: string): void;
227
- private request;
228
- /**
229
- * Create a persistent API key using a Better Auth access token.
230
- */
231
- createApiKeyWithAccessToken(accessToken: string, name?: string): Promise<{
232
- key: string;
233
- }>;
234
- testAuth(): Promise<AuthTestResponse>;
235
- setDefaultOrg(orgId: string): Promise<void>;
236
- resolveOrganizationId(): Promise<string>;
237
- createServer(body: CreateServerBody): Promise<CreateServerResponse>;
238
- /** Multipart helper: POST/PUT a tarball + fields without the JSON Content-Type. */
239
- private uploadMultipart;
240
- /**
241
- * Create a server from a source tarball deployed into the platform-managed
242
- * GitHub org (no user GitHub connection required).
243
- */
244
- createServerFromManagedUpload(input: {
245
- organizationId: string;
246
- name: string;
247
- repoName: string;
248
- tarball: Buffer;
249
- branch?: string;
250
- commitMessage?: string;
251
- port?: number;
252
- env?: Record<string, string>;
253
- }): Promise<CreateServerResponse>;
254
- /** Push a new source tarball as a commit on an existing server's repo. */
255
- pushSourceToServer(serverId: string, input: {
256
- tarball: Buffer;
257
- branch?: string;
258
- commitMessage?: string;
259
- }): Promise<{
260
- commitSha: string;
261
- repoFullName: string | null;
262
- branch: string;
263
- }>;
264
- listServers(params?: {
265
- organizationId?: string;
266
- limit?: number;
267
- skip?: number;
268
- sort?: string;
269
- }): Promise<PaginatedResponse<CloudServer>>;
270
- getServer(idOrSlug: string): Promise<CloudServer>;
271
- updateServer(idOrSlug: string, body: UpdateServerBody): Promise<CloudServer>;
272
- deleteServer(id: string): Promise<void>;
273
- listEnvVariables(serverId: string, opts?: {
274
- branch?: string;
275
- }): Promise<EnvVariable[]>;
276
- createEnvVariable(serverId: string, body: CreateEnvVariableBody): Promise<EnvVariable>;
277
- updateEnvVariable(serverId: string, varId: string, body: UpdateEnvVariableBody): Promise<EnvVariable>;
278
- deleteEnvVariable(serverId: string, varId: string): Promise<void>;
279
- createDeployment(input: CreateDeploymentInput): Promise<CreateDeploymentResponse>;
280
- getDeployment(deploymentId: string): Promise<Deployment>;
281
- listDeployments(params?: SortablePaginationParams): Promise<PaginatedResponse<Deployment>>;
282
- deleteDeployment(deploymentId: string): Promise<void>;
283
- stopDeployment(deploymentId: string): Promise<void>;
284
- getDeploymentLogs(deploymentId: string, lines?: number): Promise<string>;
285
- getDeploymentBuildLogs(deploymentId: string, offset?: number): Promise<BuildLogsResponse>;
286
- getGitHubConnectionStatus(): Promise<GitHubConnectionStatus>;
287
- /**
288
- * Returns true if the GitHub App can access `${owner}/${repo}` via any of the
289
- * organization's installations.
290
- *
291
- * An organization can have multiple GitHub installations (e.g. a personal
292
- * account and one or more GitHub orgs), so we check across all of them.
293
- *
294
- * Each check is a single authoritative backend call (`repos.get` with the
295
- * installation token) rather than listing repos. The old listing approach
296
- * only returned the first page — so a repo on a later page was wrongly
297
- * reported inaccessible — and fully paginating it hung on very large orgs.
298
- * We try the installation whose account matches the repo owner first to
299
- * minimize GitHub calls.
300
- */
301
- checkGitHubRepoAccess(owner: string, repo: string): Promise<boolean>;
302
- private installationCanAccessRepo;
303
- getGitHubAppName(): Promise<string>;
304
- /**
305
- * Returns the GitHub numeric installation ID (not the DB UUID) for the org.
306
- * Used for building direct installation settings URLs.
307
- */
308
- getGitHubInstallationId(): Promise<string | null>;
309
- createGitHubRepo(opts: {
310
- installationId: string;
311
- name: string;
312
- private?: boolean;
313
- org?: string;
314
- }): Promise<{
315
- fullName: string;
316
- cloneUrl: string;
317
- htmlUrl: string;
318
- }>;
319
- getGitHubOAuthUrl(): Promise<{
320
- url: string;
321
- state: string;
322
- }>;
323
- exchangeGitHubOAuthToken(code: string): Promise<{
324
- success: boolean;
325
- installationsUpdated: number;
326
- }>;
327
- }
328
- export {};
329
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}