@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,329 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Semantic Analysis
4
+ */
5
+ import { INTENT_KEYWORDS, ENTITY_PATTERNS } from '../constants.js';
6
+ // ============================================================================
7
+ // Semantic Analyzer
8
+ // ============================================================================
9
+ export class SemanticAnalyzer {
10
+ /**
11
+ * Perform semantic analysis on content
12
+ */
13
+ analyze(content) {
14
+ return {
15
+ intent_classification: this.classifyIntent(content),
16
+ entities: this.extractEntities(content),
17
+ actions_implied: this.extractImpliedActions(content),
18
+ topics: this.extractTopics(content),
19
+ sentiment: this.analyzeSentiment(content),
20
+ formality: this.analyzeFormality(content),
21
+ urgency: this.analyzeUrgency(content),
22
+ };
23
+ }
24
+ /**
25
+ * Classify the intent of the content
26
+ */
27
+ classifyIntent(content) {
28
+ const contentLower = content.toLowerCase();
29
+ const scores = {
30
+ query: 0,
31
+ mutation: 0,
32
+ deletion: 0,
33
+ execution: 0,
34
+ communication: 0,
35
+ analysis: 0,
36
+ generation: 0,
37
+ unknown: 0,
38
+ };
39
+ // Score based on keywords
40
+ for (const [intent, keywords] of Object.entries(INTENT_KEYWORDS)) {
41
+ for (const keyword of keywords) {
42
+ const regex = new RegExp(`\\b${keyword}\\b`, 'gi');
43
+ const matches = contentLower.match(regex);
44
+ if (matches) {
45
+ scores[intent] += matches.length;
46
+ }
47
+ }
48
+ }
49
+ // Find highest scoring intent
50
+ let maxIntent = 'unknown';
51
+ let maxScore = 0;
52
+ for (const [intent, score] of Object.entries(scores)) {
53
+ if (score > maxScore) {
54
+ maxScore = score;
55
+ maxIntent = intent;
56
+ }
57
+ }
58
+ // If no strong signal, check question patterns
59
+ if (maxScore < 2) {
60
+ if (/^(what|where|who|when|how|why|which|is|are|do|does|can|could|would|should)\b/i.test(content.trim())) {
61
+ return 'query';
62
+ }
63
+ }
64
+ return maxIntent;
65
+ }
66
+ /**
67
+ * Extract entities from content
68
+ */
69
+ extractEntities(content) {
70
+ const entities = [];
71
+ // Extract using patterns
72
+ for (const [type, pattern] of Object.entries(ENTITY_PATTERNS)) {
73
+ const regex = new RegExp(pattern.source, pattern.flags);
74
+ let match;
75
+ while ((match = regex.exec(content)) !== null) {
76
+ entities.push({
77
+ type: type,
78
+ value: match[0],
79
+ confidence: 0.9,
80
+ position: { start: match.index, end: match.index + match[0].length },
81
+ });
82
+ }
83
+ }
84
+ // Extract potential names (capitalized words not at start of sentence)
85
+ const namePattern = /(?<![.!?]\s)(?<!\n)\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)+)\b/g;
86
+ let match;
87
+ while ((match = namePattern.exec(content)) !== null) {
88
+ const value = match[1];
89
+ if (!this.isCommonPhrase(value)) {
90
+ entities.push({
91
+ type: 'person',
92
+ value,
93
+ confidence: 0.6,
94
+ position: { start: match.index, end: match.index + match[0].length },
95
+ });
96
+ }
97
+ }
98
+ // Extract database/table references
99
+ const dbPattern = /\b(database|table|collection|schema|db)\s*[`'"]?(\w+)[`'"]?/gi;
100
+ while ((match = dbPattern.exec(content)) !== null) {
101
+ entities.push({
102
+ type: match[1].toLowerCase() === 'table' ? 'table' : 'database',
103
+ value: match[2],
104
+ confidence: 0.85,
105
+ position: { start: match.index, end: match.index + match[0].length },
106
+ });
107
+ }
108
+ // Extract API endpoints
109
+ const apiPattern = /(?:api|endpoint|route):\s*([^\s,]+)|\/api\/[\w/]+/gi;
110
+ while ((match = apiPattern.exec(content)) !== null) {
111
+ entities.push({
112
+ type: 'api_endpoint',
113
+ value: match[1] || match[0],
114
+ confidence: 0.8,
115
+ position: { start: match.index, end: match.index + match[0].length },
116
+ });
117
+ }
118
+ // Remove duplicates
119
+ return this.deduplicateEntities(entities);
120
+ }
121
+ /**
122
+ * Extract implied actions from content
123
+ */
124
+ extractImpliedActions(content) {
125
+ const actions = [];
126
+ const contentLower = content.toLowerCase();
127
+ // Look for verb phrases
128
+ const verbPatterns = [
129
+ /\b(will|should|must|need to|want to|going to|have to)\s+(\w+(?:\s+\w+)?)/gi,
130
+ /\b(please|kindly)?\s*(get|fetch|create|update|delete|send|run|execute|analyze|generate)\s+/gi,
131
+ /\b(i want|i need|i'd like)\s+(?:to\s+)?(\w+)/gi,
132
+ ];
133
+ for (const pattern of verbPatterns) {
134
+ let match;
135
+ while ((match = pattern.exec(contentLower)) !== null) {
136
+ const action = match[0].trim().replace(/^(please|kindly)\s*/i, '');
137
+ if (action.length > 3 && !actions.includes(action)) {
138
+ actions.push(action);
139
+ }
140
+ }
141
+ }
142
+ // Infer from intent keywords
143
+ for (const [intent, keywords] of Object.entries(INTENT_KEYWORDS)) {
144
+ for (const keyword of keywords) {
145
+ if (contentLower.includes(keyword) && !actions.some(a => a.includes(keyword))) {
146
+ actions.push(`${keyword} data/content`);
147
+ break;
148
+ }
149
+ }
150
+ }
151
+ return actions.slice(0, 10);
152
+ }
153
+ /**
154
+ * Extract topics from content
155
+ */
156
+ extractTopics(content) {
157
+ const topics = [];
158
+ const contentLower = content.toLowerCase();
159
+ // Domain-specific topic detection
160
+ const topicPatterns = {
161
+ 'sales': [/\b(sales|revenue|quota|deal|pipeline|forecast)\b/gi],
162
+ 'customer': [/\b(customer|client|account|user|subscriber)\b/gi],
163
+ 'finance': [/\b(finance|budget|expense|cost|profit|invoice|payment)\b/gi],
164
+ 'hr': [/\b(employee|staff|hire|recruit|payroll|benefits|performance)\b/gi],
165
+ 'marketing': [/\b(marketing|campaign|lead|conversion|engagement|brand)\b/gi],
166
+ 'product': [/\b(product|feature|release|roadmap|backlog|sprint)\b/gi],
167
+ 'engineering': [/\b(code|deploy|bug|fix|release|infrastructure|api)\b/gi],
168
+ 'security': [/\b(security|password|auth|permission|access|credential)\b/gi],
169
+ 'data': [/\b(data|database|query|report|analytics|metrics)\b/gi],
170
+ 'support': [/\b(support|ticket|issue|help|resolve|escalat)\b/gi],
171
+ };
172
+ for (const [topic, patterns] of Object.entries(topicPatterns)) {
173
+ for (const pattern of patterns) {
174
+ if (pattern.test(contentLower)) {
175
+ if (!topics.includes(topic)) {
176
+ topics.push(topic);
177
+ }
178
+ break;
179
+ }
180
+ }
181
+ }
182
+ return topics;
183
+ }
184
+ /**
185
+ * Analyze sentiment (-1 to 1)
186
+ */
187
+ analyzeSentiment(content) {
188
+ const contentLower = content.toLowerCase();
189
+ const positiveWords = [
190
+ 'good', 'great', 'excellent', 'amazing', 'wonderful', 'fantastic', 'love',
191
+ 'like', 'happy', 'pleased', 'thank', 'thanks', 'appreciate', 'helpful',
192
+ 'perfect', 'awesome', 'brilliant', 'success', 'successful', 'best',
193
+ ];
194
+ const negativeWords = [
195
+ 'bad', 'terrible', 'awful', 'horrible', 'hate', 'dislike', 'angry',
196
+ 'frustrated', 'annoyed', 'disappointed', 'fail', 'failed', 'failure',
197
+ 'wrong', 'error', 'problem', 'issue', 'bug', 'broken', 'worst',
198
+ ];
199
+ let positiveCount = 0;
200
+ let negativeCount = 0;
201
+ for (const word of positiveWords) {
202
+ const regex = new RegExp(`\\b${word}\\b`, 'gi');
203
+ const matches = contentLower.match(regex);
204
+ if (matches)
205
+ positiveCount += matches.length;
206
+ }
207
+ for (const word of negativeWords) {
208
+ const regex = new RegExp(`\\b${word}\\b`, 'gi');
209
+ const matches = contentLower.match(regex);
210
+ if (matches)
211
+ negativeCount += matches.length;
212
+ }
213
+ // Check for negation
214
+ const negationPattern = /\b(not|no|never|don't|doesn't|didn't|won't|wouldn't|can't|couldn't)\s+\w+/gi;
215
+ const negations = contentLower.match(negationPattern)?.length || 0;
216
+ const total = positiveCount + negativeCount;
217
+ if (total === 0)
218
+ return 0;
219
+ let sentiment = (positiveCount - negativeCount) / total;
220
+ // Adjust for negations
221
+ if (negations > 0) {
222
+ sentiment *= 0.5;
223
+ }
224
+ return Math.max(-1, Math.min(1, sentiment));
225
+ }
226
+ /**
227
+ * Analyze formality (0 to 1)
228
+ */
229
+ analyzeFormality(content) {
230
+ const contentLower = content.toLowerCase();
231
+ // Informal indicators
232
+ const informalPatterns = [
233
+ /\b(gonna|wanna|gotta|kinda|sorta|y'all|ain't)\b/gi,
234
+ /\b(lol|lmao|omg|wtf|btw|fyi|imo|imho)\b/gi,
235
+ /!{2,}/g,
236
+ /\?{2,}/g,
237
+ /\.{3,}/g,
238
+ /\b(hey|hi|yo|sup)\b/gi,
239
+ ];
240
+ // Formal indicators
241
+ const formalPatterns = [
242
+ /\b(hereby|therefore|whereas|pursuant|accordingly)\b/gi,
243
+ /\b(please|kindly|respectfully|sincerely)\b/gi,
244
+ /\b(regarding|concerning|pertaining|with respect to)\b/gi,
245
+ /\b(Dear|Sir|Madam|Mr\.|Mrs\.|Ms\.|Dr\.)\b/g,
246
+ ];
247
+ let informalCount = 0;
248
+ let formalCount = 0;
249
+ for (const pattern of informalPatterns) {
250
+ const matches = contentLower.match(pattern);
251
+ if (matches)
252
+ informalCount += matches.length;
253
+ }
254
+ for (const pattern of formalPatterns) {
255
+ const matches = content.match(pattern);
256
+ if (matches)
257
+ formalCount += matches.length;
258
+ }
259
+ // Calculate average sentence length (longer = more formal)
260
+ const sentences = content.split(/[.!?]+/).filter(s => s.trim().length > 0);
261
+ const avgSentenceLength = sentences.length > 0
262
+ ? sentences.reduce((sum, s) => sum + s.split(/\s+/).length, 0) / sentences.length
263
+ : 0;
264
+ // Normalize
265
+ let formality = 0.5;
266
+ if (formalCount > 0 || informalCount > 0) {
267
+ formality += (formalCount - informalCount) * 0.1;
268
+ }
269
+ if (avgSentenceLength > 15) {
270
+ formality += 0.1;
271
+ }
272
+ else if (avgSentenceLength < 8) {
273
+ formality -= 0.1;
274
+ }
275
+ return Math.max(0, Math.min(1, formality));
276
+ }
277
+ /**
278
+ * Analyze urgency (0 to 1)
279
+ */
280
+ analyzeUrgency(content) {
281
+ const contentLower = content.toLowerCase();
282
+ const urgentPatterns = [
283
+ { pattern: /\b(urgent|asap|immediately|right now|right away)\b/gi, weight: 0.3 },
284
+ { pattern: /\b(critical|emergency|priority|important)\b/gi, weight: 0.2 },
285
+ { pattern: /\b(deadline|due|by end of day|eod|cob)\b/gi, weight: 0.15 },
286
+ { pattern: /\b(need|must|have to|required)\b/gi, weight: 0.1 },
287
+ { pattern: /!+/g, weight: 0.05 },
288
+ { pattern: /\b(please|help)\b/gi, weight: 0.05 },
289
+ ];
290
+ let urgency = 0;
291
+ for (const { pattern, weight } of urgentPatterns) {
292
+ const matches = contentLower.match(pattern);
293
+ if (matches) {
294
+ urgency += matches.length * weight;
295
+ }
296
+ }
297
+ return Math.min(1, urgency);
298
+ }
299
+ /**
300
+ * Check if a phrase is a common non-name phrase
301
+ */
302
+ isCommonPhrase(phrase) {
303
+ const commonPhrases = [
304
+ 'The', 'This', 'That', 'These', 'Those', 'What', 'When', 'Where', 'How',
305
+ 'New York', 'Los Angeles', 'San Francisco', 'United States', 'United Kingdom',
306
+ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday',
307
+ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',
308
+ 'September', 'October', 'November', 'December',
309
+ 'First', 'Second', 'Third', 'Last', 'Next', 'Previous',
310
+ ];
311
+ return commonPhrases.some(p => phrase.toLowerCase() === p.toLowerCase());
312
+ }
313
+ /**
314
+ * Deduplicate entities
315
+ */
316
+ deduplicateEntities(entities) {
317
+ const seen = new Set();
318
+ const unique = [];
319
+ for (const entity of entities) {
320
+ const key = `${entity.type}:${entity.value.toLowerCase()}`;
321
+ if (!seen.has(key)) {
322
+ seen.add(key);
323
+ unique.push(entity);
324
+ }
325
+ }
326
+ return unique;
327
+ }
328
+ }
329
+ //# sourceMappingURL=semantic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/language/semantic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Storage Module
4
+ */
5
+ export { MemoryStorage, createStorage } from './memory.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Storage Module
4
+ */
5
+ export { MemoryStorage, createStorage } from './memory.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Memory Storage Implementation
4
+ */
5
+ import type { IDomereStorage, Thread, ThreadHop, ThreadFilters, ComplianceResult, CompliancePolicy, AnchorReference, ArbitrationCase, ArbitrationEvidence, CaseFilters } from '../types.js';
6
+ export declare class MemoryStorage implements IDomereStorage {
7
+ private threads;
8
+ private hops;
9
+ private complianceResults;
10
+ private policies;
11
+ private anchors;
12
+ private cases;
13
+ private evidence;
14
+ saveThread(thread: Thread): Promise<void>;
15
+ getThread(id: string): Promise<Thread | null>;
16
+ updateThread(thread: Thread): Promise<void>;
17
+ listThreads(filters?: ThreadFilters): Promise<Thread[]>;
18
+ addHop(threadId: string, hop: ThreadHop): Promise<void>;
19
+ getHops(threadId: string): Promise<ThreadHop[]>;
20
+ saveComplianceResult(result: ComplianceResult): Promise<void>;
21
+ getComplianceResults(threadId: string): Promise<ComplianceResult[]>;
22
+ savePolicy(policy: CompliancePolicy): Promise<void>;
23
+ getPolicy(id: string): Promise<CompliancePolicy | null>;
24
+ listPolicies(): Promise<CompliancePolicy[]>;
25
+ saveAnchor(threadId: string, anchor: AnchorReference): Promise<void>;
26
+ getAnchors(threadId: string): Promise<AnchorReference[]>;
27
+ saveCase(case_: ArbitrationCase): Promise<void>;
28
+ getCase(id: string): Promise<ArbitrationCase | null>;
29
+ listCases(filters?: CaseFilters): Promise<ArbitrationCase[]>;
30
+ saveEvidence(evidence: ArbitrationEvidence): Promise<void>;
31
+ getEvidence(caseId: string): Promise<ArbitrationEvidence[]>;
32
+ /**
33
+ * Clear all data
34
+ */
35
+ clear(): void;
36
+ /**
37
+ * Get statistics
38
+ */
39
+ getStats(): {
40
+ threads: number;
41
+ hops: number;
42
+ policies: number;
43
+ anchors: number;
44
+ cases: number;
45
+ };
46
+ }
47
+ export declare function createStorage(type?: 'memory' | 'sqlite'): IDomereStorage;
48
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/storage/memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,MAAM,EACN,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,WAAW,EACZ,MAAM,aAAa,CAAC;AAMrB,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,QAAQ,CAAiD;IAM3D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAU7C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsCvD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQ/C,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQnE,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKvD,YAAY,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQ3C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAQxD,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAUpD,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAgC5D,YAAY,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAQjE;;OAEG;IACH,KAAK,IAAI,IAAI;IAUb;;OAEG;IACH,QAAQ,IAAI;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf;CAmBF;AAMD,wBAAgB,aAAa,CAAC,IAAI,GAAE,QAAQ,GAAG,QAAmB,GAAG,cAAc,CAWlF"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Memory Storage Implementation
4
+ */
5
+ // ============================================================================
6
+ // Memory Storage
7
+ // ============================================================================
8
+ export class MemoryStorage {
9
+ threads = new Map();
10
+ hops = new Map();
11
+ complianceResults = new Map();
12
+ policies = new Map();
13
+ anchors = new Map();
14
+ cases = new Map();
15
+ evidence = new Map();
16
+ // ============================================================================
17
+ // Thread Operations
18
+ // ============================================================================
19
+ async saveThread(thread) {
20
+ this.threads.set(thread.id, { ...thread });
21
+ this.hops.set(thread.id, [...thread.hops]);
22
+ }
23
+ async getThread(id) {
24
+ const thread = this.threads.get(id);
25
+ if (!thread)
26
+ return null;
27
+ return {
28
+ ...thread,
29
+ hops: this.hops.get(id) || [],
30
+ };
31
+ }
32
+ async updateThread(thread) {
33
+ this.threads.set(thread.id, { ...thread });
34
+ this.hops.set(thread.id, [...thread.hops]);
35
+ }
36
+ async listThreads(filters) {
37
+ let threads = Array.from(this.threads.values());
38
+ if (filters) {
39
+ if (filters.status) {
40
+ threads = threads.filter(t => t.status === filters.status);
41
+ }
42
+ if (filters.origin_type) {
43
+ threads = threads.filter(t => t.origin.type === filters.origin_type);
44
+ }
45
+ if (filters.origin_identity) {
46
+ threads = threads.filter(t => t.origin.identity === filters.origin_identity);
47
+ }
48
+ if (filters.since) {
49
+ threads = threads.filter(t => t.created_at >= filters.since);
50
+ }
51
+ if (filters.until) {
52
+ threads = threads.filter(t => t.created_at <= filters.until);
53
+ }
54
+ }
55
+ // Sort by creation date (newest first)
56
+ threads.sort((a, b) => b.created_at.getTime() - a.created_at.getTime());
57
+ // Apply pagination
58
+ const offset = filters?.offset ?? 0;
59
+ const limit = filters?.limit ?? 100;
60
+ return threads.slice(offset, offset + limit).map(t => ({
61
+ ...t,
62
+ hops: this.hops.get(t.id) || [],
63
+ }));
64
+ }
65
+ // ============================================================================
66
+ // Hop Operations
67
+ // ============================================================================
68
+ async addHop(threadId, hop) {
69
+ const hops = this.hops.get(threadId) || [];
70
+ hops.push({ ...hop });
71
+ this.hops.set(threadId, hops);
72
+ }
73
+ async getHops(threadId) {
74
+ return [...(this.hops.get(threadId) || [])];
75
+ }
76
+ // ============================================================================
77
+ // Compliance Operations
78
+ // ============================================================================
79
+ async saveComplianceResult(result) {
80
+ const results = this.complianceResults.get(result.thread_id) || [];
81
+ results.push({ ...result });
82
+ this.complianceResults.set(result.thread_id, results);
83
+ }
84
+ async getComplianceResults(threadId) {
85
+ return [...(this.complianceResults.get(threadId) || [])];
86
+ }
87
+ // ============================================================================
88
+ // Policy Operations
89
+ // ============================================================================
90
+ async savePolicy(policy) {
91
+ this.policies.set(policy.id, { ...policy });
92
+ }
93
+ async getPolicy(id) {
94
+ const policy = this.policies.get(id);
95
+ return policy ? { ...policy } : null;
96
+ }
97
+ async listPolicies() {
98
+ return Array.from(this.policies.values()).map(p => ({ ...p }));
99
+ }
100
+ // ============================================================================
101
+ // Anchor Operations
102
+ // ============================================================================
103
+ async saveAnchor(threadId, anchor) {
104
+ const anchors = this.anchors.get(threadId) || [];
105
+ anchors.push({ ...anchor });
106
+ this.anchors.set(threadId, anchors);
107
+ }
108
+ async getAnchors(threadId) {
109
+ return [...(this.anchors.get(threadId) || [])];
110
+ }
111
+ // ============================================================================
112
+ // Arbitration Operations
113
+ // ============================================================================
114
+ async saveCase(case_) {
115
+ this.cases.set(case_.id, { ...case_ });
116
+ }
117
+ async getCase(id) {
118
+ const case_ = this.cases.get(id);
119
+ if (!case_)
120
+ return null;
121
+ return {
122
+ ...case_,
123
+ evidence: this.evidence.get(id) || [],
124
+ };
125
+ }
126
+ async listCases(filters) {
127
+ let cases = Array.from(this.cases.values());
128
+ if (filters) {
129
+ if (filters.status) {
130
+ cases = cases.filter(c => c.status === filters.status);
131
+ }
132
+ if (filters.dispute_type) {
133
+ cases = cases.filter(c => c.dispute.type === filters.dispute_type);
134
+ }
135
+ if (filters.thread_id) {
136
+ cases = cases.filter(c => c.thread_id === filters.thread_id);
137
+ }
138
+ }
139
+ // Sort by creation date (newest first)
140
+ cases.sort((a, b) => b.created_at.getTime() - a.created_at.getTime());
141
+ // Apply pagination
142
+ const offset = filters?.offset ?? 0;
143
+ const limit = filters?.limit ?? 100;
144
+ return cases.slice(offset, offset + limit).map(c => ({
145
+ ...c,
146
+ evidence: this.evidence.get(c.id) || [],
147
+ }));
148
+ }
149
+ // ============================================================================
150
+ // Evidence Operations
151
+ // ============================================================================
152
+ async saveEvidence(evidence) {
153
+ const evidenceList = this.evidence.get(evidence.case_id) || [];
154
+ evidenceList.push({ ...evidence });
155
+ this.evidence.set(evidence.case_id, evidenceList);
156
+ }
157
+ async getEvidence(caseId) {
158
+ return [...(this.evidence.get(caseId) || [])];
159
+ }
160
+ // ============================================================================
161
+ // Utility Operations
162
+ // ============================================================================
163
+ /**
164
+ * Clear all data
165
+ */
166
+ clear() {
167
+ this.threads.clear();
168
+ this.hops.clear();
169
+ this.complianceResults.clear();
170
+ this.policies.clear();
171
+ this.anchors.clear();
172
+ this.cases.clear();
173
+ this.evidence.clear();
174
+ }
175
+ /**
176
+ * Get statistics
177
+ */
178
+ getStats() {
179
+ let totalHops = 0;
180
+ for (const hops of this.hops.values()) {
181
+ totalHops += hops.length;
182
+ }
183
+ let totalAnchors = 0;
184
+ for (const anchors of this.anchors.values()) {
185
+ totalAnchors += anchors.length;
186
+ }
187
+ return {
188
+ threads: this.threads.size,
189
+ hops: totalHops,
190
+ policies: this.policies.size,
191
+ anchors: totalAnchors,
192
+ cases: this.cases.size,
193
+ };
194
+ }
195
+ }
196
+ // ============================================================================
197
+ // Storage Factory
198
+ // ============================================================================
199
+ export function createStorage(type = 'memory') {
200
+ switch (type) {
201
+ case 'memory':
202
+ return new MemoryStorage();
203
+ case 'sqlite':
204
+ // TODO: Implement SQLite storage
205
+ console.warn('SQLite storage not implemented, falling back to memory');
206
+ return new MemoryStorage();
207
+ default:
208
+ return new MemoryStorage();
209
+ }
210
+ }
211
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/storage/memory.ts"],"names":[],"mappings":"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"}