agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.2
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/agentdb.min.js +4 -4
- package/dist/simulation/cli.js +0 -0
- package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
- package/dist/src/cli/agentdb-cli.js +78 -0
- package/dist/src/cli/agentdb-cli.js.map +1 -1
- package/dist/src/cli/commands/init.js +3 -3
- package/dist/src/cli/commands/init.js.map +1 -1
- package/package.json +3 -3
- package/src/cli/agentdb-cli.ts +78 -0
- package/src/cli/commands/init.ts +3 -3
- package/dist/agentdb-advanced.js +0 -2110
- package/dist/agentdb-advanced.min.js +0 -1
- package/dist/backends/GraphBackend.d.ts +0 -196
- package/dist/backends/GraphBackend.d.ts.map +0 -1
- package/dist/backends/GraphBackend.js +0 -33
- package/dist/backends/GraphBackend.js.map +0 -1
- package/dist/backends/LearningBackend.d.ts +0 -148
- package/dist/backends/LearningBackend.d.ts.map +0 -1
- package/dist/backends/LearningBackend.js +0 -27
- package/dist/backends/LearningBackend.js.map +0 -1
- package/dist/backends/VectorBackend.d.ts +0 -119
- package/dist/backends/VectorBackend.d.ts.map +0 -1
- package/dist/backends/VectorBackend.js +0 -14
- package/dist/backends/VectorBackend.js.map +0 -1
- package/dist/backends/detector.d.ts +0 -81
- package/dist/backends/detector.d.ts.map +0 -1
- package/dist/backends/detector.js +0 -192
- package/dist/backends/detector.js.map +0 -1
- package/dist/backends/factory.d.ts +0 -50
- package/dist/backends/factory.d.ts.map +0 -1
- package/dist/backends/factory.js +0 -161
- package/dist/backends/factory.js.map +0 -1
- package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
- package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
- package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
- package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
- package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
- package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
- package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
- package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
- package/dist/backends/hnswlib/index.d.ts +0 -7
- package/dist/backends/hnswlib/index.d.ts.map +0 -1
- package/dist/backends/hnswlib/index.js +0 -7
- package/dist/backends/hnswlib/index.js.map +0 -1
- package/dist/backends/index.d.ts +0 -14
- package/dist/backends/index.d.ts.map +0 -1
- package/dist/backends/index.js +0 -13
- package/dist/backends/index.js.map +0 -1
- package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
- package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
- package/dist/backends/ruvector/RuVectorBackend.js +0 -198
- package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
- package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
- package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
- package/dist/backends/ruvector/RuVectorLearning.js +0 -177
- package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
- package/dist/backends/ruvector/index.d.ts +0 -9
- package/dist/backends/ruvector/index.d.ts.map +0 -1
- package/dist/backends/ruvector/index.js +0 -8
- package/dist/backends/ruvector/index.js.map +0 -1
- package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
- package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
- package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
- package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
- package/dist/browser/AdvancedFeatures.d.ts +0 -144
- package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
- package/dist/browser/AdvancedFeatures.js +0 -430
- package/dist/browser/AdvancedFeatures.js.map +0 -1
- package/dist/browser/HNSWIndex.d.ts +0 -117
- package/dist/browser/HNSWIndex.d.ts.map +0 -1
- package/dist/browser/HNSWIndex.js +0 -402
- package/dist/browser/HNSWIndex.js.map +0 -1
- package/dist/browser/ProductQuantization.d.ts +0 -107
- package/dist/browser/ProductQuantization.d.ts.map +0 -1
- package/dist/browser/ProductQuantization.js +0 -337
- package/dist/browser/ProductQuantization.js.map +0 -1
- package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
- package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
- package/dist/browser/browser/AdvancedFeatures.js +0 -427
- package/dist/browser/browser/HNSWIndex.d.ts +0 -117
- package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
- package/dist/browser/browser/HNSWIndex.js +0 -402
- package/dist/browser/browser/ProductQuantization.d.ts +0 -107
- package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
- package/dist/browser/browser/ProductQuantization.js +0 -348
- package/dist/browser/browser/index.d.ts +0 -223
- package/dist/browser/browser/index.d.ts.map +0 -1
- package/dist/browser/browser/index.js +0 -233
- package/dist/browser/index.d.ts +0 -223
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -225
- package/dist/browser/index.js.map +0 -1
- package/dist/cli/agentdb-cli.d.ts +0 -154
- package/dist/cli/agentdb-cli.d.ts.map +0 -1
- package/dist/cli/agentdb-cli.js +0 -2273
- package/dist/cli/agentdb-cli.js.map +0 -1
- package/dist/cli/agentdb.db +0 -0
- package/dist/cli/commands/init.d.ts +0 -12
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -115
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/install-embeddings.d.ts +0 -10
- package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
- package/dist/cli/commands/install-embeddings.js +0 -68
- package/dist/cli/commands/install-embeddings.js.map +0 -1
- package/dist/cli/commands/migrate.d.ts +0 -15
- package/dist/cli/commands/migrate.d.ts.map +0 -1
- package/dist/cli/commands/migrate.js +0 -425
- package/dist/cli/commands/migrate.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -10
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -129
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
- package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
- package/dist/controllers/CausalMemoryGraph.js +0 -323
- package/dist/controllers/CausalMemoryGraph.js.map +0 -1
- package/dist/controllers/CausalRecall.d.ts +0 -139
- package/dist/controllers/CausalRecall.d.ts.map +0 -1
- package/dist/controllers/CausalRecall.js +0 -356
- package/dist/controllers/CausalRecall.js.map +0 -1
- package/dist/controllers/ContextSynthesizer.d.ts +0 -65
- package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
- package/dist/controllers/ContextSynthesizer.js +0 -208
- package/dist/controllers/ContextSynthesizer.js.map +0 -1
- package/dist/controllers/EmbeddingService.d.ts +0 -37
- package/dist/controllers/EmbeddingService.d.ts.map +0 -1
- package/dist/controllers/EmbeddingService.js +0 -136
- package/dist/controllers/EmbeddingService.js.map +0 -1
- package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
- package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
- package/dist/controllers/EnhancedEmbeddingService.js +0 -119
- package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
- package/dist/controllers/ExplainableRecall.d.ts +0 -163
- package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
- package/dist/controllers/ExplainableRecall.js +0 -485
- package/dist/controllers/ExplainableRecall.js.map +0 -1
- package/dist/controllers/HNSWIndex.d.ts +0 -128
- package/dist/controllers/HNSWIndex.d.ts.map +0 -1
- package/dist/controllers/HNSWIndex.js +0 -361
- package/dist/controllers/HNSWIndex.js.map +0 -1
- package/dist/controllers/LearningSystem.d.ts +0 -195
- package/dist/controllers/LearningSystem.d.ts.map +0 -1
- package/dist/controllers/LearningSystem.js +0 -929
- package/dist/controllers/LearningSystem.js.map +0 -1
- package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
- package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
- package/dist/controllers/MMRDiversityRanker.js +0 -130
- package/dist/controllers/MMRDiversityRanker.js.map +0 -1
- package/dist/controllers/MetadataFilter.d.ts +0 -70
- package/dist/controllers/MetadataFilter.d.ts.map +0 -1
- package/dist/controllers/MetadataFilter.js +0 -243
- package/dist/controllers/MetadataFilter.js.map +0 -1
- package/dist/controllers/NightlyLearner.d.ts +0 -114
- package/dist/controllers/NightlyLearner.d.ts.map +0 -1
- package/dist/controllers/NightlyLearner.js +0 -394
- package/dist/controllers/NightlyLearner.js.map +0 -1
- package/dist/controllers/QUICClient.d.ts +0 -109
- package/dist/controllers/QUICClient.d.ts.map +0 -1
- package/dist/controllers/QUICClient.js +0 -299
- package/dist/controllers/QUICClient.js.map +0 -1
- package/dist/controllers/QUICServer.d.ts +0 -121
- package/dist/controllers/QUICServer.d.ts.map +0 -1
- package/dist/controllers/QUICServer.js +0 -383
- package/dist/controllers/QUICServer.js.map +0 -1
- package/dist/controllers/ReasoningBank.d.ts +0 -196
- package/dist/controllers/ReasoningBank.d.ts.map +0 -1
- package/dist/controllers/ReasoningBank.js +0 -494
- package/dist/controllers/ReasoningBank.js.map +0 -1
- package/dist/controllers/ReflexionMemory.d.ts +0 -125
- package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
- package/dist/controllers/ReflexionMemory.js +0 -521
- package/dist/controllers/ReflexionMemory.js.map +0 -1
- package/dist/controllers/SkillLibrary.d.ts +0 -149
- package/dist/controllers/SkillLibrary.d.ts.map +0 -1
- package/dist/controllers/SkillLibrary.js +0 -547
- package/dist/controllers/SkillLibrary.js.map +0 -1
- package/dist/controllers/SyncCoordinator.d.ts +0 -120
- package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
- package/dist/controllers/SyncCoordinator.js +0 -441
- package/dist/controllers/SyncCoordinator.js.map +0 -1
- package/dist/controllers/WASMVectorSearch.d.ts +0 -89
- package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
- package/dist/controllers/WASMVectorSearch.js +0 -234
- package/dist/controllers/WASMVectorSearch.js.map +0 -1
- package/dist/controllers/frontier-index.d.ts +0 -14
- package/dist/controllers/frontier-index.d.ts.map +0 -1
- package/dist/controllers/frontier-index.js +0 -10
- package/dist/controllers/frontier-index.js.map +0 -1
- package/dist/controllers/index.d.ts +0 -30
- package/dist/controllers/index.d.ts.map +0 -1
- package/dist/controllers/index.js +0 -18
- package/dist/controllers/index.js.map +0 -1
- package/dist/db-fallback.d.ts +0 -26
- package/dist/db-fallback.d.ts.map +0 -1
- package/dist/db-fallback.js +0 -264
- package/dist/db-fallback.js.map +0 -1
- package/dist/db-test.d.ts +0 -13
- package/dist/db-test.d.ts.map +0 -1
- package/dist/db-test.js +0 -55
- package/dist/db-test.js.map +0 -1
- package/dist/db-unified.d.ts +0 -76
- package/dist/db-unified.d.ts.map +0 -1
- package/dist/db-unified.js +0 -278
- package/dist/db-unified.js.map +0 -1
- package/dist/examples/quic-sync-example.d.ts +0 -9
- package/dist/examples/quic-sync-example.d.ts.map +0 -1
- package/dist/examples/quic-sync-example.js +0 -169
- package/dist/examples/quic-sync-example.js.map +0 -1
- package/dist/examples/wasm-vector-usage.d.ts +0 -12
- package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
- package/dist/examples/wasm-vector-usage.js +0 -190
- package/dist/examples/wasm-vector-usage.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -35
- package/dist/index.js.map +0 -1
- package/dist/malp/core/ccc.d.ts +0 -99
- package/dist/malp/core/ccc.d.ts.map +0 -1
- package/dist/malp/core/ccc.js +0 -181
- package/dist/malp/core/ccc.js.map +0 -1
- package/dist/malp/core/index.d.ts +0 -9
- package/dist/malp/core/index.d.ts.map +0 -1
- package/dist/malp/core/index.js +0 -9
- package/dist/malp/core/index.js.map +0 -1
- package/dist/malp/core/linalg.d.ts +0 -101
- package/dist/malp/core/linalg.d.ts.map +0 -1
- package/dist/malp/core/linalg.js +0 -278
- package/dist/malp/core/linalg.js.map +0 -1
- package/dist/malp/core/optimizer.d.ts +0 -68
- package/dist/malp/core/optimizer.d.ts.map +0 -1
- package/dist/malp/core/optimizer.js +0 -160
- package/dist/malp/core/optimizer.js.map +0 -1
- package/dist/malp/index.d.ts +0 -33
- package/dist/malp/index.d.ts.map +0 -1
- package/dist/malp/index.js +0 -37
- package/dist/malp/index.js.map +0 -1
- package/dist/malp/metrics/agreement.d.ts +0 -106
- package/dist/malp/metrics/agreement.d.ts.map +0 -1
- package/dist/malp/metrics/agreement.js +0 -199
- package/dist/malp/metrics/agreement.js.map +0 -1
- package/dist/malp/metrics/comparison.d.ts +0 -93
- package/dist/malp/metrics/comparison.d.ts.map +0 -1
- package/dist/malp/metrics/comparison.js +0 -256
- package/dist/malp/metrics/comparison.js.map +0 -1
- package/dist/malp/metrics/index.d.ts +0 -8
- package/dist/malp/metrics/index.d.ts.map +0 -1
- package/dist/malp/metrics/index.js +0 -8
- package/dist/malp/metrics/index.js.map +0 -1
- package/dist/malp/metrics/performance.d.ts +0 -61
- package/dist/malp/metrics/performance.d.ts.map +0 -1
- package/dist/malp/metrics/performance.js +0 -190
- package/dist/malp/metrics/performance.js.map +0 -1
- package/dist/malp/models/index.d.ts +0 -7
- package/dist/malp/models/index.d.ts.map +0 -1
- package/dist/malp/models/index.js +0 -7
- package/dist/malp/models/index.js.map +0 -1
- package/dist/malp/models/malp.d.ts +0 -116
- package/dist/malp/models/malp.d.ts.map +0 -1
- package/dist/malp/models/malp.js +0 -206
- package/dist/malp/models/malp.js.map +0 -1
- package/dist/malp/models/regressor.d.ts +0 -80
- package/dist/malp/models/regressor.d.ts.map +0 -1
- package/dist/malp/models/regressor.js +0 -229
- package/dist/malp/models/regressor.js.map +0 -1
- package/dist/malp/reasoningbank_validator.d.ts +0 -187
- package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
- package/dist/malp/reasoningbank_validator.js +0 -246
- package/dist/malp/reasoningbank_validator.js.map +0 -1
- package/dist/malp/wasm_bindings.d.ts +0 -344
- package/dist/malp/wasm_bindings.d.ts.map +0 -1
- package/dist/malp/wasm_bindings.js +0 -9
- package/dist/malp/wasm_bindings.js.map +0 -1
- package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
- package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
- package/dist/mcp/agentdb-mcp-server.js +0 -2116
- package/dist/mcp/agentdb-mcp-server.js.map +0 -1
- package/dist/mcp/learning-tools-handlers.d.ts +0 -16
- package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
- package/dist/mcp/learning-tools-handlers.js +0 -105
- package/dist/mcp/learning-tools-handlers.js.map +0 -1
- package/dist/optimizations/BatchOperations.d.ts +0 -109
- package/dist/optimizations/BatchOperations.d.ts.map +0 -1
- package/dist/optimizations/BatchOperations.js +0 -407
- package/dist/optimizations/BatchOperations.js.map +0 -1
- package/dist/optimizations/QueryOptimizer.d.ts +0 -83
- package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
- package/dist/optimizations/QueryOptimizer.js +0 -228
- package/dist/optimizations/QueryOptimizer.js.map +0 -1
- package/dist/optimizations/ToolCache.d.ts +0 -137
- package/dist/optimizations/ToolCache.d.ts.map +0 -1
- package/dist/optimizations/ToolCache.js +0 -281
- package/dist/optimizations/ToolCache.js.map +0 -1
- package/dist/optimizations/index.d.ts +0 -10
- package/dist/optimizations/index.d.ts.map +0 -1
- package/dist/optimizations/index.js +0 -8
- package/dist/optimizations/index.js.map +0 -1
- package/dist/security/input-validation.d.ts +0 -109
- package/dist/security/input-validation.d.ts.map +0 -1
- package/dist/security/input-validation.js +0 -398
- package/dist/security/input-validation.js.map +0 -1
- package/dist/security/limits.d.ts +0 -150
- package/dist/security/limits.d.ts.map +0 -1
- package/dist/security/limits.js +0 -288
- package/dist/security/limits.js.map +0 -1
- package/dist/security/path-security.d.ts +0 -100
- package/dist/security/path-security.d.ts.map +0 -1
- package/dist/security/path-security.js +0 -337
- package/dist/security/path-security.js.map +0 -1
- package/dist/security/validation.d.ts +0 -95
- package/dist/security/validation.d.ts.map +0 -1
- package/dist/security/validation.js +0 -315
- package/dist/security/validation.js.map +0 -1
- package/dist/types/quic.d.ts +0 -518
- package/dist/types/quic.d.ts.map +0 -1
- package/dist/types/quic.js +0 -272
- package/dist/types/quic.js.map +0 -1
|
@@ -1,547 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SkillLibrary - Lifelong Learning Skill Management
|
|
3
|
-
*
|
|
4
|
-
* Promotes high-reward trajectories into reusable skills.
|
|
5
|
-
* Manages skill composition, relationships, and adaptive selection.
|
|
6
|
-
*
|
|
7
|
-
* Based on: "Voyager: An Open-Ended Embodied Agent with Large Language Models"
|
|
8
|
-
* https://arxiv.org/abs/2305.16291
|
|
9
|
-
*/
|
|
10
|
-
export class SkillLibrary {
|
|
11
|
-
db;
|
|
12
|
-
embedder;
|
|
13
|
-
vectorBackend;
|
|
14
|
-
constructor(db, embedder, vectorBackend) {
|
|
15
|
-
this.db = db;
|
|
16
|
-
this.embedder = embedder;
|
|
17
|
-
this.vectorBackend = vectorBackend || null;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Create a new skill manually or from an episode
|
|
21
|
-
*/
|
|
22
|
-
async createSkill(skill) {
|
|
23
|
-
const stmt = this.db.prepare(`
|
|
24
|
-
INSERT INTO skills (
|
|
25
|
-
name, description, signature, code, success_rate, uses,
|
|
26
|
-
avg_reward, avg_latency_ms, metadata
|
|
27
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
28
|
-
`);
|
|
29
|
-
// v1 API compatibility: provide defaults for optional fields
|
|
30
|
-
const signature = skill.signature || { inputs: {}, outputs: {} };
|
|
31
|
-
const uses = skill.uses ?? 0;
|
|
32
|
-
const avgReward = skill.avgReward ?? 0;
|
|
33
|
-
const avgLatencyMs = skill.avgLatencyMs ?? 0;
|
|
34
|
-
const result = stmt.run(skill.name, skill.description || null, JSON.stringify(signature), skill.code || null, skill.successRate, uses, avgReward, avgLatencyMs, skill.metadata ? JSON.stringify(skill.metadata) : null);
|
|
35
|
-
const skillId = result.lastInsertRowid;
|
|
36
|
-
// Generate and store embedding in VectorBackend
|
|
37
|
-
const text = this.buildSkillText(skill);
|
|
38
|
-
const embedding = await this.embedder.embed(text);
|
|
39
|
-
// Store in VectorBackend with skill metadata (if available)
|
|
40
|
-
if (this.vectorBackend) {
|
|
41
|
-
this.vectorBackend.insert(`skill:${skillId}`, embedding, {
|
|
42
|
-
name: skill.name,
|
|
43
|
-
description: skill.description,
|
|
44
|
-
successRate: skill.successRate,
|
|
45
|
-
avgReward: skill.avgReward
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
// Legacy: store in database
|
|
50
|
-
this.storeSkillEmbeddingLegacy(skillId, embedding);
|
|
51
|
-
}
|
|
52
|
-
return skillId;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Update skill statistics after use
|
|
56
|
-
*/
|
|
57
|
-
updateSkillStats(skillId, success, reward, latencyMs) {
|
|
58
|
-
const stmt = this.db.prepare(`
|
|
59
|
-
UPDATE skills
|
|
60
|
-
SET
|
|
61
|
-
uses = uses + 1,
|
|
62
|
-
success_rate = (success_rate * uses + ?) / (uses + 1),
|
|
63
|
-
avg_reward = (avg_reward * uses + ?) / (uses + 1),
|
|
64
|
-
avg_latency_ms = (avg_latency_ms * uses + ?) / (uses + 1)
|
|
65
|
-
WHERE id = ?
|
|
66
|
-
`);
|
|
67
|
-
stmt.run(success ? 1 : 0, reward, latencyMs, skillId);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Retrieve skills relevant to a task
|
|
71
|
-
*/
|
|
72
|
-
async searchSkills(query) {
|
|
73
|
-
return this.retrieveSkills(query);
|
|
74
|
-
}
|
|
75
|
-
async retrieveSkills(query) {
|
|
76
|
-
// v1 API compatibility: accept both 'query' and 'task'
|
|
77
|
-
const task = query.task || query.query;
|
|
78
|
-
if (!task) {
|
|
79
|
-
throw new Error('SkillQuery must provide either task (v2) or query (v1)');
|
|
80
|
-
}
|
|
81
|
-
const { k = 5, minSuccessRate = 0.5, preferRecent = true } = query;
|
|
82
|
-
// Generate query embedding
|
|
83
|
-
const queryEmbedding = await this.embedder.embed(task);
|
|
84
|
-
// Use VectorBackend for semantic search (if available)
|
|
85
|
-
if (this.vectorBackend) {
|
|
86
|
-
const searchResults = this.vectorBackend.search(queryEmbedding, k * 3);
|
|
87
|
-
// Map results back to skill IDs and fetch full skill data
|
|
88
|
-
const skillsWithSimilarity = [];
|
|
89
|
-
// Prepare statement ONCE outside loop (better-sqlite3 best practice)
|
|
90
|
-
const getSkillStmt = this.db.prepare('SELECT * FROM skills WHERE id = ?');
|
|
91
|
-
for (const result of searchResults) {
|
|
92
|
-
// Extract skill ID from vector ID (format: "skill:123")
|
|
93
|
-
const skillId = parseInt(result.id.replace('skill:', ''));
|
|
94
|
-
// Fetch full skill data from database
|
|
95
|
-
const row = getSkillStmt.get(skillId);
|
|
96
|
-
if (!row)
|
|
97
|
-
continue;
|
|
98
|
-
// Apply filters
|
|
99
|
-
if (row.success_rate < minSuccessRate)
|
|
100
|
-
continue;
|
|
101
|
-
skillsWithSimilarity.push({
|
|
102
|
-
id: row.id,
|
|
103
|
-
name: row.name,
|
|
104
|
-
description: row.description,
|
|
105
|
-
signature: JSON.parse(row.signature),
|
|
106
|
-
code: row.code,
|
|
107
|
-
successRate: row.success_rate,
|
|
108
|
-
uses: row.uses,
|
|
109
|
-
avgReward: row.avg_reward,
|
|
110
|
-
avgLatencyMs: row.avg_latency_ms,
|
|
111
|
-
createdFromEpisode: row.created_from_episode,
|
|
112
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
|
|
113
|
-
similarity: result.similarity
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
// Compute composite scores
|
|
117
|
-
skillsWithSimilarity.sort((a, b) => {
|
|
118
|
-
const scoreA = this.computeSkillScore(a);
|
|
119
|
-
const scoreB = this.computeSkillScore(b);
|
|
120
|
-
return scoreB - scoreA;
|
|
121
|
-
});
|
|
122
|
-
return skillsWithSimilarity.slice(0, k);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
// Legacy: use SQL-based similarity search
|
|
126
|
-
return this.retrieveSkillsLegacy(query);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Legacy SQL-based skill retrieval (fallback when VectorBackend not available)
|
|
131
|
-
*/
|
|
132
|
-
async retrieveSkillsLegacy(query) {
|
|
133
|
-
// v1 API compatibility: accept both 'query' and 'task'
|
|
134
|
-
const task = query.task || query.query;
|
|
135
|
-
if (!task) {
|
|
136
|
-
throw new Error('SkillQuery must provide either task (v2) or query (v1)');
|
|
137
|
-
}
|
|
138
|
-
const { k = 5, minSuccessRate = 0.5 } = query;
|
|
139
|
-
const queryEmbedding = await this.embedder.embed(task);
|
|
140
|
-
// Fetch all skills with embeddings
|
|
141
|
-
const stmt = this.db.prepare(`
|
|
142
|
-
SELECT s.*, e.embedding
|
|
143
|
-
FROM skills s
|
|
144
|
-
LEFT JOIN skill_embeddings e ON s.id = e.skill_id
|
|
145
|
-
WHERE s.success_rate >= ?
|
|
146
|
-
`);
|
|
147
|
-
const rows = stmt.all(minSuccessRate);
|
|
148
|
-
// Compute similarities
|
|
149
|
-
const skillsWithSimilarity = [];
|
|
150
|
-
for (const row of rows) {
|
|
151
|
-
if (!row.embedding)
|
|
152
|
-
continue;
|
|
153
|
-
const embedding = new Float32Array(row.embedding.buffer);
|
|
154
|
-
const similarity = this.cosineSimilarity(queryEmbedding, embedding);
|
|
155
|
-
skillsWithSimilarity.push({
|
|
156
|
-
id: row.id,
|
|
157
|
-
name: row.name,
|
|
158
|
-
description: row.description,
|
|
159
|
-
signature: JSON.parse(row.signature),
|
|
160
|
-
code: row.code,
|
|
161
|
-
successRate: row.success_rate,
|
|
162
|
-
uses: row.uses,
|
|
163
|
-
avgReward: row.avg_reward,
|
|
164
|
-
avgLatencyMs: row.avg_latency_ms,
|
|
165
|
-
createdFromEpisode: row.created_from_episode,
|
|
166
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
|
|
167
|
-
similarity
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
// Sort by composite score
|
|
171
|
-
skillsWithSimilarity.sort((a, b) => {
|
|
172
|
-
const scoreA = this.computeSkillScore(a);
|
|
173
|
-
const scoreB = this.computeSkillScore(b);
|
|
174
|
-
return scoreB - scoreA;
|
|
175
|
-
});
|
|
176
|
-
return skillsWithSimilarity.slice(0, k);
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Store skill embedding (legacy fallback)
|
|
180
|
-
*/
|
|
181
|
-
storeSkillEmbeddingLegacy(skillId, embedding) {
|
|
182
|
-
const stmt = this.db.prepare(`
|
|
183
|
-
INSERT INTO skill_embeddings (skill_id, embedding)
|
|
184
|
-
VALUES (?, ?)
|
|
185
|
-
ON CONFLICT(skill_id) DO UPDATE SET embedding = excluded.embedding
|
|
186
|
-
`);
|
|
187
|
-
const buffer = Buffer.from(embedding.buffer);
|
|
188
|
-
stmt.run(skillId, buffer);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Cosine similarity between two vectors
|
|
192
|
-
*/
|
|
193
|
-
cosineSimilarity(a, b) {
|
|
194
|
-
let dotProduct = 0;
|
|
195
|
-
let normA = 0;
|
|
196
|
-
let normB = 0;
|
|
197
|
-
for (let i = 0; i < a.length; i++) {
|
|
198
|
-
dotProduct += a[i] * b[i];
|
|
199
|
-
normA += a[i] * a[i];
|
|
200
|
-
normB += b[i] * b[i];
|
|
201
|
-
}
|
|
202
|
-
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Link two skills with a relationship
|
|
206
|
-
*/
|
|
207
|
-
linkSkills(link) {
|
|
208
|
-
const stmt = this.db.prepare(`
|
|
209
|
-
INSERT INTO skill_links (parent_skill_id, child_skill_id, relationship, weight, metadata)
|
|
210
|
-
VALUES (?, ?, ?, ?, ?)
|
|
211
|
-
ON CONFLICT(parent_skill_id, child_skill_id, relationship)
|
|
212
|
-
DO UPDATE SET weight = excluded.weight
|
|
213
|
-
`);
|
|
214
|
-
stmt.run(link.parentSkillId, link.childSkillId, link.relationship, link.weight, link.metadata ? JSON.stringify(link.metadata) : null);
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Get skill composition plan (prerequisites and alternatives)
|
|
218
|
-
*/
|
|
219
|
-
getSkillPlan(skillId) {
|
|
220
|
-
// Get main skill
|
|
221
|
-
const skill = this.getSkillById(skillId);
|
|
222
|
-
// Get prerequisites
|
|
223
|
-
const prereqStmt = this.db.prepare(`
|
|
224
|
-
SELECT s.* FROM skills s
|
|
225
|
-
JOIN skill_links sl ON s.id = sl.child_skill_id
|
|
226
|
-
WHERE sl.parent_skill_id = ? AND sl.relationship = 'prerequisite'
|
|
227
|
-
ORDER BY sl.weight DESC
|
|
228
|
-
`);
|
|
229
|
-
const prerequisites = prereqStmt.all(skillId).map(this.rowToSkill);
|
|
230
|
-
// Get alternatives
|
|
231
|
-
const altStmt = this.db.prepare(`
|
|
232
|
-
SELECT s.* FROM skills s
|
|
233
|
-
JOIN skill_links sl ON s.id = sl.child_skill_id
|
|
234
|
-
WHERE sl.parent_skill_id = ? AND sl.relationship = 'alternative'
|
|
235
|
-
ORDER BY sl.weight DESC, s.success_rate DESC
|
|
236
|
-
`);
|
|
237
|
-
const alternatives = altStmt.all(skillId).map(this.rowToSkill);
|
|
238
|
-
// Get refinements
|
|
239
|
-
const refStmt = this.db.prepare(`
|
|
240
|
-
SELECT s.* FROM skills s
|
|
241
|
-
JOIN skill_links sl ON s.id = sl.child_skill_id
|
|
242
|
-
WHERE sl.parent_skill_id = ? AND sl.relationship = 'refinement'
|
|
243
|
-
ORDER BY sl.weight DESC, s.created_at DESC
|
|
244
|
-
`);
|
|
245
|
-
const refinements = refStmt.all(skillId).map(this.rowToSkill);
|
|
246
|
-
return { skill, prerequisites, alternatives, refinements };
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Consolidate high-reward episodes into skills with ML pattern extraction
|
|
250
|
-
* This is the core learning mechanism enhanced with pattern analysis
|
|
251
|
-
*/
|
|
252
|
-
async consolidateEpisodesIntoSkills(config) {
|
|
253
|
-
const { minAttempts = 3, minReward = 0.7, timeWindowDays = 7, extractPatterns = true } = config;
|
|
254
|
-
const stmt = this.db.prepare(`
|
|
255
|
-
SELECT
|
|
256
|
-
task,
|
|
257
|
-
COUNT(*) as attempt_count,
|
|
258
|
-
AVG(reward) as avg_reward,
|
|
259
|
-
AVG(success) as success_rate,
|
|
260
|
-
AVG(latency_ms) as avg_latency,
|
|
261
|
-
MAX(id) as latest_episode_id,
|
|
262
|
-
GROUP_CONCAT(id) as episode_ids
|
|
263
|
-
FROM episodes
|
|
264
|
-
WHERE ts > strftime('%s', 'now') - ?
|
|
265
|
-
AND reward >= ?
|
|
266
|
-
GROUP BY task
|
|
267
|
-
HAVING attempt_count >= ?
|
|
268
|
-
`);
|
|
269
|
-
const candidates = stmt.all(timeWindowDays * 86400, minReward, minAttempts);
|
|
270
|
-
let created = 0;
|
|
271
|
-
let updated = 0;
|
|
272
|
-
const patterns = [];
|
|
273
|
-
for (const candidate of candidates) {
|
|
274
|
-
const episodeIds = candidate.episode_ids.split(',').map(Number);
|
|
275
|
-
// Extract patterns from successful episodes if requested
|
|
276
|
-
let extractedPatterns = [];
|
|
277
|
-
let successIndicators = [];
|
|
278
|
-
let enhancedDescription = `Auto-generated skill from successful episodes`;
|
|
279
|
-
if (extractPatterns) {
|
|
280
|
-
const patternData = await this.extractPatternsFromEpisodes(episodeIds);
|
|
281
|
-
extractedPatterns = patternData.commonPatterns;
|
|
282
|
-
successIndicators = patternData.successIndicators;
|
|
283
|
-
if (extractedPatterns.length > 0) {
|
|
284
|
-
enhancedDescription = `Skill learned from ${episodeIds.length} successful episodes. Common patterns: ${extractedPatterns.slice(0, 3).join(', ')}`;
|
|
285
|
-
}
|
|
286
|
-
patterns.push({
|
|
287
|
-
task: candidate.task,
|
|
288
|
-
commonPatterns: extractedPatterns,
|
|
289
|
-
successIndicators: successIndicators,
|
|
290
|
-
avgReward: candidate.avg_reward
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
// Check if skill already exists
|
|
294
|
-
const existing = this.db.prepare('SELECT id FROM skills WHERE name = ?').get(candidate.task);
|
|
295
|
-
if (!existing) {
|
|
296
|
-
// Create new skill with extracted patterns
|
|
297
|
-
const skill = {
|
|
298
|
-
name: candidate.task,
|
|
299
|
-
description: enhancedDescription,
|
|
300
|
-
signature: {
|
|
301
|
-
inputs: { task: 'string' },
|
|
302
|
-
outputs: { result: 'any' }
|
|
303
|
-
},
|
|
304
|
-
successRate: candidate.success_rate,
|
|
305
|
-
uses: candidate.attempt_count,
|
|
306
|
-
avgReward: candidate.avg_reward,
|
|
307
|
-
avgLatencyMs: candidate.avg_latency || 0,
|
|
308
|
-
createdFromEpisode: candidate.latest_episode_id,
|
|
309
|
-
metadata: {
|
|
310
|
-
sourceEpisodes: episodeIds,
|
|
311
|
-
autoGenerated: true,
|
|
312
|
-
consolidatedAt: Date.now(),
|
|
313
|
-
extractedPatterns: extractedPatterns,
|
|
314
|
-
successIndicators: successIndicators,
|
|
315
|
-
patternConfidence: this.calculatePatternConfidence(episodeIds.length, candidate.success_rate)
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
await this.createSkill(skill);
|
|
319
|
-
created++;
|
|
320
|
-
}
|
|
321
|
-
else {
|
|
322
|
-
// Update existing skill stats
|
|
323
|
-
this.updateSkillStats(existing.id, candidate.success_rate > 0.5, candidate.avg_reward, candidate.avg_latency || 0);
|
|
324
|
-
updated++;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
return { created, updated, patterns };
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Extract common patterns from successful episodes using ML-inspired analysis
|
|
331
|
-
*/
|
|
332
|
-
async extractPatternsFromEpisodes(episodeIds) {
|
|
333
|
-
// Retrieve episodes with their outputs and critiques
|
|
334
|
-
const episodes = this.db.prepare(`
|
|
335
|
-
SELECT id, task, input, output, critique, reward, success, metadata
|
|
336
|
-
FROM episodes
|
|
337
|
-
WHERE id IN (${episodeIds.map(() => '?').join(',')})
|
|
338
|
-
AND success = 1
|
|
339
|
-
`).all(...episodeIds);
|
|
340
|
-
if (episodes.length === 0) {
|
|
341
|
-
return { commonPatterns: [], successIndicators: [] };
|
|
342
|
-
}
|
|
343
|
-
const commonPatterns = [];
|
|
344
|
-
const successIndicators = [];
|
|
345
|
-
// Pattern 1: Analyze output text for common keywords and phrases
|
|
346
|
-
const outputTexts = episodes
|
|
347
|
-
.map(ep => ep.output)
|
|
348
|
-
.filter(Boolean);
|
|
349
|
-
if (outputTexts.length > 0) {
|
|
350
|
-
const keywordFrequency = this.extractKeywordFrequency(outputTexts);
|
|
351
|
-
const topKeywords = this.getTopKeywords(keywordFrequency, 5);
|
|
352
|
-
if (topKeywords.length > 0) {
|
|
353
|
-
commonPatterns.push(`Common techniques: ${topKeywords.join(', ')}`);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
// Pattern 2: Analyze critique patterns for successful strategies
|
|
357
|
-
const critiques = episodes
|
|
358
|
-
.map(ep => ep.critique)
|
|
359
|
-
.filter(Boolean);
|
|
360
|
-
if (critiques.length > 0) {
|
|
361
|
-
const critiqueKeywords = this.extractKeywordFrequency(critiques);
|
|
362
|
-
const topCritiquePatterns = this.getTopKeywords(critiqueKeywords, 3);
|
|
363
|
-
if (topCritiquePatterns.length > 0) {
|
|
364
|
-
successIndicators.push(...topCritiquePatterns);
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
// Pattern 3: Analyze reward distribution
|
|
368
|
-
const avgReward = episodes.reduce((sum, ep) => sum + ep.reward, 0) / episodes.length;
|
|
369
|
-
const highRewardCount = episodes.filter(ep => ep.reward > avgReward).length;
|
|
370
|
-
const highRewardRatio = highRewardCount / episodes.length;
|
|
371
|
-
if (highRewardRatio > 0.6) {
|
|
372
|
-
successIndicators.push(`High consistency (${(highRewardRatio * 100).toFixed(0)}% above average)`);
|
|
373
|
-
}
|
|
374
|
-
// Pattern 4: Analyze metadata for common parameters
|
|
375
|
-
const metadataPatterns = this.extractMetadataPatterns(episodes);
|
|
376
|
-
if (metadataPatterns.length > 0) {
|
|
377
|
-
commonPatterns.push(...metadataPatterns);
|
|
378
|
-
}
|
|
379
|
-
// Pattern 5: Temporal analysis - learning curve
|
|
380
|
-
const learningTrend = this.analyzeLearningTrend(episodes);
|
|
381
|
-
if (learningTrend) {
|
|
382
|
-
successIndicators.push(learningTrend);
|
|
383
|
-
}
|
|
384
|
-
return { commonPatterns, successIndicators };
|
|
385
|
-
}
|
|
386
|
-
/**
|
|
387
|
-
* Extract keyword frequency from text array using NLP-inspired techniques
|
|
388
|
-
*/
|
|
389
|
-
extractKeywordFrequency(texts) {
|
|
390
|
-
const frequency = new Map();
|
|
391
|
-
// Common stop words to filter out
|
|
392
|
-
const stopWords = new Set([
|
|
393
|
-
'the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
|
|
394
|
-
'of', 'with', 'by', 'from', 'as', 'is', 'was', 'are', 'were', 'been',
|
|
395
|
-
'be', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'should',
|
|
396
|
-
'could', 'may', 'might', 'must', 'can', 'this', 'that', 'these', 'those'
|
|
397
|
-
]);
|
|
398
|
-
for (const text of texts) {
|
|
399
|
-
// Extract words (alphanumeric sequences)
|
|
400
|
-
const words = text.toLowerCase().match(/\b[a-z0-9_-]+\b/g) || [];
|
|
401
|
-
for (const word of words) {
|
|
402
|
-
if (word.length > 3 && !stopWords.has(word)) {
|
|
403
|
-
frequency.set(word, (frequency.get(word) || 0) + 1);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
return frequency;
|
|
408
|
-
}
|
|
409
|
-
/**
|
|
410
|
-
* Get top N keywords by frequency
|
|
411
|
-
*/
|
|
412
|
-
getTopKeywords(frequency, n) {
|
|
413
|
-
return Array.from(frequency.entries())
|
|
414
|
-
.sort((a, b) => b[1] - a[1])
|
|
415
|
-
.slice(0, n)
|
|
416
|
-
.filter(([_, count]) => count >= 2) // Only keywords appearing at least twice
|
|
417
|
-
.map(([word, _]) => word);
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* Extract common patterns from episode metadata
|
|
421
|
-
*/
|
|
422
|
-
extractMetadataPatterns(episodes) {
|
|
423
|
-
const patterns = [];
|
|
424
|
-
const metadataFields = new Map();
|
|
425
|
-
for (const episode of episodes) {
|
|
426
|
-
if (episode.metadata) {
|
|
427
|
-
try {
|
|
428
|
-
const metadata = typeof episode.metadata === 'string'
|
|
429
|
-
? JSON.parse(episode.metadata)
|
|
430
|
-
: episode.metadata;
|
|
431
|
-
for (const [key, value] of Object.entries(metadata)) {
|
|
432
|
-
if (!metadataFields.has(key)) {
|
|
433
|
-
metadataFields.set(key, new Set());
|
|
434
|
-
}
|
|
435
|
-
metadataFields.get(key).add(value);
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
catch (e) {
|
|
439
|
-
// Skip invalid metadata
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
// Find fields with consistent values
|
|
444
|
-
metadataFields.forEach((values, field) => {
|
|
445
|
-
if (values.size === 1) {
|
|
446
|
-
// All episodes have the same value for this field
|
|
447
|
-
const value = Array.from(values)[0];
|
|
448
|
-
patterns.push(`Consistent ${field}: ${value}`);
|
|
449
|
-
}
|
|
450
|
-
});
|
|
451
|
-
return patterns;
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* Analyze learning trend across episodes
|
|
455
|
-
*/
|
|
456
|
-
analyzeLearningTrend(episodes) {
|
|
457
|
-
if (episodes.length < 3)
|
|
458
|
-
return null;
|
|
459
|
-
// Sort by episode ID (temporal order)
|
|
460
|
-
const sorted = [...episodes].sort((a, b) => a.id - b.id);
|
|
461
|
-
const firstHalfReward = sorted.slice(0, Math.floor(sorted.length / 2))
|
|
462
|
-
.reduce((sum, ep) => sum + ep.reward, 0) / Math.floor(sorted.length / 2);
|
|
463
|
-
const secondHalfReward = sorted.slice(Math.floor(sorted.length / 2))
|
|
464
|
-
.reduce((sum, ep) => sum + ep.reward, 0) / (sorted.length - Math.floor(sorted.length / 2));
|
|
465
|
-
const improvement = ((secondHalfReward - firstHalfReward) / firstHalfReward) * 100;
|
|
466
|
-
if (improvement > 10) {
|
|
467
|
-
return `Strong learning curve (+${improvement.toFixed(0)}% improvement)`;
|
|
468
|
-
}
|
|
469
|
-
else if (improvement > 5) {
|
|
470
|
-
return `Moderate learning curve (+${improvement.toFixed(0)}% improvement)`;
|
|
471
|
-
}
|
|
472
|
-
else if (Math.abs(improvement) < 5) {
|
|
473
|
-
return `Stable performance (±${Math.abs(improvement).toFixed(0)}%)`;
|
|
474
|
-
}
|
|
475
|
-
return null;
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
* Calculate pattern confidence score based on sample size and success rate
|
|
479
|
-
*/
|
|
480
|
-
calculatePatternConfidence(sampleSize, successRate) {
|
|
481
|
-
// Confidence increases with sample size and success rate
|
|
482
|
-
// Using a sigmoid-like function for smooth scaling
|
|
483
|
-
const sampleFactor = Math.min(sampleSize / 10, 1.0); // Saturates at 10 samples
|
|
484
|
-
const successFactor = successRate;
|
|
485
|
-
return Math.min(sampleFactor * successFactor, 0.99);
|
|
486
|
-
}
|
|
487
|
-
/**
|
|
488
|
-
* Prune underperforming skills
|
|
489
|
-
*/
|
|
490
|
-
pruneSkills(config) {
|
|
491
|
-
const { minUses = 3, minSuccessRate = 0.4, maxAgeDays = 60 } = config;
|
|
492
|
-
const stmt = this.db.prepare(`
|
|
493
|
-
DELETE FROM skills
|
|
494
|
-
WHERE uses < ?
|
|
495
|
-
AND success_rate < ?
|
|
496
|
-
AND created_at < strftime('%s', 'now') - ?
|
|
497
|
-
`);
|
|
498
|
-
const result = stmt.run(minUses, minSuccessRate, maxAgeDays * 86400);
|
|
499
|
-
return result.changes;
|
|
500
|
-
}
|
|
501
|
-
// ========================================================================
|
|
502
|
-
// Private Helper Methods
|
|
503
|
-
// ========================================================================
|
|
504
|
-
getSkillById(id) {
|
|
505
|
-
const stmt = this.db.prepare('SELECT * FROM skills WHERE id = ?');
|
|
506
|
-
const row = stmt.get(id);
|
|
507
|
-
if (!row)
|
|
508
|
-
throw new Error(`Skill ${id} not found`);
|
|
509
|
-
return this.rowToSkill(row);
|
|
510
|
-
}
|
|
511
|
-
rowToSkill(row) {
|
|
512
|
-
return {
|
|
513
|
-
id: row.id,
|
|
514
|
-
name: row.name,
|
|
515
|
-
description: row.description,
|
|
516
|
-
signature: JSON.parse(row.signature),
|
|
517
|
-
code: row.code,
|
|
518
|
-
successRate: row.success_rate,
|
|
519
|
-
uses: row.uses,
|
|
520
|
-
avgReward: row.avg_reward,
|
|
521
|
-
avgLatencyMs: row.avg_latency_ms,
|
|
522
|
-
createdFromEpisode: row.created_from_episode,
|
|
523
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : undefined
|
|
524
|
-
};
|
|
525
|
-
}
|
|
526
|
-
buildSkillText(skill) {
|
|
527
|
-
const parts = [skill.name];
|
|
528
|
-
if (skill.description)
|
|
529
|
-
parts.push(skill.description);
|
|
530
|
-
parts.push(JSON.stringify(skill.signature));
|
|
531
|
-
return parts.join('\n');
|
|
532
|
-
}
|
|
533
|
-
/**
|
|
534
|
-
* Compute composite skill score from similarity and metadata
|
|
535
|
-
* VectorBackend provides normalized similarity (0-1)
|
|
536
|
-
*/
|
|
537
|
-
computeSkillScore(skill) {
|
|
538
|
-
// Composite score: similarity * 0.4 + success_rate * 0.3 + (uses/1000) * 0.1 + avg_reward * 0.2
|
|
539
|
-
const uses = skill.uses ?? 0;
|
|
540
|
-
const avgReward = skill.avgReward ?? 0;
|
|
541
|
-
return (skill.similarity * 0.4 +
|
|
542
|
-
skill.successRate * 0.3 +
|
|
543
|
-
Math.min(uses / 1000, 1.0) * 0.1 +
|
|
544
|
-
avgReward * 0.2);
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
//# sourceMappingURL=SkillLibrary.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SkillLibrary.js","sourceRoot":"","sources":["../../src/controllers/SkillLibrary.ts"],"names":[],"mappings":"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"}
|