@extension.dev/mcp 7.0.0 → 9.0.0

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 (60) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +224 -0
  4. package/README.md +13 -21
  5. package/claude/ARCHITECTURE.md +4 -4
  6. package/claude/CLAUDE.md +2 -2
  7. package/claude/README.md +1 -1
  8. package/claude/commands/extension-add.md +1 -1
  9. package/claude/commands/extension-debug.md +1 -1
  10. package/claude/commands/extension-publish.md +1 -1
  11. package/claude/commands/extension.md +3 -3
  12. package/claude/rules/mcp-tools.md +45 -49
  13. package/dist/module.js +1026 -1186
  14. package/dist/src/lib/common-schema.d.ts +28 -0
  15. package/dist/src/lib/launch-flags.d.ts +6 -6
  16. package/dist/src/lib/session-identity.d.ts +16 -0
  17. package/dist/src/tools/add-feature.d.ts +2 -2
  18. package/dist/src/tools/analyze.d.ts +29 -0
  19. package/dist/src/tools/auth.d.ts +33 -0
  20. package/dist/src/tools/browsers.d.ts +39 -0
  21. package/dist/src/tools/build.d.ts +5 -6
  22. package/dist/src/tools/detect-browsers.d.ts +1 -20
  23. package/dist/src/tools/dev.d.ts +11 -11
  24. package/dist/src/tools/{dom-inspect.d.ts → dom-snapshot.d.ts} +6 -6
  25. package/dist/src/tools/eval.d.ts +6 -6
  26. package/dist/src/tools/get-template-source.d.ts +1 -22
  27. package/dist/src/tools/inspect.d.ts +33 -5
  28. package/dist/src/tools/install-browser.d.ts +1 -18
  29. package/dist/src/tools/list-browsers.d.ts +1 -9
  30. package/dist/src/tools/list-extensions.d.ts +4 -4
  31. package/dist/src/tools/list-templates.d.ts +1 -35
  32. package/dist/src/tools/login.d.ts +1 -23
  33. package/dist/src/tools/logout.d.ts +1 -9
  34. package/dist/src/tools/logs-schema.d.ts +2 -2
  35. package/dist/src/tools/open.d.ts +6 -6
  36. package/dist/src/tools/preview-web.d.ts +4 -4
  37. package/dist/src/tools/publish.d.ts +2 -2
  38. package/dist/src/tools/release-list.d.ts +1 -23
  39. package/dist/src/tools/release-promote.d.ts +2 -2
  40. package/dist/src/tools/release-status.d.ts +37 -0
  41. package/dist/src/tools/reload.d.ts +6 -6
  42. package/dist/src/tools/shares.d.ts +2 -2
  43. package/dist/src/tools/start.d.ts +16 -10
  44. package/dist/src/tools/stop.d.ts +2 -2
  45. package/dist/src/tools/storage.d.ts +6 -6
  46. package/dist/src/tools/store-status.d.ts +1 -23
  47. package/dist/src/tools/{deploy.d.ts → submit.d.ts} +4 -4
  48. package/dist/src/tools/{source-inspect.d.ts → templates.d.ts} +27 -23
  49. package/dist/src/tools/uninstall-browser.d.ts +1 -21
  50. package/dist/src/tools/wait.d.ts +4 -4
  51. package/dist/src/tools/whoami.d.ts +1 -9
  52. package/extensions/live-preview/chromium/action/index.js +1 -9
  53. package/extensions/live-preview/chromium/background/service_worker.js +3 -11
  54. package/extensions/live-preview/chromium/manifest.json +1 -1
  55. package/package.json +2 -2
  56. package/server.json +3 -3
  57. package/dist/src/__tests__/fixtures/ready-contract.d.ts +0 -7
  58. package/dist/src/__tests__/setup-session-dir.d.ts +0 -1
  59. package/dist/src/tools/preview.d.ts +0 -66
  60. /package/dist/src/tools/{source-inspect-gecko.d.ts → inspect-gecko.d.ts} +0 -0
