deadbyte-mcp 0.15.7 → 0.15.8

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 CHANGED
@@ -1329,7 +1329,7 @@ db605a698f917c4006462596e6526fe6a9c6eff9b8409e8472fe545d4b70027c node_modules/z
1329
1329
  f67a25ded944912bd4621b68df17c7c70a52aae117278c076c0aabbc32a3abba node_modules/zod/v4/mini/schemas.d.ts
1330
1330
  51b3a7869df2d3a1bd98acb9d5b6a61bbccc7653d7a3d8fca7f0e0db7e84e284 node_modules/zod/v4/mini/schemas.js
1331
1331
  3e3125b5a537a24c3632c1c5c09640ce7bcb3935901b127ad8ae3c37a27f133f node_modules/zod/v4/package.json
1332
- c2e60730f0406fc7dac480a0fe96f4e9b221d6937a43cc646b74ca0b99200a97 package.json
1332
+ 79a1512703a88bc9d9347f26fa54ce0d0dbf52724bf3695e84dfa687f3c5a390 package.json
1333
1333
  8177e3a354721a73df889f386a97e7744a2e017d150aecf4bf309f5177d18690 proof/CONTAINMENT-BUILD.txt
1334
1334
  a8efa13e44ff50902aee64cfca542d19605a1ae23db95280ad2d44b324f3eae7 proof/MCP-SMOKE-STATUS.txt
1335
1335
  7c115069cc4a343ca21b0ebdee74bd8f544b02d4aa906ffa13308725825d891a proof/NODE-SYNTAX.txt
@@ -1389,7 +1389,7 @@ d433aaea5cccd1e184775ac4d915f34e0b39c6c99916dddd009731ad5fd6443f proof/V073-WIN
1389
1389
  bd0773a9e02e8ab11475c9cc5a7db29a8313233b7eab7f837922737e75ec5938 proof/VERIFY.txt
1390
1390
  2c821808d4596965c577f40191daee224d3aea81989778c4af97f53a83b487db proof/WINDOWS-CONTAINED-STATUS.txt
1391
1391
  f8bc839c7b4fcb0ea7b7e7ad9448847c3beae6f95f2eb4d407d1b284aaa4ff68 proof/WINDOWS-CONTAINMENT-STATUS.txt
1392
- 2e08ebcd817f2472f0bca26025091eabe66629591f87df7993c403d55fbcf855 PROVENANCE.json
1392
+ 60389fa2a0c7f699292cc731ecb33863ce1d38196195d38e8a48cae50228d8a1 PROVENANCE.json
1393
1393
  27ca0f3c9ee3a1b6374a9c8dd98008decdd0c7659c7a569c70ad7b9734c74655 R34-BASELINE.json
1394
1394
  0b7ec5ee347ddfa6cca59740fc7a8fe3fc5d51406265bb12189e82fa106319d2 R41-PARENT.json
1395
1395
  bd2a789b0aab5663f0d208af2ca8e4ec98179bc8c7b57e70a962d4e06a3dcfc4 R42-PARENT.json
@@ -1398,7 +1398,7 @@ f932ef78b7a72b1bb0d7aedb5fe42fbb9951c2492eb528b72442f46ddff81a6c R44-DONORS.jso
1398
1398
  731b4c559fc0d25dea701e4474f02400b27e8e3f4cac9f230d5214497d4490a9 R44-PARENT.json
1399
1399
  d33ec5d167dd44800ba4e68372b08db43deb8d01df2ef71dd435ff004ac66c8b R45-PARENT.json
1400
1400
  0ae37e1c40dff1a47f08ca5a0e9dcdddb3c8c3a8e478d69429e99a2f951f55ab README.txt
1401
- 4c490e8bcc0c2ea977a8f839cde247680bead95f6bbfb90d9a98b4f0e4eb8921 RELEASE.json
1401
+ 0a318974786d7e58185bd531e9f80de5f5681788b80bbf42d5b5329cdd17ebcb RELEASE.json
1402
1402
  507a42441c8fbb0b1bef63a13fad9e1680262cd6d34cc176b7ed0c5423ddbcc7 SBOM.cdx.json
