@defai.digital/ax-cli 3.7.1 → 3.8.1

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 (213) hide show
  1. package/README.md +143 -56
  2. package/dist/agent/context-manager.d.ts +15 -1
  3. package/dist/agent/context-manager.js +50 -19
  4. package/dist/agent/context-manager.js.map +1 -1
  5. package/dist/agent/dependency-resolver.js +13 -7
  6. package/dist/agent/dependency-resolver.js.map +1 -1
  7. package/dist/agent/llm-agent.d.ts +35 -0
  8. package/dist/agent/llm-agent.js +137 -4
  9. package/dist/agent/llm-agent.js.map +1 -1
  10. package/dist/agent/status-reporter.d.ts +114 -0
  11. package/dist/agent/status-reporter.js +335 -0
  12. package/dist/agent/status-reporter.js.map +1 -0
  13. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +8 -2
  14. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -1
  15. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +3 -1
  16. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -1
  17. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +3 -1
  18. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -1
  19. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +3 -1
  20. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -1
  21. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +9 -3
  22. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +1 -1
  23. package/dist/analyzers/git/churn-calculator.d.ts +1 -0
  24. package/dist/analyzers/git/churn-calculator.js +25 -6
  25. package/dist/analyzers/git/churn-calculator.js.map +1 -1
  26. package/dist/analyzers/git/hotspot-detector.js +2 -2
  27. package/dist/analyzers/git/hotspot-detector.js.map +1 -1
  28. package/dist/analyzers/metrics/metrics-analyzer.js +1 -1
  29. package/dist/analyzers/metrics/metrics-analyzer.js.map +1 -1
  30. package/dist/analyzers/security/security-analyzer.js +1 -1
  31. package/dist/analyzers/security/security-analyzer.js.map +1 -1
  32. package/dist/checkpoint/manager.d.ts +1 -0
  33. package/dist/checkpoint/manager.js +49 -9
  34. package/dist/checkpoint/manager.js.map +1 -1
  35. package/dist/checkpoint/storage.js +2 -2
  36. package/dist/checkpoint/storage.js.map +1 -1
  37. package/dist/commands/mcp-migrate.d.ts +9 -0
  38. package/dist/commands/mcp-migrate.js +172 -0
  39. package/dist/commands/mcp-migrate.js.map +1 -0
  40. package/dist/commands/status.d.ts +7 -0
  41. package/dist/commands/status.js +211 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/commands/vscode.d.ts +7 -0
  44. package/dist/commands/vscode.js +363 -0
  45. package/dist/commands/vscode.js.map +1 -0
  46. package/dist/index.js +79 -30
  47. package/dist/index.js.map +1 -1
  48. package/dist/llm/client.js +22 -4
  49. package/dist/llm/client.js.map +1 -1
  50. package/dist/mcp/automatosx-loader.d.ts +84 -0
  51. package/dist/mcp/automatosx-loader.js +238 -0
  52. package/dist/mcp/automatosx-loader.js.map +1 -0
  53. package/dist/mcp/client-mutex-patch.d.ts +36 -0
  54. package/dist/mcp/client-mutex-patch.js +75 -0
  55. package/dist/mcp/client-mutex-patch.js.map +1 -0
  56. package/dist/mcp/client-v2.d.ts +229 -0
  57. package/dist/mcp/client-v2.js +740 -0
  58. package/dist/mcp/client-v2.js.map +1 -0
  59. package/dist/mcp/client.d.ts +111 -13
  60. package/dist/mcp/client.js +168 -253
  61. package/dist/mcp/client.js.map +1 -1
  62. package/dist/mcp/config-detector-v2.d.ts +83 -0
  63. package/dist/mcp/config-detector-v2.js +328 -0
  64. package/dist/mcp/config-detector-v2.js.map +1 -0
  65. package/dist/mcp/config-detector.d.ts +90 -0
  66. package/dist/mcp/config-detector.js +242 -0
  67. package/dist/mcp/config-detector.js.map +1 -0
  68. package/dist/mcp/config-migrator-v2.d.ts +89 -0
  69. package/dist/mcp/config-migrator-v2.js +288 -0
  70. package/dist/mcp/config-migrator-v2.js.map +1 -0
  71. package/dist/mcp/config-migrator.d.ts +63 -0
  72. package/dist/mcp/config-migrator.js +269 -0
  73. package/dist/mcp/config-migrator.js.map +1 -0
  74. package/dist/mcp/config-v2.d.ts +106 -0
  75. package/dist/mcp/config-v2.js +417 -0
  76. package/dist/mcp/config-v2.js.map +1 -0
  77. package/dist/mcp/config.d.ts +12 -1
  78. package/dist/mcp/config.js +95 -10
  79. package/dist/mcp/config.js.map +1 -1
  80. package/dist/mcp/error-formatter.d.ts +46 -0
  81. package/dist/mcp/error-formatter.js +244 -0
  82. package/dist/mcp/error-formatter.js.map +1 -0
  83. package/dist/mcp/health.d.ts +5 -0
  84. package/dist/mcp/health.js +22 -2
  85. package/dist/mcp/health.js.map +1 -1
  86. package/dist/mcp/invariants.d.ts +141 -0
  87. package/dist/mcp/invariants.js +243 -0
  88. package/dist/mcp/invariants.js.map +1 -0
  89. package/dist/mcp/mutex-safe.d.ts +153 -0
  90. package/dist/mcp/mutex-safe.js +260 -0
  91. package/dist/mcp/mutex-safe.js.map +1 -0
  92. package/dist/mcp/mutex.d.ts +73 -0
  93. package/dist/mcp/mutex.js +130 -0
  94. package/dist/mcp/mutex.js.map +1 -0
  95. package/dist/mcp/reconnection.d.ts +4 -0
  96. package/dist/mcp/reconnection.js +15 -0
  97. package/dist/mcp/reconnection.js.map +1 -1
  98. package/dist/mcp/transports-v2.d.ts +152 -0
  99. package/dist/mcp/transports-v2.js +481 -0
  100. package/dist/mcp/transports-v2.js.map +1 -0
  101. package/dist/mcp/type-safety.d.ts +231 -0
  102. package/dist/mcp/type-safety.js +273 -0
  103. package/dist/mcp/type-safety.js.map +1 -0
  104. package/dist/planner/task-planner.js +13 -0
  105. package/dist/planner/task-planner.js.map +1 -1
  106. package/dist/planner/types.d.ts +6 -6
  107. package/dist/schemas/confirmation-schemas.d.ts +2 -2
  108. package/dist/schemas/settings-schemas.d.ts +196 -0
  109. package/dist/schemas/settings-schemas.js +146 -5
  110. package/dist/schemas/settings-schemas.js.map +1 -1
  111. package/dist/sdk/index.d.ts +118 -2
  112. package/dist/sdk/index.js +146 -4
  113. package/dist/sdk/index.js.map +1 -1
  114. package/dist/sdk/testing.d.ts +182 -0
  115. package/dist/sdk/testing.js +231 -0
  116. package/dist/sdk/testing.js.map +1 -1
  117. package/dist/sdk/version.d.ts +114 -15
  118. package/dist/sdk/version.js +137 -15
  119. package/dist/sdk/version.js.map +1 -1
  120. package/dist/tools/bash.js +54 -9
  121. package/dist/tools/bash.js.map +1 -1
  122. package/dist/tools/registry.d.ts +146 -0
  123. package/dist/tools/registry.js +170 -0
  124. package/dist/tools/registry.js.map +1 -0
  125. package/dist/tools/search.js +12 -2
  126. package/dist/tools/search.js.map +1 -1
  127. package/dist/tools/text-editor.js +84 -26
  128. package/dist/tools/text-editor.js.map +1 -1
  129. package/dist/ui/components/chat-history.js +6 -1
  130. package/dist/ui/components/chat-history.js.map +1 -1
  131. package/dist/ui/components/chat-input.d.ts +2 -1
  132. package/dist/ui/components/chat-input.js +5 -2
  133. package/dist/ui/components/chat-input.js.map +1 -1
  134. package/dist/ui/components/chat-interface.js +187 -5
  135. package/dist/ui/components/chat-interface.js.map +1 -1
  136. package/dist/ui/components/context-breakdown.d.ts +23 -0
  137. package/dist/ui/components/context-breakdown.js +124 -0
  138. package/dist/ui/components/context-breakdown.js.map +1 -0
  139. package/dist/ui/components/keyboard-help.d.ts +17 -0
  140. package/dist/ui/components/keyboard-help.js +116 -0
  141. package/dist/ui/components/keyboard-help.js.map +1 -0
  142. package/dist/ui/components/keyboard-hints.js +2 -2
  143. package/dist/ui/components/keyboard-hints.js.map +1 -1
  144. package/dist/ui/components/quick-actions.js +43 -7
  145. package/dist/ui/components/quick-actions.js.map +1 -1
  146. package/dist/ui/components/status-bar.d.ts +3 -0
  147. package/dist/ui/components/status-bar.js +25 -16
  148. package/dist/ui/components/status-bar.js.map +1 -1
  149. package/dist/ui/components/toast-notification.d.ts +42 -0
  150. package/dist/ui/components/toast-notification.js +30 -2
  151. package/dist/ui/components/toast-notification.js.map +1 -1
  152. package/dist/ui/components/tool-group-display.js +34 -4
  153. package/dist/ui/components/tool-group-display.js.map +1 -1
  154. package/dist/ui/components/welcome-panel.js +2 -2
  155. package/dist/ui/components/welcome-panel.js.map +1 -1
  156. package/dist/ui/hooks/use-enhanced-input.d.ts +9 -1
  157. package/dist/ui/hooks/use-enhanced-input.js +486 -41
  158. package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
  159. package/dist/ui/hooks/use-input-handler.d.ts +11 -1
  160. package/dist/ui/hooks/use-input-handler.js +67 -3
  161. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  162. package/dist/ui/hooks/use-input-history.d.ts +1 -1
  163. package/dist/ui/hooks/use-input-history.js +50 -14
  164. package/dist/ui/hooks/use-input-history.js.map +1 -1
  165. package/dist/ui/utils/bracketed-paste-handler.d.ts +97 -0
  166. package/dist/ui/utils/bracketed-paste-handler.js +322 -0
  167. package/dist/ui/utils/bracketed-paste-handler.js.map +1 -0
  168. package/dist/ui/utils/change-summarizer.js +16 -6
  169. package/dist/ui/utils/change-summarizer.js.map +1 -1
  170. package/dist/ui/utils/tool-grouper.d.ts +10 -1
  171. package/dist/ui/utils/tool-grouper.js +143 -30
  172. package/dist/ui/utils/tool-grouper.js.map +1 -1
  173. package/dist/utils/auto-accept-logger.d.ts +173 -0
  174. package/dist/utils/auto-accept-logger.js +420 -0
  175. package/dist/utils/auto-accept-logger.js.map +1 -0
  176. package/dist/utils/background-task-manager.d.ts +11 -0
  177. package/dist/utils/background-task-manager.js +124 -38
  178. package/dist/utils/background-task-manager.js.map +1 -1
  179. package/dist/utils/confirmation-service.d.ts +1 -0
  180. package/dist/utils/confirmation-service.js +6 -1
  181. package/dist/utils/confirmation-service.js.map +1 -1
  182. package/dist/utils/encryption.d.ts +8 -0
  183. package/dist/utils/encryption.js +44 -27
  184. package/dist/utils/encryption.js.map +1 -1
  185. package/dist/utils/enhanced-error-messages.d.ts +33 -0
  186. package/dist/utils/enhanced-error-messages.js +420 -0
  187. package/dist/utils/enhanced-error-messages.js.map +1 -0
  188. package/dist/utils/error-handler.d.ts +13 -3
  189. package/dist/utils/error-handler.js +16 -4
  190. package/dist/utils/error-handler.js.map +1 -1
  191. package/dist/utils/external-editor.d.ts +47 -0
  192. package/dist/utils/external-editor.js +179 -0
  193. package/dist/utils/external-editor.js.map +1 -0
  194. package/dist/utils/history-migration.d.ts +9 -0
  195. package/dist/utils/history-migration.js +36 -0
  196. package/dist/utils/history-migration.js.map +1 -0
  197. package/dist/utils/paste-utils.js +12 -11
  198. package/dist/utils/paste-utils.js.map +1 -1
  199. package/dist/utils/rate-limiter.js +7 -0
  200. package/dist/utils/rate-limiter.js.map +1 -1
  201. package/dist/utils/safety-rules.d.ts +64 -0
  202. package/dist/utils/safety-rules.js +225 -0
  203. package/dist/utils/safety-rules.js.map +1 -0
  204. package/dist/utils/settings-manager.d.ts +89 -1
  205. package/dist/utils/settings-manager.js +359 -3
  206. package/dist/utils/settings-manager.js.map +1 -1
  207. package/dist/utils/token-counter.d.ts +2 -0
  208. package/dist/utils/token-counter.js +17 -4
  209. package/dist/utils/token-counter.js.map +1 -1
  210. package/dist/utils/version.d.ts +11 -2
  211. package/dist/utils/version.js +54 -21
  212. package/dist/utils/version.js.map +1 -1
  213. package/package.json +2 -1