@@ -0,0 +1,28 @@
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"];
3
+ export declare const MANAGED_BROWSERS: readonly ["chrome", "chromium", "edge", "firefox"];
4
+ export declare const PROJECT_PATH: {
5
+ readonly type: "string";
6
+ readonly description: "Extension project root";
7
+ };
8
+ export declare const SESSION_PROJECT_PATH: {
9
+ readonly type: "string";
10
+ readonly description: "Extension project root (needs a live dev session)";
11
+ };
12
+ export declare const SESSION_BROWSER: {
13
+ readonly type: "string";
14
+ readonly description: "Session browser; defaults to this project's live session";
15
+ };
16
+ export declare const CALL_TIMEOUT: {
17
+ readonly type: "number";
18
+ readonly description: "Command timeout in ms (default 5000)";
19
+ };
20
+ export declare const API_BASE: {
21
+ readonly type: "string";
22
+ readonly description: "Platform base URL (default EXTENSION_DEV_API_URL, else https://www.extension.dev)";
23
+ };
24
+ export declare const LAUNCH_BROWSER: {
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"];
27
+ readonly default: "chrome";
28
+ };
@@ -1,7 +1,7 @@
1
1
  export declare const LAUNCH_FLAG_SCHEMA: {
2
2
  readonly profile: {
3
3
  readonly type: "string";
4
- readonly description: "Browser profile path, or \"false\" to reuse the default user profile. Omit for a fresh throwaway profile.";
4
+ readonly description: "Profile path, or \"false\" to reuse the real user profile. Omit for a throwaway one.";
5
5
  };
6
6
  readonly startingUrl: {
7
7
  readonly type: "string";
@@ -9,26 +9,26 @@ export declare const LAUNCH_FLAG_SCHEMA: {
9
9
  };
10
10
  readonly chromiumBinary: {
11
11
  readonly type: "string";
12
- readonly description: "Path to a custom Chromium-based binary (overrides browser)";
12
+ readonly description: "Custom Chromium-based binary (overrides browser)";
13
13
  };
14
14
  readonly geckoBinary: {
15
15
  readonly type: "string";
16
- readonly description: "Path to a custom Gecko/Firefox binary (overrides browser)";
16
+ readonly description: "Custom Gecko/Firefox binary (overrides browser)";
17
17
  };
18
18
  readonly host: {
19
19
  readonly type: "string";
20
- readonly description: "Dev server bind host. Use 0.0.0.0 for Docker or devcontainers. Defaults to 127.0.0.1";
20
+ readonly description: "Bind host, default 127.0.0.1. Use 0.0.0.0 in Docker or devcontainers.";
21
21
  };
22
22
  readonly publicHost: {
23
23
  readonly type: "string";
24
- readonly description: "Connectable host the browser dials for HMR and reload when it differs from the bind host";
24
+ readonly description: "Host the browser dials for HMR and reload when it differs from the bind host";
25
25
  };
26
26
  readonly extensions: {
27
27
  readonly type: "array";
28
28
  readonly items: {
29
29
  readonly type: "string";
30
30
  };
31
- readonly description: "Companion extension paths or store URLs to load alongside the project";
31
+ readonly description: "Extra extension paths or store URLs to load alongside the project";
32
32
  };
33
33
  };
34
34
  export interface LaunchFlagArgs {
@@ -0,0 +1,16 @@
1
+ export declare const INSTALL_HEADER = "x-extensiondev-install";
2
+ export declare const SESSION_HEADER = "x-extensiondev-session";
3
+ export declare const TOOL_HEADER = "x-extensiondev-tool";
4
+ export declare const ROTATE_AFTER_MS: number;
5
+ export interface StoredInstallIdentity {
6
+ version: 1;
7
+ installId: string;
8
+ rotatedAt: number;
9
+ }
10
+ export declare function installIdentityDir(): string;
11
+ export declare function installIdentityPath(): string;
12
+ export declare function telemetryDisabled(): boolean;
13
+ export declare function resolveInstallId(now?: number): string;
14
+ export declare function sessionId(): string;
15
+ export declare function resetSessionIdentityForTests(): void;
16
+ export declare function identityHeaders(tool: string): Record<string, string>;
@@ -5,8 +5,8 @@ export declare const schema: {
5
5
  type: "object";
6
6
  properties: {
7
7
  projectPath: {
8
- type: string;
9
- description: string;
8
+ readonly type: "string";
9
+ readonly description: "Extension project root";
10
10
  };
11
11
  feature: {
12
12
  type: string;
@@ -0,0 +1,29 @@
1
+ export declare const schema: {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: {
5
+ type: "object";
6
+ properties: {
7
+ projectPath: {
8
+ readonly type: "string";
9
+ readonly description: "Extension project root";
10
+ };
11
+ browser: {
12
+ type: string;
13
+ default: string;
14
+ description: string;
15
+ };
16
+ format: {
17
+ type: string;
18
+ enum: string[];
19
+ default: string;
20
+ };
21
+ };
22
+ required: string[];
23
+ };
24
+ };
25
+ export declare function handler(args: {
26
+ projectPath: string;
27
+ browser?: string;
28
+ format?: string;
29
+ }): Promise<string>;
@@ -0,0 +1,33 @@
1
+ export declare const schema: {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: {
5
+ type: "object";
6
+ properties: {
7
+ action: {
8
+ type: string;
9
+ enum: string[];
10
+ default: string;
11
+ };
12
+ project: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ deviceCode: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ api: {
21
+ readonly type: "string";
22
+ readonly description: "Platform base URL (default EXTENSION_DEV_API_URL, else https://www.extension.dev)";
23
+ };
24
+ };
25
+ required: never[];
26
+ };
27
+ };
28
+ export declare function handler(args: {
29
+ action?: string;
30
+ project?: string;
31
+ deviceCode?: string;
32
+ api?: string;
33
+ }): Promise<string>;
@@ -0,0 +1,39 @@
1
+ export declare const schema: {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: {
5
+ type: "object";
6
+ properties: {
7
+ action: {
8
+ type: string;
9
+ enum: string[];
10
+ default: string;
11
+ };
12
+ browsers: {
13
+ type: string;
14
+ items: {
15
+ type: string;
16
+ enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari"];
17
+ };
18
+ description: string;
19
+ };
20
+ browser: {
21
+ type: string;
22
+ enum: readonly ["chrome", "chromium", "edge", "firefox"];
23
+ description: string;
24
+ };
25
+ all: {
26
+ type: string;
27
+ default: boolean;
28
+ description: string;
29
+ };
30
+ };
31
+ required: never[];
32
+ };
33
+ };
34
+ export declare function handler(args: {
35
+ action?: string;
36
+ browsers?: string[];
37
+ browser?: string;
38
+ all?: boolean;
39
+ }): Promise<string>;
@@ -5,14 +5,13 @@ export declare const schema: {
5
5
  type: "object";
6
6
  properties: {
7
7
  projectPath: {
8
- type: string;
9
- description: string;
8
+ readonly type: "string";
9
+ readonly description: "Extension project root";
10
10
  };
11
11
  browser: {
12
- type: string;
13
- enum: string[];
14
- default: string;
15
- description: string;
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"];
14
+ readonly default: "chrome";
16
15
  };
17
16
  zip: {
18
17
  type: string;
@@ -1,20 +1 @@
1
- export declare const schema: {
2
- name: string;
3
- description: string;
4
- inputSchema: {
5
- type: "object";
6
- properties: {
7
- browsers: {
8
- type: string;
9
- items: {
10
- type: string;
11
- enum: string[];
12
- };
13
- description: string;
14
- };
15
- };
16
- };
17
- };
18
- export declare function handler(args: {
19
- browsers?: string[];
20
- }): Promise<string>;
1
+ export declare function detectBrowsers(browsers?: string[]): Promise<string>;
@@ -27,7 +27,7 @@ export declare const schema: {
27
27
  };
28
28
  profile: {
29
29
  readonly type: "string";
30
- readonly description: "Browser profile path, or \"false\" to reuse the default user profile. Omit for a fresh throwaway profile.";
30
+ readonly description: "Profile path, or \"false\" to reuse the real user profile. Omit for a throwaway one.";
31
31
  };
32
32
  startingUrl: {
33
33
  readonly type: "string";
@@ -35,35 +35,35 @@ export declare const schema: {
35
35
  };
36
36
  chromiumBinary: {
37
37
  readonly type: "string";
38
- readonly description: "Path to a custom Chromium-based binary (overrides browser)";
38
+ readonly description: "Custom Chromium-based binary (overrides browser)";
39
39
  };
40
40
  geckoBinary: {
41
41
  readonly type: "string";
42
- readonly description: "Path to a custom Gecko/Firefox binary (overrides browser)";
42
+ readonly description: "Custom Gecko/Firefox binary (overrides browser)";
43
43
  };
44
44
  host: {
45
45
  readonly type: "string";
46
- readonly description: "Dev server bind host. Use 0.0.0.0 for Docker or devcontainers. Defaults to 127.0.0.1";
46
+ readonly description: "Bind host, default 127.0.0.1. Use 0.0.0.0 in Docker or devcontainers.";
47
47
  };
48
48
  publicHost: {
49
49
  readonly type: "string";
50
- readonly description: "Connectable host the browser dials for HMR and reload when it differs from the bind host";
50
+ readonly description: "Host the browser dials for HMR and reload when it differs from the bind host";
51
51
  };
52
52
  extensions: {
53
53
  readonly type: "array";
54
54
  readonly items: {
55
55
  readonly type: "string";
56
56
  };
57
- readonly description: "Companion extension paths or store URLs to load alongside the project";
57
+ readonly description: "Extra extension paths or store URLs to load alongside the project";
58
58
  };
59
59
  projectPath: {
60
- type: string;
61
- description: string;
60
+ readonly type: "string";
61
+ readonly description: "Extension project root";
62
62
  };
63
63
  browser: {
64
- type: string;
65
- enum: string[];
66
- default: string;
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"];
66
+ readonly default: "chrome";
67
67
  };
68
68
  port: {
69
69
  type: string;
@@ -6,8 +6,8 @@ export declare const schema: {
6
6
  type: "object";
7
7
  properties: {
8
8
  projectPath: {
9
- type: string;
10
- description: string;
9
+ readonly type: "string";
10
+ readonly description: "Extension project root (needs a live dev session)";
11
11
  };
12
12
  tab: {
13
13
  type: string;
@@ -55,12 +55,12 @@ export declare const schema: {
55
55
  description: string;
56
56
  };
57
57
  browser: {
58
- type: string;
59
- description: string;
58
+ readonly type: "string";
59
+ readonly description: "Session browser; defaults to this project's live session";
60
60
  };
61
61
  timeout: {
62
- type: string;
63
- description: string;
62
+ readonly type: "number";
63
+ readonly description: "Command timeout in ms (default 5000)";
64
64
  };
65
65
  };
66
66
  required: string[];
@@ -6,8 +6,8 @@ export declare const schema: {
6
6
  type: "object";
7
7
  properties: {
8
8
  projectPath: {
9
- type: string;
10
- description: string;
9
+ readonly type: "string";
10
+ readonly description: "Extension project root (needs a live dev session)";
11
11
  };
12
12
  expression: {
13
13
  type: string;
@@ -27,12 +27,12 @@ export declare const schema: {
27
27
  description: string;
28
28
  };
29
29
  browser: {
30
- type: string;
31
- description: string;
30
+ readonly type: "string";
31
+ readonly description: "Session browser; defaults to this project's live session";
32
32
  };
33
33
  timeout: {
34
- type: string;
35
- description: string;
34
+ readonly type: "number";
35
+ readonly description: "Command timeout in ms (default 5000)";
36
36
  };
37
37
  };
38
38
  required: string[];
@@ -1,25 +1,4 @@
1
- export declare const schema: {
2
- name: string;
3
- description: string;
4
- inputSchema: {
5
- type: "object";
6
- properties: {
7
- slug: {
8
- type: string;
9
- description: string;
10
- };
11
- files: {
12
- type: string;
13
- items: {
14
- type: string;
15
- };
16
- description: string;
17
- };
18
- };
19
- required: string[];
20
- };
21
- };
22
- export declare function handler(args: {
1
+ export declare function readTemplateSource(args: {
23
2
  slug: string;
24
3
  files?: string[];
25
4
  }): Promise<string>;
@@ -5,18 +5,42 @@ export declare const schema: {
5
5
  type: "object";
6
6
  properties: {
7
7
  projectPath: {
8
+ readonly type: "string";
9
+ readonly description: "Extension project root (needs a live dev session)";
10
+ };
11
+ url: {
8
12
  type: string;
9
13
  description: string;
10
14
  };
15
+ probe: {
16
+ type: string;
17
+ items: {
18
+ type: string;
19
+ };
20
+ description: string;
21
+ };
22
+ include: {
23
+ type: string;
24
+ items: {
25
+ type: string;
26
+ enum: string[];
27
+ };
28
+ default: string[];
29
+ description: string;
30
+ };
11
31
  browser: {
32
+ readonly type: "string";
33
+ readonly description: "Session browser; defaults to this project's live session";
34
+ };
35
+ maxBytes: {
12
36
  type: string;
13
- default: string;
37
+ default: number;
14
38
  description: string;
15
39
  };
16
- format: {
40
+ deepDom: {
17
41
  type: string;
18
- enum: string[];
19
- default: string;
42
+ default: boolean;
43
+ description: string;
20
44
  };
21
45
  };
22
46
  required: string[];
@@ -24,6 +48,10 @@ export declare const schema: {
24
48
  };
25
49
  export declare function handler(args: {
26
50
  projectPath: string;
51
+ url?: string;
52
+ probe?: string[];
53
+ include?: string[];
27
54
  browser?: string;
28
- format?: string;
55
+ maxBytes?: number;
56
+ deepDom?: boolean;
29
57
  }): Promise<string>;
@@ -1,18 +1 @@
1
- export declare const schema: {
2
- name: string;
3
- description: string;
4
- inputSchema: {
5
- type: "object";
6
- properties: {
7
- browser: {
8
- type: string;
9
- enum: string[];
10
- description: string;
11
- };
12
- };
13
- required: string[];
14
- };
15
- };
16
- export declare function handler(args: {
17
- browser: string;
18
- }): Promise<string>;
1
+ export declare function installManagedBrowser(browser: string): Promise<string>;
@@ -1,9 +1 @@
1
- export declare const schema: {
2
- name: string;
3
- description: string;
4
- inputSchema: {
5
- type: "object";
6
- properties: {};
7
- };
8
- };
9
- export declare function handler(): Promise<string>;
1
+ export declare function listManagedBrowsers(): Promise<string>;
@@ -5,12 +5,12 @@ export declare const schema: {
5
5
  type: "object";
6
6
  properties: {
7
7
  projectPath: {
8
- type: string;
9
- description: string;
8
+ readonly type: "string";
9
+ readonly description: "Extension project root (needs a live dev session)";
10
10
  };
11
11
  browser: {
12
- type: string;
13
- description: string;
12
+ readonly type: "string";
13
+ readonly description: "Session browser; defaults to this project's live session";
14
14
  };
15
15
  };
16
16
  required: string[];
@@ -1,38 +1,4 @@
1
- export declare const schema: {
2
- name: string;
3
- description: string;
4
- inputSchema: {
5
- type: "object";
6
- properties: {
7
- surface: {
8
- type: string;
9
- enum: string[];
10
- description: string;
11
- };
12
- framework: {
13
- type: string;
14
- enum: string[];
15
- description: string;
16
- };
17
- tags: {
18
- type: string;
19
- items: {
20
- type: string;
21
- };
22
- description: string;
23
- };
24
- featured: {
25
- type: string;
26
- description: string;
27
- };
28
- query: {
29
- type: string;
30
- description: string;
31
- };
32
- };
33
- };
34
- };
35
- export declare function handler(args: {
1
+ export declare function searchTemplates(args: {
36
2
  surface?: string;
37
3
  framework?: string;
38
4
  tags?: string[];
@@ -1,26 +1,4 @@
1
- export declare const schema: {
2
- name: string;
3
- description: string;
4
- inputSchema: {
5
- type: "object";
6
- properties: {
7
- project: {
8
- type: string;
9
- description: string;
10
- };
11
- deviceCode: {
12
- type: string;
13
- description: string;
14
- };
15
- api: {
16
- type: string;
17
- description: string;
18
- };
19
- };
20
- required: string[];
21
- };
22
- };
23
- export declare function handler(args: {
1
+ export declare function loginToProject(args: {
24
2
  project: string;
25
3
  deviceCode?: string;
26
4
  api?: string;
@@ -1,9 +1 @@
1
- export declare const schema: {
2
- name: string;
3
- description: string;
4
- inputSchema: {
5
- type: "object";
6
- properties: {};
7
- };
8
- };
9
- export declare function handler(): Promise<string>;
1
+ export declare function clearLocalCredentials(): Promise<string>;
@@ -5,8 +5,8 @@ export declare const schema: {
5
5
  type: "object";
6
6
  properties: {
7
7
  projectPath: {
8
- type: string;
9
- description: string;
8
+ readonly type: "string";
9
+ readonly description: "Extension project root (needs a live dev session)";
10
10
  };
11
11
  browser: {
12
12
  type: string;
@@ -12,8 +12,8 @@ export declare const schema: {
12
12
  type: "object";
13
13
  properties: {
14
14
  projectPath: {
15
- type: string;
16
- description: string;
15
+ readonly type: "string";
16
+ readonly description: "Extension project root (needs a live dev session)";
17
17
  };
18
18
  surface: {
19
19
  type: string;
@@ -34,12 +34,12 @@ export declare const schema: {
34
34
  description: string;
35
35
  };
36
36
  browser: {
37
- type: string;
38
- description: string;
37
+ readonly type: "string";
38
+ readonly description: "Session browser; defaults to this project's live session";
39
39
  };
40
40
  timeout: {
41
- type: string;
42
- description: string;
41
+ readonly type: "number";
42
+ readonly description: "Command timeout in ms (default 5000)";
43
43
  };
44
44
  };
45
45
  required: string[];
@@ -5,12 +5,12 @@ export declare const schema: {
5
5
  type: "object";
6
6
  properties: {
7
7
  projectPath: {
8
- type: string;
9
- description: string;
8
+ readonly type: "string";
9
+ readonly description: "Extension project root";
10
10
  };
11
11
  browser: {
12
12
  type: string;
13
- enum: string[];
13
+ enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari"];
14
14
  default: string;
15
15
  description: string;
16
16
  };
@@ -39,7 +39,7 @@ export declare const schema: {
39
39
  };
40
40
  openIn: {
41
41
  type: string;
42
- enum: string[];
42
+ enum: readonly ["chrome", "chromium", "edge", "brave", "opera", "vivaldi", "yandex", "firefox", "waterfox", "librewolf", "safari"];
43
43
  description: string;
44
44
  };
45
45
  share: {
@@ -13,8 +13,8 @@ export declare const schema: {
13
13
  description: string;
14
14
  };
15
15
  api: {
16
- type: string;
17
- description: string;
16
+ readonly type: "string";
17
+ readonly description: "Platform base URL (default EXTENSION_DEV_API_URL, else https://www.extension.dev)";
18
18
  };
19
19
  };
20
20
  required: never[];