machine-bridge-mcp 0.16.0 → 0.16.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.16.1 - 2026-07-13
4
+
5
+ ### Fixed
6
+
7
+ - Fix `machine-mcp` startup after 0.16.0 by keeping normalized policy capabilities immutable while allowing the sealed CLI-owned state record to update persistence metadata.
8
+ - Add regression coverage proving `updatedAt` remains writable without permitting capability fields or undeclared fields to be mutated.
9
+
3
10
  ## 0.16.0 - 2026-07-13
4
11
 
5
12
  ### Runtime boundaries and lifecycle
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "Machine Bridge Browser",
4
- "version": "0.16.0",
4
+ "version": "0.16.1",
5
5
  "description": "Connects the current Chromium browser profile to the local Machine Bridge runtime for user-authorized automation.",
6
6
  "permissions": [
7
7
  "tabs",
@@ -30,5 +30,5 @@
30
30
  "action": {
31
31
  "default_title": "Machine Bridge Browser"
32
32
  },
33
- "version_name": "0.16.0"
33
+ "version_name": "0.16.1"
34
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "machine-bridge-mcp",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
4
4
  "description": "Cross-client MCP bridge for local agent context, structured browser and application automation, files, Git, processes, resources, and durable jobs over stdio or OAuth relay.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -215,8 +215,6 @@ async function listWindowsApplications(configuredRoots, home, context, throwIfCa
215
215
  const roots = configuredRoots || [
216
216
  join(process.env.APPDATA || home, "Microsoft", "Windows", "Start Menu", "Programs"),
217
217
  process.env.ProgramData ? join(process.env.ProgramData, "Microsoft", "Windows", "Start Menu", "Programs") : "",
218
- process.env.ProgramFiles,
219
- process.env["ProgramFiles(x86)"],
220
218
  ].filter(Boolean);
221
219
  return listExecutableRoots(roots, new Set([".exe", ".lnk"]), context, throwIfCancelled);
222
220
  }
@@ -15,14 +15,26 @@ export function resolvePolicy(args = {}, stored = {}) {
15
15
  const explicitKeys = ["profile", ...POLICY_OVERRIDE_KEYS];
16
16
  const hasExplicit = explicitKeys.some((key) => Object.prototype.hasOwnProperty.call(args, key));
17
17
  const base = { ...selectPolicyBase(args, stored, hasStored) };
18
- if (!hasExplicit) return normalizePolicy(base);
18
+ if (!hasExplicit) return policyState(base);
19
19
  applyPolicyOverrides(base, args);
20
20
  if (args.profile === undefined || POLICY_OVERRIDE_KEYS.some((key) => Object.prototype.hasOwnProperty.call(args, key))) {
21
21
  base.profile = "custom";
22
22
  base.origin = "custom";
23
23
  base.revision = DEFAULT_POLICY_REVISION;
24
24
  }
25
- return normalizePolicy(base);
25
+ return policyState(base);
26
+ }
27
+
28
+ function policyState(policy) {
29
+ // Capability fields retain the canonical immutable contract. The CLI owns a
30
+ // sealed persistence record with exactly one writable metadata field.
31
+ const normalized = normalizePolicy(policy);
32
+ const state = {};
33
+ for (const [key, value] of Object.entries(normalized)) {
34
+ Object.defineProperty(state, key, { value, enumerable: true, writable: false, configurable: false });
35
+ }
36
+ Object.defineProperty(state, "updatedAt", { value: undefined, enumerable: true, writable: true, configurable: false });
37
+ return Object.seal(state);
26
38
  }
27
39
 
28
40
  function selectPolicyBase(args, stored, hasStored) {
@@ -17,7 +17,7 @@ import {
17
17
  } from "./http";
18
18
 
19
19
  const SERVER_NAME = String(serverMetadata.name);
20
- const SERVER_VERSION = "0.16.0";
20
+ const SERVER_VERSION = "0.16.1";
21
21
  const MCP_PROTOCOL_VERSION = String(serverMetadata.protocolVersion);
22
22
  const MCP_SUPPORTED_PROTOCOL_VERSIONS = serverMetadata.supportedProtocolVersions.map((value) => String(value));
23
23
  const JSONRPC_VERSION = "2.0";