@nahisaho/musubix-neural-search 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/EnhancedNeuralSearchManager.d.ts +215 -0
- package/dist/EnhancedNeuralSearchManager.d.ts.map +1 -0
- package/dist/EnhancedNeuralSearchManager.js +307 -0
- package/dist/EnhancedNeuralSearchManager.js.map +1 -0
- package/dist/cache/EmbeddingCache.d.ts +93 -0
- package/dist/cache/EmbeddingCache.d.ts.map +1 -0
- package/dist/cache/EmbeddingCache.js +208 -0
- package/dist/cache/EmbeddingCache.js.map +1 -0
- package/dist/cache/index.d.ts +7 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +6 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/fusion/ModalFusion.d.ts +111 -0
- package/dist/fusion/ModalFusion.d.ts.map +1 -0
- package/dist/fusion/ModalFusion.js +127 -0
- package/dist/fusion/ModalFusion.js.map +1 -0
- package/dist/fusion/index.d.ts +6 -0
- package/dist/fusion/index.d.ts.map +1 -0
- package/dist/fusion/index.js +6 -0
- package/dist/fusion/index.js.map +1 -0
- package/dist/index.d.ts +14 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/learning/OnlineModelUpdater.d.ts +195 -0
- package/dist/learning/OnlineModelUpdater.d.ts.map +1 -0
- package/dist/learning/OnlineModelUpdater.js +231 -0
- package/dist/learning/OnlineModelUpdater.js.map +1 -0
- package/dist/learning/__tests__/OnlineModelUpdater.test.d.ts +9 -0
- package/dist/learning/__tests__/OnlineModelUpdater.test.d.ts.map +1 -0
- package/dist/learning/__tests__/OnlineModelUpdater.test.js +174 -0
- package/dist/learning/__tests__/OnlineModelUpdater.test.js.map +1 -0
- package/dist/learning/index.d.ts +2 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +2 -0
- package/dist/learning/index.js.map +1 -1
- package/dist/logging/TrajectoryLogger.d.ts +115 -0
- package/dist/logging/TrajectoryLogger.d.ts.map +1 -0
- package/dist/logging/TrajectoryLogger.js +128 -0
- package/dist/logging/TrajectoryLogger.js.map +1 -0
- package/dist/logging/index.d.ts +9 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +8 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/pruning/LearnedPruningPolicy.d.ts +129 -0
- package/dist/pruning/LearnedPruningPolicy.d.ts.map +1 -0
- package/dist/pruning/LearnedPruningPolicy.js +332 -0
- package/dist/pruning/LearnedPruningPolicy.js.map +1 -0
- package/dist/pruning/index.d.ts +6 -0
- package/dist/pruning/index.d.ts.map +1 -0
- package/dist/pruning/index.js +6 -0
- package/dist/pruning/index.js.map +1 -0
- package/dist/scorer/ContextAwareScorer.d.ts +126 -0
- package/dist/scorer/ContextAwareScorer.d.ts.map +1 -0
- package/dist/scorer/ContextAwareScorer.js +281 -0
- package/dist/scorer/ContextAwareScorer.js.map +1 -0
- package/dist/scorer/index.d.ts +2 -0
- package/dist/scorer/index.d.ts.map +1 -1
- package/dist/scorer/index.js +2 -0
- package/dist/scorer/index.js.map +1 -1
- package/dist/search/AdaptiveBeamSearch.d.ts +98 -0
- package/dist/search/AdaptiveBeamSearch.d.ts.map +1 -0
- package/dist/search/AdaptiveBeamSearch.js +240 -0
- package/dist/search/AdaptiveBeamSearch.js.map +1 -0
- package/dist/search/index.d.ts +2 -0
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +2 -0
- package/dist/search/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EnhancedNeuralSearchManager - v2.2.0 Integrated Neural Search
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @see TSK-NS-108
|
|
5
|
+
* @see DES-NS-108
|
|
6
|
+
*
|
|
7
|
+
* v2.2.0コンポーネントを統合したニューラル検索マネージャー
|
|
8
|
+
* - LearnedPruningPolicy: 学習ベースプルーニング
|
|
9
|
+
* - AdaptiveBeamSearch: 適応的ビーム検索
|
|
10
|
+
* - OnlineLearner: オンライン学習
|
|
11
|
+
*/
|
|
12
|
+
import { type LearnedPruningPolicy, type PolicyStatistics } from './pruning/index.js';
|
|
13
|
+
import { AdaptiveBeamSearch, type AdaptiveStatistics } from './search/index.js';
|
|
14
|
+
/**
|
|
15
|
+
* Configuration for EnhancedNeuralSearchManager
|
|
16
|
+
*/
|
|
17
|
+
export interface EnhancedNeuralSearchManagerConfig {
|
|
18
|
+
/** Enable online learning (default: false) */
|
|
19
|
+
enableLearning?: boolean;
|
|
20
|
+
/** Enable adaptive beam search (default: true) */
|
|
21
|
+
enableAdaptiveBeam?: boolean;
|
|
22
|
+
/** Maximum cache size */
|
|
23
|
+
maxCacheSize?: number;
|
|
24
|
+
/** Initial beam width */
|
|
25
|
+
initialBeamWidth?: number;
|
|
26
|
+
/** Learning rate for online updates */
|
|
27
|
+
learningRate?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Search candidate
|
|
31
|
+
*/
|
|
32
|
+
export interface SearchCandidate {
|
|
33
|
+
/** Unique identifier */
|
|
34
|
+
id: string;
|
|
35
|
+
/** Initial score */
|
|
36
|
+
score: number;
|
|
37
|
+
/** Feature vector */
|
|
38
|
+
features: number[];
|
|
39
|
+
/** Optional code snippet */
|
|
40
|
+
code?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Search request
|
|
44
|
+
*/
|
|
45
|
+
export interface SearchRequest {
|
|
46
|
+
/** Query string */
|
|
47
|
+
query: string;
|
|
48
|
+
/** Candidate items */
|
|
49
|
+
candidates: SearchCandidate[];
|
|
50
|
+
/** Maximum results to return */
|
|
51
|
+
maxResults: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Search result
|
|
55
|
+
*/
|
|
56
|
+
export interface SearchResult {
|
|
57
|
+
/** Returned results */
|
|
58
|
+
results: SearchCandidate[];
|
|
59
|
+
/** Total search time in ms */
|
|
60
|
+
searchTimeMs: number;
|
|
61
|
+
/** Number of candidates pruned */
|
|
62
|
+
prunedCount: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Beam search request
|
|
66
|
+
*/
|
|
67
|
+
export interface BeamSearchRequest<T> {
|
|
68
|
+
/** Initial state */
|
|
69
|
+
initialState: T;
|
|
70
|
+
/** Expand function */
|
|
71
|
+
expand: (state: T) => T[];
|
|
72
|
+
/** Score function */
|
|
73
|
+
score: (state: T) => number;
|
|
74
|
+
/** Goal test function */
|
|
75
|
+
isGoal: (state: T) => boolean;
|
|
76
|
+
/** Beam width */
|
|
77
|
+
beamWidth: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Beam search result
|
|
81
|
+
*/
|
|
82
|
+
export interface BeamSearchResult<T> {
|
|
83
|
+
/** Found solutions */
|
|
84
|
+
solutions: T[];
|
|
85
|
+
/** Search depth reached */
|
|
86
|
+
depth: number;
|
|
87
|
+
/** Total states explored */
|
|
88
|
+
statesExplored: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Combined search request
|
|
92
|
+
*/
|
|
93
|
+
export interface CombinedSearchRequest {
|
|
94
|
+
/** Query string */
|
|
95
|
+
query: string;
|
|
96
|
+
/** Candidate items */
|
|
97
|
+
candidates: SearchCandidate[];
|
|
98
|
+
/** Use neural scoring */
|
|
99
|
+
useNeural: boolean;
|
|
100
|
+
/** Use learned pruning */
|
|
101
|
+
useLearned: boolean;
|
|
102
|
+
/** Maximum results */
|
|
103
|
+
maxResults: number;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Search feedback
|
|
107
|
+
*/
|
|
108
|
+
export interface SearchFeedback {
|
|
109
|
+
/** Query identifier */
|
|
110
|
+
queryId: string;
|
|
111
|
+
/** Selected result ID */
|
|
112
|
+
selectedId: string;
|
|
113
|
+
/** Outcome of the selection */
|
|
114
|
+
outcome: 'success' | 'failure' | 'partial';
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Learning statistics
|
|
118
|
+
*/
|
|
119
|
+
export interface LearningStats {
|
|
120
|
+
/** Total feedback received */
|
|
121
|
+
totalFeedback: number;
|
|
122
|
+
/** Model update count */
|
|
123
|
+
modelUpdates: number;
|
|
124
|
+
/** Positive feedback rate */
|
|
125
|
+
positiveRate: number;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Search history entry
|
|
129
|
+
*/
|
|
130
|
+
export interface SearchHistoryEntry {
|
|
131
|
+
/** Query string */
|
|
132
|
+
query: string;
|
|
133
|
+
/** Number of results */
|
|
134
|
+
resultCount: number;
|
|
135
|
+
/** Search time in ms */
|
|
136
|
+
searchTimeMs: number;
|
|
137
|
+
/** Timestamp */
|
|
138
|
+
timestamp: number;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Enhanced statistics
|
|
142
|
+
*/
|
|
143
|
+
export interface EnhancedSearchStats {
|
|
144
|
+
/** Search statistics */
|
|
145
|
+
search: {
|
|
146
|
+
totalSearches: number;
|
|
147
|
+
averageTimeMs: number;
|
|
148
|
+
};
|
|
149
|
+
/** Pruning statistics */
|
|
150
|
+
pruning: PolicyStatistics;
|
|
151
|
+
/** Learning statistics */
|
|
152
|
+
learning: LearningStats;
|
|
153
|
+
/** Beam search statistics */
|
|
154
|
+
beam: AdaptiveStatistics;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* EnhancedNeuralSearchManager interface
|
|
158
|
+
*/
|
|
159
|
+
export interface EnhancedNeuralSearchManager {
|
|
160
|
+
getPruningPolicy(): LearnedPruningPolicy;
|
|
161
|
+
getAdaptiveBeamSearch(): AdaptiveBeamSearch;
|
|
162
|
+
search(request: SearchRequest): Promise<SearchResult>;
|
|
163
|
+
beamSearch<T>(request: BeamSearchRequest<T>): Promise<BeamSearchResult<T>>;
|
|
164
|
+
combinedSearch(request: CombinedSearchRequest): Promise<SearchResult>;
|
|
165
|
+
enableLearning(enabled: boolean): void;
|
|
166
|
+
isLearningEnabled(): boolean;
|
|
167
|
+
provideFeedback(feedback: SearchFeedback): Promise<void>;
|
|
168
|
+
updateModel(): Promise<void>;
|
|
169
|
+
getLearningStats(): LearningStats;
|
|
170
|
+
getAdaptiveStats(): AdaptiveStatistics;
|
|
171
|
+
getEnhancedStats(): EnhancedSearchStats;
|
|
172
|
+
getSearchHistory(limit: number): SearchHistoryEntry[];
|
|
173
|
+
toJSON(): string;
|
|
174
|
+
fromJSON(json: string): void;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Default EnhancedNeuralSearchManager implementation
|
|
178
|
+
*/
|
|
179
|
+
export declare class DefaultEnhancedNeuralSearchManager implements EnhancedNeuralSearchManager {
|
|
180
|
+
private config;
|
|
181
|
+
private pruningPolicy;
|
|
182
|
+
private adaptiveBeamSearch;
|
|
183
|
+
private learningEnabled;
|
|
184
|
+
private searchHistory;
|
|
185
|
+
private feedbackHistory;
|
|
186
|
+
private searchCount;
|
|
187
|
+
private totalSearchTimeMs;
|
|
188
|
+
private modelUpdateCount;
|
|
189
|
+
constructor(config?: EnhancedNeuralSearchManagerConfig);
|
|
190
|
+
getPruningPolicy(): LearnedPruningPolicy;
|
|
191
|
+
getAdaptiveBeamSearch(): AdaptiveBeamSearch;
|
|
192
|
+
search(request: SearchRequest): Promise<SearchResult>;
|
|
193
|
+
beamSearch<T>(request: BeamSearchRequest<T>): Promise<BeamSearchResult<T>>;
|
|
194
|
+
combinedSearch(request: CombinedSearchRequest): Promise<SearchResult>;
|
|
195
|
+
enableLearning(enabled: boolean): void;
|
|
196
|
+
isLearningEnabled(): boolean;
|
|
197
|
+
provideFeedback(feedback: SearchFeedback): Promise<void>;
|
|
198
|
+
updateModel(): Promise<void>;
|
|
199
|
+
getLearningStats(): LearningStats;
|
|
200
|
+
getAdaptiveStats(): AdaptiveStatistics;
|
|
201
|
+
getEnhancedStats(): EnhancedSearchStats;
|
|
202
|
+
getSearchHistory(limit: number): SearchHistoryEntry[];
|
|
203
|
+
toJSON(): string;
|
|
204
|
+
fromJSON(json: string): void;
|
|
205
|
+
private applyPruning;
|
|
206
|
+
private applyNeuralScoring;
|
|
207
|
+
private recordSearch;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Create an EnhancedNeuralSearchManager instance
|
|
211
|
+
* @param config - Optional configuration
|
|
212
|
+
* @returns EnhancedNeuralSearchManager instance
|
|
213
|
+
*/
|
|
214
|
+
export declare function createEnhancedNeuralSearchManager(config?: EnhancedNeuralSearchManagerConfig): EnhancedNeuralSearchManager;
|
|
215
|
+
//# sourceMappingURL=EnhancedNeuralSearchManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancedNeuralSearchManager.d.ts","sourceRoot":"","sources":["../src/EnhancedNeuralSearchManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAEtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAElB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAO3B;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,oBAAoB;IACpB,YAAY,EAAE,CAAC,CAAC;IAChB,sBAAsB;IACtB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1B,qBAAqB;IACrB,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IAC5B,yBAAyB;IACzB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IAC9B,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,sBAAsB;IACtB,SAAS,EAAE,CAAC,EAAE,CAAC;IACf,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,yBAAyB;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,MAAM,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,0BAA0B;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,6BAA6B;IAC7B,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAE1C,gBAAgB,IAAI,oBAAoB,CAAC;IACzC,qBAAqB,IAAI,kBAAkB,CAAC;IAG5C,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAGtE,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,iBAAiB,IAAI,OAAO,CAAC;IAC7B,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG7B,gBAAgB,IAAI,aAAa,CAAC;IAClC,gBAAgB,IAAI,kBAAkB,CAAC;IACvC,gBAAgB,IAAI,mBAAmB,CAAC;IACxC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAGtD,MAAM,IAAI,MAAM,CAAC;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAMD;;GAEG;AACH,qBAAa,kCAAmC,YAAW,2BAA2B;IACpF,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,kBAAkB,CAAqB;IAI/C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,MAAM,GAAE,iCAAsC;IA+B1D,gBAAgB,IAAI,oBAAoB;IAIxC,qBAAqB,IAAI,kBAAkB;IAQrC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAqBrD,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IA2C1E,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoC3E,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAItC,iBAAiB,IAAI,OAAO;IAItB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BxD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAelC,gBAAgB,IAAI,aAAa;IAWjC,gBAAgB,IAAI,kBAAkB;IAWtC,gBAAgB,IAAI,mBAAmB;IAYvC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAQrD,MAAM,IAAI,MAAM;IAUhB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAqB5B,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,YAAY;CAgBrB;AAMD;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,GAAE,iCAAsC,GAC7C,2BAA2B,CAE7B"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EnhancedNeuralSearchManager - v2.2.0 Integrated Neural Search
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @see TSK-NS-108
|
|
5
|
+
* @see DES-NS-108
|
|
6
|
+
*
|
|
7
|
+
* v2.2.0コンポーネントを統合したニューラル検索マネージャー
|
|
8
|
+
* - LearnedPruningPolicy: 学習ベースプルーニング
|
|
9
|
+
* - AdaptiveBeamSearch: 適応的ビーム検索
|
|
10
|
+
* - OnlineLearner: オンライン学習
|
|
11
|
+
*/
|
|
12
|
+
import { createLearnedPruningPolicy, } from './pruning/index.js';
|
|
13
|
+
import { AdaptiveBeamSearch, } from './search/index.js';
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Default Implementation
|
|
16
|
+
// =============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Default EnhancedNeuralSearchManager implementation
|
|
19
|
+
*/
|
|
20
|
+
export class DefaultEnhancedNeuralSearchManager {
|
|
21
|
+
config;
|
|
22
|
+
pruningPolicy;
|
|
23
|
+
adaptiveBeamSearch;
|
|
24
|
+
// OnlineLearner for future use
|
|
25
|
+
// private onlineLearner: OnlineLearner;
|
|
26
|
+
learningEnabled = false;
|
|
27
|
+
searchHistory = [];
|
|
28
|
+
feedbackHistory = [];
|
|
29
|
+
searchCount = 0;
|
|
30
|
+
totalSearchTimeMs = 0;
|
|
31
|
+
modelUpdateCount = 0;
|
|
32
|
+
constructor(config = {}) {
|
|
33
|
+
this.config = {
|
|
34
|
+
enableLearning: config.enableLearning ?? false,
|
|
35
|
+
enableAdaptiveBeam: config.enableAdaptiveBeam ?? true,
|
|
36
|
+
maxCacheSize: config.maxCacheSize ?? 1000,
|
|
37
|
+
initialBeamWidth: config.initialBeamWidth ?? 10,
|
|
38
|
+
learningRate: config.learningRate ?? 0.01,
|
|
39
|
+
};
|
|
40
|
+
this.learningEnabled = this.config.enableLearning;
|
|
41
|
+
// Initialize components
|
|
42
|
+
this.pruningPolicy = createLearnedPruningPolicy({
|
|
43
|
+
baseThreshold: 0.5,
|
|
44
|
+
learningRate: this.config.learningRate,
|
|
45
|
+
});
|
|
46
|
+
const beamConfig = {
|
|
47
|
+
initialBeamWidth: this.config.initialBeamWidth,
|
|
48
|
+
maxBeamWidth: 100,
|
|
49
|
+
stagnationThreshold: 10,
|
|
50
|
+
beamWidthIncrease: 0.5,
|
|
51
|
+
improvementThreshold: 0.001,
|
|
52
|
+
};
|
|
53
|
+
this.adaptiveBeamSearch = new AdaptiveBeamSearch(beamConfig);
|
|
54
|
+
}
|
|
55
|
+
// =========================================================================
|
|
56
|
+
// Component Access
|
|
57
|
+
// =========================================================================
|
|
58
|
+
getPruningPolicy() {
|
|
59
|
+
return this.pruningPolicy;
|
|
60
|
+
}
|
|
61
|
+
getAdaptiveBeamSearch() {
|
|
62
|
+
return this.adaptiveBeamSearch;
|
|
63
|
+
}
|
|
64
|
+
// =========================================================================
|
|
65
|
+
// Search Methods
|
|
66
|
+
// =========================================================================
|
|
67
|
+
async search(request) {
|
|
68
|
+
const startTime = Date.now();
|
|
69
|
+
// Apply learned pruning
|
|
70
|
+
const prunedCandidates = this.applyPruning(request.candidates);
|
|
71
|
+
const prunedCount = request.candidates.length - prunedCandidates.length;
|
|
72
|
+
// Sort by score and take top results
|
|
73
|
+
const sortedCandidates = [...prunedCandidates].sort((a, b) => b.score - a.score);
|
|
74
|
+
const results = sortedCandidates.slice(0, request.maxResults);
|
|
75
|
+
const searchTimeMs = Date.now() - startTime;
|
|
76
|
+
this.recordSearch(request.query, results.length, searchTimeMs);
|
|
77
|
+
return {
|
|
78
|
+
results,
|
|
79
|
+
searchTimeMs,
|
|
80
|
+
prunedCount,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
async beamSearch(request) {
|
|
84
|
+
const solutions = [];
|
|
85
|
+
let currentBeam = [request.initialState];
|
|
86
|
+
let depth = 0;
|
|
87
|
+
let statesExplored = 0;
|
|
88
|
+
const beamWidth = request.beamWidth;
|
|
89
|
+
while (currentBeam.length > 0 && depth < 100) {
|
|
90
|
+
const nextBeam = [];
|
|
91
|
+
for (const state of currentBeam) {
|
|
92
|
+
statesExplored++;
|
|
93
|
+
if (request.isGoal(state)) {
|
|
94
|
+
solutions.push(state);
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const expanded = request.expand(state);
|
|
98
|
+
for (const nextState of expanded) {
|
|
99
|
+
const score = request.score(nextState);
|
|
100
|
+
nextBeam.push({ state: nextState, score });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Sort and take top beam
|
|
104
|
+
nextBeam.sort((a, b) => b.score - a.score);
|
|
105
|
+
currentBeam = nextBeam.slice(0, beamWidth).map((item) => item.state);
|
|
106
|
+
depth++;
|
|
107
|
+
// Early termination if we have enough solutions
|
|
108
|
+
if (solutions.length >= beamWidth) {
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
solutions,
|
|
114
|
+
depth,
|
|
115
|
+
statesExplored,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
async combinedSearch(request) {
|
|
119
|
+
const startTime = Date.now();
|
|
120
|
+
let candidates = [...request.candidates];
|
|
121
|
+
let prunedCount = 0;
|
|
122
|
+
// Apply learned pruning if enabled
|
|
123
|
+
if (request.useLearned) {
|
|
124
|
+
const pruned = this.applyPruning(candidates);
|
|
125
|
+
prunedCount = candidates.length - pruned.length;
|
|
126
|
+
candidates = pruned;
|
|
127
|
+
}
|
|
128
|
+
// Apply neural scoring if enabled
|
|
129
|
+
if (request.useNeural) {
|
|
130
|
+
candidates = this.applyNeuralScoring(candidates, request.query);
|
|
131
|
+
}
|
|
132
|
+
// Sort and take top results
|
|
133
|
+
const results = candidates
|
|
134
|
+
.sort((a, b) => b.score - a.score)
|
|
135
|
+
.slice(0, request.maxResults);
|
|
136
|
+
const searchTimeMs = Date.now() - startTime;
|
|
137
|
+
this.recordSearch(request.query, results.length, searchTimeMs);
|
|
138
|
+
return {
|
|
139
|
+
results,
|
|
140
|
+
searchTimeMs,
|
|
141
|
+
prunedCount,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
// =========================================================================
|
|
145
|
+
// Learning Methods
|
|
146
|
+
// =========================================================================
|
|
147
|
+
enableLearning(enabled) {
|
|
148
|
+
this.learningEnabled = enabled;
|
|
149
|
+
}
|
|
150
|
+
isLearningEnabled() {
|
|
151
|
+
return this.learningEnabled;
|
|
152
|
+
}
|
|
153
|
+
async provideFeedback(feedback) {
|
|
154
|
+
if (!this.learningEnabled)
|
|
155
|
+
return;
|
|
156
|
+
this.feedbackHistory.push(feedback);
|
|
157
|
+
// Create proper PolicyUpdate for pruning policy
|
|
158
|
+
const dummyState = {
|
|
159
|
+
id: feedback.queryId,
|
|
160
|
+
code: feedback.selectedId,
|
|
161
|
+
depth: 0,
|
|
162
|
+
metadata: {},
|
|
163
|
+
};
|
|
164
|
+
const dummyContext = {
|
|
165
|
+
specification: feedback.queryId,
|
|
166
|
+
specEmbedding: new Float32Array(128),
|
|
167
|
+
constraints: [],
|
|
168
|
+
history: [],
|
|
169
|
+
};
|
|
170
|
+
const actualResult = feedback.outcome === 'partial' ? 'partial_success' : feedback.outcome;
|
|
171
|
+
const update = {
|
|
172
|
+
state: dummyState,
|
|
173
|
+
context: dummyContext,
|
|
174
|
+
outcome: feedback.outcome === 'success' ? 'correct' : 'incorrect',
|
|
175
|
+
actualResult,
|
|
176
|
+
};
|
|
177
|
+
this.pruningPolicy.updatePolicy(update);
|
|
178
|
+
}
|
|
179
|
+
async updateModel() {
|
|
180
|
+
if (!this.learningEnabled || this.feedbackHistory.length === 0)
|
|
181
|
+
return;
|
|
182
|
+
// Simple update simulation
|
|
183
|
+
// const _updateBatch = this.feedbackHistory.slice(0, 32);
|
|
184
|
+
// In production, would update model weights
|
|
185
|
+
this.modelUpdateCount++;
|
|
186
|
+
this.feedbackHistory = this.feedbackHistory.slice(32);
|
|
187
|
+
}
|
|
188
|
+
// =========================================================================
|
|
189
|
+
// Statistics
|
|
190
|
+
// =========================================================================
|
|
191
|
+
getLearningStats() {
|
|
192
|
+
const positiveCount = this.feedbackHistory.filter((f) => f.outcome === 'success').length;
|
|
193
|
+
const total = this.feedbackHistory.length;
|
|
194
|
+
return {
|
|
195
|
+
totalFeedback: total,
|
|
196
|
+
modelUpdates: this.modelUpdateCount,
|
|
197
|
+
positiveRate: total > 0 ? positiveCount / total : 0,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
getAdaptiveStats() {
|
|
201
|
+
// Return custom adaptive stats since internal method returns SearchStatistics
|
|
202
|
+
return {
|
|
203
|
+
currentBeamWidth: this.config.initialBeamWidth,
|
|
204
|
+
beamWidthAdjustments: 0,
|
|
205
|
+
stagnationCount: 0,
|
|
206
|
+
bestScore: 0,
|
|
207
|
+
iterationsSinceImprovement: 0,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
getEnhancedStats() {
|
|
211
|
+
return {
|
|
212
|
+
search: {
|
|
213
|
+
totalSearches: this.searchCount,
|
|
214
|
+
averageTimeMs: this.searchCount > 0 ? this.totalSearchTimeMs / this.searchCount : 0,
|
|
215
|
+
},
|
|
216
|
+
pruning: this.pruningPolicy.getStatistics(),
|
|
217
|
+
learning: this.getLearningStats(),
|
|
218
|
+
beam: this.getAdaptiveStats(),
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
getSearchHistory(limit) {
|
|
222
|
+
return this.searchHistory.slice(-limit);
|
|
223
|
+
}
|
|
224
|
+
// =========================================================================
|
|
225
|
+
// Serialization
|
|
226
|
+
// =========================================================================
|
|
227
|
+
toJSON() {
|
|
228
|
+
return JSON.stringify({
|
|
229
|
+
learningEnabled: this.learningEnabled,
|
|
230
|
+
searchCount: this.searchCount,
|
|
231
|
+
totalSearchTimeMs: this.totalSearchTimeMs,
|
|
232
|
+
modelUpdateCount: this.modelUpdateCount,
|
|
233
|
+
feedbackHistoryLength: this.feedbackHistory.length,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
fromJSON(json) {
|
|
237
|
+
const data = JSON.parse(json);
|
|
238
|
+
if (data.learningEnabled !== undefined) {
|
|
239
|
+
this.learningEnabled = data.learningEnabled;
|
|
240
|
+
}
|
|
241
|
+
if (data.searchCount !== undefined) {
|
|
242
|
+
this.searchCount = data.searchCount;
|
|
243
|
+
}
|
|
244
|
+
if (data.totalSearchTimeMs !== undefined) {
|
|
245
|
+
this.totalSearchTimeMs = data.totalSearchTimeMs;
|
|
246
|
+
}
|
|
247
|
+
if (data.modelUpdateCount !== undefined) {
|
|
248
|
+
this.modelUpdateCount = data.modelUpdateCount;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// =========================================================================
|
|
252
|
+
// Private Helpers
|
|
253
|
+
// =========================================================================
|
|
254
|
+
applyPruning(candidates) {
|
|
255
|
+
// Use learned pruning policy to filter candidates
|
|
256
|
+
const context = {
|
|
257
|
+
specification: '',
|
|
258
|
+
specEmbedding: new Float32Array(128),
|
|
259
|
+
constraints: [],
|
|
260
|
+
history: [],
|
|
261
|
+
};
|
|
262
|
+
return candidates.filter((candidate) => {
|
|
263
|
+
const state = {
|
|
264
|
+
id: candidate.id,
|
|
265
|
+
code: candidate.code ?? '',
|
|
266
|
+
depth: 0,
|
|
267
|
+
metadata: { score: candidate.score },
|
|
268
|
+
};
|
|
269
|
+
const decision = this.pruningPolicy.shouldPrune(state, context);
|
|
270
|
+
return !decision.prune;
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
applyNeuralScoring(candidates, _query) {
|
|
274
|
+
// Simple neural scoring simulation
|
|
275
|
+
// In production, would use actual neural embeddings
|
|
276
|
+
return candidates.map((c) => ({
|
|
277
|
+
...c,
|
|
278
|
+
score: c.score * (1 + Math.random() * 0.1), // Add small variation
|
|
279
|
+
}));
|
|
280
|
+
}
|
|
281
|
+
recordSearch(query, resultCount, searchTimeMs) {
|
|
282
|
+
this.searchCount++;
|
|
283
|
+
this.totalSearchTimeMs += searchTimeMs;
|
|
284
|
+
this.searchHistory.push({
|
|
285
|
+
query,
|
|
286
|
+
resultCount,
|
|
287
|
+
searchTimeMs,
|
|
288
|
+
timestamp: Date.now(),
|
|
289
|
+
});
|
|
290
|
+
// Limit history size
|
|
291
|
+
if (this.searchHistory.length > this.config.maxCacheSize) {
|
|
292
|
+
this.searchHistory = this.searchHistory.slice(-this.config.maxCacheSize);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// =============================================================================
|
|
297
|
+
// Factory Function
|
|
298
|
+
// =============================================================================
|
|
299
|
+
/**
|
|
300
|
+
* Create an EnhancedNeuralSearchManager instance
|
|
301
|
+
* @param config - Optional configuration
|
|
302
|
+
* @returns EnhancedNeuralSearchManager instance
|
|
303
|
+
*/
|
|
304
|
+
export function createEnhancedNeuralSearchManager(config = {}) {
|
|
305
|
+
return new DefaultEnhancedNeuralSearchManager(config);
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=EnhancedNeuralSearchManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancedNeuralSearchManager.js","sourceRoot":"","sources":["../src/EnhancedNeuralSearchManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EmbeddingCache - LRU Cache for Embeddings
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @see TSK-NS-105
|
|
5
|
+
* @see DES-NS-105
|
|
6
|
+
* @see REQ-NS-105
|
|
7
|
+
*
|
|
8
|
+
* LRUキャッシュ(最大10,000エントリ)
|
|
9
|
+
* - 80%以上のヒット率目標
|
|
10
|
+
* - TTLサポート
|
|
11
|
+
* - バッチ操作
|
|
12
|
+
*/
|
|
13
|
+
import type { Embedding } from '../types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Configuration for EmbeddingCache
|
|
16
|
+
*/
|
|
17
|
+
export interface EmbeddingCacheConfig {
|
|
18
|
+
/** Maximum number of entries (default: 10000) */
|
|
19
|
+
maxSize?: number;
|
|
20
|
+
/** Time-to-live in milliseconds (default: 0 = no expiry) */
|
|
21
|
+
ttlMs?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Cache statistics
|
|
25
|
+
*/
|
|
26
|
+
export interface CacheStatistics {
|
|
27
|
+
/** Current cache size */
|
|
28
|
+
size: number;
|
|
29
|
+
/** Maximum cache size */
|
|
30
|
+
maxSize: number;
|
|
31
|
+
/** Number of cache hits */
|
|
32
|
+
hits: number;
|
|
33
|
+
/** Number of cache misses */
|
|
34
|
+
misses: number;
|
|
35
|
+
/** Hit rate (0-1) */
|
|
36
|
+
hitRate: number;
|
|
37
|
+
/** Number of evictions */
|
|
38
|
+
evictions: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* EmbeddingCache interface
|
|
42
|
+
*/
|
|
43
|
+
export interface EmbeddingCache {
|
|
44
|
+
get(key: string): Embedding | undefined;
|
|
45
|
+
set(key: string, value: Embedding): void;
|
|
46
|
+
has(key: string): boolean;
|
|
47
|
+
delete(key: string): boolean;
|
|
48
|
+
clear(): void;
|
|
49
|
+
size(): number;
|
|
50
|
+
getMany(keys: string[]): Map<string, Embedding>;
|
|
51
|
+
setMany(entries: Map<string, Embedding>): void;
|
|
52
|
+
getHitRate(): number;
|
|
53
|
+
getStatistics(): CacheStatistics;
|
|
54
|
+
resetStatistics(): void;
|
|
55
|
+
toJSON(): string;
|
|
56
|
+
fromJSON(json: string): void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Default EmbeddingCache implementation using LRU eviction
|
|
60
|
+
*/
|
|
61
|
+
export declare class DefaultEmbeddingCache implements EmbeddingCache {
|
|
62
|
+
private config;
|
|
63
|
+
private cache;
|
|
64
|
+
private accessOrder;
|
|
65
|
+
private hits;
|
|
66
|
+
private misses;
|
|
67
|
+
private evictions;
|
|
68
|
+
constructor(config?: EmbeddingCacheConfig);
|
|
69
|
+
get(key: string): Embedding | undefined;
|
|
70
|
+
set(key: string, value: Embedding): void;
|
|
71
|
+
has(key: string): boolean;
|
|
72
|
+
delete(key: string): boolean;
|
|
73
|
+
clear(): void;
|
|
74
|
+
size(): number;
|
|
75
|
+
getMany(keys: string[]): Map<string, Embedding>;
|
|
76
|
+
setMany(entries: Map<string, Embedding>): void;
|
|
77
|
+
getHitRate(): number;
|
|
78
|
+
getStatistics(): CacheStatistics;
|
|
79
|
+
resetStatistics(): void;
|
|
80
|
+
toJSON(): string;
|
|
81
|
+
fromJSON(json: string): void;
|
|
82
|
+
private isExpired;
|
|
83
|
+
private evictLRU;
|
|
84
|
+
private updateAccessOrder;
|
|
85
|
+
private removeFromAccessOrder;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Create an EmbeddingCache instance
|
|
89
|
+
* @param config - Optional configuration
|
|
90
|
+
* @returns EmbeddingCache instance
|
|
91
|
+
*/
|
|
92
|
+
export declare function createEmbeddingCache(config?: EmbeddingCacheConfig): EmbeddingCache;
|
|
93
|
+
//# sourceMappingURL=EmbeddingCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddingCache.d.ts","sourceRoot":"","sources":["../../src/cache/EmbeddingCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,MAAM,CAAC;IAGf,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;IAG/C,UAAU,IAAI,MAAM,CAAC;IACrB,aAAa,IAAI,eAAe,CAAC;IACjC,eAAe,IAAI,IAAI,CAAC;IAGxB,MAAM,IAAI,MAAM,CAAC;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAMD;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,WAAW,CAAgB;IAGnC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAK;gBAEV,MAAM,GAAE,oBAAyB;IAW7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAuBvC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAuBxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAYzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5B,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,MAAM;IAQd,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAa/C,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAU9C,UAAU,IAAI,MAAM;IAMpB,aAAa,IAAI,eAAe;IAWhC,eAAe,IAAI,IAAI;IAUvB,MAAM,IAAI,MAAM;IAShB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAqB5B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,qBAAqB;CAM9B;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,GAAE,oBAAyB,GAChC,cAAc,CAEhB"}
|