@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,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dōmere - The Judge Protocol
|
|
3
|
+
* Language Detection
|
|
4
|
+
*/
|
|
5
|
+
import { LANGUAGE_PATTERNS } from '../constants.js';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Language Detector
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export class LanguageDetector {
|
|
10
|
+
/**
|
|
11
|
+
* Detect the primary language(s) in content
|
|
12
|
+
*/
|
|
13
|
+
detect(content) {
|
|
14
|
+
const detectedLanguages = this.detectLanguages(content);
|
|
15
|
+
const primary = this.determinePrimaryLanguage(detectedLanguages);
|
|
16
|
+
return {
|
|
17
|
+
detected_languages: detectedLanguages,
|
|
18
|
+
primary_language: primary.language,
|
|
19
|
+
confidence: primary.confidence,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Detect all languages present in content
|
|
24
|
+
*/
|
|
25
|
+
detectLanguages(content) {
|
|
26
|
+
const results = new Map();
|
|
27
|
+
// First pass: detect code languages (more specific patterns)
|
|
28
|
+
const codeLanguages = [
|
|
29
|
+
'typescript', 'javascript', 'python', 'sql', 'java', 'csharp', 'go', 'rust',
|
|
30
|
+
'ruby', 'php', 'swift', 'kotlin', 'scala', 'bash', 'powershell',
|
|
31
|
+
'json', 'yaml', 'xml', 'html', 'css', 'markdown',
|
|
32
|
+
'graphql', 'protobuf', 'regex',
|
|
33
|
+
];
|
|
34
|
+
for (const lang of codeLanguages) {
|
|
35
|
+
const detection = this.detectLanguage(content, lang);
|
|
36
|
+
if (detection.score > 0.1) {
|
|
37
|
+
results.set(lang, detection);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// If no code detected, check for natural language
|
|
41
|
+
if (results.size === 0 || this.isLikelyNaturalLanguage(content)) {
|
|
42
|
+
const nlLanguages = ['english', 'spanish', 'french', 'german', 'chinese', 'japanese'];
|
|
43
|
+
for (const lang of nlLanguages) {
|
|
44
|
+
const detection = this.detectLanguage(content, lang);
|
|
45
|
+
if (detection.score > 0.1) {
|
|
46
|
+
// Check if we already have code - if so, this might be mixed
|
|
47
|
+
const existingTotal = Array.from(results.values()).reduce((sum, d) => sum + d.score, 0);
|
|
48
|
+
if (existingTotal < 0.5 || detection.score > 0.3) {
|
|
49
|
+
results.set(lang, detection);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Convert to array and normalize
|
|
55
|
+
const detected = [];
|
|
56
|
+
const totalScore = Array.from(results.values()).reduce((sum, d) => sum + d.score, 0);
|
|
57
|
+
for (const [language, data] of results) {
|
|
58
|
+
const confidence = totalScore > 0 ? data.score / totalScore : 0;
|
|
59
|
+
if (confidence > 0.05) { // Only include if > 5% confidence
|
|
60
|
+
detected.push({
|
|
61
|
+
language,
|
|
62
|
+
confidence,
|
|
63
|
+
segments: data.segments,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Sort by confidence
|
|
68
|
+
detected.sort((a, b) => b.confidence - a.confidence);
|
|
69
|
+
// If nothing detected, return unknown
|
|
70
|
+
if (detected.length === 0) {
|
|
71
|
+
return [{
|
|
72
|
+
language: 'unknown',
|
|
73
|
+
confidence: 1,
|
|
74
|
+
segments: [{ start: 0, end: content.length, language: 'unknown', content, confidence: 1 }],
|
|
75
|
+
}];
|
|
76
|
+
}
|
|
77
|
+
return detected;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Detect a specific language in content
|
|
81
|
+
*/
|
|
82
|
+
detectLanguage(content, language) {
|
|
83
|
+
const config = LANGUAGE_PATTERNS[language];
|
|
84
|
+
if (!config) {
|
|
85
|
+
return { score: 0, segments: [] };
|
|
86
|
+
}
|
|
87
|
+
let score = 0;
|
|
88
|
+
const segments = [];
|
|
89
|
+
const contentLower = content.toLowerCase();
|
|
90
|
+
// Check patterns
|
|
91
|
+
for (const pattern of config.patterns) {
|
|
92
|
+
const matches = content.match(pattern);
|
|
93
|
+
if (matches) {
|
|
94
|
+
score += matches.length * 0.15;
|
|
95
|
+
// Find positions of matches
|
|
96
|
+
let lastIndex = 0;
|
|
97
|
+
for (const match of matches) {
|
|
98
|
+
const index = content.indexOf(match, lastIndex);
|
|
99
|
+
if (index !== -1) {
|
|
100
|
+
segments.push({
|
|
101
|
+
start: index,
|
|
102
|
+
end: index + match.length,
|
|
103
|
+
language,
|
|
104
|
+
content: match,
|
|
105
|
+
confidence: 0.8,
|
|
106
|
+
});
|
|
107
|
+
lastIndex = index + match.length;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Check keywords
|
|
113
|
+
for (const keyword of config.keywords) {
|
|
114
|
+
const keywordLower = keyword.toLowerCase();
|
|
115
|
+
// Match whole words only
|
|
116
|
+
const regex = new RegExp(`\\b${this.escapeRegex(keywordLower)}\\b`, 'gi');
|
|
117
|
+
const matches = contentLower.match(regex);
|
|
118
|
+
if (matches) {
|
|
119
|
+
score += matches.length * 0.05;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Normalize score (cap at 1)
|
|
123
|
+
score = Math.min(1, score);
|
|
124
|
+
// Merge overlapping segments
|
|
125
|
+
const mergedSegments = this.mergeSegments(segments);
|
|
126
|
+
return { score, segments: mergedSegments };
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check if content is likely natural language (not code)
|
|
130
|
+
*/
|
|
131
|
+
isLikelyNaturalLanguage(content) {
|
|
132
|
+
// Check for common indicators of natural language
|
|
133
|
+
const sentencePattern = /[.!?]\s+[A-Z]/g;
|
|
134
|
+
const sentences = content.match(sentencePattern)?.length || 0;
|
|
135
|
+
// Check for lack of code indicators
|
|
136
|
+
const codeIndicators = /[{}();=<>]|\bfunction\b|\bclass\b|\bdef\b|\bimport\b|\bexport\b/g;
|
|
137
|
+
const codeMatches = content.match(codeIndicators)?.length || 0;
|
|
138
|
+
// Natural language has more sentences than code indicators
|
|
139
|
+
return sentences > codeMatches || (sentences > 2 && codeMatches < 5);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Determine the primary language
|
|
143
|
+
*/
|
|
144
|
+
determinePrimaryLanguage(detected) {
|
|
145
|
+
if (detected.length === 0) {
|
|
146
|
+
return { language: 'unknown', confidence: 0 };
|
|
147
|
+
}
|
|
148
|
+
// If multiple languages with similar confidence, it's mixed
|
|
149
|
+
if (detected.length > 1 && detected[0].confidence < 0.6 &&
|
|
150
|
+
detected[1].confidence > detected[0].confidence * 0.5) {
|
|
151
|
+
return { language: 'mixed', confidence: detected[0].confidence };
|
|
152
|
+
}
|
|
153
|
+
return { language: detected[0].language, confidence: detected[0].confidence };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Merge overlapping segments
|
|
157
|
+
*/
|
|
158
|
+
mergeSegments(segments) {
|
|
159
|
+
if (segments.length <= 1)
|
|
160
|
+
return segments;
|
|
161
|
+
// Sort by start position
|
|
162
|
+
segments.sort((a, b) => a.start - b.start);
|
|
163
|
+
const merged = [];
|
|
164
|
+
let current = segments[0];
|
|
165
|
+
for (let i = 1; i < segments.length; i++) {
|
|
166
|
+
const next = segments[i];
|
|
167
|
+
if (next.start <= current.end) {
|
|
168
|
+
// Overlapping - merge
|
|
169
|
+
current = {
|
|
170
|
+
start: current.start,
|
|
171
|
+
end: Math.max(current.end, next.end),
|
|
172
|
+
language: current.language,
|
|
173
|
+
content: current.content + next.content.slice(Math.max(0, current.end - next.start)),
|
|
174
|
+
confidence: Math.max(current.confidence, next.confidence),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
merged.push(current);
|
|
179
|
+
current = next;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
merged.push(current);
|
|
183
|
+
return merged;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Escape regex special characters
|
|
187
|
+
*/
|
|
188
|
+
escapeRegex(str) {
|
|
189
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Check if content is a specific language type
|
|
193
|
+
*/
|
|
194
|
+
isLanguage(content, language) {
|
|
195
|
+
const detection = this.detectLanguage(content, language);
|
|
196
|
+
return detection.score > 0.3;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Check if content contains code
|
|
200
|
+
*/
|
|
201
|
+
containsCode(content) {
|
|
202
|
+
const codeLanguages = [
|
|
203
|
+
'javascript', 'typescript', 'python', 'sql', 'java', 'csharp', 'go', 'rust',
|
|
204
|
+
'ruby', 'php', 'swift', 'kotlin', 'bash', 'powershell',
|
|
205
|
+
];
|
|
206
|
+
for (const lang of codeLanguages) {
|
|
207
|
+
if (this.isLanguage(content, lang)) {
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Extract code blocks from content
|
|
215
|
+
*/
|
|
216
|
+
extractCodeBlocks(content) {
|
|
217
|
+
const blocks = [];
|
|
218
|
+
// Match fenced code blocks (```language ... ```)
|
|
219
|
+
const fencedRegex = /```(\w+)?\s*\n([\s\S]*?)```/g;
|
|
220
|
+
let match;
|
|
221
|
+
while ((match = fencedRegex.exec(content)) !== null) {
|
|
222
|
+
const language = match[1] || 'unknown';
|
|
223
|
+
const code = match[2];
|
|
224
|
+
blocks.push({
|
|
225
|
+
language,
|
|
226
|
+
code,
|
|
227
|
+
start: match.index,
|
|
228
|
+
end: match.index + match[0].length,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
// Match indented code blocks (4 spaces or tab)
|
|
232
|
+
const indentedRegex = /(?:^|\n)((?:(?: |\t).+\n?)+)/g;
|
|
233
|
+
while ((match = indentedRegex.exec(content)) !== null) {
|
|
234
|
+
const code = match[1].replace(/^( |\t)/gm, '');
|
|
235
|
+
// Detect language of this block
|
|
236
|
+
const detection = this.detectLanguages(code);
|
|
237
|
+
const language = detection[0]?.language || 'unknown';
|
|
238
|
+
blocks.push({
|
|
239
|
+
language,
|
|
240
|
+
code,
|
|
241
|
+
start: match.index,
|
|
242
|
+
end: match.index + match[0].length,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
return blocks;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/language/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dōmere - The Judge Protocol
|
|
3
|
+
* Language Module
|
|
4
|
+
*/
|
|
5
|
+
export { LanguageDetector } from './detector.js';
|
|
6
|
+
export { SemanticAnalyzer } from './semantic.js';
|
|
7
|
+
export { CodeAnalyzer } from './code-analyzer.js';
|
|
8
|
+
export { NLAnalyzer } from './nl-analyzer.js';
|
|
9
|
+
import type { LanguageAnalysis, LanguageType } from '../types.js';
|
|
10
|
+
export declare class LanguageAnalyzerService {
|
|
11
|
+
private detector;
|
|
12
|
+
private semantic;
|
|
13
|
+
private code;
|
|
14
|
+
private nl;
|
|
15
|
+
constructor();
|
|
16
|
+
/**
|
|
17
|
+
* Perform complete language analysis
|
|
18
|
+
*/
|
|
19
|
+
analyze(content: string): LanguageAnalysis;
|
|
20
|
+
/**
|
|
21
|
+
* Quick language detection
|
|
22
|
+
*/
|
|
23
|
+
detectLanguage(content: string): {
|
|
24
|
+
language: LanguageType;
|
|
25
|
+
confidence: number;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Check if content contains code
|
|
29
|
+
*/
|
|
30
|
+
containsCode(content: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Analyze code specifically
|
|
33
|
+
*/
|
|
34
|
+
analyzeCode(code: string, language?: LanguageType): import("../types.js").CodeAnalysis;
|
|
35
|
+
/**
|
|
36
|
+
* Check for injection attempts
|
|
37
|
+
*/
|
|
38
|
+
checkInjection(content: string): import("../types.js").NLAnalysis;
|
|
39
|
+
/**
|
|
40
|
+
* Get injection risk score
|
|
41
|
+
*/
|
|
42
|
+
getInjectionRisk(content: string): number;
|
|
43
|
+
/**
|
|
44
|
+
* Extract entities
|
|
45
|
+
*/
|
|
46
|
+
extractEntities(content: string): import("../types.js").ExtractedEntity[];
|
|
47
|
+
/**
|
|
48
|
+
* Classify intent
|
|
49
|
+
*/
|
|
50
|
+
classifyIntent(content: string): import("../types.js").IntentClassification;
|
|
51
|
+
/**
|
|
52
|
+
* Extract code blocks from mixed content
|
|
53
|
+
*/
|
|
54
|
+
extractCodeBlocks(content: string): {
|
|
55
|
+
language: string;
|
|
56
|
+
code: string;
|
|
57
|
+
start: number;
|
|
58
|
+
end: number;
|
|
59
|
+
}[];
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/language/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAUlE,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,EAAE,CAAa;;IASvB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAgC1C;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,YAAY,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAQ/E;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY;IAKjD;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM;IAI9B;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIzC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM;IAI/B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM;IAI9B;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM;;;;;;CAGlC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dōmere - The Judge Protocol
|
|
3
|
+
* Language Module
|
|
4
|
+
*/
|
|
5
|
+
export { LanguageDetector } from './detector.js';
|
|
6
|
+
export { SemanticAnalyzer } from './semantic.js';
|
|
7
|
+
export { CodeAnalyzer } from './code-analyzer.js';
|
|
8
|
+
export { NLAnalyzer } from './nl-analyzer.js';
|
|
9
|
+
import { LanguageDetector } from './detector.js';
|
|
10
|
+
import { SemanticAnalyzer } from './semantic.js';
|
|
11
|
+
import { CodeAnalyzer } from './code-analyzer.js';
|
|
12
|
+
import { NLAnalyzer } from './nl-analyzer.js';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Unified Language Analyzer
|
|
15
|
+
// ============================================================================
|
|
16
|
+
export class LanguageAnalyzerService {
|
|
17
|
+
detector;
|
|
18
|
+
semantic;
|
|
19
|
+
code;
|
|
20
|
+
nl;
|
|
21
|
+
constructor() {
|
|
22
|
+
this.detector = new LanguageDetector();
|
|
23
|
+
this.semantic = new SemanticAnalyzer();
|
|
24
|
+
this.code = new CodeAnalyzer();
|
|
25
|
+
this.nl = new NLAnalyzer();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Perform complete language analysis
|
|
29
|
+
*/
|
|
30
|
+
analyze(content) {
|
|
31
|
+
// First detect languages
|
|
32
|
+
const detection = this.detector.detect(content);
|
|
33
|
+
// Build full analysis
|
|
34
|
+
const analysis = {
|
|
35
|
+
...detection,
|
|
36
|
+
};
|
|
37
|
+
// Add semantic analysis
|
|
38
|
+
analysis.semantic = this.semantic.analyze(content);
|
|
39
|
+
// Add code analysis if code detected
|
|
40
|
+
const codeLanguages = [
|
|
41
|
+
'javascript', 'typescript', 'python', 'sql', 'java', 'csharp', 'go', 'rust',
|
|
42
|
+
'ruby', 'php', 'swift', 'kotlin', 'bash', 'powershell',
|
|
43
|
+
];
|
|
44
|
+
if (codeLanguages.includes(detection.primary_language)) {
|
|
45
|
+
analysis.code_analysis = this.code.analyze(content, detection.primary_language);
|
|
46
|
+
}
|
|
47
|
+
// Add NL analysis for natural language or mixed content
|
|
48
|
+
const nlLanguages = ['english', 'spanish', 'french', 'german', 'chinese', 'japanese', 'mixed', 'unknown'];
|
|
49
|
+
if (nlLanguages.includes(detection.primary_language) ||
|
|
50
|
+
detection.detected_languages.some(d => nlLanguages.includes(d.language))) {
|
|
51
|
+
analysis.nl_analysis = this.nl.analyze(content);
|
|
52
|
+
}
|
|
53
|
+
return analysis;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Quick language detection
|
|
57
|
+
*/
|
|
58
|
+
detectLanguage(content) {
|
|
59
|
+
const detection = this.detector.detect(content);
|
|
60
|
+
return {
|
|
61
|
+
language: detection.primary_language,
|
|
62
|
+
confidence: detection.confidence,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if content contains code
|
|
67
|
+
*/
|
|
68
|
+
containsCode(content) {
|
|
69
|
+
return this.detector.containsCode(content);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Analyze code specifically
|
|
73
|
+
*/
|
|
74
|
+
analyzeCode(code, language) {
|
|
75
|
+
const lang = language || this.detectLanguage(code).language;
|
|
76
|
+
return this.code.analyze(code, lang);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check for injection attempts
|
|
80
|
+
*/
|
|
81
|
+
checkInjection(content) {
|
|
82
|
+
return this.nl.analyze(content);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get injection risk score
|
|
86
|
+
*/
|
|
87
|
+
getInjectionRisk(content) {
|
|
88
|
+
return this.nl.getInjectionRiskScore(content);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Extract entities
|
|
92
|
+
*/
|
|
93
|
+
extractEntities(content) {
|
|
94
|
+
return this.semantic.extractEntities(content);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Classify intent
|
|
98
|
+
*/
|
|
99
|
+
classifyIntent(content) {
|
|
100
|
+
return this.semantic.classifyIntent(content);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Extract code blocks from mixed content
|
|
104
|
+
*/
|
|
105
|
+
extractCodeBlocks(content) {
|
|
106
|
+
return this.detector.extractCodeBlocks(content);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/language/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dōmere - The Judge Protocol
|
|
3
|
+
* Natural Language Analysis (Prompt Injection Detection)
|
|
4
|
+
*/
|
|
5
|
+
import type { NLAnalysis, ManipulationIndicator, HiddenInstruction } from '../types.js';
|
|
6
|
+
export declare class NLAnalyzer {
|
|
7
|
+
/**
|
|
8
|
+
* Analyze natural language for manipulation attempts
|
|
9
|
+
*/
|
|
10
|
+
analyze(content: string): NLAnalysis;
|
|
11
|
+
/**
|
|
12
|
+
* Detect manipulation attempts
|
|
13
|
+
*/
|
|
14
|
+
detectManipulation(content: string): ManipulationIndicator[];
|
|
15
|
+
/**
|
|
16
|
+
* Calculate manipulation score
|
|
17
|
+
*/
|
|
18
|
+
calculateManipulationScore(indicators: ManipulationIndicator[]): number;
|
|
19
|
+
/**
|
|
20
|
+
* Detect authority claims
|
|
21
|
+
*/
|
|
22
|
+
detectAuthorityClaims(content: string): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Detect instruction override attempts
|
|
25
|
+
*/
|
|
26
|
+
detectInstructionOverrides(content: string): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Detect hidden instructions (encoded, obfuscated)
|
|
29
|
+
*/
|
|
30
|
+
detectHiddenInstructions(content: string): HiddenInstruction[];
|
|
31
|
+
/**
|
|
32
|
+
* Detect jailbreak attempts
|
|
33
|
+
*/
|
|
34
|
+
detectJailbreak(content: string): {
|
|
35
|
+
jailbreakScore: number;
|
|
36
|
+
jailbreakPatterns: string[];
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Calculate overall risk level
|
|
40
|
+
*/
|
|
41
|
+
private calculateRiskLevel;
|
|
42
|
+
/**
|
|
43
|
+
* Check if decoded content looks like an instruction
|
|
44
|
+
*/
|
|
45
|
+
private looksLikeInstruction;
|
|
46
|
+
/**
|
|
47
|
+
* Get description for pattern type
|
|
48
|
+
*/
|
|
49
|
+
private getPatternDescription;
|
|
50
|
+
/**
|
|
51
|
+
* Quick check for injection
|
|
52
|
+
*/
|
|
53
|
+
isInjectionAttempt(content: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Get injection risk score (0-1)
|
|
56
|
+
*/
|
|
57
|
+
getInjectionRiskScore(content: string): number;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=nl-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nl-analyzer.d.ts","sourceRoot":"","sources":["../../src/language/nl-analyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAOrB,qBAAa,UAAU;IACrB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IA6BpC;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE;IA2C5D;;OAEG;IACH,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,EAAE,GAAG,MAAM;IAavE;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAwBhD;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IA0BrD;;OAEG;IACH,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,EAAE;IA6G9D;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;KAAE;IAqDzF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK5C;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAI/C"}
|