claudia-orchestrator 0.1.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 (296) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +109 -0
  3. package/dist/cli-parser.d.ts +11 -0
  4. package/dist/cli-parser.d.ts.map +1 -0
  5. package/dist/cli-parser.js +57 -0
  6. package/dist/cli-parser.js.map +1 -0
  7. package/dist/cui-server.d.ts +69 -0
  8. package/dist/cui-server.d.ts.map +1 -0
  9. package/dist/cui-server.js +705 -0
  10. package/dist/cui-server.js.map +1 -0
  11. package/dist/mcp-server/claudia-tools.d.ts +15 -0
  12. package/dist/mcp-server/claudia-tools.d.ts.map +1 -0
  13. package/dist/mcp-server/claudia-tools.js +366 -0
  14. package/dist/mcp-server/claudia-tools.js.map +1 -0
  15. package/dist/mcp-server/index.d.ts +3 -0
  16. package/dist/mcp-server/index.d.ts.map +1 -0
  17. package/dist/mcp-server/index.js +176 -0
  18. package/dist/mcp-server/index.js.map +1 -0
  19. package/dist/middleware/auth.d.ts +18 -0
  20. package/dist/middleware/auth.d.ts.map +1 -0
  21. package/dist/middleware/auth.js +136 -0
  22. package/dist/middleware/auth.js.map +1 -0
  23. package/dist/middleware/cors-setup.d.ts +7 -0
  24. package/dist/middleware/cors-setup.d.ts.map +1 -0
  25. package/dist/middleware/cors-setup.js +8 -0
  26. package/dist/middleware/cors-setup.js.map +1 -0
  27. package/dist/middleware/error-handler.d.ts +4 -0
  28. package/dist/middleware/error-handler.d.ts.map +1 -0
  29. package/dist/middleware/error-handler.js +27 -0
  30. package/dist/middleware/error-handler.js.map +1 -0
  31. package/dist/middleware/query-parser.d.ts +11 -0
  32. package/dist/middleware/query-parser.d.ts.map +1 -0
  33. package/dist/middleware/query-parser.js +68 -0
  34. package/dist/middleware/query-parser.js.map +1 -0
  35. package/dist/middleware/request-logger.d.ts +4 -0
  36. package/dist/middleware/request-logger.d.ts.map +1 -0
  37. package/dist/middleware/request-logger.js +29 -0
  38. package/dist/middleware/request-logger.js.map +1 -0
  39. package/dist/process-daemon/index.d.ts +14 -0
  40. package/dist/process-daemon/index.d.ts.map +1 -0
  41. package/dist/process-daemon/index.js +51 -0
  42. package/dist/process-daemon/index.js.map +1 -0
  43. package/dist/process-daemon/process-daemon.d.ts +78 -0
  44. package/dist/process-daemon/process-daemon.d.ts.map +1 -0
  45. package/dist/process-daemon/process-daemon.js +568 -0
  46. package/dist/process-daemon/process-daemon.js.map +1 -0
  47. package/dist/process-daemon/process-manager-client.d.ts +108 -0
  48. package/dist/process-daemon/process-manager-client.d.ts.map +1 -0
  49. package/dist/process-daemon/process-manager-client.js +314 -0
  50. package/dist/process-daemon/process-manager-client.js.map +1 -0
  51. package/dist/process-daemon/process-manager-interface.d.ts +47 -0
  52. package/dist/process-daemon/process-manager-interface.d.ts.map +1 -0
  53. package/dist/process-daemon/process-manager-interface.js +8 -0
  54. package/dist/process-daemon/process-manager-interface.js.map +1 -0
  55. package/dist/process-daemon/test-daemon.d.ts +12 -0
  56. package/dist/process-daemon/test-daemon.d.ts.map +1 -0
  57. package/dist/process-daemon/test-daemon.js +81 -0
  58. package/dist/process-daemon/test-daemon.js.map +1 -0
  59. package/dist/process-daemon/types.d.ts +85 -0
  60. package/dist/process-daemon/types.d.ts.map +1 -0
  61. package/dist/process-daemon/types.js +8 -0
  62. package/dist/process-daemon/types.js.map +1 -0
  63. package/dist/routes/claudia.routes.d.ts +10 -0
  64. package/dist/routes/claudia.routes.d.ts.map +1 -0
  65. package/dist/routes/claudia.routes.js +123 -0
  66. package/dist/routes/claudia.routes.js.map +1 -0
  67. package/dist/routes/config.routes.d.ts +4 -0
  68. package/dist/routes/config.routes.d.ts.map +1 -0
  69. package/dist/routes/config.routes.js +27 -0
  70. package/dist/routes/config.routes.js.map +1 -0
  71. package/dist/routes/conversation.routes.d.ts +8 -0
  72. package/dist/routes/conversation.routes.d.ts.map +1 -0
  73. package/dist/routes/conversation.routes.js +870 -0
  74. package/dist/routes/conversation.routes.js.map +1 -0
  75. package/dist/routes/filesystem.routes.d.ts +4 -0
  76. package/dist/routes/filesystem.routes.d.ts.map +1 -0
  77. package/dist/routes/filesystem.routes.js +86 -0
  78. package/dist/routes/filesystem.routes.js.map +1 -0
  79. package/dist/routes/gemini.routes.d.ts +4 -0
  80. package/dist/routes/gemini.routes.d.ts.map +1 -0
  81. package/dist/routes/gemini.routes.js +93 -0
  82. package/dist/routes/gemini.routes.js.map +1 -0
  83. package/dist/routes/insights.routes.d.ts +17 -0
  84. package/dist/routes/insights.routes.d.ts.map +1 -0
  85. package/dist/routes/insights.routes.js +417 -0
  86. package/dist/routes/insights.routes.js.map +1 -0
  87. package/dist/routes/license.routes.d.ts +3 -0
  88. package/dist/routes/license.routes.d.ts.map +1 -0
  89. package/dist/routes/license.routes.js +111 -0
  90. package/dist/routes/license.routes.js.map +1 -0
  91. package/dist/routes/log.routes.d.ts +3 -0
  92. package/dist/routes/log.routes.d.ts.map +1 -0
  93. package/dist/routes/log.routes.js +65 -0
  94. package/dist/routes/log.routes.js.map +1 -0
  95. package/dist/routes/notifications.routes.d.ts +4 -0
  96. package/dist/routes/notifications.routes.d.ts.map +1 -0
  97. package/dist/routes/notifications.routes.js +71 -0
  98. package/dist/routes/notifications.routes.js.map +1 -0
  99. package/dist/routes/permission.routes.d.ts +4 -0
  100. package/dist/routes/permission.routes.d.ts.map +1 -0
  101. package/dist/routes/permission.routes.js +116 -0
  102. package/dist/routes/permission.routes.js.map +1 -0
  103. package/dist/routes/question.routes.d.ts +8 -0
  104. package/dist/routes/question.routes.d.ts.map +1 -0
  105. package/dist/routes/question.routes.js +82 -0
  106. package/dist/routes/question.routes.js.map +1 -0
  107. package/dist/routes/streaming.routes.d.ts +4 -0
  108. package/dist/routes/streaming.routes.d.ts.map +1 -0
  109. package/dist/routes/streaming.routes.js +28 -0
  110. package/dist/routes/streaming.routes.js.map +1 -0
  111. package/dist/routes/system.routes.d.ts +5 -0
  112. package/dist/routes/system.routes.d.ts.map +1 -0
  113. package/dist/routes/system.routes.js +103 -0
  114. package/dist/routes/system.routes.js.map +1 -0
  115. package/dist/routes/working-directories.routes.d.ts +4 -0
  116. package/dist/routes/working-directories.routes.d.ts.map +1 -0
  117. package/dist/routes/working-directories.routes.js +25 -0
  118. package/dist/routes/working-directories.routes.js.map +1 -0
  119. package/dist/server.d.ts +3 -0
  120. package/dist/server.d.ts.map +1 -0
  121. package/dist/server.js +34 -0
  122. package/dist/server.js.map +1 -0
  123. package/dist/services/ToolMetricsService.d.ts +53 -0
  124. package/dist/services/ToolMetricsService.d.ts.map +1 -0
  125. package/dist/services/ToolMetricsService.js +230 -0
  126. package/dist/services/ToolMetricsService.js.map +1 -0
  127. package/dist/services/anthropic-service.d.ts +186 -0
  128. package/dist/services/anthropic-service.d.ts.map +1 -0
  129. package/dist/services/anthropic-service.js +1132 -0
  130. package/dist/services/anthropic-service.js.map +1 -0
  131. package/dist/services/claude-history-reader.d.ts +126 -0
  132. package/dist/services/claude-history-reader.d.ts.map +1 -0
  133. package/dist/services/claude-history-reader.js +717 -0
  134. package/dist/services/claude-history-reader.js.map +1 -0
  135. package/dist/services/claude-process-manager.d.ts +108 -0
  136. package/dist/services/claude-process-manager.d.ts.map +1 -0
  137. package/dist/services/claude-process-manager.js +909 -0
  138. package/dist/services/claude-process-manager.js.map +1 -0
  139. package/dist/services/claude-router-service.d.ts +19 -0
  140. package/dist/services/claude-router-service.d.ts.map +1 -0
  141. package/dist/services/claude-router-service.js +160 -0
  142. package/dist/services/claude-router-service.js.map +1 -0
  143. package/dist/services/claudia-service.d.ts +77 -0
  144. package/dist/services/claudia-service.d.ts.map +1 -0
  145. package/dist/services/claudia-service.js +194 -0
  146. package/dist/services/claudia-service.js.map +1 -0
  147. package/dist/services/commands-service.d.ts +18 -0
  148. package/dist/services/commands-service.d.ts.map +1 -0
  149. package/dist/services/commands-service.js +76 -0
  150. package/dist/services/commands-service.js.map +1 -0
  151. package/dist/services/config-service.d.ts +68 -0
  152. package/dist/services/config-service.d.ts.map +1 -0
  153. package/dist/services/config-service.js +429 -0
  154. package/dist/services/config-service.js.map +1 -0
  155. package/dist/services/conversation-cache.d.ts +86 -0
  156. package/dist/services/conversation-cache.d.ts.map +1 -0
  157. package/dist/services/conversation-cache.js +235 -0
  158. package/dist/services/conversation-cache.js.map +1 -0
  159. package/dist/services/conversation-status-manager.d.ts +98 -0
  160. package/dist/services/conversation-status-manager.d.ts.map +1 -0
  161. package/dist/services/conversation-status-manager.js +295 -0
  162. package/dist/services/conversation-status-manager.js.map +1 -0
  163. package/dist/services/cost-tracker.d.ts +87 -0
  164. package/dist/services/cost-tracker.d.ts.map +1 -0
  165. package/dist/services/cost-tracker.js +335 -0
  166. package/dist/services/cost-tracker.js.map +1 -0
  167. package/dist/services/file-system-service.d.ts +61 -0
  168. package/dist/services/file-system-service.d.ts.map +1 -0
  169. package/dist/services/file-system-service.js +348 -0
  170. package/dist/services/file-system-service.js.map +1 -0
  171. package/dist/services/gemini-service.d.ts +72 -0
  172. package/dist/services/gemini-service.d.ts.map +1 -0
  173. package/dist/services/gemini-service.js +431 -0
  174. package/dist/services/gemini-service.js.map +1 -0
  175. package/dist/services/insight-queue.d.ts +99 -0
  176. package/dist/services/insight-queue.d.ts.map +1 -0
  177. package/dist/services/insight-queue.js +277 -0
  178. package/dist/services/insight-queue.js.map +1 -0
  179. package/dist/services/insights-service.d.ts +102 -0
  180. package/dist/services/insights-service.d.ts.map +1 -0
  181. package/dist/services/insights-service.js +1152 -0
  182. package/dist/services/insights-service.js.map +1 -0
  183. package/dist/services/json-lines-parser.d.ts +19 -0
  184. package/dist/services/json-lines-parser.d.ts.map +1 -0
  185. package/dist/services/json-lines-parser.js +56 -0
  186. package/dist/services/json-lines-parser.js.map +1 -0
  187. package/dist/services/license-service.d.ts +69 -0
  188. package/dist/services/license-service.d.ts.map +1 -0
  189. package/dist/services/license-service.js +330 -0
  190. package/dist/services/license-service.js.map +1 -0
  191. package/dist/services/log-formatter.d.ts +5 -0
  192. package/dist/services/log-formatter.d.ts.map +1 -0
  193. package/dist/services/log-formatter.js +77 -0
  194. package/dist/services/log-formatter.js.map +1 -0
  195. package/dist/services/log-stream-buffer.d.ts +11 -0
  196. package/dist/services/log-stream-buffer.d.ts.map +1 -0
  197. package/dist/services/log-stream-buffer.js +36 -0
  198. package/dist/services/log-stream-buffer.js.map +1 -0
  199. package/dist/services/logger.d.ts +71 -0
  200. package/dist/services/logger.d.ts.map +1 -0
  201. package/dist/services/logger.js +215 -0
  202. package/dist/services/logger.js.map +1 -0
  203. package/dist/services/mcp-config-generator.d.ts +32 -0
  204. package/dist/services/mcp-config-generator.d.ts.map +1 -0
  205. package/dist/services/mcp-config-generator.js +126 -0
  206. package/dist/services/mcp-config-generator.js.map +1 -0
  207. package/dist/services/message-filter.d.ts +22 -0
  208. package/dist/services/message-filter.d.ts.map +1 -0
  209. package/dist/services/message-filter.js +57 -0
  210. package/dist/services/message-filter.js.map +1 -0
  211. package/dist/services/notification-service.d.ts +45 -0
  212. package/dist/services/notification-service.d.ts.map +1 -0
  213. package/dist/services/notification-service.js +184 -0
  214. package/dist/services/notification-service.js.map +1 -0
  215. package/dist/services/permission-tracker.d.ts +67 -0
  216. package/dist/services/permission-tracker.d.ts.map +1 -0
  217. package/dist/services/permission-tracker.js +161 -0
  218. package/dist/services/permission-tracker.js.map +1 -0
  219. package/dist/services/process-manager-factory.d.ts +81 -0
  220. package/dist/services/process-manager-factory.d.ts.map +1 -0
  221. package/dist/services/process-manager-factory.js +211 -0
  222. package/dist/services/process-manager-factory.js.map +1 -0
  223. package/dist/services/question-tracker.d.ts +47 -0
  224. package/dist/services/question-tracker.d.ts.map +1 -0
  225. package/dist/services/question-tracker.js +105 -0
  226. package/dist/services/question-tracker.js.map +1 -0
  227. package/dist/services/session-activity-watcher.d.ts +33 -0
  228. package/dist/services/session-activity-watcher.d.ts.map +1 -0
  229. package/dist/services/session-activity-watcher.js +194 -0
  230. package/dist/services/session-activity-watcher.js.map +1 -0
  231. package/dist/services/session-info-service.d.ts +228 -0
  232. package/dist/services/session-info-service.d.ts.map +1 -0
  233. package/dist/services/session-info-service.js +920 -0
  234. package/dist/services/session-info-service.js.map +1 -0
  235. package/dist/services/session-insights-service.d.ts +119 -0
  236. package/dist/services/session-insights-service.d.ts.map +1 -0
  237. package/dist/services/session-insights-service.js +889 -0
  238. package/dist/services/session-insights-service.js.map +1 -0
  239. package/dist/services/stream-manager.d.ts +62 -0
  240. package/dist/services/stream-manager.d.ts.map +1 -0
  241. package/dist/services/stream-manager.js +239 -0
  242. package/dist/services/stream-manager.js.map +1 -0
  243. package/dist/services/web-push-service.d.ts +48 -0
  244. package/dist/services/web-push-service.d.ts.map +1 -0
  245. package/dist/services/web-push-service.js +186 -0
  246. package/dist/services/web-push-service.js.map +1 -0
  247. package/dist/services/working-directories-service.d.ts +19 -0
  248. package/dist/services/working-directories-service.d.ts.map +1 -0
  249. package/dist/services/working-directories-service.js +103 -0
  250. package/dist/services/working-directories-service.js.map +1 -0
  251. package/dist/types/config.d.ts +111 -0
  252. package/dist/types/config.d.ts.map +1 -0
  253. package/dist/types/config.js +14 -0
  254. package/dist/types/config.js.map +1 -0
  255. package/dist/types/express.d.ts +5 -0
  256. package/dist/types/express.d.ts.map +1 -0
  257. package/dist/types/express.js +2 -0
  258. package/dist/types/express.js.map +1 -0
  259. package/dist/types/index.d.ts +325 -0
  260. package/dist/types/index.d.ts.map +1 -0
  261. package/dist/types/index.js +18 -0
  262. package/dist/types/index.js.map +1 -0
  263. package/dist/types/insights.d.ts +99 -0
  264. package/dist/types/insights.d.ts.map +1 -0
  265. package/dist/types/insights.js +7 -0
  266. package/dist/types/insights.js.map +1 -0
  267. package/dist/types/license.d.ts +70 -0
  268. package/dist/types/license.d.ts.map +1 -0
  269. package/dist/types/license.js +5 -0
  270. package/dist/types/license.js.map +1 -0
  271. package/dist/types/router-config.d.ts +13 -0
  272. package/dist/types/router-config.d.ts.map +1 -0
  273. package/dist/types/router-config.js +2 -0
  274. package/dist/types/router-config.js.map +1 -0
  275. package/dist/utils/constants.d.ts +26 -0
  276. package/dist/utils/constants.d.ts.map +1 -0
  277. package/dist/utils/constants.js +28 -0
  278. package/dist/utils/constants.js.map +1 -0
  279. package/dist/utils/machine-id.d.ts +7 -0
  280. package/dist/utils/machine-id.d.ts.map +1 -0
  281. package/dist/utils/machine-id.js +76 -0
  282. package/dist/utils/machine-id.js.map +1 -0
  283. package/dist/utils/server-startup.d.ts +13 -0
  284. package/dist/utils/server-startup.d.ts.map +1 -0
  285. package/dist/utils/server-startup.js +20 -0
  286. package/dist/utils/server-startup.js.map +1 -0
  287. package/dist/web/assets/main-DAc2rjJ2.css +1 -0
  288. package/dist/web/assets/main-DvlZ02mT.js +137 -0
  289. package/dist/web/favicon.png +0 -0
  290. package/dist/web/favicon.svg +22 -0
  291. package/dist/web/icon-192x192.png +0 -0
  292. package/dist/web/icon-512x512.png +0 -0
  293. package/dist/web/index.html +36 -0
  294. package/dist/web/manifest.json +61 -0
  295. package/package.json +174 -0
  296. package/scripts/postinstall.js +30 -0
