oh-my-claude-sisyphus 3.4.3 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +45 -0
  2. package/dist/__tests__/learner/auto-learner.test.d.ts +7 -0
  3. package/dist/__tests__/learner/auto-learner.test.d.ts.map +1 -0
  4. package/dist/__tests__/learner/auto-learner.test.js +507 -0
  5. package/dist/__tests__/learner/auto-learner.test.js.map +1 -0
  6. package/dist/__tests__/learner/matcher.test.d.ts +2 -0
  7. package/dist/__tests__/learner/matcher.test.d.ts.map +1 -0
  8. package/dist/__tests__/learner/matcher.test.js +330 -0
  9. package/dist/__tests__/learner/matcher.test.js.map +1 -0
  10. package/dist/analytics/analytics-summary.d.ts.map +1 -1
  11. package/dist/analytics/analytics-summary.js +12 -11
  12. package/dist/analytics/analytics-summary.js.map +1 -1
  13. package/dist/analytics/backfill-dedup.d.ts.map +1 -1
  14. package/dist/analytics/backfill-dedup.js +8 -11
  15. package/dist/analytics/backfill-dedup.js.map +1 -1
  16. package/dist/analytics/backfill-engine.d.ts.map +1 -1
  17. package/dist/analytics/backfill-engine.js +12 -3
  18. package/dist/analytics/backfill-engine.js.map +1 -1
  19. package/dist/analytics/query-engine.d.ts.map +1 -1
  20. package/dist/analytics/query-engine.js +3 -2
  21. package/dist/analytics/query-engine.js.map +1 -1
  22. package/dist/analytics/token-tracker.d.ts.map +1 -1
  23. package/dist/analytics/token-tracker.js +22 -27
  24. package/dist/analytics/token-tracker.js.map +1 -1
  25. package/dist/analytics/transcript-token-extractor.d.ts +17 -1
  26. package/dist/analytics/transcript-token-extractor.d.ts.map +1 -1
  27. package/dist/analytics/transcript-token-extractor.js +66 -19
  28. package/dist/analytics/transcript-token-extractor.js.map +1 -1
  29. package/dist/analytics/types.d.ts +13 -0
  30. package/dist/analytics/types.d.ts.map +1 -1
  31. package/dist/analytics/types.js.map +1 -1
  32. package/dist/cli/index.js +2 -2
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/hooks/learner/auto-invoke.d.ts +82 -0
  35. package/dist/hooks/learner/auto-invoke.d.ts.map +1 -0
  36. package/dist/hooks/learner/auto-invoke.js +234 -0
  37. package/dist/hooks/learner/auto-invoke.js.map +1 -0
  38. package/dist/hooks/learner/auto-learner.d.ts +55 -0
  39. package/dist/hooks/learner/auto-learner.d.ts.map +1 -0
  40. package/dist/hooks/learner/auto-learner.js +361 -0
  41. package/dist/hooks/learner/auto-learner.js.map +1 -0
  42. package/dist/hooks/learner/index.d.ts +3 -0
  43. package/dist/hooks/learner/index.d.ts.map +1 -1
  44. package/dist/hooks/learner/index.js +4 -0
  45. package/dist/hooks/learner/index.js.map +1 -1
  46. package/dist/hooks/learner/matcher.d.ts +40 -0
  47. package/dist/hooks/learner/matcher.d.ts.map +1 -0
  48. package/dist/hooks/learner/matcher.js +230 -0
  49. package/dist/hooks/learner/matcher.js.map +1 -0
  50. package/package.json +1 -1
  51. package/skills/local-skills-setup/SKILL.md +465 -0
  52. package/skills/skill/SKILL.md +406 -0
