@ai-ecoverse/mcpcat 0.17.0 → 0.17.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/README.md +1 -1
- package/dist/host/mcpcat.mjs +10 -6
- package/dist/kernel/mcpcat.mjs +10 -6
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ mcpcat runs natively on macOS, Linux and Windows (Node ≥ 24), and inside Slicc
|
|
|
26
26
|
|
|
27
27
|
## Releases: certified = latest
|
|
28
28
|
|
|
29
|
-
Every change that alters what mcpcat ships is certified before it reaches `main`. A pull request that touches `src/`, the build, the dependencies or the release workflows gets mcpcat's cert-review on a pack of its head, and again in the merge queue on the exact tree that lands on `main`; a FAIL blocks the merge. Docs-, test- and CI-only changes skip it as "not behaviour". Each merge to `main` is then released to npm as `latest` in one step by semantic-release, with provenance, so `npm install @ai-ecoverse/mcpcat` and the installer always get certified code. The verdict line is a comment on the pull request and the `cert-review` commit status. It reads `certified …`, `cert-ci: FAIL …` when the reviewer or a check in code found a defect (status `failure`), or `cert-ci: INCOMPLETE …` when the review couldn't decide: the review job didn't succeed or was skipped, no verdict could be read, or the artifact or the runner's own `gh` was missing (status `error`). A fork's change to shipped behaviour also reads INCOMPLETE, since it gets no review. INCOMPLETE never certifies; re-run the failed jobs. A run that ends without `record` posting its status (a crashed plan, record or verdict job) still posts one on the head: `error` with its INCOMPLETE line, `failure` for a FAIL, or `pending` while the coordinator approval is missing. So the required `cert-review` check never waits forever, and a label change reuses only a `success` or `failure` verdict, never an INCOMPLETE one. The reviewer's verdict can add defects but never clear one found in code: `record` re-reads the suites' evidence (`stage.json`, `suites.json`), uploaded before the reviewer runs and bound by the artifact id and digest the review job output. A suite or security row that failed on the host or a pinned kernel, a changed test that fails on the head, an import in the kernel bundle or an unexplained rebuild difference is a FAIL. Missing suites, kernels or rows are INCOMPLETE. The NEGATIVE runs each changed test on the base's code: the subject's tests, helpers and fixtures with the base's `dist`, `scripts/` and `.github/workflows/`, all from the base sha, so a test of the cert tooling runs against main's tooling. The record names both shas. A changed test that also passes on the base is named in the line as `gaps: no-negative <file>`. Every artifact a later job reads (the tarball, the verdict, the suites' evidence) is downloaded by the artifact id its producer output, after `bind.mjs` checks the artifact's name, run and digest against that producer's outputs. Any other artifact from this attempt of the run under `mcpcat-tarball-`, `mcpcat-npm-tarball-` or `cert-review-` makes the line INCOMPLETE. An earlier attempt's leftovers, created before this attempt started, are never read.
|
|
29
|
+
Every change that alters what mcpcat ships is certified before it reaches `main`. A pull request that touches `src/`, the build, the dependencies or the release workflows gets mcpcat's cert-review on a pack of its head, and again in the merge queue on the exact tree that lands on `main`; a FAIL blocks the merge. Docs-, test- and CI-only changes skip it as "not behaviour". A draft pull request is not reviewed: its `cert-review` is red with `draft: not reviewed, mark it ready for review`, and marking it ready starts the review (converted_to_draft cancels a running one). Mark ready = reviewed, and merges on green; a pull request held for anything stays a draft. For a PR that needs the coordinator's security read, the order is: the coordinator reads the draft, it is marked ready, the cert runs, then the queue. Each merge to `main` is then released to npm as `latest` in one step by semantic-release, with provenance, so `npm install @ai-ecoverse/mcpcat` and the installer always get certified code. The verdict line is a comment on the pull request and the `cert-review` commit status. It reads `certified …`, `cert-ci: FAIL …` when the reviewer or a check in code found a defect (status `failure`), or `cert-ci: INCOMPLETE …` when the review couldn't decide: the review job didn't succeed or was skipped, no verdict could be read, or the artifact or the runner's own `gh` was missing (status `error`). A fork's change to shipped behaviour also reads INCOMPLETE, since it gets no review. INCOMPLETE never certifies; re-run the failed jobs. A run that ends without `record` posting its status (a crashed plan, record or verdict job) still posts one on the head: `error` with its INCOMPLETE line, `failure` for a FAIL, or `pending` while the coordinator approval is missing. So the required `cert-review` check never waits forever, and a label change reuses only a `success` or `failure` verdict, never an INCOMPLETE one. The reviewer's verdict can add defects but never clear one found in code: `record` re-reads the suites' evidence (`stage.json`, `suites.json`), uploaded before the reviewer runs and bound by the artifact id and digest the review job output. A suite or security row that failed on the host or a pinned kernel, a changed test that fails on the head, an import in the kernel bundle or an unexplained rebuild difference is a FAIL. Missing suites, kernels or rows are INCOMPLETE. The NEGATIVE runs each changed test on the base's code: the subject's tests, helpers and fixtures with the base's `dist`, `scripts/` and `.github/workflows/`, all from the base sha, so a test of the cert tooling runs against main's tooling. The record names both shas. A changed test that also passes on the base is named in the line as `gaps: no-negative <file>`. Every artifact a later job reads (the tarball, the verdict, the suites' evidence) is downloaded by the artifact id its producer output, after `bind.mjs` checks the artifact's name, run and digest against that producer's outputs. Any other artifact from this attempt of the run under `mcpcat-tarball-`, `mcpcat-npm-tarball-` or `cert-review-` makes the line INCOMPLETE. An earlier attempt's leftovers, created before this attempt started, are never read.
|
|
30
30
|
|
|
31
31
|
After each release, `cert-verify.yml` (on the Release run's success, or dispatched from `main` with a `version`) checks again that npm serves the SLSA subject built by `release.yml` on `main` from the tag, and that every pull request merged since the previous tag carries a green `cert-review` status on its head. Its hosted, write-only `notes` job then puts one line into the GitHub release notes, between `<!-- cert-verify -->` markers: `certified @ai-ecoverse/mcpcat@<version> sha256=<sha> (…; pr-certified since v<prev>: …)`, or `verified …` when some pull request lacks a green cert-review. A re-run with the same bytes leaves the notes as they are. Notes that already name another sha for the version, or npm bytes that don't verify, are a supply-chain alert: nothing is written and an issue is filed. Checks that couldn't run read `cert-ci: INCOMPLETE` and write nothing.
|
|
32
32
|
|
package/dist/host/mcpcat.mjs
CHANGED
|
@@ -15432,11 +15432,15 @@ Client verbs:
|
|
|
15432
15432
|
tools <target> List tools
|
|
15433
15433
|
call <target> <tool> Call a tool
|
|
15434
15434
|
describe <target> [tool] Tool schema and help
|
|
15435
|
+
resources <target> List resources
|
|
15436
|
+
read <target> <uri> Read a resource
|
|
15437
|
+
prompts <target> List prompts
|
|
15438
|
+
prompt <target> <name> Get a prompt
|
|
15435
15439
|
|
|
15436
15440
|
Configuration verbs:
|
|
15437
15441
|
add <name> <url> Add a server to mcp.json
|
|
15438
|
-
add <name> --bridge --
|
|
15439
|
-
|
|
15442
|
+
add <name> --bridge -- <command> [args\u2026]
|
|
15443
|
+
Bridge a stdio server to HTTP (kernel only,
|
|
15440
15444
|
runs in foreground, does not survive reload)
|
|
15441
15445
|
rm <name> Remove a server
|
|
15442
15446
|
list List configured servers
|
|
@@ -15452,12 +15456,12 @@ Server and code verbs:
|
|
|
15452
15456
|
grep <pattern> [target\u2026] Search tools by name or description
|
|
15453
15457
|
discover <url> Find MCP servers at a URL
|
|
15454
15458
|
inbox [--json] List discovery candidates
|
|
15455
|
-
help
|
|
15459
|
+
help Show this help
|
|
15456
15460
|
help --skill Print the agent skill (SKILL.md) for this version
|
|
15457
15461
|
|
|
15458
15462
|
Options:
|
|
15459
15463
|
--json JSON output
|
|
15460
|
-
-H, --header 'N: V'
|
|
15464
|
+
-H, --header 'N: V' Extra header
|
|
15461
15465
|
-d <json> Tool arguments as JSON (or @file, @- for stdin)
|
|
15462
15466
|
-m, --timeout <s> Request timeout (default 60)
|
|
15463
15467
|
--memory <MiB> Code mode memory limit (default 256, max 1024)
|
|
@@ -15471,7 +15475,7 @@ Options:
|
|
|
15471
15475
|
-s, --server <name> Server target (code, repeatable)
|
|
15472
15476
|
--allow-shell Enable shell() global (code)
|
|
15473
15477
|
-v, --verbose Trace on stderr
|
|
15474
|
-
|
|
15478
|
+
--silent Suppress progress
|
|
15475
15479
|
-o, --output <path> Write result to file
|
|
15476
15480
|
-V, --version Print version
|
|
15477
15481
|
-h, --help Show this help
|
|
@@ -16988,5 +16992,5 @@ try {
|
|
|
16988
16992
|
});
|
|
16989
16993
|
} catch {
|
|
16990
16994
|
}
|
|
16991
|
-
var code = await run(platform, "0.17.
|
|
16995
|
+
var code = await run(platform, "0.17.1", args);
|
|
16992
16996
|
process.exit(code);
|
package/dist/kernel/mcpcat.mjs
CHANGED
|
@@ -15053,11 +15053,15 @@ Client verbs:
|
|
|
15053
15053
|
tools <target> List tools
|
|
15054
15054
|
call <target> <tool> Call a tool
|
|
15055
15055
|
describe <target> [tool] Tool schema and help
|
|
15056
|
+
resources <target> List resources
|
|
15057
|
+
read <target> <uri> Read a resource
|
|
15058
|
+
prompts <target> List prompts
|
|
15059
|
+
prompt <target> <name> Get a prompt
|
|
15056
15060
|
|
|
15057
15061
|
Configuration verbs:
|
|
15058
15062
|
add <name> <url> Add a server to mcp.json
|
|
15059
|
-
add <name> --bridge --
|
|
15060
|
-
|
|
15063
|
+
add <name> --bridge -- <command> [args\u2026]
|
|
15064
|
+
Bridge a stdio server to HTTP (kernel only,
|
|
15061
15065
|
runs in foreground, does not survive reload)
|
|
15062
15066
|
rm <name> Remove a server
|
|
15063
15067
|
list List configured servers
|
|
@@ -15073,12 +15077,12 @@ Server and code verbs:
|
|
|
15073
15077
|
grep <pattern> [target\u2026] Search tools by name or description
|
|
15074
15078
|
discover <url> Find MCP servers at a URL
|
|
15075
15079
|
inbox [--json] List discovery candidates
|
|
15076
|
-
help
|
|
15080
|
+
help Show this help
|
|
15077
15081
|
help --skill Print the agent skill (SKILL.md) for this version
|
|
15078
15082
|
|
|
15079
15083
|
Options:
|
|
15080
15084
|
--json JSON output
|
|
15081
|
-
-H, --header 'N: V'
|
|
15085
|
+
-H, --header 'N: V' Extra header
|
|
15082
15086
|
-d <json> Tool arguments as JSON (or @file, @- for stdin)
|
|
15083
15087
|
-m, --timeout <s> Request timeout (default 60)
|
|
15084
15088
|
--memory <MiB> Code mode memory limit (default 256, max 1024)
|
|
@@ -15092,7 +15096,7 @@ Options:
|
|
|
15092
15096
|
-s, --server <name> Server target (code, repeatable)
|
|
15093
15097
|
--allow-shell Enable shell() global (code)
|
|
15094
15098
|
-v, --verbose Trace on stderr
|
|
15095
|
-
|
|
15099
|
+
--silent Suppress progress
|
|
15096
15100
|
-o, --output <path> Write result to file
|
|
15097
15101
|
-V, --version Print version
|
|
15098
15102
|
-h, --help Show this help
|
|
@@ -16710,7 +16714,7 @@ async function main(ctx) {
|
|
|
16710
16714
|
packageDir: "/node_modules/@ai-ecoverse/mcpcat"
|
|
16711
16715
|
});
|
|
16712
16716
|
const args = ctx.argv.slice(1);
|
|
16713
|
-
return run(platform2, "0.17.
|
|
16717
|
+
return run(platform2, "0.17.1", args);
|
|
16714
16718
|
}
|
|
16715
16719
|
export {
|
|
16716
16720
|
main as default
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/mcpcat",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.1",
|
|
4
4
|
"description": "A curl for the Model Context Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -61,15 +61,15 @@
|
|
|
61
61
|
"trust:dry": "npx fledgling sync --dry-run -y --skip-publish"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@ai-ecoverse/slicc-bios": "1.
|
|
65
|
-
"@ai-ecoverse/slicc-kernel": "1.
|
|
64
|
+
"@ai-ecoverse/slicc-bios": "1.30.4",
|
|
65
|
+
"@ai-ecoverse/slicc-kernel": "1.133.3",
|
|
66
66
|
"@ai-ecoverse/slicc-shared-web": "1.23.2",
|
|
67
67
|
"@biomejs/biome": "2.5.15",
|
|
68
68
|
"@earendil-works/pi-codemode": "1.2.0",
|
|
69
69
|
"@earendil-works/pi-mcp": "1.2.0",
|
|
70
70
|
"@types/node": "26.6.5",
|
|
71
71
|
"esbuild": "0.28.2",
|
|
72
|
-
"kernel-cert-new": "npm:@ai-ecoverse/slicc-kernel@1.
|
|
72
|
+
"kernel-cert-new": "npm:@ai-ecoverse/slicc-kernel@1.133.3",
|
|
73
73
|
"monocart-coverage-reports": "2.13.2",
|
|
74
74
|
"proper-lockfile": "4.1.2",
|
|
75
75
|
"quickjs-wasi": "3.6.2",
|