@weavelogic/knowledge-graph-agent 0.3.0 → 0.4.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 +290 -3
- package/dist/_virtual/index10.js +2 -2
- package/dist/_virtual/index6.js +2 -2
- package/dist/_virtual/index7.js +2 -2
- package/dist/_virtual/index8.js +2 -2
- package/dist/_virtual/index9.js +2 -2
- package/dist/audit/config.d.ts +150 -0
- package/dist/audit/config.d.ts.map +1 -0
- package/dist/audit/config.js +111 -0
- package/dist/audit/config.js.map +1 -0
- package/dist/audit/index.d.ts +38 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/services/audit-chain.d.ts +276 -0
- package/dist/audit/services/audit-chain.d.ts.map +1 -0
- package/dist/audit/services/audit-chain.js +502 -0
- package/dist/audit/services/audit-chain.js.map +1 -0
- package/dist/audit/services/index.d.ts +11 -0
- package/dist/audit/services/index.d.ts.map +1 -0
- package/dist/audit/services/syndication.d.ts +334 -0
- package/dist/audit/services/syndication.d.ts.map +1 -0
- package/dist/audit/services/syndication.js +589 -0
- package/dist/audit/services/syndication.js.map +1 -0
- package/dist/audit/types.d.ts +453 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/cli/commands/audit.d.ts +21 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +621 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/vector.d.ts +14 -0
- package/dist/cli/commands/vector.d.ts.map +1 -0
- package/dist/cli/commands/vector.js +429 -0
- package/dist/cli/commands/vector.js.map +1 -0
- package/dist/cli/commands/workflow.d.ts +12 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +471 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/database/schemas/index.d.ts +85 -0
- package/dist/database/schemas/index.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/audit/checkpoint.d.ts +58 -0
- package/dist/mcp-server/tools/audit/checkpoint.d.ts.map +1 -0
- package/dist/mcp-server/tools/audit/checkpoint.js +73 -0
- package/dist/mcp-server/tools/audit/checkpoint.js.map +1 -0
- package/dist/mcp-server/tools/audit/index.d.ts +53 -0
- package/dist/mcp-server/tools/audit/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/audit/index.js +12 -0
- package/dist/mcp-server/tools/audit/index.js.map +1 -0
- package/dist/mcp-server/tools/audit/query.d.ts +58 -0
- package/dist/mcp-server/tools/audit/query.d.ts.map +1 -0
- package/dist/mcp-server/tools/audit/query.js +125 -0
- package/dist/mcp-server/tools/audit/query.js.map +1 -0
- package/dist/mcp-server/tools/audit/sync.d.ts +58 -0
- package/dist/mcp-server/tools/audit/sync.d.ts.map +1 -0
- package/dist/mcp-server/tools/audit/sync.js +126 -0
- package/dist/mcp-server/tools/audit/sync.js.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +3 -0
- package/dist/mcp-server/tools/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/registry.js +90 -0
- package/dist/mcp-server/tools/registry.js.map +1 -1
- package/dist/mcp-server/tools/vector/index.d.ts +12 -0
- package/dist/mcp-server/tools/vector/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/vector/index.js +12 -0
- package/dist/mcp-server/tools/vector/index.js.map +1 -0
- package/dist/mcp-server/tools/vector/search.d.ts +41 -0
- package/dist/mcp-server/tools/vector/search.d.ts.map +1 -0
- package/dist/mcp-server/tools/vector/search.js +224 -0
- package/dist/mcp-server/tools/vector/search.js.map +1 -0
- package/dist/mcp-server/tools/vector/trajectory.d.ts +39 -0
- package/dist/mcp-server/tools/vector/trajectory.d.ts.map +1 -0
- package/dist/mcp-server/tools/vector/trajectory.js +170 -0
- package/dist/mcp-server/tools/vector/trajectory.js.map +1 -0
- package/dist/mcp-server/tools/vector/upsert.d.ts +44 -0
- package/dist/mcp-server/tools/vector/upsert.d.ts.map +1 -0
- package/dist/mcp-server/tools/vector/upsert.js +175 -0
- package/dist/mcp-server/tools/vector/upsert.js.map +1 -0
- package/dist/mcp-server/tools/workflow/index.d.ts +29 -0
- package/dist/mcp-server/tools/workflow/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/workflow/index.js +12 -0
- package/dist/mcp-server/tools/workflow/index.js.map +1 -0
- package/dist/mcp-server/tools/workflow/list.d.ts +41 -0
- package/dist/mcp-server/tools/workflow/list.d.ts.map +1 -0
- package/dist/mcp-server/tools/workflow/list.js +195 -0
- package/dist/mcp-server/tools/workflow/list.js.map +1 -0
- package/dist/mcp-server/tools/workflow/start.d.ts +40 -0
- package/dist/mcp-server/tools/workflow/start.d.ts.map +1 -0
- package/dist/mcp-server/tools/workflow/start.js +165 -0
- package/dist/mcp-server/tools/workflow/start.js.map +1 -0
- package/dist/mcp-server/tools/workflow/status.d.ts +38 -0
- package/dist/mcp-server/tools/workflow/status.d.ts.map +1 -0
- package/dist/mcp-server/tools/workflow/status.js +97 -0
- package/dist/mcp-server/tools/workflow/status.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/index.js +1 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +1 -1
- package/dist/vector/config.d.ts +300 -0
- package/dist/vector/config.d.ts.map +1 -0
- package/dist/vector/config.js +124 -0
- package/dist/vector/config.js.map +1 -0
- package/dist/vector/index.d.ts +50 -0
- package/dist/vector/index.d.ts.map +1 -0
- package/dist/vector/services/index.d.ts +13 -0
- package/dist/vector/services/index.d.ts.map +1 -0
- package/dist/vector/services/trajectory-tracker.d.ts +405 -0
- package/dist/vector/services/trajectory-tracker.d.ts.map +1 -0
- package/dist/vector/services/trajectory-tracker.js +445 -0
- package/dist/vector/services/trajectory-tracker.js.map +1 -0
- package/dist/vector/services/vector-store.d.ts +339 -0
- package/dist/vector/services/vector-store.d.ts.map +1 -0
- package/dist/vector/services/vector-store.js +748 -0
- package/dist/vector/services/vector-store.js.map +1 -0
- package/dist/vector/types.d.ts +677 -0
- package/dist/vector/types.d.ts.map +1 -0
- package/dist/workflow/adapters/goap-adapter.d.ts +196 -0
- package/dist/workflow/adapters/goap-adapter.d.ts.map +1 -0
- package/dist/workflow/adapters/goap-adapter.js +706 -0
- package/dist/workflow/adapters/goap-adapter.js.map +1 -0
- package/dist/workflow/adapters/index.d.ts +10 -0
- package/dist/workflow/adapters/index.d.ts.map +1 -0
- package/dist/workflow/config.d.ts +135 -0
- package/dist/workflow/config.d.ts.map +1 -0
- package/dist/workflow/config.js +92 -0
- package/dist/workflow/config.js.map +1 -0
- package/dist/workflow/handlers/index.d.ts +9 -0
- package/dist/workflow/handlers/index.d.ts.map +1 -0
- package/dist/workflow/handlers/webhook-handlers.d.ts +397 -0
- package/dist/workflow/handlers/webhook-handlers.d.ts.map +1 -0
- package/dist/workflow/handlers/webhook-handlers.js +454 -0
- package/dist/workflow/handlers/webhook-handlers.js.map +1 -0
- package/dist/workflow/index.d.ts +42 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/services/index.d.ts +9 -0
- package/dist/workflow/services/index.d.ts.map +1 -0
- package/dist/workflow/services/workflow-service.d.ts +318 -0
- package/dist/workflow/services/workflow-service.d.ts.map +1 -0
- package/dist/workflow/services/workflow-service.js +577 -0
- package/dist/workflow/services/workflow-service.js.map +1 -0
- package/dist/workflow/types.d.ts +470 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/workflows/realtime-collab.d.ts +245 -0
- package/dist/workflow/workflows/realtime-collab.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Query Tool
|
|
3
|
+
*
|
|
4
|
+
* MCP tool for querying the audit log with filtering by event type,
|
|
5
|
+
* time range, and result limits.
|
|
6
|
+
*
|
|
7
|
+
* @module mcp-server/tools/audit/query
|
|
8
|
+
*/
|
|
9
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
+
import type { ToolHandler } from '../../types/index.js';
|
|
11
|
+
import type { AuditChain } from '../../../audit/services/audit-chain.js';
|
|
12
|
+
/**
|
|
13
|
+
* Audit query tool definition
|
|
14
|
+
*
|
|
15
|
+
* Provides filtering capabilities for the audit log including:
|
|
16
|
+
* - Event type filtering
|
|
17
|
+
* - Time range filtering via ISO timestamps
|
|
18
|
+
* - Result limiting
|
|
19
|
+
* - Optional payload inclusion
|
|
20
|
+
*/
|
|
21
|
+
export declare const auditQueryTool: Tool;
|
|
22
|
+
/**
|
|
23
|
+
* Parameters for the audit query tool
|
|
24
|
+
*/
|
|
25
|
+
export interface AuditQueryParams {
|
|
26
|
+
/** Filter by event type */
|
|
27
|
+
eventType?: string;
|
|
28
|
+
/** Start time as ISO timestamp */
|
|
29
|
+
startTime?: string;
|
|
30
|
+
/** End time as ISO timestamp */
|
|
31
|
+
endTime?: string;
|
|
32
|
+
/** Maximum results to return */
|
|
33
|
+
limit?: number;
|
|
34
|
+
/** Include full payload in results */
|
|
35
|
+
includePayload?: boolean;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create audit query handler
|
|
39
|
+
*
|
|
40
|
+
* Factory function that creates a tool handler with access to the audit chain.
|
|
41
|
+
*
|
|
42
|
+
* @param auditChain - The audit chain instance to query
|
|
43
|
+
* @returns Tool handler function
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const auditChain = createAuditChain({ agentDid: 'did:exo:agent-1' });
|
|
48
|
+
* const handler = createAuditQueryHandler(auditChain);
|
|
49
|
+
*
|
|
50
|
+
* const result = await handler({
|
|
51
|
+
* eventType: 'NodeCreated',
|
|
52
|
+
* limit: 10,
|
|
53
|
+
* includePayload: true
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function createAuditQueryHandler(auditChain?: AuditChain): ToolHandler;
|
|
58
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/audit/query.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAGzE;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,IAgC5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,WAAW,CA8G5E"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
const auditQueryTool = {
|
|
2
|
+
name: "kg_audit_query",
|
|
3
|
+
description: "Query the audit log for events with filtering by type, time range, and limit. Returns events from the deterministic append-only log.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
eventType: {
|
|
8
|
+
type: "string",
|
|
9
|
+
description: "Filter by event type (e.g., NodeCreated, WorkflowCompleted, SyncStarted)"
|
|
10
|
+
},
|
|
11
|
+
startTime: {
|
|
12
|
+
type: "string",
|
|
13
|
+
description: "Start time filter as ISO 8601 timestamp (e.g., 2024-01-01T00:00:00Z)"
|
|
14
|
+
},
|
|
15
|
+
endTime: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "End time filter as ISO 8601 timestamp (e.g., 2024-12-31T23:59:59Z)"
|
|
18
|
+
},
|
|
19
|
+
limit: {
|
|
20
|
+
type: "number",
|
|
21
|
+
description: "Maximum number of results to return (default: 50, max: 1000)",
|
|
22
|
+
default: 50,
|
|
23
|
+
minimum: 1,
|
|
24
|
+
maximum: 1e3
|
|
25
|
+
},
|
|
26
|
+
includePayload: {
|
|
27
|
+
type: "boolean",
|
|
28
|
+
description: "Include the full event payload in results (default: false)",
|
|
29
|
+
default: false
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
function createAuditQueryHandler(auditChain) {
|
|
35
|
+
return async (params) => {
|
|
36
|
+
const startTime = Date.now();
|
|
37
|
+
const {
|
|
38
|
+
eventType,
|
|
39
|
+
startTime: startTimeParam,
|
|
40
|
+
endTime: endTimeParam,
|
|
41
|
+
limit = 50,
|
|
42
|
+
includePayload = false
|
|
43
|
+
} = params;
|
|
44
|
+
try {
|
|
45
|
+
if (!auditChain) {
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
error: "Audit chain not initialized. The exochain audit system is not available.",
|
|
49
|
+
metadata: { executionTime: Date.now() - startTime }
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const safeLimit = Math.min(Math.max(1, Number(limit) || 50), 1e3);
|
|
53
|
+
const queryOptions = {
|
|
54
|
+
limit: safeLimit
|
|
55
|
+
};
|
|
56
|
+
if (eventType && typeof eventType === "string") {
|
|
57
|
+
queryOptions.type = eventType;
|
|
58
|
+
}
|
|
59
|
+
if (startTimeParam && typeof startTimeParam === "string") {
|
|
60
|
+
const startMs = new Date(startTimeParam).getTime();
|
|
61
|
+
if (!isNaN(startMs)) {
|
|
62
|
+
queryOptions.since = { physicalMs: startMs, logical: 0 };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (endTimeParam && typeof endTimeParam === "string") {
|
|
66
|
+
const endMs = new Date(endTimeParam).getTime();
|
|
67
|
+
if (!isNaN(endMs)) {
|
|
68
|
+
queryOptions.until = { physicalMs: endMs, logical: Number.MAX_SAFE_INTEGER };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const result = await auditChain.queryEvents(queryOptions);
|
|
72
|
+
const formattedEvents = result.events.map((event) => {
|
|
73
|
+
const baseEvent = {
|
|
74
|
+
id: event.id,
|
|
75
|
+
type: event.envelope.payload.type,
|
|
76
|
+
author: event.envelope.author,
|
|
77
|
+
timestamp: new Date(event.envelope.hlc.physicalMs).toISOString(),
|
|
78
|
+
hlc: {
|
|
79
|
+
physicalMs: event.envelope.hlc.physicalMs,
|
|
80
|
+
logical: event.envelope.hlc.logical
|
|
81
|
+
},
|
|
82
|
+
parentCount: event.envelope.parents.length
|
|
83
|
+
};
|
|
84
|
+
if (includePayload) {
|
|
85
|
+
return {
|
|
86
|
+
...baseEvent,
|
|
87
|
+
payload: event.envelope.payload,
|
|
88
|
+
signature: event.signature,
|
|
89
|
+
parents: event.envelope.parents
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
return baseEvent;
|
|
93
|
+
});
|
|
94
|
+
return {
|
|
95
|
+
success: true,
|
|
96
|
+
data: {
|
|
97
|
+
events: formattedEvents,
|
|
98
|
+
count: formattedEvents.length,
|
|
99
|
+
totalCount: result.totalCount,
|
|
100
|
+
hasMore: result.hasMore,
|
|
101
|
+
filters: {
|
|
102
|
+
eventType: eventType || null,
|
|
103
|
+
startTime: startTimeParam || null,
|
|
104
|
+
endTime: endTimeParam || null
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
metadata: {
|
|
108
|
+
executionTime: Date.now() - startTime,
|
|
109
|
+
itemCount: formattedEvents.length
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
} catch (error) {
|
|
113
|
+
return {
|
|
114
|
+
success: false,
|
|
115
|
+
error: error instanceof Error ? error.message : String(error),
|
|
116
|
+
metadata: { executionTime: Date.now() - startTime }
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export {
|
|
122
|
+
auditQueryTool,
|
|
123
|
+
createAuditQueryHandler
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sources":["../../../../src/mcp-server/tools/audit/query.ts"],"sourcesContent":["/**\n * Audit Query Tool\n *\n * MCP tool for querying the audit log with filtering by event type,\n * time range, and result limits.\n *\n * @module mcp-server/tools/audit/query\n */\n\nimport type { Tool } from '@modelcontextprotocol/sdk/types.js';\nimport type { ToolHandler, ToolResult } from '../../types/index.js';\nimport type { AuditChain } from '../../../audit/services/audit-chain.js';\nimport type { HybridLogicalClock, KnowledgeGraphEventPayload } from '../../../audit/types.js';\n\n/**\n * Audit query tool definition\n *\n * Provides filtering capabilities for the audit log including:\n * - Event type filtering\n * - Time range filtering via ISO timestamps\n * - Result limiting\n * - Optional payload inclusion\n */\nexport const auditQueryTool: Tool = {\n name: 'kg_audit_query',\n description: 'Query the audit log for events with filtering by type, time range, and limit. Returns events from the deterministic append-only log.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n eventType: {\n type: 'string',\n description: 'Filter by event type (e.g., NodeCreated, WorkflowCompleted, SyncStarted)',\n },\n startTime: {\n type: 'string',\n description: 'Start time filter as ISO 8601 timestamp (e.g., 2024-01-01T00:00:00Z)',\n },\n endTime: {\n type: 'string',\n description: 'End time filter as ISO 8601 timestamp (e.g., 2024-12-31T23:59:59Z)',\n },\n limit: {\n type: 'number',\n description: 'Maximum number of results to return (default: 50, max: 1000)',\n default: 50,\n minimum: 1,\n maximum: 1000,\n },\n includePayload: {\n type: 'boolean',\n description: 'Include the full event payload in results (default: false)',\n default: false,\n },\n },\n },\n};\n\n/**\n * Parameters for the audit query tool\n */\nexport interface AuditQueryParams {\n /** Filter by event type */\n eventType?: string;\n /** Start time as ISO timestamp */\n startTime?: string;\n /** End time as ISO timestamp */\n endTime?: string;\n /** Maximum results to return */\n limit?: number;\n /** Include full payload in results */\n includePayload?: boolean;\n}\n\n/**\n * Create audit query handler\n *\n * Factory function that creates a tool handler with access to the audit chain.\n *\n * @param auditChain - The audit chain instance to query\n * @returns Tool handler function\n *\n * @example\n * ```typescript\n * const auditChain = createAuditChain({ agentDid: 'did:exo:agent-1' });\n * const handler = createAuditQueryHandler(auditChain);\n *\n * const result = await handler({\n * eventType: 'NodeCreated',\n * limit: 10,\n * includePayload: true\n * });\n * ```\n */\nexport function createAuditQueryHandler(auditChain?: AuditChain): ToolHandler {\n return async (params: Record<string, unknown>): Promise<ToolResult> => {\n const startTime = Date.now();\n const {\n eventType,\n startTime: startTimeParam,\n endTime: endTimeParam,\n limit = 50,\n includePayload = false,\n } = params as AuditQueryParams;\n\n try {\n // Check audit chain availability\n if (!auditChain) {\n return {\n success: false,\n error: 'Audit chain not initialized. The exochain audit system is not available.',\n metadata: { executionTime: Date.now() - startTime },\n };\n }\n\n // Enforce limits\n const safeLimit = Math.min(Math.max(1, Number(limit) || 50), 1000);\n\n // Build query options\n const queryOptions: {\n type?: KnowledgeGraphEventPayload['type'];\n since?: HybridLogicalClock;\n until?: HybridLogicalClock;\n limit: number;\n includeProof?: boolean;\n } = {\n limit: safeLimit,\n };\n\n // Add event type filter\n if (eventType && typeof eventType === 'string') {\n queryOptions.type = eventType as KnowledgeGraphEventPayload['type'];\n }\n\n // Add time range filters\n if (startTimeParam && typeof startTimeParam === 'string') {\n const startMs = new Date(startTimeParam).getTime();\n if (!isNaN(startMs)) {\n queryOptions.since = { physicalMs: startMs, logical: 0 };\n }\n }\n\n if (endTimeParam && typeof endTimeParam === 'string') {\n const endMs = new Date(endTimeParam).getTime();\n if (!isNaN(endMs)) {\n queryOptions.until = { physicalMs: endMs, logical: Number.MAX_SAFE_INTEGER };\n }\n }\n\n // Execute query\n const result = await auditChain.queryEvents(queryOptions);\n\n // Format results\n const formattedEvents = result.events.map((event) => {\n const baseEvent = {\n id: event.id,\n type: event.envelope.payload.type,\n author: event.envelope.author,\n timestamp: new Date(event.envelope.hlc.physicalMs).toISOString(),\n hlc: {\n physicalMs: event.envelope.hlc.physicalMs,\n logical: event.envelope.hlc.logical,\n },\n parentCount: event.envelope.parents.length,\n };\n\n if (includePayload) {\n return {\n ...baseEvent,\n payload: event.envelope.payload,\n signature: event.signature,\n parents: event.envelope.parents,\n };\n }\n\n return baseEvent;\n });\n\n return {\n success: true,\n data: {\n events: formattedEvents,\n count: formattedEvents.length,\n totalCount: result.totalCount,\n hasMore: result.hasMore,\n filters: {\n eventType: eventType || null,\n startTime: startTimeParam || null,\n endTime: endTimeParam || null,\n },\n },\n metadata: {\n executionTime: Date.now() - startTime,\n itemCount: formattedEvents.length,\n },\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n metadata: { executionTime: Date.now() - startTime },\n };\n }\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync Status Tool
|
|
3
|
+
*
|
|
4
|
+
* MCP tool for checking the syndication status of the audit chain
|
|
5
|
+
* across peer environments.
|
|
6
|
+
*
|
|
7
|
+
* @module mcp-server/tools/audit/sync
|
|
8
|
+
*/
|
|
9
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
+
import type { ToolHandler } from '../../types/index.js';
|
|
11
|
+
import type { SyndicationService } from '../../../audit/services/syndication.js';
|
|
12
|
+
/**
|
|
13
|
+
* Sync status tool definition
|
|
14
|
+
*
|
|
15
|
+
* Provides visibility into peer synchronization status,
|
|
16
|
+
* including connection state, sync history, and error tracking.
|
|
17
|
+
*/
|
|
18
|
+
export declare const syncStatusTool: Tool;
|
|
19
|
+
/**
|
|
20
|
+
* Parameters for the sync status tool
|
|
21
|
+
*/
|
|
22
|
+
export interface SyncStatusParams {
|
|
23
|
+
/** Specific peer ID to check */
|
|
24
|
+
peerId?: string;
|
|
25
|
+
/** Include detailed information */
|
|
26
|
+
detailed?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create sync status handler
|
|
30
|
+
*
|
|
31
|
+
* Factory function that creates a tool handler for checking sync status.
|
|
32
|
+
*
|
|
33
|
+
* @param syndicationService - The syndication service instance
|
|
34
|
+
* @returns Tool handler function
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const syndication = createSyndicationService({ auditChain, peers: [...] });
|
|
39
|
+
* const handler = createSyncStatusHandler(syndication);
|
|
40
|
+
*
|
|
41
|
+
* // Get all peers status
|
|
42
|
+
* const result = await handler({ detailed: true });
|
|
43
|
+
*
|
|
44
|
+
* // Get specific peer status
|
|
45
|
+
* const result = await handler({ peerId: 'peer-abc123', detailed: true });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function createSyncStatusHandler(syndicationService?: SyndicationService): ToolHandler;
|
|
49
|
+
/**
|
|
50
|
+
* Trigger a manual sync with all peers
|
|
51
|
+
*
|
|
52
|
+
* Utility function to force an immediate sync operation.
|
|
53
|
+
*
|
|
54
|
+
* @param syndicationService - The syndication service instance
|
|
55
|
+
* @returns Array of sync results
|
|
56
|
+
*/
|
|
57
|
+
export declare function triggerManualSync(syndicationService: SyndicationService): Promise<import("../../../audit/services/syndication.js").SyncResult[]>;
|
|
58
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/audit/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAY,MAAM,wCAAwC,CAAC;AAE3F;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,IAiB5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA2BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAyH5F;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB,0EAE7E"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
const syncStatusTool = {
|
|
2
|
+
name: "kg_sync_status",
|
|
3
|
+
description: "Check the syndication status of the audit chain across peer environments. Shows peer connections, sync history, and error states.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
peerId: {
|
|
8
|
+
type: "string",
|
|
9
|
+
description: "Specific peer ID to check status for (optional, returns all peers if not specified)"
|
|
10
|
+
},
|
|
11
|
+
detailed: {
|
|
12
|
+
type: "boolean",
|
|
13
|
+
description: "Include detailed sync metrics and history (default: false)",
|
|
14
|
+
default: false
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
function createSyncStatusHandler(syndicationService) {
|
|
20
|
+
return async (params) => {
|
|
21
|
+
const startTime = Date.now();
|
|
22
|
+
const { peerId, detailed = false } = params;
|
|
23
|
+
try {
|
|
24
|
+
if (!syndicationService) {
|
|
25
|
+
return {
|
|
26
|
+
success: false,
|
|
27
|
+
error: "Syndication service not initialized. Cross-environment sync is not available.",
|
|
28
|
+
metadata: { executionTime: Date.now() - startTime }
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const formatPeerInfo = (peer) => {
|
|
32
|
+
const baseInfo = {
|
|
33
|
+
id: peer.id,
|
|
34
|
+
endpoint: peer.endpoint,
|
|
35
|
+
status: peer.status,
|
|
36
|
+
lastSyncTime: peer.lastSyncTime?.toISOString() || null,
|
|
37
|
+
errorCount: peer.errors,
|
|
38
|
+
lastError: peer.lastError || null
|
|
39
|
+
};
|
|
40
|
+
if (detailed) {
|
|
41
|
+
baseInfo.metrics = {
|
|
42
|
+
eventsReceived: peer.eventsReceived,
|
|
43
|
+
eventsSent: peer.eventsSent,
|
|
44
|
+
latency: peer.latency ?? null,
|
|
45
|
+
lastCheckpointHeight: peer.lastCheckpointHeight ?? null
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return baseInfo;
|
|
49
|
+
};
|
|
50
|
+
if (peerId && typeof peerId === "string") {
|
|
51
|
+
const peer = syndicationService.getPeer(peerId);
|
|
52
|
+
if (!peer) {
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
error: `Peer not found: ${peerId}`,
|
|
56
|
+
metadata: { executionTime: Date.now() - startTime }
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
success: true,
|
|
61
|
+
data: {
|
|
62
|
+
peer: formatPeerInfo(peer),
|
|
63
|
+
serviceStatus: {
|
|
64
|
+
running: syndicationService.isServiceRunning(),
|
|
65
|
+
syncing: syndicationService.isSyncing()
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
metadata: {
|
|
69
|
+
executionTime: Date.now() - startTime
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const allPeers = syndicationService.getAllPeers();
|
|
74
|
+
const stats = syndicationService.getStats();
|
|
75
|
+
const formattedPeers = allPeers.map(formatPeerInfo);
|
|
76
|
+
const peersByStatus = {
|
|
77
|
+
connected: formattedPeers.filter((p) => p.status === "connected"),
|
|
78
|
+
syncing: formattedPeers.filter((p) => p.status === "syncing"),
|
|
79
|
+
disconnected: formattedPeers.filter((p) => p.status === "disconnected"),
|
|
80
|
+
error: formattedPeers.filter((p) => p.status === "error")
|
|
81
|
+
};
|
|
82
|
+
const responseData = {
|
|
83
|
+
peers: formattedPeers,
|
|
84
|
+
peersByStatus,
|
|
85
|
+
summary: {
|
|
86
|
+
totalPeers: stats.totalPeers,
|
|
87
|
+
connectedPeers: stats.connectedPeers,
|
|
88
|
+
syncingPeers: stats.syncingPeers,
|
|
89
|
+
errorPeers: stats.errorPeers
|
|
90
|
+
},
|
|
91
|
+
serviceStatus: {
|
|
92
|
+
running: stats.isRunning,
|
|
93
|
+
autoSyncEnabled: stats.autoSyncEnabled,
|
|
94
|
+
syncInterval: stats.syncInterval,
|
|
95
|
+
syncing: syndicationService.isSyncing()
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
if (detailed) {
|
|
99
|
+
responseData.aggregateMetrics = {
|
|
100
|
+
totalEventsReceived: stats.totalEventsReceived,
|
|
101
|
+
totalEventsSent: stats.totalEventsSent,
|
|
102
|
+
totalErrors: stats.totalErrors
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
success: true,
|
|
107
|
+
data: responseData,
|
|
108
|
+
metadata: {
|
|
109
|
+
executionTime: Date.now() - startTime,
|
|
110
|
+
itemCount: formattedPeers.length
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
} catch (error) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
error: error instanceof Error ? error.message : String(error),
|
|
117
|
+
metadata: { executionTime: Date.now() - startTime }
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export {
|
|
123
|
+
createSyncStatusHandler,
|
|
124
|
+
syncStatusTool
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sources":["../../../../src/mcp-server/tools/audit/sync.ts"],"sourcesContent":["/**\n * Sync Status Tool\n *\n * MCP tool for checking the syndication status of the audit chain\n * across peer environments.\n *\n * @module mcp-server/tools/audit/sync\n */\n\nimport type { Tool } from '@modelcontextprotocol/sdk/types.js';\nimport type { ToolHandler, ToolResult } from '../../types/index.js';\nimport type { SyndicationService, PeerInfo } from '../../../audit/services/syndication.js';\n\n/**\n * Sync status tool definition\n *\n * Provides visibility into peer synchronization status,\n * including connection state, sync history, and error tracking.\n */\nexport const syncStatusTool: Tool = {\n name: 'kg_sync_status',\n description: 'Check the syndication status of the audit chain across peer environments. Shows peer connections, sync history, and error states.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n peerId: {\n type: 'string',\n description: 'Specific peer ID to check status for (optional, returns all peers if not specified)',\n },\n detailed: {\n type: 'boolean',\n description: 'Include detailed sync metrics and history (default: false)',\n default: false,\n },\n },\n },\n};\n\n/**\n * Parameters for the sync status tool\n */\nexport interface SyncStatusParams {\n /** Specific peer ID to check */\n peerId?: string;\n /** Include detailed information */\n detailed?: boolean;\n}\n\n/**\n * Formatted peer status for API response\n */\ninterface FormattedPeerStatus {\n /** Peer identifier */\n id: string;\n /** Network endpoint */\n endpoint: string;\n /** Connection status */\n status: string;\n /** Last sync timestamp */\n lastSyncTime: string | null;\n /** Error count */\n errorCount: number;\n /** Last error message */\n lastError: string | null;\n /** Detailed metrics (when detailed=true) */\n metrics?: {\n eventsReceived: number;\n eventsSent: number;\n latency: number | null;\n lastCheckpointHeight: number | null;\n };\n}\n\n/**\n * Create sync status handler\n *\n * Factory function that creates a tool handler for checking sync status.\n *\n * @param syndicationService - The syndication service instance\n * @returns Tool handler function\n *\n * @example\n * ```typescript\n * const syndication = createSyndicationService({ auditChain, peers: [...] });\n * const handler = createSyncStatusHandler(syndication);\n *\n * // Get all peers status\n * const result = await handler({ detailed: true });\n *\n * // Get specific peer status\n * const result = await handler({ peerId: 'peer-abc123', detailed: true });\n * ```\n */\nexport function createSyncStatusHandler(syndicationService?: SyndicationService): ToolHandler {\n return async (params: Record<string, unknown>): Promise<ToolResult> => {\n const startTime = Date.now();\n const { peerId, detailed = false } = params as SyncStatusParams;\n\n try {\n // Check syndication service availability\n if (!syndicationService) {\n return {\n success: false,\n error: 'Syndication service not initialized. Cross-environment sync is not available.',\n metadata: { executionTime: Date.now() - startTime },\n };\n }\n\n // Format peer info for response\n const formatPeerInfo = (peer: PeerInfo): FormattedPeerStatus => {\n const baseInfo: FormattedPeerStatus = {\n id: peer.id,\n endpoint: peer.endpoint,\n status: peer.status,\n lastSyncTime: peer.lastSyncTime?.toISOString() || null,\n errorCount: peer.errors,\n lastError: peer.lastError || null,\n };\n\n if (detailed) {\n baseInfo.metrics = {\n eventsReceived: peer.eventsReceived,\n eventsSent: peer.eventsSent,\n latency: peer.latency ?? null,\n lastCheckpointHeight: peer.lastCheckpointHeight ?? null,\n };\n }\n\n return baseInfo;\n };\n\n // Handle specific peer query\n if (peerId && typeof peerId === 'string') {\n const peer = syndicationService.getPeer(peerId);\n\n if (!peer) {\n return {\n success: false,\n error: `Peer not found: ${peerId}`,\n metadata: { executionTime: Date.now() - startTime },\n };\n }\n\n return {\n success: true,\n data: {\n peer: formatPeerInfo(peer),\n serviceStatus: {\n running: syndicationService.isServiceRunning(),\n syncing: syndicationService.isSyncing(),\n },\n },\n metadata: {\n executionTime: Date.now() - startTime,\n },\n };\n }\n\n // Get all peers status\n const allPeers = syndicationService.getAllPeers();\n const stats = syndicationService.getStats();\n\n const formattedPeers = allPeers.map(formatPeerInfo);\n\n // Group peers by status\n const peersByStatus: Record<string, FormattedPeerStatus[]> = {\n connected: formattedPeers.filter((p) => p.status === 'connected'),\n syncing: formattedPeers.filter((p) => p.status === 'syncing'),\n disconnected: formattedPeers.filter((p) => p.status === 'disconnected'),\n error: formattedPeers.filter((p) => p.status === 'error'),\n };\n\n const responseData: Record<string, unknown> = {\n peers: formattedPeers,\n peersByStatus,\n summary: {\n totalPeers: stats.totalPeers,\n connectedPeers: stats.connectedPeers,\n syncingPeers: stats.syncingPeers,\n errorPeers: stats.errorPeers,\n },\n serviceStatus: {\n running: stats.isRunning,\n autoSyncEnabled: stats.autoSyncEnabled,\n syncInterval: stats.syncInterval,\n syncing: syndicationService.isSyncing(),\n },\n };\n\n // Include aggregate metrics if detailed\n if (detailed) {\n responseData.aggregateMetrics = {\n totalEventsReceived: stats.totalEventsReceived,\n totalEventsSent: stats.totalEventsSent,\n totalErrors: stats.totalErrors,\n };\n }\n\n return {\n success: true,\n data: responseData,\n metadata: {\n executionTime: Date.now() - startTime,\n itemCount: formattedPeers.length,\n },\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n metadata: { executionTime: Date.now() - startTime },\n };\n }\n };\n}\n\n/**\n * Trigger a manual sync with all peers\n *\n * Utility function to force an immediate sync operation.\n *\n * @param syndicationService - The syndication service instance\n * @returns Array of sync results\n */\nexport async function triggerManualSync(syndicationService: SyndicationService) {\n return syndicationService.forceSyncNow();\n}\n"],"names":[],"mappings":"AAmBO,MAAM,iBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,IACX,MAAM;AAAA,IACN,YAAY;AAAA,MACV,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,MAAA;AAAA,MAEf,UAAU;AAAA,QACR,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAEJ;AAyDO,SAAS,wBAAwB,oBAAsD;AAC5F,SAAO,OAAO,WAAyD;AACrE,UAAM,YAAY,KAAK,IAAA;AACvB,UAAM,EAAE,QAAQ,WAAW,MAAA,IAAU;AAErC,QAAI;AAEF,UAAI,CAAC,oBAAoB;AACvB,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,UACP,UAAU,EAAE,eAAe,KAAK,IAAA,IAAQ,UAAA;AAAA,QAAU;AAAA,MAEtD;AAGA,YAAM,iBAAiB,CAAC,SAAwC;AAC9D,cAAM,WAAgC;AAAA,UACpC,IAAI,KAAK;AAAA,UACT,UAAU,KAAK;AAAA,UACf,QAAQ,KAAK;AAAA,UACb,cAAc,KAAK,cAAc,YAAA,KAAiB;AAAA,UAClD,YAAY,KAAK;AAAA,UACjB,WAAW,KAAK,aAAa;AAAA,QAAA;AAG/B,YAAI,UAAU;AACZ,mBAAS,UAAU;AAAA,YACjB,gBAAgB,KAAK;AAAA,YACrB,YAAY,KAAK;AAAA,YACjB,SAAS,KAAK,WAAW;AAAA,YACzB,sBAAsB,KAAK,wBAAwB;AAAA,UAAA;AAAA,QAEvD;AAEA,eAAO;AAAA,MACT;AAGA,UAAI,UAAU,OAAO,WAAW,UAAU;AACxC,cAAM,OAAO,mBAAmB,QAAQ,MAAM;AAE9C,YAAI,CAAC,MAAM;AACT,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,OAAO,mBAAmB,MAAM;AAAA,YAChC,UAAU,EAAE,eAAe,KAAK,IAAA,IAAQ,UAAA;AAAA,UAAU;AAAA,QAEtD;AAEA,eAAO;AAAA,UACL,SAAS;AAAA,UACT,MAAM;AAAA,YACJ,MAAM,eAAe,IAAI;AAAA,YACzB,eAAe;AAAA,cACb,SAAS,mBAAmB,iBAAA;AAAA,cAC5B,SAAS,mBAAmB,UAAA;AAAA,YAAU;AAAA,UACxC;AAAA,UAEF,UAAU;AAAA,YACR,eAAe,KAAK,QAAQ;AAAA,UAAA;AAAA,QAC9B;AAAA,MAEJ;AAGA,YAAM,WAAW,mBAAmB,YAAA;AACpC,YAAM,QAAQ,mBAAmB,SAAA;AAEjC,YAAM,iBAAiB,SAAS,IAAI,cAAc;AAGlD,YAAM,gBAAuD;AAAA,QAC3D,WAAW,eAAe,OAAO,CAAC,MAAM,EAAE,WAAW,WAAW;AAAA,QAChE,SAAS,eAAe,OAAO,CAAC,MAAM,EAAE,WAAW,SAAS;AAAA,QAC5D,cAAc,eAAe,OAAO,CAAC,MAAM,EAAE,WAAW,cAAc;AAAA,QACtE,OAAO,eAAe,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO;AAAA,MAAA;AAG1D,YAAM,eAAwC;AAAA,QAC5C,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,UACP,YAAY,MAAM;AAAA,UAClB,gBAAgB,MAAM;AAAA,UACtB,cAAc,MAAM;AAAA,UACpB,YAAY,MAAM;AAAA,QAAA;AAAA,QAEpB,eAAe;AAAA,UACb,SAAS,MAAM;AAAA,UACf,iBAAiB,MAAM;AAAA,UACvB,cAAc,MAAM;AAAA,UACpB,SAAS,mBAAmB,UAAA;AAAA,QAAU;AAAA,MACxC;AAIF,UAAI,UAAU;AACZ,qBAAa,mBAAmB;AAAA,UAC9B,qBAAqB,MAAM;AAAA,UAC3B,iBAAiB,MAAM;AAAA,UACvB,aAAa,MAAM;AAAA,QAAA;AAAA,MAEvB;AAEA,aAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA,UACR,eAAe,KAAK,IAAA,IAAQ;AAAA,UAC5B,WAAW,eAAe;AAAA,QAAA;AAAA,MAC5B;AAAA,IAEJ,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC5D,UAAU,EAAE,eAAe,KAAK,IAAA,IAAQ,UAAA;AAAA,MAAU;AAAA,IAEtD;AAAA,EACF;AACF;"}
|
|
@@ -10,4 +10,7 @@ export { graphQueryTool, createGraphQueryHandler, graphStatsTool, createGraphSta
|
|
|
10
10
|
export { searchNodesTool, createSearchNodesHandler, searchTagsTool, createSearchTagsHandler, } from './search/index.js';
|
|
11
11
|
export { agentSpawnTool, createAgentSpawnHandler, agentListTool, createAgentListHandler, } from './agents/index.js';
|
|
12
12
|
export { healthCheckTool, createHealthCheckHandler, } from './health.js';
|
|
13
|
+
export { auditQueryTool, createAuditQueryHandler, auditCheckpointTool, createAuditCheckpointHandler, getLatestCheckpoint, syncStatusTool, createSyncStatusHandler, triggerManualSync, auditToolDefinitions, } from './audit/index.js';
|
|
14
|
+
export { vectorSearchTool, createVectorSearchHandler, vectorUpsertTool, createVectorUpsertHandler, trajectoryListTool, createTrajectoryListHandler, } from './vector/index.js';
|
|
15
|
+
export { workflowStartTool, createWorkflowStartHandler, workflowStatusTool, createWorkflowStatusHandler, workflowListTool, createWorkflowListHandler, } from './workflow/index.js';
|
|
13
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,wBAAwB,GACzB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EAClB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC"}
|
|
@@ -308,6 +308,9 @@ async function registerCoreTools() {
|
|
|
308
308
|
"graph"
|
|
309
309
|
);
|
|
310
310
|
await registerAgentTools();
|
|
311
|
+
await registerWorkflowTools();
|
|
312
|
+
await registerVectorTools();
|
|
313
|
+
await registerAuditTools();
|
|
311
314
|
logger.debug("Core tools registered");
|
|
312
315
|
}
|
|
313
316
|
async function registerAgentTools() {
|
|
@@ -648,6 +651,93 @@ async function registerAgentTools() {
|
|
|
648
651
|
);
|
|
649
652
|
logger.debug("Agent tools registered");
|
|
650
653
|
}
|
|
654
|
+
async function registerWorkflowTools() {
|
|
655
|
+
const {
|
|
656
|
+
workflowStartTool,
|
|
657
|
+
createWorkflowStartHandler,
|
|
658
|
+
workflowStatusTool,
|
|
659
|
+
createWorkflowStatusHandler,
|
|
660
|
+
workflowListTool,
|
|
661
|
+
createWorkflowListHandler
|
|
662
|
+
} = await import("./workflow/index.js");
|
|
663
|
+
registerTool(
|
|
664
|
+
workflowStartTool.name,
|
|
665
|
+
workflowStartTool,
|
|
666
|
+
createWorkflowStartHandler(),
|
|
667
|
+
"workflow"
|
|
668
|
+
);
|
|
669
|
+
registerTool(
|
|
670
|
+
workflowStatusTool.name,
|
|
671
|
+
workflowStatusTool,
|
|
672
|
+
createWorkflowStatusHandler(),
|
|
673
|
+
"workflow"
|
|
674
|
+
);
|
|
675
|
+
registerTool(
|
|
676
|
+
workflowListTool.name,
|
|
677
|
+
workflowListTool,
|
|
678
|
+
createWorkflowListHandler(),
|
|
679
|
+
"workflow"
|
|
680
|
+
);
|
|
681
|
+
logger.debug("Workflow tools registered");
|
|
682
|
+
}
|
|
683
|
+
async function registerVectorTools() {
|
|
684
|
+
const {
|
|
685
|
+
vectorSearchTool,
|
|
686
|
+
createVectorSearchHandler,
|
|
687
|
+
vectorUpsertTool,
|
|
688
|
+
createVectorUpsertHandler,
|
|
689
|
+
trajectoryListTool,
|
|
690
|
+
createTrajectoryListHandler
|
|
691
|
+
} = await import("./vector/index.js");
|
|
692
|
+
registerTool(
|
|
693
|
+
vectorSearchTool.name,
|
|
694
|
+
vectorSearchTool,
|
|
695
|
+
createVectorSearchHandler(),
|
|
696
|
+
"vector"
|
|
697
|
+
);
|
|
698
|
+
registerTool(
|
|
699
|
+
vectorUpsertTool.name,
|
|
700
|
+
vectorUpsertTool,
|
|
701
|
+
createVectorUpsertHandler(),
|
|
702
|
+
"vector"
|
|
703
|
+
);
|
|
704
|
+
registerTool(
|
|
705
|
+
trajectoryListTool.name,
|
|
706
|
+
trajectoryListTool,
|
|
707
|
+
createTrajectoryListHandler(),
|
|
708
|
+
"vector"
|
|
709
|
+
);
|
|
710
|
+
logger.debug("Vector tools registered");
|
|
711
|
+
}
|
|
712
|
+
async function registerAuditTools() {
|
|
713
|
+
const {
|
|
714
|
+
auditQueryTool,
|
|
715
|
+
createAuditQueryHandler,
|
|
716
|
+
auditCheckpointTool,
|
|
717
|
+
createAuditCheckpointHandler,
|
|
718
|
+
syncStatusTool,
|
|
719
|
+
createSyncStatusHandler
|
|
720
|
+
} = await import("./audit/index.js");
|
|
721
|
+
registerTool(
|
|
722
|
+
auditQueryTool.name,
|
|
723
|
+
auditQueryTool,
|
|
724
|
+
createAuditQueryHandler(),
|
|
725
|
+
"audit"
|
|
726
|
+
);
|
|
727
|
+
registerTool(
|
|
728
|
+
auditCheckpointTool.name,
|
|
729
|
+
auditCheckpointTool,
|
|
730
|
+
createAuditCheckpointHandler(),
|
|
731
|
+
"audit"
|
|
732
|
+
);
|
|
733
|
+
registerTool(
|
|
734
|
+
syncStatusTool.name,
|
|
735
|
+
syncStatusTool,
|
|
736
|
+
createSyncStatusHandler(),
|
|
737
|
+
"audit"
|
|
738
|
+
);
|
|
739
|
+
logger.debug("Audit tools registered");
|
|
740
|
+
}
|
|
651
741
|
export {
|
|
652
742
|
getCache,
|
|
653
743
|
getDatabase,
|