@hailer/mcp 0.1.17 → 0.2.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 (200) hide show
  1. package/dist/app.js +24 -20
  2. package/dist/core.d.ts +33 -9
  3. package/dist/core.js +279 -147
  4. package/dist/mcp/UserContextCache.js +18 -0
  5. package/dist/mcp/hailer-clients.d.ts +9 -1
  6. package/dist/mcp/hailer-clients.js +13 -3
  7. package/dist/mcp/signal-handler.js +1 -1
  8. package/dist/mcp/tool-registry.d.ts +3 -1
  9. package/dist/mcp/tool-registry.js +4 -1
  10. package/dist/mcp/tools/activity.js +43 -34
  11. package/dist/mcp/tools/bot-config/constants.d.ts +23 -0
  12. package/dist/mcp/tools/bot-config/constants.js +94 -0
  13. package/dist/mcp/tools/{bot-config.d.ts → bot-config/core.d.ts} +6 -6
  14. package/dist/mcp/tools/{bot-config.js → bot-config/core.js} +15 -15
  15. package/dist/mcp/tools/bot-config/index.d.ts +10 -0
  16. package/dist/mcp/tools/bot-config/index.js +59 -0
  17. package/dist/mcp/tools/bot-config/tools.d.ts +7 -0
  18. package/dist/mcp/tools/bot-config/tools.js +15 -0
  19. package/dist/mcp/tools/bot-config/types.d.ts +50 -0
  20. package/dist/mcp/tools/bot-config/types.js +6 -0
  21. package/dist/mcp/tools/bug-fixer-tools.d.ts +21 -0
  22. package/dist/mcp/tools/{giuseppe-tools.js → bug-fixer-tools.js} +61 -61
  23. package/dist/mcp/tools/user.js +10 -29
  24. package/dist/mcp/tools/workflow.js +36 -2
  25. package/dist/mcp/utils/data-transformers.d.ts +0 -8
  26. package/dist/mcp/utils/data-transformers.js +0 -28
  27. package/dist/mcp/utils/index.d.ts +4 -1
  28. package/dist/mcp/utils/index.js +17 -3
  29. package/dist/mcp/utils/pagination.d.ts +40 -0
  30. package/dist/mcp/utils/pagination.js +55 -0
  31. package/dist/mcp/utils/response-builder.d.ts +53 -0
  32. package/dist/mcp/utils/response-builder.js +110 -0
  33. package/dist/mcp/utils/tool-helpers.d.ts +0 -8
  34. package/dist/mcp/utils/tool-helpers.js +0 -24
  35. package/dist/mcp/utils/types.d.ts +1 -33
  36. package/dist/mcp-server.d.ts +2 -2
  37. package/dist/mcp-server.js +161 -139
  38. package/package.json +1 -1
  39. package/REFACTOR_STATUS.md +0 -127
  40. package/dist/agents/bot-manager.d.ts +0 -48
  41. package/dist/agents/bot-manager.js +0 -254
  42. package/dist/agents/factory.d.ts +0 -150
  43. package/dist/agents/factory.js +0 -650
  44. package/dist/agents/giuseppe/ai.d.ts +0 -83
  45. package/dist/agents/giuseppe/ai.js +0 -466
  46. package/dist/agents/giuseppe/bot.d.ts +0 -110
  47. package/dist/agents/giuseppe/bot.js +0 -780
  48. package/dist/agents/giuseppe/config.d.ts +0 -25
  49. package/dist/agents/giuseppe/config.js +0 -227
  50. package/dist/agents/giuseppe/files.d.ts +0 -52
  51. package/dist/agents/giuseppe/files.js +0 -338
  52. package/dist/agents/giuseppe/git.d.ts +0 -48
  53. package/dist/agents/giuseppe/git.js +0 -298
  54. package/dist/agents/giuseppe/index.d.ts +0 -97
  55. package/dist/agents/giuseppe/index.js +0 -258
  56. package/dist/agents/giuseppe/lsp.d.ts +0 -113
  57. package/dist/agents/giuseppe/lsp.js +0 -485
  58. package/dist/agents/giuseppe/monitor.d.ts +0 -118
  59. package/dist/agents/giuseppe/monitor.js +0 -621
  60. package/dist/agents/giuseppe/prompt.d.ts +0 -5
  61. package/dist/agents/giuseppe/prompt.js +0 -94
  62. package/dist/agents/giuseppe/registries/pending-classification.d.ts +0 -28
  63. package/dist/agents/giuseppe/registries/pending-classification.js +0 -50
  64. package/dist/agents/giuseppe/registries/pending-fix.d.ts +0 -30
  65. package/dist/agents/giuseppe/registries/pending-fix.js +0 -42
  66. package/dist/agents/giuseppe/registries/pending.d.ts +0 -27
  67. package/dist/agents/giuseppe/registries/pending.js +0 -49
  68. package/dist/agents/giuseppe/specialist.d.ts +0 -47
  69. package/dist/agents/giuseppe/specialist.js +0 -237
  70. package/dist/agents/giuseppe/types.d.ts +0 -123
  71. package/dist/agents/giuseppe/types.js +0 -9
  72. package/dist/agents/hailer-expert/index.d.ts +0 -8
  73. package/dist/agents/hailer-expert/index.js +0 -14
  74. package/dist/agents/hal/daemon.d.ts +0 -142
  75. package/dist/agents/hal/daemon.js +0 -1103
  76. package/dist/agents/hal/definitions.d.ts +0 -55
  77. package/dist/agents/hal/definitions.js +0 -263
  78. package/dist/agents/hal/index.d.ts +0 -3
  79. package/dist/agents/hal/index.js +0 -8
  80. package/dist/agents/index.d.ts +0 -18
  81. package/dist/agents/index.js +0 -48
  82. package/dist/agents/shared/base.d.ts +0 -216
  83. package/dist/agents/shared/base.js +0 -846
  84. package/dist/agents/shared/services/agent-registry.d.ts +0 -107
  85. package/dist/agents/shared/services/agent-registry.js +0 -629
  86. package/dist/agents/shared/services/conversation-manager.d.ts +0 -50
  87. package/dist/agents/shared/services/conversation-manager.js +0 -136
  88. package/dist/agents/shared/services/mcp-client.d.ts +0 -56
  89. package/dist/agents/shared/services/mcp-client.js +0 -124
  90. package/dist/agents/shared/services/message-classifier.d.ts +0 -37
  91. package/dist/agents/shared/services/message-classifier.js +0 -187
  92. package/dist/agents/shared/services/message-formatter.d.ts +0 -89
  93. package/dist/agents/shared/services/message-formatter.js +0 -371
  94. package/dist/agents/shared/services/session-logger.d.ts +0 -106
  95. package/dist/agents/shared/services/session-logger.js +0 -446
  96. package/dist/agents/shared/services/tool-executor.d.ts +0 -41
  97. package/dist/agents/shared/services/tool-executor.js +0 -169
  98. package/dist/agents/shared/services/workspace-schema-cache.d.ts +0 -125
  99. package/dist/agents/shared/services/workspace-schema-cache.js +0 -578
  100. package/dist/agents/shared/specialist.d.ts +0 -91
  101. package/dist/agents/shared/specialist.js +0 -399
  102. package/dist/agents/shared/tool-schema-loader.d.ts +0 -62
  103. package/dist/agents/shared/tool-schema-loader.js +0 -232
  104. package/dist/agents/shared/types.d.ts +0 -327
  105. package/dist/agents/shared/types.js +0 -121
  106. package/dist/client/agents/base.d.ts +0 -207
  107. package/dist/client/agents/base.js +0 -744
  108. package/dist/client/agents/definitions.d.ts +0 -53
  109. package/dist/client/agents/definitions.js +0 -263
  110. package/dist/client/agents/orchestrator.d.ts +0 -141
  111. package/dist/client/agents/orchestrator.js +0 -1062
  112. package/dist/client/agents/specialist.d.ts +0 -86
  113. package/dist/client/agents/specialist.js +0 -340
  114. package/dist/client/bot-entrypoint.d.ts +0 -7
  115. package/dist/client/bot-entrypoint.js +0 -103
  116. package/dist/client/bot-manager.d.ts +0 -44
  117. package/dist/client/bot-manager.js +0 -173
  118. package/dist/client/bot-runner.d.ts +0 -35
  119. package/dist/client/bot-runner.js +0 -188
  120. package/dist/client/chat-agent-daemon.d.ts +0 -464
  121. package/dist/client/chat-agent-daemon.js +0 -1774
  122. package/dist/client/daemon-factory.d.ts +0 -106
  123. package/dist/client/daemon-factory.js +0 -301
  124. package/dist/client/factory.d.ts +0 -111
  125. package/dist/client/factory.js +0 -314
  126. package/dist/client/index.d.ts +0 -17
  127. package/dist/client/index.js +0 -38
  128. package/dist/client/multi-bot-manager.d.ts +0 -42
  129. package/dist/client/multi-bot-manager.js +0 -161
  130. package/dist/client/orchestrator-daemon.d.ts +0 -87
  131. package/dist/client/orchestrator-daemon.js +0 -444
  132. package/dist/client/server.d.ts +0 -8
  133. package/dist/client/server.js +0 -251
  134. package/dist/client/services/agent-registry.d.ts +0 -108
  135. package/dist/client/services/agent-registry.js +0 -630
  136. package/dist/client/services/conversation-manager.d.ts +0 -50
  137. package/dist/client/services/conversation-manager.js +0 -136
  138. package/dist/client/services/mcp-client.d.ts +0 -48
  139. package/dist/client/services/mcp-client.js +0 -105
  140. package/dist/client/services/message-classifier.d.ts +0 -37
  141. package/dist/client/services/message-classifier.js +0 -187
  142. package/dist/client/services/message-formatter.d.ts +0 -84
  143. package/dist/client/services/message-formatter.js +0 -353
  144. package/dist/client/services/session-logger.d.ts +0 -106
  145. package/dist/client/services/session-logger.js +0 -446
  146. package/dist/client/services/tool-executor.d.ts +0 -41
  147. package/dist/client/services/tool-executor.js +0 -169
  148. package/dist/client/services/workspace-schema-cache.d.ts +0 -149
  149. package/dist/client/services/workspace-schema-cache.js +0 -732
  150. package/dist/client/specialist-daemon.d.ts +0 -77
  151. package/dist/client/specialist-daemon.js +0 -197
  152. package/dist/client/specialists.d.ts +0 -53
  153. package/dist/client/specialists.js +0 -178
  154. package/dist/client/tool-schema-loader.d.ts +0 -62
  155. package/dist/client/tool-schema-loader.js +0 -232
  156. package/dist/client/types.d.ts +0 -327
  157. package/dist/client/types.js +0 -121
  158. package/dist/commands/seed-config.d.ts +0 -9
  159. package/dist/commands/seed-config.js +0 -372
  160. package/dist/lib/context-manager.d.ts +0 -111
  161. package/dist/lib/context-manager.js +0 -431
  162. package/dist/lib/prompt-length-manager.d.ts +0 -81
  163. package/dist/lib/prompt-length-manager.js +0 -457
  164. package/dist/mcp/tools/giuseppe-tools.d.ts +0 -21
  165. package/dist/modules/bug-reports/bug-config.d.ts +0 -25
  166. package/dist/modules/bug-reports/bug-config.js +0 -187
  167. package/dist/modules/bug-reports/bug-monitor.d.ts +0 -108
  168. package/dist/modules/bug-reports/bug-monitor.js +0 -510
  169. package/dist/modules/bug-reports/giuseppe-agent.d.ts +0 -58
  170. package/dist/modules/bug-reports/giuseppe-agent.js +0 -467
  171. package/dist/modules/bug-reports/giuseppe-ai.d.ts +0 -83
  172. package/dist/modules/bug-reports/giuseppe-ai.js +0 -466
  173. package/dist/modules/bug-reports/giuseppe-bot.d.ts +0 -110
  174. package/dist/modules/bug-reports/giuseppe-bot.js +0 -804
  175. package/dist/modules/bug-reports/giuseppe-daemon.d.ts +0 -80
  176. package/dist/modules/bug-reports/giuseppe-daemon.js +0 -617
  177. package/dist/modules/bug-reports/giuseppe-files.d.ts +0 -64
  178. package/dist/modules/bug-reports/giuseppe-files.js +0 -375
  179. package/dist/modules/bug-reports/giuseppe-git.d.ts +0 -48
  180. package/dist/modules/bug-reports/giuseppe-git.js +0 -298
  181. package/dist/modules/bug-reports/giuseppe-lsp.d.ts +0 -113
  182. package/dist/modules/bug-reports/giuseppe-lsp.js +0 -485
  183. package/dist/modules/bug-reports/giuseppe-prompt.d.ts +0 -5
  184. package/dist/modules/bug-reports/giuseppe-prompt.js +0 -94
  185. package/dist/modules/bug-reports/index.d.ts +0 -77
  186. package/dist/modules/bug-reports/index.js +0 -215
  187. package/dist/modules/bug-reports/pending-classification-registry.d.ts +0 -28
  188. package/dist/modules/bug-reports/pending-classification-registry.js +0 -50
  189. package/dist/modules/bug-reports/pending-fix-registry.d.ts +0 -30
  190. package/dist/modules/bug-reports/pending-fix-registry.js +0 -42
  191. package/dist/modules/bug-reports/pending-registry.d.ts +0 -27
  192. package/dist/modules/bug-reports/pending-registry.js +0 -49
  193. package/dist/modules/bug-reports/types.d.ts +0 -123
  194. package/dist/modules/bug-reports/types.js +0 -9
  195. package/dist/routes/agents.d.ts +0 -44
  196. package/dist/routes/agents.js +0 -311
  197. package/dist/services/agent-credential-store.d.ts +0 -73
  198. package/dist/services/agent-credential-store.js +0 -212
  199. package/dist/services/bug-monitor.d.ts +0 -23
  200. package/dist/services/bug-monitor.js +0 -275
