deadbyte-mcp 0.15.36 → 0.15.37
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/MANIFEST.SHA256 +55 -27
- package/PROVENANCE.json +114 -87
- package/README.txt +12 -12
- package/RELEASE.json +214 -187
- package/SBOM.cdx.json +10 -25
- package/TEST-MATRIX.json +297 -258
- package/bridge/package.json +1 -1
- package/bridge/src/bridge-health-r59.mjs +4 -3
- package/bridge/src/bridge.mjs +71 -14
- package/bridge/src/canonical-json-r60.mjs +13 -0
- package/bridge/src/reconnect-delay-r60.mjs +31 -0
- package/bridge/src/remote-call-claims-r60.mjs +157 -0
- package/bridge/src/remote-dispatch-r60.mjs +75 -0
- package/controller/deadbyte-controller.ps1 +6 -1
- package/controller/deadbyte-process-policy.json +4 -4
- package/docs/R59-PROVENANCE.json +87 -0
- package/docs/R59-RELEASE.json +187 -0
- package/docs/R59-SBOM.cdx.json +68 -0
- package/docs/R59-TEST-MATRIX.json +258 -0
- package/docs/R59-bridge-package.json +13 -0
- package/docs/R59-package-lock.json +184 -0
- package/docs/R59-package.json +106 -0
- package/docs/R59-version.mjs +6 -0
- package/docs/R60-TASK-CONTRACT.md +22 -0
- package/package.json +5 -3
- package/scripts/full-regression-r60.mjs +32 -0
- package/scripts/gate-windows-r60-prepublish.ps1 +74 -0
- package/src/capability-snapshot.mjs +6 -2
- package/src/deadbyte-cli.mjs +80 -34
- package/src/remote-authority.mjs +56 -0
- package/src/remote-enforcement-probe-r60.mjs +17 -0
- package/src/remote-live-log.mjs +19 -2
- package/src/remote-log-decode-r60.mjs +32 -0
- package/src/remote-mcp-machine-smoke-client.mjs +19 -1
- package/src/remote-session-guardian.mjs +20 -3
- package/src/tool-audit.mjs +5 -0
- package/src/version.mjs +1 -1
- package/test/r48-release-contract.test.mjs +1 -1
- package/test/r51-runtime-coherence.test.mjs +2 -2
- package/test/r58-cleanup-retention.test.mjs +9 -3
- package/test/r58-concurrent-recovery.test.mjs +9 -3
- package/test/r58-controller-live-local.test.mjs +22 -3
- package/test/r58-stale-owner.test.mjs +2 -2
- package/test/r59-release-contract.test.mjs +6 -6
- package/test/r60-authority-coherence.test.mjs +36 -0
- package/test/r60-authority-enforcement.test.mjs +28 -0
- package/test/r60-bridge-dispatch.test.mjs +119 -0
- package/test/r60-clock-discipline.test.mjs +15 -0
- package/test/r60-live-timeline.test.mjs +29 -0
- package/test/r60-reconnect-errors.test.mjs +21 -0
- package/test/r60-reconnect-jitter.test.mjs +18 -0
- package/test/r60-release-contract.test.mjs +81 -0
- package/test/r60-remote-call-recovery.test.mjs +170 -0
- package/test/r60-windows-log-decode.test.mjs +25 -0
- package/test/remote-live-log-r37.test.mjs +1 -1
- package/test/remote-session-cli.test.mjs +200 -43
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "deadbyte-mcp",
|
|
3
|
+
"version": "0.15.36",
|
|
4
|
+
"lockfileVersion": 3,
|
|
5
|
+
"requires": true,
|
|
6
|
+
"packages": {
|
|
7
|
+
"": {
|
|
8
|
+
"name": "deadbyte-mcp",
|
|
9
|
+
"version": "0.15.36",
|
|
10
|
+
"bundleDependencies": [
|
|
11
|
+
"@modelcontextprotocol/server",
|
|
12
|
+
"@modelcontextprotocol/client",
|
|
13
|
+
"typescript",
|
|
14
|
+
"zod"
|
|
15
|
+
],
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@modelcontextprotocol/client": "2.1.0",
|
|
18
|
+
"@modelcontextprotocol/server": "2.1.0",
|
|
19
|
+
"typescript": "5.9.3",
|
|
20
|
+
"zod": "4.4.3"
|
|
21
|
+
},
|
|
22
|
+
"bin": {
|
|
23
|
+
"deadbyte-mcp": "src/deadbyte-cli.mjs"
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=22"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"node_modules/@modelcontextprotocol/client": {
|
|
30
|
+
"version": "2.1.0",
|
|
31
|
+
"inBundle": true,
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@modelcontextprotocol/core": "2.1.0",
|
|
35
|
+
"cross-spawn": "^7.0.5",
|
|
36
|
+
"eventsource": "^3.0.2",
|
|
37
|
+
"eventsource-parser": "^3.0.0",
|
|
38
|
+
"jose": "^6.1.3",
|
|
39
|
+
"pkce-challenge": "^5.0.0",
|
|
40
|
+
"zod": "^4.2.0"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=20"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"node_modules/@modelcontextprotocol/core": {
|
|
47
|
+
"version": "2.1.0",
|
|
48
|
+
"inBundle": true,
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"zod": "^4.2.0"
|
|
52
|
+
},
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=20"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"node_modules/@modelcontextprotocol/server": {
|
|
58
|
+
"version": "2.1.0",
|
|
59
|
+
"inBundle": true,
|
|
60
|
+
"license": "MIT",
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@modelcontextprotocol/core": "2.1.0",
|
|
63
|
+
"zod": "^4.2.0"
|
|
64
|
+
},
|
|
65
|
+
"engines": {
|
|
66
|
+
"node": ">=20"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"node_modules/cross-spawn": {
|
|
70
|
+
"version": "7.0.6",
|
|
71
|
+
"inBundle": true,
|
|
72
|
+
"license": "MIT",
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"path-key": "^3.1.0",
|
|
75
|
+
"shebang-command": "^2.0.0",
|
|
76
|
+
"which": "^2.0.1"
|
|
77
|
+
},
|
|
78
|
+
"engines": {
|
|
79
|
+
"node": ">= 8"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"node_modules/eventsource": {
|
|
83
|
+
"version": "3.0.7",
|
|
84
|
+
"inBundle": true,
|
|
85
|
+
"license": "MIT",
|
|
86
|
+
"dependencies": {
|
|
87
|
+
"eventsource-parser": "^3.0.1"
|
|
88
|
+
},
|
|
89
|
+
"engines": {
|
|
90
|
+
"node": ">=18.0.0"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"node_modules/eventsource-parser": {
|
|
94
|
+
"version": "3.1.1",
|
|
95
|
+
"inBundle": true,
|
|
96
|
+
"license": "MIT",
|
|
97
|
+
"engines": {
|
|
98
|
+
"node": ">=18.0.0"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"node_modules/isexe": {
|
|
102
|
+
"version": "2.0.0",
|
|
103
|
+
"inBundle": true,
|
|
104
|
+
"license": "ISC"
|
|
105
|
+
},
|
|
106
|
+
"node_modules/jose": {
|
|
107
|
+
"version": "6.2.10",
|
|
108
|
+
"inBundle": true,
|
|
109
|
+
"license": "MIT",
|
|
110
|
+
"funding": {
|
|
111
|
+
"url": "https://github.com/sponsors/panva"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"node_modules/path-key": {
|
|
115
|
+
"version": "3.1.1",
|
|
116
|
+
"inBundle": true,
|
|
117
|
+
"license": "MIT",
|
|
118
|
+
"engines": {
|
|
119
|
+
"node": ">=8"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"node_modules/pkce-challenge": {
|
|
123
|
+
"version": "5.0.1",
|
|
124
|
+
"inBundle": true,
|
|
125
|
+
"license": "MIT",
|
|
126
|
+
"engines": {
|
|
127
|
+
"node": ">=16.20.0"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"node_modules/shebang-command": {
|
|
131
|
+
"version": "2.0.0",
|
|
132
|
+
"inBundle": true,
|
|
133
|
+
"license": "MIT",
|
|
134
|
+
"dependencies": {
|
|
135
|
+
"shebang-regex": "^3.0.0"
|
|
136
|
+
},
|
|
137
|
+
"engines": {
|
|
138
|
+
"node": ">=8"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"node_modules/shebang-regex": {
|
|
142
|
+
"version": "3.0.0",
|
|
143
|
+
"inBundle": true,
|
|
144
|
+
"license": "MIT",
|
|
145
|
+
"engines": {
|
|
146
|
+
"node": ">=8"
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"node_modules/typescript": {
|
|
150
|
+
"version": "5.9.3",
|
|
151
|
+
"inBundle": true,
|
|
152
|
+
"license": "Apache-2.0",
|
|
153
|
+
"bin": {
|
|
154
|
+
"tsc": "bin/tsc",
|
|
155
|
+
"tsserver": "bin/tsserver"
|
|
156
|
+
},
|
|
157
|
+
"engines": {
|
|
158
|
+
"node": ">=14.17"
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"node_modules/which": {
|
|
162
|
+
"version": "2.0.2",
|
|
163
|
+
"inBundle": true,
|
|
164
|
+
"license": "ISC",
|
|
165
|
+
"dependencies": {
|
|
166
|
+
"isexe": "^2.0.0"
|
|
167
|
+
},
|
|
168
|
+
"bin": {
|
|
169
|
+
"node-which": "bin/node-which"
|
|
170
|
+
},
|
|
171
|
+
"engines": {
|
|
172
|
+
"node": ">= 8"
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"node_modules/zod": {
|
|
176
|
+
"version": "4.4.3",
|
|
177
|
+
"inBundle": true,
|
|
178
|
+
"license": "MIT",
|
|
179
|
+
"funding": {
|
|
180
|
+
"url": "https://github.com/sponsors/colinhacks"
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "deadbyte-mcp",
|
|
3
|
+
"version": "0.15.36",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Authenticated MCP agentic runtime with signed skills, persistent model backends, identity-bound remote devices, durable job supervision, immutable release slots, and separately revocable machine authority.",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "node --test test/*.test.mjs",
|
|
12
|
+
"manifest:write": "node scripts/release-manifest.mjs write",
|
|
13
|
+
"manifest:verify": "node scripts/release-manifest.mjs verify",
|
|
14
|
+
"r41:parent:verify": "node scripts/verify-r41-parent.mjs",
|
|
15
|
+
"r41:memory:verify": "node scripts/verify-memory-r41.mjs",
|
|
16
|
+
"r42:parent:verify": "node scripts/verify-r42-parent.mjs",
|
|
17
|
+
"r42:eval": "node scripts/agent-eval-r42.mjs",
|
|
18
|
+
"self-update:runtime": "node scripts/runtime-self-update.mjs",
|
|
19
|
+
"self-update:deferred": "node scripts/deferred-slot-operation-r46.mjs",
|
|
20
|
+
"release:parity": "node scripts/release-parity-r46.mjs",
|
|
21
|
+
"release:final:write": "node scripts/final-closure-r46.mjs",
|
|
22
|
+
"release:final:verify": "node scripts/final-closure-verify-r46.mjs",
|
|
23
|
+
"proof": "node src/proof-cli.mjs workspaces/demo input.txt",
|
|
24
|
+
"verify": "node src/verifier-cli.mjs workspaces/demo evidence/latest.json",
|
|
25
|
+
"trust:init": "node src/trust-init.mjs",
|
|
26
|
+
"mcp": "node src/mcp-server.mjs",
|
|
27
|
+
"mcp:smoke": "node src/mcp-smoke-client.mjs",
|
|
28
|
+
"mcp:agent:smoke": "node --test test/agent-runtime.test.mjs test/agent-runtime-adversarial.test.mjs test/agent-runtime-crash.test.mjs test/agent-task-receipt.test.mjs",
|
|
29
|
+
"mcp:coding:smoke": "node --test test/coding-plane.test.mjs test/coding-plane-adversarial.test.mjs test/coding-runtime.test.mjs test/coding-crash.test.mjs",
|
|
30
|
+
"mcp:machine-fs:smoke": "node src/machine-fs-smoke-client.mjs",
|
|
31
|
+
"mcp:observation:smoke": "node src/observation-smoke-client.mjs",
|
|
32
|
+
"mcp:process:smoke": "node src/process-smoke-client.mjs",
|
|
33
|
+
"process:policy:refresh": "node scripts/refresh-process-policy.mjs",
|
|
34
|
+
"mcp:autonomous:smoke": "node --test test/autonomous-runtime.test.mjs test/autonomous-loop.test.mjs test/autonomous-adversarial.test.mjs test/autonomous-supervisor-integration.test.mjs test/native-diff.test.mjs",
|
|
35
|
+
"containment:build": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-containment.ps1",
|
|
36
|
+
"containment:smoke": "node src/containment-smoke.mjs appcontainer",
|
|
37
|
+
"containment:bootstrap": "node src/containment-bootstrap.mjs",
|
|
38
|
+
"containment:smoke:lpac": "node src/containment-smoke.mjs lpac",
|
|
39
|
+
"containment:smoke:appcontainer": "node src/containment-smoke.mjs appcontainer",
|
|
40
|
+
"containment:construction": "node src/containment-construction.mjs",
|
|
41
|
+
"containment:child-control": "node src/containment-child-control.mjs",
|
|
42
|
+
"contained:run": "node src/contained-cli.mjs workspaces/demo input.txt",
|
|
43
|
+
"contained:smoke": "node src/contained-smoke.mjs",
|
|
44
|
+
"mcp:contained:smoke": "node src/mcp-contained-smoke-client.mjs",
|
|
45
|
+
"gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r59-prepublish.ps1",
|
|
46
|
+
"authority:smoke": "node src/authority-smoke.mjs",
|
|
47
|
+
"mcp:remote:smoke": "node src/remote-mcp-smoke-client.mjs",
|
|
48
|
+
"mcp:host:smoke": "node src/mcp-host-smoke-client.mjs",
|
|
49
|
+
"host:policy:init": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/init-host-policy.ps1",
|
|
50
|
+
"mcp:remote:host:smoke": "node src/remote-mcp-host-smoke-client.mjs",
|
|
51
|
+
"mcp:remote:autonomous:smoke": "node src/remote-mcp-autonomous-smoke-client.mjs",
|
|
52
|
+
"mcp:tunnel-compat:smoke": "node src/tunnel-stdio-compat-smoke.mjs",
|
|
53
|
+
"audit:verify": "node src/deadbyte-cli.mjs audit verify",
|
|
54
|
+
"audit:status": "node src/deadbyte-cli.mjs audit status",
|
|
55
|
+
"desktop:build": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-desktop-r40.ps1",
|
|
56
|
+
"desktop:policy:refresh": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/init-desktop-policy-r40.ps1",
|
|
57
|
+
"r43:parent:verify": "node scripts/verify-r43-parent.mjs",
|
|
58
|
+
"r43:full:test": "node scripts/full-regression-r43.mjs",
|
|
59
|
+
"r44:parent:verify": "node scripts/verify-r44-parent.mjs",
|
|
60
|
+
"r44:full:test": "node scripts/full-regression-r44.mjs",
|
|
61
|
+
"finalize:r44": "node scripts/finalize-r44.mjs",
|
|
62
|
+
"hardware:build": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-hardware-r45.ps1",
|
|
63
|
+
"doctor": "node src/deadbyte-cli.mjs doctor",
|
|
64
|
+
"r45:parent:verify": "node scripts/verify-r45-parent.mjs",
|
|
65
|
+
"r45:full:test": "node scripts/full-regression-r45.mjs",
|
|
66
|
+
"finalize:r45": "node scripts/finalize-r45.mjs",
|
|
67
|
+
"r46:fileless:test": "node --test --test-concurrency=1 test/process-policy.test.mjs test/process-policy-refresh.test.mjs test/release-generation.test.mjs test/process-runtime.test.mjs test/process-mcp-tools.test.mjs test/compact-gateway-r36.test.mjs test/capability-ledger-r36.test.mjs test/remote-device-r44.test.mjs test/observation-runtime.test.mjs test/observation-mcp-tools.test.mjs",
|
|
68
|
+
"r46:full:test": "node scripts/full-regression-r46.mjs",
|
|
69
|
+
"r47:full:test": "node scripts/full-regression-r47.mjs",
|
|
70
|
+
"r47:catalog:test": "node --test --test-concurrency=1 test/full-max-catalog-r47.test.mjs",
|
|
71
|
+
"r47:hardening:test": "node scripts/commander-hardening-gate-r47.mjs",
|
|
72
|
+
"r48:full:test": "node scripts/full-regression-r48.mjs",
|
|
73
|
+
"r48:release:test": "node --test --test-concurrency=1 test/r48-release-contract.test.mjs test/commander-reference-contract-r48.test.mjs test/commander-extended-wire-r48.test.mjs test/commander-external-process-r48.test.mjs test/commander-office-reader-r48.test.mjs test/commander-pdf-r48.test.mjs test/commander-url-reader-r48.test.mjs test/commander-wire-contract-r47.test.mjs test/commander-protocol-adversarial-r48.test.mjs",
|
|
74
|
+
"r48:catalog:test": "node --test --test-concurrency=1 test/full-max-catalog-r48.test.mjs",
|
|
75
|
+
"release:npm": "node scripts/npm-release-r48.mjs",
|
|
76
|
+
"r51:focused:test": "node --test --test-concurrency=1 test/r51-release-contract.test.mjs test/r51-runtime-coherence.test.mjs test/r51-live-log-polling.test.mjs test/coding-runtime.test.mjs test/remote-live-log-r37.test.mjs",
|
|
77
|
+
"r52:focused:test": "node --test --test-concurrency=1 test/r52-release-contract.test.mjs test/r52-offline-predecessor-recovery.test.mjs test/r52-host-revocation.test.mjs test/r51-runtime-coherence.test.mjs test/r51-live-log-polling.test.mjs test/coding-runtime.test.mjs test/remote-live-log-r37.test.mjs test/runtime-self-update.test.mjs",
|
|
78
|
+
"r53:focused:test": "node --test --test-concurrency=1 test/r53-release-contract.test.mjs test/stabilization-update-child-root.test.mjs test/stabilization-state-root.test.mjs test/stabilization-guardian.test.mjs test/stabilization-semver.test.mjs test/stabilization-powershell.test.mjs test/release-slot.test.mjs test/runtime-self-update.test.mjs test/r51-runtime-coherence.test.mjs test/remote-session-cli.test.mjs test/r52-offline-predecessor-recovery.test.mjs test/r52-host-revocation.test.mjs",
|
|
79
|
+
"r54:focused:test": "node --test --test-concurrency=1 test/r54-release-contract.test.mjs test/r54-offline-predecessor-self-exclusion.test.mjs test/r52-offline-predecessor-recovery.test.mjs test/runtime-self-update.test.mjs test/r51-runtime-coherence.test.mjs test/remote-session-cli.test.mjs",
|
|
80
|
+
"r55:focused:test": "node --test --test-concurrency=1 test/r55-release-contract.test.mjs test/r55-offline-predecessor-guardian-family.test.mjs test/r54-offline-predecessor-self-exclusion.test.mjs test/r52-offline-predecessor-recovery.test.mjs test/runtime-self-update.test.mjs test/r51-runtime-coherence.test.mjs test/remote-session-cli.test.mjs",
|
|
81
|
+
"r56:focused:test": "node --test --test-concurrency=1 test/r56-release-contract.test.mjs test/r56-rollback-launcher-restore.test.mjs test/r55-offline-predecessor-guardian-family.test.mjs test/r54-offline-predecessor-self-exclusion.test.mjs test/runtime-self-update.test.mjs test/release-slot.test.mjs test/r51-runtime-coherence.test.mjs",
|
|
82
|
+
"r57:focused:test": "node --test --test-concurrency=1 test/r57-release-contract.test.mjs test/r57-core-startup-race.test.mjs test/r56-rollback-launcher-restore.test.mjs test/r55-offline-predecessor-guardian-family.test.mjs test/r54-offline-predecessor-self-exclusion.test.mjs test/runtime-self-update.test.mjs test/release-slot.test.mjs test/r51-runtime-coherence.test.mjs test/remote-session-cli.test.mjs",
|
|
83
|
+
"r58:focused:test": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/r58-focused.ps1",
|
|
84
|
+
"r58:cross-plane:test": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/r58-cross-plane.ps1",
|
|
85
|
+
"r59:focused:test": "node --test --test-concurrency=1 test/capability-snapshot-r59.test.mjs test/capability-resolver.test.mjs test/runtime-plane-registry-r59.test.mjs test/optional-plane-degraded-r59.test.mjs test/bridge-runtime-r59.test.mjs test/controller-policy-preflight-r59.test.mjs test/r59-tool-surface-compat.test.mjs test/r58-controller-state-coherence.test.mjs",
|
|
86
|
+
"r59:release:test": "node --test --test-concurrency=1 test/r59-release-contract.test.mjs test/r59-tool-surface-compat.test.mjs test/bridge-runtime-r59.test.mjs test/controller-policy-preflight-r59.test.mjs"
|
|
87
|
+
},
|
|
88
|
+
"bundleDependencies": [
|
|
89
|
+
"@modelcontextprotocol/server",
|
|
90
|
+
"@modelcontextprotocol/client",
|
|
91
|
+
"typescript",
|
|
92
|
+
"zod"
|
|
93
|
+
],
|
|
94
|
+
"dependencies": {
|
|
95
|
+
"@modelcontextprotocol/client": "2.1.0",
|
|
96
|
+
"@modelcontextprotocol/server": "2.1.0",
|
|
97
|
+
"typescript": "5.9.3",
|
|
98
|
+
"zod": "4.4.3"
|
|
99
|
+
},
|
|
100
|
+
"bin": {
|
|
101
|
+
"deadbyte-mcp": "src/deadbyte-cli.mjs"
|
|
102
|
+
},
|
|
103
|
+
"publishConfig": {
|
|
104
|
+
"access": "public"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const DEADBYTE_VERSION = '0.15.36';
|
|
2
|
+
export const MCP_PROTOCOL_VERSION = '2026-07-28';
|
|
3
|
+
export const RECEIPT_SCHEMA_V1 = 'deadbyte.receipt.v1';
|
|
4
|
+
export const RECEIPT_SCHEMA_V2 = 'deadbyte.receipt.v2';
|
|
5
|
+
export const RECEIPT_REQUEST_SCHEMA = 'deadbyte.request.v1';
|
|
6
|
+
export const RUNTIME_IDENTITY_SCHEMA = 'deadbyte.runtime.v1';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# R60 Task Contract
|
|
2
|
+
|
|
3
|
+
- TASK_ID: deadbyte-r60-remote-truth-resilience
|
|
4
|
+
- OBJECTIVE: Produce backward-compatible DEADBYTE MCP 0.15.37 with one observed authority truth, execution-backed readiness, durable keyed mutation idempotency, fail-closed keyless ambiguity, bounded reconnect recovery, and low-noise human timeline without audit loss.
|
|
5
|
+
- PARENT_RUNTIME: exact production-accepted 0.15.36 release v0.15.36-090d9db3e0679c0d, release manifest 090d9db3e0679c0d4943f3229ecab7b9fcccbe4f767348a568c9f3bb60d1b431, generation manifest 6134f9f26b680e13ed545da4ab5f3020f411ea2569062fb9c154c8a7e036c9dc.
|
|
6
|
+
- TARGET: deadbyte-mcp@0.15.37, train R60, label REMOTE TRUTH + RESILIENCE HARDENING.
|
|
7
|
+
- METHOD: RED -> smallest fix -> GREEN -> affected regression -> full regression -> Windows gate -> package proof -> activation rollback restore -> registry verification.
|
|
8
|
+
- AUTHORITY: default remote arms Process, Coding, Autonomous only; Desktop and Host stay DISARMED. --desktop, --host and --full widen only the explicitly requested session authority and must read back enforcement before READY.
|
|
9
|
+
- READY: transport presence alone is insufficient; Bridge, Cloud, exact Core generation, MCP execution probe, capability attestation and selected authority vector must all be observed.
|
|
10
|
+
- IDEMPOTENCY: stable idempotency_key plus canonical payload receives durable no-duplicate dispatch semantics across reconnect. Same key with different payload is a hard conflict.
|
|
11
|
+
- LEGACY_MUTATION: keyless requests remain compatible but receive no cross-reconnect exactly-once claim; ambiguous post-dispatch effects fail closed and are never blindly replayed.
|
|
12
|
+
- READ_ONLY_RECOVERY: only explicitly classified read-only operations may re-execute after interruption and only under their original validity and deadline contract.
|
|
13
|
+
- RECONNECT: bounded, jittered, shutdown-aware, one in-flight recovery per component; terminal faults are not retried.
|
|
14
|
+
- CLOCK: wall clock is evidence time; monotonic clocks own elapsed and retry decisions. No global Date.now monkeypatch.
|
|
15
|
+
- HUMAN_TIMELINE: unchanged capability_manifest polling may be suppressed only from presentation; immutable audit and replay keep every event.
|
|
16
|
+
- WINDOWS_TEXT: deterministic BOM and known-source decoding; no heuristic corruption repair.
|
|
17
|
+
- DEPENDENCIES: keep the existing four runtime dependencies. No Supabase, Tiptap, Sharp, ExcelJS, generic shell surface, telemetry, or new framework.
|
|
18
|
+
- PUBLIC_SURFACE: compact public tool count remains 43; R60 hardening is implemented behind existing typed gateways.
|
|
19
|
+
- NON_GOALS: document or UI feature expansion, arbitrary shell convenience, mandatory container runtime.
|
|
20
|
+
- CURRENT_EVIDENCE: R60 focused 38 of 38 PASS; pre-freeze full behavioral regression 1236 total, 1205 PASS, 31 historical or platform SKIP, 0 FAIL.
|
|
21
|
+
- PENDING_BEFORE_FINAL: post-freeze full regression, Windows gate, manifest and doctor, deterministic package, isolated packed-artifact smoke, production activation rollback restore, registry round-trip, final signed machine binding.
|
|
22
|
+
- FINAL_RULE: stable_final_claim remains false until every mandatory pending gate is fresh and green.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deadbyte-mcp",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.37",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Authenticated MCP agentic runtime with signed skills, persistent model backends, identity-bound remote devices, durable job supervision, immutable release slots, and separately revocable machine authority.",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"contained:run": "node src/contained-cli.mjs workspaces/demo input.txt",
|
|
43
43
|
"contained:smoke": "node src/contained-smoke.mjs",
|
|
44
44
|
"mcp:contained:smoke": "node src/mcp-contained-smoke-client.mjs",
|
|
45
|
-
"gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-
|
|
45
|
+
"gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r60-prepublish.ps1",
|
|
46
46
|
"authority:smoke": "node src/authority-smoke.mjs",
|
|
47
47
|
"mcp:remote:smoke": "node src/remote-mcp-smoke-client.mjs",
|
|
48
48
|
"mcp:host:smoke": "node src/mcp-host-smoke-client.mjs",
|
|
@@ -83,7 +83,9 @@
|
|
|
83
83
|
"r58:focused:test": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/r58-focused.ps1",
|
|
84
84
|
"r58:cross-plane:test": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/r58-cross-plane.ps1",
|
|
85
85
|
"r59:focused:test": "node --test --test-concurrency=1 test/capability-snapshot-r59.test.mjs test/capability-resolver.test.mjs test/runtime-plane-registry-r59.test.mjs test/optional-plane-degraded-r59.test.mjs test/bridge-runtime-r59.test.mjs test/controller-policy-preflight-r59.test.mjs test/r59-tool-surface-compat.test.mjs test/r58-controller-state-coherence.test.mjs",
|
|
86
|
-
"r59:release:test": "node --test --test-concurrency=1 test/r59-release-contract.test.mjs test/r59-tool-surface-compat.test.mjs test/bridge-runtime-r59.test.mjs test/controller-policy-preflight-r59.test.mjs"
|
|
86
|
+
"r59:release:test": "node --test --test-concurrency=1 test/r59-release-contract.test.mjs test/r59-tool-surface-compat.test.mjs test/bridge-runtime-r59.test.mjs test/controller-policy-preflight-r59.test.mjs",
|
|
87
|
+
"r60:focused:test": "node --test --test-concurrency=1 test/r60-authority-coherence.test.mjs test/r60-authority-enforcement.test.mjs test/r60-bridge-dispatch.test.mjs test/r60-clock-discipline.test.mjs test/r60-live-timeline.test.mjs test/r60-reconnect-errors.test.mjs test/r60-reconnect-jitter.test.mjs test/r60-remote-call-recovery.test.mjs test/r60-windows-log-decode.test.mjs test/r60-release-contract.test.mjs",
|
|
88
|
+
"r60:full:test": "node scripts/full-regression-r60.mjs"
|
|
87
89
|
},
|
|
88
90
|
"bundleDependencies": [
|
|
89
91
|
"@modelcontextprotocol/server",
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { readdir, stat } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
|
|
6
|
+
const here=path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const root=path.resolve(here,'..');
|
|
8
|
+
const testDir=path.join(root,'test');
|
|
9
|
+
const excluded=new Set(['full-max-catalog-r44.test.mjs','full-max-catalog-r45.test.mjs','full-max-catalog-r46.test.mjs']);
|
|
10
|
+
const files=(await readdir(testDir,{withFileTypes:true}))
|
|
11
|
+
.filter(entry=>entry.isFile()&&entry.name.endsWith('.test.mjs')&&!excluded.has(entry.name));
|
|
12
|
+
const weighted=[];
|
|
13
|
+
for(const entry of files) weighted.push({path:path.join('test',entry.name),size:(await stat(path.join(testDir,entry.name))).size});
|
|
14
|
+
weighted.sort((a,b)=>b.size-a.size||a.path.localeCompare(b.path,'en'));
|
|
15
|
+
const batchCount=16;
|
|
16
|
+
const batches=Array.from({length:batchCount},()=>[]);
|
|
17
|
+
weighted.forEach((entry,index)=>batches[index%batchCount].push(entry.path));
|
|
18
|
+
const match=process.argv.slice(2).map(String).find(arg=>/^--batch=\d+$/.test(arg));
|
|
19
|
+
const selected=match?Number(match.slice('--batch='.length)):null;
|
|
20
|
+
if(selected!==null&&(!Number.isInteger(selected)||selected<1||selected>batchCount))throw new Error(`R60 regression batch must be 1..${batchCount}`);
|
|
21
|
+
const indexes=selected===null?[...Array(batchCount).keys()]:[selected-1];
|
|
22
|
+
let total=0;
|
|
23
|
+
for(const index of indexes){
|
|
24
|
+
const batch=batches[index].sort((a,b)=>a.localeCompare(b,'en'));
|
|
25
|
+
console.log(`R60-BOUNDED-REGRESSION batch=${index+1}/${batchCount} files=${batch.length}`);
|
|
26
|
+
const result=spawnSync(process.execPath,['--test','--test-concurrency=1',...batch],{cwd:root,stdio:'inherit',windowsHide:true,shell:false});
|
|
27
|
+
if(result.error)throw result.error;
|
|
28
|
+
if(result.signal)throw new Error(`R60 regression batch ${index+1} terminated by ${result.signal}`);
|
|
29
|
+
if(result.status!==0)throw new Error(`R60 regression batch ${index+1} failed with exit code ${result.status}`);
|
|
30
|
+
total+=batch.length;
|
|
31
|
+
}
|
|
32
|
+
console.log(`R60-BOUNDED-REGRESSION PASS files=${total} batches=${indexes.length}`);
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# R60 staged gate revision 3: final pre-package metadata seal identity
|
|
2
|
+
param(
|
|
3
|
+
[ValidateSet('all','preflight','focused','full-batch','manifest','doctor')]
|
|
4
|
+
[string]$Stage='all',
|
|
5
|
+
[ValidateRange(1,16)]
|
|
6
|
+
[int]$Batch=1
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
$ErrorActionPreference='Stop'
|
|
10
|
+
Set-StrictMode -Version 3.0
|
|
11
|
+
$root=Split-Path $PSScriptRoot -Parent
|
|
12
|
+
Set-Location -LiteralPath $root
|
|
13
|
+
|
|
14
|
+
function Invoke-NodeTest([string]$Name,[string[]]$Files){
|
|
15
|
+
Write-Host "==== $Name ===="
|
|
16
|
+
& node.exe --test --test-concurrency=1 @Files
|
|
17
|
+
if($LASTEXITCODE -ne 0){ throw "R60 prepublish gate failed at $Name exit=$LASTEXITCODE" }
|
|
18
|
+
}
|
|
19
|
+
function Invoke-Npm([string]$Name,[string[]]$NpmArgs){
|
|
20
|
+
Write-Host "==== $Name ===="
|
|
21
|
+
& npm.cmd @NpmArgs
|
|
22
|
+
if($LASTEXITCODE -ne 0){ throw "R60 prepublish gate failed at $Name exit=$LASTEXITCODE" }
|
|
23
|
+
}
|
|
24
|
+
function Assert-R60Predecessor {
|
|
25
|
+
$active=Get-Content -LiteralPath (Join-Path $env:USERPROFILE '.deadbyte-mcp\active-release.json') -Raw | ConvertFrom-Json
|
|
26
|
+
if($active.release_id -ne 'v0.15.36-090d9db3e0679c0d'){ throw "R60 predecessor release mismatch: $($active.release_id)" }
|
|
27
|
+
if($active.manifest_sha256 -ne '090d9db3e0679c0d4943f3229ecab7b9fcccbe4f767348a568c9f3bb60d1b431'){ throw 'R60 predecessor manifest mismatch' }
|
|
28
|
+
if($active.generation_manifest_sha256 -ne '6134f9f26b680e13ed545da4ab5f3020f411ea2569062fb9c154c8a7e036c9dc'){ throw 'R60 predecessor generation mismatch' }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
Assert-R60Predecessor
|
|
32
|
+
if($Stage -eq 'preflight'){
|
|
33
|
+
Write-Host '==== R60 PREPUBLISH WINDOWS GATE STAGE: PASS preflight ===='
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if($Stage -eq 'all' -or $Stage -eq 'focused'){
|
|
38
|
+
Invoke-Npm 'r60-focused' @('run','r60:focused:test')
|
|
39
|
+
if($Stage -eq 'focused'){
|
|
40
|
+
Write-Host '==== R60 PREPUBLISH WINDOWS GATE STAGE: PASS focused ===='
|
|
41
|
+
return
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if($Stage -eq 'full-batch'){
|
|
46
|
+
Write-Host "==== r60-full-regression-batch-$Batch ===="
|
|
47
|
+
& node.exe scripts/full-regression-r60.mjs "--batch=$Batch"
|
|
48
|
+
if($LASTEXITCODE -ne 0){ throw "R60 prepublish gate failed at full-batch-$Batch exit=$LASTEXITCODE" }
|
|
49
|
+
Write-Host "==== R60 PREPUBLISH WINDOWS GATE STAGE: PASS full-batch-$Batch ===="
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if($Stage -eq 'all'){
|
|
54
|
+
Invoke-Npm 'r60-full-regression' @('run','r60:full:test')
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if($Stage -eq 'all' -or $Stage -eq 'manifest'){
|
|
58
|
+
Invoke-Npm 'manifest-write' @('run','manifest:write')
|
|
59
|
+
Invoke-Npm 'manifest-verify' @('run','manifest:verify')
|
|
60
|
+
if($Stage -eq 'manifest'){
|
|
61
|
+
Write-Host '==== R60 PREPUBLISH WINDOWS GATE STAGE: PASS manifest ===='
|
|
62
|
+
return
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if($Stage -eq 'all' -or $Stage -eq 'doctor'){
|
|
67
|
+
Invoke-Npm 'doctor' @('run','doctor')
|
|
68
|
+
if($Stage -eq 'doctor'){
|
|
69
|
+
Write-Host '==== R60 PREPUBLISH WINDOWS GATE STAGE: PASS doctor ===='
|
|
70
|
+
return
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
Write-Host '==== R60 PREPUBLISH WINDOWS GATE: PASS ===='
|
|
@@ -39,7 +39,12 @@ export function createCapabilitySnapshotTracker({clock=Date.now,ttlMs=5000}={}){
|
|
|
39
39
|
const body={profile,ledger_sha256:ledger.ledger_sha256,tool_catalog:[...toolCatalog],tool_count:toolCatalog.length,
|
|
40
40
|
catalog_sha256:catalogSha256,capabilities,effective_capabilities:[...(resolution.effective_capabilities??[])],
|
|
41
41
|
unavailable_capabilities:[...(resolution.unavailable_capabilities??[])],degraded_capabilities:[...(resolution.degraded_capabilities??[])],
|
|
42
|
-
bindings:safeBindings,planes:safePlanes
|
|
42
|
+
bindings:safeBindings,planes:safePlanes,
|
|
43
|
+
// Informational transport contract, not an authority-bearing ledger entry.
|
|
44
|
+
remote_dispatch_contract:Object.freeze({scope:'bridge_ingress_only',schema:'deadbyte.remote-dispatch.v1',
|
|
45
|
+
keyed_mutation:'same stable key and canonical payload: no duplicate dispatch; unknown post-dispatch outcome is not retried',
|
|
46
|
+
read_only_recovery:'a proven read-only interrupted call may re-execute under its original deadline',
|
|
47
|
+
keyless_mutation:'cross-reconnect logical retry safety unavailable; ambiguous outcome is not auto-replayed'})};
|
|
43
48
|
const fingerprint=sha(body);
|
|
44
49
|
if(fingerprint!==lastFingerprint){stateEpoch++;lastFingerprint=fingerprint;lastSnapshotId=sha({fingerprint,state_epoch:stateEpoch});}
|
|
45
50
|
const observed=Number(clock());
|
|
@@ -49,4 +54,3 @@ export function createCapabilitySnapshotTracker({clock=Date.now,ttlMs=5000}={}){
|
|
|
49
54
|
}
|
|
50
55
|
return Object.freeze({snapshot});
|
|
51
56
|
}
|
|
52
|
-
|