@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.
Files changed (104) hide show
  1. package/PLANNING.md +231 -0
  2. package/README.md +50 -0
  3. package/dist/anchoring/ethereum.d.ts +135 -0
  4. package/dist/anchoring/ethereum.d.ts.map +1 -0
  5. package/dist/anchoring/ethereum.js +474 -0
  6. package/dist/anchoring/ethereum.js.map +1 -0
  7. package/dist/anchoring/index.d.ts +93 -0
  8. package/dist/anchoring/index.d.ts.map +1 -0
  9. package/dist/anchoring/index.js +184 -0
  10. package/dist/anchoring/index.js.map +1 -0
  11. package/dist/anchoring/merkle.d.ts +91 -0
  12. package/dist/anchoring/merkle.d.ts.map +1 -0
  13. package/dist/anchoring/merkle.js +203 -0
  14. package/dist/anchoring/merkle.js.map +1 -0
  15. package/dist/anchoring/solana.d.ts +85 -0
  16. package/dist/anchoring/solana.d.ts.map +1 -0
  17. package/dist/anchoring/solana.js +301 -0
  18. package/dist/anchoring/solana.js.map +1 -0
  19. package/dist/constants.d.ts +130 -0
  20. package/dist/constants.d.ts.map +1 -0
  21. package/dist/constants.js +536 -0
  22. package/dist/constants.js.map +1 -0
  23. package/dist/index.d.ts +13 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +37 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/language/code-analyzer.d.ts +80 -0
  28. package/dist/language/code-analyzer.d.ts.map +1 -0
  29. package/dist/language/code-analyzer.js +489 -0
  30. package/dist/language/code-analyzer.js.map +1 -0
  31. package/dist/language/detector.d.ts +53 -0
  32. package/dist/language/detector.d.ts.map +1 -0
  33. package/dist/language/detector.js +248 -0
  34. package/dist/language/detector.js.map +1 -0
  35. package/dist/language/index.d.ts +61 -0
  36. package/dist/language/index.d.ts.map +1 -0
  37. package/dist/language/index.js +109 -0
  38. package/dist/language/index.js.map +1 -0
  39. package/dist/language/nl-analyzer.d.ts +59 -0
  40. package/dist/language/nl-analyzer.d.ts.map +1 -0
  41. package/dist/language/nl-analyzer.js +350 -0
  42. package/dist/language/nl-analyzer.js.map +1 -0
  43. package/dist/language/semantic.d.ts +48 -0
  44. package/dist/language/semantic.d.ts.map +1 -0
  45. package/dist/language/semantic.js +329 -0
  46. package/dist/language/semantic.js.map +1 -0
  47. package/dist/storage/index.d.ts +6 -0
  48. package/dist/storage/index.d.ts.map +1 -0
  49. package/dist/storage/index.js +6 -0
  50. package/dist/storage/index.js.map +1 -0
  51. package/dist/storage/memory.d.ts +48 -0
  52. package/dist/storage/memory.d.ts.map +1 -0
  53. package/dist/storage/memory.js +211 -0
  54. package/dist/storage/memory.js.map +1 -0
  55. package/dist/thread/drift.d.ts +43 -0
  56. package/dist/thread/drift.d.ts.map +1 -0
  57. package/dist/thread/drift.js +248 -0
  58. package/dist/thread/drift.js.map +1 -0
  59. package/dist/thread/index.d.ts +9 -0
  60. package/dist/thread/index.d.ts.map +1 -0
  61. package/dist/thread/index.js +9 -0
  62. package/dist/thread/index.js.map +1 -0
  63. package/dist/thread/intent.d.ts +68 -0
  64. package/dist/thread/intent.d.ts.map +1 -0
  65. package/dist/thread/intent.js +333 -0
  66. package/dist/thread/intent.js.map +1 -0
  67. package/dist/thread/manager.d.ts +85 -0
  68. package/dist/thread/manager.d.ts.map +1 -0
  69. package/dist/thread/manager.js +305 -0
  70. package/dist/thread/manager.js.map +1 -0
  71. package/dist/thread/weave.d.ts +61 -0
  72. package/dist/thread/weave.d.ts.map +1 -0
  73. package/dist/thread/weave.js +158 -0
  74. package/dist/thread/weave.js.map +1 -0
  75. package/dist/tools/index.d.ts +18 -0
  76. package/dist/tools/index.d.ts.map +1 -0
  77. package/dist/tools/index.js +102 -0
  78. package/dist/tools/index.js.map +1 -0
  79. package/dist/types.d.ts +466 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +48 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +24 -0
  84. package/src/anchoring/ethereum.ts +568 -0
  85. package/src/anchoring/index.ts +236 -0
  86. package/src/anchoring/merkle.ts +256 -0
  87. package/src/anchoring/solana.ts +370 -0
  88. package/src/constants.ts +566 -0
  89. package/src/index.ts +43 -0
  90. package/src/language/code-analyzer.ts +564 -0
  91. package/src/language/detector.ts +297 -0
  92. package/src/language/index.ts +129 -0
  93. package/src/language/nl-analyzer.ts +411 -0
  94. package/src/language/semantic.ts +385 -0
  95. package/src/storage/index.ts +6 -0
  96. package/src/storage/memory.ts +271 -0
  97. package/src/thread/drift.ts +319 -0
  98. package/src/thread/index.ts +9 -0
  99. package/src/thread/intent.ts +409 -0
  100. package/src/thread/manager.ts +414 -0
  101. package/src/thread/weave.ts +205 -0
  102. package/src/tools/index.ts +107 -0
  103. package/src/types.ts +736 -0
  104. package/tsconfig.json +19 -0
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Thread Manager
4
+ */
5
+ import * as crypto from 'crypto';
6
+ import { ThreadError } from '../types.js';
7
+ import { LanguageAnalyzerService } from '../language/index.js';
8
+ import { IntentAnalyzer } from './intent.js';
9
+ import { DriftDetector } from './drift.js';
10
+ import { WeaveSignature } from './weave.js';
11
+ // ============================================================================
12
+ // Thread Manager
13
+ // ============================================================================
14
+ export class ThreadManager {
15
+ storage;
16
+ languageAnalyzer;
17
+ intentAnalyzer;
18
+ driftDetector;
19
+ weaveSignature;
20
+ constructor(storage) {
21
+ this.storage = storage;
22
+ this.languageAnalyzer = new LanguageAnalyzerService();
23
+ this.intentAnalyzer = new IntentAnalyzer();
24
+ this.driftDetector = new DriftDetector();
25
+ this.weaveSignature = new WeaveSignature();
26
+ }
27
+ /**
28
+ * Create a new thread
29
+ */
30
+ async createThread(config) {
31
+ const now = new Date();
32
+ const threadId = this.generateThreadId();
33
+ // Analyze the intent
34
+ const intentAnalysis = this.intentAnalyzer.analyze(config.intent);
35
+ const languageAnalysis = this.languageAnalyzer.analyze(config.intent);
36
+ const intent = {
37
+ raw: config.intent,
38
+ hash: this.hashContent(config.intent),
39
+ normalized: intentAnalysis.normalized,
40
+ classification: languageAnalysis.semantic?.intent_classification || 'unknown',
41
+ constraints: config.constraints || [],
42
+ entities: languageAnalysis.semantic?.entities || [],
43
+ actions_implied: languageAnalysis.semantic?.actions_implied || [],
44
+ language_analysis: languageAnalysis,
45
+ };
46
+ const origin = {
47
+ ...config.origin,
48
+ timestamp: now,
49
+ };
50
+ // Create initial weave signature
51
+ const initialSignature = this.weaveSignature.createInitial({
52
+ threadId,
53
+ origin,
54
+ intent,
55
+ });
56
+ const thread = {
57
+ id: threadId,
58
+ origin,
59
+ intent,
60
+ hops: [],
61
+ weave_signature: initialSignature,
62
+ status: 'active',
63
+ created_at: now,
64
+ updated_at: now,
65
+ metadata: config.metadata || {},
66
+ };
67
+ await this.storage.saveThread(thread);
68
+ return thread;
69
+ }
70
+ /**
71
+ * Add a hop to a thread
72
+ */
73
+ async addHop(config) {
74
+ const thread = await this.storage.getThread(config.thread_id);
75
+ if (!thread) {
76
+ throw new ThreadError('Thread not found', { thread_id: config.thread_id });
77
+ }
78
+ if (thread.status !== 'active') {
79
+ throw new ThreadError('Thread is not active', {
80
+ thread_id: config.thread_id,
81
+ status: thread.status
82
+ });
83
+ }
84
+ const now = new Date();
85
+ const sequence = thread.hops.length + 1;
86
+ const hopId = this.generateHopId(config.thread_id, sequence);
87
+ // Analyze received intent
88
+ const languageAnalysis = this.languageAnalyzer.analyze(config.received_intent);
89
+ // Calculate previous intent for drift detection
90
+ const previousIntent = sequence === 1
91
+ ? thread.intent.raw
92
+ : thread.hops[thread.hops.length - 1].received_intent;
93
+ // Detect drift
94
+ const driftAnalysis = this.driftDetector.analyze({
95
+ original_intent: thread.intent.raw,
96
+ previous_intent: previousIntent,
97
+ current_intent: config.received_intent,
98
+ constraints: thread.intent.constraints,
99
+ hop_number: sequence,
100
+ });
101
+ // Calculate cumulative hash
102
+ const previousHash = sequence === 1
103
+ ? thread.weave_signature
104
+ : thread.hops[thread.hops.length - 1].cumulative_hash;
105
+ const hopData = {
106
+ hopId,
107
+ agent: config.agent,
108
+ received_intent: config.received_intent,
109
+ actions: config.actions,
110
+ timestamp: now,
111
+ };
112
+ const hopSignature = this.weaveSignature.signHop(hopData, previousHash);
113
+ const cumulativeHash = this.weaveSignature.computeCumulativeHash(previousHash, hopSignature);
114
+ const hop = {
115
+ sequence,
116
+ hop_id: hopId,
117
+ agent: config.agent,
118
+ received_intent: config.received_intent,
119
+ received_intent_hash: this.hashContent(config.received_intent),
120
+ intent_preserved: driftAnalysis.verdict === 'aligned' || driftAnalysis.verdict === 'minor_drift',
121
+ intent_drift: driftAnalysis,
122
+ actions: config.actions,
123
+ language_analysis: languageAnalysis,
124
+ security_scan: config.security_scan,
125
+ sandbox_result: config.sandbox_result ? {
126
+ sandbox_id: config.sandbox_result.sandbox_id,
127
+ result_id: config.sandbox_result.result_id,
128
+ status: config.sandbox_result.status,
129
+ summary: config.sandbox_result.summary,
130
+ } : undefined,
131
+ hop_signature: hopSignature,
132
+ cumulative_hash: cumulativeHash,
133
+ started_at: now,
134
+ completed_at: now,
135
+ duration_ms: 0,
136
+ status: 'success',
137
+ };
138
+ // Update thread
139
+ thread.hops.push(hop);
140
+ thread.weave_signature = cumulativeHash;
141
+ thread.updated_at = now;
142
+ // Check for violations
143
+ if (driftAnalysis.verdict === 'violated') {
144
+ thread.status = 'violated';
145
+ }
146
+ // Update merkle root
147
+ thread.merkle_root = this.computeMerkleRoot(thread.hops);
148
+ await this.storage.updateThread(thread);
149
+ await this.storage.addHop(config.thread_id, hop);
150
+ return hop;
151
+ }
152
+ /**
153
+ * Close a thread
154
+ */
155
+ async closeThread(threadId, outcome) {
156
+ const thread = await this.storage.getThread(threadId);
157
+ if (!thread) {
158
+ throw new ThreadError('Thread not found', { thread_id: threadId });
159
+ }
160
+ const now = new Date();
161
+ thread.status = outcome === 'success' ? 'complete' :
162
+ outcome === 'failure' ? 'violated' : 'abandoned';
163
+ thread.closed_at = now;
164
+ thread.updated_at = now;
165
+ // Final merkle root
166
+ thread.merkle_root = this.computeMerkleRoot(thread.hops);
167
+ await this.storage.updateThread(thread);
168
+ return thread;
169
+ }
170
+ /**
171
+ * Get a thread
172
+ */
173
+ async getThread(threadId) {
174
+ return this.storage.getThread(threadId);
175
+ }
176
+ /**
177
+ * List threads
178
+ */
179
+ async listThreads(filters) {
180
+ return this.storage.listThreads(filters);
181
+ }
182
+ /**
183
+ * Verify thread integrity
184
+ */
185
+ async verifyThread(threadId) {
186
+ const thread = await this.storage.getThread(threadId);
187
+ if (!thread) {
188
+ return { valid: false, errors: ['Thread not found'], verified_hops: 0, total_hops: 0 };
189
+ }
190
+ const errors = [];
191
+ let verifiedHops = 0;
192
+ // Verify initial signature
193
+ const expectedInitial = this.weaveSignature.createInitial({
194
+ threadId: thread.id,
195
+ origin: thread.origin,
196
+ intent: thread.intent,
197
+ });
198
+ let previousHash = expectedInitial;
199
+ // Verify each hop
200
+ for (let i = 0; i < thread.hops.length; i++) {
201
+ const hop = thread.hops[i];
202
+ // Verify sequence
203
+ if (hop.sequence !== i + 1) {
204
+ errors.push(`Hop ${i + 1} has incorrect sequence: ${hop.sequence}`);
205
+ }
206
+ // Verify hop signature
207
+ const hopData = {
208
+ hopId: hop.hop_id,
209
+ agent: hop.agent,
210
+ received_intent: hop.received_intent,
211
+ actions: hop.actions,
212
+ timestamp: hop.started_at,
213
+ };
214
+ const expectedSignature = this.weaveSignature.signHop(hopData, previousHash);
215
+ if (hop.hop_signature !== expectedSignature) {
216
+ errors.push(`Hop ${i + 1} has invalid signature`);
217
+ }
218
+ else {
219
+ verifiedHops++;
220
+ }
221
+ // Verify cumulative hash
222
+ const expectedCumulative = this.weaveSignature.computeCumulativeHash(previousHash, hop.hop_signature);
223
+ if (hop.cumulative_hash !== expectedCumulative) {
224
+ errors.push(`Hop ${i + 1} has invalid cumulative hash`);
225
+ }
226
+ previousHash = hop.cumulative_hash;
227
+ }
228
+ // Verify final weave signature
229
+ if (thread.hops.length > 0) {
230
+ const lastHop = thread.hops[thread.hops.length - 1];
231
+ if (thread.weave_signature !== lastHop.cumulative_hash) {
232
+ errors.push('Thread weave signature does not match last hop');
233
+ }
234
+ }
235
+ // Verify merkle root
236
+ const expectedMerkle = this.computeMerkleRoot(thread.hops);
237
+ if (thread.merkle_root && thread.merkle_root !== expectedMerkle) {
238
+ errors.push('Thread merkle root is invalid');
239
+ }
240
+ return {
241
+ valid: errors.length === 0,
242
+ errors,
243
+ verified_hops: verifiedHops,
244
+ total_hops: thread.hops.length,
245
+ };
246
+ }
247
+ /**
248
+ * Get thread summary
249
+ */
250
+ async getThreadSummary(threadId) {
251
+ const thread = await this.storage.getThread(threadId);
252
+ if (!thread)
253
+ return null;
254
+ const totalDrift = thread.hops.reduce((sum, hop) => sum + (hop.intent_drift?.hop_drift || 0), 0);
255
+ const hasViolations = thread.hops.some(hop => hop.intent_drift?.verdict === 'violated' || hop.status !== 'success');
256
+ const durationMs = thread.closed_at
257
+ ? thread.closed_at.getTime() - thread.created_at.getTime()
258
+ : Date.now() - thread.created_at.getTime();
259
+ return {
260
+ id: thread.id,
261
+ status: thread.status,
262
+ origin: `${thread.origin.type}:${thread.origin.identity}`,
263
+ intent_summary: thread.intent.raw.slice(0, 100),
264
+ hop_count: thread.hops.length,
265
+ total_drift: totalDrift,
266
+ has_violations: hasViolations,
267
+ duration_ms: durationMs,
268
+ merkle_root: thread.merkle_root,
269
+ };
270
+ }
271
+ // ============================================================================
272
+ // Private Methods
273
+ // ============================================================================
274
+ generateThreadId() {
275
+ return `thr_${crypto.randomBytes(12).toString('hex')}`;
276
+ }
277
+ generateHopId(threadId, sequence) {
278
+ return `hop_${crypto.randomBytes(8).toString('hex')}_${sequence}`;
279
+ }
280
+ hashContent(content) {
281
+ return crypto.createHash('sha256').update(content).digest('hex');
282
+ }
283
+ computeMerkleRoot(hops) {
284
+ if (hops.length === 0) {
285
+ return this.hashContent('empty');
286
+ }
287
+ // Get leaf hashes
288
+ let hashes = hops.map(hop => hop.hop_signature);
289
+ // Build tree
290
+ while (hashes.length > 1) {
291
+ const newLevel = [];
292
+ for (let i = 0; i < hashes.length; i += 2) {
293
+ if (i + 1 < hashes.length) {
294
+ newLevel.push(this.hashContent(hashes[i] + hashes[i + 1]));
295
+ }
296
+ else {
297
+ newLevel.push(hashes[i]); // Odd one out
298
+ }
299
+ }
300
+ hashes = newLevel;
301
+ }
302
+ return hashes[0];
303
+ }
304
+ }
305
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/thread/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Weave Signature - Cryptographic thread verification
4
+ */
5
+ import type { ThreadOrigin, ThreadIntent, AgentInfo, HopAction } from '../types.js';
6
+ export declare class WeaveSignature {
7
+ private algorithm;
8
+ /**
9
+ * Create initial thread signature
10
+ */
11
+ createInitial(data: {
12
+ threadId: string;
13
+ origin: ThreadOrigin;
14
+ intent: ThreadIntent;
15
+ }): string;
16
+ /**
17
+ * Sign a hop
18
+ */
19
+ signHop(data: {
20
+ hopId: string;
21
+ agent: AgentInfo;
22
+ received_intent: string;
23
+ actions: HopAction[];
24
+ timestamp: Date;
25
+ }, previousHash: string): string;
26
+ /**
27
+ * Compute cumulative hash
28
+ */
29
+ computeCumulativeHash(previousHash: string, currentSignature: string): string;
30
+ /**
31
+ * Verify a signature chain
32
+ */
33
+ verifyChain(signatures: string[]): boolean;
34
+ /**
35
+ * Generate Merkle root from hop signatures
36
+ */
37
+ generateMerkleRoot(signatures: string[]): string;
38
+ /**
39
+ * Generate Merkle proof for a specific leaf
40
+ */
41
+ generateMerkleProof(signatures: string[], leafIndex: number): string[];
42
+ /**
43
+ * Verify Merkle proof
44
+ */
45
+ verifyMerkleProof(leaf: string, proof: string[], root: string, leafIndex: number): boolean;
46
+ /**
47
+ * Create a thread summary hash for anchoring
48
+ */
49
+ createAnchorHash(data: {
50
+ threadId: string;
51
+ merkleRoot: string;
52
+ hopCount: number;
53
+ intentHash: string;
54
+ compliant: boolean;
55
+ closedAt: Date;
56
+ }): string;
57
+ private hash;
58
+ private canonicalize;
59
+ private hashActions;
60
+ }
61
+ //# sourceMappingURL=weave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weave.d.ts","sourceRoot":"","sources":["../../src/thread/weave.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMpF,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAoB;IAErC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,YAAY,CAAC;QACrB,MAAM,EAAE,YAAY,CAAC;KACtB,GAAG,MAAM;IAmBV;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,SAAS,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,SAAS,EAAE,CAAC;QACrB,SAAS,EAAE,IAAI,CAAC;KACjB,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAiBhC;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM;IAI7E;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO;IAM1C;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;IAsBhD;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IA+BtE;;OAEG;IACH,iBAAiB,CACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO;IAgBV;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,IAAI,CAAC;KAChB,GAAG,MAAM;IAcV,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;CAMpB"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Weave Signature - Cryptographic thread verification
4
+ */
5
+ import * as crypto from 'crypto';
6
+ // ============================================================================
7
+ // Weave Signature
8
+ // ============================================================================
9
+ export class WeaveSignature {
10
+ algorithm = 'sha256';
11
+ /**
12
+ * Create initial thread signature
13
+ */
14
+ createInitial(data) {
15
+ const canonical = this.canonicalize({
16
+ type: 'thread_init',
17
+ thread_id: data.threadId,
18
+ origin: {
19
+ type: data.origin.type,
20
+ identity: data.origin.identity,
21
+ timestamp: data.origin.timestamp.toISOString(),
22
+ },
23
+ intent: {
24
+ hash: data.intent.hash,
25
+ classification: data.intent.classification,
26
+ constraints: data.intent.constraints,
27
+ },
28
+ });
29
+ return this.hash(canonical);
30
+ }
31
+ /**
32
+ * Sign a hop
33
+ */
34
+ signHop(data, previousHash) {
35
+ const canonical = this.canonicalize({
36
+ type: 'hop',
37
+ hop_id: data.hopId,
38
+ previous_hash: previousHash,
39
+ agent: {
40
+ id: data.agent.id,
41
+ type: data.agent.type,
42
+ },
43
+ received_intent_hash: this.hash(data.received_intent),
44
+ actions_hash: this.hashActions(data.actions),
45
+ timestamp: data.timestamp.toISOString(),
46
+ });
47
+ return this.hash(canonical);
48
+ }
49
+ /**
50
+ * Compute cumulative hash
51
+ */
52
+ computeCumulativeHash(previousHash, currentSignature) {
53
+ return this.hash(`${previousHash}:${currentSignature}`);
54
+ }
55
+ /**
56
+ * Verify a signature chain
57
+ */
58
+ verifyChain(signatures) {
59
+ if (signatures.length < 2)
60
+ return true;
61
+ const unique = new Set(signatures);
62
+ return unique.size === signatures.length;
63
+ }
64
+ /**
65
+ * Generate Merkle root from hop signatures
66
+ */
67
+ generateMerkleRoot(signatures) {
68
+ if (signatures.length === 0) {
69
+ return this.hash('empty');
70
+ }
71
+ let hashes = [...signatures];
72
+ while (hashes.length > 1) {
73
+ const newLevel = [];
74
+ for (let i = 0; i < hashes.length; i += 2) {
75
+ if (i + 1 < hashes.length) {
76
+ newLevel.push(this.hash(hashes[i] + hashes[i + 1]));
77
+ }
78
+ else {
79
+ newLevel.push(hashes[i]);
80
+ }
81
+ }
82
+ hashes = newLevel;
83
+ }
84
+ return hashes[0];
85
+ }
86
+ /**
87
+ * Generate Merkle proof for a specific leaf
88
+ */
89
+ generateMerkleProof(signatures, leafIndex) {
90
+ if (leafIndex < 0 || leafIndex >= signatures.length) {
91
+ return [];
92
+ }
93
+ const proof = [];
94
+ let hashes = [...signatures];
95
+ let index = leafIndex;
96
+ while (hashes.length > 1) {
97
+ const newLevel = [];
98
+ for (let i = 0; i < hashes.length; i += 2) {
99
+ if (i + 1 < hashes.length) {
100
+ if (i === index || i + 1 === index) {
101
+ const siblingIndex = i === index ? i + 1 : i;
102
+ proof.push(hashes[siblingIndex]);
103
+ }
104
+ newLevel.push(this.hash(hashes[i] + hashes[i + 1]));
105
+ }
106
+ else {
107
+ newLevel.push(hashes[i]);
108
+ }
109
+ }
110
+ index = Math.floor(index / 2);
111
+ hashes = newLevel;
112
+ }
113
+ return proof;
114
+ }
115
+ /**
116
+ * Verify Merkle proof
117
+ */
118
+ verifyMerkleProof(leaf, proof, root, leafIndex) {
119
+ let hash = leaf;
120
+ let index = leafIndex;
121
+ for (const sibling of proof) {
122
+ if (index % 2 === 0) {
123
+ hash = this.hash(hash + sibling);
124
+ }
125
+ else {
126
+ hash = this.hash(sibling + hash);
127
+ }
128
+ index = Math.floor(index / 2);
129
+ }
130
+ return hash === root;
131
+ }
132
+ /**
133
+ * Create a thread summary hash for anchoring
134
+ */
135
+ createAnchorHash(data) {
136
+ const canonical = this.canonicalize({
137
+ type: 'anchor',
138
+ thread_id: data.threadId,
139
+ merkle_root: data.merkleRoot,
140
+ hop_count: data.hopCount,
141
+ intent_hash: data.intentHash,
142
+ compliant: data.compliant,
143
+ closed_at: data.closedAt.toISOString(),
144
+ });
145
+ return this.hash(canonical);
146
+ }
147
+ hash(data) {
148
+ return crypto.createHash(this.algorithm).update(data).digest('hex');
149
+ }
150
+ canonicalize(obj) {
151
+ return JSON.stringify(obj, Object.keys(obj).sort());
152
+ }
153
+ hashActions(actions) {
154
+ const actionStrings = actions.map(a => `${a.type}:${a.target || ''}:${a.description}`);
155
+ return this.hash(actionStrings.join('|'));
156
+ }
157
+ }
158
+ //# sourceMappingURL=weave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weave.js","sourceRoot":"","sources":["../../src/thread/weave.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * MCP Tools
4
+ */
5
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
6
+ import type { IDomereStorage } from '../types.js';
7
+ export declare const DOMERE_TOOLS: Tool[];
8
+ export declare class DomereToolHandler {
9
+ private storage;
10
+ private threadManager;
11
+ private languageAnalyzer;
12
+ private anchoringService;
13
+ private intentAnalyzer;
14
+ private driftDetector;
15
+ constructor(storage?: IDomereStorage);
16
+ handleTool(name: string, args: Record<string, unknown>): Promise<unknown>;
17
+ }
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,aAAa,CAAC;AAOrE,eAAO,MAAM,YAAY,EAAE,IAAI,EAa9B,CAAC;AAGF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,OAAO,CAAC,EAAE,cAAc;IAS9B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CA4DhF"}