deadbyte-mcp 0.15.25 → 0.15.26
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 +29 -22
- package/PROVENANCE.json +11 -11
- package/R49-PARENT.json +11 -0
- package/README.txt +16 -7
- package/RELEASE.json +15 -12
- package/SBOM.cdx.json +3 -3
- package/TEST-MATRIX.json +11 -8
- package/docs/R49-FULL-TOOL-CATALOG.json +13 -0
- package/docs/R49-REMOTE-CONTROL-DONORS.json +75 -0
- package/package.json +2 -2
- package/scripts/deferred-slot-operation-r46.mjs +44 -2
- package/scripts/gate-windows-r49.ps1 +54 -0
- package/scripts/windows-gate-evidence-r49.mjs +27 -0
- package/src/autonomous-planner-contracts.mjs +1 -0
- package/src/autonomous-planner.mjs +11 -5
- package/src/autonomous-runtime.mjs +11 -1
- package/src/capability-ledger.mjs +1 -0
- package/src/desktop-mcp-tools-r40.mjs +23 -1
- package/src/desktop-runtime-r40.mjs +46 -2
- package/src/remote-mcp-smoke-client.mjs +7 -1
- package/src/runtime-catalog-expectation.mjs +9 -1
- package/src/version.mjs +1 -1
- package/test/autonomous-desktop-r40.test.mjs +27 -1
- package/test/desktop-mcp-tools-r40.test.mjs +19 -4
- package/test/desktop-runtime-r40.test.mjs +43 -2
- package/test/full-max-catalog-r48.test.mjs +5 -3
- package/test/r48-release-contract.test.mjs +14 -20
- package/test/r49-remote-control-donors.test.mjs +24 -0
- package/test/r49-windows-gate.test.mjs +33 -0
- package/test/remote-r24-catalog.test.mjs +9 -0
|
@@ -6,7 +6,7 @@ import { DEADBYTE_VERSION } from '../src/version.mjs';
|
|
|
6
6
|
const root=new URL('../',import.meta.url);
|
|
7
7
|
const read=rel=>readFile(new URL(rel,root),'utf8');
|
|
8
8
|
|
|
9
|
-
test('
|
|
9
|
+
test('R49 0.15.26 successor binds exact published immutable 0.15.25 parent',async()=>{
|
|
10
10
|
const [pkg,lock,release,provenance,matrix]=await Promise.all([
|
|
11
11
|
read('package.json').then(JSON.parse),
|
|
12
12
|
read('package-lock.json').then(JSON.parse),
|
|
@@ -14,24 +14,19 @@ test('R48 0.15.25 successor binds exact active immutable 0.15.24 parent',async()
|
|
|
14
14
|
read('PROVENANCE.json').then(JSON.parse),
|
|
15
15
|
read('TEST-MATRIX.json').then(JSON.parse)
|
|
16
16
|
]);
|
|
17
|
-
|
|
18
|
-
assert.equal(
|
|
19
|
-
assert.equal(
|
|
20
|
-
assert.equal(
|
|
21
|
-
assert.equal(release.
|
|
22
|
-
assert.equal(
|
|
23
|
-
assert.equal(
|
|
24
|
-
assert.equal(release.
|
|
25
|
-
assert.equal(release.
|
|
26
|
-
assert.equal(release.parent.release_id,'v0.15.24-c33fcbc449562285');
|
|
27
|
-
assert.equal(release.parent.manifest_sha256,'c33fcbc449562285b4a03e95a6d282d359859f266773043b34db35723dfad54e');
|
|
28
|
-
assert.equal(release.parent.generation_manifest_sha256,'6b81c4a5b940a6ef525b7d0ce8e7ff5e6b9fc9b8048d9522ea8852fa29b85395');
|
|
29
|
-
assert.equal(release.source_predecessor.version,'0.15.24');
|
|
30
|
-
assert.equal(release.source_predecessor.tarball_sha256,'23ea53fb4f331873c742c810f815d5ad18291f74c1bda1fd1d8c08475dbbd4ad');
|
|
31
|
-
assert.equal(release.source_predecessor.manifest_file_sha256,'c33fcbc449562285b4a03e95a6d282d359859f266773043b34db35723dfad54e');
|
|
17
|
+
for(const value of [pkg.version,lock.version,lock.packages[''].version,DEADBYTE_VERSION,release.version,provenance.version,matrix.version])assert.equal(value,'0.15.26');
|
|
18
|
+
assert.equal(release.train,'R49');
|
|
19
|
+
assert.equal(release.label,'BOUNDED SEMANTIC DESKTOP WAIT + REMOTE CONTROL HARDENING');
|
|
20
|
+
assert.equal(release.parent.release_id,'v0.15.25-7ed657b1aa038ee6');
|
|
21
|
+
assert.equal(release.parent.manifest_sha256,'7ed657b1aa038ee679ff081f1a83c421a5eeb5fc7ea6b746e0f661079b69b319');
|
|
22
|
+
assert.equal(release.parent.generation_manifest_sha256,'c9763738e27ec39b1180473995f2af088d85293a94f5693abd6a843e09cecec9');
|
|
23
|
+
assert.equal(release.source_predecessor.version,'0.15.25');
|
|
24
|
+
assert.equal(release.source_predecessor.tarball_sha256,'0410b41b3c891210262a4db793ee3b339862472ef069f881c9e092c1083ba6d2');
|
|
25
|
+
assert.equal(release.source_predecessor.manifest_file_sha256,'7ed657b1aa038ee679ff081f1a83c421a5eeb5fc7ea6b746e0f661079b69b319');
|
|
32
26
|
assert.equal(release.source_predecessor.reference_server_sha256,'dfc303bb7dd2e8d01debac50fc43bb8644d00089bffdf2887e149497cff8b305');
|
|
33
27
|
assert.equal(release.source_predecessor.reference_schemas_sha256,'f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140');
|
|
34
|
-
assert.equal(release.capabilities.full_tool_count,
|
|
28
|
+
assert.equal(release.capabilities.full_tool_count,117);
|
|
29
|
+
assert.equal(release.capabilities.desktop_bounded_semantic_wait,true);
|
|
35
30
|
assert.equal(release.capabilities.commander_incremental_pdf_revisions,true);
|
|
36
31
|
assert.equal(release.capabilities.commander_docx_header_footer_search,true);
|
|
37
32
|
assert.equal(release.capabilities.commander_directory_read_fallback,true);
|
|
@@ -42,7 +37,6 @@ test('R48 0.15.25 successor binds exact active immutable 0.15.24 parent',async()
|
|
|
42
37
|
assert.equal(provenance.parent_manifest_sha256,release.parent.manifest_sha256);
|
|
43
38
|
assert.equal(provenance.parent_generation_manifest_sha256,release.parent.generation_manifest_sha256);
|
|
44
39
|
assert.equal(provenance.source_predecessor_tarball_sha256,release.source_predecessor.tarball_sha256);
|
|
45
|
-
assert.equal(matrix.
|
|
46
|
-
assert.equal(matrix.
|
|
47
|
-
assert.equal(matrix.full_regression_partition_proof.task_receipt_sha256,'7711039e4807f6c2af02bbda897d0032b067e0a6631f789fd3bf801258160d3f');
|
|
40
|
+
assert.equal(matrix.predecessor_r48_full_regression_partition_proof.files,211);
|
|
41
|
+
assert.equal(matrix.predecessor_r48_full_regression_partition_proof.not_valid_as_r49_proof,true);
|
|
48
42
|
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { readFile } from 'node:fs/promises';
|
|
4
|
+
|
|
5
|
+
const artifact=new URL('../docs/R49-REMOTE-CONTROL-DONORS.json',import.meta.url);
|
|
6
|
+
|
|
7
|
+
test('R49 remote-control donor evidence pins all requested sources and records bounded native adoption',async()=>{
|
|
8
|
+
const value=JSON.parse(await readFile(artifact,'utf8'));
|
|
9
|
+
assert.equal(value.schema,'deadbyte.r49-remote-control-donors.v1');
|
|
10
|
+
assert.equal(value.donors.length,6);
|
|
11
|
+
assert.deepEqual(value.donors.map(item=>item.repository),[
|
|
12
|
+
'https://github.com/shahidx0x/better-remote-commander',
|
|
13
|
+
'https://github.com/Jennifer9911/open-remote-mcp',
|
|
14
|
+
'https://github.com/Razewang/secure-host-mcp',
|
|
15
|
+
'https://github.com/dddabtc/winremote-mcp',
|
|
16
|
+
'https://github.com/getremcp/remcp',
|
|
17
|
+
'https://github.com/trycua/cua'
|
|
18
|
+
]);
|
|
19
|
+
for(const donor of value.donors)assert.match(donor.commit,/^[0-9a-f]{40}$/);
|
|
20
|
+
assert.equal(value.adopted_checkpoint.capability,'desktop.wait');
|
|
21
|
+
assert.equal(value.adopted_checkpoint.authority,'none');
|
|
22
|
+
assert.ok(value.adopted_checkpoint.properties.includes('no input dispatch and no action retry'));
|
|
23
|
+
assert.ok(value.explicit_non_adoptions.includes('generic shell or caller-selected executable authority'));
|
|
24
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import {readFile} from 'node:fs/promises';
|
|
3
|
+
import test from 'node:test';
|
|
4
|
+
|
|
5
|
+
const read = path => readFile(new URL(`../${path}`, import.meta.url), 'utf8');
|
|
6
|
+
|
|
7
|
+
test('R49 canonical Windows gate is successor-bound and preserves the R48 historical gate', async () => {
|
|
8
|
+
const [pkgText, gate, evidence, historical, deferred] = await Promise.all([
|
|
9
|
+
read('package.json'),
|
|
10
|
+
read('scripts/gate-windows-r49.ps1'),
|
|
11
|
+
read('scripts/windows-gate-evidence-r49.mjs'),
|
|
12
|
+
read('scripts/gate-windows-r48.ps1'),
|
|
13
|
+
read('scripts/deferred-slot-operation-r46.mjs')
|
|
14
|
+
]);
|
|
15
|
+
const pkg = JSON.parse(pkgText);
|
|
16
|
+
assert.match(pkg.scripts['gate:windows'], /gate-windows-r49\.ps1$/);
|
|
17
|
+
assert.match(gate, /DEADBYTE 0\.15\.26 \/ R49 WINDOWS GATE: PASS/);
|
|
18
|
+
assert.match(gate, /r49-remote-control-donors\.test\.mjs/);
|
|
19
|
+
assert.match(gate, /desktop-runtime-r40\.test\.mjs/);
|
|
20
|
+
assert.match(gate, /manifest-final-verify/);
|
|
21
|
+
assert.match(evidence, /deadbyte\.r49-windows-gate\.v1/);
|
|
22
|
+
assert.match(evidence, /pkg\.version==='0\.15\.26'/);
|
|
23
|
+
assert.match(evidence, /release\.train==='R49'/);
|
|
24
|
+
assert.match(historical, /DEADBYTE 0\.15\.25 \/ R48 WINDOWS GATE: PASS/);
|
|
25
|
+
assert.match(deferred, /const expectedVersion=packageIdentity\.version/);
|
|
26
|
+
assert.match(deferred, /'--expected-version',expectedVersion/);
|
|
27
|
+
assert.match(deferred, /async function awaitHandoffCompletion/);
|
|
28
|
+
assert.match(deferred, /verifySlotUpdateEnvelope\(envelope,publicKey\)/);
|
|
29
|
+
assert.match(deferred, /active pointer does not match signed activation receipt/);
|
|
30
|
+
assert.match(deferred, /failure-receipt\.json/);
|
|
31
|
+
assert.match(deferred, /await awaitHandoffCompletion\(await runSlotUpdateCli/);
|
|
32
|
+
assert.doesNotMatch(deferred, /'--expected-version','0\.15\.5'/);
|
|
33
|
+
});
|
|
@@ -32,6 +32,15 @@ test('R29 remote gate accepts machine plane as an exact optional catalog dimensi
|
|
|
32
32
|
assert.match(source, /if \(machine\) items\.push\(\.\.\.machineTools\)/);
|
|
33
33
|
assert.match(source, /machine_runtime: machineRuntime/);
|
|
34
34
|
});
|
|
35
|
+
|
|
36
|
+
test('R49 compact remote gate independently verifies signed machine ping', async () => {
|
|
37
|
+
const source = await readFile(sourcePath, 'utf8');
|
|
38
|
+
assert.match(source, /verifyMachinePingPublic/);
|
|
39
|
+
assert.match(source, /public_key_spki_base64/);
|
|
40
|
+
assert.match(source, /machine ping public Ed25519 verification failed/);
|
|
41
|
+
assert.match(source, /ping_signature_valid: true/);
|
|
42
|
+
assert.doesNotMatch(source, /ping_signature_valid: ping\.signature_valid === true/);
|
|
43
|
+
});
|
|
35
44
|
test('R46 remote gate accepts seven-tool process supervision as one exact optional catalog dimension', async () => {
|
|
36
45
|
const source = await readFile(sourcePath, 'utf8');
|
|
37
46
|
assert.match(source, /const processTools = \[/);
|