@hailer/mcp 0.1.14 → 0.1.16

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 (112) hide show
  1. package/.claude/agents/agent-giuseppe-app-builder.md +7 -6
  2. package/.claude/agents/agent-lars-code-inspector.md +26 -14
  3. package/dist/agents/bot-manager.d.ts +48 -0
  4. package/dist/agents/bot-manager.js +254 -0
  5. package/dist/agents/factory.d.ts +150 -0
  6. package/dist/agents/factory.js +650 -0
  7. package/dist/agents/giuseppe/ai.d.ts +83 -0
  8. package/dist/agents/giuseppe/ai.js +466 -0
  9. package/dist/agents/giuseppe/bot.d.ts +110 -0
  10. package/dist/agents/giuseppe/bot.js +780 -0
  11. package/dist/agents/giuseppe/config.d.ts +25 -0
  12. package/dist/agents/giuseppe/config.js +227 -0
  13. package/dist/agents/giuseppe/files.d.ts +52 -0
  14. package/dist/agents/giuseppe/files.js +338 -0
  15. package/dist/agents/giuseppe/git.d.ts +48 -0
  16. package/dist/agents/giuseppe/git.js +298 -0
  17. package/dist/agents/giuseppe/index.d.ts +97 -0
  18. package/dist/agents/giuseppe/index.js +258 -0
  19. package/dist/agents/giuseppe/lsp.d.ts +113 -0
  20. package/dist/agents/giuseppe/lsp.js +485 -0
  21. package/dist/agents/giuseppe/monitor.d.ts +118 -0
  22. package/dist/agents/giuseppe/monitor.js +621 -0
  23. package/dist/agents/giuseppe/prompt.d.ts +5 -0
  24. package/dist/agents/giuseppe/prompt.js +94 -0
  25. package/dist/agents/giuseppe/registries/pending-classification.d.ts +28 -0
  26. package/dist/agents/giuseppe/registries/pending-classification.js +50 -0
  27. package/dist/agents/giuseppe/registries/pending-fix.d.ts +30 -0
  28. package/dist/agents/giuseppe/registries/pending-fix.js +42 -0
  29. package/dist/agents/giuseppe/registries/pending.d.ts +27 -0
  30. package/dist/agents/giuseppe/registries/pending.js +49 -0
  31. package/dist/agents/giuseppe/specialist.d.ts +47 -0
  32. package/dist/agents/giuseppe/specialist.js +237 -0
  33. package/dist/agents/giuseppe/types.d.ts +123 -0
  34. package/dist/agents/giuseppe/types.js +9 -0
  35. package/dist/agents/hailer-expert/index.d.ts +8 -0
  36. package/dist/agents/hailer-expert/index.js +14 -0
  37. package/dist/agents/hal/daemon.d.ts +142 -0
  38. package/dist/agents/hal/daemon.js +1103 -0
  39. package/dist/agents/hal/definitions.d.ts +55 -0
  40. package/dist/agents/hal/definitions.js +263 -0
  41. package/dist/agents/hal/index.d.ts +3 -0
  42. package/dist/agents/hal/index.js +8 -0
  43. package/dist/agents/index.d.ts +18 -0
  44. package/dist/agents/index.js +48 -0
  45. package/dist/agents/shared/base.d.ts +216 -0
  46. package/dist/agents/shared/base.js +846 -0
  47. package/dist/agents/shared/services/agent-registry.d.ts +107 -0
  48. package/dist/agents/shared/services/agent-registry.js +629 -0
  49. package/dist/agents/shared/services/conversation-manager.d.ts +50 -0
  50. package/dist/agents/shared/services/conversation-manager.js +136 -0
  51. package/dist/agents/shared/services/mcp-client.d.ts +56 -0
  52. package/dist/agents/shared/services/mcp-client.js +124 -0
  53. package/dist/agents/shared/services/message-classifier.d.ts +37 -0
  54. package/dist/agents/shared/services/message-classifier.js +187 -0
  55. package/dist/agents/shared/services/message-formatter.d.ts +89 -0
  56. package/dist/agents/shared/services/message-formatter.js +371 -0
  57. package/dist/agents/shared/services/session-logger.d.ts +106 -0
  58. package/dist/agents/shared/services/session-logger.js +446 -0
  59. package/dist/agents/shared/services/tool-executor.d.ts +41 -0
  60. package/dist/agents/shared/services/tool-executor.js +169 -0
  61. package/dist/agents/shared/services/workspace-schema-cache.d.ts +125 -0
  62. package/dist/agents/shared/services/workspace-schema-cache.js +578 -0
  63. package/dist/agents/shared/specialist.d.ts +91 -0
  64. package/dist/agents/shared/specialist.js +399 -0
  65. package/dist/agents/shared/tool-schema-loader.d.ts +62 -0
  66. package/dist/agents/shared/tool-schema-loader.js +232 -0
  67. package/dist/agents/shared/types.d.ts +327 -0
  68. package/dist/agents/shared/types.js +121 -0
  69. package/dist/app.js +21 -4
  70. package/dist/cli.js +0 -0
  71. package/dist/client/agents/orchestrator.d.ts +1 -0
  72. package/dist/client/agents/orchestrator.js +12 -1
  73. package/dist/commands/seed-config.d.ts +9 -0
  74. package/dist/commands/seed-config.js +372 -0
  75. package/dist/config.d.ts +10 -0
  76. package/dist/config.js +61 -1
  77. package/dist/core.d.ts +8 -0
  78. package/dist/core.js +137 -6
  79. package/dist/lib/discussion-lock.d.ts +42 -0
  80. package/dist/lib/discussion-lock.js +110 -0
  81. package/dist/mcp/UserContextCache.js +2 -2
  82. package/dist/mcp/hailer-clients.d.ts +15 -0
  83. package/dist/mcp/hailer-clients.js +100 -6
  84. package/dist/mcp/signal-handler.d.ts +16 -5
  85. package/dist/mcp/signal-handler.js +173 -122
  86. package/dist/mcp/tools/activity.js +9 -1
  87. package/dist/mcp/tools/bot-config.d.ts +184 -9
  88. package/dist/mcp/tools/bot-config.js +2177 -163
  89. package/dist/mcp/tools/giuseppe-tools.d.ts +21 -0
  90. package/dist/mcp/tools/giuseppe-tools.js +525 -0
  91. package/dist/mcp/utils/hailer-api-client.d.ts +42 -1
  92. package/dist/mcp/utils/hailer-api-client.js +128 -2
  93. package/dist/mcp/webhook-handler.d.ts +87 -0
  94. package/dist/mcp/webhook-handler.js +343 -0
  95. package/dist/mcp/workspace-cache.d.ts +5 -0
  96. package/dist/mcp/workspace-cache.js +11 -0
  97. package/dist/mcp-server.js +55 -5
  98. package/dist/modules/bug-reports/giuseppe-agent.d.ts +58 -0
  99. package/dist/modules/bug-reports/giuseppe-agent.js +467 -0
  100. package/dist/modules/bug-reports/giuseppe-ai.d.ts +25 -1
  101. package/dist/modules/bug-reports/giuseppe-ai.js +133 -2
  102. package/dist/modules/bug-reports/giuseppe-bot.d.ts +3 -2
  103. package/dist/modules/bug-reports/giuseppe-bot.js +75 -36
  104. package/dist/modules/bug-reports/giuseppe-daemon.d.ts +80 -0
  105. package/dist/modules/bug-reports/giuseppe-daemon.js +617 -0
  106. package/dist/modules/bug-reports/giuseppe-files.d.ts +12 -0
  107. package/dist/modules/bug-reports/giuseppe-files.js +37 -0
  108. package/dist/modules/bug-reports/giuseppe-lsp.d.ts +113 -0
  109. package/dist/modules/bug-reports/giuseppe-lsp.js +485 -0
  110. package/dist/modules/bug-reports/index.d.ts +1 -0
  111. package/dist/modules/bug-reports/index.js +31 -29
  112. package/package.json +5 -4
