@hailer/mcp 0.1.16 → 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 (202) 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/webhook-handler.d.ts +2 -2
  37. package/dist/mcp/webhook-handler.js +5 -3
  38. package/dist/mcp-server.d.ts +2 -2
  39. package/dist/mcp-server.js +167 -140
  40. package/package.json +1 -1
  41. package/REFACTOR_STATUS.md +0 -127
  42. package/dist/agents/bot-manager.d.ts +0 -48
  43. package/dist/agents/bot-manager.js +0 -254
  44. package/dist/agents/factory.d.ts +0 -150
  45. package/dist/agents/factory.js +0 -650
  46. package/dist/agents/giuseppe/ai.d.ts +0 -83
  47. package/dist/agents/giuseppe/ai.js +0 -466
  48. package/dist/agents/giuseppe/bot.d.ts +0 -110
  49. package/dist/agents/giuseppe/bot.js +0 -780
  50. package/dist/agents/giuseppe/config.d.ts +0 -25
  51. package/dist/agents/giuseppe/config.js +0 -227
  52. package/dist/agents/giuseppe/files.d.ts +0 -52
  53. package/dist/agents/giuseppe/files.js +0 -338
  54. package/dist/agents/giuseppe/git.d.ts +0 -48
  55. package/dist/agents/giuseppe/git.js +0 -298
  56. package/dist/agents/giuseppe/index.d.ts +0 -97
  57. package/dist/agents/giuseppe/index.js +0 -258
  58. package/dist/agents/giuseppe/lsp.d.ts +0 -113
  59. package/dist/agents/giuseppe/lsp.js +0 -485
  60. package/dist/agents/giuseppe/monitor.d.ts +0 -118
  61. package/dist/agents/giuseppe/monitor.js +0 -621
  62. package/dist/agents/giuseppe/prompt.d.ts +0 -5
  63. package/dist/agents/giuseppe/prompt.js +0 -94
  64. package/dist/agents/giuseppe/registries/pending-classification.d.ts +0 -28
  65. package/dist/agents/giuseppe/registries/pending-classification.js +0 -50
  66. package/dist/agents/giuseppe/registries/pending-fix.d.ts +0 -30
  67. package/dist/agents/giuseppe/registries/pending-fix.js +0 -42
  68. package/dist/agents/giuseppe/registries/pending.d.ts +0 -27
  69. package/dist/agents/giuseppe/registries/pending.js +0 -49
  70. package/dist/agents/giuseppe/specialist.d.ts +0 -47
  71. package/dist/agents/giuseppe/specialist.js +0 -237
  72. package/dist/agents/giuseppe/types.d.ts +0 -123
  73. package/dist/agents/giuseppe/types.js +0 -9
  74. package/dist/agents/hailer-expert/index.d.ts +0 -8
  75. package/dist/agents/hailer-expert/index.js +0 -14
  76. package/dist/agents/hal/daemon.d.ts +0 -142
  77. package/dist/agents/hal/daemon.js +0 -1103
  78. package/dist/agents/hal/definitions.d.ts +0 -55
  79. package/dist/agents/hal/definitions.js +0 -263
  80. package/dist/agents/hal/index.d.ts +0 -3
  81. package/dist/agents/hal/index.js +0 -8
  82. package/dist/agents/index.d.ts +0 -18
  83. package/dist/agents/index.js +0 -48
  84. package/dist/agents/shared/base.d.ts +0 -216
  85. package/dist/agents/shared/base.js +0 -846
  86. package/dist/agents/shared/services/agent-registry.d.ts +0 -107
  87. package/dist/agents/shared/services/agent-registry.js +0 -629
  88. package/dist/agents/shared/services/conversation-manager.d.ts +0 -50
  89. package/dist/agents/shared/services/conversation-manager.js +0 -136
  90. package/dist/agents/shared/services/mcp-client.d.ts +0 -56
  91. package/dist/agents/shared/services/mcp-client.js +0 -124
  92. package/dist/agents/shared/services/message-classifier.d.ts +0 -37
  93. package/dist/agents/shared/services/message-classifier.js +0 -187
  94. package/dist/agents/shared/services/message-formatter.d.ts +0 -89
  95. package/dist/agents/shared/services/message-formatter.js +0 -371
  96. package/dist/agents/shared/services/session-logger.d.ts +0 -106
  97. package/dist/agents/shared/services/session-logger.js +0 -446
  98. package/dist/agents/shared/services/tool-executor.d.ts +0 -41
  99. package/dist/agents/shared/services/tool-executor.js +0 -169
  100. package/dist/agents/shared/services/workspace-schema-cache.d.ts +0 -125
  101. package/dist/agents/shared/services/workspace-schema-cache.js +0 -578
  102. package/dist/agents/shared/specialist.d.ts +0 -91
  103. package/dist/agents/shared/specialist.js +0 -399
  104. package/dist/agents/shared/tool-schema-loader.d.ts +0 -62
  105. package/dist/agents/shared/tool-schema-loader.js +0 -232
  106. package/dist/agents/shared/types.d.ts +0 -327
  107. package/dist/agents/shared/types.js +0 -121
  108. package/dist/client/agents/base.d.ts +0 -207
  109. package/dist/client/agents/base.js +0 -744
  110. package/dist/client/agents/definitions.d.ts +0 -53
  111. package/dist/client/agents/definitions.js +0 -263
  112. package/dist/client/agents/orchestrator.d.ts +0 -141
  113. package/dist/client/agents/orchestrator.js +0 -1062
  114. package/dist/client/agents/specialist.d.ts +0 -86
  115. package/dist/client/agents/specialist.js +0 -340
  116. package/dist/client/bot-entrypoint.d.ts +0 -7
  117. package/dist/client/bot-entrypoint.js +0 -103
  118. package/dist/client/bot-manager.d.ts +0 -44
  119. package/dist/client/bot-manager.js +0 -173
  120. package/dist/client/bot-runner.d.ts +0 -35
  121. package/dist/client/bot-runner.js +0 -188
  122. package/dist/client/chat-agent-daemon.d.ts +0 -464
  123. package/dist/client/chat-agent-daemon.js +0 -1774
  124. package/dist/client/daemon-factory.d.ts +0 -106
  125. package/dist/client/daemon-factory.js +0 -301
  126. package/dist/client/factory.d.ts +0 -111
  127. package/dist/client/factory.js +0 -314
  128. package/dist/client/index.d.ts +0 -17
  129. package/dist/client/index.js +0 -38
  130. package/dist/client/multi-bot-manager.d.ts +0 -42
  131. package/dist/client/multi-bot-manager.js +0 -161
  132. package/dist/client/orchestrator-daemon.d.ts +0 -87
  133. package/dist/client/orchestrator-daemon.js +0 -444
  134. package/dist/client/server.d.ts +0 -8
  135. package/dist/client/server.js +0 -251
  136. package/dist/client/services/agent-registry.d.ts +0 -108
  137. package/dist/client/services/agent-registry.js +0 -630
  138. package/dist/client/services/conversation-manager.d.ts +0 -50
  139. package/dist/client/services/conversation-manager.js +0 -136
  140. package/dist/client/services/mcp-client.d.ts +0 -48
  141. package/dist/client/services/mcp-client.js +0 -105
  142. package/dist/client/services/message-classifier.d.ts +0 -37
  143. package/dist/client/services/message-classifier.js +0 -187
  144. package/dist/client/services/message-formatter.d.ts +0 -84
  145. package/dist/client/services/message-formatter.js +0 -353
  146. package/dist/client/services/session-logger.d.ts +0 -106
  147. package/dist/client/services/session-logger.js +0 -446
  148. package/dist/client/services/tool-executor.d.ts +0 -41
  149. package/dist/client/services/tool-executor.js +0 -169
  150. package/dist/client/services/workspace-schema-cache.d.ts +0 -149
  151. package/dist/client/services/workspace-schema-cache.js +0 -732
  152. package/dist/client/specialist-daemon.d.ts +0 -77
  153. package/dist/client/specialist-daemon.js +0 -197
  154. package/dist/client/specialists.d.ts +0 -53
  155. package/dist/client/specialists.js +0 -178
  156. package/dist/client/tool-schema-loader.d.ts +0 -62
  157. package/dist/client/tool-schema-loader.js +0 -232
  158. package/dist/client/types.d.ts +0 -327
  159. package/dist/client/types.js +0 -121
  160. package/dist/commands/seed-config.d.ts +0 -9
  161. package/dist/commands/seed-config.js +0 -372
  162. package/dist/lib/context-manager.d.ts +0 -111
  163. package/dist/lib/context-manager.js +0 -431
  164. package/dist/lib/prompt-length-manager.d.ts +0 -81
  165. package/dist/lib/prompt-length-manager.js +0 -457
  166. package/dist/mcp/tools/giuseppe-tools.d.ts +0 -21
  167. package/dist/modules/bug-reports/bug-config.d.ts +0 -25
  168. package/dist/modules/bug-reports/bug-config.js +0 -187
  169. package/dist/modules/bug-reports/bug-monitor.d.ts +0 -108
  170. package/dist/modules/bug-reports/bug-monitor.js +0 -510
  171. package/dist/modules/bug-reports/giuseppe-agent.d.ts +0 -58
  172. package/dist/modules/bug-reports/giuseppe-agent.js +0 -467
  173. package/dist/modules/bug-reports/giuseppe-ai.d.ts +0 -83
  174. package/dist/modules/bug-reports/giuseppe-ai.js +0 -466
  175. package/dist/modules/bug-reports/giuseppe-bot.d.ts +0 -110
  176. package/dist/modules/bug-reports/giuseppe-bot.js +0 -804
  177. package/dist/modules/bug-reports/giuseppe-daemon.d.ts +0 -80
  178. package/dist/modules/bug-reports/giuseppe-daemon.js +0 -617
  179. package/dist/modules/bug-reports/giuseppe-files.d.ts +0 -64
  180. package/dist/modules/bug-reports/giuseppe-files.js +0 -375
  181. package/dist/modules/bug-reports/giuseppe-git.d.ts +0 -48
  182. package/dist/modules/bug-reports/giuseppe-git.js +0 -298
  183. package/dist/modules/bug-reports/giuseppe-lsp.d.ts +0 -113
  184. package/dist/modules/bug-reports/giuseppe-lsp.js +0 -485
  185. package/dist/modules/bug-reports/giuseppe-prompt.d.ts +0 -5
  186. package/dist/modules/bug-reports/giuseppe-prompt.js +0 -94
  187. package/dist/modules/bug-reports/index.d.ts +0 -77
  188. package/dist/modules/bug-reports/index.js +0 -215
  189. package/dist/modules/bug-reports/pending-classification-registry.d.ts +0 -28
  190. package/dist/modules/bug-reports/pending-classification-registry.js +0 -50
  191. package/dist/modules/bug-reports/pending-fix-registry.d.ts +0 -30
  192. package/dist/modules/bug-reports/pending-fix-registry.js +0 -42
  193. package/dist/modules/bug-reports/pending-registry.d.ts +0 -27
  194. package/dist/modules/bug-reports/pending-registry.js +0 -49
  195. package/dist/modules/bug-reports/types.d.ts +0 -123
  196. package/dist/modules/bug-reports/types.js +0 -9
  197. package/dist/routes/agents.d.ts +0 -44
  198. package/dist/routes/agents.js +0 -311
  199. package/dist/services/agent-credential-store.d.ts +0 -73
  200. package/dist/services/agent-credential-store.js +0 -212
  201. package/dist/services/bug-monitor.d.ts +0 -23
  202. 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