@nahisaho/musubix-neural-search 2.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/README.md +55 -0
- package/dist/errors.d.ts +48 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +70 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/learning/ModelUpdater.d.ts +49 -0
- package/dist/learning/ModelUpdater.d.ts.map +1 -0
- package/dist/learning/ModelUpdater.js +98 -0
- package/dist/learning/ModelUpdater.js.map +1 -0
- package/dist/learning/OnlineLearner.d.ts +59 -0
- package/dist/learning/OnlineLearner.d.ts.map +1 -0
- package/dist/learning/OnlineLearner.js +155 -0
- package/dist/learning/OnlineLearner.js.map +1 -0
- package/dist/learning/TrajectoryLog.d.ts +52 -0
- package/dist/learning/TrajectoryLog.d.ts.map +1 -0
- package/dist/learning/TrajectoryLog.js +96 -0
- package/dist/learning/TrajectoryLog.js.map +1 -0
- package/dist/learning/index.d.ts +10 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +8 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/scorer/BranchScorer.d.ts +70 -0
- package/dist/scorer/BranchScorer.d.ts.map +1 -0
- package/dist/scorer/BranchScorer.js +161 -0
- package/dist/scorer/BranchScorer.js.map +1 -0
- package/dist/scorer/ContextEncoder.d.ts +59 -0
- package/dist/scorer/ContextEncoder.d.ts.map +1 -0
- package/dist/scorer/ContextEncoder.js +149 -0
- package/dist/scorer/ContextEncoder.js.map +1 -0
- package/dist/scorer/EmbeddingModel.d.ts +39 -0
- package/dist/scorer/EmbeddingModel.d.ts.map +1 -0
- package/dist/scorer/EmbeddingModel.js +104 -0
- package/dist/scorer/EmbeddingModel.js.map +1 -0
- package/dist/scorer/index.d.ts +9 -0
- package/dist/scorer/index.d.ts.map +1 -0
- package/dist/scorer/index.js +8 -0
- package/dist/scorer/index.js.map +1 -0
- package/dist/search/BeamSearch.d.ts +32 -0
- package/dist/search/BeamSearch.d.ts.map +1 -0
- package/dist/search/BeamSearch.js +139 -0
- package/dist/search/BeamSearch.js.map +1 -0
- package/dist/search/BestFirstSearch.d.ts +23 -0
- package/dist/search/BestFirstSearch.d.ts.map +1 -0
- package/dist/search/BestFirstSearch.js +110 -0
- package/dist/search/BestFirstSearch.js.map +1 -0
- package/dist/search/PriorityQueue.d.ts +54 -0
- package/dist/search/PriorityQueue.d.ts.map +1 -0
- package/dist/search/PriorityQueue.js +114 -0
- package/dist/search/PriorityQueue.js.map +1 -0
- package/dist/search/PruningManager.d.ts +62 -0
- package/dist/search/PruningManager.d.ts.map +1 -0
- package/dist/search/PruningManager.js +188 -0
- package/dist/search/PruningManager.js.map +1 -0
- package/dist/search/index.d.ts +10 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +9 -0
- package/dist/search/index.js.map +1 -0
- package/dist/types.d.ts +416 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
package/README.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# @nahisaho/musubix-neural-search
|
|
2
|
+
|
|
3
|
+
Neural search engine with embedding-based scoring and learning-based pruning for MUSUBIX code synthesis.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Neural Scorer**: Embedding-based code and specification scoring
|
|
8
|
+
- **Search Engine**: Beam search and best-first search algorithms
|
|
9
|
+
- **Learning Module**: Online learning from search trajectories
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @nahisaho/musubix-neural-search
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Requirements
|
|
18
|
+
|
|
19
|
+
- REQ-NS-001: Branch Scoring with neural embeddings
|
|
20
|
+
- REQ-NS-002: Search prioritization based on scores
|
|
21
|
+
- REQ-NS-003: Learning-based pruning
|
|
22
|
+
- REQ-NS-004: Search trajectory learning
|
|
23
|
+
|
|
24
|
+
## Architecture
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
┌─────────────────────────────────────────────────────────┐
|
|
28
|
+
│ Neural Search Engine │
|
|
29
|
+
├─────────────────┬─────────────────┬────────────────────┤
|
|
30
|
+
│ Neural Scorer │ Search Engine │ Learning Module │
|
|
31
|
+
├─────────────────┼─────────────────┼────────────────────┤
|
|
32
|
+
│ EmbeddingModel │ BeamSearch │ TrajectoryLog │
|
|
33
|
+
│ BranchScorer │ BestFirstSearch │ OnlineLearner │
|
|
34
|
+
│ ContextEncoder │ PruningManager │ ModelUpdater │
|
|
35
|
+
└─────────────────┴─────────────────┴────────────────────┘
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
import { BeamSearch, BranchScorer, OnlineLearner } from '@nahisaho/musubix-neural-search';
|
|
42
|
+
|
|
43
|
+
// Create scorer
|
|
44
|
+
const scorer = new BranchScorer();
|
|
45
|
+
|
|
46
|
+
// Create search
|
|
47
|
+
const search = new BeamSearch({ beamWidth: 5 });
|
|
48
|
+
|
|
49
|
+
// Execute search
|
|
50
|
+
const results = await search.search(initialState, scorer);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## License
|
|
54
|
+
|
|
55
|
+
MIT
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neural Search Errors
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Base error for neural search
|
|
7
|
+
*/
|
|
8
|
+
export declare class NeuralSearchError extends Error {
|
|
9
|
+
readonly code: string;
|
|
10
|
+
constructor(message: string, code: string);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Embedding error
|
|
14
|
+
*/
|
|
15
|
+
export declare class EmbeddingError extends NeuralSearchError {
|
|
16
|
+
constructor(message: string);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Search error
|
|
20
|
+
*/
|
|
21
|
+
export declare class SearchError extends NeuralSearchError {
|
|
22
|
+
constructor(message: string);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Search timeout error
|
|
26
|
+
*/
|
|
27
|
+
export declare class SearchTimeoutError extends SearchError {
|
|
28
|
+
constructor(timeout: number);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Search depth exceeded error
|
|
32
|
+
*/
|
|
33
|
+
export declare class SearchDepthExceededError extends SearchError {
|
|
34
|
+
constructor(maxDepth: number);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Learning error
|
|
38
|
+
*/
|
|
39
|
+
export declare class LearningError extends NeuralSearchError {
|
|
40
|
+
constructor(message: string);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Invalid state error
|
|
44
|
+
*/
|
|
45
|
+
export declare class InvalidStateError extends NeuralSearchError {
|
|
46
|
+
constructor(message: string);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aACG,IAAI,EAAE,MAAM;gBAA7C,OAAO,EAAE,MAAM,EAAkB,IAAI,EAAE,MAAM;CAI1D;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,iBAAiB;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,iBAAiB;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,WAAW;gBAC3C,QAAQ,EAAE,MAAM;CAI7B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,iBAAiB;gBAC1C,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neural Search Errors
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Base error for neural search
|
|
7
|
+
*/
|
|
8
|
+
export class NeuralSearchError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
constructor(message, code) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.name = 'NeuralSearchError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Embedding error
|
|
18
|
+
*/
|
|
19
|
+
export class EmbeddingError extends NeuralSearchError {
|
|
20
|
+
constructor(message) {
|
|
21
|
+
super(message, 'EMBEDDING_ERROR');
|
|
22
|
+
this.name = 'EmbeddingError';
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Search error
|
|
27
|
+
*/
|
|
28
|
+
export class SearchError extends NeuralSearchError {
|
|
29
|
+
constructor(message) {
|
|
30
|
+
super(message, 'SEARCH_ERROR');
|
|
31
|
+
this.name = 'SearchError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Search timeout error
|
|
36
|
+
*/
|
|
37
|
+
export class SearchTimeoutError extends SearchError {
|
|
38
|
+
constructor(timeout) {
|
|
39
|
+
super(`Search timed out after ${timeout}ms`);
|
|
40
|
+
this.name = 'SearchTimeoutError';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Search depth exceeded error
|
|
45
|
+
*/
|
|
46
|
+
export class SearchDepthExceededError extends SearchError {
|
|
47
|
+
constructor(maxDepth) {
|
|
48
|
+
super(`Maximum search depth ${maxDepth} exceeded`);
|
|
49
|
+
this.name = 'SearchDepthExceededError';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Learning error
|
|
54
|
+
*/
|
|
55
|
+
export class LearningError extends NeuralSearchError {
|
|
56
|
+
constructor(message) {
|
|
57
|
+
super(message, 'LEARNING_ERROR');
|
|
58
|
+
this.name = 'LearningError';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Invalid state error
|
|
63
|
+
*/
|
|
64
|
+
export class InvalidStateError extends NeuralSearchError {
|
|
65
|
+
constructor(message) {
|
|
66
|
+
super(message, 'INVALID_STATE');
|
|
67
|
+
this.name = 'InvalidStateError';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACG;IAA7C,YAAY,OAAe,EAAkB,IAAY;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,SAAI,GAAJ,IAAI,CAAQ;QAEvD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,iBAAiB;IACnD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,0BAA0B,OAAO,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvD,YAAY,QAAgB;QAC1B,KAAK,CAAC,wBAAwB,QAAQ,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neural Search Package
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @description Neural search engine with embedding-based scoring and learning-based pruning
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './errors.js';
|
|
8
|
+
export { EmbeddingModel, BranchScorer, ContextEncoder, } from './scorer/index.js';
|
|
9
|
+
export type { ScoreWeights } from './scorer/index.js';
|
|
10
|
+
export { PriorityQueue, BeamSearch, BestFirstSearch, PruningManager, } from './search/index.js';
|
|
11
|
+
export type { PruningConfig } from './search/index.js';
|
|
12
|
+
export { TrajectoryLog, OnlineLearner, ModelUpdater, } from './learning/index.js';
|
|
13
|
+
export type { OnlineLearnerConfig, ModelUpdaterConfig, } from './learning/index.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EACL,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neural Search Package
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @description Neural search engine with embedding-based scoring and learning-based pruning
|
|
5
|
+
*/
|
|
6
|
+
// Types
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
// Errors
|
|
9
|
+
export * from './errors.js';
|
|
10
|
+
// Neural Scorer
|
|
11
|
+
export { EmbeddingModel, BranchScorer, ContextEncoder, } from './scorer/index.js';
|
|
12
|
+
// Search Engine
|
|
13
|
+
export { PriorityQueue, BeamSearch, BestFirstSearch, PruningManager, } from './search/index.js';
|
|
14
|
+
// Learning Module
|
|
15
|
+
export { TrajectoryLog, OnlineLearner, ModelUpdater, } from './learning/index.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,gBAAgB;AAChB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,gBAAgB;AAChB,OAAO,EACL,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,kBAAkB;AAClB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Updater
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @description Batched model updates
|
|
5
|
+
*/
|
|
6
|
+
import type { IModelUpdater, LearningUpdate } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Model updater configuration
|
|
9
|
+
*/
|
|
10
|
+
export interface ModelUpdaterConfig {
|
|
11
|
+
batchSize: number;
|
|
12
|
+
flushInterval: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Model updater implementation
|
|
16
|
+
*/
|
|
17
|
+
export declare class ModelUpdater implements IModelUpdater {
|
|
18
|
+
private readonly config;
|
|
19
|
+
private pendingUpdates;
|
|
20
|
+
private onFlush?;
|
|
21
|
+
private flushTimer?;
|
|
22
|
+
private totalFlushed;
|
|
23
|
+
constructor(config?: Partial<ModelUpdaterConfig>, onFlush?: (updates: LearningUpdate[]) => Promise<void>);
|
|
24
|
+
/**
|
|
25
|
+
* Queue an update
|
|
26
|
+
*/
|
|
27
|
+
queueUpdate(update: LearningUpdate): void;
|
|
28
|
+
/**
|
|
29
|
+
* Flush pending updates
|
|
30
|
+
*/
|
|
31
|
+
flushUpdates(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Get pending update count
|
|
34
|
+
*/
|
|
35
|
+
getPendingCount(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Get total flushed count
|
|
38
|
+
*/
|
|
39
|
+
getTotalFlushed(): number;
|
|
40
|
+
/**
|
|
41
|
+
* Clear pending updates without flushing
|
|
42
|
+
*/
|
|
43
|
+
clear(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Schedule a flush
|
|
46
|
+
*/
|
|
47
|
+
private scheduleFlush;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ModelUpdater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelUpdater.d.ts","sourceRoot":"","sources":["../../src/learning/ModelUpdater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAUD;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,OAAO,CAAC,CAA+C;IAC/D,OAAO,CAAC,UAAU,CAAC,CAAgC;IACnD,OAAO,CAAC,YAAY,CAAS;gBAG3B,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM,EACxC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC;IAQxD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAYzC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBnC;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,OAAO,CAAC,aAAa;CAUtB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Updater
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @description Batched model updates
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default configuration
|
|
8
|
+
*/
|
|
9
|
+
const DEFAULT_CONFIG = {
|
|
10
|
+
batchSize: 10,
|
|
11
|
+
flushInterval: 5000,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Model updater implementation
|
|
15
|
+
*/
|
|
16
|
+
export class ModelUpdater {
|
|
17
|
+
config;
|
|
18
|
+
pendingUpdates;
|
|
19
|
+
onFlush;
|
|
20
|
+
flushTimer;
|
|
21
|
+
totalFlushed;
|
|
22
|
+
constructor(config = {}, onFlush) {
|
|
23
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
24
|
+
this.pendingUpdates = [];
|
|
25
|
+
this.onFlush = onFlush;
|
|
26
|
+
this.totalFlushed = 0;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Queue an update
|
|
30
|
+
*/
|
|
31
|
+
queueUpdate(update) {
|
|
32
|
+
this.pendingUpdates.push(update);
|
|
33
|
+
// Auto-flush if batch size reached
|
|
34
|
+
if (this.pendingUpdates.length >= this.config.batchSize) {
|
|
35
|
+
void this.flushUpdates();
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Set timer for flush
|
|
39
|
+
this.scheduleFlush();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Flush pending updates
|
|
44
|
+
*/
|
|
45
|
+
async flushUpdates() {
|
|
46
|
+
if (this.pendingUpdates.length === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Clear timer
|
|
50
|
+
if (this.flushTimer) {
|
|
51
|
+
clearTimeout(this.flushTimer);
|
|
52
|
+
this.flushTimer = undefined;
|
|
53
|
+
}
|
|
54
|
+
// Get updates to flush
|
|
55
|
+
const updates = [...this.pendingUpdates];
|
|
56
|
+
this.pendingUpdates = [];
|
|
57
|
+
this.totalFlushed += updates.length;
|
|
58
|
+
// Call flush handler if provided
|
|
59
|
+
if (this.onFlush) {
|
|
60
|
+
await this.onFlush(updates);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get pending update count
|
|
65
|
+
*/
|
|
66
|
+
getPendingCount() {
|
|
67
|
+
return this.pendingUpdates.length;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get total flushed count
|
|
71
|
+
*/
|
|
72
|
+
getTotalFlushed() {
|
|
73
|
+
return this.totalFlushed;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Clear pending updates without flushing
|
|
77
|
+
*/
|
|
78
|
+
clear() {
|
|
79
|
+
if (this.flushTimer) {
|
|
80
|
+
clearTimeout(this.flushTimer);
|
|
81
|
+
this.flushTimer = undefined;
|
|
82
|
+
}
|
|
83
|
+
this.pendingUpdates = [];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Schedule a flush
|
|
87
|
+
*/
|
|
88
|
+
scheduleFlush() {
|
|
89
|
+
if (this.flushTimer) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
this.flushTimer = setTimeout(() => {
|
|
93
|
+
this.flushTimer = undefined;
|
|
94
|
+
void this.flushUpdates();
|
|
95
|
+
}, this.config.flushInterval);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=ModelUpdater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelUpdater.js","sourceRoot":"","sources":["../../src/learning/ModelUpdater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH;;GAEG;AACH,MAAM,cAAc,GAAuB;IACzC,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,YAAY;IACN,MAAM,CAAqB;IACpC,cAAc,CAAmB;IACjC,OAAO,CAAgD;IACvD,UAAU,CAAiC;IAC3C,YAAY,CAAS;IAE7B,YACE,SAAsC,EAAE,EACxC,OAAsD;QAEtD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAsB;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjC,mCAAmC;QACnC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACxD,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,cAAc;QACd,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;QAED,uBAAuB;QACvB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;QAEpC,iCAAiC;QACjC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Online Learner
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @description Online learning from search trajectories
|
|
5
|
+
* Traces to: REQ-NS-004 (探索履歴学習)
|
|
6
|
+
*/
|
|
7
|
+
import type { IOnlineLearner, LearningStatistics, LearningUpdate, SearchTrajectory } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Online learner configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface OnlineLearnerConfig {
|
|
12
|
+
learningRate: number;
|
|
13
|
+
momentumDecay: number;
|
|
14
|
+
gradientClip: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Online learner implementation
|
|
18
|
+
*/
|
|
19
|
+
export declare class OnlineLearner implements IOnlineLearner {
|
|
20
|
+
private readonly config;
|
|
21
|
+
private parameters;
|
|
22
|
+
private momentum;
|
|
23
|
+
private totalUpdates;
|
|
24
|
+
private lossHistory;
|
|
25
|
+
constructor(config?: Partial<OnlineLearnerConfig>);
|
|
26
|
+
/**
|
|
27
|
+
* Learn from a trajectory
|
|
28
|
+
*/
|
|
29
|
+
learnFromTrajectory(trajectory: SearchTrajectory): LearningUpdate;
|
|
30
|
+
/**
|
|
31
|
+
* Get current model parameters
|
|
32
|
+
*/
|
|
33
|
+
getParameters(): Map<string, number>;
|
|
34
|
+
/**
|
|
35
|
+
* Apply learning update
|
|
36
|
+
*/
|
|
37
|
+
applyUpdate(update: LearningUpdate): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get learning statistics
|
|
40
|
+
*/
|
|
41
|
+
getStatistics(): LearningStatistics;
|
|
42
|
+
/**
|
|
43
|
+
* Reset learner
|
|
44
|
+
*/
|
|
45
|
+
reset(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Initialize default parameters
|
|
48
|
+
*/
|
|
49
|
+
private initializeParameters;
|
|
50
|
+
/**
|
|
51
|
+
* Compute gradients from trajectory
|
|
52
|
+
*/
|
|
53
|
+
private computeGradients;
|
|
54
|
+
/**
|
|
55
|
+
* Compute loss from trajectory
|
|
56
|
+
*/
|
|
57
|
+
private computeLoss;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=OnlineLearner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnlineLearner.d.ts","sourceRoot":"","sources":["../../src/learning/OnlineLearner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAWD;;GAEG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAW;gBAElB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAWrD;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,GAAG,cAAc;IAcjE;;OAEG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAsBzC;;OAEG;IACH,aAAa,IAAI,kBAAkB;IAsBnC;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;OAEG;IACH,OAAO,CAAC,WAAW;CAiBpB"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Online Learner
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @description Online learning from search trajectories
|
|
5
|
+
* Traces to: REQ-NS-004 (探索履歴学習)
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Default configuration
|
|
9
|
+
*/
|
|
10
|
+
const DEFAULT_CONFIG = {
|
|
11
|
+
learningRate: 0.01,
|
|
12
|
+
momentumDecay: 0.9,
|
|
13
|
+
gradientClip: 1.0,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Online learner implementation
|
|
17
|
+
*/
|
|
18
|
+
export class OnlineLearner {
|
|
19
|
+
config;
|
|
20
|
+
parameters;
|
|
21
|
+
momentum;
|
|
22
|
+
totalUpdates;
|
|
23
|
+
lossHistory;
|
|
24
|
+
constructor(config = {}) {
|
|
25
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
26
|
+
this.parameters = new Map();
|
|
27
|
+
this.momentum = new Map();
|
|
28
|
+
this.totalUpdates = 0;
|
|
29
|
+
this.lossHistory = [];
|
|
30
|
+
// Initialize default parameters
|
|
31
|
+
this.initializeParameters();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Learn from a trajectory
|
|
35
|
+
*/
|
|
36
|
+
learnFromTrajectory(trajectory) {
|
|
37
|
+
const gradients = this.computeGradients(trajectory);
|
|
38
|
+
const loss = this.computeLoss(trajectory);
|
|
39
|
+
this.lossHistory.push(loss);
|
|
40
|
+
this.totalUpdates++;
|
|
41
|
+
return {
|
|
42
|
+
trajectoryId: trajectory.id,
|
|
43
|
+
gradients,
|
|
44
|
+
loss,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get current model parameters
|
|
49
|
+
*/
|
|
50
|
+
getParameters() {
|
|
51
|
+
return new Map(this.parameters);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Apply learning update
|
|
55
|
+
*/
|
|
56
|
+
applyUpdate(update) {
|
|
57
|
+
for (const [key, gradient] of update.gradients) {
|
|
58
|
+
// Get current values
|
|
59
|
+
const param = this.parameters.get(key) ?? 0;
|
|
60
|
+
const mom = this.momentum.get(key) ?? 0;
|
|
61
|
+
// Clip gradient
|
|
62
|
+
const clippedGrad = Math.max(-this.config.gradientClip, Math.min(this.config.gradientClip, gradient));
|
|
63
|
+
// Update momentum
|
|
64
|
+
const newMom = this.config.momentumDecay * mom + clippedGrad;
|
|
65
|
+
this.momentum.set(key, newMom);
|
|
66
|
+
// Update parameter
|
|
67
|
+
const newParam = param - this.config.learningRate * newMom;
|
|
68
|
+
this.parameters.set(key, newParam);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get learning statistics
|
|
73
|
+
*/
|
|
74
|
+
getStatistics() {
|
|
75
|
+
const recentLoss = this.lossHistory.slice(-100);
|
|
76
|
+
const avgLoss = recentLoss.length > 0
|
|
77
|
+
? recentLoss.reduce((a, b) => a + b, 0) / recentLoss.length
|
|
78
|
+
: 0;
|
|
79
|
+
// Compute convergence metric (variance of recent losses)
|
|
80
|
+
const variance = recentLoss.length > 1
|
|
81
|
+
? recentLoss.reduce((sum, l) => sum + Math.pow(l - avgLoss, 2), 0) /
|
|
82
|
+
(recentLoss.length - 1)
|
|
83
|
+
: 1;
|
|
84
|
+
return {
|
|
85
|
+
totalUpdates: this.totalUpdates,
|
|
86
|
+
averageLoss: avgLoss,
|
|
87
|
+
learningRate: this.config.learningRate,
|
|
88
|
+
convergenceMetric: 1 / (1 + variance), // Higher = more converged
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Reset learner
|
|
93
|
+
*/
|
|
94
|
+
reset() {
|
|
95
|
+
this.initializeParameters();
|
|
96
|
+
this.momentum.clear();
|
|
97
|
+
this.totalUpdates = 0;
|
|
98
|
+
this.lossHistory = [];
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Initialize default parameters
|
|
102
|
+
*/
|
|
103
|
+
initializeParameters() {
|
|
104
|
+
this.parameters = new Map([
|
|
105
|
+
['specAlignment', 0.4],
|
|
106
|
+
['codeQuality', 0.3],
|
|
107
|
+
['novelty', 0.15],
|
|
108
|
+
['feasibility', 0.15],
|
|
109
|
+
['depthPenalty', 0.05],
|
|
110
|
+
['complexityPenalty', 0.1],
|
|
111
|
+
]);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Compute gradients from trajectory
|
|
115
|
+
*/
|
|
116
|
+
computeGradients(trajectory) {
|
|
117
|
+
const gradients = new Map();
|
|
118
|
+
const reward = trajectory.outcome.success ? 1 : -1;
|
|
119
|
+
// Compute gradients based on trajectory outcome
|
|
120
|
+
for (const step of trajectory.path) {
|
|
121
|
+
// Positive gradient for parameters that led to success
|
|
122
|
+
const specGrad = reward * 0.1 * (1 / (step.state.depth + 1));
|
|
123
|
+
const qualityGrad = reward * 0.05;
|
|
124
|
+
const noveltyGrad = reward * 0.02 * (step.score > 0.5 ? 1 : -1);
|
|
125
|
+
// Accumulate gradients
|
|
126
|
+
gradients.set('specAlignment', (gradients.get('specAlignment') ?? 0) + specGrad);
|
|
127
|
+
gradients.set('codeQuality', (gradients.get('codeQuality') ?? 0) + qualityGrad);
|
|
128
|
+
gradients.set('novelty', (gradients.get('novelty') ?? 0) + noveltyGrad);
|
|
129
|
+
}
|
|
130
|
+
// Normalize by path length
|
|
131
|
+
const pathLength = trajectory.path.length || 1;
|
|
132
|
+
for (const [key, value] of gradients) {
|
|
133
|
+
gradients.set(key, value / pathLength);
|
|
134
|
+
}
|
|
135
|
+
return gradients;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Compute loss from trajectory
|
|
139
|
+
*/
|
|
140
|
+
computeLoss(trajectory) {
|
|
141
|
+
// Cross-entropy style loss
|
|
142
|
+
// For success, we want high predicted score → low loss
|
|
143
|
+
// For failure, we want high predicted score → high loss
|
|
144
|
+
const target = trajectory.outcome.success ? 1 : 0;
|
|
145
|
+
const predicted = trajectory.outcome.finalScore;
|
|
146
|
+
// Clamp to avoid log(0)
|
|
147
|
+
const p = Math.max(0.001, Math.min(0.999, predicted));
|
|
148
|
+
// Cross-entropy: -[target * log(p) + (1-target) * log(1-p)]
|
|
149
|
+
// If target=1 (success): loss = -log(p), so high p → low loss
|
|
150
|
+
// If target=0 (failure): loss = -log(1-p), so high p → high loss
|
|
151
|
+
const loss = -(target * Math.log(p) + (1 - target) * Math.log(1 - p));
|
|
152
|
+
return loss;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=OnlineLearner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnlineLearner.js","sourceRoot":"","sources":["../../src/learning/OnlineLearner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trajectory Log
|
|
3
|
+
* @module @nahisaho/musubix-neural-search
|
|
4
|
+
* @description Logs and queries search trajectories
|
|
5
|
+
* Traces to: REQ-NS-004 (探索履歴学習)
|
|
6
|
+
*/
|
|
7
|
+
import type { ITrajectoryLog, SearchTrajectory, TrajectoryStatistics } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Trajectory log implementation
|
|
10
|
+
*/
|
|
11
|
+
export declare class TrajectoryLog implements ITrajectoryLog {
|
|
12
|
+
private trajectories;
|
|
13
|
+
private specIndex;
|
|
14
|
+
constructor();
|
|
15
|
+
/**
|
|
16
|
+
* Log a completed trajectory
|
|
17
|
+
*/
|
|
18
|
+
log(trajectory: SearchTrajectory): void;
|
|
19
|
+
/**
|
|
20
|
+
* Query trajectories by specification
|
|
21
|
+
*/
|
|
22
|
+
queryBySpec(spec: string, limit?: number): SearchTrajectory[];
|
|
23
|
+
/**
|
|
24
|
+
* Get successful trajectories
|
|
25
|
+
*/
|
|
26
|
+
getSuccessful(limit?: number): SearchTrajectory[];
|
|
27
|
+
/**
|
|
28
|
+
* Get all trajectories
|
|
29
|
+
*/
|
|
30
|
+
getAll(): SearchTrajectory[];
|
|
31
|
+
/**
|
|
32
|
+
* Get trajectory by ID
|
|
33
|
+
*/
|
|
34
|
+
get(id: string): SearchTrajectory | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Get statistics
|
|
37
|
+
*/
|
|
38
|
+
getStatistics(): TrajectoryStatistics;
|
|
39
|
+
/**
|
|
40
|
+
* Clear all trajectories
|
|
41
|
+
*/
|
|
42
|
+
clear(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Get size
|
|
45
|
+
*/
|
|
46
|
+
size(): number;
|
|
47
|
+
/**
|
|
48
|
+
* Hash specification for indexing
|
|
49
|
+
*/
|
|
50
|
+
private hashSpec;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=TrajectoryLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrajectoryLog.d.ts","sourceRoot":"","sources":["../../src/learning/TrajectoryLog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,SAAS,CAAwB;;IAOzC;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAUvC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,gBAAgB,EAAE;IAUjE;;OAEG;IACH,aAAa,CAAC,KAAK,GAAE,MAAW,GAAG,gBAAgB,EAAE;IAOrD;;OAEG;IACH,MAAM,IAAI,gBAAgB,EAAE;IAI5B;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI7C;;OAEG;IACH,aAAa,IAAI,oBAAoB;IAkBrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,OAAO,CAAC,QAAQ;CAIjB"}
|