ccs-mcp-server 1.2.0 → 1.2.2
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/LICENSE +82 -0
- package/package.json +1 -1
- package/src/index.js +7 -4
- package/src/receipts.js +18 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
Elastic License v2
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Correctover. All rights reserved.
|
|
4
|
+
|
|
5
|
+
## Elastic License
|
|
6
|
+
|
|
7
|
+
### Acceptance
|
|
8
|
+
|
|
9
|
+
By using the software, you agree to all of the terms and conditions below.
|
|
10
|
+
|
|
11
|
+
### Copyright License
|
|
12
|
+
|
|
13
|
+
The licensor grants you a free of charge, non-exclusive, worldwide,
|
|
14
|
+
non-sublicensable, non-transferable, royalty-free license under its
|
|
15
|
+
copyright and database rights to: use, copy, distribute, make
|
|
16
|
+
available, and prepare derivative works of, the software; and
|
|
17
|
+
permit persons to whom the software is furnished to do the same;
|
|
18
|
+
in each case to provide services to your own internal users and to
|
|
19
|
+
third parties; all provided, however, that you and any such persons
|
|
20
|
+
do not (and have no right to):
|
|
21
|
+
1. provide the software as a managed service to third parties;
|
|
22
|
+
or
|
|
23
|
+
2. circumvent the capacity or functionality limits of any
|
|
24
|
+
commercial/enterprise features in the software, or unlock any
|
|
25
|
+
functionality locked by a license key; or
|
|
26
|
+
3. remove or hide any software source code, functionality,
|
|
27
|
+
license terms, or other technical or legal restrictions
|
|
28
|
+
(including any copyright, trademark, or other proprietary
|
|
29
|
+
rights notices).
|
|
30
|
+
|
|
31
|
+
If use of the software is under a trial license or for evaluation
|
|
32
|
+
purposes, you may use the software only for evaluation and
|
|
33
|
+
non-production uses during the trial period.
|
|
34
|
+
|
|
35
|
+
### Patent License
|
|
36
|
+
|
|
37
|
+
The licensor grants you a free of charge, non-exclusive,
|
|
38
|
+
non-sublicensable, non-transferable, royalty-free license under
|
|
39
|
+
its patent claims that are embodied in the software, to make,
|
|
40
|
+
have made, use, import, and otherwise transfer the software,
|
|
41
|
+
provided that you do not (and have no right to) provide the
|
|
42
|
+
software as a managed service to third parties. This license
|
|
43
|
+
terminates automatically when you commence patent action
|
|
44
|
+
concerning the software.
|
|
45
|
+
|
|
46
|
+
### Trademark License
|
|
47
|
+
|
|
48
|
+
No permission is granted to use the trade names, trademarks,
|
|
49
|
+
service marks, or product names of the licensor or its contributors
|
|
50
|
+
except as required for reasonable and customary use in describing
|
|
51
|
+
and as necessary to comply with the notice and attribution
|
|
52
|
+
requirements above.
|
|
53
|
+
|
|
54
|
+
### No Other Rights
|
|
55
|
+
|
|
56
|
+
The terms and conditions of this license do not grant any other
|
|
57
|
+
permission to the software or any other intellectual property.
|
|
58
|
+
|
|
59
|
+
### No Warranty
|
|
60
|
+
|
|
61
|
+
The software is provided "as is" without warranty, to the maximum
|
|
62
|
+
extent permitted by law. The licensor disclaims and has no liability
|
|
63
|
+
of any kind for any and all warranties, conditions, and other terms
|
|
64
|
+
that would otherwise exist, including: merchantability, satisfactory
|
|
65
|
+
quality, fitness for a particular purpose, title, non-infringement,
|
|
66
|
+
or any warranties that the software is error-free or that any defects
|
|
67
|
+
will be corrected. The licensor disclaims and has no liability for
|
|
68
|
+
loss or damage to any data or information stored or processed
|
|
69
|
+
through the software. Nothing in this license applies to any
|
|
70
|
+
software that is not the software.
|
|
71
|
+
|
|
72
|
+
### Limitation of Liability
|
|
73
|
+
|
|
74
|
+
To the maximum extent permitted by law, in no event shall the
|
|
75
|
+
licensor be liable for any direct, indirect, incidental, special,
|
|
76
|
+
punitive, or consequential damages, including damages for loss of
|
|
77
|
+
profits, goodwill, use, data, or other intangible losses, whether
|
|
78
|
+
based on warranty, contract, tort, or any other legal theory,
|
|
79
|
+
regardless of whether the licensor has been advised of the
|
|
80
|
+
possibility of such damages. If any court refuses to grant the
|
|
81
|
+
foregoing limitations, then liability shall be limited to the
|
|
82
|
+
greatest extent permitted by law.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccs-mcp-server",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "CCS Runtime Evidence MCP Server — verify AI agent tool calls, issue Ed25519-signed evidence receipts, audit MCP configs, and bind execution to declared intent (cross-model amount drift protection). For Claude Desktop, Cursor, Windsurf, and any MCP client.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"bin": {
|
package/src/index.js
CHANGED
|
@@ -32,7 +32,7 @@ const receipts = require("./receipts");
|
|
|
32
32
|
// CCS Verifier Core (pure stdlib Node.js)
|
|
33
33
|
// ---------------------------------------------------------------------------
|
|
34
34
|
|
|
35
|
-
const CCS_VERSION = "1.2.
|
|
35
|
+
const CCS_VERSION = "1.2.2";
|
|
36
36
|
|
|
37
37
|
const DEFAULT_POLICY = {
|
|
38
38
|
mode: "block",
|
|
@@ -111,9 +111,12 @@ function deepMerge(base, override) {
|
|
|
111
111
|
return result;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
// Use the receipt module's recursive canonical serializer. The previous
|
|
115
|
+
// JSON.stringify(obj, Object.keys(obj).sort()) implementation dropped all
|
|
116
|
+
// nested object fields because the top-level key array acts as a recursive
|
|
117
|
+
// whitelist; that made content/evidence hashes omit dimensions and other
|
|
118
|
+
// nested data. Fixed in 1.2.2.
|
|
119
|
+
const canonical = receipts.canonical;
|
|
117
120
|
|
|
118
121
|
function sha256(s) {
|
|
119
122
|
return "sha256:" + crypto.createHash("sha256").update(s).digest("hex");
|
package/src/receipts.js
CHANGED
|
@@ -29,7 +29,24 @@ const ALG_INTERNAL = "ed25519";
|
|
|
29
29
|
const SIGNATURE_FIELDS = ["signer_public_key", "signature_alg", "signature", "verified"];
|
|
30
30
|
|
|
31
31
|
function canonical(obj) {
|
|
32
|
-
|
|
32
|
+
// Recursive JCS-style deterministic JSON: sort object keys at EVERY nesting
|
|
33
|
+
// level, preserve array order. NOTE: a previous implementation used
|
|
34
|
+
// JSON.stringify(obj, Object.keys(obj).sort()) which applies the top-level
|
|
35
|
+
// key list as a recursive whitelist and silently drops all nested fields
|
|
36
|
+
// from the serialized output — meaning signatures/hashes did not cover
|
|
37
|
+
// dimensions, semantic_analysis, etc. That was a security bug fixed in
|
|
38
|
+
// 1.2.2. Receipts issued by <=1.2.1 do not cover nested fields and must be
|
|
39
|
+
// re-issued.
|
|
40
|
+
if (Array.isArray(obj)) {
|
|
41
|
+
return "[" + obj.map(canonical).join(",") + "]";
|
|
42
|
+
}
|
|
43
|
+
if (obj !== null && typeof obj === "object") {
|
|
44
|
+
const keys = Object.keys(obj).sort();
|
|
45
|
+
return "{" + keys
|
|
46
|
+
.map((k) => JSON.stringify(k) + ":" + canonical(obj[k]))
|
|
47
|
+
.join(",") + "}";
|
|
48
|
+
}
|
|
49
|
+
return JSON.stringify(obj);
|
|
33
50
|
}
|
|
34
51
|
|
|
35
52
|
function defaultKeyDir() {
|