@@ -3,6 +3,58 @@
3
3
  * Groups consecutive tool operations for cleaner UX in quiet mode
4
4
  */
5
5
  import { UI_CONFIG } from '../../constants.js';
6
+ /**
7
+ * Cache for parsed tool arguments to avoid redundant JSON.parse calls
8
+ * Key: toolCall.id (unique per tool call)
9
+ * Value: Parsed arguments object
10
+ */
11
+ const parsedArgsCache = new Map();
12
+ /**
13
+ * Clear the parsed arguments cache
14
+ * Useful when chat history is cleared to prevent memory leaks
15
+ */
16
+ export function clearToolGroupCache() {
17
+ parsedArgsCache.clear();
18
+ }
19
+ /**
20
+ * Parse tool arguments with caching
21
+ * Uses tool call ID as cache key to avoid redundant JSON.parse
22
+ *
23
+ * @param toolCallId - Unique identifier for this tool call
24
+ * @param argsStr - JSON string of arguments
25
+ * @returns Parsed arguments object
26
+ */
27
+ function parseToolArguments(toolCallId, argsStr) {
28
+ // Check cache first
29
+ const cached = parsedArgsCache.get(toolCallId);
30
+ if (cached !== undefined) {
31
+ return cached;
32
+ }
33
+ // Limit cache size BEFORE adding new entry
34
+ if (parsedArgsCache.size >= 500) {
35
+ // Collect oldest 100 keys first (Map maintains insertion order)
36
+ const keysToDelete = [];
37
+ for (const key of parsedArgsCache.keys()) {
38
+ keysToDelete.push(key);
39
+ if (keysToDelete.length >= 100)
40
+ break;
41
+ }
42
+ // Delete collected keys (avoid iterator invalidation)
43
+ for (const key of keysToDelete) {
44
+ parsedArgsCache.delete(key);
45
+ }
46
+ }
47
+ // Parse and cache
48
+ try {
49
+ const args = JSON.parse(argsStr);
50
+ parsedArgsCache.set(toolCallId, args);
51
+ return args;
52
+ }
53
+ catch {
54
+ // Return empty object on parse error (don't cache failures)
55
+ return {};
56
+ }
57
+ }
6
58
  /**
7
59
  * Check if an entry is a ToolGroup
8
60
  */