@@ -17,11 +17,12 @@
17
17
  * 3. Default values
18
18
  */
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.GIUSEPPE_SYSTEM_PROMPT = exports.GiuseppeFiles = exports.GiuseppeGit = exports.GiuseppeAI = exports.pendingClassificationRegistry = exports.pendingFixRegistry = exports.PendingRegistry = exports.getDefaultConfig = exports.discoverWorkflow = exports.loadConfig = exports.GiuseppeBot = exports.BugMonitor = exports.BugReportsModule = void 0;
20
+ exports.GIUSEPPE_SYSTEM_PROMPT = exports.GiuseppeFiles = exports.GiuseppeGit = exports.GiuseppeAI = exports.pendingClassificationRegistry = exports.pendingFixRegistry = exports.PendingRegistry = exports.getDefaultConfig = exports.discoverWorkflow = exports.loadConfig = exports.GiuseppeBot = exports.GiuseppeAgent = exports.BugMonitor = exports.BugReportsModule = void 0;
21
21
  const logger_1 = require("../../lib/logger");
22
22
  const bug_monitor_1 = require("./bug-monitor");
23
- const giuseppe_bot_1 = require("./giuseppe-bot");
23
+ const giuseppe_agent_1 = require("./giuseppe-agent");
24
24
  const bug_config_1 = require("./bug-config");