1403
1403
  bd138fe5a64088e8e1a7a5bf6104c5b17317bdc8cf3ad8191ea00ed82ace7d9b scripts/agent-eval-r42.mjs
1404
1404
  8d90256a6863f3bbbff02e95cb12389fc6f9e8dbcb77bf1c20c902de371425e8 scripts/archive-source-zips.mjs
@@ -1485,7 +1485,8 @@ a0ad824eed1d8be051d5f731579f9bf4115b311f202b75ea0d03aa257b13a671 scripts/gate-w
1485
1485
  1a771b5b8a62d57f26762d53472ed68a3e733674b1c91e08becf0dc2e4325039 scripts/inspect-active-release-r45.mjs
1486
1486
  de6142bd5693cf4edb8725c9c43fc77e9bdc12f5b398a757006d778d3ee3f8ed scripts/inspect-r46-active.mjs
1487
1487
  7ea8cf6bf094a1612603bc716228a3753e5f06fca8a0684d2da15a04d0710c64 scripts/list-source-zips.mjs
1488
- 50b333bf712062e951bcc933ebf1a0c3a761132e4ff736f1fc57a452e9cc50db scripts/npm-release-r47.mjs
1488
+ 9d12d15f7c83ddf272834072ed37d618a232bd8a3fd36c339761fe08bb9380d8 scripts/npm-publish-r47.ps1
1489
+ 9799df2876e6f7851aeec04266b49a2fce58725cae281e58c73df1b4234e317a scripts/npm-release-r47.mjs
1489
1490
  453dd636b452f4343a36f31a93a763e97f58ed5d6c9df3d2ba05b236934a3a1f scripts/probe-source-zips.mjs
1490
1491
  8f9d97a4d23e9d05e7cadfb6a519b1ddb9da04894bca98bdc293fc3797e8423c scripts/probe-zips.mjs
1491
1492
  e19a1d591ccd07af2e87d930ce23b0cc9b814bc2a395408045543847154097d7 scripts/r40-compact-ledger-probe.mjs
@@ -1703,7 +1704,7 @@ bac271c6f5218752ac5ff4decf5249e3893ddb35c63c092ce17238c27fc4d35b src/trust-init
1703
1704
  16df134040e3ff1e73df722b568d3e8ac0a6923b097696cead7580da75aa8d2a src/tunnel-stdio-compat.mjs
1704
1705
  642cb67d1854850e336ee73fbd71b329056bdcbdab35cea19c1a995a155ff5d9 src/verifier-cli.mjs
1705
1706
  8f818a4852ce3be3a380cd4736c3073a7a3e0e45cd7c7ca90588a6b843d3d022 src/verifier.mjs
1706
- 0ce4c08618f4e846d6c978e5d5b39229130d786c3b17c737dcf02010434d5afb src/version.mjs
1707
+ 75903ce9e7a221d3f6d163f6a908de58765291347f732ff5e1d2cea9f04010ac src/version.mjs
1707
1708
  7e09c57a97289360aabfaf3d531208e54872efbfb3182f3c18203d2cb88c46b5 src/worker-registry.mjs
1708
1709
  76361d5ae9a710273cf64a7525082197b692236bf23689875e5fd1ef4aa96d2b src/worker-scheduler.mjs
1709
1710
  4da1b32f5198bb089bc68b7eb6de21ea296678b5020018a73742bf0df57d62fa src/workload-substrate.mjs
package/PROVENANCE.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": "deadbyte.provenance.v1",
3
- "version": "0.15.5",
3
+ "version": "0.15.8",
4
4
  "builder": "deadbyte-r46-fileless-powershell",
5
5
  "source_model": "development-root -> MANIFEST.SHA256 -> immutable release slot -> generation bundle -> signed final closure",
6
6
  "signing": "ed25519",