@@ -0,0 +1,77 @@
1
+ import { Transform } from 'stream';
2
+ const RESET = '\x1b[0m';
3
+ const GRAY = '\x1b[90m';
4
+ const BOLD = '\x1b[1m';
5
+ const BLUE = '\x1b[34m';
6
+ export class LogFormatter extends Transform {
7
+ constructor() {
8
+ super({
9
+ writableObjectMode: true,
10
+ transform(chunk, _encoding, callback) {
11
+ try {
12
+ const logLine = String(chunk).trim();
13
+ if (!logLine) {
14
+ callback();
15
+ return;
16
+ }
17
+ const log = JSON.parse(logLine);
18
+ const formatted = formatLog(log);
19
+ callback(null, formatted + '\n');
20
+ }
21
+ catch (_err) {
22
+ // If we can't parse it, pass it through as-is
23
+ callback(null, chunk);
24
+ }
25
+ }
26
+ });
27
+ }
28
+ }
29
+ function formatLog(log) {
30
+ // Format timestamp in 12-hour format with AM/PM
31
+ const time = new Date(typeof log.time === 'string' ? log.time : log.time);
32
+ const hours = time.getHours();
33
+ const minutes = time.getMinutes().toString().padStart(2, '0');
34
+ const seconds = time.getSeconds().toString().padStart(2, '0');
35
+ const ampm = hours >= 12 ? 'PM' : 'AM';
36
+ const displayHours = (hours % 12 || 12).toString().padStart(2, '0');
37
+ const timestamp = `${displayHours}:${minutes}:${seconds} ${ampm}`;
38
+ // Build the formatted message
39
+ let formatted = `${GRAY}${timestamp}${RESET}`;
40
+ // Add component in bold blue brackets if present
41
+ if (log.component) {
42
+ formatted += ` ${BOLD}${BLUE}[${log.component}]${RESET}`;
43
+ }
44
+ // Add the main message
45
+ formatted += ` ${log.msg}`;
46
+ // Add context fields (filter out only pino internals)
47
+ const excludedFields = ['level', 'time', 'msg', 'component', 'pid', 'hostname', 'v'];
48
+ const contextFields = Object.keys(log)
49
+ .filter(key => !excludedFields.includes(key) && log[key] !== undefined && log[key] !== null);
50
+ if (contextFields.length > 0) {
51
+ const contextPairs = contextFields.map(key => {
52
+ const value = log[key];
53
+ // Special handling for error objects
54
+ if ((key === 'err' || key === 'error') && typeof value === 'object' && value !== null && 'message' in value) {
55
+ return `${key}="${value.message}"`;
56
+ }
57
+ // Format based on value type
58
+ if (typeof value === 'string') {
59
+ return `${key}="${value}"`;
60
+ }
61
+ else if (typeof value === 'number' || typeof value === 'boolean') {
62
+ return `${key}=${value}`;
63
+ }
64
+ else {
65
+ // For objects and arrays, use JSON.stringify
66
+ return `${key}=${JSON.stringify(value)}`;
67
+ }
68
+ });
69
+ formatted += ` ${GRAY}${contextPairs.join(' ')}${RESET}`;
70
+ }
71
+ // Handle error stack traces
72
+ if (log.err && typeof log.err === 'object' && 'stack' in log.err && log.err.stack) {
73
+ formatted += `\n${log.err.stack}`;
74
+ }
75
+ return formatted;
76
+ }
77
+ //# sourceMappingURL=log-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-formatter.js","sourceRoot":"","sources":["../../src/services/log-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from 'events';
2
+ export declare class LogStreamBuffer extends EventEmitter {
3
+ private buffer;
4
+ private maxBufferSize;
5
+ constructor(maxBufferSize?: number);
6
+ addLog(logLine: string): void;
7
+ getRecentLogs(limit?: number): string[];
8
+ clear(): void;
9
+ }
10
+ export declare const logStreamBuffer: LogStreamBuffer;
11
+ //# sourceMappingURL=log-stream-buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-stream-buffer.d.ts","sourceRoot":"","sources":["../../src/services/log-stream-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,GAAE,MAAa;IAKjC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAa7B,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAcvC,KAAK,IAAI,IAAI;CAGrB;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { EventEmitter } from 'events';
2
+ export class LogStreamBuffer extends EventEmitter {
3
+ buffer = [];
4
+ maxBufferSize;
5
+ constructor(maxBufferSize = 1000) {
6
+ super();
7
+ this.maxBufferSize = maxBufferSize;
8
+ }
9
+ addLog(logLine) {
10
+ // Add to buffer
11
+ this.buffer.push(logLine);
12
+ // Maintain buffer size
13
+ if (this.buffer.length > this.maxBufferSize) {
14
+ this.buffer.shift();
15
+ }
16
+ // Emit for real-time streaming
17
+ this.emit('log', logLine);
18
+ }
19
+ getRecentLogs(limit) {
20
+ // Handle zero limit explicitly
21
+ if (limit === 0) {
22
+ return [];
23
+ }
24
+ // Handle undefined/null limit or limit larger than buffer
25
+ if (limit === undefined || limit === null || limit >= this.buffer.length) {
26
+ return [...this.buffer];
27
+ }
28
+ return this.buffer.slice(-limit);
29
+ }
30
+ clear() {
31
+ this.buffer = [];
32
+ }
33
+ }
34
+ // Singleton instance
35
+ export const logStreamBuffer = new LogStreamBuffer();
36
+ //# sourceMappingURL=log-stream-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-stream-buffer.js","sourceRoot":"","sources":["../../src/services/log-stream-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACvC,MAAM,GAAa,EAAE,CAAC;IACtB,aAAa,CAAS;IAE9B,YAAY,gBAAwB,IAAI;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEM,MAAM,CAAC,OAAe;QAC3B,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1B,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEM,aAAa,CAAC,KAAc;QACjC,+BAA+B;QAC/B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,0DAA0D;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { Logger as PinoLogger } from 'pino';
2
+ export interface LogContext {
3
+ component?: string;
4
+ sessionId?: string;
5
+ streamingId?: string;
6
+ requestId?: string;
7
+ [key: string]: any;
8
+ }
9
+ /**
10
+ * Wrapper class for Pino logger that provides an intuitive API
11
+ * Translates logger.method('message', context) to Pino's logger.method(context, 'message')
12
+ */
13
+ export type Logger = CUILogger;
14
+ export declare class CUILogger {
15
+ private pinoLogger;
16
+ constructor(pinoLogger: PinoLogger);
17
+ debug(message: string, context?: any): void;
18
+ info(message: string, context?: any): void;
19
+ warn(message: string, context?: any): void;
20
+ error(message: string, error?: Error | unknown, context?: any): void;
21
+ fatal(message: string, error?: Error | unknown, context?: any): void;
22
+ child(context: LogContext): CUILogger;
23
+ }
24
+ /**
25
+ * Centralized logger service using Pino
26
+ * Provides consistent logging across all CUI components
27
+ * Log level is controlled by LOG_LEVEL environment variable
28
+ */
29
+ declare class LoggerService {
30
+ private static instance;
31
+ private baseLogger;
32
+ private logInterceptStream;
33
+ private childLoggers;
34
+ private constructor();
35
+ /**
36
+ * Get the singleton logger instance
37
+ */
38
+ static getInstance(): LoggerService;
39
+ /**
40
+ * Create a child logger with context
41
+ */
42
+ child(context: LogContext): CUILogger;
43
+ /**
44
+ * Get the base logger
45
+ */
46
+ getLogger(): CUILogger;
47
+ /**
48
+ * Log debug message
49
+ */
50
+ debug(message: string, context?: LogContext): void;
51
+ /**
52
+ * Log info message
53
+ */
54
+ info(message: string, context?: LogContext): void;
55
+ /**
56
+ * Log warning message
57
+ */
58
+ warn(message: string, context?: LogContext): void;
59
+ /**
60
+ * Log error message
61
+ */
62
+ error(message: string, error?: Error | unknown, context?: LogContext): void;
63
+ /**
64
+ * Log fatal message
65
+ */
66
+ fatal(message: string, error?: Error | unknown, context?: LogContext): void;
67
+ }
68
+ export declare const logger: LoggerService;
69
+ export declare function createLogger(component: string, baseContext?: LogContext): CUILogger;
70
+ export {};
71
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAIlD,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;GAGG;AAEH,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC;AAE/B,qBAAa,SAAS;IACR,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAG1C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAS3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAS1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAS1C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAiBpE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAiBpE,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;CAGtC;AAED;;;;GAIG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,YAAY,CAAsC;IAE1D,OAAO;IA0CP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAQrC;;OAEG;IACH,SAAS,IAAI,SAAS;IAItB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAQlD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAQjD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAQjD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAS3E;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;CAQ5E;AAGD,eAAO,MAAM,MAAM,eAA8B,CAAC;AAGlD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAGnF"}
@@ -0,0 +1,215 @@
1
+ import pino from 'pino';
2
+ import { PassThrough } from 'stream';
3
+ import { LogFormatter } from './log-formatter.js';
4
+ export class CUILogger {
5
+ pinoLogger;
6
+ constructor(pinoLogger) {
7
+ this.pinoLogger = pinoLogger;
8
+ }
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ debug(message, context) {
11
+ if (context !== undefined) {
12
+ this.pinoLogger.debug(context, message);
13
+ }
14
+ else {
15
+ this.pinoLogger.debug(message);
16
+ }
17
+ }
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ info(message, context) {
20
+ if (context !== undefined) {
21
+ this.pinoLogger.info(context, message);
22
+ }
23
+ else {
24
+ this.pinoLogger.info(message);
25
+ }
26
+ }
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ warn(message, context) {
29
+ if (context !== undefined) {
30
+ this.pinoLogger.warn(context, message);
31
+ }
32
+ else {
33
+ this.pinoLogger.warn(message);
34
+ }
35
+ }
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
+ error(message, error, context) {
38
+ if (error instanceof Error) {
39
+ const logData = { err: error, ...context };
40
+ this.pinoLogger.error(logData, message);
41
+ }
42
+ else if (error !== undefined && context !== undefined) {
43
+ // error is actually context, context is extra data
44
+ const logData = { ...error, ...context };
45
+ this.pinoLogger.error(logData, message);
46
+ }
47
+ else if (error !== undefined) {
48
+ // error is context
49
+ this.pinoLogger.error(error, message);
50
+ }
51
+ else {
52
+ this.pinoLogger.error(message);
53
+ }
54
+ }
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ fatal(message, error, context) {
57
+ if (error instanceof Error) {
58
+ const logData = { err: error, ...context };
59
+ this.pinoLogger.fatal(logData, message);
60
+ }
61
+ else if (error !== undefined && context !== undefined) {
62
+ // error is actually context, context is extra data
63
+ const logData = { ...error, ...context };
64
+ this.pinoLogger.fatal(logData, message);
65
+ }
66
+ else if (error !== undefined) {
67
+ // error is context
68
+ this.pinoLogger.fatal(error, message);
69
+ }
70
+ else {
71
+ this.pinoLogger.fatal(message);
72
+ }
73
+ }
74
+ // Support for creating child loggers
75
+ child(context) {
76
+ return new CUILogger(this.pinoLogger.child(context));
77
+ }
78
+ }
79
+ /**
80
+ * Centralized logger service using Pino
81
+ * Provides consistent logging across all CUI components
82
+ * Log level is controlled by LOG_LEVEL environment variable
83
+ */
84
+ class LoggerService {
85
+ static instance;
86
+ baseLogger;
87
+ logInterceptStream;
88
+ childLoggers = new Map();
89
+ constructor() {
90
+ // Get log level from environment variable, default to 'info'
91
+ const logLevel = process.env.LOG_LEVEL || 'info';
92
+ // Create a pass-through stream to intercept logs
93
+ this.logInterceptStream = new PassThrough();
94
+ // Forward logs to the log buffer (lazy loaded to avoid circular dependency)
95
+ this.logInterceptStream.on('data', (chunk) => {
96
+ const logLine = chunk.toString().trim();
97
+ if (logLine) {
98
+ // Lazy load to avoid circular dependency
99
+ import('../services/log-stream-buffer').then(({ logStreamBuffer }) => {
100
+ logStreamBuffer.addLog(logLine);
101
+ }).catch(() => {
102
+ // Silently ignore if log buffer is not available
103
+ });
104
+ }
105
+ });
106
+ const formatter = new LogFormatter();
107
+ formatter.pipe(process.stdout);
108
+ // Create multi-stream configuration with formatter
109
+ const streams = [
110
+ { level: logLevel, stream: formatter },
111
+ { level: logLevel, stream: this.logInterceptStream }
112
+ ];
113
+ this.baseLogger = pino({
114
+ level: logLevel,
115
+ formatters: {
116
+ level: (label) => {
117
+ return { level: label };
118
+ }
119
+ },
120
+ timestamp: pino.stdTimeFunctions.isoTime,
121
+ // Enable in test environment if debug level, otherwise suppress
122
+ enabled: process.env.NODE_ENV !== 'test' || logLevel === 'debug'
123
+ }, pino.multistream(streams));
124
+ }
125
+ /**
126
+ * Get the singleton logger instance
127
+ */
128
+ static getInstance() {
129
+ if (!LoggerService.instance) {
130
+ LoggerService.instance = new LoggerService();
131
+ }
132
+ return LoggerService.instance;
133
+ }
134
+ /**
135
+ * Create a child logger with context
136
+ */
137
+ child(context) {
138
+ const contextKey = JSON.stringify(context);
139
+ if (!this.childLoggers.has(contextKey)) {
140
+ this.childLoggers.set(contextKey, this.baseLogger.child(context));
141
+ }
142
+ return new CUILogger(this.childLoggers.get(contextKey));
143
+ }
144
+ /**
145
+ * Get the base logger
146
+ */
147
+ getLogger() {
148
+ return new CUILogger(this.baseLogger);
149
+ }
150
+ /**
151
+ * Log debug message
152
+ */
153
+ debug(message, context) {
154
+ if (context) {
155
+ this.baseLogger.child(context).debug(message);
156
+ }
157
+ else {
158
+ this.baseLogger.debug(message);
159
+ }
160
+ }
161
+ /**
162
+ * Log info message
163
+ */
164
+ info(message, context) {
165
+ if (context) {
166
+ this.baseLogger.child(context).info(message);
167
+ }
168
+ else {
169
+ this.baseLogger.info(message);
170
+ }
171
+ }
172
+ /**
173
+ * Log warning message
174
+ */
175
+ warn(message, context) {
176
+ if (context) {
177
+ this.baseLogger.child(context).warn(message);
178
+ }
179
+ else {
180
+ this.baseLogger.warn(message);
181
+ }
182
+ }
183
+ /**
184
+ * Log error message
185
+ */
186
+ error(message, error, context) {
187
+ const logData = error ? { err: error } : {};
188
+ if (context) {
189
+ this.baseLogger.child({ ...context, ...logData }).error(message);
190
+ }
191
+ else {
192
+ this.baseLogger.error(logData, message);
193
+ }
194
+ }
195
+ /**
196
+ * Log fatal message
197
+ */
198
+ fatal(message, error, context) {
199
+ const logData = error ? { err: error } : {};
200
+ if (context) {
201
+ this.baseLogger.child({ ...context, ...logData }).fatal(message);
202
+ }
203
+ else {
204
+ this.baseLogger.fatal(logData, message);
205
+ }
206
+ }
207
+ }
208
+ // Export singleton instance
209
+ export const logger = LoggerService.getInstance();
210
+ // Export factory function for creating component loggers
211
+ export function createLogger(component, baseContext) {
212
+ const context = { component, ...baseContext };
213
+ return logger.child(context);
214
+ }
215
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { FileSystemService } from '../services/file-system-service.js';
2
+ export interface MCPConfig {
3
+ mcpServers: {
4
+ [key: string]: {
5
+ command: string;
6
+ args: string[];
7
+ env?: Record<string, string>;
8
+ };
9
+ };
10
+ }
11
+ /**
12
+ * Generates and writes MCP configuration file
13
+ */
14
+ export declare class MCPConfigGenerator {
15
+ private configPath;
16
+ private fileSystemService?;
17
+ private logger;
18
+ constructor(fileSystemService?: FileSystemService);
19
+ /**
20
+ * Generate MCP config with the permission server
21
+ */
22
+ generateConfig(port: number): Promise<string>;
23
+ /**
24
+ * Get the path to the generated config file
25
+ */
26
+ getConfigPath(): string;
27
+ /**
28
+ * Clean up the config file (for shutdown)
29
+ */
30
+ cleanup(): void;
31
+ }
32
+ //# sourceMappingURL=mcp-config-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config-generator.d.ts","sourceRoot":"","sources":["../../src/services/mcp-config-generator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAMtE,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,MAAM,CAAS;gBAEX,iBAAiB,CAAC,EAAE,iBAAiB;IASjD;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqFnD;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,OAAO,IAAI,IAAI;CAWhB"}
@@ -0,0 +1,126 @@
1
+ import { writeFileSync, mkdirSync, unlinkSync, existsSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { tmpdir } from 'os';
4
+ import { v4 as uuidv4 } from 'uuid';
5
+ import { fileURLToPath } from 'url';
6
+ import { createLogger } from '../services/logger.js';
7
+ // Get the directory of this module
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+ /**
11
+ * Generates and writes MCP configuration file
12
+ */
13
+ export class MCPConfigGenerator {
14
+ configPath;
15
+ fileSystemService;
16
+ logger;
17
+ constructor(fileSystemService) {
18
+ this.logger = createLogger('MCPConfigGenerator');
19
+ // Generate unique config file in temp directory
20
+ const tempDir = tmpdir();
21
+ const configFileName = `cui-mcp-config-${uuidv4()}.json`;
22
+ this.configPath = join(tempDir, configFileName);
23
+ this.fileSystemService = fileSystemService;
24
+ }
25
+ /**
26
+ * Generate MCP config with the permission server
27
+ */
28
+ async generateConfig(port) {
29
+ // Find MCP server relative to this module
30
+ // In production: __dirname is /path/to/node_modules/cui-server/dist/services
31
+ // In development: __dirname is /path/to/cui-server/src/services
32
+ // MCP server is always in dist/mcp-server/index.js
33
+ let mcpServerPath;
34
+ let claudiaToolsPath;
35
+ if (__dirname.includes('/dist/') || __dirname.includes('\\dist\\')) {
36
+ // Production: we're in dist/services, go up to dist then to mcp-server
37
+ mcpServerPath = join(__dirname, '..', 'mcp-server', 'index.js');
38
+ claudiaToolsPath = join(__dirname, '..', 'mcp-server', 'claudia-tools.js');
39
+ }
40
+ else {
41
+ // Development: we're in src/services, go up to root then to dist/mcp-server
42
+ mcpServerPath = join(__dirname, '..', '..', 'dist', 'mcp-server', 'index.js');
43
+ claudiaToolsPath = join(__dirname, '..', '..', 'dist', 'mcp-server', 'claudia-tools.js');
44
+ }
45
+ // Validate that the MCP server file and Node.js executable exist
46
+ if (this.fileSystemService) {
47
+ // Check if MCP server JS file exists
48
+ if (!existsSync(mcpServerPath)) {
49
+ const error = new Error(`MCP server file not found: ${mcpServerPath}`);
50
+ this.logger.warn('MCP server file not found, skipping MCP config generation', {
51
+ mcpServerPath,
52
+ error: error.message
53
+ });
54
+ throw error;
55
+ }
56
+ // Validate that the MCP server file is executable
57
+ try {
58
+ await this.fileSystemService.validateExecutable(mcpServerPath);
59
+ this.logger.debug('MCP server file validated as executable successfully');
60
+ }
61
+ catch (error) {
62
+ this.logger.warn('MCP server file is not executable, skipping MCP config generation', {
63
+ mcpServerPath,
64
+ error: error instanceof Error ? error.message : String(error)
65
+ });
66
+ throw error;
67
+ }
68
+ this.logger.debug('MCP server file and Node.js validated successfully', { mcpServerPath });
69
+ }
70
+ const config = {
71
+ mcpServers: {
72
+ 'claudia-permissions': {
73
+ command: 'node',
74
+ args: [mcpServerPath],
75
+ env: {
76
+ CUI_SERVER_URL: `http://localhost:${port}`,
77
+ CUI_SERVER_PORT: String(port),
78
+ LOG_LEVEL: process.env.LOG_LEVEL || 'info'
79
+ }
80
+ },
81
+ 'claudia-orchestrator': {
82
+ command: 'node',
83
+ args: [claudiaToolsPath],
84
+ env: {
85
+ CUI_SERVER_URL: `http://localhost:${port}`,
86
+ CUI_SERVER_PORT: String(port),
87
+ LOG_LEVEL: process.env.LOG_LEVEL || 'info'
88
+ }
89
+ }
90
+ }
91
+ };
92
+ // Ensure directory exists
93
+ mkdirSync(dirname(this.configPath), { recursive: true });
94
+ // Write config file
95
+ writeFileSync(this.configPath, JSON.stringify(config, null, 2));
96
+ this.logger.info('MCP config file generated', {
97
+ path: this.configPath,
98
+ port,
99
+ mcpServerPath
100
+ });
101
+ this.logger.debug('MCP config file', { config });
102
+ return this.configPath;
103
+ }
104
+ /**
105
+ * Get the path to the generated config file
106
+ */
107
+ getConfigPath() {
108
+ return this.configPath;
109
+ }
110
+ /**
111
+ * Clean up the config file (for shutdown)
112
+ */
113
+ cleanup() {
114
+ try {
115
+ unlinkSync(this.configPath);
116
+ this.logger.debug('MCP config file cleaned up', { path: this.configPath });
117
+ }
118
+ catch (error) {
119
+ this.logger.warn('Failed to clean up MCP config file', {
120
+ path: this.configPath,
121
+ error: error instanceof Error ? error.message : String(error)
122
+ });
123
+ }
124
+ }
125
+ }
126
+ //# sourceMappingURL=mcp-config-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config-generator.js","sourceRoot":"","sources":["../../src/services/mcp-config-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ConversationMessage } from '../types/index.js';
2
+ /**
3
+ * Filters out local command messages from conversation history
4
+ */
5
+ export declare class MessageFilter {
6
+ private logger;
7
+ private filteredPrefixes;
8
+ constructor();
9
+ /**
10
+ * Filter an array of conversation messages
11
+ */
12
+ filterMessages(messages: ConversationMessage[]): ConversationMessage[];
13
+ /**
14
+ * Determine if a message should be kept (not filtered out)
15
+ */
16
+ private shouldKeepMessage;
17
+ /**
18
+ * Extract text content from Anthropic message object
19
+ */
20
+ private extractTextContent;
21
+ }
22
+ //# sourceMappingURL=message-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-filter.d.ts","sourceRoot":"","sources":["../../src/services/message-filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAItB;;IAMF;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE;IAItE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAmB3B"}