@pcircle/evidencemcp-server 0.1.0 → 0.2.0
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 +27 -297
- package/dist/index.d.ts +1 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +55 -123
- package/dist/index.js.map +1 -1
- package/dist/lib/crypto/decrypt.d.ts +11 -0
- package/dist/lib/crypto/decrypt.d.ts.map +1 -0
- package/dist/lib/crypto/decrypt.js +30 -0
- package/dist/lib/crypto/decrypt.js.map +1 -0
- package/dist/lib/crypto/encrypt.d.ts +13 -0
- package/dist/lib/crypto/encrypt.d.ts.map +1 -0
- package/dist/lib/crypto/encrypt.js +24 -0
- package/dist/lib/crypto/encrypt.js.map +1 -0
- package/dist/lib/crypto/index.d.ts +6 -0
- package/dist/lib/crypto/index.d.ts.map +1 -0
- package/dist/lib/crypto/index.js +5 -0
- package/dist/lib/crypto/index.js.map +1 -0
- package/dist/lib/crypto/key-derivation.d.ts +30 -0
- package/dist/lib/crypto/key-derivation.d.ts.map +1 -0
- package/dist/lib/crypto/key-derivation.js +63 -0
- package/dist/lib/crypto/key-derivation.js.map +1 -0
- package/dist/lib/crypto/types.d.ts +22 -0
- package/dist/lib/crypto/types.d.ts.map +1 -0
- package/dist/lib/crypto/types.js +10 -0
- package/dist/lib/crypto/types.js.map +1 -0
- package/dist/lib/storage/database.d.ts +66 -0
- package/dist/lib/storage/database.d.ts.map +1 -0
- package/dist/lib/storage/database.js +195 -0
- package/dist/lib/storage/database.js.map +1 -0
- package/dist/lib/storage/export.d.ts +26 -0
- package/dist/lib/storage/export.d.ts.map +1 -0
- package/dist/lib/storage/export.js +113 -0
- package/dist/lib/storage/export.js.map +1 -0
- package/dist/lib/storage/git.d.ts +16 -0
- package/dist/lib/storage/git.d.ts.map +1 -0
- package/dist/lib/storage/git.js +55 -0
- package/dist/lib/storage/git.js.map +1 -0
- package/dist/lib/storage/index.d.ts +6 -0
- package/dist/lib/storage/index.d.ts.map +1 -0
- package/dist/lib/storage/index.js +5 -0
- package/dist/lib/storage/index.js.map +1 -0
- package/dist/lib/storage/schema.d.ts +17 -0
- package/dist/lib/storage/schema.d.ts.map +1 -0
- package/dist/lib/storage/schema.js +103 -0
- package/dist/lib/storage/schema.js.map +1 -0
- package/dist/lib/storage/types.d.ts +26 -0
- package/dist/lib/storage/types.d.ts.map +1 -0
- package/dist/lib/storage/types.js +2 -0
- package/dist/lib/storage/types.js.map +1 -0
- package/dist/test-helpers.d.ts +12 -30
- package/dist/test-helpers.d.ts.map +1 -1
- package/dist/test-helpers.js +59 -121
- package/dist/test-helpers.js.map +1 -1
- package/dist/types.d.ts +0 -25
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/lib/storage/schema.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqB;IAChD,IAAI,CAAC;QACH,yBAAyB;QACzB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;KAgBP,CAAC,CAAC;QAEH,8CAA8C;QAC9C,EAAE,CAAC,IAAI,CAAC;;;;;KAKP,CAAC,CAAC;QAEH,oCAAoC;QACpC,EAAE,CAAC,IAAI,CAAC;;KAEP,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC;;KAEP,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC;;KAEP,CAAC,CAAC;QAEH,kEAAkE;QAClE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGvB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oEAAoE;QACpE,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqB;IAChD,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,kBAAkB,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAA0C,CAAC;QACvG,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,iCAAiC;QACjC,MAAM,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAA0C,CAAC;QACrG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mDAAmD;QACnD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,eAAe,GAAG;YACtB,IAAI;YACJ,WAAW;YACX,kBAAkB;YAClB,OAAO;YACP,aAAa;YACb,cAAc;YACd,WAAW;YACX,WAAW;SACZ,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evidence record stored in the database
|
|
3
|
+
*/
|
|
4
|
+
export interface Evidence {
|
|
5
|
+
id: string;
|
|
6
|
+
timestamp: string;
|
|
7
|
+
conversationId: string | null;
|
|
8
|
+
llmProvider: string | null;
|
|
9
|
+
encryptedContent: Uint8Array;
|
|
10
|
+
nonce: Uint8Array;
|
|
11
|
+
contentHash: string;
|
|
12
|
+
messageCount: number;
|
|
13
|
+
gitCommitHash: string | null;
|
|
14
|
+
gitTimestamp: string | null;
|
|
15
|
+
tags: string | null;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
updatedAt: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Metadata key-value pairs for schema versioning and other system data
|
|
21
|
+
*/
|
|
22
|
+
export interface Metadata {
|
|
23
|
+
key: string;
|
|
24
|
+
value: string;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/storage/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,UAAU,CAAC;IAC7B,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/storage/types.ts"],"names":[],"mappings":""}
|
package/dist/test-helpers.d.ts
CHANGED
|
@@ -1,51 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Test Helper Utilities for EvidenceMCP Server
|
|
3
|
-
*
|
|
4
|
-
* This module provides type-safe testing utilities without exposing
|
|
5
|
-
* internal implementation details through `as any` casts.
|
|
6
3
|
*/
|
|
7
4
|
import type { EvidenceMCPServer } from './index.js';
|
|
8
|
-
/**
|
|
9
|
-
* Tool information for testing
|
|
10
|
-
*/
|
|
11
5
|
export interface ToolInfo {
|
|
12
6
|
name: string;
|
|
13
7
|
description: string;
|
|
14
8
|
}
|
|
15
|
-
/**
|
|
16
|
-
* Resource information for testing
|
|
17
|
-
*/
|
|
18
9
|
export interface ResourceInfo {
|
|
19
10
|
name: string;
|
|
20
11
|
uriTemplate: string;
|
|
21
12
|
description: string;
|
|
22
13
|
mimeType: string;
|
|
23
14
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Test Helpers for EvidenceMCP Server
|
|
26
|
-
*/
|
|
27
15
|
export declare class EvidenceMCPTestHelpers {
|
|
28
16
|
private server;
|
|
29
17
|
constructor(server: EvidenceMCPServer);
|
|
30
|
-
|
|
31
|
-
* Get list of registered tools (for testing)
|
|
32
|
-
*/
|
|
18
|
+
private getServerInternal;
|
|
33
19
|
getTools(): Promise<ToolInfo[]>;
|
|
34
|
-
/**
|
|
35
|
-
* Get list of registered resources (for testing)
|
|
36
|
-
*/
|
|
37
20
|
getResources(): Promise<ResourceInfo[]>;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
executeTool(toolName: string, params:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
callTool(name: string, params: any): Promise<any>;
|
|
21
|
+
readResource(uri: string): Promise<{
|
|
22
|
+
contents: Array<{
|
|
23
|
+
uri: string;
|
|
24
|
+
mimeType: string;
|
|
25
|
+
text: string;
|
|
26
|
+
}>;
|
|
27
|
+
}>;
|
|
28
|
+
executeTool(toolName: string, params: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
29
|
+
callTool(name: string, params: Record<string, unknown>): Promise<{
|
|
30
|
+
structuredContent: Record<string, unknown>;
|
|
31
|
+
}>;
|
|
50
32
|
}
|
|
51
33
|
//# sourceMappingURL=test-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAuDD,qBAAa,sBAAsB;IACrB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAE7C,OAAO,CAAC,iBAAiB;IAInB,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAS/B,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAiBvC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IA0BxG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAmBhG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAIvH"}
|
package/dist/test-helpers.js
CHANGED
|
@@ -1,170 +1,108 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Test Helper Utilities for EvidenceMCP Server
|
|
3
|
-
*
|
|
4
|
-
* This module provides type-safe testing utilities without exposing
|
|
5
|
-
* internal implementation details through `as any` casts.
|
|
6
3
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
function getFromRegistry(registry, finder) {
|
|
5
|
+
if (!registry)
|
|
6
|
+
return null;
|
|
7
|
+
if (registry instanceof Map) {
|
|
8
|
+
for (const [key, value] of registry.entries()) {
|
|
9
|
+
const result = finder(key, value);
|
|
10
|
+
if (result)
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
else if (Array.isArray(registry)) {
|
|
15
|
+
for (const item of registry) {
|
|
16
|
+
const result = finder(item.name, item);
|
|
17
|
+
if (result)
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else if (typeof registry === 'object') {
|
|
22
|
+
for (const [key, value] of Object.entries(registry)) {
|
|
23
|
+
const result = finder(key, value);
|
|
24
|
+
if (result)
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
12
29
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*/
|
|
16
|
-
function extractFromRegistry(registry, mapExtractor, arrayExtractor, objectExtractor) {
|
|
17
|
-
if (!registry) {
|
|
30
|
+
function mapRegistry(registry, mapper) {
|
|
31
|
+
if (!registry)
|
|
18
32
|
return [];
|
|
33
|
+
if (registry instanceof Map) {
|
|
34
|
+
return Array.from(registry.entries()).map(([key, value]) => mapper(key, value));
|
|
19
35
|
}
|
|
20
|
-
// Check if it's a Map
|
|
21
|
-
if (registry instanceof Map || (registry && typeof registry.entries === 'function')) {
|
|
22
|
-
return mapExtractor(registry.entries());
|
|
23
|
-
}
|
|
24
|
-
// Check if it's an Array
|
|
25
36
|
if (Array.isArray(registry)) {
|
|
26
|
-
return
|
|
37
|
+
return registry.map((item) => mapper(item.name, item));
|
|
27
38
|
}
|
|
28
|
-
// Check if it's an Object
|
|
29
39
|
if (typeof registry === 'object') {
|
|
30
|
-
return
|
|
40
|
+
return Object.entries(registry).map(([key, value]) => mapper(key, value));
|
|
31
41
|
}
|
|
32
42
|
return [];
|
|
33
43
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Test Helpers for EvidenceMCP Server
|
|
36
|
-
*/
|
|
37
44
|
export class EvidenceMCPTestHelpers {
|
|
38
45
|
server;
|
|
39
46
|
constructor(server) {
|
|
40
47
|
this.server = server;
|
|
41
48
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
49
|
+
getServerInternal() {
|
|
50
|
+
return this.server;
|
|
51
|
+
}
|
|
45
52
|
async getTools() {
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
return extractFromRegistry(tools,
|
|
49
|
-
// Map extractor
|
|
50
|
-
(entries) => Array.from(entries).map(([name, tool]) => ({
|
|
51
|
-
name,
|
|
52
|
-
description: tool.description || tool.title
|
|
53
|
-
})),
|
|
54
|
-
// Array extractor
|
|
55
|
-
(items) => items.map((tool) => ({
|
|
56
|
-
name: tool.name,
|
|
57
|
-
description: tool.description
|
|
58
|
-
})),
|
|
59
|
-
// Object extractor
|
|
60
|
-
(entries) => entries.map(([name, tool]) => ({
|
|
53
|
+
const tools = Reflect.get(this.getServerInternal().server, '_registeredTools');
|
|
54
|
+
return mapRegistry(tools, (name, tool) => ({
|
|
61
55
|
name,
|
|
62
|
-
description: tool.description || tool.title
|
|
63
|
-
}))
|
|
56
|
+
description: (tool.description || tool.title)
|
|
57
|
+
}));
|
|
64
58
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Get list of registered resources (for testing)
|
|
67
|
-
*/
|
|
68
59
|
async getResources() {
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
return extractFromRegistry(templates,
|
|
72
|
-
// Map extractor
|
|
73
|
-
(entries) => Array.from(entries).map(([name, template]) => ({
|
|
60
|
+
const templates = Reflect.get(this.getServerInternal().server, '_registeredResourceTemplates');
|
|
61
|
+
return mapRegistry(templates, (name, template) => ({
|
|
74
62
|
name,
|
|
75
|
-
uriTemplate: template.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
})),
|
|
86
|
-
// Object extractor
|
|
87
|
-
(entries) => entries.map(([name, template]) => ({
|
|
88
|
-
name,
|
|
89
|
-
uriTemplate: template.resourceTemplate?._uriTemplate?.template || template.uriTemplate || '',
|
|
90
|
-
description: template.metadata?.description || template.description || '',
|
|
91
|
-
mimeType: template.metadata?.mimeType || template.mimeType || 'text/plain'
|
|
92
|
-
})));
|
|
63
|
+
uriTemplate: template.resourceTemplate?._uriTemplate?.template
|
|
64
|
+
|| template.uriTemplate
|
|
65
|
+
|| '',
|
|
66
|
+
description: template.metadata?.description
|
|
67
|
+
|| template.description
|
|
68
|
+
|| '',
|
|
69
|
+
mimeType: template.metadata?.mimeType
|
|
70
|
+
|| template.mimeType
|
|
71
|
+
|| 'text/plain'
|
|
72
|
+
}));
|
|
93
73
|
}
|
|
94
|
-
/**
|
|
95
|
-
* Read a resource by URI (for testing)
|
|
96
|
-
*/
|
|
97
74
|
async readResource(uri) {
|
|
98
|
-
const
|
|
99
|
-
const templates = getRegistry(serverInternal.server, '_registeredResourceTemplates');
|
|
100
|
-
if (!templates) {
|
|
101
|
-
throw new Error('No resources registered');
|
|
102
|
-
}
|
|
103
|
-
// Parse URI to get resource name and ID
|
|
75
|
+
const templates = Reflect.get(this.getServerInternal().server, '_registeredResourceTemplates');
|
|
104
76
|
const match = uri.match(/^(\w+):\/\/(.+)$/);
|
|
105
77
|
if (!match) {
|
|
106
78
|
throw new Error('Unknown resource');
|
|
107
79
|
}
|
|
108
80
|
const [, resourceName, id] = match;
|
|
109
|
-
|
|
110
|
-
let handler = null;
|
|
111
|
-
if (templates instanceof Map) {
|
|
112
|
-
handler = templates.get(resourceName);
|
|
113
|
-
}
|
|
114
|
-
else if (Array.isArray(templates)) {
|
|
115
|
-
handler = templates.find((t) => t.name === resourceName);
|
|
116
|
-
}
|
|
117
|
-
else if (typeof templates === 'object') {
|
|
118
|
-
handler = templates[resourceName];
|
|
119
|
-
}
|
|
81
|
+
const handler = getFromRegistry(templates, (key, value) => key === resourceName ? value : null);
|
|
120
82
|
if (!handler) {
|
|
121
83
|
throw new Error('Unknown resource');
|
|
122
84
|
}
|
|
123
|
-
// The handler might be in readCallback or handler field
|
|
124
85
|
const handlerFn = handler.readCallback || handler.handler;
|
|
125
|
-
if (!handlerFn) {
|
|
86
|
+
if (!handlerFn || typeof handlerFn !== 'function') {
|
|
126
87
|
throw new Error('Unknown resource');
|
|
127
88
|
}
|
|
128
|
-
|
|
129
|
-
const result = await handlerFn({ href: uri }, { id });
|
|
130
|
-
return result;
|
|
89
|
+
return handlerFn({ href: uri }, { id });
|
|
131
90
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Execute a tool by name (for testing)
|
|
134
|
-
*/
|
|
135
91
|
async executeTool(toolName, params) {
|
|
136
|
-
const
|
|
137
|
-
const tools = getRegistry(serverInternal.server, '_registeredTools');
|
|
92
|
+
const tools = Reflect.get(this.getServerInternal().server, '_registeredTools');
|
|
138
93
|
if (!tools) {
|
|
139
94
|
throw new Error('No tools registered');
|
|
140
95
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
if (tools instanceof Map) {
|
|
144
|
-
tool = tools.get(toolName);
|
|
145
|
-
}
|
|
146
|
-
else if (Array.isArray(tools)) {
|
|
147
|
-
tool = tools.find((t) => t.name === toolName);
|
|
148
|
-
}
|
|
149
|
-
else if (typeof tools === 'object') {
|
|
150
|
-
tool = tools[toolName];
|
|
151
|
-
}
|
|
152
|
-
if (!tool || !tool.handler) {
|
|
96
|
+
const tool = getFromRegistry(tools, (key, value) => key === toolName ? value : null);
|
|
97
|
+
if (!tool || !tool.handler || typeof tool.handler !== 'function') {
|
|
153
98
|
throw new Error(`Tool ${toolName} not found`);
|
|
154
99
|
}
|
|
155
|
-
// Execute the tool handler
|
|
156
100
|
const result = await tool.handler(params);
|
|
157
|
-
return result.structuredContent || result;
|
|
101
|
+
return (result.structuredContent || result);
|
|
158
102
|
}
|
|
159
|
-
/**
|
|
160
|
-
* Call a tool directly (for testing)
|
|
161
|
-
*/
|
|
162
103
|
async callTool(name, params) {
|
|
163
104
|
const result = await this.executeTool(name, params);
|
|
164
|
-
|
|
165
|
-
return {
|
|
166
|
-
structuredContent: result
|
|
167
|
-
};
|
|
105
|
+
return { structuredContent: result };
|
|
168
106
|
}
|
|
169
107
|
}
|
|
170
108
|
//# sourceMappingURL=test-helpers.js.map
|
package/dist/test-helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -26,29 +26,4 @@ export interface CaptureEvidenceParams {
|
|
|
26
26
|
/** Optional tags for categorization */
|
|
27
27
|
tags?: string;
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Evidence list request parameters
|
|
31
|
-
*/
|
|
32
|
-
export interface ListEvidencesParams {
|
|
33
|
-
/** Maximum number of results */
|
|
34
|
-
limit?: number;
|
|
35
|
-
/** Offset for pagination */
|
|
36
|
-
offset?: number;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Evidence export request parameters
|
|
40
|
-
*/
|
|
41
|
-
export interface ExportEvidencesParams {
|
|
42
|
-
/** Specific evidence IDs to export (empty = all) */
|
|
43
|
-
evidenceIds?: string[];
|
|
44
|
-
/** Include git info in export */
|
|
45
|
-
includeGitInfo?: boolean;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get evidence request parameters
|
|
49
|
-
*/
|
|
50
|
-
export interface GetEvidenceParams {
|
|
51
|
-
/** Evidence ID to retrieve */
|
|
52
|
-
id: string;
|
|
53
|
-
}
|
|
54
29
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IAEvB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAEhB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IAErB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IAEvB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAEhB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IAErB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pcircle/evidencemcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Model Context Protocol (MCP) server for EvidenceMCP - automatically capture and encrypt LLM conversations as legal evidence with Git timestamps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -46,11 +46,15 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
49
|
+
"@noble/ciphers": "^0.5.2",
|
|
50
|
+
"@noble/hashes": "^1.3.3",
|
|
51
|
+
"better-sqlite3": "^12.6.2",
|
|
52
|
+
"isomorphic-git": "^1.36.2",
|
|
53
|
+
"jszip": "^3.10.1",
|
|
51
54
|
"zod": "^3.23.8"
|
|
52
55
|
},
|
|
53
56
|
"devDependencies": {
|
|
57
|
+
"@types/better-sqlite3": "^7.6.9",
|
|
54
58
|
"@types/node": "^22.10.5",
|
|
55
59
|
"tsx": "^4.21.0",
|
|
56
60
|
"typescript": "^5.9.3",
|