sidekick-shared 0.13.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 (126) hide show
  1. package/README.md +92 -0
  2. package/dist/aggregation/EventAggregator.d.ts +172 -0
  3. package/dist/aggregation/EventAggregator.js +1443 -0
  4. package/dist/aggregation/FrequencyTracker.d.ts +42 -0
  5. package/dist/aggregation/FrequencyTracker.js +73 -0
  6. package/dist/aggregation/HeatmapTracker.d.ts +40 -0
  7. package/dist/aggregation/HeatmapTracker.js +93 -0
  8. package/dist/aggregation/PatternExtractor.d.ts +51 -0
  9. package/dist/aggregation/PatternExtractor.js +171 -0
  10. package/dist/aggregation/snapshot.d.ts +64 -0
  11. package/dist/aggregation/snapshot.js +151 -0
  12. package/dist/aggregation/types.d.ts +121 -0
  13. package/dist/aggregation/types.js +6 -0
  14. package/dist/context/composer.d.ts +31 -0
  15. package/dist/context/composer.js +72 -0
  16. package/dist/credentials.d.ts +23 -0
  17. package/dist/credentials.js +96 -0
  18. package/dist/formatters/eventHighlighter.d.ts +30 -0
  19. package/dist/formatters/eventHighlighter.js +217 -0
  20. package/dist/formatters/noiseClassifier.d.ts +73 -0
  21. package/dist/formatters/noiseClassifier.js +226 -0
  22. package/dist/formatters/sessionDump.d.ts +38 -0
  23. package/dist/formatters/sessionDump.js +313 -0
  24. package/dist/formatters/toolSummary.d.ts +23 -0
  25. package/dist/formatters/toolSummary.js +230 -0
  26. package/dist/index.d.ts +85 -0
  27. package/dist/index.js +182 -0
  28. package/dist/parsers/changelogParser.d.ts +25 -0
  29. package/dist/parsers/changelogParser.js +74 -0
  30. package/dist/parsers/codexParser.d.ts +76 -0
  31. package/dist/parsers/codexParser.js +653 -0
  32. package/dist/parsers/debugLogParser.d.ts +63 -0
  33. package/dist/parsers/debugLogParser.js +164 -0
  34. package/dist/parsers/jsonl.d.ts +45 -0
  35. package/dist/parsers/jsonl.js +57 -0
  36. package/dist/parsers/openCodeParser.d.ts +64 -0
  37. package/dist/parsers/openCodeParser.js +581 -0
  38. package/dist/parsers/planExtractor.d.ts +63 -0
  39. package/dist/parsers/planExtractor.js +330 -0
  40. package/dist/parsers/sessionActivityDetector.d.ts +31 -0
  41. package/dist/parsers/sessionActivityDetector.js +184 -0
  42. package/dist/parsers/sessionPathResolver.d.ts +230 -0
  43. package/dist/parsers/sessionPathResolver.js +753 -0
  44. package/dist/parsers/subagentScanner.d.ts +43 -0
  45. package/dist/parsers/subagentScanner.js +366 -0
  46. package/dist/parsers/subagentTraceParser.d.ts +58 -0
  47. package/dist/parsers/subagentTraceParser.js +346 -0
  48. package/dist/paths.d.ts +38 -0
  49. package/dist/paths.js +107 -0
  50. package/dist/phrases.d.ts +52 -0
  51. package/dist/phrases.js +1333 -0
  52. package/dist/providers/claudeCode.d.ts +48 -0
  53. package/dist/providers/claudeCode.js +465 -0
  54. package/dist/providers/codex.d.ts +57 -0
  55. package/dist/providers/codex.js +944 -0
  56. package/dist/providers/codexDatabase.d.ts +37 -0
  57. package/dist/providers/codexDatabase.js +148 -0
  58. package/dist/providers/detect.d.ts +16 -0
  59. package/dist/providers/detect.js +162 -0
  60. package/dist/providers/openCode.d.ts +70 -0
  61. package/dist/providers/openCode.js +1524 -0
  62. package/dist/providers/openCodeDatabase.d.ts +87 -0
  63. package/dist/providers/openCodeDatabase.js +232 -0
  64. package/dist/providers/types.d.ts +154 -0
  65. package/dist/providers/types.js +12 -0
  66. package/dist/quota.d.ts +34 -0
  67. package/dist/quota.js +80 -0
  68. package/dist/readers/decisions.d.ts +10 -0
  69. package/dist/readers/decisions.js +27 -0
  70. package/dist/readers/handoff.d.ts +4 -0
  71. package/dist/readers/handoff.js +51 -0
  72. package/dist/readers/helpers.d.ts +7 -0
  73. package/dist/readers/helpers.js +52 -0
  74. package/dist/readers/history.d.ts +5 -0
  75. package/dist/readers/history.js +12 -0
  76. package/dist/readers/notes.d.ts +10 -0
  77. package/dist/readers/notes.js +46 -0
  78. package/dist/readers/plans.d.ts +35 -0
  79. package/dist/readers/plans.js +247 -0
  80. package/dist/readers/tasks.d.ts +8 -0
  81. package/dist/readers/tasks.js +22 -0
  82. package/dist/report/htmlHelpers.d.ts +18 -0
  83. package/dist/report/htmlHelpers.js +166 -0
  84. package/dist/report/htmlReportGenerator.d.ts +11 -0
  85. package/dist/report/htmlReportGenerator.js +650 -0
  86. package/dist/report/index.d.ts +8 -0
  87. package/dist/report/index.js +16 -0
  88. package/dist/report/logo.d.ts +2 -0
  89. package/dist/report/logo.js +5 -0
  90. package/dist/report/openBrowser.d.ts +5 -0
  91. package/dist/report/openBrowser.js +22 -0
  92. package/dist/report/transcriptParser.d.ts +12 -0
  93. package/dist/report/transcriptParser.js +177 -0
  94. package/dist/report/types.d.ts +43 -0
  95. package/dist/report/types.js +5 -0
  96. package/dist/search/advancedFilter.d.ts +62 -0
  97. package/dist/search/advancedFilter.js +201 -0
  98. package/dist/search/sessionSearch.d.ts +16 -0
  99. package/dist/search/sessionSearch.js +93 -0
  100. package/dist/types/codex.d.ts +276 -0
  101. package/dist/types/codex.js +14 -0
  102. package/dist/types/decisionLog.d.ts +23 -0
  103. package/dist/types/decisionLog.js +8 -0
  104. package/dist/types/historicalData.d.ts +74 -0
  105. package/dist/types/historicalData.js +17 -0
  106. package/dist/types/knowledgeNote.d.ts +40 -0
  107. package/dist/types/knowledgeNote.js +18 -0
  108. package/dist/types/opencode.d.ts +268 -0
  109. package/dist/types/opencode.js +13 -0
  110. package/dist/types/plan.d.ts +49 -0
  111. package/dist/types/plan.js +10 -0
  112. package/dist/types/sessionEvent.d.ts +562 -0
  113. package/dist/types/sessionEvent.js +11 -0
  114. package/dist/types/taskPersistence.d.ts +33 -0
  115. package/dist/types/taskPersistence.js +16 -0
  116. package/dist/watchers/eventBridge.d.ts +19 -0
  117. package/dist/watchers/eventBridge.js +162 -0
  118. package/dist/watchers/factory.d.ts +15 -0
  119. package/dist/watchers/factory.js +85 -0
  120. package/dist/watchers/jsonlWatcher.d.ts +30 -0
  121. package/dist/watchers/jsonlWatcher.js +444 -0
  122. package/dist/watchers/sqliteWatcher.d.ts +30 -0
  123. package/dist/watchers/sqliteWatcher.js +278 -0
  124. package/dist/watchers/types.d.ts +60 -0
  125. package/dist/watchers/types.js +5 -0
  126. package/package.json +31 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Provider-aware cross-session search.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.searchSessions = searchSessions;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ async function searchSessions(provider, query, opts) {
43
+ const maxResults = opts?.maxResults ?? 50;
44
+ const results = [];
45
+ const baseDir = provider.getProjectsBaseDir();
46
+ try {
47
+ if (!fs.existsSync(baseDir))
48
+ return results;
49
+ // Get all project folders
50
+ const folders = provider.getAllProjectFolders();
51
+ for (const folder of folders) {
52
+ if (results.length >= maxResults)
53
+ break;
54
+ // If projectSlug specified, filter by encoded name
55
+ if (opts?.projectSlug && folder.encodedName !== opts.projectSlug)
56
+ continue;
57
+ // Get session files in this folder
58
+ let sessionFiles = [];
59
+ try {
60
+ const dir = folder.dir;
61
+ if (fs.existsSync(dir)) {
62
+ const entries = fs.readdirSync(dir).filter(f => f.endsWith('.jsonl') || f.endsWith('.json'));
63
+ sessionFiles = entries.map(f => path.join(dir, f));
64
+ }
65
+ }
66
+ catch { /* skip */ }
67
+ // If no files found from dir scan, try findAllSessions with the folder name
68
+ if (sessionFiles.length === 0) {
69
+ // Use provider.findSessionFiles with the folder path as workspace
70
+ // This handles DB-backed providers
71
+ sessionFiles = provider.findSessionFiles(folder.name);
72
+ }
73
+ for (const sessionPath of sessionFiles) {
74
+ if (results.length >= maxResults)
75
+ break;
76
+ const remaining = maxResults - results.length;
77
+ const hits = provider.searchInSession(sessionPath, query, remaining);
78
+ for (const hit of hits) {
79
+ results.push({
80
+ providerId: provider.id,
81
+ projectPath: hit.projectPath || folder.name,
82
+ sessionPath: hit.sessionPath,
83
+ snippet: hit.line,
84
+ eventType: hit.eventType,
85
+ timestamp: hit.timestamp,
86
+ });
87
+ }
88
+ }
89
+ }
90
+ }
91
+ catch { /* skip */ }
92
+ return results.slice(0, maxResults);
93
+ }
@@ -0,0 +1,276 @@
1
+ /**
2
+ * @fileoverview Type definitions for Codex CLI (OpenAI) session rollout format.
3
+ *
4
+ * Codex stores sessions as JSONL rollout files in:
5
+ * ~/.codex/sessions/YYYY/MM/DD/rollout-<timestamp>-<uuid>.jsonl
6
+ * with an optional SQLite index at ~/.codex/state.sqlite.
7
+ *
8
+ * Each line is a JSON object: { timestamp, type, payload }
9
+ * with 5 top-level types: session_meta, response_item, compacted, turn_context, event_msg.
10
+ *
11
+ * @module types/codex
12
+ */
13
+ /** Top-level rollout line in a Codex JSONL file. */
14
+ export interface CodexRolloutLine {
15
+ /** ISO 8601 timestamp */
16
+ timestamp: string;
17
+ /** Discriminator for the payload type */
18
+ type: 'session_meta' | 'response_item' | 'compacted' | 'turn_context' | 'event_msg';
19
+ /** Type-specific payload */
20
+ payload: CodexSessionMeta | CodexResponseItem | CodexCompacted | CodexTurnContext | CodexEventMsg;
21
+ }
22
+ /** Session metadata written at the start of a rollout file. */
23
+ export interface CodexSessionMeta {
24
+ id: string;
25
+ timestamp?: string;
26
+ cwd: string;
27
+ originator?: string;
28
+ model_provider?: string;
29
+ cli_version?: string;
30
+ source?: string;
31
+ base_instructions?: {
32
+ text?: string;
33
+ };
34
+ git?: {
35
+ branch?: string;
36
+ commit?: string;
37
+ dirty?: boolean;
38
+ };
39
+ forked_from_id?: string;
40
+ }
41
+ /**
42
+ * A response item from the model.
43
+ * The payload IS the item directly (no .item wrapper).
44
+ * Tagged union on `type`.
45
+ */
46
+ export type CodexResponseItem = CodexMessageItem | CodexReasoningItem | CodexFunctionCallItem | CodexFunctionCallOutputItem | CodexLocalShellCallItem | CodexWebSearchCallItem | CodexCustomToolCallItem | CodexCustomToolCallOutputItem;
47
+ /** Chat message (user, assistant, or developer). */
48
+ export interface CodexMessageItem {
49
+ type: 'message';
50
+ id?: string;
51
+ role: 'user' | 'assistant' | 'developer' | 'system';
52
+ content: CodexContentPart[] | string;
53
+ status?: string;
54
+ phase?: string;
55
+ }
56
+ /** Content part within a message. */
57
+ export interface CodexContentPart {
58
+ type: 'output_text' | 'input_text' | 'refusal' | 'text';
59
+ text?: string;
60
+ annotations?: unknown[];
61
+ }
62
+ /** Reasoning / thinking output. */
63
+ export interface CodexReasoningItem {
64
+ type: 'reasoning';
65
+ id?: string;
66
+ summary?: CodexReasoningSummary[];
67
+ content?: unknown;
68
+ encrypted_content?: string;
69
+ }
70
+ export interface CodexReasoningSummary {
71
+ type: 'summary_text';
72
+ text: string;
73
+ }
74
+ /** Function call initiated by the model. */
75
+ export interface CodexFunctionCallItem {
76
+ type: 'function_call';
77
+ id?: string;
78
+ call_id: string;
79
+ name: string;
80
+ arguments: string;
81
+ status?: string;
82
+ }
83
+ /** Result of a function call. */
84
+ export interface CodexFunctionCallOutputItem {
85
+ type: 'function_call_output';
86
+ call_id: string;
87
+ output: string;
88
+ }
89
+ /** Local shell command execution. */
90
+ export interface CodexLocalShellCallItem {
91
+ type: 'local_shell_call';
92
+ id?: string;
93
+ call_id: string;
94
+ action: {
95
+ type: 'exec';
96
+ command: string[];
97
+ workdir?: string;
98
+ timeout?: number;
99
+ };
100
+ status?: string;
101
+ }
102
+ /** Web search call. */
103
+ export interface CodexWebSearchCallItem {
104
+ type: 'web_search_call';
105
+ id?: string;
106
+ call_id?: string;
107
+ status?: string;
108
+ }
109
+ /** Custom tool call (e.g. apply_patch, web_search). */
110
+ export interface CodexCustomToolCallItem {
111
+ type: 'custom_tool_call';
112
+ id?: string;
113
+ call_id: string;
114
+ name: string;
115
+ input: string;
116
+ status?: string;
117
+ }
118
+ /** Result of a custom tool call. */
119
+ export interface CodexCustomToolCallOutputItem {
120
+ type: 'custom_tool_call_output';
121
+ call_id: string;
122
+ output: string;
123
+ }
124
+ /** Context compaction marker. */
125
+ export interface CodexCompacted {
126
+ summary?: string;
127
+ }
128
+ /** Turn context providing model and policy info. */
129
+ export interface CodexTurnContext {
130
+ model?: string;
131
+ cwd?: string;
132
+ approval_policy?: string;
133
+ sandbox_policy?: string;
134
+ effort?: string;
135
+ }
136
+ /**
137
+ * Event message. The payload IS the event directly (no .event wrapper).
138
+ * Tagged union on `type`.
139
+ */
140
+ export type CodexEventMsg = CodexEvent;
141
+ export type CodexEvent = CodexTurnStartedEvent | CodexTurnCompleteEvent | CodexTaskStartedEvent | CodexTaskCompleteEvent | CodexTurnAbortedEvent | CodexTokenCountEvent | CodexAgentMessageEvent | CodexAgentReasoningEvent | CodexUserMessageEvent | CodexExecCommandBeginEvent | CodexExecCommandEndEvent | CodexMcpToolCallBeginEvent | CodexMcpToolCallEndEvent | CodexErrorEvent | CodexContextCompactedEvent | CodexPatchAppliedEvent | CodexBackgroundEvent | CodexGenericEvent;
142
+ export interface CodexTurnStartedEvent {
143
+ type: 'turn_started';
144
+ turn_id?: string;
145
+ }
146
+ export interface CodexTurnCompleteEvent {
147
+ type: 'turn_complete';
148
+ turn_id?: string;
149
+ }
150
+ export interface CodexTaskStartedEvent {
151
+ type: 'task_started';
152
+ turn_id?: string;
153
+ model_context_window?: number;
154
+ collaboration_mode_kind?: string;
155
+ }
156
+ export interface CodexTaskCompleteEvent {
157
+ type: 'task_complete';
158
+ turn_id?: string;
159
+ last_agent_message?: string;
160
+ }
161
+ export interface CodexTurnAbortedEvent {
162
+ type: 'turn_aborted';
163
+ reason?: string;
164
+ }
165
+ export interface CodexAgentReasoningEvent {
166
+ type: 'agent_reasoning';
167
+ text: string;
168
+ }
169
+ export interface CodexTokenCountEvent {
170
+ type: 'token_count';
171
+ info: {
172
+ total_token_usage?: CodexTokenUsage;
173
+ last_token_usage?: CodexTokenUsage;
174
+ model_context_window?: number;
175
+ } | null;
176
+ rate_limits?: CodexRateLimits;
177
+ }
178
+ export interface CodexRateLimits {
179
+ limit_id?: string;
180
+ limit_name?: string | null;
181
+ primary?: {
182
+ used_percent: number;
183
+ window_minutes: number;
184
+ resets_at: number;
185
+ };
186
+ secondary?: {
187
+ used_percent: number;
188
+ window_minutes: number;
189
+ resets_at: number;
190
+ };
191
+ }
192
+ export interface CodexTokenUsage {
193
+ input_tokens: number;
194
+ cached_input_tokens?: number;
195
+ output_tokens: number;
196
+ reasoning_output_tokens?: number;
197
+ total_tokens?: number;
198
+ }
199
+ export interface CodexAgentMessageEvent {
200
+ type: 'agent_message';
201
+ message: string;
202
+ }
203
+ export interface CodexUserMessageEvent {
204
+ type: 'user_message';
205
+ message: string;
206
+ }
207
+ export interface CodexExecCommandBeginEvent {
208
+ type: 'exec_command_begin';
209
+ call_id: string;
210
+ command: string[];
211
+ workdir?: string;
212
+ timeout?: number;
213
+ }
214
+ export interface CodexExecCommandEndEvent {
215
+ type: 'exec_command_end';
216
+ call_id: string;
217
+ exit_code: number;
218
+ stdout?: string;
219
+ stderr?: string;
220
+ duration_ms?: number;
221
+ }
222
+ export interface CodexMcpToolCallBeginEvent {
223
+ type: 'mcp_tool_call_begin';
224
+ call_id: string;
225
+ server_name?: string;
226
+ tool_name: string;
227
+ arguments?: Record<string, unknown>;
228
+ }
229
+ export interface CodexMcpToolCallEndEvent {
230
+ type: 'mcp_tool_call_end';
231
+ call_id: string;
232
+ result?: string;
233
+ is_error?: boolean;
234
+ duration_ms?: number;
235
+ }
236
+ export interface CodexErrorEvent {
237
+ type: 'error';
238
+ message: string;
239
+ code?: string;
240
+ }
241
+ export interface CodexContextCompactedEvent {
242
+ type: 'context_compacted';
243
+ summary?: string;
244
+ tokens_before?: number;
245
+ tokens_after?: number;
246
+ }
247
+ export interface CodexPatchAppliedEvent {
248
+ type: 'patch_applied';
249
+ file_path?: string;
250
+ additions?: number;
251
+ deletions?: number;
252
+ }
253
+ export interface CodexBackgroundEvent {
254
+ type: 'background';
255
+ message?: string;
256
+ }
257
+ /** Catch-all for unrecognized event types. */
258
+ export interface CodexGenericEvent {
259
+ type: string;
260
+ [key: string]: unknown;
261
+ }
262
+ /** Row from the Codex state.sqlite threads table. */
263
+ export interface CodexDbThread {
264
+ id: string;
265
+ rollout_path: string;
266
+ cwd: string;
267
+ created_at: number;
268
+ updated_at: number;
269
+ title?: string;
270
+ tokens_used?: number;
271
+ first_user_message?: string;
272
+ model_provider?: string;
273
+ git_branch?: string;
274
+ git_commit?: string;
275
+ forked_from_id?: string;
276
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Type definitions for Codex CLI (OpenAI) session rollout format.
4
+ *
5
+ * Codex stores sessions as JSONL rollout files in:
6
+ * ~/.codex/sessions/YYYY/MM/DD/rollout-<timestamp>-<uuid>.jsonl
7
+ * with an optional SQLite index at ~/.codex/state.sqlite.
8
+ *
9
+ * Each line is a JSON object: { timestamp, type, payload }
10
+ * with 5 top-level types: session_meta, response_item, compacted, turn_context, event_msg.
11
+ *
12
+ * @module types/codex
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,23 @@
1
+ /**
2
+ * On-disk schema types for cross-session decision log.
3
+ * Canonical source: sidekick-vscode/src/types/decisionLog.ts
4
+ */
5
+ export declare const DECISION_LOG_SCHEMA_VERSION = 1;
6
+ export type DecisionSource = 'recovery_pattern' | 'plan_mode' | 'user_question' | 'text_pattern';
7
+ export interface DecisionEntry {
8
+ id: string;
9
+ description: string;
10
+ rationale: string;
11
+ alternatives?: string[];
12
+ chosenOption: string;
13
+ source: DecisionSource;
14
+ sessionId: string;
15
+ timestamp: string;
16
+ tags?: string[];
17
+ }
18
+ export interface DecisionLogStore {
19
+ schemaVersion: number;
20
+ decisions: Record<string, DecisionEntry>;
21
+ lastSessionId: string;
22
+ lastSaved: string;
23
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * On-disk schema types for cross-session decision log.
4
+ * Canonical source: sidekick-vscode/src/types/decisionLog.ts
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DECISION_LOG_SCHEMA_VERSION = void 0;
8
+ exports.DECISION_LOG_SCHEMA_VERSION = 1;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * On-disk schema types for historical session data.
3
+ * Canonical source: sidekick-vscode/src/types/historicalData.ts
4
+ */
5
+ export declare const HISTORICAL_DATA_SCHEMA_VERSION = 1;
6
+ export interface TokenTotals {
7
+ inputTokens: number;
8
+ outputTokens: number;
9
+ cacheWriteTokens: number;
10
+ cacheReadTokens: number;
11
+ }
12
+ export interface ModelUsageRecord {
13
+ model: string;
14
+ calls: number;
15
+ tokens: number;
16
+ cost: number;
17
+ }
18
+ export interface ToolUsageRecord {
19
+ tool: string;
20
+ calls: number;
21
+ successCount: number;
22
+ failureCount: number;
23
+ }
24
+ export interface DailyData {
25
+ date: string;
26
+ tokens: TokenTotals;
27
+ totalCost: number;
28
+ messageCount: number;
29
+ sessionCount: number;
30
+ modelUsage: ModelUsageRecord[];
31
+ toolUsage: ToolUsageRecord[];
32
+ updatedAt: string;
33
+ }
34
+ export interface MonthlyData {
35
+ month: string;
36
+ tokens: TokenTotals;
37
+ totalCost: number;
38
+ messageCount: number;
39
+ sessionCount: number;
40
+ modelUsage: ModelUsageRecord[];
41
+ toolUsage: ToolUsageRecord[];
42
+ updatedAt: string;
43
+ }
44
+ export interface AllTimeStats {
45
+ tokens: TokenTotals;
46
+ totalCost: number;
47
+ messageCount: number;
48
+ sessionCount: number;
49
+ firstDate: string;
50
+ lastDate: string;
51
+ modelUsage: ModelUsageRecord[];
52
+ toolUsage: ToolUsageRecord[];
53
+ updatedAt: string;
54
+ }
55
+ export interface HistoricalDataStore {
56
+ schemaVersion: number;
57
+ daily: Record<string, DailyData>;
58
+ monthly: Record<string, MonthlyData>;
59
+ allTime: AllTimeStats;
60
+ lastSaved: string;
61
+ importedFiles?: string[];
62
+ lastImportTimestamp?: string;
63
+ }
64
+ export interface SessionSummary {
65
+ sessionId: string;
66
+ startTime: string;
67
+ endTime: string;
68
+ tokens: TokenTotals;
69
+ totalCost: number;
70
+ messageCount: number;
71
+ modelUsage: ModelUsageRecord[];
72
+ toolUsage: ToolUsageRecord[];
73
+ }
74
+ export declare function createEmptyTokenTotals(): TokenTotals;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * On-disk schema types for historical session data.
4
+ * Canonical source: sidekick-vscode/src/types/historicalData.ts
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.HISTORICAL_DATA_SCHEMA_VERSION = void 0;
8
+ exports.createEmptyTokenTotals = createEmptyTokenTotals;
9
+ exports.HISTORICAL_DATA_SCHEMA_VERSION = 1;
10
+ function createEmptyTokenTotals() {
11
+ return {
12
+ inputTokens: 0,
13
+ outputTokens: 0,
14
+ cacheWriteTokens: 0,
15
+ cacheReadTokens: 0,
16
+ };
17
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * On-disk schema types for knowledge notes.
3
+ * Canonical source: sidekick-vscode/src/types/knowledgeNote.ts
4
+ */
5
+ export declare const KNOWLEDGE_NOTE_SCHEMA_VERSION = 1;
6
+ export type KnowledgeNoteType = 'gotcha' | 'pattern' | 'guideline' | 'tip';
7
+ export type KnowledgeNoteSource = 'manual' | 'auto_error' | 'auto_recovery' | 'auto_guidance';
8
+ export type KnowledgeNoteStatus = 'active' | 'needs_review' | 'stale' | 'obsolete';
9
+ export type KnowledgeNoteImportance = 'critical' | 'high' | 'medium' | 'low';
10
+ export declare const IMPORTANCE_DECAY_FACTORS: Record<KnowledgeNoteImportance, number>;
11
+ export declare const STALENESS_THRESHOLDS: {
12
+ needsReview: number;
13
+ stale: number;
14
+ };
15
+ export interface KnowledgeNote {
16
+ id: string;
17
+ noteType: KnowledgeNoteType;
18
+ content: string;
19
+ title?: string;
20
+ filePath: string;
21
+ lineRange?: {
22
+ start: number;
23
+ end: number;
24
+ };
25
+ codeSnippet?: string;
26
+ source: KnowledgeNoteSource;
27
+ status: KnowledgeNoteStatus;
28
+ importance: KnowledgeNoteImportance;
29
+ sessionId?: string;
30
+ createdAt: string;
31
+ updatedAt: string;
32
+ lastReviewedAt: string;
33
+ tags?: string[];
34
+ }
35
+ export interface KnowledgeNoteStore {
36
+ schemaVersion: number;
37
+ notesByFile: Record<string, KnowledgeNote[]>;
38
+ lastSaved: string;
39
+ totalNotes: number;
40
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * On-disk schema types for knowledge notes.
4
+ * Canonical source: sidekick-vscode/src/types/knowledgeNote.ts
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.STALENESS_THRESHOLDS = exports.IMPORTANCE_DECAY_FACTORS = exports.KNOWLEDGE_NOTE_SCHEMA_VERSION = void 0;
8
+ exports.KNOWLEDGE_NOTE_SCHEMA_VERSION = 1;
9
+ exports.IMPORTANCE_DECAY_FACTORS = {
10
+ critical: 2.0,
11
+ high: 1.5,
12
+ medium: 1.0,
13
+ low: 0.5,
14
+ };
15
+ exports.STALENESS_THRESHOLDS = {
16
+ needsReview: 30,
17
+ stale: 90,
18
+ };