@extension.dev/mcp 10.10.7 → 10.10.9
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +119 -0
- package/README.md +4 -2
- package/dist/module.js +1604 -189
- package/dist/src/lib/credentials.d.ts +1 -0
- package/dist/src/lib/device-flow.d.ts +4 -0
- package/dist/src/lib/login-flow.d.ts +7 -0
- package/dist/src/lib/project-batch.d.ts +28 -0
- package/dist/src/lib/project-create-batch.d.ts +42 -0
- package/dist/src/lib/project-create-body.d.ts +14 -0
- package/dist/src/lib/rdp.d.ts +28 -0
- package/dist/src/lib/registry.d.ts +1 -0
- package/dist/src/tools/auth.d.ts +8 -0
- package/dist/src/tools/dom-snapshot.d.ts +1 -0
- package/dist/src/tools/login.d.ts +5 -0
- package/dist/src/tools/project-create.d.ts +10 -2
- package/package.json +2 -2
- package/server.json +2 -2
|
@@ -28,6 +28,7 @@ export declare function listCredentials(): Array<StoredCredentials & {
|
|
|
28
28
|
active: boolean;
|
|
29
29
|
}>;
|
|
30
30
|
export declare function writeCredentials(creds: StoredCredentials): string;
|
|
31
|
+
export declare function writeCredentialBatch(batch: StoredCredentials[]): string | null;
|
|
31
32
|
export declare function clearCredentials(selector?: CredentialSelector): {
|
|
32
33
|
cleared: boolean;
|
|
33
34
|
path: string;
|
|
@@ -13,6 +13,7 @@ export declare function requestDeviceCode(args: {
|
|
|
13
13
|
apiBase: string;
|
|
14
14
|
path: string;
|
|
15
15
|
project?: string;
|
|
16
|
+
projects?: string[];
|
|
16
17
|
workspace?: string;
|
|
17
18
|
clientName?: string;
|
|
18
19
|
intent?: DeviceIntent;
|
|
@@ -33,11 +34,14 @@ export type DeviceGrantPollResult = {
|
|
|
33
34
|
ok: false;
|
|
34
35
|
reason: "pending" | "denied" | "expired" | "error";
|
|
35
36
|
message?: string;
|
|
37
|
+
code?: string;
|
|
38
|
+
body?: Record<string, unknown>;
|
|
36
39
|
};
|
|
37
40
|
export declare function pollDeviceGrant(args: {
|
|
38
41
|
apiBase: string;
|
|
39
42
|
path: string;
|
|
40
43
|
project?: string;
|
|
44
|
+
projects?: string[];
|
|
41
45
|
workspace?: string;
|
|
42
46
|
deviceCode: string;
|
|
43
47
|
interval: number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type StoredCredentials } from "./credentials";
|
|
2
|
+
import { type BatchCapability } from "./project-batch";
|
|
2
3
|
export declare function tokenTtlNote(workspaceSlug?: string, projectSlug?: string): string;
|
|
3
4
|
type FetchImpl = typeof fetch;
|
|
4
5
|
export declare function resolveApiBase(api?: string): string;
|
|
@@ -13,6 +14,7 @@ export interface LoginConfig {
|
|
|
13
14
|
deviceCodeUrl: string;
|
|
14
15
|
deviceTokenUrl: string;
|
|
15
16
|
verificationUri: string;
|
|
17
|
+
batch: BatchCapability | null;
|
|
16
18
|
}
|
|
17
19
|
export declare function fetchLoginConfig(apiBase: string, fetchImpl?: FetchImpl): Promise<LoginConfig>;
|
|
18
20
|
export declare function persistTokenResponse(args: {
|
|
@@ -20,4 +22,9 @@ export declare function persistTokenResponse(args: {
|
|
|
20
22
|
project: string;
|
|
21
23
|
data: Record<string, unknown>;
|
|
22
24
|
}): StoredCredentials;
|
|
25
|
+
export declare function persistBatchTokenResponse(args: {
|
|
26
|
+
apiBase: string;
|
|
27
|
+
projects: string[];
|
|
28
|
+
data: Record<string, unknown>;
|
|
29
|
+
}): StoredCredentials[];
|
|
23
30
|
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const MAX_BATCH_PROJECTS = 20;
|
|
2
|
+
export declare const MAX_PROJECT_SLUG_LENGTH = 48;
|
|
3
|
+
export declare const MAX_WORKSPACE_SLUG_LENGTH = 64;
|
|
4
|
+
export declare const PLATFORM_CREATES_PER_HOUR = 10;
|
|
5
|
+
export declare const DEFAULT_CREATE_PROJECTS_PER_APPROVAL = 10;
|
|
6
|
+
export interface BatchCapability {
|
|
7
|
+
createProjectsPerApproval: number;
|
|
8
|
+
loginProjectsPerApproval: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function readBatchCapability(config: unknown): BatchCapability | null;
|
|
11
|
+
export declare const BATCH_UNSUPPORTED_MESSAGE = "This platform does not advertise batch onboarding, so a list of projects was not sent and no device code was spent.";
|
|
12
|
+
export declare function isExactProjectSlug(slug: string): boolean;
|
|
13
|
+
export interface ProjectBatch {
|
|
14
|
+
workspace: string;
|
|
15
|
+
slugs: string[];
|
|
16
|
+
refs: string[];
|
|
17
|
+
}
|
|
18
|
+
export type ProjectBatchParse = {
|
|
19
|
+
ok: true;
|
|
20
|
+
batch: ProjectBatch;
|
|
21
|
+
} | {
|
|
22
|
+
ok: false;
|
|
23
|
+
message: string;
|
|
24
|
+
};
|
|
25
|
+
export declare function parseProjectBatch(input: unknown): ProjectBatchParse;
|
|
26
|
+
export declare function sameProjectSet(a: string[], b: string[]): boolean;
|
|
27
|
+
export declare function createRateLimitNote(): string;
|
|
28
|
+
export declare function createCapNote(cap: number): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface BatchCreateArgs {
|
|
2
|
+
projects?: unknown;
|
|
3
|
+
project?: unknown;
|
|
4
|
+
repo?: unknown;
|
|
5
|
+
installationId?: string;
|
|
6
|
+
displayName?: unknown;
|
|
7
|
+
description?: unknown;
|
|
8
|
+
installCommand?: string;
|
|
9
|
+
buildCommand?: string;
|
|
10
|
+
outputDirectory?: string;
|
|
11
|
+
browsers?: string[];
|
|
12
|
+
outputDirectories?: Record<string, unknown>;
|
|
13
|
+
deviceCode?: string;
|
|
14
|
+
api?: string;
|
|
15
|
+
}
|
|
16
|
+
interface BatchEntry {
|
|
17
|
+
ref: string;
|
|
18
|
+
workspace: string;
|
|
19
|
+
slug: string;
|
|
20
|
+
repo: string;
|
|
21
|
+
owner: string;
|
|
22
|
+
repoName: string;
|
|
23
|
+
displayName?: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
installCommand?: string;
|
|
26
|
+
buildCommand?: string;
|
|
27
|
+
outputDirectory?: string;
|
|
28
|
+
browsers?: string[];
|
|
29
|
+
outputDirectories?: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
export declare function resetBatchCreateSessions(): void;
|
|
32
|
+
export declare function parseBatchCreateArgs(args: BatchCreateArgs): {
|
|
33
|
+
ok: true;
|
|
34
|
+
workspace: string;
|
|
35
|
+
entries: BatchEntry[];
|
|
36
|
+
} | {
|
|
37
|
+
ok: false;
|
|
38
|
+
message: string;
|
|
39
|
+
hint?: string;
|
|
40
|
+
};
|
|
41
|
+
export declare function createProjectBatch(args: BatchCreateArgs): Promise<string>;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function buildCreateBody(args: {
|
|
2
|
+
workspace: string;
|
|
3
|
+
projectSlug: string;
|
|
4
|
+
owner: string;
|
|
5
|
+
repoName: string;
|
|
6
|
+
installationId?: string;
|
|
7
|
+
displayName?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
installCommand?: string;
|
|
10
|
+
buildCommand?: string;
|
|
11
|
+
outputDirectory?: string;
|
|
12
|
+
browsers?: string[];
|
|
13
|
+
outputDirectories?: Record<string, unknown>;
|
|
14
|
+
}): Record<string, unknown>;
|
package/dist/src/lib/rdp.d.ts
CHANGED
|
@@ -47,4 +47,32 @@ export declare function rdpCollectConsoleMessages(port: number, options?: {
|
|
|
47
47
|
timeoutMs?: number;
|
|
48
48
|
settleMs?: number;
|
|
49
49
|
}): Promise<ConsoleMessage[]>;
|
|
50
|
+
export type RdpEvalOutcome = {
|
|
51
|
+
ok: true;
|
|
52
|
+
value: unknown;
|
|
53
|
+
tab: {
|
|
54
|
+
url: string;
|
|
55
|
+
title: string;
|
|
56
|
+
};
|
|
57
|
+
} | {
|
|
58
|
+
ok: false;
|
|
59
|
+
name: string;
|
|
60
|
+
message: string;
|
|
61
|
+
};
|
|
62
|
+
export declare function rdpStartExpression(expression: string, token: string): string;
|
|
63
|
+
export declare function rdpPollExpression(token: string): string;
|
|
64
|
+
type RdpSettled = {
|
|
65
|
+
ok: true;
|
|
66
|
+
value: unknown;
|
|
67
|
+
} | {
|
|
68
|
+
ok: false;
|
|
69
|
+
name: string;
|
|
70
|
+
message: string;
|
|
71
|
+
};
|
|
72
|
+
export declare function readRdpEvalSlot(raw: unknown): RdpSettled | "pending" | "lost";
|
|
73
|
+
export declare function rdpEvaluateInTab(port: number, options: {
|
|
74
|
+
select: (tabs: RdpTab[]) => RdpTab | null | undefined;
|
|
75
|
+
expression: string;
|
|
76
|
+
timeoutMs?: number;
|
|
77
|
+
}): Promise<RdpEvalOutcome>;
|
|
50
78
|
export {};
|
|
@@ -12,6 +12,7 @@ export declare function resolveProjectRef(overrides?: {
|
|
|
12
12
|
workspace?: string;
|
|
13
13
|
project?: string;
|
|
14
14
|
}): ProjectRef | null;
|
|
15
|
+
export declare function loginProjectRef(selector?: string): ProjectRef | null;
|
|
15
16
|
export declare function registryFileUrl(ref: ProjectRef, file: string): string;
|
|
16
17
|
export declare function consoleProjectUrl(ref: ProjectRef | null, page: string, apiHint?: string): string;
|
|
17
18
|
export declare function userlandProjectUrl(ref: ProjectRef | null, page?: string, apiHint?: string): string;
|
package/dist/src/tools/auth.d.ts
CHANGED
|
@@ -13,6 +13,13 @@ export declare const schema: {
|
|
|
13
13
|
type: string;
|
|
14
14
|
description: string;
|
|
15
15
|
};
|
|
16
|
+
projects: {
|
|
17
|
+
type: string;
|
|
18
|
+
items: {
|
|
19
|
+
type: string;
|
|
20
|
+
};
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
16
23
|
deviceCode: {
|
|
17
24
|
type: string;
|
|
18
25
|
description: string;
|
|
@@ -28,6 +35,7 @@ export declare const schema: {
|
|
|
28
35
|
export declare function handler(args: {
|
|
29
36
|
action?: string;
|
|
30
37
|
project?: string;
|
|
38
|
+
projects?: unknown;
|
|
31
39
|
deviceCode?: string;
|
|
32
40
|
api?: string;
|
|
33
41
|
}): Promise<string>;
|
|
@@ -52,6 +52,13 @@ export declare const schema: {
|
|
|
52
52
|
type: string;
|
|
53
53
|
description: string;
|
|
54
54
|
};
|
|
55
|
+
projects: {
|
|
56
|
+
type: string;
|
|
57
|
+
items: {
|
|
58
|
+
type: string;
|
|
59
|
+
};
|
|
60
|
+
description: string;
|
|
61
|
+
};
|
|
55
62
|
deviceCode: {
|
|
56
63
|
type: string;
|
|
57
64
|
description: string;
|
|
@@ -65,8 +72,9 @@ export declare const schema: {
|
|
|
65
72
|
};
|
|
66
73
|
};
|
|
67
74
|
export declare function handler(args: {
|
|
68
|
-
project
|
|
69
|
-
repo
|
|
75
|
+
project?: string;
|
|
76
|
+
repo?: string;
|
|
77
|
+
projects?: unknown;
|
|
70
78
|
installationId?: string;
|
|
71
79
|
displayName?: string;
|
|
72
80
|
description?: string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@extension.dev/mcp",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "10.10.
|
|
4
|
+
"version": "10.10.9",
|
|
5
5
|
"description": "MCP server that lets AI agents (Claude Code, Claude Desktop, Cursor, Copilot, Codex) build, run, inspect, and publish browser extensions. 32 tools for scaffolding, live DOM inspection, log streaming, and store-ready builds across Chrome, Edge, Firefox, Safari, and every Chromium- or Gecko-based browser (Brave, Opera, Vivaldi, Yandex, Waterfox, LibreWolf). Powered by extension.dev and Extension.js.",
|
|
6
6
|
"mcpName": "io.github.extensiondev/mcp",
|
|
7
7
|
"license": "Apache-2.0",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"extension.js"
|
|
93
93
|
],
|
|
94
94
|
"dependencies": {
|
|
95
|
-
"@extension.dev/urls": "^0.8.
|
|
95
|
+
"@extension.dev/urls": "^0.8.2",
|
|
96
96
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
97
97
|
"browser-extension-manifest-fields": "^2.2.9",
|
|
98
98
|
"cross-spawn": "^7.0.6",
|
package/server.json
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
9
|
"websiteUrl": "https://extension.dev",
|
|
10
|
-
"version": "10.10.
|
|
10
|
+
"version": "10.10.9",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
15
15
|
"identifier": "@extension.dev/mcp",
|
|
16
|
-
"version": "10.10.
|
|
16
|
+
"version": "10.10.9",
|
|
17
17
|
"runtimeHint": "npx",
|
|
18
18
|
"transport": {
|
|
19
19
|
"type": "stdio"
|