@primitivehub/mcp-server 0.1.3 → 0.1.4
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 +17 -0
- package/dist/tools/scan-text.d.ts.map +1 -1
- package/dist/tools/scan-text.js +13 -2
- package/dist/tools/scan-text.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,23 @@ Version tracks Trust Contract spec version (for `verify_bundle`) and
|
|
|
6
6
|
Context CI Top 10 version (for `scan_text` / `audit_workspace`);
|
|
7
7
|
`0.1.x` of this package is conformant to both v0.1.
|
|
8
8
|
|
|
9
|
+
## [0.1.4] — 2026-10-16
|
|
10
|
+
|
|
11
|
+
**Security hardening (adversarial red-team, 2026-10-16).** Requires
|
|
12
|
+
`@primitivehub/phub@^0.1.4` + `@primitivehub/verify@^0.1.2`.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **R14 — `scan_text` fail-safe on unknown detector.** An unknown
|
|
16
|
+
`detectors` id previously ran zero detectors and returned a clean,
|
|
17
|
+
non-error result. The tool now surfaces `UnknownDetectorError` as
|
|
18
|
+
`isError` instead of reporting a zero-detector scan as clean.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Inherits phub@0.1.4's red-team fixes end-to-end: `verify_before_load`
|
|
22
|
+
carries the new posture-tier `PATH_UNASSESSED` reason (R05) and the
|
|
23
|
+
hardened `--require-attestation` semantics (R01); `audit_workspace`
|
|
24
|
+
inherits the truncated-audit fail-closed behavior (R04).
|
|
25
|
+
|
|
9
26
|
## [0.1.3] — 2026-10-16
|
|
10
27
|
|
|
11
28
|
**Security hardening (external assessment PH-SEC-003).** Requires
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-text.d.ts","sourceRoot":"","sources":["../../src/tools/scan-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAA;AAWV,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,GACf;IAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"scan-text.d.ts","sourceRoot":"","sources":["../../src/tools/scan-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAA;AAWV,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,GACf;IAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAuDrD"}
|
package/dist/tools/scan-text.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* the tool returns the post-policy verdicts. The agent decides what
|
|
10
10
|
* to do with the result.
|
|
11
11
|
*/
|
|
12
|
-
import { runScan } from "@primitivehub/phub";
|
|
12
|
+
import { runScan, UnknownDetectorError } from "@primitivehub/phub";
|
|
13
13
|
export const SCAN_TEXT_TOOL = {
|
|
14
14
|
name: "scan_text",
|
|
15
15
|
description: "Run the PrimitiveHub Context CI Top 10 v0.1 detectors (T1 prompt-injection, T2 Unicode-steganography, T5 unsafe-shell-install) against a string. Pure-local scan; no network. Returns per-detector verdicts, post-policy. Use this BEFORE loading any agent-context content from an untrusted source.",
|
|
@@ -63,7 +63,18 @@ export function callScanText(rawArgs) {
|
|
|
63
63
|
if (args.policy_path !== undefined) {
|
|
64
64
|
scanOpts.policyPath = args.policy_path;
|
|
65
65
|
}
|
|
66
|
-
|
|
66
|
+
// SECURITY (R14): an unknown detector id must NOT yield an empty, clean-
|
|
67
|
+
// looking scan. Fail safe with isError instead of reporting zero verdicts.
|
|
68
|
+
let result;
|
|
69
|
+
try {
|
|
70
|
+
result = runScan(filename, args.content, scanOpts);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
if (err instanceof UnknownDetectorError) {
|
|
74
|
+
return errorResponse(`${err.message} — refusing to report a zero-detector scan as clean`);
|
|
75
|
+
}
|
|
76
|
+
throw err;
|
|
77
|
+
}
|
|
67
78
|
const summary = result.evaluation.summary;
|
|
68
79
|
const allowed = result.evaluation.adjusted.flatMap((a) => a.allowedHints.map((ah) => ({
|
|
69
80
|
cciId: a.verdict.cciId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-text.js","sourceRoot":"","sources":["../../src/tools/scan-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAoB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"scan-text.js","sourceRoot":"","sources":["../../src/tools/scan-text.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@primitivehub/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "MCP server exposing PrimitiveHub verification + scanning to AI agents (Claude, Cursor, Aider, …). Pure transport over @primitivehub/verify + @primitivehub/phub — zero custom trust logic.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "PrimitiveHub AI / CyberOrca Labs",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"bin": {
|
|
18
|
-
"primitivehub-mcp": "bin/primitivehub-mcp.js"
|
|
18
|
+
"primitivehub-mcp": "./bin/primitivehub-mcp.js"
|
|
19
19
|
},
|
|
20
20
|
"main": "./dist/index.js",
|
|
21
21
|
"types": "./dist/index.d.ts",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
52
52
|
"@primitivehub/verify": "^0.1.2",
|
|
53
|
-
"@primitivehub/phub": "^0.1.
|
|
53
|
+
"@primitivehub/phub": "^0.1.4"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/node": "^22",
|