@@ -0,0 +1,330 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { matchSkills, fuzzyMatch, extractContext, calculateConfidence, } from '../../hooks/learner/matcher.js';
3
+ describe('Smart Skill Matcher', () => {
4
+ //=============================================
5
+ // 1. FUZZY MATCHING - Levenshtein Distance
6
+ //=============================================
7
+ describe('Fuzzy Matching - Levenshtein Distance', () => {
8
+ it('should return 100 for exact word match', () => {
9
+ const score = fuzzyMatch('typescript is great', 'typescript');
10
+ expect(score).toBe(100);
11
+ });
12
+ it('should handle typos with high similarity', () => {
13
+ // "typescrpt" vs "typescript" (missing 'i') - should get a decent score
14
+ const score = fuzzyMatch('fix typescrpt errors', 'typescript');
15
+ // 9 chars vs 10 chars, 1 edit distance -> similarity = (10-1)/10 = 90%
16
+ expect(score).toBeGreaterThanOrEqual(70);
17
+ });
18
+ it('should handle minor typos', () => {
19
+ // "javascrpt" vs "javascript" (missing 'i')
20
+ const score = fuzzyMatch('help with javascrpt', 'javascript');
21
+ expect(score).toBeGreaterThanOrEqual(70);
22
+ });
23
+ it('should give low score for unrelated words', () => {
24
+ const score = fuzzyMatch('hello world', 'typescript');
25
+ expect(score).toBeLessThan(60);
26
+ });
27
+ it('should handle word boundary correctly', () => {
28
+ // "type" is contained in prompt but "typescript" is the pattern
29
+ const score1 = fuzzyMatch('type something', 'typescript');
30
+ // This should be lower than exact match but partial match bonus applies
31
+ expect(score1).toBeGreaterThan(0);
32
+ });
33
+ it('should handle partial matches with inclusion', () => {
34
+ const score = fuzzyMatch('react typescript app', 'react');
35
+ expect(score).toBe(100); // Exact match
36
+ });
37
+ });
38
+ //=============================================
39
+ // 2. PATTERN MATCHING - Glob and Regex
40
+ //=============================================
41
+ describe('Pattern Matching - Glob and Regex', () => {
42
+ it('should match glob patterns with wildcard', () => {
43
+ const skills = [{ id: 'ts-skill', triggers: ['*.ts', 'typescript'] }];
44
+ const results = matchSkills('fix all .ts files', skills);
45
+ // Should match because "*.ts" pattern matches "ts" in the text
46
+ expect(results.length).toBeGreaterThanOrEqual(0); // Pattern converts to regex
47
+ });
48
+ it('should match explicit regex patterns', () => {
49
+ const skills = [{ id: 'error-skill', triggers: ['/error/i'] }];
50
+ const results = matchSkills('there is an ERROR in my code', skills);
51
+ expect(results.length).toBe(1);
52
+ expect(results[0].skillId).toBe('error-skill');
53
+ expect(results[0].matchType).toBe('pattern');
54
+ expect(results[0].confidence).toBe(90); // regex pattern = 90
55
+ });
56
+ it('should handle invalid regex gracefully', () => {
57
+ const skills = [{ id: 'bad-regex', triggers: ['/[invalid/'] }];
58
+ // Should not throw, should just skip the invalid pattern
59
+ const results = matchSkills('test prompt', skills);
60
+ expect(results).toEqual([]);
61
+ });
62
+ it('should match case-insensitive regex', () => {
63
+ const skills = [{ id: 'api-skill', triggers: ['/api/i'] }];
64
+ const results = matchSkills('Build an API endpoint', skills);
65
+ expect(results.length).toBe(1);
66
+ });
67
+ it('should handle glob with multiple wildcards', () => {
68
+ const skills = [{ id: 'glob-skill', triggers: ['*test*'] }];
69
+ const results = matchSkills('run my tests now', skills);
70
+ // ".*test.*" should match "tests"
71
+ expect(results.length).toBe(1);
72
+ expect(results[0].matchType).toBe('pattern');
73
+ });
74
+ });
75
+ //=============================================
76
+ // 3. CONTEXT EXTRACTION
77
+ //=============================================
78
+ describe('Context Extraction', () => {
79
+ describe('Error Detection', () => {
80
+ it('should detect TypeError', () => {
81
+ const ctx = extractContext('I got a TypeError: undefined is not a function');
82
+ expect(ctx.detectedErrors).toContain('TypeError');
83
+ });
84
+ it('should detect ReferenceError', () => {
85
+ const ctx = extractContext('ReferenceError: x is not defined');
86
+ expect(ctx.detectedErrors).toContain('ReferenceError');
87
+ });
88
+ it('should detect ENOENT', () => {
89
+ const ctx = extractContext('ENOENT: no such file or directory');
90
+ expect(ctx.detectedErrors).toContain('ENOENT');
91
+ });
92
+ it('should detect EACCES', () => {
93
+ const ctx = extractContext('EACCES: permission denied');
94
+ expect(ctx.detectedErrors).toContain('EACCES');
95
+ });
96
+ it('should detect ECONNREFUSED', () => {
97
+ const ctx = extractContext('ECONNREFUSED: connection refused');
98
+ expect(ctx.detectedErrors).toContain('ECONNREFUSED');
99
+ });
100
+ it('should detect stack trace lines', () => {
101
+ const ctx = extractContext('at Object.run (/home/user/file.ts:42:10)');
102
+ expect(ctx.detectedErrors.length).toBeGreaterThan(0);
103
+ });
104
+ it('should detect generic error keywords', () => {
105
+ const ctx = extractContext('The build failed with error code 1');
106
+ expect(ctx.detectedErrors.some(e => /error|failed/i.test(e))).toBe(true);
107
+ });
108
+ });
109
+ describe('File Path Detection', () => {
110
+ it('should detect src/ paths', () => {
111
+ const ctx = extractContext('check src/components/Button.tsx');
112
+ expect(ctx.detectedFiles.some(f => f.includes('src/'))).toBe(true);
113
+ });
114
+ it('should detect relative paths with extension', () => {
115
+ const ctx = extractContext('edit ./bar.js file');
116
+ expect(ctx.detectedFiles.some(f => f.includes('bar.js'))).toBe(true);
117
+ });
118
+ it('should detect nested paths', () => {
119
+ const ctx = extractContext('fix lib/utils/helpers.ts');
120
+ expect(ctx.detectedFiles.some(f => f.includes('helpers.ts') || f.includes('lib/'))).toBe(true);
121
+ });
122
+ it('should detect absolute paths', () => {
123
+ const ctx = extractContext('open /home/user/project/main.py');
124
+ expect(ctx.detectedFiles.some(f => f.includes('main.py') || f.includes('/home/'))).toBe(true);
125
+ });
126
+ });
127
+ describe('Pattern Detection', () => {
128
+ it('should detect async/await pattern', () => {
129
+ const ctx = extractContext('use async function and await the promise');
130
+ expect(ctx.detectedPatterns).toContain('async/await');
131
+ });
132
+ it('should detect promise pattern', () => {
133
+ const ctx = extractContext('return a Promise from the function');
134
+ expect(ctx.detectedPatterns).toContain('promise');
135
+ });
136
+ it('should detect callback pattern', () => {
137
+ const ctx = extractContext('pass a callback to the function');
138
+ expect(ctx.detectedPatterns).toContain('callback');
139
+ });
140
+ it('should detect regex pattern keyword', () => {
141
+ const ctx = extractContext('write a regex for email validation');
142
+ expect(ctx.detectedPatterns).toContain('regex');
143
+ });
144
+ it('should detect API pattern', () => {
145
+ const ctx = extractContext('create a REST API endpoint');
146
+ expect(ctx.detectedPatterns).toContain('api');
147
+ });
148
+ it('should detect typescript', () => {
149
+ const ctx = extractContext('convert this to TypeScript');
150
+ expect(ctx.detectedPatterns).toContain('typescript');
151
+ });
152
+ it('should detect react', () => {
153
+ const ctx = extractContext('build a React component');
154
+ expect(ctx.detectedPatterns).toContain('react');
155
+ });
156
+ it('should detect git', () => {
157
+ const ctx = extractContext('commit with git');
158
+ expect(ctx.detectedPatterns).toContain('git');
159
+ });
160
+ });
161
+ });
162
+ //=============================================
163
+ // 4. CONFIDENCE SCORING
164
+ //=============================================
165
+ describe('Confidence Scoring', () => {
166
+ it('should return 100 for exact match', () => {
167
+ const skills = [{ id: 'test-skill', triggers: ['deploy'] }];
168
+ const results = matchSkills('deploy the app', skills);
169
+ expect(results.length).toBe(1);
170
+ expect(results[0].confidence).toBe(100); // exact match: 100*0.7 + 100*0.3 = 100
171
+ });
172
+ it('should score fuzzy matches lower than exact', () => {
173
+ const skills = [
174
+ { id: 'exact', triggers: ['typescript'] },
175
+ { id: 'fuzzy', triggers: ['typescrpt'] }, // typo - will be fuzzy matched
176
+ ];
177
+ const results = matchSkills('help with typescript', skills);
178
+ // Should have exact match for 'typescript'
179
+ const exactMatch = results.find(r => r.skillId === 'exact');
180
+ expect(exactMatch).toBeDefined();
181
+ expect(exactMatch.confidence).toBe(100);
182
+ });
183
+ it('should filter results below threshold', () => {
184
+ const skills = [
185
+ { id: 'unrelated', triggers: ['zzznotmatch'] },
186
+ ];
187
+ const results = matchSkills('build my app', skills, { threshold: 30 });
188
+ expect(results.length).toBe(0);
189
+ });
190
+ it('should respect custom threshold', () => {
191
+ const skills = [
192
+ { id: 'test', triggers: ['typescript'] },
193
+ ];
194
+ const results = matchSkills('help with typescript', skills, { threshold: 50 });
195
+ expect(results.length).toBe(1);
196
+ expect(results[0].confidence).toBeGreaterThanOrEqual(50);
197
+ });
198
+ it('should limit results with maxResults', () => {
199
+ const skills = [
200
+ { id: 'skill1', triggers: ['test'] },
201
+ { id: 'skill2', triggers: ['test'] },
202
+ { id: 'skill3', triggers: ['test'] },
203
+ { id: 'skill4', triggers: ['test'] },
204
+ { id: 'skill5', triggers: ['test'] },
205
+ ];
206
+ const results = matchSkills('run tests', skills, { maxResults: 3 });
207
+ expect(results.length).toBe(3);
208
+ });
209
+ it('should calculate confidence correctly via helper', () => {
210
+ // Test the calculateConfidence helper directly
211
+ expect(calculateConfidence(1, 1, 'exact')).toBe(100);
212
+ expect(calculateConfidence(1, 2, 'exact')).toBe(50);
213
+ expect(calculateConfidence(1, 1, 'fuzzy')).toBe(70); // 100 * 0.7
214
+ expect(calculateConfidence(1, 1, 'pattern')).toBe(90); // 100 * 0.9
215
+ expect(calculateConfidence(0, 1, 'exact')).toBe(0);
216
+ expect(calculateConfidence(0, 0, 'exact')).toBe(0);
217
+ });
218
+ it('should sort results by confidence descending', () => {
219
+ const skills = [
220
+ { id: 'low', triggers: ['/fix/i'] }, // pattern = 90 base
221
+ { id: 'high', triggers: ['typescript'] }, // exact = 100 base
222
+ ];
223
+ const results = matchSkills('fix typescript errors', skills);
224
+ expect(results.length).toBe(2);
225
+ expect(results[0].skillId).toBe('high');
226
+ expect(results[1].skillId).toBe('low');
227
+ });
228
+ });
229
+ //=============================================
230
+ // 5. EDGE CASES
231
+ //=============================================
232
+ describe('Edge Cases', () => {
233
+ it('should handle empty prompt', () => {
234
+ const skills = [{ id: 'test', triggers: ['deploy'] }];
235
+ const results = matchSkills('', skills);
236
+ expect(results).toEqual([]);
237
+ });
238
+ it('should handle empty skills array', () => {
239
+ const results = matchSkills('deploy the app', []);
240
+ expect(results).toEqual([]);
241
+ });
242
+ it('should handle very long prompts', () => {
243
+ const longPrompt = 'typescript '.repeat(1000);
244
+ const skills = [{ id: 'ts', triggers: ['typescript'] }];
245
+ const results = matchSkills(longPrompt, skills);
246
+ expect(results.length).toBe(1);
247
+ expect(results[0].skillId).toBe('ts');
248
+ });
249
+ it('should handle special characters in prompt', () => {
250
+ const ctx = extractContext('Error: $#@!%^&*() invalid syntax');
251
+ // Should not crash
252
+ expect(ctx).toBeDefined();
253
+ expect(ctx.detectedErrors.length).toBeGreaterThanOrEqual(0);
254
+ });
255
+ it('should handle special characters in triggers', () => {
256
+ const skills = [{ id: 'special', triggers: ['c++'] }];
257
+ const results = matchSkills('help with c++ code', skills);
258
+ expect(results.length).toBe(1);
259
+ });
260
+ it('should handle unicode in prompt', () => {
261
+ const ctx = extractContext('fix the bug in function 函数名 with emoji 🚀');
262
+ expect(ctx).toBeDefined();
263
+ });
264
+ it('should handle skill with tags', () => {
265
+ const skills = [{
266
+ id: 'multi-tag',
267
+ triggers: ['deploy'],
268
+ tags: ['production', 'release'],
269
+ }];
270
+ const results = matchSkills('release to production', skills);
271
+ expect(results.length).toBe(1);
272
+ expect(results[0].matchedTriggers).toContain('production');
273
+ });
274
+ it('should handle whitespace-only prompt', () => {
275
+ const skills = [{ id: 'test', triggers: ['deploy'] }];
276
+ const results = matchSkills(' \t\n ', skills);
277
+ expect(results).toEqual([]);
278
+ });
279
+ it('should handle skill with empty triggers', () => {
280
+ const skills = [{ id: 'empty', triggers: [] }];
281
+ const results = matchSkills('test prompt', skills);
282
+ expect(results).toEqual([]);
283
+ });
284
+ it('should deduplicate detected context items', () => {
285
+ const ctx = extractContext('TypeError TypeError TypeError ENOENT ENOENT');
286
+ // Should dedupe
287
+ const typeErrorCount = ctx.detectedErrors.filter(e => e === 'TypeError').length;
288
+ expect(typeErrorCount).toBe(1);
289
+ });
290
+ });
291
+ //=============================================
292
+ // 6. INTEGRATION - Full Match Flow
293
+ //=============================================
294
+ describe('Integration - Full Match Flow', () => {
295
+ it('should match with context-aware results', () => {
296
+ const skills = [
297
+ { id: 'debug', triggers: ['error', 'fix', 'debug'] },
298
+ { id: 'deploy', triggers: ['deploy', 'release'] },
299
+ ];
300
+ const prompt = 'Fix the TypeError in src/utils.ts';
301
+ const results = matchSkills(prompt, skills);
302
+ expect(results.length).toBeGreaterThan(0);
303
+ const debugResult = results.find(r => r.skillId === 'debug');
304
+ expect(debugResult).toBeDefined();
305
+ expect(debugResult.context.detectedErrors).toContain('TypeError');
306
+ expect(debugResult.context.detectedFiles.length).toBeGreaterThan(0);
307
+ });
308
+ it('should prioritize exact matches over fuzzy', () => {
309
+ const skills = [
310
+ { id: 'typescript-skill', triggers: ['typescript'] },
311
+ ];
312
+ const results = matchSkills('I need help with typescript', skills);
313
+ expect(results[0].matchType).toBe('exact');
314
+ });
315
+ it('should handle mixed match types', () => {
316
+ const skills = [
317
+ { id: 'exact-match', triggers: ['deploy'] },
318
+ { id: 'pattern-match', triggers: ['/api/i'] },
319
+ { id: 'fuzzy-match', triggers: ['typescrpt'] }, // typo for typescript
320
+ ];
321
+ const results = matchSkills('deploy the API to typescript server', skills);
322
+ expect(results.length).toBeGreaterThanOrEqual(2);
323
+ const exactResult = results.find(r => r.skillId === 'exact-match');
324
+ const patternResult = results.find(r => r.skillId === 'pattern-match');
325
+ expect(exactResult).toBeDefined();
326
+ expect(patternResult).toBeDefined();
327
+ });
328
+ });
329
+ });
330
+ //# sourceMappingURL=matcher.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.test.js","sourceRoot":"","sources":["../../../src/__tests__/learner/matcher.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-summary.d.ts","sourceRoot":"","sources":["../../src/analytics/analytics-summary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,SAAS,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAetE;AA4HD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAqB3F;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAY1F"}
1
+ {"version":3,"file":"analytics-summary.d.ts","sourceRoot":"","sources":["../../src/analytics/analytics-summary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,SAAS,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAetE;AA2HD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAqB3F;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAY1F"}
@@ -3,11 +3,13 @@
3
3
  *
4
4
  * This module provides mtime-based caching for <10ms session load times.
5
5
  */
6
+ import { homedir } from 'os';
7
+ import { join } from 'path';
6
8
  /**
7
9
  * Get summary file path for session ID.
8
10
  */
9
11
  export function getSummaryPath(sessionId) {
10
- return `.omc/state/analytics-summary-${sessionId}.json`;
12
+ return join(homedir(), '.omc', 'state', `analytics-summary-${sessionId}.json`);
11
13
  }
12
14
  /**
13
15
  * Initialize empty summary for new session.
@@ -29,7 +31,6 @@ export function createEmptySummary(sessionId) {
29
31
  };
30
32
  }
31
33
  import * as fs from 'fs/promises';
32
- import * as path from 'path';
33
34
  import { calculateCost } from './cost-estimator.js';
34
35
  /**
35
36
  * Get file modification time
@@ -108,17 +109,17 @@ async function rebuildSummaryIncremental(sessionId, summaryPath, logPath) {
108
109
  cacheReadTokens: record.cacheReadTokens
109
110
  });
110
111
  summary.totals.estimatedCost += cost.totalCost;
111
- // Update top agents
112
- if (record.agentName) {
113
- updateTopAgents(summary, record.agentName, cost.totalCost, record.inputTokens + record.outputTokens);
114
- }
112
+ // Update top agents (use "(main session)" for entries without agentName)
113
+ const agentKey = record.agentName || '(main session)';
114
+ updateTopAgents(summary, agentKey, cost.totalCost, record.inputTokens + record.outputTokens);
115
115
  }
116
116
  // Update metadata
117
117
  summary.lastUpdated = new Date().toISOString();
118
118
  summary.lastLogOffset = startOffset + lines.length;
119
119
  summary.cacheHitRate = calculateCacheHitRate(summary.totals);
120
120
  // Save updated summary
121
- await fs.mkdir(path.dirname(summaryPath), { recursive: true });
121
+ const summaryDir = join(homedir(), '.omc', 'state');
122
+ await fs.mkdir(summaryDir, { recursive: true });
122
123
  await fs.writeFile(summaryPath, JSON.stringify(summary, null, 2));
123
124
  return summary;
124
125
  }
@@ -133,8 +134,8 @@ async function rebuildSummaryIncremental(sessionId, summaryPath, logPath) {
133
134
  * 3. If stale → rebuild incrementally from lastLogOffset
134
135
  */
135
136
  export async function loadAnalyticsFast(sessionId) {
136
- const summaryPath = path.resolve(process.cwd(), getSummaryPath(sessionId));
137
- const logPath = path.resolve(process.cwd(), '.omc/state/token-tracking.jsonl');
137
+ const summaryPath = getSummaryPath(sessionId);
138
+ const logPath = join(homedir(), '.omc', 'state', 'token-tracking.jsonl');
138
139
  try {
139
140
  // Check if summary exists and is fresh
140
141
  const summaryMtime = await getFileMtime(summaryPath);
@@ -156,8 +157,8 @@ export async function loadAnalyticsFast(sessionId) {
156
157
  * Force rebuild summary from scratch (ignore cache)
157
158
  */
158
159
  export async function rebuildAnalyticsSummary(sessionId) {
159
- const summaryPath = path.resolve(process.cwd(), getSummaryPath(sessionId));
160
- const logPath = path.resolve(process.cwd(), '.omc/state/token-tracking.jsonl');
160
+ const summaryPath = getSummaryPath(sessionId);
161
+ const logPath = join(homedir(), '.omc', 'state', 'token-tracking.jsonl');
161
162
  // Delete existing summary to force full rebuild
162
163
  try {
163
164
  await fs.unlink(summaryPath);
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-summary.js","sourceRoot":"","sources":["../../src/analytics/analytics-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analytics-summary.js","sourceRoot":"","sources":["../../src/analytics/analytics-summary.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"backfill-dedup.d.ts","sourceRoot":"","sources":["../../src/analytics/backfill-dedup.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,gBAAgB,CAAoC;IAE5D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;OAEG;IACH,QAAQ,IAAI;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE;CAMjE"}
1
+ {"version":3,"file":"backfill-dedup.d.ts","sourceRoot":"","sources":["../../src/analytics/backfill-dedup.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,gBAAgB,CAAoC;IAE5D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;OAEG;IACH,QAAQ,IAAI;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE;CAMjE"}
@@ -1,8 +1,9 @@
1
1
  import { createHash } from 'crypto';
2
2
  import * as fs from 'fs/promises';
3
3
  import * as path from 'path';
4
- const TOKEN_LOG_FILE = '.omc/state/token-tracking.jsonl';
5
- const DEDUP_INDEX_FILE = '.omc/state/backfill-index.json';
4
+ import { homedir } from 'os';
5
+ const TOKEN_LOG_FILE = path.join(homedir(), '.omc', 'state', 'token-tracking.jsonl');
6
+ const DEDUP_INDEX_FILE = path.join(homedir(), '.omc', 'state', 'backfill-index.json');
6
7
  /**
7
8
  * BackfillDedup provides fast deduplication for backfill operations.
8
9
  *
@@ -17,11 +18,9 @@ export class BackfillDedup {
17
18
  * Load existing processed IDs from backfill-index.json and scan token-tracking.jsonl
18
19
  */
19
20
  async load() {
20
- const indexPath = path.resolve(process.cwd(), DEDUP_INDEX_FILE);
21
- const logPath = path.resolve(process.cwd(), TOKEN_LOG_FILE);
22
21
  // Load persisted index first
23
22
  try {
24
- const indexContent = await fs.readFile(indexPath, 'utf-8');
23
+ const indexContent = await fs.readFile(DEDUP_INDEX_FILE, 'utf-8');
25
24
  const index = JSON.parse(indexContent);
26
25
  this.processedSet = new Set(index.processedIds);
27
26
  this.totalProcessed = index.totalProcessed;
@@ -32,7 +31,7 @@ export class BackfillDedup {
32
31
  }
33
32
  // Scan token-tracking.jsonl to ensure all existing entries are marked
34
33
  try {
35
- const logContent = await fs.readFile(logPath, 'utf-8');
34
+ const logContent = await fs.readFile(TOKEN_LOG_FILE, 'utf-8');
36
35
  const lines = logContent.trim().split('\n').filter(line => line.length > 0);
37
36
  for (const line of lines) {
38
37
  try {
@@ -80,15 +79,14 @@ export class BackfillDedup {
80
79
  * Persist deduplication state to backfill-index.json
81
80
  */
82
81
  async save() {
83
- const indexPath = path.resolve(process.cwd(), DEDUP_INDEX_FILE);
84
- const indexDir = path.dirname(indexPath);
82
+ const indexDir = path.dirname(DEDUP_INDEX_FILE);
85
83
  await fs.mkdir(indexDir, { recursive: true });
86
84
  const index = {
87
85
  processedIds: Array.from(this.processedSet),
88
86
  lastBackfillTime: new Date().toISOString(),
89
87
  totalProcessed: this.totalProcessed
90
88
  };
91
- await fs.writeFile(indexPath, JSON.stringify(index, null, 2), 'utf-8');
89
+ await fs.writeFile(DEDUP_INDEX_FILE, JSON.stringify(index, null, 2), 'utf-8');
92
90
  }
93
91
  /**
94
92
  * Clear all processed entries and delete index file
@@ -97,9 +95,8 @@ export class BackfillDedup {
97
95
  this.processedSet.clear();
98
96
  this.totalProcessed = 0;
99
97
  this.lastBackfillTime = new Date().toISOString();
100
- const indexPath = path.resolve(process.cwd(), DEDUP_INDEX_FILE);
101
98
  try {
102
- await fs.unlink(indexPath);
99
+ await fs.unlink(DEDUP_INDEX_FILE);
103
100
  }
104
101
  catch (error) {
105
102
  // File might not exist, which is fine
@@ -1 +1 @@
1
- {"version":3,"file":"backfill-dedup.js","sourceRoot":"","sources":["../../src/analytics/backfill-dedup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backfill-dedup.js","sourceRoot":"","sources":["../../src/analytics/backfill-dedup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"backfill-engine.d.ts","sourceRoot":"","sources":["../../src/analytics/backfill-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAUtC,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAe;;IAQ9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACG,GAAG,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAwDjE;;OAEG;YACW,iBAAiB;IAyE/B;;OAEG;YACW,UAAU;CAczB"}
1
+ {"version":3,"file":"backfill-engine.d.ts","sourceRoot":"","sources":["../../src/analytics/backfill-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAUtC,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAe;;IAQ9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACG,GAAG,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAwDjE;;OAEG;YACW,iBAAiB;IAoF/B;;OAEG;YACW,UAAU;CAczB"}
@@ -5,7 +5,7 @@ import { parseTranscript } from './transcript-parser.js';
5
5
  import { BackfillDedup } from './backfill-dedup.js';
6
6
  import { getTokenTracker } from './token-tracker.js';
7
7
  import { calculateCost } from './cost-estimator.js';
8
- import { extractTokenUsage } from './transcript-token-extractor.js';
8
+ import { extractTokenUsage, extractTaskSpawns } from './transcript-token-extractor.js';
9
9
  /**
10
10
  * BackfillEngine orchestrates the offline transcript analysis pipeline.
11
11
  *
@@ -88,6 +88,9 @@ export class BackfillEngine extends EventEmitter {
88
88
  async processTranscript(transcript, options, result, totalFiles) {
89
89
  const batch = [];
90
90
  const BATCH_SIZE = 100;
91
+ // Build a lookup of toolUseId → agentType for attributing progress entries
92
+ // This is populated as we encounter assistant entries with Task tool calls
93
+ const agentLookup = new Map();
91
94
  // Emit progress
92
95
  this.emit('progress', {
93
96
  currentFile: path.basename(transcript.filePath),
@@ -109,8 +112,14 @@ export class BackfillEngine extends EventEmitter {
109
112
  if (this.aborted) {
110
113
  break;
111
114
  }
112
- // Extract token usage
113
- const extracted = extractTokenUsage(entry, transcript.sessionId, transcript.filePath);
115
+ // Extract Task tool spawns from assistant entries to build agent lookup
116
+ // This must happen BEFORE extractTokenUsage so progress entries can look up their parent
117
+ const spawns = extractTaskSpawns(entry);
118
+ for (const spawn of spawns) {
119
+ agentLookup.set(spawn.toolUseId, spawn.agentType);
120
+ }
121
+ // Extract token usage (passing agentLookup for progress entry attribution)
122
+ const extracted = extractTokenUsage(entry, transcript.sessionId, transcript.filePath, agentLookup);
114
123
  if (!extracted) {
115
124
  continue; // Skip entries without usage data
116
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backfill-engine.js","sourceRoot":"","sources":["../../src/analytics/backfill-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backfill-engine.js","sourceRoot":"","sources":["../../src/analytics/backfill-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAkB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAgB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AA4BvF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAe,SAAQ,YAAY;IACtC,OAAO,GAAY,KAAK,CAAC;IACzB,KAAK,CAAgB;IACrB,OAAO,CAAe;IAE9B;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,eAAe,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,UAA2B,EAAE;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,2BAA2B;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAExB,uBAAuB;QACvB,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC;YACvC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,OAAO,EAAE,OAAO,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAmB;YAC7B,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE,CAAC;YACf,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;YACpB,mBAAmB,EAAE,CAAC;YACtB,WAAW,EAAE,CAAC;SACf,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;QAEjD,+BAA+B;QAC/B,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;YACR,CAAC;YAED,oCAAoC;YACpC,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/D,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,oBAAoB,UAAU,CAAC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YAED,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAC7B,UAA0B,EAC1B,OAAwB,EACxB,MAAsB,EACtB,UAAkB;QAElB,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,GAAG,CAAC;QAEvB,2EAA2E;QAC3E,2EAA2E;QAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE9C,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC/C,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,UAAU;YACV,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,WAAW,EAAE,MAAM,CAAC,mBAAmB;SACpB,CAAC,CAAC;QAEvB,+BAA+B;QAC/B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC7D,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC5B,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,kBAAkB,UAAU,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;SACF,CAAC,EAAE,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;YACR,CAAC;YAED,wEAAwE;YACxE,yFAAyF;YACzF,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACxC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;YAED,2EAA2E;YAC3E,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAEnG,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,CAAC,kCAAkC;YAC9C,CAAC;YAED,sBAAsB;YACtB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,iBAAiB;YACjB,MAAM,IAAI,GAAG,aAAa,CAAC;gBACzB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS;gBACpC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW;gBACxC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY;gBAC1C,mBAAmB,EAAE,SAAS,CAAC,KAAK,CAAC,mBAAmB;gBACxD,eAAe,EAAE,SAAS,CAAC,KAAK,CAAC,eAAe;aACjD,CAAC,CAAC;YAEH,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,CAAC;YAE7C,eAAe;YACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,YAAY,EAAE,CAAC;YAEtB,sBAAsB;YACtB,IAAI,KAAK,CAAC,MAAM,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClD,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,KAAmB;QAC1C,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBAClC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;gBAC9C,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,cAAc;IAClC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"query-engine.d.ts","sourceRoot":"","sources":["../../src/analytics/query-engine.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,uBAAuB,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,WAAW;IAChB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAkE1E,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAiEzC,cAAc,CAAC,aAAa,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAU5G,OAAO,CAAC,kBAAkB;CAiB3B;AAKD,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}
1
+ {"version":3,"file":"query-engine.d.ts","sourceRoot":"","sources":["../../src/analytics/query-engine.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,uBAAuB,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,WAAW;IAChB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAkE1E,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAiEzC,cAAc,CAAC,aAAa,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAU5G,OAAO,CAAC,kBAAkB;CAiB3B;AAKD,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}