@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.
Files changed (204) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/analysis/types.d.ts +2 -0
  3. package/dist/src/analysis/types.d.ts.map +1 -1
  4. package/dist/src/analysis/types.js +13 -1
  5. package/dist/src/analysis/types.js.map +1 -1
  6. package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
  7. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  8. package/dist/src/analytics/AnalyticsRepository.js +26 -44
  9. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  10. package/dist/src/analytics/schema.d.ts +1 -1
  11. package/dist/src/analytics/schema.d.ts.map +1 -1
  12. package/dist/src/analytics/schema.js +68 -0
  13. package/dist/src/analytics/schema.js.map +1 -1
  14. package/dist/src/api/client.d.ts +33 -29
  15. package/dist/src/api/client.d.ts.map +1 -1
  16. package/dist/src/api/client.js +15 -10
  17. package/dist/src/api/client.js.map +1 -1
  18. package/dist/src/billing/BillingService.d.ts +139 -0
  19. package/dist/src/billing/BillingService.d.ts.map +1 -0
  20. package/dist/src/billing/BillingService.js +393 -0
  21. package/dist/src/billing/BillingService.js.map +1 -0
  22. package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
  23. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
  24. package/dist/src/billing/GDPRComplianceService.js +361 -0
  25. package/dist/src/billing/GDPRComplianceService.js.map +1 -0
  26. package/dist/src/billing/StripeClient.d.ts +177 -0
  27. package/dist/src/billing/StripeClient.d.ts.map +1 -0
  28. package/dist/src/billing/StripeClient.js +462 -0
  29. package/dist/src/billing/StripeClient.js.map +1 -0
  30. package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
  31. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
  32. package/dist/src/billing/StripeReconciliationJob.js +405 -0
  33. package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
  34. package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
  35. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
  36. package/dist/src/billing/StripeWebhookHandler.js +409 -0
  37. package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
  38. package/dist/src/billing/index.d.ts +18 -0
  39. package/dist/src/billing/index.d.ts.map +1 -0
  40. package/dist/src/billing/index.js +19 -0
  41. package/dist/src/billing/index.js.map +1 -0
  42. package/dist/src/billing/types.d.ts +266 -0
  43. package/dist/src/billing/types.d.ts.map +1 -0
  44. package/dist/src/billing/types.js +23 -0
  45. package/dist/src/billing/types.js.map +1 -0
  46. package/dist/src/embeddings/hnsw-store.d.ts +568 -0
  47. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
  48. package/dist/src/embeddings/hnsw-store.js +805 -0
  49. package/dist/src/embeddings/hnsw-store.js.map +1 -0
  50. package/dist/src/embeddings/index.d.ts +2 -0
  51. package/dist/src/embeddings/index.d.ts.map +1 -1
  52. package/dist/src/embeddings/index.js +2 -0
  53. package/dist/src/embeddings/index.js.map +1 -1
  54. package/dist/src/index.d.ts +1 -0
  55. package/dist/src/index.d.ts.map +1 -1
  56. package/dist/src/index.js +2 -0
  57. package/dist/src/index.js.map +1 -1
  58. package/dist/src/learning/PatternStore.d.ts +457 -0
  59. package/dist/src/learning/PatternStore.d.ts.map +1 -0
  60. package/dist/src/learning/PatternStore.js +893 -0
  61. package/dist/src/learning/PatternStore.js.map +1 -0
  62. package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
  63. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
  64. package/dist/src/learning/ReasoningBankIntegration.js +627 -0
  65. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
  66. package/dist/src/learning/index.d.ts +15 -0
  67. package/dist/src/learning/index.d.ts.map +1 -0
  68. package/dist/src/learning/index.js +15 -0
  69. package/dist/src/learning/index.js.map +1 -0
  70. package/dist/src/routing/SONARouter.d.ts +154 -0
  71. package/dist/src/routing/SONARouter.d.ts.map +1 -0
  72. package/dist/src/routing/SONARouter.js +679 -0
  73. package/dist/src/routing/SONARouter.js.map +1 -0
  74. package/dist/src/routing/index.d.ts +9 -0
  75. package/dist/src/routing/index.d.ts.map +1 -0
  76. package/dist/src/routing/index.js +10 -0
  77. package/dist/src/routing/index.js.map +1 -0
  78. package/dist/src/routing/types.d.ts +331 -0
  79. package/dist/src/routing/types.d.ts.map +1 -0
  80. package/dist/src/routing/types.js +203 -0
  81. package/dist/src/routing/types.js.map +1 -0
  82. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +5 -0
  83. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  84. package/dist/src/security/SkillSandbox.d.ts +156 -0
  85. package/dist/src/security/SkillSandbox.d.ts.map +1 -0
  86. package/dist/src/security/SkillSandbox.js +303 -0
  87. package/dist/src/security/SkillSandbox.js.map +1 -0
  88. package/dist/src/security/index.d.ts +3 -1
  89. package/dist/src/security/index.d.ts.map +1 -1
  90. package/dist/src/security/index.js +5 -1
  91. package/dist/src/security/index.js.map +1 -1
  92. package/dist/src/security/rate-limiter/presets.d.ts +12 -0
  93. package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
  94. package/dist/src/security/rate-limiter/presets.js +12 -0
  95. package/dist/src/security/rate-limiter/presets.js.map +1 -1
  96. package/dist/src/security/sanitization.d.ts +85 -0
  97. package/dist/src/security/sanitization.d.ts.map +1 -1
  98. package/dist/src/security/sanitization.js +133 -0
  99. package/dist/src/security/sanitization.js.map +1 -1
  100. package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
  101. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  102. package/dist/src/security/scanner/SecurityScanner.js +232 -28
  103. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  104. package/dist/src/security/scanner/patterns.d.ts +13 -0
  105. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  106. package/dist/src/security/scanner/patterns.js +51 -0
  107. package/dist/src/security/scanner/patterns.js.map +1 -1
  108. package/dist/src/security/scanner/types.d.ts +13 -1
  109. package/dist/src/security/scanner/types.d.ts.map +1 -1
  110. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  111. package/dist/src/security/scanner/weights.js +1 -0
  112. package/dist/src/security/scanner/weights.js.map +1 -1
  113. package/dist/src/session/SessionManager.d.ts +7 -0
  114. package/dist/src/session/SessionManager.d.ts.map +1 -1
  115. package/dist/src/session/SessionManager.js +117 -10
  116. package/dist/src/session/SessionManager.js.map +1 -1
  117. package/dist/src/sync/SyncEngine.d.ts.map +1 -1
  118. package/dist/src/sync/SyncEngine.js +52 -32
  119. package/dist/src/sync/SyncEngine.js.map +1 -1
  120. package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
  121. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
  122. package/dist/src/testing/MultiLLMProvider.js +720 -0
  123. package/dist/src/testing/MultiLLMProvider.js.map +1 -0
  124. package/dist/src/testing/index.d.ts +8 -0
  125. package/dist/src/testing/index.d.ts.map +1 -0
  126. package/dist/src/testing/index.js +9 -0
  127. package/dist/src/testing/index.js.map +1 -0
  128. package/dist/src/types.d.ts +3 -0
  129. package/dist/src/types.d.ts.map +1 -1
  130. package/dist/tests/SecurityScanner.test.js +337 -1
  131. package/dist/tests/SecurityScanner.test.js.map +1 -1
  132. package/dist/tests/billing/BillingService.test.d.ts +7 -0
  133. package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
  134. package/dist/tests/billing/BillingService.test.js +168 -0
  135. package/dist/tests/billing/BillingService.test.js.map +1 -0
  136. package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
  137. package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
  138. package/dist/tests/billing/GDPRCompliance.test.js +195 -0
  139. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
  140. package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
  141. package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
  142. package/dist/tests/billing/StripeReconciliation.test.js +266 -0
  143. package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
  144. package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
  145. package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
  146. package/dist/tests/billing/stripe-validators.test.js +107 -0
  147. package/dist/tests/billing/stripe-validators.test.js.map +1 -0
  148. package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
  149. package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
  150. package/dist/tests/embeddings/hnsw-store.test.js +295 -0
  151. package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
  152. package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
  153. package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
  154. package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
  155. package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
  156. package/dist/tests/integration/neural/helpers.d.ts +132 -0
  157. package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
  158. package/dist/tests/integration/neural/helpers.js +287 -0
  159. package/dist/tests/integration/neural/helpers.js.map +1 -0
  160. package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
  161. package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
  162. package/dist/tests/integration/neural/personalization.test.js +304 -0
  163. package/dist/tests/integration/neural/personalization.test.js.map +1 -0
  164. package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
  165. package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
  166. package/dist/tests/integration/neural/preference-learner.test.js +289 -0
  167. package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
  168. package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
  169. package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
  170. package/dist/tests/integration/neural/privacy.test.js +249 -0
  171. package/dist/tests/integration/neural/privacy.test.js.map +1 -0
  172. package/dist/tests/integration/neural/setup.d.ts +175 -0
  173. package/dist/tests/integration/neural/setup.d.ts.map +1 -0
  174. package/dist/tests/integration/neural/setup.js +487 -0
  175. package/dist/tests/integration/neural/setup.js.map +1 -0
  176. package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
  177. package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
  178. package/dist/tests/integration/neural/signal-collection.test.js +232 -0
  179. package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
  180. package/dist/tests/learning/PatternStore.test.d.ts +8 -0
  181. package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
  182. package/dist/tests/learning/PatternStore.test.js +589 -0
  183. package/dist/tests/learning/PatternStore.test.js.map +1 -0
  184. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
  185. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
  186. package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
  187. package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
  188. package/dist/tests/routing/SONARouter.test.d.ts +8 -0
  189. package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
  190. package/dist/tests/routing/SONARouter.test.js +400 -0
  191. package/dist/tests/routing/SONARouter.test.js.map +1 -0
  192. package/dist/tests/security/ContinuousSecurity.test.js +10 -12
  193. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  194. package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
  195. package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
  196. package/dist/tests/security/SkillSandbox.test.js +321 -0
  197. package/dist/tests/security/SkillSandbox.test.js.map +1 -0
  198. package/dist/tests/sync/SyncEngine.test.js +4 -2
  199. package/dist/tests/sync/SyncEngine.test.js.map +1 -1
  200. package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
  201. package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
  202. package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
  203. package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
  204. package/package.json +16 -3