package/RELEASE.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": "deadbyte.release.v1",
3
3
  "name": "deadbyte-mcp",
4
- "version": "0.15.5",
4
+ "version": "0.15.8",
5
5
  "train": "R46",
6
6
  "label": "FILELESS POWERSHELL PRODUCT BASELINE",
7
7
  "protocol_revision": "2026-07-28",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deadbyte-mcp",
3
- "version": "0.15.7",
3
+ "version": "0.15.8",
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.",
@@ -1,22 +1,6 @@
1
1
  $ErrorActionPreference = 'Stop'
2
- Set-Location (Join-Path $PSScriptRoot '..')
3
- $pkg = Get-Content package.json -Raw | ConvertFrom-Json
4
- $version = [string]$pkg.version
5
- if ($pkg.name -ne 'deadbyte-mcp') { throw 'unexpected package name' }
6
- $existing = $null
7
- try { $existing = & npm.cmd view "deadbyte-mcp@$version" version --json 2>$null } catch { $existing = $null }
8
- if ($LASTEXITCODE -eq 0 -and $existing) { throw "deadbyte-mcp@$version is already published: $existing" }
9
- $pack = (& npm.cmd pack --json 2>&1 | Out-String)
10
- if ($LASTEXITCODE -ne 0) { throw 'npm pack failed' }
11
- $packObj = $pack | ConvertFrom-Json
12
- $filename = [string]$packObj.'deadbyte-mcp'.filename
13
- if ([string]::IsNullOrWhiteSpace($filename)) { throw "npm pack did not return tarball filename. output=$pack" }
14
- $tarball = Join-Path (Get-Location) $filename
15
- & npm.cmd publish $tarball --access public
16
- if ($LASTEXITCODE -ne 0) { throw 'npm publish failed' }
17
- $published = (& npm.cmd view "deadbyte-mcp@$version" version dist.integrity dist.tarball --json | ConvertFrom-Json)
18
- $tags = (& npm.cmd view deadbyte-mcp dist-tags --json | ConvertFrom-Json)
19
- $npx = & npx.cmd --yes "deadbyte-mcp@$version" -- --version
20
- if ($LASTEXITCODE -ne 0) { throw 'npx verification failed' }
21
- Remove-Item -LiteralPath $tarball -Force -ErrorAction SilentlyContinue
22
- [pscustomobject]@{ status='published'; name=$pkg.name; version=$version; tarball=$filename; published=$published; dist_tags=$tags; npx_version_output=($npx -join "`n") } | ConvertTo-Json -Depth 8
2
+ $script = Join-Path $PSScriptRoot 'npm-release-r47.mjs'
3
+ & node $script
4
+ if ($LASTEXITCODE -ne 0) {
5
+ throw "Release pipeline failed with exit code $LASTEXITCODE"
6
+ }
@@ -1,39 +1,189 @@
1
1
  import { spawnSync } from 'node:child_process';
2
- import { readFile, unlink } from 'node:fs/promises';
2
+ import { mkdtemp, readFile, rm, unlink } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import os from 'node:os';
5
+ import { fileURLToPath } from 'node:url';
5
6
 
6
- const root=path.resolve(new URL('..',import.meta.url).pathname.replace(/^\/(?:[A-Za-z]:)/,''));
7
- const npm=process.platform==='win32'?'npm.exe':'npm';
7
+ const root = path.resolve(fileURLToPath(new URL('..', import.meta.url)));
8
+ const node = process.execPath;
9
+ const npmCli = process.env.npm_execpath || path.join(path.dirname(process.execPath), 'node_modules', 'npm', 'bin', 'npm-cli.js');
8
10
 
