@skillsmith/core 2.1.0 → 2.1.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/.tsbuildinfo +1 -1
- package/dist/src/analysis/types.d.ts +2 -0
- package/dist/src/analysis/types.d.ts.map +1 -1
- package/dist/src/analysis/types.js +13 -1
- package/dist/src/analysis/types.js.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.js +26 -44
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
- package/dist/src/analytics/schema.d.ts +1 -1
- package/dist/src/analytics/schema.d.ts.map +1 -1
- package/dist/src/analytics/schema.js +68 -0
- package/dist/src/analytics/schema.js.map +1 -1
- package/dist/src/api/client.d.ts +33 -29
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +15 -10
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/billing/BillingService.d.ts +139 -0
- package/dist/src/billing/BillingService.d.ts.map +1 -0
- package/dist/src/billing/BillingService.js +393 -0
- package/dist/src/billing/BillingService.js.map +1 -0
- package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
- package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
- package/dist/src/billing/GDPRComplianceService.js +361 -0
- package/dist/src/billing/GDPRComplianceService.js.map +1 -0
- package/dist/src/billing/StripeClient.d.ts +177 -0
- package/dist/src/billing/StripeClient.d.ts.map +1 -0
- package/dist/src/billing/StripeClient.js +462 -0
- package/dist/src/billing/StripeClient.js.map +1 -0
- package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
- package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
- package/dist/src/billing/StripeReconciliationJob.js +405 -0
- package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
- package/dist/src/billing/StripeWebhookHandler.js +409 -0
- package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
- package/dist/src/billing/index.d.ts +18 -0
- package/dist/src/billing/index.d.ts.map +1 -0
- package/dist/src/billing/index.js +19 -0
- package/dist/src/billing/index.js.map +1 -0
- package/dist/src/billing/types.d.ts +266 -0
- package/dist/src/billing/types.d.ts.map +1 -0
- package/dist/src/billing/types.js +23 -0
- package/dist/src/billing/types.js.map +1 -0
- package/dist/src/embeddings/hnsw-store.d.ts +568 -0
- package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.js +805 -0
- package/dist/src/embeddings/hnsw-store.js.map +1 -0
- package/dist/src/embeddings/index.d.ts +2 -0
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +2 -0
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +457 -0
- package/dist/src/learning/PatternStore.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.js +893 -0
- package/dist/src/learning/PatternStore.js.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.js +627 -0
- package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
- package/dist/src/learning/index.d.ts +15 -0
- package/dist/src/learning/index.d.ts.map +1 -0
- package/dist/src/learning/index.js +15 -0
- package/dist/src/learning/index.js.map +1 -0
- package/dist/src/routing/SONARouter.d.ts +154 -0
- package/dist/src/routing/SONARouter.d.ts.map +1 -0
- package/dist/src/routing/SONARouter.js +679 -0
- package/dist/src/routing/SONARouter.js.map +1 -0
- package/dist/src/routing/index.d.ts +9 -0
- package/dist/src/routing/index.d.ts.map +1 -0
- package/dist/src/routing/index.js +10 -0
- package/dist/src/routing/index.js.map +1 -0
- package/dist/src/routing/types.d.ts +331 -0
- package/dist/src/routing/types.d.ts.map +1 -0
- package/dist/src/routing/types.js +203 -0
- package/dist/src/routing/types.js.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +5 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/security/SkillSandbox.d.ts +156 -0
- package/dist/src/security/SkillSandbox.d.ts.map +1 -0
- package/dist/src/security/SkillSandbox.js +303 -0
- package/dist/src/security/SkillSandbox.js.map +1 -0
- package/dist/src/security/index.d.ts +3 -1
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +5 -1
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/rate-limiter/presets.d.ts +12 -0
- package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
- package/dist/src/security/rate-limiter/presets.js +12 -0
- package/dist/src/security/rate-limiter/presets.js.map +1 -1
- package/dist/src/security/sanitization.d.ts +85 -0
- package/dist/src/security/sanitization.d.ts.map +1 -1
- package/dist/src/security/sanitization.js +133 -0
- package/dist/src/security/sanitization.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.js +232 -28
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/security/scanner/patterns.d.ts +13 -0
- package/dist/src/security/scanner/patterns.d.ts.map +1 -1
- package/dist/src/security/scanner/patterns.js +51 -0
- package/dist/src/security/scanner/patterns.js.map +1 -1
- package/dist/src/security/scanner/types.d.ts +13 -1
- package/dist/src/security/scanner/types.d.ts.map +1 -1
- package/dist/src/security/scanner/weights.d.ts.map +1 -1
- package/dist/src/security/scanner/weights.js +1 -0
- package/dist/src/security/scanner/weights.js.map +1 -1
- package/dist/src/session/SessionManager.d.ts +7 -0
- package/dist/src/session/SessionManager.d.ts.map +1 -1
- package/dist/src/session/SessionManager.js +117 -10
- package/dist/src/session/SessionManager.js.map +1 -1
- package/dist/src/sync/SyncEngine.d.ts.map +1 -1
- package/dist/src/sync/SyncEngine.js +52 -32
- package/dist/src/sync/SyncEngine.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
- package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.js +720 -0
- package/dist/src/testing/MultiLLMProvider.js.map +1 -0
- package/dist/src/testing/index.d.ts +8 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +9 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/types.d.ts +3 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tests/SecurityScanner.test.js +337 -1
- package/dist/tests/SecurityScanner.test.js.map +1 -1
- package/dist/tests/billing/BillingService.test.d.ts +7 -0
- package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
- package/dist/tests/billing/BillingService.test.js +168 -0
- package/dist/tests/billing/BillingService.test.js.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.js +195 -0
- package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
- package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
- package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
- package/dist/tests/billing/StripeReconciliation.test.js +266 -0
- package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
- package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
- package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
- package/dist/tests/billing/stripe-validators.test.js +107 -0
- package/dist/tests/billing/stripe-validators.test.js.map +1 -0
- package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
- package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
- package/dist/tests/embeddings/hnsw-store.test.js +295 -0
- package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
- package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
- package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
- package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
- package/dist/tests/integration/neural/helpers.d.ts +132 -0
- package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
- package/dist/tests/integration/neural/helpers.js +287 -0
- package/dist/tests/integration/neural/helpers.js.map +1 -0
- package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
- package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/personalization.test.js +304 -0
- package/dist/tests/integration/neural/personalization.test.js.map +1 -0
- package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
- package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/preference-learner.test.js +289 -0
- package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
- package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
- package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/privacy.test.js +249 -0
- package/dist/tests/integration/neural/privacy.test.js.map +1 -0
- package/dist/tests/integration/neural/setup.d.ts +175 -0
- package/dist/tests/integration/neural/setup.d.ts.map +1 -0
- package/dist/tests/integration/neural/setup.js +487 -0
- package/dist/tests/integration/neural/setup.js.map +1 -0
- package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
- package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/signal-collection.test.js +232 -0
- package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
- package/dist/tests/learning/PatternStore.test.d.ts +8 -0
- package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
- package/dist/tests/learning/PatternStore.test.js +589 -0
- package/dist/tests/learning/PatternStore.test.js.map +1 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
- package/dist/tests/routing/SONARouter.test.d.ts +8 -0
- package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
- package/dist/tests/routing/SONARouter.test.js +400 -0
- package/dist/tests/routing/SONARouter.test.js.map +1 -0
- package/dist/tests/security/ContinuousSecurity.test.js +10 -12
- package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
- package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
- package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
- package/dist/tests/security/SkillSandbox.test.js +321 -0
- package/dist/tests/security/SkillSandbox.test.js.map +1 -0
- package/dist/tests/sync/SyncEngine.test.js +4 -2
- package/dist/tests/sync/SyncEngine.test.js.map +1 -1
- package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
- package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
- package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
- package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
- package/package.json +16 -3
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ReasoningBank Integration for Learning Loop
|
|
3
|
+
* @module @skillsmith/core/learning/ReasoningBankIntegration
|
|
4
|
+
* @see SMI-1520: Integrate learning loop with V3 intelligence module
|
|
5
|
+
*
|
|
6
|
+
* Provides integration between Skillsmith's signal collection and
|
|
7
|
+
* Claude-Flow V3's ReasoningBank for pattern storage and learning.
|
|
8
|
+
*
|
|
9
|
+
* Responsibilities:
|
|
10
|
+
* - Convert user signals to ReasoningBank trajectories
|
|
11
|
+
* - Store learned patterns in V3's pattern storage
|
|
12
|
+
* - Query learned confidence scores (verdicts)
|
|
13
|
+
* - Maintain backwards compatibility with existing signal storage
|
|
14
|
+
*/
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Reward Constants
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Reward values for different user actions
|
|
20
|
+
* These map user signals to trajectory rewards for reinforcement learning
|
|
21
|
+
*/
|
|
22
|
+
export const TRAJECTORY_REWARDS = {
|
|
23
|
+
/** User accepted recommendation - positive signal */
|
|
24
|
+
ACCEPT: 1.0,
|
|
25
|
+
/** User dismissed recommendation - mild negative signal */
|
|
26
|
+
DISMISS: -0.5,
|
|
27
|
+
/** User actively uses skill - reinforcement signal */
|
|
28
|
+
USAGE: 0.3,
|
|
29
|
+
/** Skill abandoned (installed but unused) - negative signal */
|
|
30
|
+
ABANDONMENT: -0.3,
|
|
31
|
+
/** User uninstalled skill - strong negative signal */
|
|
32
|
+
UNINSTALL: -0.7,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Verdict confidence thresholds
|
|
36
|
+
*/
|
|
37
|
+
export const CONFIDENCE_THRESHOLDS = {
|
|
38
|
+
/** High confidence - strong signal pattern */
|
|
39
|
+
HIGH: 0.8,
|
|
40
|
+
/** Medium confidence - moderate signal pattern */
|
|
41
|
+
MEDIUM: 0.5,
|
|
42
|
+
/** Low confidence - weak signal pattern */
|
|
43
|
+
LOW: 0.3,
|
|
44
|
+
/** Minimum for personalization */
|
|
45
|
+
MINIMUM: 0.1,
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Default configuration values
|
|
49
|
+
*/
|
|
50
|
+
export const DEFAULT_CONFIG = {
|
|
51
|
+
intelligenceConfig: {
|
|
52
|
+
enableNeural: true,
|
|
53
|
+
maxPatterns: 10000,
|
|
54
|
+
similarityThreshold: 0.7,
|
|
55
|
+
},
|
|
56
|
+
signalCollector: undefined,
|
|
57
|
+
enableDualWrite: true,
|
|
58
|
+
minPatternsForVerdict: 3,
|
|
59
|
+
patternSimilarityThreshold: 0.6,
|
|
60
|
+
};
|
|
61
|
+
// ============================================================================
|
|
62
|
+
// Main Integration Class
|
|
63
|
+
// ============================================================================
|
|
64
|
+
/**
|
|
65
|
+
* ReasoningBankIntegration bridges Skillsmith's learning loop with V3's intelligence module.
|
|
66
|
+
*
|
|
67
|
+
* This class:
|
|
68
|
+
* 1. Implements ISignalCollector for drop-in replacement
|
|
69
|
+
* 2. Converts user signals to ReasoningBank trajectories
|
|
70
|
+
* 3. Provides verdict queries for learned skill confidence
|
|
71
|
+
* 4. Maintains backwards compatibility via dual-write mode
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* // Initialize with V3 ReasoningBank
|
|
76
|
+
* const integration = new ReasoningBankIntegration({
|
|
77
|
+
* intelligenceConfig: { enableNeural: true },
|
|
78
|
+
* enableDualWrite: true, // Write to both V3 and legacy storage
|
|
79
|
+
* })
|
|
80
|
+
* await integration.initialize()
|
|
81
|
+
*
|
|
82
|
+
* // Record signals (automatically converts to trajectories)
|
|
83
|
+
* await integration.recordAccept('anthropic/commit', context)
|
|
84
|
+
*
|
|
85
|
+
* // Query learned confidence
|
|
86
|
+
* const verdict = await integration.getVerdict('anthropic/commit')
|
|
87
|
+
* console.log(verdict.confidence) // 0.85 = likely to be accepted
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export class ReasoningBankIntegration {
|
|
91
|
+
config;
|
|
92
|
+
reasoningBank = null;
|
|
93
|
+
legacyCollector = null;
|
|
94
|
+
initialized = false;
|
|
95
|
+
/**
|
|
96
|
+
* Creates a new ReasoningBankIntegration instance
|
|
97
|
+
*
|
|
98
|
+
* @param config - Integration configuration
|
|
99
|
+
*/
|
|
100
|
+
constructor(config = {}) {
|
|
101
|
+
this.config = {
|
|
102
|
+
...DEFAULT_CONFIG,
|
|
103
|
+
...config,
|
|
104
|
+
intelligenceConfig: {
|
|
105
|
+
...DEFAULT_CONFIG.intelligenceConfig,
|
|
106
|
+
...config.intelligenceConfig,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
this.legacyCollector = config.signalCollector ?? null;
|
|
110
|
+
}
|
|
111
|
+
// ==========================================================================
|
|
112
|
+
// Initialization
|
|
113
|
+
// ==========================================================================
|
|
114
|
+
/**
|
|
115
|
+
* Initialize the integration with V3 ReasoningBank
|
|
116
|
+
*
|
|
117
|
+
* Must be called before using any signal recording or verdict methods.
|
|
118
|
+
*
|
|
119
|
+
* @throws {Error} If V3 intelligence module initialization fails
|
|
120
|
+
*/
|
|
121
|
+
async initialize() {
|
|
122
|
+
if (this.initialized) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
// Import V3 intelligence module dynamically
|
|
127
|
+
// Note: Actual import path depends on V3 package structure
|
|
128
|
+
// const { initializeIntelligence, getReasoningBank } = await import(
|
|
129
|
+
// 'claude-flow/v3/@claude-flow/cli/dist/src/intelligence/index.js'
|
|
130
|
+
// )
|
|
131
|
+
// Initialize V3 intelligence with config
|
|
132
|
+
// await initializeIntelligence(this.config.intelligenceConfig)
|
|
133
|
+
// Get ReasoningBank instance
|
|
134
|
+
// this.reasoningBank = await getReasoningBank()
|
|
135
|
+
// TODO: SMI-1520 - Uncomment above when V3 intelligence module is available
|
|
136
|
+
// For now, create a stub that throws informative errors
|
|
137
|
+
this.reasoningBank = this.createStubReasoningBank();
|
|
138
|
+
this.initialized = true;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
throw new Error(`Failed to initialize ReasoningBankIntegration: ${error instanceof Error ? error.message : String(error)}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Check if integration is initialized
|
|
146
|
+
*/
|
|
147
|
+
isInitialized() {
|
|
148
|
+
return this.initialized;
|
|
149
|
+
}
|
|
150
|
+
// ==========================================================================
|
|
151
|
+
// ISignalCollector Implementation
|
|
152
|
+
// ==========================================================================
|
|
153
|
+
/**
|
|
154
|
+
* Record user accepting a recommendation
|
|
155
|
+
*
|
|
156
|
+
* Converts to positive trajectory (reward: 1.0) in ReasoningBank.
|
|
157
|
+
*
|
|
158
|
+
* @param skillId - Skill that was accepted
|
|
159
|
+
* @param context - Context when skill was recommended
|
|
160
|
+
* @param metadata - Optional metadata
|
|
161
|
+
*/
|
|
162
|
+
async recordAccept(skillId, context, metadata) {
|
|
163
|
+
this.ensureInitialized();
|
|
164
|
+
const trajectoryMeta = metadata ? { ...metadata } : undefined;
|
|
165
|
+
const trajectory = this.createTrajectory(skillId, 'accept', context, trajectoryMeta);
|
|
166
|
+
const verdict = this.createVerdict(true, TRAJECTORY_REWARDS.ACCEPT);
|
|
167
|
+
await this.recordTrajectoryInternal(trajectory, verdict);
|
|
168
|
+
// Dual-write for backwards compatibility
|
|
169
|
+
if (this.config.enableDualWrite && this.legacyCollector) {
|
|
170
|
+
await this.legacyCollector.recordAccept(skillId, context, metadata);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Record user dismissing a recommendation
|
|
175
|
+
*
|
|
176
|
+
* Converts to negative trajectory (reward: -0.5) in ReasoningBank.
|
|
177
|
+
*
|
|
178
|
+
* @param skillId - Skill that was dismissed
|
|
179
|
+
* @param context - Context when skill was recommended
|
|
180
|
+
* @param reason - Optional dismissal reason
|
|
181
|
+
*/
|
|
182
|
+
async recordDismiss(skillId, context, reason) {
|
|
183
|
+
this.ensureInitialized();
|
|
184
|
+
const trajectory = this.createTrajectory(skillId, 'dismiss', context, { reason });
|
|
185
|
+
const verdict = this.createVerdict(false, Math.abs(TRAJECTORY_REWARDS.DISMISS));
|
|
186
|
+
await this.recordTrajectoryInternal(trajectory, verdict);
|
|
187
|
+
// Dual-write for backwards compatibility
|
|
188
|
+
if (this.config.enableDualWrite && this.legacyCollector) {
|
|
189
|
+
await this.legacyCollector.recordDismiss(skillId, context, reason);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Record skill usage event
|
|
194
|
+
*
|
|
195
|
+
* Converts to reinforcement trajectory (reward: 0.3) in ReasoningBank.
|
|
196
|
+
*
|
|
197
|
+
* @param skillId - Skill that was used
|
|
198
|
+
* @param frequency - Usage frequency
|
|
199
|
+
*/
|
|
200
|
+
async recordUsage(skillId, frequency) {
|
|
201
|
+
this.ensureInitialized();
|
|
202
|
+
const trajectory = this.createTrajectory(skillId, 'usage', { installed_skills: [skillId], original_score: 1.0 }, { frequency });
|
|
203
|
+
const verdict = this.createVerdict(true, TRAJECTORY_REWARDS.USAGE);
|
|
204
|
+
await this.recordTrajectoryInternal(trajectory, verdict);
|
|
205
|
+
// Dual-write for backwards compatibility
|
|
206
|
+
if (this.config.enableDualWrite && this.legacyCollector) {
|
|
207
|
+
await this.legacyCollector.recordUsage(skillId, frequency);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Record skill abandonment
|
|
212
|
+
*
|
|
213
|
+
* Converts to negative trajectory (reward: -0.3) in ReasoningBank.
|
|
214
|
+
*
|
|
215
|
+
* @param skillId - Skill that was abandoned
|
|
216
|
+
* @param daysSinceInstall - Days since installation
|
|
217
|
+
*/
|
|
218
|
+
async recordAbandonment(skillId, daysSinceInstall) {
|
|
219
|
+
this.ensureInitialized();
|
|
220
|
+
const trajectory = this.createTrajectory(skillId, 'abandonment', { installed_skills: [skillId], original_score: 0.5 }, { daysSinceInstall });
|
|
221
|
+
const verdict = this.createVerdict(false, Math.abs(TRAJECTORY_REWARDS.ABANDONMENT));
|
|
222
|
+
await this.recordTrajectoryInternal(trajectory, verdict);
|
|
223
|
+
// Dual-write for backwards compatibility
|
|
224
|
+
if (this.config.enableDualWrite && this.legacyCollector) {
|
|
225
|
+
await this.legacyCollector.recordAbandonment(skillId, daysSinceInstall);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Record skill uninstallation
|
|
230
|
+
*
|
|
231
|
+
* Converts to strong negative trajectory (reward: -0.7) in ReasoningBank.
|
|
232
|
+
*
|
|
233
|
+
* @param skillId - Skill that was uninstalled
|
|
234
|
+
* @param daysSinceInstall - Days since installation
|
|
235
|
+
*/
|
|
236
|
+
async recordUninstall(skillId, daysSinceInstall) {
|
|
237
|
+
this.ensureInitialized();
|
|
238
|
+
const trajectory = this.createTrajectory(skillId, 'uninstall', { installed_skills: [], original_score: 0 }, { daysSinceInstall });
|
|
239
|
+
const verdict = this.createVerdict(false, Math.abs(TRAJECTORY_REWARDS.UNINSTALL));
|
|
240
|
+
await this.recordTrajectoryInternal(trajectory, verdict);
|
|
241
|
+
// Dual-write for backwards compatibility
|
|
242
|
+
if (this.config.enableDualWrite && this.legacyCollector) {
|
|
243
|
+
await this.legacyCollector.recordUninstall(skillId, daysSinceInstall);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Query signals with filtering
|
|
248
|
+
*
|
|
249
|
+
* Delegates to legacy collector if available, otherwise returns empty array.
|
|
250
|
+
*
|
|
251
|
+
* @param filter - Filter criteria
|
|
252
|
+
* @param limit - Maximum results
|
|
253
|
+
* @returns Matching signal events
|
|
254
|
+
*/
|
|
255
|
+
async getSignals(filter, limit) {
|
|
256
|
+
if (this.legacyCollector) {
|
|
257
|
+
return this.legacyCollector.getSignals(filter, limit);
|
|
258
|
+
}
|
|
259
|
+
// ReasoningBank stores trajectories, not raw signals
|
|
260
|
+
// Return empty for now - could implement trajectory-to-signal conversion
|
|
261
|
+
return [];
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get total signal count
|
|
265
|
+
*
|
|
266
|
+
* Returns count from legacy collector or ReasoningBank pattern count.
|
|
267
|
+
*/
|
|
268
|
+
async getSignalCount() {
|
|
269
|
+
if (this.legacyCollector) {
|
|
270
|
+
return this.legacyCollector.getSignalCount();
|
|
271
|
+
}
|
|
272
|
+
if (this.reasoningBank) {
|
|
273
|
+
return this.reasoningBank.getPatternCount();
|
|
274
|
+
}
|
|
275
|
+
return 0;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Get signals for specific skill
|
|
279
|
+
*
|
|
280
|
+
* @param skillId - Skill identifier
|
|
281
|
+
* @returns All signals for this skill
|
|
282
|
+
*/
|
|
283
|
+
async getSignalsForSkill(skillId) {
|
|
284
|
+
if (this.legacyCollector) {
|
|
285
|
+
return this.legacyCollector.getSignalsForSkill(skillId);
|
|
286
|
+
}
|
|
287
|
+
return [];
|
|
288
|
+
}
|
|
289
|
+
// ==========================================================================
|
|
290
|
+
// Verdict Queries
|
|
291
|
+
// ==========================================================================
|
|
292
|
+
/**
|
|
293
|
+
* Query learned confidence for a skill
|
|
294
|
+
*
|
|
295
|
+
* Uses ReasoningBank pattern matching to determine how likely
|
|
296
|
+
* the user is to accept recommendations for this skill.
|
|
297
|
+
*
|
|
298
|
+
* @param skillId - Skill identifier to query
|
|
299
|
+
* @returns Verdict with confidence score and metadata
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* ```typescript
|
|
303
|
+
* const verdict = await integration.getVerdict('anthropic/commit')
|
|
304
|
+
* if (verdict.confidence > 0.7 && verdict.hasEnoughData) {
|
|
305
|
+
* // High confidence the user will accept this skill
|
|
306
|
+
* }
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
async getVerdict(skillId) {
|
|
310
|
+
this.ensureInitialized();
|
|
311
|
+
if (!this.reasoningBank) {
|
|
312
|
+
return this.createEmptyVerdict(skillId);
|
|
313
|
+
}
|
|
314
|
+
// Query patterns related to this skill
|
|
315
|
+
const patterns = await this.reasoningBank.findSimilarPatterns(`skill:${skillId}`, {
|
|
316
|
+
limit: 50,
|
|
317
|
+
minSimilarity: this.config.patternSimilarityThreshold,
|
|
318
|
+
});
|
|
319
|
+
if (patterns.length < this.config.minPatternsForVerdict) {
|
|
320
|
+
return this.createEmptyVerdict(skillId);
|
|
321
|
+
}
|
|
322
|
+
// Calculate weighted confidence from patterns
|
|
323
|
+
const { confidence, breakdown } = this.calculateConfidenceFromPatterns(patterns);
|
|
324
|
+
return {
|
|
325
|
+
skillId,
|
|
326
|
+
confidence,
|
|
327
|
+
patternCount: patterns.length,
|
|
328
|
+
hasEnoughData: patterns.length >= this.config.minPatternsForVerdict,
|
|
329
|
+
signalBreakdown: breakdown,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Query verdicts for multiple skills in batch
|
|
334
|
+
*
|
|
335
|
+
* More efficient than individual queries for ranking recommendations.
|
|
336
|
+
*
|
|
337
|
+
* @param skillIds - Array of skill identifiers
|
|
338
|
+
* @returns Batch result with all verdicts
|
|
339
|
+
*/
|
|
340
|
+
async getBatchVerdicts(skillIds) {
|
|
341
|
+
const startTime = Date.now();
|
|
342
|
+
const verdicts = await Promise.all(skillIds.map((skillId) => this.getVerdict(skillId)));
|
|
343
|
+
return {
|
|
344
|
+
verdicts,
|
|
345
|
+
totalPatterns: verdicts.reduce((sum, v) => sum + v.patternCount, 0),
|
|
346
|
+
latencyMs: Date.now() - startTime,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Get top N skills by learned confidence
|
|
351
|
+
*
|
|
352
|
+
* Useful for proactive recommendations based on user patterns.
|
|
353
|
+
*
|
|
354
|
+
* @param limit - Maximum skills to return
|
|
355
|
+
* @returns Skills sorted by confidence (highest first)
|
|
356
|
+
*/
|
|
357
|
+
async getTopSkillsByConfidence(limit = 10) {
|
|
358
|
+
this.ensureInitialized();
|
|
359
|
+
if (!this.reasoningBank) {
|
|
360
|
+
return [];
|
|
361
|
+
}
|
|
362
|
+
// Get all unique skill patterns
|
|
363
|
+
const allPatterns = await this.reasoningBank.findSimilarPatterns('skill:*', {
|
|
364
|
+
limit: 1000,
|
|
365
|
+
minSimilarity: 0.1,
|
|
366
|
+
});
|
|
367
|
+
// Group by skill and calculate confidence
|
|
368
|
+
const skillMap = new Map();
|
|
369
|
+
for (const pattern of allPatterns) {
|
|
370
|
+
const skillId = this.extractSkillIdFromPattern(pattern);
|
|
371
|
+
if (skillId) {
|
|
372
|
+
const existing = skillMap.get(skillId) || [];
|
|
373
|
+
existing.push(pattern);
|
|
374
|
+
skillMap.set(skillId, existing);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
// Calculate verdicts for each skill
|
|
378
|
+
const verdicts = [];
|
|
379
|
+
skillMap.forEach((patterns, skillId) => {
|
|
380
|
+
if (patterns.length >= this.config.minPatternsForVerdict) {
|
|
381
|
+
const { confidence, breakdown } = this.calculateConfidenceFromPatterns(patterns);
|
|
382
|
+
verdicts.push({
|
|
383
|
+
skillId,
|
|
384
|
+
confidence,
|
|
385
|
+
patternCount: patterns.length,
|
|
386
|
+
hasEnoughData: true,
|
|
387
|
+
signalBreakdown: breakdown,
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
// Sort by confidence and return top N
|
|
392
|
+
return verdicts.sort((a, b) => b.confidence - a.confidence).slice(0, limit);
|
|
393
|
+
}
|
|
394
|
+
// ==========================================================================
|
|
395
|
+
// Private Helpers
|
|
396
|
+
// ==========================================================================
|
|
397
|
+
/**
|
|
398
|
+
* Ensure integration is initialized before operations
|
|
399
|
+
*/
|
|
400
|
+
ensureInitialized() {
|
|
401
|
+
if (!this.initialized) {
|
|
402
|
+
throw new Error('ReasoningBankIntegration not initialized. Call initialize() first.');
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Create trajectory steps from user signal
|
|
407
|
+
*/
|
|
408
|
+
createTrajectory(skillId, action, context, metadata) {
|
|
409
|
+
const timestamp = Date.now();
|
|
410
|
+
return [
|
|
411
|
+
{
|
|
412
|
+
id: `${skillId}-${action}-${timestamp}`,
|
|
413
|
+
action: `skill:${action}`,
|
|
414
|
+
observation: JSON.stringify({
|
|
415
|
+
skill_id: skillId,
|
|
416
|
+
context,
|
|
417
|
+
...metadata,
|
|
418
|
+
}),
|
|
419
|
+
reward: this.getRewardForAction(action),
|
|
420
|
+
metadata: {
|
|
421
|
+
skillId,
|
|
422
|
+
timestamp,
|
|
423
|
+
...metadata,
|
|
424
|
+
},
|
|
425
|
+
},
|
|
426
|
+
];
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Create verdict from action success and reward
|
|
430
|
+
*/
|
|
431
|
+
createVerdict(success, confidenceFromReward) {
|
|
432
|
+
return {
|
|
433
|
+
success,
|
|
434
|
+
confidence: Math.min(1.0, Math.abs(confidenceFromReward)),
|
|
435
|
+
reasoning: success
|
|
436
|
+
? 'User action indicates positive preference'
|
|
437
|
+
: 'User action indicates negative preference',
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Get reward value for action type
|
|
442
|
+
*/
|
|
443
|
+
getRewardForAction(action) {
|
|
444
|
+
switch (action) {
|
|
445
|
+
case 'accept':
|
|
446
|
+
return TRAJECTORY_REWARDS.ACCEPT;
|
|
447
|
+
case 'dismiss':
|
|
448
|
+
return TRAJECTORY_REWARDS.DISMISS;
|
|
449
|
+
case 'usage':
|
|
450
|
+
return TRAJECTORY_REWARDS.USAGE;
|
|
451
|
+
case 'abandonment':
|
|
452
|
+
return TRAJECTORY_REWARDS.ABANDONMENT;
|
|
453
|
+
case 'uninstall':
|
|
454
|
+
return TRAJECTORY_REWARDS.UNINSTALL;
|
|
455
|
+
default:
|
|
456
|
+
return 0;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Record trajectory to ReasoningBank
|
|
461
|
+
*/
|
|
462
|
+
async recordTrajectoryInternal(steps, verdict) {
|
|
463
|
+
if (!this.reasoningBank) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
await this.reasoningBank.recordTrajectory(steps, verdict);
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Create empty verdict for skill with insufficient data
|
|
470
|
+
*/
|
|
471
|
+
createEmptyVerdict(skillId) {
|
|
472
|
+
return {
|
|
473
|
+
skillId,
|
|
474
|
+
confidence: 0,
|
|
475
|
+
patternCount: 0,
|
|
476
|
+
hasEnoughData: false,
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Calculate confidence score from patterns
|
|
481
|
+
*/
|
|
482
|
+
calculateConfidenceFromPatterns(patterns) {
|
|
483
|
+
let positiveWeight = 0;
|
|
484
|
+
let negativeWeight = 0;
|
|
485
|
+
const breakdown = {
|
|
486
|
+
accepts: 0,
|
|
487
|
+
dismisses: 0,
|
|
488
|
+
usages: 0,
|
|
489
|
+
abandonments: 0,
|
|
490
|
+
uninstalls: 0,
|
|
491
|
+
};
|
|
492
|
+
for (const pattern of patterns) {
|
|
493
|
+
const weight = pattern.similarity * pattern.verdict.confidence;
|
|
494
|
+
const action = this.extractActionFromPattern(pattern);
|
|
495
|
+
switch (action) {
|
|
496
|
+
case 'accept':
|
|
497
|
+
positiveWeight += weight * TRAJECTORY_REWARDS.ACCEPT;
|
|
498
|
+
breakdown.accepts++;
|
|
499
|
+
break;
|
|
500
|
+
case 'dismiss':
|
|
501
|
+
negativeWeight += weight * Math.abs(TRAJECTORY_REWARDS.DISMISS);
|
|
502
|
+
breakdown.dismisses++;
|
|
503
|
+
break;
|
|
504
|
+
case 'usage':
|
|
505
|
+
positiveWeight += weight * TRAJECTORY_REWARDS.USAGE;
|
|
506
|
+
breakdown.usages++;
|
|
507
|
+
break;
|
|
508
|
+
case 'abandonment':
|
|
509
|
+
negativeWeight += weight * Math.abs(TRAJECTORY_REWARDS.ABANDONMENT);
|
|
510
|
+
breakdown.abandonments++;
|
|
511
|
+
break;
|
|
512
|
+
case 'uninstall':
|
|
513
|
+
negativeWeight += weight * Math.abs(TRAJECTORY_REWARDS.UNINSTALL);
|
|
514
|
+
breakdown.uninstalls++;
|
|
515
|
+
break;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
// Normalize confidence to [-1, 1] range
|
|
519
|
+
const totalWeight = positiveWeight + negativeWeight;
|
|
520
|
+
const confidence = totalWeight > 0 ? (positiveWeight - negativeWeight) / totalWeight : 0;
|
|
521
|
+
return { confidence, breakdown };
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Extract skill ID from pattern
|
|
525
|
+
*/
|
|
526
|
+
extractSkillIdFromPattern(pattern) {
|
|
527
|
+
const step = pattern.trajectory[0];
|
|
528
|
+
if (step?.metadata?.skillId) {
|
|
529
|
+
return step.metadata.skillId;
|
|
530
|
+
}
|
|
531
|
+
return null;
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Extract action type from pattern
|
|
535
|
+
*/
|
|
536
|
+
extractActionFromPattern(pattern) {
|
|
537
|
+
const step = pattern.trajectory[0];
|
|
538
|
+
if (step?.action) {
|
|
539
|
+
return step.action.replace('skill:', '');
|
|
540
|
+
}
|
|
541
|
+
return null;
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Create stub ReasoningBank for when V3 module is unavailable
|
|
545
|
+
*/
|
|
546
|
+
createStubReasoningBank() {
|
|
547
|
+
const patterns = new Map();
|
|
548
|
+
return {
|
|
549
|
+
async recordTrajectory(steps, verdict) {
|
|
550
|
+
const id = `pattern-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
551
|
+
patterns.set(id, { id, similarity: 1.0, trajectory: steps, verdict });
|
|
552
|
+
return id;
|
|
553
|
+
},
|
|
554
|
+
async findSimilarPatterns(query, options) {
|
|
555
|
+
const limit = options?.limit ?? 10;
|
|
556
|
+
const minSimilarity = options?.minSimilarity ?? 0.5;
|
|
557
|
+
return Array.from(patterns.values())
|
|
558
|
+
.filter((p) => {
|
|
559
|
+
// Simple query matching for stub
|
|
560
|
+
if (query.startsWith('skill:')) {
|
|
561
|
+
const skillId = query.replace('skill:', '');
|
|
562
|
+
const patternSkillId = p.trajectory[0]?.metadata?.skillId;
|
|
563
|
+
return skillId === '*' || patternSkillId === skillId;
|
|
564
|
+
}
|
|
565
|
+
return true;
|
|
566
|
+
})
|
|
567
|
+
.filter((p) => p.similarity >= minSimilarity)
|
|
568
|
+
.slice(0, limit);
|
|
569
|
+
},
|
|
570
|
+
async getPattern(id) {
|
|
571
|
+
return patterns.get(id) ?? null;
|
|
572
|
+
},
|
|
573
|
+
async clear() {
|
|
574
|
+
patterns.clear();
|
|
575
|
+
},
|
|
576
|
+
async getPatternCount() {
|
|
577
|
+
return patterns.size;
|
|
578
|
+
},
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
// ============================================================================
|
|
583
|
+
// Factory Function
|
|
584
|
+
// ============================================================================
|
|
585
|
+
/**
|
|
586
|
+
* Create and initialize a ReasoningBankIntegration instance
|
|
587
|
+
*
|
|
588
|
+
* Convenience factory that handles initialization.
|
|
589
|
+
*
|
|
590
|
+
* @param config - Integration configuration
|
|
591
|
+
* @returns Initialized integration instance
|
|
592
|
+
*
|
|
593
|
+
* @example
|
|
594
|
+
* ```typescript
|
|
595
|
+
* const integration = await createReasoningBankIntegration({
|
|
596
|
+
* enableDualWrite: true,
|
|
597
|
+
* signalCollector: legacyCollector,
|
|
598
|
+
* })
|
|
599
|
+
* ```
|
|
600
|
+
*/
|
|
601
|
+
export async function createReasoningBankIntegration(config = {}) {
|
|
602
|
+
const integration = new ReasoningBankIntegration(config);
|
|
603
|
+
await integration.initialize();
|
|
604
|
+
return integration;
|
|
605
|
+
}
|
|
606
|
+
// ============================================================================
|
|
607
|
+
// Type Guards
|
|
608
|
+
// ============================================================================
|
|
609
|
+
/**
|
|
610
|
+
* Check if a verdict has sufficient data for personalization
|
|
611
|
+
*/
|
|
612
|
+
export function hasConfidentVerdict(verdict) {
|
|
613
|
+
return verdict.hasEnoughData && Math.abs(verdict.confidence) >= CONFIDENCE_THRESHOLDS.MINIMUM;
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Check if verdict indicates user preference (positive confidence)
|
|
617
|
+
*/
|
|
618
|
+
export function indicatesPreference(verdict) {
|
|
619
|
+
return verdict.confidence > CONFIDENCE_THRESHOLDS.LOW && verdict.hasEnoughData;
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* Check if verdict indicates user rejection (negative confidence)
|
|
623
|
+
*/
|
|
624
|
+
export function indicatesRejection(verdict) {
|
|
625
|
+
return verdict.confidence < -CONFIDENCE_THRESHOLDS.LOW && verdict.hasEnoughData;
|
|
626
|
+
}
|
|
627
|
+
//# sourceMappingURL=ReasoningBankIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReasoningBankIntegration.js","sourceRoot":"","sources":["../../../src/learning/ReasoningBankIntegration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Learning Module Exports
|
|
3
|
+
* @module @skillsmith/core/learning
|
|
4
|
+
*
|
|
5
|
+
* Exports for the recommendation learning system including:
|
|
6
|
+
* - Signal collection and user preferences
|
|
7
|
+
* - ReasoningBank integration for trajectory learning
|
|
8
|
+
* - PatternStore with EWC++ for pattern preservation
|
|
9
|
+
*/
|
|
10
|
+
export type { SignalType, SignalEvent, SignalFilter, SignalMetadata, RecommendationContext, DismissReason, SkillCategory, UserPreferenceProfile, LearningConfig, PersonalizedRecommendation, AggregateStats, UserDataExport, LearningEvents, } from './types.js';
|
|
11
|
+
export { SIGNAL_WEIGHTS, DEFAULT_LEARNING_CONFIG, COLD_START_WEIGHTS } from './types.js';
|
|
12
|
+
export type { ISignalCollector, IPreferenceLearner, IPrivacyManager, IPersonalizationEngine, IUserPreferenceRepository, } from './interfaces.js';
|
|
13
|
+
export { ReasoningBankIntegration, createReasoningBankIntegration, hasConfidentVerdict, indicatesPreference, indicatesRejection, type ReasoningBankIntegrationConfig, type IntelligenceConfig, type TrajectoryStep, type TrajectoryVerdict, type SkillVerdict, type BatchVerdictResult, type IReasoningBank, TRAJECTORY_REWARDS, CONFIDENCE_THRESHOLDS, DEFAULT_CONFIG as DEFAULT_REASONING_BANK_CONFIG, } from './ReasoningBankIntegration.js';
|
|
14
|
+
export { PatternStore, createPatternStore, FisherInformationMatrix, type EWCConfig, type PatternStoreConfig, type PatternOutcomeType, type PatternOutcome, type PatternRecommendationContext, type SkillFeatures, type Pattern, type StoredPattern, type PatternQuery, type SimilarPattern, type ConsolidationResult, type PatternStoreMetrics, type IFisherInformationMatrix, DEFAULT_EWC_CONFIG, DEFAULT_PATTERN_STORE_CONFIG, PATTERN_REWARDS, } from './PatternStore.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/learning/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,0BAA0B,EAC1B,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAGxF,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,8BAA8B,EACnC,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,IAAI,6BAA6B,GAChD,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,4BAA4B,EAC5B,eAAe,GAChB,MAAM,mBAAmB,CAAA"}
|