@extension.dev/mcp 5.1.0 → 5.1.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.
@@ -10,7 +10,7 @@
10
10
  "name": "extension-mcp",
11
11
  "source": "./",
12
12
  "description": "MCP tools for browser extension development: scaffold from 60+ templates, run the dev server with HMR, inspect the live DOM and logs, and publish store-ready builds for Chrome, Edge, and Firefox.",
13
- "version": "5.1.0",
13
+ "version": "5.1.1",
14
14
  "category": "development",
15
15
  "author": {
16
16
  "name": "Cezar Augusto"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "extension-mcp",
3
3
  "description": "MCP tools for browser extension development: scaffold from 60+ templates, run the dev server with HMR, inspect the live DOM and logs, and publish store-ready builds for Chrome, Edge, and Firefox. Ships /extension, /extension-add, /extension-debug, and /extension-publish commands.",
4
- "version": "5.1.0",
4
+ "version": "5.1.1",
5
5
  "author": {
6
6
  "name": "Cezar Augusto",
7
7
  "email": "boss@cezaraugusto.net",
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.1.1
4
+
5
+ ### Added
6
+
7
+ - `extension_deploy` warns when a Firefox or Edge submission ships without
8
+ the STORE.md notes the platform submits automatically (Firefox reviewer
9
+ and release notes, Edge certification notes). The warnings ride along in
10
+ the result as `warnings` and never block the submission; Chrome-only
11
+ submissions stay silent.
12
+
3
13
  ## 5.1.0
4
14
 
5
15
  The engine closed its entire open bug range (Extension.js 61-73) in the
package/dist/module.js CHANGED
@@ -36,7 +36,8 @@ var deploy_namespaceObject = {};
36
36
  __webpack_require__.r(deploy_namespaceObject);
37
37
  __webpack_require__.d(deploy_namespaceObject, {
38
38
  handler: ()=>deploy_handler,
39
- schema: ()=>deploy_schema
39
+ schema: ()=>deploy_schema,
40
+ storeMdWarnings: ()=>storeMdWarnings
40
41
  });
41
42
  var detect_browsers_namespaceObject = {};
42
43
  __webpack_require__.r(detect_browsers_namespaceObject);
@@ -202,7 +203,7 @@ __webpack_require__.d(whoami_namespaceObject, {
202
203
  handler: ()=>whoami_handler,
203
204
  schema: ()=>whoami_schema
204
205
  });
205
- var package_namespaceObject = JSON.parse('{"rE":"4.9.0","El":{"OP":"^4.0.13"}}');
206
+ var package_namespaceObject = JSON.parse('{"rE":"5.1.0","El":{"OP":"^4.0.13"}}');
206
207
  function scaffoldEnginePin(projectPath) {
207
208
  try {
208
209
  const pkg = JSON.parse(node_fs.readFileSync(node_path.join(projectPath, "package.json"), "utf8"));
@@ -4462,6 +4463,32 @@ async function release_promote_handler(args) {
4462
4463
  return JSON.stringify(data);
4463
4464
  }
4464
4465
  const deploy_DEFAULT_API = "https://www.extension.dev";
4466
+ function storeMdWarnings(browsers, cwd) {
4467
+ const wantsFirefox = browsers.includes("firefox");
4468
+ const wantsEdge = browsers.includes("edge");
4469
+ if (!wantsFirefox && !wantsEdge) return [];
4470
+ let content;
4471
+ try {
4472
+ content = node_fs.readFileSync(node_path.join(cwd, "STORE.md"), "utf8");
4473
+ } catch {
4474
+ return [
4475
+ "No STORE.md found in the project root. Reviewer notes (Firefox) and certification notes (Edge) will not accompany the submission. See the extension-dev skill's store-md reference."
4476
+ ];
4477
+ }
4478
+ const hasField = (section, field)=>{
4479
+ const parts = content.split(/^## +/m);
4480
+ const match = parts.find((p)=>section.test(p.split("\n", 1)[0] ?? ""));
4481
+ if (!match) return false;
4482
+ const sub = match.split(/^### +/m).find((p)=>field.test(p.split("\n", 1)[0] ?? ""));
4483
+ if (!sub) return false;
4484
+ const body = sub.split("\n").slice(1).join("\n");
4485
+ return body.replace(/<!--[\s\S]*?-->/g, "").trim().length > 0;
4486
+ };
4487
+ const warnings = [];
4488
+ if (wantsFirefox && !hasField(/firefox|amo/i, /reviewer notes/i)) warnings.push("STORE.md has no Firefox reviewer notes; AMO reviews go faster with test credentials and steps.");
4489
+ if (wantsEdge && !hasField(/edge/i, /certification notes/i)) warnings.push("STORE.md has no Edge certification notes; the certification team gets no testing guidance.");
4490
+ return warnings;
4491
+ }
4465
4492
  const deploy_schema = {
4466
4493
  name: "extension_deploy",
4467
4494
  description: "Submit a built extension to the Chrome Web Store, Firefox AMO, and/or Edge Add-ons THROUGH extension.dev, which holds your store credentials and dispatches the release from your project's mirror CI. DEFAULTS TO A DRY RUN (preflight: verifies auth, the project, that the build exists, and the store workflow - dispatches nothing); pass dryRun:false to actually submit, which is irreversible and enters store review. The target project is identified by your token (extension_login or a release token in EXTENSION_DEV_TOKEN); store credentials are never tool arguments and local files are not uploaded. Pass browsers + buildSha. Posts to the platform's CLI store-submission endpoint.",
@@ -4559,11 +4586,14 @@ async function deploy_handler(args) {
4559
4586
  };
4560
4587
  }
4561
4588
  if (!res.ok) return deploy_fail("DeployError", `submit failed (${res.status}): ${data?.message || text || "unknown error"}`);
4562
- return JSON.stringify({
4589
+ const warnings = storeMdWarnings(browsers, process.cwd());
4590
+ const result = {
4563
4591
  mode: "platform",
4564
4592
  dryRun,
4565
4593
  ...data
4566
- });
4594
+ };
4595
+ if (warnings.length > 0) result.warnings = warnings;
4596
+ return JSON.stringify(result);
4567
4597
  }
4568
4598
  function doctor_readReadyContract(projectPath, browser) {
4569
4599
  try {
@@ -1,3 +1,4 @@
1
+ export declare function storeMdWarnings(browsers: string[], cwd: string): string[];
1
2
  export interface DeployToolArgs {
2
3
  browsers: string[];
3
4
  buildSha: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@extension.dev/mcp",
3
3
  "type": "module",
4
- "version": "5.1.0",
4
+ "version": "5.1.1",
5
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": "MIT",
package/server.json CHANGED
@@ -7,13 +7,13 @@
7
7
  "source": "github"
8
8
  },
9
9
  "websiteUrl": "https://extension.dev",
10
- "version": "5.1.0",
10
+ "version": "5.1.1",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "registryBaseUrl": "https://registry.npmjs.org",
15
15
  "identifier": "@extension.dev/mcp",
16
- "version": "5.1.0",
16
+ "version": "5.1.1",
17
17
  "runtimeHint": "npx",
18
18
  "transport": {
19
19
  "type": "stdio"