9
- function run(args,timeout=180000){
10
- const r=spawnSync(npm,args,{cwd:root,encoding:'utf8',timeout,stdio:['ignore','pipe','pipe'],shell:false,windowsHide:true});
11
- if(r.error) throw r.error;
12
- if(r.status!==0) throw new Error('npm '+args.join(' ')+' failed exit='+r.status+'\n'+(r.stderr||r.stdout||'').slice(-12000));
13
- return (r.stdout||'').trim();
11
+ function run(command, args, options = {}) {
12
+ const { cwd = root, timeout = 180000 } = options;
13
+ const r = spawnSync(command, args, {
14
+ cwd,
15
+ encoding: 'utf8',
16
+ timeout,
17
+ stdio: ['ignore', 'pipe', 'pipe'],
18
+ shell: false,
19
+ windowsHide: true,
20
+ });
21
+ if (r.error) throw r.error;
22
+ if (r.status !== 0) {
23
+ const detail = (r.stderr || r.stdout || '').slice(-12000);
24
+ throw new Error(`${command} ${args.join(' ')} failed (exit=${r.status}, cwd=${cwd}):\n${detail}`);
25
+ }
26
+ return (r.stdout || '').trim();
14
27
  }
15
- function parseJson(text){
16
- const start=Math.min(...[text.indexOf('{'),text.indexOf('[')].filter(n=>n>=0));
17
- if(!Number.isFinite(start)) throw new Error('npm JSON output missing');
28
+
29
+ function runNpm(args, options = {}) {
30
+ return run(node, [npmCli, ...args], options);
31
+ }
32
+
33
+ function parseJson(text) {
34
+ const start = Math.min(...[text.indexOf('{'), text.indexOf('[')].filter(n => n >= 0));
35
+ if (!Number.isFinite(start)) throw new Error('Command JSON output missing:\n' + text.slice(0, 1000));
18
36
  return JSON.parse(text.slice(start));
19
37
  }
20
38
 
21
- const pkg=JSON.parse(await readFile(path.join(root,'package.json'),'utf8'));
22
- const version=pkg.version;
23
- if(pkg.name!=='deadbyte-mcp') throw new Error('unexpected package name');
24
- const existing=spawnSync(npm,['view',`deadbyte-mcp@${version}`,'version','--json'],{cwd:root,encoding:'utf8',stdio:['ignore','pipe','pipe'],shell:false,windowsHide:true});
25
- const existingText=(existing.stdout||'').trim();
26
- if(existing.status===0 && existingText && existingText!=='null'){
27
- throw new Error(`deadbyte-mcp@${version} is already published: ${existingText}`);
39
+ const allowedUnmanifested = new Set([
40
+ 'MANIFEST.SHA256',
41
+ 'controller/deadbyte-host-policy.json',
42
+ 'controller/deadbyte-coding-policy.json',
43
+ ]);
44
+
45
+ async function main() {
46
+ const isVerifyOnly = process.argv.includes('--verify-only') || process.argv.includes('--dry-run');
47
+
48
+ console.log(`[1/7] Reading package.json and checking registry publication status... ${isVerifyOnly ? '(MODE: VERIFY-ONLY / DRY-RUN)' : '(MODE: PUBLISH)'}`);
49
+ const pkg = JSON.parse(await readFile(path.join(root, 'package.json'), 'utf8'));
50
+ const version = pkg.version;
51
+ if (pkg.name !== 'deadbyte-mcp') throw new Error(`unexpected package name: ${pkg.name}`);
52
+
53
+ const existing = spawnSync(node, [npmCli, 'view', `deadbyte-mcp@${version}`, 'version', '--json'], {
54
+ cwd: root, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], shell: false, windowsHide: true,
55
+ });
56
+ const existingText = (existing.stdout || '').trim();
57
+ const isAlreadyPublished = existing.status === 0 && existingText && existingText !== 'null';
58
+
59
+ if (isAlreadyPublished) {
60
+ if (!isVerifyOnly) {
61
+ throw new Error(`deadbyte-mcp@${version} is already published on registry: ${existingText}`);
62
+ } else {
63
+ console.log(`Notice: deadbyte-mcp@${version} is already published on registry (${existingText}), proceeding with pre-publish verification only.`);
64
+ }
65
+ }
66
+
67
+ console.log('[2/7] Pre-pack gates: verifying working tree manifest and doctor...');
68
+ run(node, [path.join(root, 'scripts', 'release-manifest.mjs'), 'verify']);
69
+ run(node, [path.join(root, 'src', 'deadbyte-cli.mjs'), 'doctor']);
70
+
71
+ console.log('[3/7] Packing artifact with npm pack...');
72
+ const packed = parseJson(runNpm(['pack', '--json'], { timeout: 180000 }));
73
+ const filename = packed?.[0]?.filename;
74
+ if (!filename) throw new Error('npm pack did not return a tarball filename');
75
+ const tarball = path.join(root, filename);
76
+
77
+ try {
78
+ console.log('[4/7] Verifying packed artifact file surface against MANIFEST.SHA256 and packaging contract...');
79
+ const manifestText = await readFile(path.join(root, 'MANIFEST.SHA256'), 'utf8');
80
+ const manifestEntries = new Set();
81
+ for (const line of manifestText.split(/\r?\n/)) {
82
+ if (!line) continue;
83
+ const m = /^([0-9a-f]{64})\s+(.+)$/.exec(line);
84
+ if (m) manifestEntries.add(m[2]);
85
+ }
86
+
87
+ const tarListing = run('tar', ['-tf', tarball], { timeout: 60000 });
88
+ const tarFiles = new Set(
89
+ tarListing
90
+ .split(/\r?\n/)
91
+ .map(s => s.trim().replaceAll('\\', '/'))
92
+ .filter(s => s.startsWith('package/') && s.length > 'package/'.length && !s.endsWith('/'))
93
+ .map(s => s.slice('package/'.length))
94
+ );
95
+
96
+ const missingInTarball = [];
97
+ for (const rel of manifestEntries) {
98
+ if (!tarFiles.has(rel)) missingInTarball.push(rel);
99
+ }
100
+ if (missingInTarball.length > 0) {
101
+ throw new Error(`Tarball missing files declared in manifest (${missingInTarball.length}): ${missingInTarball.slice(0, 10).join(', ')}`);
102
+ }
103
+
104
+ const unexpectedInTarball = [];
105
+ for (const rel of tarFiles) {
106
+ if (!manifestEntries.has(rel) && !allowedUnmanifested.has(rel)) {
107
+ unexpectedInTarball.push(rel);
108
+ }
109
+ }
110
+ if (unexpectedInTarball.length > 0) {
111
+ throw new Error(`Tarball contains unexpected files not in manifest or allowlist (${unexpectedInTarball.length}): ${unexpectedInTarball.slice(0, 10).join(', ')}`);
112
+ }
113
+
114
+ console.log(`Packed artifact surface verified OK: ${tarFiles.size} package files, all ${manifestEntries.size} manifest entries present.`);
115
+
116
+ console.log('[5/7] Pre-publish artifact isolation gate in sandbox...');
117
+ const sandbox = await mkdtemp(path.join(os.tmpdir(), 'deadbyte-release-verify-'));
118
+ try {
119
+ run('tar', ['-xzf', tarball, '-C', sandbox]);
120
+ const extractedPackage = path.join(sandbox, 'package');
121
+
122
+ const extractedVersion = run(node, [path.join(extractedPackage, 'src', 'deadbyte-cli.mjs'), '--version'], {
123
+ cwd: extractedPackage,
124
+ });
125
+ if (extractedVersion !== version) {
126
+ throw new Error(`Isolated package version mismatch: expected=${version} got=${extractedVersion}`);
127
+ }
128
+
129
+ run(node, [path.join(extractedPackage, 'src', 'deadbyte-cli.mjs'), 'doctor'], {
130
+ cwd: extractedPackage,
131
+ });
132
+
133
+ console.log('Artifact isolation gate PASS (clean doctor and version check on unpacked tarball in sandbox)');
134
+ } finally {
135
+ await rm(sandbox, { recursive: true, force: true }).catch(() => {});
136
+ }
137
+
138
+ if (isVerifyOnly) {
139
+ console.log('[6/7] [VERIFY-ONLY] Skipping npm publish.');
140
+ console.log('[7/7] [VERIFY-ONLY] Skipping external registry smoke test.');
141
+ console.log('\nVERIFY-ONLY PIPELINE PASS: All pre-pack, artifact surface, and isolated sandbox gates passed successfully.');
142
+ return;
143
+ }
144
+
145
+ console.log('[6/7] Publishing artifact to npm registry...');
146
+ const publishOut = runNpm(['publish', tarball, '--access', 'public'], { timeout: 300000 });
147
+ const published = parseJson(runNpm(['view', `deadbyte-mcp@${version}`, 'version', 'dist.integrity', 'dist.tarball', '--json'], { timeout: 120000 }));
148
+ const tags = parseJson(runNpm(['view', 'deadbyte-mcp', 'dist-tags', '--json'], { timeout: 120000 }));
149
+
150
+ console.log('[7/7] Post-publish external registry smoke test (executed outside repo in temp)...');
151
+ const tempDir = os.tmpdir();
152
+ const externalVersion = runNpm(['exec', '--yes', `--package=deadbyte-mcp@${version}`, '--', 'deadbyte-mcp', '--version'], {
153
+ cwd: tempDir,
154
+ timeout: 300000,
155
+ });
156
+ if (externalVersion !== version) {
157
+ throw new Error(`External registry smoke test version mismatch: expected=${version} got=${externalVersion}`);
158
+ }
159
+
160
+ const externalDoctor = runNpm(['exec', '--yes', `--package=deadbyte-mcp@${version}`, '--', 'deadbyte-mcp', 'doctor'], {
161
+ cwd: tempDir,
162
+ timeout: 300000,
163
+ });
164
+
165
+ console.log('\nRELEASE SUCCESSFUL:');
166
+ console.log(JSON.stringify({
167
+ status: 'published',
168
+ name: pkg.name,
169
+ version,
170
+ tarball: filename,
171
+ published,
172
+ published_output_tail: publishOut.slice(-2000),
173
+ dist_tags: tags,
174
+ external_smoke: {
175
+ version_output: externalVersion,
176
+ doctor_status: 'ok',
177
+ },
178
+ }, null, 2));
179
+
180
+ } finally {
181
+ await unlink(tarball).catch(() => {});
182
+ }
28
183
  }
29
184
 
30
- const packed=parseJson(run(['pack','--json'],180000));
31
- const filename=packed?.[0]?.filename;
32
- if(!filename) throw new Error('npm pack did not return a tarball filename');
33
- const tarball=path.join(root,filename);
34
- const publishOut=run(['publish',tarball,'--access','public'],300000);
35
- const published=parseJson(run(['view',`deadbyte-mcp@${version}`,'version','dist.integrity','dist.tarball','--json'],120000));
36
- const tags=parseJson(run(['view','deadbyte-mcp','dist-tags','--json'],120000));
37
- const npxOut=run(['exec','--yes',`deadbyte-mcp@${version}`,'--','--version'],300000);
38
- await unlink(tarball).catch(()=>{});
39
- console.log(JSON.stringify({status:'published',name:pkg.name,version,tarball:filename,published,published_output_tail:publishOut.slice(-2000),dist_tags:tags,npx_version_output:npxOut},null,2));
185
+ main().catch(err => {
186
+ console.error('\nRELEASE ABORTED / FAILED:');
187
+ console.error(err?.stack || err);
188
+ process.exitCode = 1;
189
+ });
package/src/version.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export const DEADBYTE_VERSION = '0.15.7';
1
+ export const DEADBYTE_VERSION = '0.15.8';
2
2
  export const MCP_PROTOCOL_VERSION = '2026-07-28';
3
3
  export const RECEIPT_SCHEMA_V1 = 'deadbyte.receipt.v1';
4
4
  export const RECEIPT_SCHEMA_V2 = 'deadbyte.receipt.v2';