25
+ const discussion_lock_1 = require("../../lib/discussion-lock");
25
26
  const logger = (0, logger_1.createLogger)({ component: 'bug-reports-module' });
26
27
  class BugReportsModule {
27
28
  userContext;
@@ -94,37 +95,31 @@ class BugReportsModule {
94
95
  }
95
96
  this._pendingGiuseppeDisabledHandlers = undefined;
96
97
  }
97
- // Create Giuseppe bot if auto-fix is enabled
98
+ // Create Giuseppe agent if auto-fix is enabled
98
99
  if (this.config.autoFix) {
99
100
  if (!this.config.anthropicApiKey && !process.env.ANTHROPIC_API_KEY) {
100
101
  logger.warn('Auto-fix enabled but no ANTHROPIC_API_KEY - Giuseppe disabled');
101
102
  }
102
103
  else {
103
- this.giuseppe = new giuseppe_bot_1.GiuseppeBot(this.userContext, this.config, this.monitor);
104
- // Initialize registry callback for HAL coordination
105
- this.giuseppe.initializeRegistryCallback();
106
- this.giuseppe.initializeClassificationCallbacks();
107
- // Register Giuseppe as bug handler
104
+ // Create the conversational Giuseppe agent
105
+ this.giuseppe = new giuseppe_agent_1.GiuseppeAgent(this.userContext, this.monitor, process.env.DEV_APPS_PATH || process.cwd(), this.config.anthropicApiKey);
106
+ // Register Giuseppe as bug handler - starts the conversation
108
107
  this.monitor.onNewBug(async (bug) => {
109
- const result = await this.giuseppe.handleBug(bug);
110
- logger.info('Giuseppe fix result', {
111
- bugId: bug.id,
112
- success: result.success,
113
- summary: result.summary
114
- });
115
- });
116
- // Register Giuseppe as message handler (for approval messages)
117
- this.monitor.onMessage(async (discussionId, message, senderId) => {
118
- const result = await this.giuseppe.handleDiscussionMessage(discussionId, message, senderId);
119
- if (result.approved) {
120
- logger.info('Fix approved', {
121
- discussionId,
122
- published: result.published,
123
- error: result.error
124
- });
108
+ // Lock discussion to prevent HAL from responding
109
+ if (bug.discussionId) {
110
+ (0, discussion_lock_1.acquireDiscussionLock)(bug.discussionId, 'giuseppe', 30 * 60 * 1000);
111
+ // IMPORTANT: Tell monitor to watch this discussion for messages
112
+ this.monitor.watchDiscussion(bug.discussionId);
125
113
  }
114
+ await this.giuseppe.handleNewBug(bug);
115
+ logger.info('Giuseppe started conversation', { bugId: bug.id });
116
+ });
117
+ // Register Giuseppe as message handler - continues the conversation
118
+ this.monitor.onMessage(async (discussionId, message, senderName) => {
119
+ logger.info('Routing message to Giuseppe', { discussionId, senderName, preview: message.substring(0, 50) });
120
+ await this.giuseppe.handleMessage(discussionId, message, senderName);
126
121
  });
127
- logger.info('Giuseppe Bot enabled for auto-fixing');
122
+ logger.info('Giuseppe Agent enabled - full conversational mode');
128
123
  }
129
124
  }
130
125
  // Start monitoring
@@ -169,10 +164,15 @@ class BugReportsModule {
169
164
  if (!this.giuseppe) {
170
165
  return {
171
166
  success: false,
172
- summary: 'Giuseppe Bot not initialized (autoFix disabled or no API key)'
167
+ summary: 'Giuseppe Agent not initialized (autoFix disabled or no API key)'
173
168
  };
174
169
  }
175
- return this.giuseppe.handleBug(bug);
170
+ // Start the conversational fix
171
+ await this.giuseppe.handleNewBug(bug);
172
+ return {
173
+ success: true,
174
+ summary: 'Giuseppe started fixing the bug conversationally'
175
+ };
176
176
  }
177
177
  /**
178
178
  * Register a custom bug handler
@@ -189,8 +189,10 @@ class BugReportsModule {
189
189
  exports.BugReportsModule = BugReportsModule;
190
190
  var bug_monitor_2 = require("./bug-monitor");
191
191
  Object.defineProperty(exports, "BugMonitor", { enumerable: true, get: function () { return bug_monitor_2.BugMonitor; } });
192
- var giuseppe_bot_2 = require("./giuseppe-bot");
193
- Object.defineProperty(exports, "GiuseppeBot", { enumerable: true, get: function () { return giuseppe_bot_2.GiuseppeBot; } });
192
+ var giuseppe_agent_2 = require("./giuseppe-agent");
193
+ Object.defineProperty(exports, "GiuseppeAgent", { enumerable: true, get: function () { return giuseppe_agent_2.GiuseppeAgent; } });
194
+ var giuseppe_bot_1 = require("./giuseppe-bot"); // Legacy, for backwards compatibility
195
+ Object.defineProperty(exports, "GiuseppeBot", { enumerable: true, get: function () { return giuseppe_bot_1.GiuseppeBot; } });
194
196
  var bug_config_2 = require("./bug-config");
195
197
  Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return bug_config_2.loadConfig; } });
196
198
  Object.defineProperty(exports, "discoverWorkflow", { enumerable: true, get: function () { return bug_config_2.discoverWorkflow; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hailer/mcp",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "config": {
5
5
  "docker": {
6
6
  "registry": "registry.gitlab.com/hailer-repos/hailer-mcp"
@@ -24,7 +24,8 @@
24
24
  "server:prod": "node dist/client/server.js",
25
25
  "release:patch": "npm version patch -m 'chore: release v%s' && git push && git push --tags && npm run build && npm publish --access public",
26
26
  "release:minor": "npm version minor -m 'chore: release v%s' && git push && git push --tags && npm run build && npm publish --access public",
27
- "release:major": "npm version major -m 'chore: release v%s' && git push && git push --tags && npm run build && npm publish --access public"
27
+ "release:major": "npm version major -m 'chore: release v%s' && git push && git push --tags && npm run build && npm publish --access public",
28
+ "seed-config": "tsx src/commands/seed-config.ts"
28
29
  },
29
30
  "dependencies": {
30
31
  "@anthropic-ai/sdk": "^0.54.0",
@@ -42,6 +43,7 @@
42
43
  "form-data": "^4.0.4",
43
44
  "openai": "^5.5.1",
44
45
  "sharp": "^0.34.5",
46
+ "typescript-language-server": "^5.1.3",
45
47
  "zod": "^3.24.1"
46
48
  },
47
49
  "devDependencies": {
@@ -54,8 +56,7 @@
54
56
  "eslint": "^9.29.0",
55
57
  "globals": "^16.2.0",
56
58
  "tsx": "^4.19.2",
57
- "typescript": "^5",
58
- "typescript-language-server": "^5.1.3"
59
+ "typescript": "^5"
59
60
  },
60
61
  "bin": {
61
62
  "hailer-mcp": "dist/cli.js"