@@ -0,0 +1,232 @@
1
+ /**
2
+ * SMI-1535: Signal Collection Integration Tests
3
+ *
4
+ * Tests the ISignalCollector interface for recording and querying
5
+ * user interaction signals in the Recommendation Learning Loop.
6
+ *
7
+ * Test Cases:
8
+ * 1. Record ACCEPT signal with skill metadata
9
+ * 2. Record DISMISS signal with reason
10
+ * 3. Record USAGE_DAILY signal
11
+ * 4. Record USAGE_WEEKLY signal
12
+ * 5. Record ABANDONED signal after 30 days
13
+ * 6. Record UNINSTALL signal
14
+ * 7. Query signals by type filter
15
+ * 8. Query signals by date range
16
+ *
17
+ * @see packages/core/src/learning/interfaces.ts
18
+ * @see docs/execution/phase5-testing-execution.md
19
+ */
20
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
21
+ import { createNeuralTestContext, cleanupNeuralTestContext, } from './setup.js';
22
+ import { generateContext, generateMetadata, daysAgo, hoursAgo } from './helpers.js';
23
+ import { SignalType, DismissReason, SkillCategory } from '../../../src/learning/types.js';
24
+ describe('SignalCollector Integration', () => {
25
+ let ctx;
26
+ beforeEach(() => {
27
+ ctx = createNeuralTestContext();
28
+ });
29
+ afterEach(async () => {
30
+ await cleanupNeuralTestContext(ctx);
31
+ });
32
+ describe('Recording Signals', () => {
33
+ it('should record ACCEPT signal with skill metadata', async () => {
34
+ const skillId = 'anthropic/commit-helper';
35
+ const context = generateContext({
36
+ installedSkills: ['anthropic/review-pr', 'community/jest-runner'],
37
+ originalScore: 0.92,
38
+ category: SkillCategory.GIT,
39
+ trustTier: 'verified',
40
+ });
41
+ const metadata = generateMetadata({
42
+ timeToAction: 3500,
43
+ suggestionCount: 1,
44
+ });
45
+ await ctx.signalCollector.recordAccept(skillId, context, metadata);
46
+ const signals = await ctx.signalCollector.getSignals({});
47
+ expect(signals).toHaveLength(1);
48
+ const signal = signals[0];
49
+ expect(signal.type).toBe(SignalType.ACCEPT);
50
+ expect(signal.skill_id).toBe(skillId);
51
+ expect(signal.context.installed_skills).toEqual(context.installed_skills);
52
+ expect(signal.context.original_score).toBe(0.92);
53
+ expect(signal.context.category).toBe(SkillCategory.GIT);
54
+ expect(signal.context.trust_tier).toBe('verified');
55
+ expect(signal.metadata?.time_to_action).toBe(3500);
56
+ expect(signal.metadata?.suggestion_count).toBe(1);
57
+ expect(signal.id).toBeDefined();
58
+ expect(signal.timestamp).toBeDefined();
59
+ });
60
+ it('should record DISMISS signal with reason', async () => {
61
+ const skillId = 'community/complex-helper';
62
+ const context = generateContext({
63
+ originalScore: 0.65,
64
+ category: SkillCategory.PRODUCTIVITY,
65
+ trustTier: 'community',
66
+ });
67
+ await ctx.signalCollector.recordDismiss(skillId, context, DismissReason.TOO_COMPLEX);
68
+ const signals = await ctx.signalCollector.getSignals({});
69
+ expect(signals).toHaveLength(1);
70
+ const signal = signals[0];
71
+ expect(signal.type).toBe(SignalType.DISMISS);
72
+ expect(signal.skill_id).toBe(skillId);
73
+ expect(signal.dismiss_reason).toBe(DismissReason.TOO_COMPLEX);
74
+ expect(signal.context.category).toBe(SkillCategory.PRODUCTIVITY);
75
+ });
76
+ it('should record USAGE_DAILY signal', async () => {
77
+ const skillId = 'anthropic/review-pr';
78
+ await ctx.signalCollector.recordUsage(skillId, 'daily');
79
+ const signals = await ctx.signalCollector.getSignals({});
80
+ expect(signals).toHaveLength(1);
81
+ const signal = signals[0];
82
+ expect(signal.type).toBe(SignalType.USAGE_DAILY);
83
+ expect(signal.skill_id).toBe(skillId);
84
+ });
85
+ it('should record USAGE_WEEKLY signal', async () => {
86
+ const skillId = 'community/doc-generator';
87
+ await ctx.signalCollector.recordUsage(skillId, 'weekly');
88
+ const signals = await ctx.signalCollector.getSignals({});
89
+ expect(signals).toHaveLength(1);
90
+ const signal = signals[0];
91
+ expect(signal.type).toBe(SignalType.USAGE_WEEKLY);
92
+ expect(signal.skill_id).toBe(skillId);
93
+ });
94
+ it('should record ABANDONED signal after 30 days', async () => {
95
+ const skillId = 'experimental/unused-tool';
96
+ const daysSinceInstall = 35;
97
+ await ctx.signalCollector.recordAbandonment(skillId, daysSinceInstall);
98
+ const signals = await ctx.signalCollector.getSignals({});
99
+ expect(signals).toHaveLength(1);
100
+ const signal = signals[0];
101
+ expect(signal.type).toBe(SignalType.ABANDONED);
102
+ expect(signal.skill_id).toBe(skillId);
103
+ expect(signal.metadata?.extra?.days_since_install).toBe(35);
104
+ });
105
+ it('should record UNINSTALL signal', async () => {
106
+ const skillId = 'community/unwanted-helper';
107
+ const daysSinceInstall = 14;
108
+ await ctx.signalCollector.recordUninstall(skillId, daysSinceInstall);
109
+ const signals = await ctx.signalCollector.getSignals({});
110
+ expect(signals).toHaveLength(1);
111
+ const signal = signals[0];
112
+ expect(signal.type).toBe(SignalType.UNINSTALL);
113
+ expect(signal.skill_id).toBe(skillId);
114
+ expect(signal.metadata?.extra?.days_since_install).toBe(14);
115
+ });
116
+ });
117
+ describe('Querying Signals', () => {
118
+ beforeEach(async () => {
119
+ // Seed with various signal types
120
+ const gitContext = generateContext({ category: SkillCategory.GIT });
121
+ const testContext = generateContext({ category: SkillCategory.TESTING });
122
+ await ctx.signalCollector.recordAccept('skill-1', gitContext);
123
+ await ctx.signalCollector.recordAccept('skill-2', testContext);
124
+ await ctx.signalCollector.recordDismiss('skill-3', gitContext, DismissReason.NOT_RELEVANT);
125
+ await ctx.signalCollector.recordUsage('skill-1', 'daily');
126
+ await ctx.signalCollector.recordUsage('skill-2', 'weekly');
127
+ await ctx.signalCollector.recordUninstall('skill-4', 10);
128
+ });
129
+ it('should query signals by type filter', async () => {
130
+ // Query single type
131
+ const acceptSignals = await ctx.signalCollector.getSignals({
132
+ type: SignalType.ACCEPT,
133
+ });
134
+ expect(acceptSignals).toHaveLength(2);
135
+ expect(acceptSignals.every((s) => s.type === SignalType.ACCEPT)).toBe(true);
136
+ // Query multiple types
137
+ const usageSignals = await ctx.signalCollector.getSignals({
138
+ type: [SignalType.USAGE_DAILY, SignalType.USAGE_WEEKLY],
139
+ });
140
+ expect(usageSignals).toHaveLength(2);
141
+ expect(usageSignals.every((s) => s.type === SignalType.USAGE_DAILY || s.type === SignalType.USAGE_WEEKLY)).toBe(true);
142
+ // Query dismiss only
143
+ const dismissSignals = await ctx.signalCollector.getSignals({
144
+ type: SignalType.DISMISS,
145
+ });
146
+ expect(dismissSignals).toHaveLength(1);
147
+ expect(dismissSignals[0].dismiss_reason).toBe(DismissReason.NOT_RELEVANT);
148
+ });
149
+ it('should query signals by date range', async () => {
150
+ // Add signals with specific timestamps for time-based testing
151
+ ctx.signalCollector.clear();
152
+ // Signal from 2 days ago
153
+ ctx.signalCollector.addSignal({
154
+ id: 'old-signal-1',
155
+ type: SignalType.ACCEPT,
156
+ skill_id: 'old-skill',
157
+ timestamp: daysAgo(2),
158
+ context: generateContext(),
159
+ });
160
+ // Signal from 1 hour ago
161
+ ctx.signalCollector.addSignal({
162
+ id: 'recent-signal-1',
163
+ type: SignalType.ACCEPT,
164
+ skill_id: 'recent-skill',
165
+ timestamp: hoursAgo(1),
166
+ context: generateContext(),
167
+ });
168
+ // Signal from 5 days ago
169
+ ctx.signalCollector.addSignal({
170
+ id: 'very-old-signal',
171
+ type: SignalType.DISMISS,
172
+ skill_id: 'very-old-skill',
173
+ timestamp: daysAgo(5),
174
+ context: generateContext(),
175
+ });
176
+ // Query last 24 hours
177
+ const recentSignals = await ctx.signalCollector.getSignals({
178
+ time_range: {
179
+ start: daysAgo(1),
180
+ end: Date.now(),
181
+ },
182
+ });
183
+ expect(recentSignals).toHaveLength(1);
184
+ expect(recentSignals[0].skill_id).toBe('recent-skill');
185
+ // Query last 3 days
186
+ const threeDaySignals = await ctx.signalCollector.getSignals({
187
+ time_range: {
188
+ start: daysAgo(3),
189
+ end: Date.now(),
190
+ },
191
+ });
192
+ expect(threeDaySignals).toHaveLength(2);
193
+ // Query all signals
194
+ const allSignals = await ctx.signalCollector.getSignals({});
195
+ expect(allSignals).toHaveLength(3);
196
+ });
197
+ });
198
+ describe('Signal Count and Skill-Specific Queries', () => {
199
+ it('should return accurate signal count', async () => {
200
+ expect(await ctx.signalCollector.getSignalCount()).toBe(0);
201
+ await ctx.signalCollector.recordAccept('skill-1', generateContext());
202
+ expect(await ctx.signalCollector.getSignalCount()).toBe(1);
203
+ await ctx.signalCollector.recordDismiss('skill-2', generateContext());
204
+ await ctx.signalCollector.recordUsage('skill-1', 'daily');
205
+ expect(await ctx.signalCollector.getSignalCount()).toBe(3);
206
+ });
207
+ it('should get signals for specific skill', async () => {
208
+ const targetSkill = 'anthropic/target-skill';
209
+ const otherSkill = 'community/other-skill';
210
+ await ctx.signalCollector.recordAccept(targetSkill, generateContext());
211
+ await ctx.signalCollector.recordUsage(targetSkill, 'daily');
212
+ await ctx.signalCollector.recordUsage(targetSkill, 'weekly');
213
+ await ctx.signalCollector.recordAccept(otherSkill, generateContext());
214
+ const targetSignals = await ctx.signalCollector.getSignalsForSkill(targetSkill);
215
+ expect(targetSignals).toHaveLength(3);
216
+ expect(targetSignals.every((s) => s.skill_id === targetSkill)).toBe(true);
217
+ const otherSignals = await ctx.signalCollector.getSignalsForSkill(otherSkill);
218
+ expect(otherSignals).toHaveLength(1);
219
+ });
220
+ it('should apply limit to query results', async () => {
221
+ // Add 10 signals
222
+ for (let i = 0; i < 10; i++) {
223
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext());
224
+ }
225
+ const limited = await ctx.signalCollector.getSignals({}, 5);
226
+ expect(limited).toHaveLength(5);
227
+ const unlimited = await ctx.signalCollector.getSignals({});
228
+ expect(unlimited).toHaveLength(10);
229
+ });
230
+ });
231
+ });
232
+ //# sourceMappingURL=signal-collection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-collection.test.js","sourceRoot":"","sources":["../../../../tests/integration/neural/signal-collection.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * SMI-1522: PatternStore with EWC++ Tests
3
+ *
4
+ * Tests for the PatternStore class that implements Elastic Weight
5
+ * Consolidation++ for catastrophic forgetting prevention.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=PatternStore.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternStore.test.d.ts","sourceRoot":"","sources":["../../../tests/learning/PatternStore.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}