@extension.dev/mcp 10.10.1 → 10.10.2
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 +176 -0
- package/README.md +5 -4
- package/claude/CLAUDE.md +2 -1
- package/dist/module.js +1921 -297
- package/dist/src/lib/bridge-tabs.d.ts +8 -1
- package/dist/src/lib/cdp-devtools.d.ts +27 -0
- package/dist/src/lib/cdp-extension-page.d.ts +18 -0
- package/dist/src/lib/cdp-targets.d.ts +7 -0
- package/dist/src/lib/cdp.d.ts +2 -0
- package/dist/src/lib/common-schema.d.ts +3 -3
- package/dist/src/lib/credentials.d.ts +24 -3
- package/dist/src/lib/device-flow.d.ts +6 -3
- package/dist/src/lib/exec.d.ts +1 -0
- package/dist/src/lib/publish.d.ts +3 -1
- package/dist/src/lib/registry.d.ts +1 -0
- package/dist/src/lib/session-browser.d.ts +1 -1
- package/dist/src/lib/session-paths.d.ts +10 -1
- package/dist/src/tools/browsers.d.ts +1 -1
- package/dist/src/tools/build.d.ts +1 -1
- package/dist/src/tools/detect-browsers.d.ts +2 -0
- package/dist/src/tools/dev.d.ts +1 -1
- package/dist/src/tools/eval.d.ts +2 -0
- package/dist/src/tools/inspect-gecko.d.ts +1 -0
- package/dist/src/tools/logout.d.ts +1 -1
- package/dist/src/tools/open.d.ts +25 -1
- package/dist/src/tools/preview-web.d.ts +7 -2
- package/dist/src/tools/project-create.d.ts +15 -0
- package/dist/src/tools/publish.d.ts +5 -0
- package/dist/src/tools/release-promote.d.ts +5 -0
- package/dist/src/tools/shares.d.ts +5 -0
- package/dist/src/tools/start.d.ts +6 -1
- package/dist/src/tools/submit.d.ts +5 -0
- package/dist/src/tools/workspace-create.d.ts +42 -0
- package/package.json +18 -13
- package/server.json +3 -3
|
@@ -10,5 +10,12 @@ export declare function listBridgeTabs(projectPath: string, browser: string, tim
|
|
|
10
10
|
}>;
|
|
11
11
|
export declare function matchTabsByUrl(tabs: BridgeTab[], needle: string): BridgeTab[];
|
|
12
12
|
export declare function pollForBridgeTab(projectPath: string, browser: string, url: string, budgetMs: number): Promise<BridgeTab | null>;
|
|
13
|
-
export
|
|
13
|
+
export interface NavigateTarget {
|
|
14
|
+
tab?: number;
|
|
15
|
+
newTab?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function navigateToUrlViaBridge(projectPath: string, browser: string, url: string, timeout?: number, tool?: string, target?: NavigateTarget): Promise<string>;
|
|
18
|
+
export declare function geckoAddonId(projectPath: string, browser: string): string | null;
|
|
19
|
+
export declare function sessionProfilePath(projectPath: string, browser: string): string | null;
|
|
20
|
+
export declare function readGeckoBaseUrlFromProfile(projectPath: string, browser: string): string | null;
|
|
14
21
|
export declare function resolveBridgeBaseUrl(projectPath: string, browser: string, timeout?: number): Promise<string | null>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type DevToolsPanelOutcome = {
|
|
2
|
+
opened: true;
|
|
3
|
+
devtoolsTargetId: string;
|
|
4
|
+
panelId: string;
|
|
5
|
+
panelTitle: string;
|
|
6
|
+
panelTarget: {
|
|
7
|
+
targetId: string;
|
|
8
|
+
url: string;
|
|
9
|
+
} | null;
|
|
10
|
+
panels: string[];
|
|
11
|
+
} | {
|
|
12
|
+
opened: false;
|
|
13
|
+
stage: "open" | "frontend" | "panel" | "show";
|
|
14
|
+
reason: string;
|
|
15
|
+
devtoolsTargetId?: string;
|
|
16
|
+
panels?: string[];
|
|
17
|
+
};
|
|
18
|
+
export declare function panelIdPrefix(extensionId: string): string;
|
|
19
|
+
export declare function panelTitleFromId(panelId: string, extensionId: string): string;
|
|
20
|
+
export declare function openDevToolsPanel(port: number, options: {
|
|
21
|
+
inspectedTargetId: string;
|
|
22
|
+
extensionId: string;
|
|
23
|
+
devtoolsPageUrl: string;
|
|
24
|
+
panelTitle?: string;
|
|
25
|
+
budgetMs?: number;
|
|
26
|
+
reloadInspected?: boolean;
|
|
27
|
+
}): Promise<DevToolsPanelOutcome>;
|
|
@@ -8,6 +8,24 @@ export type ExtensionPageEval = {
|
|
|
8
8
|
thrown: boolean;
|
|
9
9
|
};
|
|
10
10
|
export declare function matchExtensionPageTargets(targets: PageTarget[], wantedUrl: string): PageTarget[];
|
|
11
|
+
export declare const WORKER_TARGET_TYPES: Set<string>;
|
|
12
|
+
export declare function findExtensionWorkerTargets(port: number, extensionId: string): Promise<Array<{
|
|
13
|
+
targetId: string;
|
|
14
|
+
type: string;
|
|
15
|
+
url: string;
|
|
16
|
+
}>>;
|
|
17
|
+
export type WorkerWake = {
|
|
18
|
+
woken: true;
|
|
19
|
+
targets: Array<{
|
|
20
|
+
targetId: string;
|
|
21
|
+
type: string;
|
|
22
|
+
url: string;
|
|
23
|
+
}>;
|
|
24
|
+
} | {
|
|
25
|
+
woken: false;
|
|
26
|
+
reason: string;
|
|
27
|
+
};
|
|
28
|
+
export declare function wakeExtensionWorker(port: number, extensionId: string): Promise<WorkerWake>;
|
|
11
29
|
export declare function findExtensionPageTargets(port: number, wantedUrl: string): Promise<PageTarget[]>;
|
|
12
30
|
export declare function evaluateOnExtensionPage(port: number, targetId: string, expression: string): Promise<ExtensionPageEval>;
|
|
13
31
|
export type SidePanelGestureOutcome = {
|
|
@@ -12,4 +12,11 @@ export declare function filterPageTargets(raw: Array<{
|
|
|
12
12
|
title: string;
|
|
13
13
|
}>): PageTarget[];
|
|
14
14
|
export declare function listPageTargets(port: number): Promise<PageTarget[]>;
|
|
15
|
+
export declare function filterDocumentTargets(raw: Array<{
|
|
16
|
+
id: string;
|
|
17
|
+
type: string;
|
|
18
|
+
url: string;
|
|
19
|
+
title: string;
|
|
20
|
+
}>): PageTarget[];
|
|
21
|
+
export declare function listDocumentTargets(port: number): Promise<PageTarget[]>;
|
|
15
22
|
export declare function matchTargetsByUrl(targets: PageTarget[], needle: string): PageTarget[];
|
package/dist/src/lib/cdp.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export interface RenderEvidence {
|
|
|
9
9
|
}
|
|
10
10
|
export declare class CDPClient extends CDPConnection {
|
|
11
11
|
static discoverBrowserWsUrl(port: number, host?: string): Promise<string>;
|
|
12
|
+
static discoverBrowserVersion(port: number, host?: string): Promise<string | null>;
|
|
13
|
+
static discoverUserAgent(port: number, host?: string): Promise<string | null>;
|
|
12
14
|
static discoverTargets(port: number, host?: string): Promise<Array<{
|
|
13
15
|
id: string;
|
|
14
16
|
type: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const LAUNCHABLE_BROWSERS: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
2
|
-
export declare const REAL_BROWSERS: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari"];
|
|
1
|
+
export declare const LAUNCHABLE_BROWSERS: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
2
|
+
export declare const REAL_BROWSERS: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari"];
|
|
3
3
|
export declare const MANAGED_BROWSERS: readonly ["chrome", "chromium", "edge", "firefox"];
|
|
4
4
|
export declare const PROJECT_PATH: {
|
|
5
5
|
readonly type: "string";
|
|
@@ -23,6 +23,6 @@ export declare const API_BASE: {
|
|
|
23
23
|
};
|
|
24
24
|
export declare const LAUNCH_BROWSER: {
|
|
25
25
|
readonly type: "string";
|
|
26
|
-
readonly enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
26
|
+
readonly enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
27
27
|
readonly default: "chrome";
|
|
28
28
|
};
|
|
@@ -8,10 +8,31 @@ export interface StoredCredentials {
|
|
|
8
8
|
provider?: "extensiondev";
|
|
9
9
|
}
|
|
10
10
|
export declare function credentialsPath(): string;
|
|
11
|
-
export
|
|
11
|
+
export interface CredentialStore {
|
|
12
|
+
version: 2;
|
|
13
|
+
active: string | null;
|
|
14
|
+
entries: Record<string, StoredCredentials>;
|
|
15
|
+
}
|
|
16
|
+
export interface CredentialSelector {
|
|
17
|
+
project?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function credentialKey(workspaceSlug: string, projectSlug: string): string;
|
|
20
|
+
export declare function readCredentialStore(): CredentialStore | null;
|
|
21
|
+
export declare function readCredentials(selector?: CredentialSelector): StoredCredentials | null;
|
|
22
|
+
export declare function listCredentials(): Array<StoredCredentials & {
|
|
23
|
+
key: string;
|
|
24
|
+
active: boolean;
|
|
25
|
+
}>;
|
|
12
26
|
export declare function writeCredentials(creds: StoredCredentials): string;
|
|
13
|
-
export declare function clearCredentials(): {
|
|
27
|
+
export declare function clearCredentials(selector?: CredentialSelector): {
|
|
14
28
|
cleared: boolean;
|
|
15
29
|
path: string;
|
|
30
|
+
removed: string[];
|
|
31
|
+
remaining: string[];
|
|
32
|
+
};
|
|
33
|
+
export declare function readValidCredentials(nowSeconds?: number, selector?: CredentialSelector): StoredCredentials | null;
|
|
34
|
+
export declare const PROJECT_TOKEN_INPUT: {
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
readonly description: "Which stored login to use, as '<workspace>/<project>' (or a project slug that matches one login), when extension_auth has signed in to more than one project on this machine. Omitted, the most recent login is used, after EXTENSION_DEV_TOKEN when that is set. Named, it outranks EXTENSION_DEV_TOKEN. extension_auth (action: status) lists the stored logins.";
|
|
16
37
|
};
|
|
17
|
-
export declare function
|
|
38
|
+
export declare function noStoredLoginHint(project: string): string;
|
|
@@ -8,12 +8,14 @@ export interface DeviceCodeStart {
|
|
|
8
8
|
interval: number;
|
|
9
9
|
expiresIn: number;
|
|
10
10
|
}
|
|
11
|
+
export type DeviceIntent = "login" | "create" | "create-workspace";
|
|
11
12
|
export declare function requestDeviceCode(args: {
|
|
12
13
|
apiBase: string;
|
|
13
14
|
path: string;
|
|
14
|
-
project
|
|
15
|
+
project?: string;
|
|
16
|
+
workspace?: string;
|
|
15
17
|
clientName?: string;
|
|
16
|
-
intent?:
|
|
18
|
+
intent?: DeviceIntent;
|
|
17
19
|
fetchImpl?: FetchImpl;
|
|
18
20
|
}): Promise<DeviceCodeStart>;
|
|
19
21
|
export type DevicePollResult = {
|
|
@@ -35,7 +37,8 @@ export type DeviceGrantPollResult = {
|
|
|
35
37
|
export declare function pollDeviceGrant(args: {
|
|
36
38
|
apiBase: string;
|
|
37
39
|
path: string;
|
|
38
|
-
project
|
|
40
|
+
project?: string;
|
|
41
|
+
workspace?: string;
|
|
39
42
|
deviceCode: string;
|
|
40
43
|
interval: number;
|
|
41
44
|
budgetMs: number;
|
package/dist/src/lib/exec.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export interface CliResult {
|
|
|
6
6
|
}
|
|
7
7
|
export declare function pinnedCliVersion(): string;
|
|
8
8
|
export declare function exactVersion(spec: string): string;
|
|
9
|
+
export declare function describeExtensionInvocation(projectDir?: string): string;
|
|
9
10
|
export declare function resolveExtensionInvocation(projectDir?: string): {
|
|
10
11
|
command: string;
|
|
11
12
|
prefixArgs: string[];
|
|
@@ -52,5 +52,6 @@ export interface BuildIndexItem {
|
|
|
52
52
|
timestamp?: string;
|
|
53
53
|
browsers?: string[];
|
|
54
54
|
}
|
|
55
|
+
export declare function isSuccessfulBuild(item: Pick<BuildIndexItem, "status">): boolean;
|
|
55
56
|
export declare function parseBuildIndex(json: unknown): BuildIndexItem[];
|
|
56
57
|
export declare function mirrorActionsUrlFromRunUrl(runUrl: unknown): string | null;
|
|
@@ -9,7 +9,7 @@ export interface LiveSession {
|
|
|
9
9
|
source: "registry" | "contract" | "marker";
|
|
10
10
|
}
|
|
11
11
|
export declare function liveProjectSessions(projectPath: string): LiveSession[];
|
|
12
|
-
export declare function deadReadySession(projectPath: string): {
|
|
12
|
+
export declare function deadReadySession(projectPath: string, browser?: string): {
|
|
13
13
|
browser: string;
|
|
14
14
|
pid: number;
|
|
15
15
|
} | null;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function ownsManifest(projectManifestPath: string, manifestPath: string): boolean;
|
|
2
|
+
export declare function engineProjectRoot(projectPath: string): string;
|
|
3
|
+
export declare const actionsPath: (projectPath: string, browser: string) => string;
|
|
4
|
+
export declare const browserArtifactsDir: (projectPath: string, browser: string) => string;
|
|
5
|
+
export declare const buildSummaryPath: (projectPath: string, browser: string) => string;
|
|
6
|
+
export declare const eventsPath: (projectPath: string, browser: string) => string;
|
|
7
|
+
export declare const logsPath: (projectPath: string, browser: string) => string;
|
|
8
|
+
export declare const readyContractPath: (projectPath: string, browser: string) => string;
|
|
9
|
+
export declare const sessionArtifactsRootDir: (projectPath: string) => string;
|
|
10
|
+
export declare const sessionStateDir: (projectPath: string) => string;
|
|
2
11
|
export { readReadyContract, type ReadyContractInfo, } from "extension-develop/bridge";
|
|
3
12
|
export declare function sessionPathHint(file: string): string;
|
|
4
13
|
export declare function profilesRootDir(projectPath: string): string;
|
|
@@ -13,7 +13,7 @@ export declare const schema: {
|
|
|
13
13
|
type: string;
|
|
14
14
|
items: {
|
|
15
15
|
type: string;
|
|
16
|
-
enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari"];
|
|
16
|
+
enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari"];
|
|
17
17
|
};
|
|
18
18
|
description: string;
|
|
19
19
|
};
|
|
@@ -10,7 +10,7 @@ export declare const schema: {
|
|
|
10
10
|
};
|
|
11
11
|
browser: {
|
|
12
12
|
readonly type: "string";
|
|
13
|
-
readonly enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
13
|
+
readonly enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
14
14
|
readonly default: "chrome";
|
|
15
15
|
};
|
|
16
16
|
zip: {
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
export declare function compareVersionNames(a: string, b: string): number;
|
|
1
2
|
export declare function findManagedBinary(browser: string, cacheRoot?: string): string | null;
|
|
3
|
+
export declare function findManagedBinaryIn(browserDir: string, browser: string): string | null;
|
|
2
4
|
export declare function detectBrowsers(browsers?: string[]): Promise<string>;
|
package/dist/src/tools/dev.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export declare const schema: {
|
|
|
62
62
|
};
|
|
63
63
|
browser: {
|
|
64
64
|
readonly type: "string";
|
|
65
|
-
readonly enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
65
|
+
readonly enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
66
66
|
readonly default: "chrome";
|
|
67
67
|
};
|
|
68
68
|
port: {
|
package/dist/src/tools/eval.d.ts
CHANGED
|
@@ -40,9 +40,11 @@ export declare const schema: {
|
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
export declare function chromiumManifestVersion(projectPath: string, browser: string): 2 | 3 | null;
|
|
43
|
+
export declare function geckoManifestVersion(projectPath: string, browser: string): 2 | 3 | null;
|
|
43
44
|
export declare function resolveDefaultEvalContext(projectPath: string, browser: string): "background" | "page";
|
|
44
45
|
export { EXTENSION_PAGE_CONTEXTS };
|
|
45
46
|
export declare function wantsExtensionPageOverCdp(projectPath: string, browser: string, context: string | undefined, url: string | undefined): boolean;
|
|
47
|
+
export declare function isBrowserErrorPage(url: string): boolean;
|
|
46
48
|
export declare function handler(args: ActArgs & {
|
|
47
49
|
expression: string;
|
|
48
50
|
}): Promise<string>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { surfaceForExtensionUrl } from "../lib/extension-surfaces";
|
|
2
2
|
export { surfaceForExtensionUrl };
|
|
3
|
+
export declare function executeScriptExpression(urlFilter: string | undefined, code: string): string;
|
|
3
4
|
export declare function inspectViaBridge(args: {
|
|
4
5
|
projectPath: string;
|
|
5
6
|
url?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function clearLocalCredentials(): Promise<string>;
|
|
1
|
+
export declare function clearLocalCredentials(project?: string): Promise<string>;
|
package/dist/src/tools/open.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { type ActArgs } from "../lib/act";
|
|
2
2
|
export declare const OVERRIDE_SURFACES: string[];
|
|
3
|
-
export
|
|
3
|
+
export interface NavigateOptions {
|
|
4
|
+
reuse?: "blank" | "surface";
|
|
5
|
+
tab?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function navigateToUrl(projectPath: string, browser: string, url: string, timeout?: number, options?: NavigateOptions): Promise<string>;
|
|
4
8
|
export declare function resolveExtensionId(projectPath: string, browser: string): Promise<string | null>;
|
|
5
9
|
export declare function surfaceDocument(projectPath: string, browser: string, surface: string): string | null;
|
|
6
10
|
export declare const SURFACE_MANIFEST_KEYS: Record<string, string>;
|
|
@@ -29,10 +33,27 @@ export declare const schema: {
|
|
|
29
33
|
type: string;
|
|
30
34
|
description: string;
|
|
31
35
|
};
|
|
36
|
+
panel: {
|
|
37
|
+
type: string;
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
waitMs: {
|
|
41
|
+
type: string;
|
|
42
|
+
description: string;
|
|
43
|
+
};
|
|
44
|
+
reload: {
|
|
45
|
+
type: string;
|
|
46
|
+
default: boolean;
|
|
47
|
+
description: string;
|
|
48
|
+
};
|
|
32
49
|
url: {
|
|
33
50
|
type: string;
|
|
34
51
|
description: string;
|
|
35
52
|
};
|
|
53
|
+
tab: {
|
|
54
|
+
type: string;
|
|
55
|
+
description: string;
|
|
56
|
+
};
|
|
36
57
|
asTab: {
|
|
37
58
|
type: string;
|
|
38
59
|
default: boolean;
|
|
@@ -54,6 +75,9 @@ export declare function sessionIsHeadless(): boolean;
|
|
|
54
75
|
export declare function handler(args: ActArgs & {
|
|
55
76
|
surface?: string;
|
|
56
77
|
name?: string;
|
|
78
|
+
panel?: string;
|
|
79
|
+
waitMs?: number;
|
|
80
|
+
reload?: boolean;
|
|
57
81
|
url?: string;
|
|
58
82
|
asTab?: boolean;
|
|
59
83
|
}): Promise<string>;
|
|
@@ -8,9 +8,13 @@ export declare const schema: {
|
|
|
8
8
|
readonly type: "string";
|
|
9
9
|
readonly description: "Extension project root";
|
|
10
10
|
};
|
|
11
|
+
project: {
|
|
12
|
+
readonly type: "string";
|
|
13
|
+
readonly description: "Which stored login to use, as '<workspace>/<project>' (or a project slug that matches one login), when extension_auth has signed in to more than one project on this machine. Omitted, the most recent login is used, after EXTENSION_DEV_TOKEN when that is set. Named, it outranks EXTENSION_DEV_TOKEN. extension_auth (action: status) lists the stored logins.";
|
|
14
|
+
};
|
|
11
15
|
browser: {
|
|
12
16
|
type: string;
|
|
13
|
-
enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari"];
|
|
17
|
+
enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari"];
|
|
14
18
|
default: string;
|
|
15
19
|
description: string;
|
|
16
20
|
};
|
|
@@ -39,7 +43,7 @@ export declare const schema: {
|
|
|
39
43
|
};
|
|
40
44
|
openIn: {
|
|
41
45
|
type: string;
|
|
42
|
-
enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari"];
|
|
46
|
+
enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari"];
|
|
43
47
|
description: string;
|
|
44
48
|
};
|
|
45
49
|
share: {
|
|
@@ -61,4 +65,5 @@ export declare function handler(args: {
|
|
|
61
65
|
open?: boolean;
|
|
62
66
|
openIn?: string;
|
|
63
67
|
share?: boolean;
|
|
68
|
+
project?: string;
|
|
64
69
|
}): Promise<string>;
|
|
@@ -39,6 +39,19 @@ export declare const schema: {
|
|
|
39
39
|
default: string;
|
|
40
40
|
description: string;
|
|
41
41
|
};
|
|
42
|
+
browsers: {
|
|
43
|
+
type: string;
|
|
44
|
+
items: {
|
|
45
|
+
type: string;
|
|
46
|
+
enum: string[];
|
|
47
|
+
};
|
|
48
|
+
default: string[];
|
|
49
|
+
description: string;
|
|
50
|
+
};
|
|
51
|
+
outputDirectories: {
|
|
52
|
+
type: string;
|
|
53
|
+
description: string;
|
|
54
|
+
};
|
|
42
55
|
deviceCode: {
|
|
43
56
|
type: string;
|
|
44
57
|
description: string;
|
|
@@ -60,6 +73,8 @@ export declare function handler(args: {
|
|
|
60
73
|
installCommand?: string;
|
|
61
74
|
buildCommand?: string;
|
|
62
75
|
outputDirectory?: string;
|
|
76
|
+
browsers?: string[];
|
|
77
|
+
outputDirectories?: Record<string, unknown>;
|
|
63
78
|
deviceCode?: string;
|
|
64
79
|
api?: string;
|
|
65
80
|
}): Promise<string>;
|
|
@@ -4,6 +4,10 @@ export declare const schema: {
|
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object";
|
|
6
6
|
properties: {
|
|
7
|
+
project: {
|
|
8
|
+
readonly type: "string";
|
|
9
|
+
readonly description: "Which stored login to use, as '<workspace>/<project>' (or a project slug that matches one login), when extension_auth has signed in to more than one project on this machine. Omitted, the most recent login is used, after EXTENSION_DEV_TOKEN when that is set. Named, it outranks EXTENSION_DEV_TOKEN. extension_auth (action: status) lists the stored logins.";
|
|
10
|
+
};
|
|
7
11
|
ttlHours: {
|
|
8
12
|
type: string;
|
|
9
13
|
description: string;
|
|
@@ -21,6 +25,7 @@ export declare const schema: {
|
|
|
21
25
|
};
|
|
22
26
|
};
|
|
23
27
|
export declare function handler(args: {
|
|
28
|
+
project?: string;
|
|
24
29
|
ttlHours?: number;
|
|
25
30
|
buildSha?: string;
|
|
26
31
|
api?: string;
|
|
@@ -4,6 +4,10 @@ export declare const schema: {
|
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object";
|
|
6
6
|
properties: {
|
|
7
|
+
project: {
|
|
8
|
+
readonly type: "string";
|
|
9
|
+
readonly description: "Which stored login to use, as '<workspace>/<project>' (or a project slug that matches one login), when extension_auth has signed in to more than one project on this machine. Omitted, the most recent login is used, after EXTENSION_DEV_TOKEN when that is set. Named, it outranks EXTENSION_DEV_TOKEN. extension_auth (action: status) lists the stored logins.";
|
|
10
|
+
};
|
|
7
11
|
buildId: {
|
|
8
12
|
type: string;
|
|
9
13
|
description: string;
|
|
@@ -52,4 +56,5 @@ export declare function handler(args: {
|
|
|
52
56
|
releaseNotes?: string;
|
|
53
57
|
approvalId?: string;
|
|
54
58
|
api?: string;
|
|
59
|
+
project?: string;
|
|
55
60
|
}): Promise<string>;
|
|
@@ -4,6 +4,10 @@ export declare const schema: {
|
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object";
|
|
6
6
|
properties: {
|
|
7
|
+
project: {
|
|
8
|
+
readonly type: "string";
|
|
9
|
+
readonly description: "Which stored login to use, as '<workspace>/<project>' (or a project slug that matches one login), when extension_auth has signed in to more than one project on this machine. Omitted, the most recent login is used, after EXTENSION_DEV_TOKEN when that is set. Named, it outranks EXTENSION_DEV_TOKEN. extension_auth (action: status) lists the stored logins.";
|
|
10
|
+
};
|
|
7
11
|
action: {
|
|
8
12
|
type: string;
|
|
9
13
|
enum: string[];
|
|
@@ -53,4 +57,5 @@ export declare function handler(args: {
|
|
|
53
57
|
status?: string;
|
|
54
58
|
limit?: number;
|
|
55
59
|
api?: string;
|
|
60
|
+
project?: string;
|
|
56
61
|
}): Promise<string>;
|
|
@@ -42,7 +42,7 @@ export declare const schema: {
|
|
|
42
42
|
};
|
|
43
43
|
browser: {
|
|
44
44
|
readonly type: "string";
|
|
45
|
-
readonly enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
45
|
+
readonly enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "zen", "floorp", "safari", "chromium-based", "gecko-based", "firefox-based", "webkit-based"];
|
|
46
46
|
readonly default: "chrome";
|
|
47
47
|
};
|
|
48
48
|
build: {
|
|
@@ -64,6 +64,10 @@ export declare const schema: {
|
|
|
64
64
|
default: boolean;
|
|
65
65
|
description: string;
|
|
66
66
|
};
|
|
67
|
+
outputPath: {
|
|
68
|
+
type: string;
|
|
69
|
+
description: string;
|
|
70
|
+
};
|
|
67
71
|
};
|
|
68
72
|
required: string[];
|
|
69
73
|
};
|
|
@@ -75,4 +79,5 @@ export declare function handler(args: {
|
|
|
75
79
|
polyfill?: boolean;
|
|
76
80
|
port?: number;
|
|
77
81
|
noBrowser?: boolean;
|
|
82
|
+
outputPath?: string;
|
|
78
83
|
} & LaunchFlagArgs): Promise<string>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare function storeMdWarnings(browsers: string[], cwd: string): string[];
|
|
2
2
|
export interface SubmitToolArgs {
|
|
3
|
+
project?: string;
|
|
3
4
|
browsers: string[];
|
|
4
5
|
buildSha: string;
|
|
5
6
|
channel?: string;
|
|
@@ -15,6 +16,10 @@ export declare const schema: {
|
|
|
15
16
|
inputSchema: {
|
|
16
17
|
type: "object";
|
|
17
18
|
properties: {
|
|
19
|
+
project: {
|
|
20
|
+
readonly type: "string";
|
|
21
|
+
readonly description: "Which stored login to use, as '<workspace>/<project>' (or a project slug that matches one login), when extension_auth has signed in to more than one project on this machine. Omitted, the most recent login is used, after EXTENSION_DEV_TOKEN when that is set. Named, it outranks EXTENSION_DEV_TOKEN. extension_auth (action: status) lists the stored logins.";
|
|
22
|
+
};
|
|
18
23
|
browsers: {
|
|
19
24
|
type: string;
|
|
20
25
|
items: {
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export declare const schema: {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object";
|
|
6
|
+
properties: {
|
|
7
|
+
workspace: {
|
|
8
|
+
type: string;
|
|
9
|
+
description: string;
|
|
10
|
+
};
|
|
11
|
+
displayName: {
|
|
12
|
+
type: string;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
description: {
|
|
16
|
+
type: string;
|
|
17
|
+
description: string;
|
|
18
|
+
};
|
|
19
|
+
developerUrl: {
|
|
20
|
+
type: string;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
deviceCode: {
|
|
24
|
+
type: string;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
api: {
|
|
28
|
+
readonly type: "string";
|
|
29
|
+
readonly description: "Platform base URL (default EXTENSION_DEV_API_URL, else https://www.extension.dev)";
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
required: string[];
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export declare function handler(args: {
|
|
36
|
+
workspace: string;
|
|
37
|
+
displayName?: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
developerUrl?: string;
|
|
40
|
+
deviceCode?: string;
|
|
41
|
+
api?: string;
|
|
42
|
+
}): Promise<string>;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@extension.dev/mcp",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "10.10.
|
|
5
|
-
"description": "MCP server that lets AI agents (Claude Code, Claude Desktop, Cursor, Copilot, Codex) build, run, inspect, and publish browser extensions.
|
|
4
|
+
"version": "10.10.2",
|
|
5
|
+
"description": "MCP server that lets AI agents (Claude Code, Claude Desktop, Cursor, Copilot, Codex) build, run, inspect, and publish browser extensions. 31 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",
|
|
8
8
|
"author": {
|
|
@@ -87,13 +87,13 @@
|
|
|
87
87
|
"extension.js"
|
|
88
88
|
],
|
|
89
89
|
"dependencies": {
|
|
90
|
-
"@extension.dev/urls": "^0.8.
|
|
90
|
+
"@extension.dev/urls": "^0.8.1",
|
|
91
91
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
92
92
|
"browser-extension-manifest-fields": "^2.2.9",
|
|
93
93
|
"cross-spawn": "^7.0.6",
|
|
94
|
-
"extension-create": "4.1.
|
|
95
|
-
"extension-develop": "4.1.
|
|
96
|
-
"extension-install": "4.1.
|
|
94
|
+
"extension-create": "4.1.31-canary.1791055414.4bbb683a",
|
|
95
|
+
"extension-develop": "4.1.31-canary.1791055414.4bbb683a",
|
|
96
|
+
"extension-install": "4.1.31-canary.1791055414.4bbb683a",
|
|
97
97
|
"ws": "^8.20.0"
|
|
98
98
|
},
|
|
99
99
|
"devDependencies": {
|
|
@@ -107,21 +107,26 @@
|
|
|
107
107
|
"typescript": "6.0.2",
|
|
108
108
|
"typescript-eslint": "^8.64.0",
|
|
109
109
|
"vite": "^8.1.5",
|
|
110
|
-
"vitest": "^4.1.
|
|
110
|
+
"vitest": "^4.1.11"
|
|
111
111
|
},
|
|
112
112
|
"pnpm": {
|
|
113
113
|
"overrides": {
|
|
114
|
-
"hono": "^4.12
|
|
114
|
+
"hono": "^4.13.12",
|
|
115
115
|
"@hono/node-server": "^2.0.5",
|
|
116
116
|
"ws@>=8 <8.21.0": "^8.21.0",
|
|
117
117
|
"form-data@4": "^4.0.6",
|
|
118
|
-
"js-yaml@4": "^4.3.
|
|
119
|
-
"fast-uri@3": "^3.1.
|
|
118
|
+
"js-yaml@4": "^4.3.2",
|
|
119
|
+
"fast-uri@3": "^3.1.8",
|
|
120
120
|
"postcss@8": "^8.5.18",
|
|
121
121
|
"body-parser@2": "^2.3.0",
|
|
122
|
-
"ip-address@10": "^10.
|
|
123
|
-
"qs@6": "^6.
|
|
124
|
-
"vite@8": "^8.0.16"
|
|
122
|
+
"ip-address@10": "^10.7.2",
|
|
123
|
+
"qs@6": "^6.16.0",
|
|
124
|
+
"vite@8": "^8.0.16",
|
|
125
|
+
"axios@1": "^1.20.0",
|
|
126
|
+
"brace-expansion@5": "^5.0.12",
|
|
127
|
+
"nanoid@3": "^3.3.19",
|
|
128
|
+
"devalue@5": "^5.9.2",
|
|
129
|
+
"postcss-selector-parser@7": "^7.1.6"
|
|
125
130
|
}
|
|
126
131
|
}
|
|
127
132
|
}
|
package/server.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
|
|
3
3
|
"name": "io.github.extensiondev/mcp",
|
|
4
|
-
"description": "Build, run, inspect, and publish browser extensions from any MCP client.
|
|
4
|
+
"description": "Build, run, inspect, and publish browser extensions from any MCP client. 31 tools, 11 browsers.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/extensiondev/mcp",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
9
|
"websiteUrl": "https://extension.dev",
|
|
10
|
-
"version": "10.10.
|
|
10
|
+
"version": "10.10.2",
|
|
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.2",
|
|
17
17
|
"runtimeHint": "npx",
|
|
18
18
|
"transport": {
|
|
19
19
|
"type": "stdio"
|