@weave_protocol/domere 1.0.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/PLANNING.md +231 -0
- package/README.md +50 -0
- package/dist/anchoring/ethereum.d.ts +135 -0
- package/dist/anchoring/ethereum.d.ts.map +1 -0
- package/dist/anchoring/ethereum.js +474 -0
- package/dist/anchoring/ethereum.js.map +1 -0
- package/dist/anchoring/index.d.ts +93 -0
- package/dist/anchoring/index.d.ts.map +1 -0
- package/dist/anchoring/index.js +184 -0
- package/dist/anchoring/index.js.map +1 -0
- package/dist/anchoring/merkle.d.ts +91 -0
- package/dist/anchoring/merkle.d.ts.map +1 -0
- package/dist/anchoring/merkle.js +203 -0
- package/dist/anchoring/merkle.js.map +1 -0
- package/dist/anchoring/solana.d.ts +85 -0
- package/dist/anchoring/solana.d.ts.map +1 -0
- package/dist/anchoring/solana.js +301 -0
- package/dist/anchoring/solana.js.map +1 -0
- package/dist/constants.d.ts +130 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +536 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/language/code-analyzer.d.ts +80 -0
- package/dist/language/code-analyzer.d.ts.map +1 -0
- package/dist/language/code-analyzer.js +489 -0
- package/dist/language/code-analyzer.js.map +1 -0
- package/dist/language/detector.d.ts +53 -0
- package/dist/language/detector.d.ts.map +1 -0
- package/dist/language/detector.js +248 -0
- package/dist/language/detector.js.map +1 -0
- package/dist/language/index.d.ts +61 -0
- package/dist/language/index.d.ts.map +1 -0
- package/dist/language/index.js +109 -0
- package/dist/language/index.js.map +1 -0
- package/dist/language/nl-analyzer.d.ts +59 -0
- package/dist/language/nl-analyzer.d.ts.map +1 -0
- package/dist/language/nl-analyzer.js +350 -0
- package/dist/language/nl-analyzer.js.map +1 -0
- package/dist/language/semantic.d.ts +48 -0
- package/dist/language/semantic.d.ts.map +1 -0
- package/dist/language/semantic.js +329 -0
- package/dist/language/semantic.js.map +1 -0
- package/dist/storage/index.d.ts +6 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/memory.d.ts +48 -0
- package/dist/storage/memory.d.ts.map +1 -0
- package/dist/storage/memory.js +211 -0
- package/dist/storage/memory.js.map +1 -0
- package/dist/thread/drift.d.ts +43 -0
- package/dist/thread/drift.d.ts.map +1 -0
- package/dist/thread/drift.js +248 -0
- package/dist/thread/drift.js.map +1 -0
- package/dist/thread/index.d.ts +9 -0
- package/dist/thread/index.d.ts.map +1 -0
- package/dist/thread/index.js +9 -0
- package/dist/thread/index.js.map +1 -0
- package/dist/thread/intent.d.ts +68 -0
- package/dist/thread/intent.d.ts.map +1 -0
- package/dist/thread/intent.js +333 -0
- package/dist/thread/intent.js.map +1 -0
- package/dist/thread/manager.d.ts +85 -0
- package/dist/thread/manager.d.ts.map +1 -0
- package/dist/thread/manager.js +305 -0
- package/dist/thread/manager.js.map +1 -0
- package/dist/thread/weave.d.ts +61 -0
- package/dist/thread/weave.d.ts.map +1 -0
- package/dist/thread/weave.js +158 -0
- package/dist/thread/weave.js.map +1 -0
- package/dist/tools/index.d.ts +18 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +102 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +466 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +48 -0
- package/dist/types.js.map +1 -0
- package/package.json +24 -0
- package/src/anchoring/ethereum.ts +568 -0
- package/src/anchoring/index.ts +236 -0
- package/src/anchoring/merkle.ts +256 -0
- package/src/anchoring/solana.ts +370 -0
- package/src/constants.ts +566 -0
- package/src/index.ts +43 -0
- package/src/language/code-analyzer.ts +564 -0
- package/src/language/detector.ts +297 -0
- package/src/language/index.ts +129 -0
- package/src/language/nl-analyzer.ts +411 -0
- package/src/language/semantic.ts +385 -0
- package/src/storage/index.ts +6 -0
- package/src/storage/memory.ts +271 -0
- package/src/thread/drift.ts +319 -0
- package/src/thread/index.ts +9 -0
- package/src/thread/intent.ts +409 -0
- package/src/thread/manager.ts +414 -0
- package/src/thread/weave.ts +205 -0
- package/src/tools/index.ts +107 -0
- package/src/types.ts +736 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dōmere - The Judge Protocol
|
|
3
|
+
* MCP Tools
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import type { BlockchainNetwork, IDomereStorage } from '../types.js';
|
|
8
|
+
import { ThreadManager, IntentAnalyzer, DriftDetector } from '../thread/index.js';
|
|
9
|
+
import { LanguageAnalyzerService } from '../language/index.js';
|
|
10
|
+
import { AnchoringService } from '../anchoring/index.js';
|
|
11
|
+
import { createStorage } from '../storage/index.js';
|
|
12
|
+
|
|
13
|
+
// Tool definitions
|
|
14
|
+
export const DOMERE_TOOLS: Tool[] = [
|
|
15
|
+
{ name: 'domere_create_thread', description: 'Create thread from human intent', inputSchema: { type: 'object', properties: { origin_type: { type: 'string', enum: ['human', 'system', 'scheduled', 'delegated'] }, origin_identity: { type: 'string' }, intent: { type: 'string' }, constraints: { type: 'array', items: { type: 'string' } } }, required: ['origin_type', 'origin_identity', 'intent'] } },
|
|
16
|
+
{ name: 'domere_add_hop', description: 'Add hop to thread', inputSchema: { type: 'object', properties: { thread_id: { type: 'string' }, agent_id: { type: 'string' }, agent_type: { type: 'string' }, received_intent: { type: 'string' }, actions: { type: 'array', items: { type: 'object' } } }, required: ['thread_id', 'agent_id', 'agent_type', 'received_intent', 'actions'] } },
|
|
17
|
+
{ name: 'domere_get_thread', description: 'Get thread details', inputSchema: { type: 'object', properties: { thread_id: { type: 'string' } }, required: ['thread_id'] } },
|
|
18
|
+
{ name: 'domere_close_thread', description: 'Close thread', inputSchema: { type: 'object', properties: { thread_id: { type: 'string' }, outcome: { type: 'string', enum: ['success', 'failure', 'abandoned'] } }, required: ['thread_id', 'outcome'] } },
|
|
19
|
+
{ name: 'domere_verify_thread', description: 'Verify thread integrity', inputSchema: { type: 'object', properties: { thread_id: { type: 'string' } }, required: ['thread_id'] } },
|
|
20
|
+
{ name: 'domere_list_threads', description: 'List threads', inputSchema: { type: 'object', properties: { status: { type: 'string' }, limit: { type: 'number' } } } },
|
|
21
|
+
{ name: 'domere_detect_language', description: 'Detect language in content', inputSchema: { type: 'object', properties: { content: { type: 'string' } }, required: ['content'] } },
|
|
22
|
+
{ name: 'domere_analyze_content', description: 'Full semantic analysis', inputSchema: { type: 'object', properties: { content: { type: 'string' } }, required: ['content'] } },
|
|
23
|
+
{ name: 'domere_check_injection', description: 'Check for prompt injection', inputSchema: { type: 'object', properties: { content: { type: 'string' } }, required: ['content'] } },
|
|
24
|
+
{ name: 'domere_check_drift', description: 'Check intent drift', inputSchema: { type: 'object', properties: { original_intent: { type: 'string' }, current_intent: { type: 'string' }, constraints: { type: 'array', items: { type: 'string' } } }, required: ['original_intent', 'current_intent'] } },
|
|
25
|
+
{ name: 'domere_estimate_anchor_cost', description: 'Estimate blockchain cost', inputSchema: { type: 'object', properties: { network: { type: 'string', enum: ['solana', 'ethereum', 'solana-devnet', 'ethereum-sepolia'] } }, required: ['network'] } },
|
|
26
|
+
{ name: 'domere_prepare_anchor', description: 'Prepare anchor transaction', inputSchema: { type: 'object', properties: { thread_id: { type: 'string' }, network: { type: 'string' } }, required: ['thread_id', 'network'] } },
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
// Tool Handler
|
|
30
|
+
export class DomereToolHandler {
|
|
31
|
+
private storage: IDomereStorage;
|
|
32
|
+
private threadManager: ThreadManager;
|
|
33
|
+
private languageAnalyzer: LanguageAnalyzerService;
|
|
34
|
+
private anchoringService: AnchoringService;
|
|
35
|
+
private intentAnalyzer: IntentAnalyzer;
|
|
36
|
+
private driftDetector: DriftDetector;
|
|
37
|
+
|
|
38
|
+
constructor(storage?: IDomereStorage) {
|
|
39
|
+
this.storage = storage || createStorage('memory');
|
|
40
|
+
this.threadManager = new ThreadManager(this.storage);
|
|
41
|
+
this.languageAnalyzer = new LanguageAnalyzerService();
|
|
42
|
+
this.anchoringService = new AnchoringService();
|
|
43
|
+
this.intentAnalyzer = new IntentAnalyzer();
|
|
44
|
+
this.driftDetector = new DriftDetector();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async handleTool(name: string, args: Record<string, unknown>): Promise<unknown> {
|
|
48
|
+
switch (name) {
|
|
49
|
+
case 'domere_create_thread': {
|
|
50
|
+
const thread = await this.threadManager.createThread({
|
|
51
|
+
origin: { type: args.origin_type as any, identity: args.origin_identity as string },
|
|
52
|
+
intent: args.intent as string,
|
|
53
|
+
constraints: args.constraints as string[],
|
|
54
|
+
});
|
|
55
|
+
return { thread_id: thread.id, intent_hash: thread.intent.hash, weave_signature: thread.weave_signature };
|
|
56
|
+
}
|
|
57
|
+
case 'domere_add_hop': {
|
|
58
|
+
const hop = await this.threadManager.addHop({
|
|
59
|
+
thread_id: args.thread_id as string,
|
|
60
|
+
agent: { id: args.agent_id as string, type: args.agent_type as string },
|
|
61
|
+
received_intent: args.received_intent as string,
|
|
62
|
+
actions: (args.actions as any[]).map(a => ({ ...a, timestamp: new Date() })),
|
|
63
|
+
});
|
|
64
|
+
return { hop_id: hop.hop_id, intent_preserved: hop.intent_preserved, drift: hop.intent_drift?.verdict };
|
|
65
|
+
}
|
|
66
|
+
case 'domere_get_thread': {
|
|
67
|
+
const thread = await this.threadManager.getThread(args.thread_id as string);
|
|
68
|
+
return thread ? { id: thread.id, status: thread.status, hop_count: thread.hops.length, merkle_root: thread.merkle_root } : { error: 'Not found' };
|
|
69
|
+
}
|
|
70
|
+
case 'domere_close_thread': {
|
|
71
|
+
const thread = await this.threadManager.closeThread(args.thread_id as string, args.outcome as any);
|
|
72
|
+
return { thread_id: thread.id, status: thread.status, merkle_root: thread.merkle_root };
|
|
73
|
+
}
|
|
74
|
+
case 'domere_verify_thread':
|
|
75
|
+
return this.threadManager.verifyThread(args.thread_id as string);
|
|
76
|
+
case 'domere_list_threads': {
|
|
77
|
+
const threads = await this.threadManager.listThreads({ status: args.status as any, limit: args.limit as number });
|
|
78
|
+
return threads.map(t => ({ id: t.id, status: t.status, hops: t.hops.length }));
|
|
79
|
+
}
|
|
80
|
+
case 'domere_detect_language':
|
|
81
|
+
return this.languageAnalyzer.detectLanguage(args.content as string);
|
|
82
|
+
case 'domere_analyze_content':
|
|
83
|
+
return this.languageAnalyzer.analyze(args.content as string);
|
|
84
|
+
case 'domere_check_injection':
|
|
85
|
+
return this.languageAnalyzer.checkInjection(args.content as string);
|
|
86
|
+
case 'domere_check_drift':
|
|
87
|
+
return this.driftDetector.analyze({
|
|
88
|
+
original_intent: args.original_intent as string,
|
|
89
|
+
previous_intent: args.original_intent as string,
|
|
90
|
+
current_intent: args.current_intent as string,
|
|
91
|
+
constraints: (args.constraints as string[]) || [],
|
|
92
|
+
hop_number: 1,
|
|
93
|
+
});
|
|
94
|
+
case 'domere_estimate_anchor_cost':
|
|
95
|
+
return this.anchoringService.estimateCost(args.network as BlockchainNetwork);
|
|
96
|
+
case 'domere_prepare_anchor': {
|
|
97
|
+
const thread = await this.threadManager.getThread(args.thread_id as string);
|
|
98
|
+
if (!thread) return { error: 'Thread not found' };
|
|
99
|
+
const request = this.anchoringService.prepareThreadAnchor(thread);
|
|
100
|
+
request.network = args.network as BlockchainNetwork;
|
|
101
|
+
return this.anchoringService.createAnchorTransaction(request);
|
|
102
|
+
}
|
|
103
|
+
default:
|
|
104
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|