@nahisaho/musubix-synthesis 2.1.0 → 2.2.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/dist/EnhancedPBESynthesizer.d.ts +182 -0
- package/dist/EnhancedPBESynthesizer.d.ts.map +1 -0
- package/dist/EnhancedPBESynthesizer.js +266 -0
- package/dist/EnhancedPBESynthesizer.js.map +1 -0
- package/dist/analysis/ExampleAnalyzer.d.ts +81 -0
- package/dist/analysis/ExampleAnalyzer.d.ts.map +1 -0
- package/dist/analysis/ExampleAnalyzer.js +358 -0
- package/dist/analysis/ExampleAnalyzer.js.map +1 -0
- package/dist/analysis/index.d.ts +9 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +8 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/dsl/DSLExtender.d.ts +79 -0
- package/dist/dsl/DSLExtender.d.ts.map +1 -0
- package/dist/dsl/DSLExtender.js +312 -0
- package/dist/dsl/DSLExtender.js.map +1 -0
- package/dist/dsl/index.d.ts +2 -0
- package/dist/dsl/index.d.ts.map +1 -1
- package/dist/dsl/index.js +2 -0
- package/dist/dsl/index.js.map +1 -1
- package/dist/explain/ExplanationGenerator.d.ts +91 -0
- package/dist/explain/ExplanationGenerator.d.ts.map +1 -0
- package/dist/explain/ExplanationGenerator.js +236 -0
- package/dist/explain/ExplanationGenerator.js.map +1 -0
- package/dist/explain/index.d.ts +7 -0
- package/dist/explain/index.d.ts.map +1 -0
- package/dist/explain/index.js +7 -0
- package/dist/explain/index.js.map +1 -0
- package/dist/index.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/meta/MetaLearningEngine.d.ts +106 -0
- package/dist/meta/MetaLearningEngine.d.ts.map +1 -0
- package/dist/meta/MetaLearningEngine.js +196 -0
- package/dist/meta/MetaLearningEngine.js.map +1 -0
- package/dist/meta/__tests__/MetaLearningEngine.test.d.ts +8 -0
- package/dist/meta/__tests__/MetaLearningEngine.test.d.ts.map +1 -0
- package/dist/meta/__tests__/MetaLearningEngine.test.js +244 -0
- package/dist/meta/__tests__/MetaLearningEngine.test.js.map +1 -0
- package/dist/meta/index.d.ts +9 -0
- package/dist/meta/index.d.ts.map +1 -0
- package/dist/meta/index.js +8 -0
- package/dist/meta/index.js.map +1 -0
- package/dist/versionspace/EnhancedVersionSpace.d.ts +170 -0
- package/dist/versionspace/EnhancedVersionSpace.d.ts.map +1 -0
- package/dist/versionspace/EnhancedVersionSpace.js +265 -0
- package/dist/versionspace/EnhancedVersionSpace.js.map +1 -0
- package/dist/versionspace/index.d.ts +7 -0
- package/dist/versionspace/index.d.ts.map +1 -0
- package/dist/versionspace/index.js +6 -0
- package/dist/versionspace/index.js.map +1 -0
- package/dist/witness/EnhancedWitnessEngine.d.ts +108 -0
- package/dist/witness/EnhancedWitnessEngine.d.ts.map +1 -0
- package/dist/witness/EnhancedWitnessEngine.js +555 -0
- package/dist/witness/EnhancedWitnessEngine.js.map +1 -0
- package/dist/witness/index.d.ts +6 -0
- package/dist/witness/index.d.ts.map +1 -0
- package/dist/witness/index.js +6 -0
- package/dist/witness/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EnhancedVersionSpace - Extended Version Space Algebra
|
|
3
|
+
* @module @nahisaho/musubix-synthesis
|
|
4
|
+
* @see TSK-SY-102
|
|
5
|
+
* @see DES-SY-102
|
|
6
|
+
* @see REQ-SYN-002
|
|
7
|
+
*
|
|
8
|
+
* Version Space Algebra拡張による効率的な仮説空間管理
|
|
9
|
+
* - 信頼度ベースのポイント管理
|
|
10
|
+
* - 複数のマージ戦略(intersection, union)
|
|
11
|
+
* - 圧縮・折りたたみ機能
|
|
12
|
+
* - 遅延評価サポート
|
|
13
|
+
*/
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Default Implementation
|
|
16
|
+
// =============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Default implementation of EnhancedVersionSpace
|
|
19
|
+
*/
|
|
20
|
+
class DefaultEnhancedVersionSpace {
|
|
21
|
+
config;
|
|
22
|
+
points;
|
|
23
|
+
mergeCount;
|
|
24
|
+
collapseCount;
|
|
25
|
+
constructor(config = {}) {
|
|
26
|
+
this.config = {
|
|
27
|
+
maxPoints: config.maxPoints ?? 1000,
|
|
28
|
+
enableCompression: config.enableCompression ?? true,
|
|
29
|
+
mergeStrategy: config.mergeStrategy ?? 'intersection',
|
|
30
|
+
enableLazyEvaluation: config.enableLazyEvaluation ?? true,
|
|
31
|
+
};
|
|
32
|
+
this.points = new Map();
|
|
33
|
+
this.mergeCount = 0;
|
|
34
|
+
this.collapseCount = 0;
|
|
35
|
+
}
|
|
36
|
+
add(point) {
|
|
37
|
+
// Check capacity
|
|
38
|
+
if (this.points.size >= this.config.maxPoints) {
|
|
39
|
+
// Evict lowest confidence point
|
|
40
|
+
this.evictLowestConfidence();
|
|
41
|
+
}
|
|
42
|
+
// Add the point
|
|
43
|
+
this.points.set(point.id, { ...point });
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
get(id) {
|
|
47
|
+
const point = this.points.get(id);
|
|
48
|
+
return point ? { ...point } : undefined;
|
|
49
|
+
}
|
|
50
|
+
remove(id) {
|
|
51
|
+
return this.points.delete(id);
|
|
52
|
+
}
|
|
53
|
+
size() {
|
|
54
|
+
return this.points.size;
|
|
55
|
+
}
|
|
56
|
+
merge(other, strategy) {
|
|
57
|
+
const mergeStrategy = strategy ?? this.config.mergeStrategy;
|
|
58
|
+
const result = new DefaultEnhancedVersionSpace(this.config);
|
|
59
|
+
// Get all programs from both spaces
|
|
60
|
+
const thisPrograms = this.getAllPrograms();
|
|
61
|
+
const otherPrograms = other.getAllPrograms();
|
|
62
|
+
if (mergeStrategy === 'union') {
|
|
63
|
+
// Union: add all points from both spaces
|
|
64
|
+
for (const point of thisPrograms) {
|
|
65
|
+
result.add(point);
|
|
66
|
+
}
|
|
67
|
+
for (const point of otherPrograms) {
|
|
68
|
+
if (!result.get(point.id)) {
|
|
69
|
+
result.add(point);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Intersection: only add points present in both or with matching programs
|
|
75
|
+
const otherProgramSet = new Set(otherPrograms.map((p) => p.program));
|
|
76
|
+
const thisProgramSet = new Set(thisPrograms.map((p) => p.program));
|
|
77
|
+
for (const point of thisPrograms) {
|
|
78
|
+
if (otherProgramSet.has(point.program)) {
|
|
79
|
+
result.add(point);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
for (const point of otherPrograms) {
|
|
83
|
+
if (thisProgramSet.has(point.program) && !result.get(point.id)) {
|
|
84
|
+
result.add(point);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// If intersection is empty, keep the highest confidence from each
|
|
88
|
+
if (result.size() === 0) {
|
|
89
|
+
const best1 = this.getBestProgram();
|
|
90
|
+
const best2 = other.getBestProgram();
|
|
91
|
+
if (best1)
|
|
92
|
+
result.add(best1);
|
|
93
|
+
if (best2 && !result.get(best2.id))
|
|
94
|
+
result.add(best2);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
this.mergeCount++;
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
collapse() {
|
|
101
|
+
if (!this.config.enableCompression) {
|
|
102
|
+
return 0;
|
|
103
|
+
}
|
|
104
|
+
// Group by program text
|
|
105
|
+
const groups = new Map();
|
|
106
|
+
for (const point of this.points.values()) {
|
|
107
|
+
const existing = groups.get(point.program);
|
|
108
|
+
if (existing) {
|
|
109
|
+
existing.push(point);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
groups.set(point.program, [point]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Collapse groups into single points with merged confidence
|
|
116
|
+
let collapsedCount = 0;
|
|
117
|
+
for (const [_program, group] of groups) {
|
|
118
|
+
if (group.length > 1) {
|
|
119
|
+
// Keep the one with highest confidence, merge examples
|
|
120
|
+
group.sort((a, b) => b.confidence - a.confidence);
|
|
121
|
+
const kept = group[0];
|
|
122
|
+
// Merge examples from all points
|
|
123
|
+
const allExamples = [];
|
|
124
|
+
for (const point of group) {
|
|
125
|
+
allExamples.push(...point.examples);
|
|
126
|
+
}
|
|
127
|
+
kept.examples = this.deduplicateExamples(allExamples);
|
|
128
|
+
// Update confidence (weighted average)
|
|
129
|
+
const totalConf = group.reduce((sum, p) => sum + p.confidence, 0);
|
|
130
|
+
kept.confidence = totalConf / group.length;
|
|
131
|
+
// Remove duplicates
|
|
132
|
+
for (let i = 1; i < group.length; i++) {
|
|
133
|
+
this.points.delete(group[i].id);
|
|
134
|
+
collapsedCount++;
|
|
135
|
+
}
|
|
136
|
+
// Update the kept point
|
|
137
|
+
this.points.set(kept.id, kept);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (collapsedCount > 0) {
|
|
141
|
+
this.collapseCount++;
|
|
142
|
+
}
|
|
143
|
+
return collapsedCount;
|
|
144
|
+
}
|
|
145
|
+
filterByConfidence(minConfidence) {
|
|
146
|
+
return Array.from(this.points.values()).filter((p) => p.confidence >= minConfidence);
|
|
147
|
+
}
|
|
148
|
+
getBestProgram() {
|
|
149
|
+
if (this.points.size === 0) {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
let best;
|
|
153
|
+
for (const point of this.points.values()) {
|
|
154
|
+
if (!best || point.confidence > best.confidence) {
|
|
155
|
+
best = point;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return best ? { ...best } : undefined;
|
|
159
|
+
}
|
|
160
|
+
getAllPrograms() {
|
|
161
|
+
return Array.from(this.points.values())
|
|
162
|
+
.sort((a, b) => b.confidence - a.confidence)
|
|
163
|
+
.map((p) => ({ ...p }));
|
|
164
|
+
}
|
|
165
|
+
getStatistics() {
|
|
166
|
+
const points = Array.from(this.points.values());
|
|
167
|
+
if (points.length === 0) {
|
|
168
|
+
return {
|
|
169
|
+
totalPoints: 0,
|
|
170
|
+
consistentPoints: 0,
|
|
171
|
+
mergeCount: this.mergeCount,
|
|
172
|
+
collapseCount: this.collapseCount,
|
|
173
|
+
averageConfidence: 0,
|
|
174
|
+
maxConfidence: 0,
|
|
175
|
+
minConfidence: 0,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
const consistentPoints = points.filter((p) => p.consistent).length;
|
|
179
|
+
const confidences = points.map((p) => p.confidence);
|
|
180
|
+
const avgConfidence = confidences.reduce((a, b) => a + b, 0) / confidences.length;
|
|
181
|
+
return {
|
|
182
|
+
totalPoints: points.length,
|
|
183
|
+
consistentPoints,
|
|
184
|
+
mergeCount: this.mergeCount,
|
|
185
|
+
collapseCount: this.collapseCount,
|
|
186
|
+
averageConfidence: avgConfidence,
|
|
187
|
+
maxConfidence: Math.max(...confidences),
|
|
188
|
+
minConfidence: Math.min(...confidences),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
clear() {
|
|
192
|
+
this.points.clear();
|
|
193
|
+
}
|
|
194
|
+
clone() {
|
|
195
|
+
const cloned = new DefaultEnhancedVersionSpace(this.config);
|
|
196
|
+
for (const point of this.points.values()) {
|
|
197
|
+
cloned.add({ ...point, examples: [...point.examples] });
|
|
198
|
+
}
|
|
199
|
+
cloned.mergeCount = this.mergeCount;
|
|
200
|
+
cloned.collapseCount = this.collapseCount;
|
|
201
|
+
return cloned;
|
|
202
|
+
}
|
|
203
|
+
toJSON() {
|
|
204
|
+
return JSON.stringify({
|
|
205
|
+
config: this.config,
|
|
206
|
+
points: Array.from(this.points.entries()),
|
|
207
|
+
mergeCount: this.mergeCount,
|
|
208
|
+
collapseCount: this.collapseCount,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
fromJSON(json) {
|
|
212
|
+
const data = JSON.parse(json);
|
|
213
|
+
if (data.points) {
|
|
214
|
+
this.points.clear();
|
|
215
|
+
for (const [id, point] of data.points) {
|
|
216
|
+
this.points.set(id, point);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (data.mergeCount !== undefined) {
|
|
220
|
+
this.mergeCount = data.mergeCount;
|
|
221
|
+
}
|
|
222
|
+
if (data.collapseCount !== undefined) {
|
|
223
|
+
this.collapseCount = data.collapseCount;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// =========================================================================
|
|
227
|
+
// Private Methods
|
|
228
|
+
// =========================================================================
|
|
229
|
+
evictLowestConfidence() {
|
|
230
|
+
let lowest;
|
|
231
|
+
for (const [id, point] of this.points.entries()) {
|
|
232
|
+
if (!lowest || point.confidence < lowest.confidence) {
|
|
233
|
+
lowest = { id, confidence: point.confidence };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (lowest) {
|
|
237
|
+
this.points.delete(lowest.id);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
deduplicateExamples(examples) {
|
|
241
|
+
const seen = new Set();
|
|
242
|
+
const result = [];
|
|
243
|
+
for (const ex of examples) {
|
|
244
|
+
const key = JSON.stringify(ex);
|
|
245
|
+
if (!seen.has(key)) {
|
|
246
|
+
seen.add(key);
|
|
247
|
+
result.push(ex);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// =============================================================================
|
|
254
|
+
// Factory Function
|
|
255
|
+
// =============================================================================
|
|
256
|
+
/**
|
|
257
|
+
* Create an EnhancedVersionSpace instance
|
|
258
|
+
* @param config - Optional configuration
|
|
259
|
+
* @returns EnhancedVersionSpace instance
|
|
260
|
+
*/
|
|
261
|
+
export function createEnhancedVersionSpace(config = {}) {
|
|
262
|
+
return new DefaultEnhancedVersionSpace(config);
|
|
263
|
+
}
|
|
264
|
+
export { DefaultEnhancedVersionSpace };
|
|
265
|
+
//# sourceMappingURL=EnhancedVersionSpace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancedVersionSpace.js","sourceRoot":"","sources":["../../src/versionspace/EnhancedVersionSpace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Space module
|
|
3
|
+
* @module @nahisaho/musubix-synthesis/versionspace
|
|
4
|
+
*/
|
|
5
|
+
export { createEnhancedVersionSpace, DefaultEnhancedVersionSpace, } from './EnhancedVersionSpace.js';
|
|
6
|
+
export type { EnhancedVersionSpace, VersionSpaceConfig, VersionSpacePoint, VersionSpaceStatistics, MergeStrategy, Example, } from './EnhancedVersionSpace.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/versionspace/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,OAAO,GACR,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/versionspace/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EnhancedWitnessEngine - Extended Witness Function Engine
|
|
3
|
+
*
|
|
4
|
+
* Extends the base WitnessEngine with 20+ built-in witness functions
|
|
5
|
+
* for string, list, arithmetic, and conditional operations.
|
|
6
|
+
*
|
|
7
|
+
* @module @nahisaho/musubix-synthesis
|
|
8
|
+
* @see TSK-SY-101
|
|
9
|
+
* @see DES-SY-101
|
|
10
|
+
* @see REQ-SY-101
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { createEnhancedWitnessEngine } from './EnhancedWitnessEngine.js';
|
|
15
|
+
*
|
|
16
|
+
* const engine = createEnhancedWitnessEngine(dsl);
|
|
17
|
+
* const decomp = engine.decompose(spec, 'concat');
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import type { IDSL, WitnessFunction } from '../types.js';
|
|
21
|
+
import { WitnessEngine } from '../synthesis/WitnessEngine.js';
|
|
22
|
+
/**
|
|
23
|
+
* Configuration for enhanced witness engine
|
|
24
|
+
*/
|
|
25
|
+
export interface EnhancedWitnessConfig {
|
|
26
|
+
/** Enable string manipulation witnesses (default: true) */
|
|
27
|
+
enableStringWitnesses: boolean;
|
|
28
|
+
/** Enable list operation witnesses (default: true) */
|
|
29
|
+
enableListWitnesses: boolean;
|
|
30
|
+
/** Enable arithmetic witnesses (default: true) */
|
|
31
|
+
enableArithmeticWitnesses: boolean;
|
|
32
|
+
/** Enable conditional witnesses (default: true) */
|
|
33
|
+
enableConditionalWitnesses: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Witness category
|
|
37
|
+
*/
|
|
38
|
+
export type WitnessCategory = 'string' | 'list' | 'arithmetic' | 'conditional';
|
|
39
|
+
/**
|
|
40
|
+
* Extended witness function with category
|
|
41
|
+
*/
|
|
42
|
+
export interface ExtendedWitnessFunction extends WitnessFunction {
|
|
43
|
+
category?: WitnessCategory;
|
|
44
|
+
description?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Witness list item
|
|
48
|
+
*/
|
|
49
|
+
export interface WitnessListItem {
|
|
50
|
+
operator: string;
|
|
51
|
+
category: WitnessCategory | 'custom';
|
|
52
|
+
description?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Built-in witness functions (20+ total)
|
|
56
|
+
*/
|
|
57
|
+
export declare const BUILTIN_WITNESSES: ExtendedWitnessFunction[];
|
|
58
|
+
/**
|
|
59
|
+
* Enhanced Witness Engine with built-in witnesses
|
|
60
|
+
*/
|
|
61
|
+
export declare class EnhancedWitnessEngine extends WitnessEngine {
|
|
62
|
+
private readonly config;
|
|
63
|
+
private readonly customWitnesses;
|
|
64
|
+
private readonly witnessCategories;
|
|
65
|
+
constructor(dsl: IDSL, config?: Partial<EnhancedWitnessConfig>);
|
|
66
|
+
/**
|
|
67
|
+
* Register all built-in witnesses based on config
|
|
68
|
+
*/
|
|
69
|
+
private registerBuiltinWitnesses;
|
|
70
|
+
/**
|
|
71
|
+
* Check if witness should be registered based on config
|
|
72
|
+
*/
|
|
73
|
+
private shouldRegisterWitness;
|
|
74
|
+
/**
|
|
75
|
+
* Register a custom witness function
|
|
76
|
+
*/
|
|
77
|
+
registerWitness(witness: WitnessFunction): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get total count of registered witnesses
|
|
80
|
+
*/
|
|
81
|
+
getWitnessCount(): number;
|
|
82
|
+
/**
|
|
83
|
+
* Get witnesses by category
|
|
84
|
+
*/
|
|
85
|
+
getWitnessesByCategory(category: WitnessCategory | 'custom'): WitnessFunction[];
|
|
86
|
+
/**
|
|
87
|
+
* List all registered witnesses
|
|
88
|
+
*/
|
|
89
|
+
listWitnesses(): WitnessListItem[];
|
|
90
|
+
/**
|
|
91
|
+
* Serialize engine state to JSON
|
|
92
|
+
*/
|
|
93
|
+
toJSON(): string;
|
|
94
|
+
/**
|
|
95
|
+
* Restore engine state from JSON
|
|
96
|
+
* Note: Only restores configuration, not actual witness function implementations
|
|
97
|
+
*/
|
|
98
|
+
fromJSON(_json: string): void;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Create an EnhancedWitnessEngine instance
|
|
102
|
+
*
|
|
103
|
+
* @param dsl - The DSL to use for synthesis
|
|
104
|
+
* @param config - Optional configuration
|
|
105
|
+
* @returns EnhancedWitnessEngine instance
|
|
106
|
+
*/
|
|
107
|
+
export declare function createEnhancedWitnessEngine(dsl: IDSL, config?: Partial<EnhancedWitnessConfig>): EnhancedWitnessEngine;
|
|
108
|
+
//# sourceMappingURL=EnhancedWitnessEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancedWitnessEngine.d.ts","sourceRoot":"","sources":["../../src/witness/EnhancedWitnessEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,IAAI,EAEJ,eAAe,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAM9D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sDAAsD;IACtD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kDAAkD;IAClD,yBAAyB,EAAE,OAAO,CAAC;IACnC,mDAAmD;IACnD,0BAA0B,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,aAAa,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,GAAG,QAAQ,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA6BD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,uBAAuB,EAsXtD,CAAC;AAMF;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;IACjE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsD;gBAE5E,GAAG,EAAE,IAAI,EAAE,MAAM,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAMlE;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;OAEG;IACM,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAexD;;OAEG;IACH,eAAe,IAAI,MAAM;IAYzB;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,GAAG,eAAe,EAAE;IAgB/E;;OAEG;IACH,aAAa,IAAI,eAAe,EAAE;IAwBlC;;OAEG;IACH,MAAM,IAAI,MAAM;IAYhB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAI9B;AAMD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,IAAI,EACT,MAAM,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAC1C,qBAAqB,CAEvB"}
|