@@ -19,41 +71,64 @@ function getResourceFromToolCall(entry) {
19
71
  const toolName = entry.toolCall?.function?.name;
20
72
  if (!toolName)
21
73
  return '';
22
- try {
23
- const argsStr = entry.toolCall?.function?.arguments;
24
- if (!argsStr)
25
- return '';
26
- const args = JSON.parse(argsStr);
27
- // File operations
28
- if (toolName === 'view_file' || toolName === 'str_replace_editor' || toolName === 'create_file') {
29
- return args.path || args.file_path || '';
30
- }
31
- // Search operations
32
- if (toolName === 'search') {
33
- return `search:${args.query || ''}`;
34
- }
35
- // Bash operations
36
- if (toolName === 'bash') {
37
- const cmd = args.command || '';
38
- // Group by command type (git, npm, etc)
39
- const cmdType = cmd.split(' ')[0];
40
- return `bash:${cmdType}`;
41
- }
42
- // Todo operations
43
- if (toolName === 'create_todo_list' || toolName === 'update_todo_list') {
44
- return 'todo';
45
- }
74
+ const argsStr = entry.toolCall?.function?.arguments;
75
+ if (!argsStr)
46
76
  return '';
77
+ // Use toolCall.id for caching (unique per call)
78
+ // Fallback to argsStr hash if no ID (shouldn't happen in practice)
79
+ const toolCallId = entry.toolCall?.id || `fallback:${argsStr.substring(0, 50)}`;
80
+ const args = parseToolArguments(toolCallId, argsStr);
81
+ // File operations
82
+ if (toolName === 'view_file' || toolName === 'str_replace_editor' || toolName === 'create_file') {
83
+ return args.path || args.file_path || '';
47
84
  }
48
- catch {
49
- return '';
85
+ // Search operations
86
+ if (toolName === 'search') {
87
+ return `search:${args.query || ''}`;
88
+ }
89
+ // Bash operations
90
+ if (toolName === 'bash') {
91
+ const cmd = args.command || '';
92
+ // Group by command type (git, npm, etc)
93
+ // Handle empty/whitespace commands by trimming first
94
+ const trimmedCmd = cmd.trim();
95
+ if (!trimmedCmd) {
96
+ // Empty command - use generic bash identifier
97
+ return 'bash:empty';
98
+ }
99
+ const cmdType = trimmedCmd.split(/\s+/)[0]; // Use \s+ to handle multiple spaces
100
+ return `bash:${cmdType}`;
101
+ }
102
+ // Bash output operations (checking background tasks)
103
+ if (toolName === 'bash_output') {
104
+ const taskId = args.task_id || '';
105
+ return taskId ? `task:${taskId}` : 'task:unknown';
106
+ }
107
+ // Todo operations
108
+ if (toolName === 'create_todo_list' || toolName === 'update_todo_list') {
109
+ return 'todo';
110
+ }
111
+ // Web search operations
112
+ if (toolName === 'web_search') {
113
+ const query = args.query || '';
114
+ return query ? `websearch:${query}` : 'websearch:unknown';
115
+ }
116
+ // Analysis operations
117
+ if (toolName === 'analyze_architecture') {
118
+ const projectPath = args.projectPath || args.project_path || '';
119
+ return projectPath ? `analysis:${projectPath}` : 'analysis:project';
50
120
  }
121
+ if (toolName === 'validate_best_practices') {
122
+ const path = args.path || '';
123
+ return path ? `validation:${path}` : 'validation:project';
124
+ }
125
+ return '';
51
126
  }
52
127
  /**
53
128
  * Determine group type based on tool name
54
129
  */
55
130
  function getGroupType(toolName) {
56
- if (toolName === 'bash')
131
+ if (toolName === 'bash' || toolName === 'bash_output')
57
132
  return 'bash';
58
133
  if (toolName === 'search')
59
134
  return 'search';
@@ -61,6 +136,10 @@ function getGroupType(toolName) {
61
136
  return 'todo';
62
137
  if (toolName === 'view_file' || toolName === 'str_replace_editor' || toolName === 'create_file')
63
138
  return 'file';
139
+ if (toolName === 'web_search')
140
+ return 'web';
141
+ if (toolName === 'analyze_architecture' || toolName === 'validate_best_practices')
142
+ return 'analysis';
64
143
  return 'mixed';
65
144
  }
66
145
  /**
@@ -77,8 +156,20 @@ function shouldGroup(current, previous, groupSize, maxGroupSize, timeWindow) {
77
156
  return false;
78
157
  }
79
158
  // Check time window
80
- const timeDiff = current.timestamp.getTime() - previous.timestamp.getTime();
81
- if (timeDiff > timeWindow) {
159
+ // Safely handle timestamps - could be Date objects or strings from deserialization
160
+ const currentTime = current.timestamp instanceof Date
161
+ ? current.timestamp.getTime()
162
+ : new Date(current.timestamp).getTime();
163
+ const previousTime = previous.timestamp instanceof Date
164
+ ? previous.timestamp.getTime()
165
+ : new Date(previous.timestamp).getTime();
166
+ // Reject if timestamps are invalid (NaN)
167
+ if (Number.isNaN(currentTime) || Number.isNaN(previousTime)) {
168
+ return false;
169
+ }
170
+ const timeDiff = currentTime - previousTime;
171
+ // Reject if time difference is negative (out of order) or exceeds window
172
+ if (timeDiff < 0 || timeDiff > timeWindow) {
82
173
  return false;
83
174
  }
84
175
  // Must operate on the same resource
@@ -167,6 +258,8 @@ export function getOperationCounts(group) {
167
258
  searches: 0,
168
259
  bash: 0,
169
260
  todos: 0,
261
+ web: 0,
262
+ analysis: 0,
170
263
  other: 0,
171
264
  };
172
265
  for (const op of group.operations) {
@@ -187,12 +280,20 @@ export function getOperationCounts(group) {
187
280
  counts.searches++;
188
281
  break;
189
282
  case 'bash':
283
+ case 'bash_output':
190
284
  counts.bash++;
191
285
  break;
192
286
  case 'create_todo_list':
193
287
  case 'update_todo_list':
194
288
  counts.todos++;
195
289
  break;
290
+ case 'web_search':
291
+ counts.web++;
292
+ break;
293
+ case 'analyze_architecture':
294
+ case 'validate_best_practices':
295
+ counts.analysis++;
296
+ break;
196
297
  default:
197
298
  counts.other++;
198
299
  }
@@ -201,14 +302,26 @@ export function getOperationCounts(group) {
201
302
  }
202
303
  /**
203
304
  * Get execution duration for a group in milliseconds
305
+ * Returns 0 if timestamps are invalid
204
306
  */
205
307
  export function getGroupDuration(group) {
206
- return group.endTime.getTime() - group.startTime.getTime();
308
+ const startMs = group.startTime.getTime();
309
+ const endMs = group.endTime.getTime();
310
+ // Handle Invalid Date objects (getTime() returns NaN)
311
+ if (Number.isNaN(startMs) || Number.isNaN(endMs)) {
312
+ return 0;
313
+ }
314
+ return endMs - startMs;
207
315
  }
208
316
  /**
209
317
  * Format duration in human-readable form
318
+ * Returns "0ms" for invalid durations (NaN, negative, etc.)
210
319
  */
211
320
  export function formatDuration(ms) {
321
+ // Handle invalid durations
322
+ if (!Number.isFinite(ms) || ms < 0) {
323
+ return '0ms';
324
+ }
212
325
  if (ms < 1000) {
213
326
  return `${ms}ms`;
214
327
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-grouper.js","sourceRoot":"","sources":["../../../src/ui/utils/tool-grouper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-grouper.js","sourceRoot":"","sources":["../../../src/ui/utils/tool-grouper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmC,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,UAAkB,EAAE,OAAe;IAC7D,oBAAoB;IACpB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2CAA2C;IAC3C,IAAI,eAAe,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAChC,gEAAgE;QAChE,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,YAAY,CAAC,MAAM,IAAI,GAAG;gBAAE,MAAM;QACxC,CAAC;QAED,sDAAsD;QACtD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAyBD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,OAAO,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAE,KAAa,CAAC,UAAU,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,KAAgB;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC/D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC;IAChD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACpD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,gDAAgD;IAChD,mEAAmE;IACnE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,YAAY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAChF,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAErD,kBAAkB;IAClB,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,oBAAoB,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAChG,OAAQ,IAAI,CAAC,IAAe,IAAK,IAAI,CAAC,SAAoB,IAAI,EAAE,CAAC;IACnE,CAAC;IAED,oBAAoB;IACpB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,UAAW,IAAI,CAAC,KAAgB,IAAI,EAAE,EAAE,CAAC;IAClD,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,GAAG,GAAI,IAAI,CAAC,OAAkB,IAAI,EAAE,CAAC;QAC3C,wCAAwC;QACxC,qDAAqD;QACrD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,8CAA8C;YAC9C,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC;QAChF,OAAO,QAAQ,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,qDAAqD;IACrD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAI,IAAI,CAAC,OAAkB,IAAI,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;IACpD,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,KAAK,kBAAkB,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACvE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wBAAwB;IACxB,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC5D,CAAC;IAED,sBAAsB;IACtB,IAAI,QAAQ,KAAK,sBAAsB,EAAE,CAAC;QACxC,MAAM,WAAW,GAAI,IAAI,CAAC,WAAsB,IAAK,IAAI,CAAC,YAAuB,IAAI,EAAE,CAAC;QACxF,OAAO,WAAW,CAAC,CAAC,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACtE,CAAC;IAED,IAAI,QAAQ,KAAK,yBAAyB,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAI,IAAI,CAAC,IAAe,IAAI,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,aAAa;QAAE,OAAO,MAAM,CAAC;IACrE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,QAAQ,KAAK,kBAAkB,IAAI,QAAQ,KAAK,kBAAkB;QAAE,OAAO,MAAM,CAAC;IACtF,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,oBAAoB,IAAI,QAAQ,KAAK,aAAa;QAAE,OAAO,MAAM,CAAC;IAC/G,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,QAAQ,KAAK,sBAAsB,IAAI,QAAQ,KAAK,yBAAyB;QAAE,OAAO,UAAU,CAAC;IACrG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,OAAkB,EAClB,QAAmB,EACnB,SAAiB,EACjB,YAAoB,EACpB,UAAkB;IAElB,wCAAwC;IACxC,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC;QAChE,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB;IACpB,mFAAmF;IACnF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,YAAY,IAAI;QACnD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;QAC7B,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,YAAY,IAAI;QACrD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE;QAC9B,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAE3C,yCAAyC;IACzC,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;IAE5C,yEAAyE;IACzE,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oCAAoC;IACpC,MAAM,eAAe,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAE3D,IAAI,CAAC,eAAe,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,eAAe,KAAK,gBAAgB,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAoB,EACpB,UAII,EAAE;IAEN,MAAM,EACJ,OAAO,GAAG,SAAS,CAAC,gBAAgB,EACpC,YAAY,GAAG,SAAS,CAAC,cAAc,EACvC,UAAU,GAAG,SAAS,CAAC,iBAAiB,GACzC,GAAG,OAAO,CAAC;IAEZ,6CAA6C;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,IAAI,YAAY,GAAqB,IAAI,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,0CAA0C;QAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC/D,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1B,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI,SAAS,CAAC;QAC7D,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEzC,uCAAuC;QACvC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,kBAAkB;YAClB,YAAY,GAAG;gBACb,QAAQ;gBACR,UAAU,EAAE,CAAC,KAAK,CAAC;gBACnB,SAAS,EAAE,KAAK,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACxF,OAAO,EAAE,KAAK,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACtF,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBAC9D,SAAS;aACV,CAAC;QACJ,CAAC;aAAM,IAAI,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC;YACrJ,wBAAwB;YACxB,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrG,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAClD,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,YAAY,GAAG;gBACb,QAAQ;gBACR,UAAU,EAAE,CAAC,KAAK,CAAC;gBACnB,SAAS,EAAE,KAAK,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACxF,OAAO,EAAE,KAAK,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACtF,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBAC9D,SAAS;aACV,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IAWjD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,QAAQ,EAAE,CAAC;QACX,KAAK,EAAE,CAAC;KACT,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC7C,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;YACR,KAAK,aAAa;gBAChB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM;YACR,KAAK,MAAM,CAAC;YACZ,KAAK,aAAa;gBAChB,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM;YACR,KAAK,kBAAkB,CAAC;YACxB,KAAK,kBAAkB;gBACrB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,YAAY;gBACf,MAAM,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM;YACR,KAAK,sBAAsB,CAAC;YAC5B,KAAK,yBAAyB;gBAC5B,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM;YACR;gBACE,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAEtC,sDAAsD;IACtD,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,KAAK,GAAG,OAAO,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,OAAO,GAAG,EAAE,IAAI,CAAC;IACnB,CAAC;SAAM,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAChD,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;IACnC,CAAC;AACH,CAAC"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Auto-accept Mode Audit Logger
3
+ *
4
+ * Specialized logger for tracking auto-accepted operations.
5
+ * Integrates with safety rules system to track destructive operations.
6
+ *
7
+ * Design Philosophy:
8
+ * - Every auto-accepted operation must be logged
9
+ * - Track both safe and destructive operations
10
+ * - Configurable retention via settings
11
+ * - Easy retrieval for debugging
12
+ * - Integration with general audit logger for compliance
13
+ */
14
+ import type { DestructiveOperation } from './safety-rules.js';
15
+ export interface AutoAcceptLogEntry {
16
+ timestamp: string;
17
+ sessionId: string;
18
+ operation: string;
19
+ command?: string;
20
+ filepath?: string;
21
+ details: string;
22
+ destructive: boolean;
23
+ matchedRules?: string[];
24
+ ruleDetails?: DestructiveOperation[];
25
+ userConfirmed: boolean;
26
+ autoAccepted: boolean;
27
+ scope: 'session' | 'project' | 'global';
28
+ }
29
+ export interface AutoAcceptLogFilter {
30
+ operation?: string;
31
+ destructive?: boolean;
32
+ autoAccepted?: boolean;
33
+ sessionId?: string;
34
+ startDate?: Date;
35
+ endDate?: Date;
36
+ scope?: 'session' | 'project' | 'global';
37
+ }
38
+ export interface AutoAcceptStats {
39
+ totalOperations: number;
40
+ autoAccepted: number;
41
+ destructive: number;
42
+ userConfirmed: number;
43
+ sessionCount: number;
44
+ mostCommonOperations: Array<{
45
+ operation: string;
46
+ count: number;
47
+ }>;
48
+ mostTriggeredRules: Array<{
49
+ rule: string;
50
+ count: number;
51
+ }>;
52
+ }
53
+ export declare class AutoAcceptLogger {
54
+ private static instance;
55
+ private logs;
56
+ private maxEntries;
57
+ private filepath;
58
+ private sessionId;
59
+ private enabled;
60
+ private constructor();
61
+ /**
62
+ * Get singleton instance
63
+ */
64
+ static getInstance(enabled?: boolean, maxEntries?: number, filepath?: string): AutoAcceptLogger;
65
+ /**
66
+ * Reset singleton (for testing)
67
+ */
68
+ static resetInstance(): void;
69
+ /**
70
+ * Generate unique session ID
71
+ */
72
+ private generateSessionId;
73
+ /**
74
+ * Get default filepath for auto-accept logs
75
+ */
76
+ private getDefaultFilepath;
77
+ /**
78
+ * Log an operation
79
+ */
80
+ log(entry: Omit<AutoAcceptLogEntry, 'timestamp' | 'sessionId'>): void;
81
+ /**
82
+ * Log to general audit logger for compliance
83
+ */
84
+ private logToGeneralAudit;
85
+ /**
86
+ * Log a bash command
87
+ */
88
+ logBashCommand(command: string, destructiveOperations: DestructiveOperation[], userConfirmed: boolean, autoAccepted: boolean, scope?: 'session' | 'project' | 'global'): void;
89
+ /**
90
+ * Log a file operation
91
+ */
92
+ logFileOperation(operation: 'edit' | 'write' | 'delete', filepath: string, destructive: boolean, userConfirmed: boolean, autoAccepted: boolean, scope?: 'session' | 'project' | 'global'): void;
93
+ /**
94
+ * Get all logs
95
+ */
96
+ getAllLogs(): AutoAcceptLogEntry[];
97
+ /**
98
+ * Get logs matching filter
99
+ */
100
+ getFilteredLogs(filter: AutoAcceptLogFilter): AutoAcceptLogEntry[];
101
+ /**
102
+ * Get logs for current session
103
+ */
104
+ getCurrentSessionLogs(): AutoAcceptLogEntry[];
105
+ /**
106
+ * Get recent logs (last N entries)
107
+ */
108
+ getRecentLogs(count: number): AutoAcceptLogEntry[];
109
+ /**
110
+ * Get statistics
111
+ */
112
+ getStats(sessionId?: string): AutoAcceptStats;
113
+ /**
114
+ * Get auto-accepted operations count
115
+ */
116
+ getAutoAcceptedCount(sessionId?: string): number;
117
+ /**
118
+ * Get destructive operations count
119
+ */
120
+ getDestructiveCount(sessionId?: string): number;
121
+ /**
122
+ * Clear all logs
123
+ */
124
+ clearLogs(): void;
125
+ /**
126
+ * Export logs to JSON file
127
+ */
128
+ exportToFile(filepath: string): void;
129
+ /**
130
+ * Load logs from file
131
+ */
132
+ private loadFromFile;
133
+ /**
134
+ * Save logs to file
135
+ */
136
+ private saveToFile;
137
+ /**
138
+ * Format log entry for display
139
+ */
140
+ static formatLogEntry(entry: AutoAcceptLogEntry): string;
141
+ /**
142
+ * Format all logs for display
143
+ */
144
+ formatAllLogs(): string;
145
+ /**
146
+ * Generate summary report
147
+ */
148
+ generateSummary(sessionId?: string): string;
149
+ /**
150
+ * Get current session ID
151
+ */
152
+ getCurrentSessionId(): string;
153
+ /**
154
+ * Check if logger is enabled
155
+ */
156
+ isEnabled(): boolean;
157
+ /**
158
+ * Enable logging
159
+ */
160
+ enable(): void;
161
+ /**
162
+ * Disable logging
163
+ */
164
+ disable(): void;
165
+ }
166
+ /**
167
+ * Get singleton instance of auto-accept audit logger
168
+ */
169
+ export declare function getAutoAcceptLogger(): AutoAcceptLogger;
170
+ /**
171
+ * Initialize auto-accept audit logger with settings
172
+ */
173
+ export declare function initializeAutoAcceptLogger(enabled: boolean, maxEntries: number, filepath?: string): AutoAcceptLogger;