@@ -1,275 +0,0 @@
1
- "use strict";
2
- /**
3
- * Bug Monitor Service
4
- *
5
- * Periodically checks for new bug reports and can trigger auto-fix workflows.
6
- * Configuration is read from Hailer's MCP Config workflow.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.BugMonitorService = void 0;
10
- exports.getBugMonitor = getBugMonitor;
11
- const logger_1 = require("../lib/logger");
12
- const UserContextCache_1 = require("../mcp/UserContextCache");
13
- const config_1 = require("../config");
14
- const logger = (0, logger_1.createLogger)({ component: 'bug-monitor' });
15
- class BugMonitorService {
16
- interval;
17
- config;
18
- userContext;
19
- bugWorkflowId;
20
- newPhaseId;
21
- fixedPhaseId;
22
- processedBugIds = new Set();
23
- async start() {
24
- logger.info('Starting Bug Monitor Service...');
25
- try {
26
- // Get API key from first configured account
27
- const appConfig = (0, config_1.createApplicationConfig)();
28
- const accounts = Object.entries(appConfig.hailerAccounts);
29
- if (accounts.length === 0) {
30
- logger.warn('No Hailer accounts configured, Bug Monitor disabled');
31
- return;
32
- }
33
- const [apiKey] = accounts[0];
34
- this.userContext = await UserContextCache_1.UserContextCache.getContext(apiKey);
35
- // Load config from Hailer
36
- await this.loadConfig();
37
- if (!this.config?.enabled) {
38
- logger.info('Bug Monitor is disabled in config');
39
- return;
40
- }
41
- // Find Bug Reports workflow
42
- await this.findBugWorkflow();
43
- if (!this.bugWorkflowId) {
44
- logger.warn(`Bug Reports workflow "${this.config.workflowName}" not found`);
45
- return;
46
- }
47
- // Start polling
48
- logger.info('Bug Monitor started', {
49
- workflowName: this.config.workflowName,
50
- intervalMs: this.config.intervalMs,
51
- autoFix: this.config.autoFix
52
- });
53
- // Initial check
54
- await this.checkForNewBugs();
55
- // Start interval
56
- this.interval = setInterval(async () => {
57
- await this.checkForNewBugs();
58
- }, this.config.intervalMs);
59
- }
60
- catch (error) {
61
- logger.error('Failed to start Bug Monitor', { error });
62
- }
63
- }
64
- async stop() {
65
- if (this.interval) {
66
- clearInterval(this.interval);
67
- this.interval = undefined;
68
- logger.info('Bug Monitor stopped');
69
- }
70
- }
71
- async loadConfig() {
72
- if (!this.userContext)
73
- return;
74
- try {
75
- const { workspaceCache, hailer } = this.userContext;
76
- // Find MCP Config workflow from cached init data
77
- const workflows = Object.values(workspaceCache.rawInit.processes || {});
78
- const mcpConfigWorkflow = workflows.find((w) => w.name?.includes('MCP config'));
79
- if (!mcpConfigWorkflow) {
80
- logger.warn('MCP Config workflow not found, using defaults');
81
- this.config = {
82
- enabled: true,
83
- workflowName: 'Bug Reports',
84
- intervalMs: 300000, // 5 minutes
85
- autoFix: false,
86
- notifyOnNew: true
87
- };
88
- return;
89
- }
90
- // Get phases
91
- const phases = Object.values(mcpConfigWorkflow.phases || {});
92
- if (!phases || phases.length === 0) {
93
- logger.warn('No phases in MCP Config workflow');
94
- this.config = {
95
- enabled: true,
96
- workflowName: 'Bug Reports',
97
- intervalMs: 300000,
98
- autoFix: false,
99
- notifyOnNew: true
100
- };
101
- return;
102
- }
103
- const firstPhase = phases[0];
104
- // Find Bug Monitor Service activity
105
- const result = await hailer.fetchActivityList(mcpConfigWorkflow._id, firstPhase._id, 100);
106
- const activities = result?.activities || result || [];
107
- const bugMonitorActivity = activities.find((a) => a.name === 'Bug Monitor Service');
108
- if (!bugMonitorActivity) {
109
- logger.info('Bug Monitor Service config not found, using defaults');
110
- this.config = {
111
- enabled: true,
112
- workflowName: 'Bug Reports',
113
- intervalMs: 300000,
114
- autoFix: false,
115
- notifyOnNew: true
116
- };
117
- return;
118
- }
119
- // Get full activity to read customContext field
120
- const fullActivity = await hailer.fetchActivityById(bugMonitorActivity._id);
121
- // Find customContext field value (it's a textarea field)
122
- const fields = fullActivity.fields || {};
123
- let customContextValue;
124
- for (const fieldData of Object.values(fields)) {
125
- if (fieldData.type === 'textarea' && fieldData.value) {
126
- try {
127
- // Try to parse as JSON - this might be our config
128
- JSON.parse(fieldData.value);
129
- customContextValue = fieldData.value;
130
- break;
131
- }
132
- catch {
133
- // Not JSON, skip
134
- }
135
- }
136
- }
137
- if (customContextValue) {
138
- this.config = JSON.parse(customContextValue);
139
- logger.info('Loaded Bug Monitor config from Hailer', this.config);
140
- }
141
- else {
142
- this.config = {
143
- enabled: true,
144
- workflowName: 'Bug Reports',
145
- intervalMs: 300000,
146
- autoFix: false,
147
- notifyOnNew: true
148
- };
149
- }
150
- }
151
- catch (error) {
152
- logger.error('Failed to load Bug Monitor config', { error });
153
- this.config = {
154
- enabled: false,
155
- workflowName: 'Bug Reports',
156
- intervalMs: 300000,
157
- autoFix: false,
158
- notifyOnNew: true
159
- };
160
- }
161
- }
162
- async findBugWorkflow() {
163
- if (!this.userContext || !this.config)
164
- return;
165
- try {
166
- const { workspaceCache } = this.userContext;
167
- // Find workflow from cached init data
168
- const workflows = Object.values(workspaceCache.rawInit.processes || {});
169
- const bugWorkflow = workflows.find((w) => w.name === this.config.workflowName);
170
- if (bugWorkflow) {
171
- this.bugWorkflowId = bugWorkflow._id;
172
- // Get phases from workflow data
173
- const phases = Object.values(bugWorkflow.phases || {});
174
- this.newPhaseId = phases.find((p) => p.name === 'New')?._id;
175
- this.fixedPhaseId = phases.find((p) => p.name === 'Fixed')?._id;
176
- logger.info('Found Bug Reports workflow', {
177
- workflowId: this.bugWorkflowId,
178
- newPhaseId: this.newPhaseId,
179
- fixedPhaseId: this.fixedPhaseId
180
- });
181
- }
182
- }
183
- catch (error) {
184
- logger.error('Failed to find Bug workflow', { error });
185
- }
186
- }
187
- async checkForNewBugs() {
188
- if (!this.userContext || !this.bugWorkflowId || !this.newPhaseId)
189
- return;
190
- try {
191
- const { hailer } = this.userContext;
192
- const result = await hailer.fetchActivityList(this.bugWorkflowId, this.newPhaseId, 50);
193
- const activities = result?.activities || result || [];
194
- const newBugs = activities.filter((a) => !this.processedBugIds.has(a._id));
195
- if (newBugs.length > 0) {
196
- logger.info(`Found ${newBugs.length} new bug report(s)`, {
197
- bugs: newBugs.map((b) => ({ id: b._id, name: b.name }))
198
- });
199
- for (const bug of newBugs) {
200
- await this.processBug(bug);
201
- this.processedBugIds.add(bug._id);
202
- }
203
- }
204
- }
205
- catch (error) {
206
- logger.error('Failed to check for bugs', { error });
207
- }
208
- }
209
- async processBug(bug) {
210
- logger.info('Processing bug report', {
211
- id: bug._id,
212
- name: bug.name
213
- });
214
- // Get full bug details
215
- const fullBug = await this.userContext.hailer.fetchActivityById(bug._id);
216
- // Extract field values
217
- const fields = fullBug.fields || {};
218
- let appId = '';
219
- let appName = '';
220
- let description = '';
221
- let reportedBy = '';
222
- for (const fieldData of Object.values(fields)) {
223
- const value = fieldData.value;
224
- if (typeof value === 'string') {
225
- // Try to identify fields by content pattern
226
- if (value.length === 24 && /^[a-f0-9]+$/.test(value)) {
227
- appId = value; // Likely app ID
228
- }
229
- else if (value.length < 50 && !description) {
230
- // Short text, could be appName or reportedBy
231
- if (!appName)
232
- appName = value;
233
- else if (!reportedBy)
234
- reportedBy = value;
235
- }
236
- else {
237
- description = value; // Longer text is likely description
238
- }
239
- }
240
- }
241
- const bugReport = {
242
- id: bug._id,
243
- name: bug.name,
244
- appId,
245
- appName,
246
- reportedBy,
247
- description,
248
- createdAt: bug.createdHumanReadable || new Date().toISOString()
249
- };
250
- logger.info('Bug report details', bugReport);
251
- if (this.config?.notifyOnNew && fullBug.discussion) {
252
- // Post to discussion
253
- try {
254
- await this.userContext.hailer.sendDiscussionMessage(fullBug.discussion, `🤖 Bug Monitor: New bug detected!\n\nApp: ${appName} (${appId})\nReported by: ${reportedBy}\nDescription: ${description}\n\nAnalyzing...`);
255
- }
256
- catch (error) {
257
- logger.warn('Failed to post to discussion', { error });
258
- }
259
- }
260
- if (this.config?.autoFix) {
261
- // TODO: Spawn agent to analyze and fix
262
- logger.info('Auto-fix enabled but not yet implemented', { bugId: bug._id });
263
- }
264
- }
265
- }
266
- exports.BugMonitorService = BugMonitorService;
267
- // Singleton instance
268
- let bugMonitorInstance = null;
269
- function getBugMonitor() {
270
- if (!bugMonitorInstance) {
271
- bugMonitorInstance = new BugMonitorService();
272
- }
273
- return bugMonitorInstance;
274
- }
275
- //# sourceMappingURL=bug-monitor.js.map