@hailer/mcp 1.2.1 → 2.0.0-beta.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 (764) hide show
  1. package/.claude/agents/agent-hailer-helper.md +118 -0
  2. package/.claude/commands/app-squad.md +16 -110
  3. package/.claude/commands/debug-squad.md +13 -290
  4. package/.claude/commands/publish.md +2 -2
  5. package/.claude/commands/review-squad.md +17 -139
  6. package/.claude/skills/create-and-publish-app/SKILL.md +95 -153
  7. package/.claude/skills/hailer-app-builder/SKILL.md +2 -2
  8. package/.claude/skills/hailer-ui-guide/SKILL.md +265 -0
  9. package/.env.example +50 -1
  10. package/CLAUDE.md +136 -10
  11. package/dist/app.d.ts.map +1 -1
  12. package/dist/app.js +3 -0
  13. package/dist/app.js.map +1 -1
  14. package/dist/bot/bot-manager.d.ts +9 -6
  15. package/dist/bot/bot-manager.d.ts.map +1 -1
  16. package/dist/bot/bot-manager.js +142 -31
  17. package/dist/bot/bot-manager.js.map +1 -1
  18. package/dist/bot/bot.d.ts +59 -16
  19. package/dist/bot/bot.d.ts.map +1 -1
  20. package/dist/bot/bot.js +889 -142
  21. package/dist/bot/bot.js.map +1 -1
  22. package/dist/bot/operation-logger.d.ts.map +1 -1
  23. package/dist/bot/operation-logger.js +24 -12
  24. package/dist/bot/operation-logger.js.map +1 -1
  25. package/dist/bot/services/bot-permissions.d.ts +2 -2
  26. package/dist/bot/services/bot-permissions.d.ts.map +1 -1
  27. package/dist/bot/services/bot-permissions.js +28 -9
  28. package/dist/bot/services/bot-permissions.js.map +1 -1
  29. package/dist/bot/services/conversation-manager.d.ts +23 -23
  30. package/dist/bot/services/conversation-manager.d.ts.map +1 -1
  31. package/dist/bot/services/conversation-manager.js +52 -49
  32. package/dist/bot/services/conversation-manager.js.map +1 -1
  33. package/dist/bot/services/helper-prompt.d.ts +8 -0
  34. package/dist/bot/services/helper-prompt.d.ts.map +1 -0
  35. package/dist/bot/services/helper-prompt.js +177 -0
  36. package/dist/bot/services/helper-prompt.js.map +1 -0
  37. package/dist/bot/services/message-classifier.d.ts +16 -16
  38. package/dist/bot/services/message-classifier.d.ts.map +1 -1
  39. package/dist/bot/services/message-classifier.js +55 -49
  40. package/dist/bot/services/message-classifier.js.map +1 -1
  41. package/dist/bot/services/message-formatter.d.ts +38 -38
  42. package/dist/bot/services/message-formatter.d.ts.map +1 -1
  43. package/dist/bot/services/message-formatter.js +81 -74
  44. package/dist/bot/services/message-formatter.js.map +1 -1
  45. package/dist/bot/services/permission-guard.d.ts.map +1 -1
  46. package/dist/bot/services/permission-guard.js +20 -10
  47. package/dist/bot/services/permission-guard.js.map +1 -1
  48. package/dist/bot/services/signal-router.d.ts.map +1 -1
  49. package/dist/bot/services/signal-router.js +11 -6
  50. package/dist/bot/services/signal-router.js.map +1 -1
  51. package/dist/bot/services/system-prompt.d.ts +14 -0
  52. package/dist/bot/services/system-prompt.d.ts.map +1 -1
  53. package/dist/bot/services/system-prompt.js +179 -4
  54. package/dist/bot/services/system-prompt.js.map +1 -1
  55. package/dist/bot/services/token-billing.d.ts +23 -23
  56. package/dist/bot/services/token-billing.d.ts.map +1 -1
  57. package/dist/bot/services/token-billing.js +51 -36
  58. package/dist/bot/services/token-billing.js.map +1 -1
  59. package/dist/bot/services/types.d.ts +3 -1
  60. package/dist/bot/services/types.d.ts.map +1 -1
  61. package/dist/bot/services/typing-indicator.d.ts +8 -8
  62. package/dist/bot/services/typing-indicator.d.ts.map +1 -1
  63. package/dist/bot/services/typing-indicator.js +12 -10
  64. package/dist/bot/services/typing-indicator.js.map +1 -1
  65. package/dist/bot/services/workspace-refresh.d.ts +3 -3
  66. package/dist/bot/services/workspace-refresh.d.ts.map +1 -1
  67. package/dist/bot/services/workspace-refresh.js +23 -13
  68. package/dist/bot/services/workspace-refresh.js.map +1 -1
  69. package/dist/bot/tool-executor.d.ts +10 -6
  70. package/dist/bot/tool-executor.d.ts.map +1 -1
  71. package/dist/bot/tool-executor.js +12 -6
  72. package/dist/bot/tool-executor.js.map +1 -1
  73. package/dist/bot/workspace-overview.d.ts.map +1 -1
  74. package/dist/bot/workspace-overview.js +6 -3
  75. package/dist/bot/workspace-overview.js.map +1 -1
  76. package/dist/bot-config/activity-error.d.ts +47 -0
  77. package/dist/bot-config/activity-error.d.ts.map +1 -0
  78. package/dist/bot-config/activity-error.js +67 -0
  79. package/dist/bot-config/activity-error.js.map +1 -0
  80. package/dist/bot-config/context.d.ts +4 -4
  81. package/dist/bot-config/context.d.ts.map +1 -1
  82. package/dist/bot-config/context.js +18 -14
  83. package/dist/bot-config/context.js.map +1 -1
  84. package/dist/bot-config/events.d.ts +45 -0
  85. package/dist/bot-config/events.d.ts.map +1 -0
  86. package/dist/bot-config/events.js +51 -0
  87. package/dist/bot-config/events.js.map +1 -0
  88. package/dist/bot-config/index.d.ts +3 -0
  89. package/dist/bot-config/index.d.ts.map +1 -1
  90. package/dist/bot-config/index.js +8 -1
  91. package/dist/bot-config/index.js.map +1 -1
  92. package/dist/bot-config/loader.d.ts +3 -0
  93. package/dist/bot-config/loader.d.ts.map +1 -1
  94. package/dist/bot-config/loader.js +45 -20
  95. package/dist/bot-config/loader.js.map +1 -1
  96. package/dist/bot-config/persistence.js.map +1 -1
  97. package/dist/bot-config/reconciler.d.ts +11 -0
  98. package/dist/bot-config/reconciler.d.ts.map +1 -0
  99. package/dist/bot-config/reconciler.js +121 -0
  100. package/dist/bot-config/reconciler.js.map +1 -0
  101. package/dist/bot-config/state.d.ts.map +1 -1
  102. package/dist/bot-config/state.js.map +1 -1
  103. package/dist/bot-config/types.d.ts +32 -0
  104. package/dist/bot-config/types.d.ts.map +1 -1
  105. package/dist/bot-config/webhooks.d.ts.map +1 -1
  106. package/dist/bot-config/webhooks.js.map +1 -1
  107. package/dist/bot-config/workflow-installer.d.ts +37 -0
  108. package/dist/bot-config/workflow-installer.d.ts.map +1 -0
  109. package/dist/bot-config/workflow-installer.js +346 -0
  110. package/dist/bot-config/workflow-installer.js.map +1 -0
  111. package/dist/cli.d.ts.map +1 -1
  112. package/dist/cli.js +12 -0
  113. package/dist/cli.js.map +1 -1
  114. package/dist/config.d.ts +23 -19
  115. package/dist/config.d.ts.map +1 -1
  116. package/dist/config.js +65 -27
  117. package/dist/config.js.map +1 -1
  118. package/dist/core.d.ts +6 -4
  119. package/dist/core.d.ts.map +1 -1
  120. package/dist/core.js +11 -16
  121. package/dist/core.js.map +1 -1
  122. package/dist/lib/logger.d.ts.map +1 -1
  123. package/dist/lib/logger.js +7 -4
  124. package/dist/lib/logger.js.map +1 -1
  125. package/dist/lib/request-logger.d.ts +19 -19
  126. package/dist/lib/request-logger.d.ts.map +1 -1
  127. package/dist/lib/request-logger.js +19 -19
  128. package/dist/lib/request-logger.js.map +1 -1
  129. package/dist/mcp/UserContextCache.d.ts +28 -22
  130. package/dist/mcp/UserContextCache.d.ts.map +1 -1
  131. package/dist/mcp/UserContextCache.js +23 -23
  132. package/dist/mcp/UserContextCache.js.map +1 -1
  133. package/dist/mcp/auth.js.map +1 -1
  134. package/dist/mcp/hailer-clients.d.ts +5 -4
  135. package/dist/mcp/hailer-clients.d.ts.map +1 -1
  136. package/dist/mcp/hailer-clients.js +61 -27
  137. package/dist/mcp/hailer-clients.js.map +1 -1
  138. package/dist/mcp/hailer-rpc.d.ts +40 -0
  139. package/dist/mcp/hailer-rpc.d.ts.map +1 -0
  140. package/dist/mcp/hailer-rpc.js +43 -0
  141. package/dist/mcp/hailer-rpc.js.map +1 -0
  142. package/dist/mcp/session-store.d.ts +16 -16
  143. package/dist/mcp/session-store.d.ts.map +1 -1
  144. package/dist/mcp/session-store.js +16 -16
  145. package/dist/mcp/session-store.js.map +1 -1
  146. package/dist/mcp/tool-profiles.d.ts +69 -0
  147. package/dist/mcp/tool-profiles.d.ts.map +1 -0
  148. package/dist/mcp/tool-profiles.js +176 -0
  149. package/dist/mcp/tool-profiles.js.map +1 -0
  150. package/dist/mcp/tool-registry.d.ts +16 -0
  151. package/dist/mcp/tool-registry.d.ts.map +1 -1
  152. package/dist/mcp/tool-registry.js +91 -39
  153. package/dist/mcp/tool-registry.js.map +1 -1
  154. package/dist/mcp/tools/activity.d.ts.map +1 -1
  155. package/dist/mcp/tools/activity.js +398 -198
  156. package/dist/mcp/tools/activity.js.map +1 -1
  157. package/dist/mcp/tools/aliases.d.ts +11 -0
  158. package/dist/mcp/tools/aliases.d.ts.map +1 -0
  159. package/dist/mcp/tools/aliases.js +176 -0
  160. package/dist/mcp/tools/aliases.js.map +1 -0
  161. package/dist/mcp/tools/app-core.d.ts +6 -8
  162. package/dist/mcp/tools/app-core.d.ts.map +1 -1
  163. package/dist/mcp/tools/app-core.js +355 -254
  164. package/dist/mcp/tools/app-core.js.map +1 -1
  165. package/dist/mcp/tools/app-marketplace.d.ts +8 -16
  166. package/dist/mcp/tools/app-marketplace.d.ts.map +1 -1
  167. package/dist/mcp/tools/app-marketplace.js +604 -930
  168. package/dist/mcp/tools/app-marketplace.js.map +1 -1
  169. package/dist/mcp/tools/app.d.ts +4 -7
  170. package/dist/mcp/tools/app.d.ts.map +1 -1
  171. package/dist/mcp/tools/app.js +4 -7
  172. package/dist/mcp/tools/app.js.map +1 -1
  173. package/dist/mcp/tools/bot-self.d.ts +21 -0
  174. package/dist/mcp/tools/bot-self.d.ts.map +1 -0
  175. package/dist/mcp/tools/bot-self.js +174 -0
  176. package/dist/mcp/tools/bot-self.js.map +1 -0
  177. package/dist/mcp/tools/calendar.d.ts +21 -0
  178. package/dist/mcp/tools/calendar.d.ts.map +1 -0
  179. package/dist/mcp/tools/calendar.js +741 -0
  180. package/dist/mcp/tools/calendar.js.map +1 -0
  181. package/dist/mcp/tools/company.d.ts.map +1 -1
  182. package/dist/mcp/tools/company.js +2 -1
  183. package/dist/mcp/tools/company.js.map +1 -1
  184. package/dist/mcp/tools/date.js.map +1 -1
  185. package/dist/mcp/tools/discussion.d.ts +23 -3
  186. package/dist/mcp/tools/discussion.d.ts.map +1 -1
  187. package/dist/mcp/tools/discussion.js +417 -534
  188. package/dist/mcp/tools/discussion.js.map +1 -1
  189. package/dist/mcp/tools/file.d.ts.map +1 -1
  190. package/dist/mcp/tools/file.js +18 -16
  191. package/dist/mcp/tools/file.js.map +1 -1
  192. package/dist/mcp/tools/index.js +4 -4
  193. package/dist/mcp/tools/index.js.map +1 -1
  194. package/dist/mcp/tools/insight.d.ts +7 -5
  195. package/dist/mcp/tools/insight.d.ts.map +1 -1
  196. package/dist/mcp/tools/insight.js +419 -477
  197. package/dist/mcp/tools/insight.js.map +1 -1
  198. package/dist/mcp/tools/user.d.ts.map +1 -1
  199. package/dist/mcp/tools/user.js +15 -13
  200. package/dist/mcp/tools/user.js.map +1 -1
  201. package/dist/mcp/tools/workflow-permissions.d.ts +2 -4
  202. package/dist/mcp/tools/workflow-permissions.d.ts.map +1 -1
  203. package/dist/mcp/tools/workflow-permissions.js +88 -97
  204. package/dist/mcp/tools/workflow-permissions.js.map +1 -1
  205. package/dist/mcp/tools/workflow.d.ts +2 -7
  206. package/dist/mcp/tools/workflow.d.ts.map +1 -1
  207. package/dist/mcp/tools/workflow.js +817 -850
  208. package/dist/mcp/tools/workflow.js.map +1 -1
  209. package/dist/mcp/utils/api-errors.d.ts.map +1 -1
  210. package/dist/mcp/utils/api-errors.js +2 -2
  211. package/dist/mcp/utils/api-errors.js.map +1 -1
  212. package/dist/mcp/utils/data-transformers.d.ts.map +1 -1
  213. package/dist/mcp/utils/data-transformers.js +8 -4
  214. package/dist/mcp/utils/data-transformers.js.map +1 -1
  215. package/dist/mcp/utils/file-upload.d.ts.map +1 -1
  216. package/dist/mcp/utils/file-upload.js +1 -1
  217. package/dist/mcp/utils/file-upload.js.map +1 -1
  218. package/dist/mcp/utils/hailer-api-client.d.ts +81 -81
  219. package/dist/mcp/utils/hailer-api-client.d.ts.map +1 -1
  220. package/dist/mcp/utils/hailer-api-client.js +103 -101
  221. package/dist/mcp/utils/hailer-api-client.js.map +1 -1
  222. package/dist/mcp/utils/index.d.ts.map +1 -1
  223. package/dist/mcp/utils/index.js.map +1 -1
  224. package/dist/mcp/utils/logger.d.ts.map +1 -1
  225. package/dist/mcp/utils/logger.js.map +1 -1
  226. package/dist/mcp/utils/response-builder.d.ts.map +1 -1
  227. package/dist/mcp/utils/response-builder.js +8 -4
  228. package/dist/mcp/utils/response-builder.js.map +1 -1
  229. package/dist/mcp/utils/role-utils.d.ts.map +1 -1
  230. package/dist/mcp/utils/role-utils.js +6 -3
  231. package/dist/mcp/utils/role-utils.js.map +1 -1
  232. package/dist/mcp/utils/tool-helpers.d.ts.map +1 -1
  233. package/dist/mcp/utils/tool-helpers.js +2 -2
  234. package/dist/mcp/utils/tool-helpers.js.map +1 -1
  235. package/dist/mcp/utils/types.d.ts +1 -1
  236. package/dist/mcp/utils/types.d.ts.map +1 -1
  237. package/dist/mcp/utils/types.js.map +1 -1
  238. package/dist/mcp/webhook-handler.d.ts +43 -8
  239. package/dist/mcp/webhook-handler.d.ts.map +1 -1
  240. package/dist/mcp/webhook-handler.js +861 -116
  241. package/dist/mcp/webhook-handler.js.map +1 -1
  242. package/dist/mcp/workspace-admin-store.d.ts +49 -0
  243. package/dist/mcp/workspace-admin-store.d.ts.map +1 -0
  244. package/dist/mcp/workspace-admin-store.js +168 -0
  245. package/dist/mcp/workspace-admin-store.js.map +1 -0
  246. package/dist/mcp/workspace-cache.d.ts +2 -2
  247. package/dist/mcp/workspace-cache.d.ts.map +1 -1
  248. package/dist/mcp/workspace-cache.js +9 -5
  249. package/dist/mcp/workspace-cache.js.map +1 -1
  250. package/dist/mcp-server.d.ts +26 -11
  251. package/dist/mcp-server.d.ts.map +1 -1
  252. package/dist/mcp-server.js +360 -36
  253. package/dist/mcp-server.js.map +1 -1
  254. package/dist/plugins/vipunen/client.d.ts +41 -41
  255. package/dist/plugins/vipunen/client.d.ts.map +1 -1
  256. package/dist/plugins/vipunen/client.js +53 -48
  257. package/dist/plugins/vipunen/client.js.map +1 -1
  258. package/dist/plugins/vipunen/index.js.map +1 -1
  259. package/dist/plugins/vipunen/tools.d.ts.map +1 -1
  260. package/dist/plugins/vipunen/tools.js +6 -3
  261. package/dist/plugins/vipunen/tools.js.map +1 -1
  262. package/dist/public-chat/graduate.d.ts +29 -0
  263. package/dist/public-chat/graduate.d.ts.map +1 -0
  264. package/dist/public-chat/graduate.js +593 -0
  265. package/dist/public-chat/graduate.js.map +1 -0
  266. package/dist/public-chat/handler.d.ts +12 -0
  267. package/dist/public-chat/handler.d.ts.map +1 -0
  268. package/dist/public-chat/handler.js +179 -0
  269. package/dist/public-chat/handler.js.map +1 -0
  270. package/dist/public-chat/index.d.ts +16 -0
  271. package/dist/public-chat/index.d.ts.map +1 -0
  272. package/dist/public-chat/index.js +74 -0
  273. package/dist/public-chat/index.js.map +1 -0
  274. package/dist/public-chat/knowledge.d.ts +3 -0
  275. package/dist/public-chat/knowledge.d.ts.map +1 -0
  276. package/dist/public-chat/knowledge.js +1339 -0
  277. package/dist/public-chat/knowledge.js.map +1 -0
  278. package/dist/public-chat/rate-limit.d.ts +16 -0
  279. package/dist/public-chat/rate-limit.d.ts.map +1 -0
  280. package/dist/public-chat/rate-limit.js +51 -0
  281. package/dist/public-chat/rate-limit.js.map +1 -0
  282. package/dist/public-chat/session-store.d.ts +41 -0
  283. package/dist/public-chat/session-store.d.ts.map +1 -0
  284. package/dist/public-chat/session-store.js +95 -0
  285. package/dist/public-chat/session-store.js.map +1 -0
  286. package/dist/public-chat/studio-prewarm.d.ts +61 -0
  287. package/dist/public-chat/studio-prewarm.d.ts.map +1 -0
  288. package/dist/public-chat/studio-prewarm.js +162 -0
  289. package/dist/public-chat/studio-prewarm.js.map +1 -0
  290. package/dist/public-chat/system-prompt.d.ts +22 -0
  291. package/dist/public-chat/system-prompt.d.ts.map +1 -0
  292. package/dist/public-chat/system-prompt.js +428 -0
  293. package/dist/public-chat/system-prompt.js.map +1 -0
  294. package/package.json +14 -6
  295. package/scripts/build-public-chat-knowledge.py +101 -0
  296. package/scripts/probe-mcp-pricing.ts +52 -0
  297. package/scripts/smoke-public-chat-live.ts +148 -0
  298. package/scripts/smoke-public-chat.ts +110 -0
  299. package/.claude/CLAUDE.md +0 -126
  300. package/.claude/commands/audit-squad.md +0 -158
  301. package/.claude/commands/cleanup-squad.md +0 -98
  302. package/.claude/commands/config-squad.md +0 -106
  303. package/.claude/commands/crud-squad.md +0 -87
  304. package/.claude/commands/data-squad.md +0 -97
  305. package/.claude/commands/doc-squad.md +0 -65
  306. package/.claude/commands/help.md +0 -29
  307. package/.claude/commands/help:agents.md +0 -182
  308. package/.claude/commands/help:commands.md +0 -78
  309. package/.claude/commands/help:faq.md +0 -79
  310. package/.claude/commands/help:plugins.md +0 -50
  311. package/.claude/commands/help:skills.md +0 -87
  312. package/.claude/commands/help:tools.md +0 -75
  313. package/.claude/commands/hotfix-squad.md +0 -112
  314. package/.claude/commands/integration-squad.md +0 -82
  315. package/.claude/commands/janitor-squad.md +0 -167
  316. package/.claude/commands/onboard-squad.md +0 -130
  317. package/.claude/commands/swarm.md +0 -210
  318. package/.claude/commands/tool-builder.md +0 -39
  319. package/.claude/skills/publish-hailer-app/SKILL.md +0 -280
  320. package/dist/CLAUDE.md +0 -370
  321. package/dist/agents/bot-manager.d.ts +0 -48
  322. package/dist/agents/bot-manager.d.ts.map +0 -1
  323. package/dist/agents/bot-manager.js +0 -254
  324. package/dist/agents/bot-manager.js.map +0 -1
  325. package/dist/agents/bug-fixer/ai.d.ts +0 -80
  326. package/dist/agents/bug-fixer/ai.d.ts.map +0 -1
  327. package/dist/agents/bug-fixer/ai.js +0 -466
  328. package/dist/agents/bug-fixer/ai.js.map +0 -1
  329. package/dist/agents/bug-fixer/bot.d.ts +0 -92
  330. package/dist/agents/bug-fixer/bot.d.ts.map +0 -1
  331. package/dist/agents/bug-fixer/bot.js +0 -687
  332. package/dist/agents/bug-fixer/bot.js.map +0 -1
  333. package/dist/agents/bug-fixer/config.d.ts +0 -21
  334. package/dist/agents/bug-fixer/config.d.ts.map +0 -1
  335. package/dist/agents/bug-fixer/config.js +0 -218
  336. package/dist/agents/bug-fixer/config.js.map +0 -1
  337. package/dist/agents/bug-fixer/files.d.ts +0 -67
  338. package/dist/agents/bug-fixer/files.d.ts.map +0 -1
  339. package/dist/agents/bug-fixer/files.js +0 -386
  340. package/dist/agents/bug-fixer/files.js.map +0 -1
  341. package/dist/agents/bug-fixer/git.d.ts +0 -48
  342. package/dist/agents/bug-fixer/git.d.ts.map +0 -1
  343. package/dist/agents/bug-fixer/git.js +0 -298
  344. package/dist/agents/bug-fixer/git.js.map +0 -1
  345. package/dist/agents/bug-fixer/index.d.ts +0 -103
  346. package/dist/agents/bug-fixer/index.d.ts.map +0 -1
  347. package/dist/agents/bug-fixer/index.js +0 -262
  348. package/dist/agents/bug-fixer/index.js.map +0 -1
  349. package/dist/agents/bug-fixer/lsp.d.ts +0 -113
  350. package/dist/agents/bug-fixer/lsp.d.ts.map +0 -1
  351. package/dist/agents/bug-fixer/lsp.js +0 -485
  352. package/dist/agents/bug-fixer/lsp.js.map +0 -1
  353. package/dist/agents/bug-fixer/monitor.d.ts +0 -123
  354. package/dist/agents/bug-fixer/monitor.d.ts.map +0 -1
  355. package/dist/agents/bug-fixer/monitor.js +0 -629
  356. package/dist/agents/bug-fixer/monitor.js.map +0 -1
  357. package/dist/agents/bug-fixer/prompt.d.ts +0 -5
  358. package/dist/agents/bug-fixer/prompt.d.ts.map +0 -1
  359. package/dist/agents/bug-fixer/prompt.js +0 -94
  360. package/dist/agents/bug-fixer/prompt.js.map +0 -1
  361. package/dist/agents/bug-fixer/registries/pending-classification.d.ts +0 -28
  362. package/dist/agents/bug-fixer/registries/pending-classification.d.ts.map +0 -1
  363. package/dist/agents/bug-fixer/registries/pending-classification.js +0 -50
  364. package/dist/agents/bug-fixer/registries/pending-classification.js.map +0 -1
  365. package/dist/agents/bug-fixer/registries/pending-fix.d.ts +0 -33
  366. package/dist/agents/bug-fixer/registries/pending-fix.d.ts.map +0 -1
  367. package/dist/agents/bug-fixer/registries/pending-fix.js +0 -64
  368. package/dist/agents/bug-fixer/registries/pending-fix.js.map +0 -1
  369. package/dist/agents/bug-fixer/registries/pending.d.ts +0 -27
  370. package/dist/agents/bug-fixer/registries/pending.d.ts.map +0 -1
  371. package/dist/agents/bug-fixer/registries/pending.js +0 -49
  372. package/dist/agents/bug-fixer/registries/pending.js.map +0 -1
  373. package/dist/agents/bug-fixer/specialist-daemon.d.ts +0 -88
  374. package/dist/agents/bug-fixer/specialist-daemon.d.ts.map +0 -1
  375. package/dist/agents/bug-fixer/specialist-daemon.js +0 -431
  376. package/dist/agents/bug-fixer/specialist-daemon.js.map +0 -1
  377. package/dist/agents/bug-fixer/specialist.d.ts +0 -47
  378. package/dist/agents/bug-fixer/specialist.d.ts.map +0 -1
  379. package/dist/agents/bug-fixer/specialist.js +0 -327
  380. package/dist/agents/bug-fixer/specialist.js.map +0 -1
  381. package/dist/agents/bug-fixer/types.d.ts +0 -123
  382. package/dist/agents/bug-fixer/types.d.ts.map +0 -1
  383. package/dist/agents/bug-fixer/types.js +0 -9
  384. package/dist/agents/bug-fixer/types.js.map +0 -1
  385. package/dist/agents/factory.d.ts +0 -172
  386. package/dist/agents/factory.d.ts.map +0 -1
  387. package/dist/agents/factory.js +0 -706
  388. package/dist/agents/factory.js.map +0 -1
  389. package/dist/agents/hailer-expert/index.d.ts +0 -8
  390. package/dist/agents/hailer-expert/index.d.ts.map +0 -1
  391. package/dist/agents/hailer-expert/index.js +0 -14
  392. package/dist/agents/hailer-expert/index.js.map +0 -1
  393. package/dist/agents/hal/daemon.d.ts +0 -174
  394. package/dist/agents/hal/daemon.d.ts.map +0 -1
  395. package/dist/agents/hal/daemon.js +0 -1385
  396. package/dist/agents/hal/daemon.js.map +0 -1
  397. package/dist/agents/hal/definitions.d.ts +0 -42
  398. package/dist/agents/hal/definitions.d.ts.map +0 -1
  399. package/dist/agents/hal/definitions.js +0 -300
  400. package/dist/agents/hal/definitions.js.map +0 -1
  401. package/dist/agents/hal/index.d.ts +0 -3
  402. package/dist/agents/hal/index.d.ts.map +0 -1
  403. package/dist/agents/hal/index.js +0 -8
  404. package/dist/agents/hal/index.js.map +0 -1
  405. package/dist/agents/index.d.ts +0 -18
  406. package/dist/agents/index.d.ts.map +0 -1
  407. package/dist/agents/index.js +0 -48
  408. package/dist/agents/index.js.map +0 -1
  409. package/dist/agents/shared/base.d.ts +0 -253
  410. package/dist/agents/shared/base.d.ts.map +0 -1
  411. package/dist/agents/shared/base.js +0 -1122
  412. package/dist/agents/shared/base.js.map +0 -1
  413. package/dist/agents/shared/schemas/action-schema.d.ts +0 -62
  414. package/dist/agents/shared/schemas/action-schema.d.ts.map +0 -1
  415. package/dist/agents/shared/schemas/action-schema.js +0 -483
  416. package/dist/agents/shared/schemas/action-schema.js.map +0 -1
  417. package/dist/agents/shared/services/agent-registry.d.ts +0 -108
  418. package/dist/agents/shared/services/agent-registry.d.ts.map +0 -1
  419. package/dist/agents/shared/services/agent-registry.js +0 -469
  420. package/dist/agents/shared/services/agent-registry.js.map +0 -1
  421. package/dist/agents/shared/services/conversation-manager.d.ts +0 -57
  422. package/dist/agents/shared/services/conversation-manager.d.ts.map +0 -1
  423. package/dist/agents/shared/services/conversation-manager.js +0 -168
  424. package/dist/agents/shared/services/conversation-manager.js.map +0 -1
  425. package/dist/agents/shared/services/mcp-client.d.ts +0 -56
  426. package/dist/agents/shared/services/mcp-client.d.ts.map +0 -1
  427. package/dist/agents/shared/services/mcp-client.js +0 -124
  428. package/dist/agents/shared/services/mcp-client.js.map +0 -1
  429. package/dist/agents/shared/services/message-classifier.d.ts +0 -37
  430. package/dist/agents/shared/services/message-classifier.d.ts.map +0 -1
  431. package/dist/agents/shared/services/message-classifier.js +0 -203
  432. package/dist/agents/shared/services/message-classifier.js.map +0 -1
  433. package/dist/agents/shared/services/message-formatter.d.ts +0 -89
  434. package/dist/agents/shared/services/message-formatter.d.ts.map +0 -1
  435. package/dist/agents/shared/services/message-formatter.js +0 -390
  436. package/dist/agents/shared/services/message-formatter.js.map +0 -1
  437. package/dist/agents/shared/services/session-logger.d.ts +0 -162
  438. package/dist/agents/shared/services/session-logger.d.ts.map +0 -1
  439. package/dist/agents/shared/services/session-logger.js +0 -724
  440. package/dist/agents/shared/services/session-logger.js.map +0 -1
  441. package/dist/agents/shared/services/structured-output-executor.d.ts +0 -88
  442. package/dist/agents/shared/services/structured-output-executor.d.ts.map +0 -1
  443. package/dist/agents/shared/services/structured-output-executor.js +0 -296
  444. package/dist/agents/shared/services/structured-output-executor.js.map +0 -1
  445. package/dist/agents/shared/services/token-billing.d.ts +0 -72
  446. package/dist/agents/shared/services/token-billing.d.ts.map +0 -1
  447. package/dist/agents/shared/services/token-billing.js +0 -198
  448. package/dist/agents/shared/services/token-billing.js.map +0 -1
  449. package/dist/agents/shared/services/tool-executor.d.ts +0 -43
  450. package/dist/agents/shared/services/tool-executor.d.ts.map +0 -1
  451. package/dist/agents/shared/services/tool-executor.js +0 -175
  452. package/dist/agents/shared/services/tool-executor.js.map +0 -1
  453. package/dist/agents/shared/services/typing-indicator.d.ts +0 -24
  454. package/dist/agents/shared/services/typing-indicator.d.ts.map +0 -1
  455. package/dist/agents/shared/services/typing-indicator.js +0 -54
  456. package/dist/agents/shared/services/typing-indicator.js.map +0 -1
  457. package/dist/agents/shared/services/workspace-schema-cache.d.ts +0 -122
  458. package/dist/agents/shared/services/workspace-schema-cache.d.ts.map +0 -1
  459. package/dist/agents/shared/services/workspace-schema-cache.js +0 -507
  460. package/dist/agents/shared/services/workspace-schema-cache.js.map +0 -1
  461. package/dist/agents/shared/specialist.d.ts +0 -91
  462. package/dist/agents/shared/specialist.d.ts.map +0 -1
  463. package/dist/agents/shared/specialist.js +0 -399
  464. package/dist/agents/shared/specialist.js.map +0 -1
  465. package/dist/agents/shared/tool-schema-loader.d.ts +0 -65
  466. package/dist/agents/shared/tool-schema-loader.d.ts.map +0 -1
  467. package/dist/agents/shared/tool-schema-loader.js +0 -238
  468. package/dist/agents/shared/tool-schema-loader.js.map +0 -1
  469. package/dist/agents/shared/types.d.ts +0 -190
  470. package/dist/agents/shared/types.d.ts.map +0 -1
  471. package/dist/agents/shared/types.js +0 -13
  472. package/dist/agents/shared/types.js.map +0 -1
  473. package/dist/bot/bot-config.d.ts +0 -37
  474. package/dist/bot/bot-config.d.ts.map +0 -1
  475. package/dist/bot/bot-config.js +0 -219
  476. package/dist/bot/bot-config.js.map +0 -1
  477. package/dist/bot/services/__tests__/permission-guard.test.d.ts +0 -2
  478. package/dist/bot/services/__tests__/permission-guard.test.d.ts.map +0 -1
  479. package/dist/bot/services/__tests__/permission-guard.test.js +0 -357
  480. package/dist/bot/services/__tests__/permission-guard.test.js.map +0 -1
  481. package/dist/bot/services/session-logger.d.ts +0 -162
  482. package/dist/bot/services/session-logger.d.ts.map +0 -1
  483. package/dist/bot/services/session-logger.js +0 -724
  484. package/dist/bot/services/session-logger.js.map +0 -1
  485. package/dist/bot/services/workspace-schema-cache.d.ts +0 -122
  486. package/dist/bot/services/workspace-schema-cache.d.ts.map +0 -1
  487. package/dist/bot/services/workspace-schema-cache.js +0 -506
  488. package/dist/bot/services/workspace-schema-cache.js.map +0 -1
  489. package/dist/bot-config/tools.d.ts +0 -28
  490. package/dist/bot-config/tools.d.ts.map +0 -1
  491. package/dist/bot-config/tools.js +0 -279
  492. package/dist/bot-config/tools.js.map +0 -1
  493. package/dist/client/agents/base.d.ts +0 -207
  494. package/dist/client/agents/base.d.ts.map +0 -1
  495. package/dist/client/agents/base.js +0 -744
  496. package/dist/client/agents/base.js.map +0 -1
  497. package/dist/client/agents/definitions.d.ts +0 -53
  498. package/dist/client/agents/definitions.d.ts.map +0 -1
  499. package/dist/client/agents/definitions.js +0 -263
  500. package/dist/client/agents/definitions.js.map +0 -1
  501. package/dist/client/agents/orchestrator.d.ts +0 -141
  502. package/dist/client/agents/orchestrator.d.ts.map +0 -1
  503. package/dist/client/agents/orchestrator.js +0 -1062
  504. package/dist/client/agents/orchestrator.js.map +0 -1
  505. package/dist/client/agents/specialist.d.ts +0 -86
  506. package/dist/client/agents/specialist.d.ts.map +0 -1
  507. package/dist/client/agents/specialist.js +0 -340
  508. package/dist/client/agents/specialist.js.map +0 -1
  509. package/dist/client/bot-entrypoint.d.ts +0 -7
  510. package/dist/client/bot-entrypoint.d.ts.map +0 -1
  511. package/dist/client/bot-entrypoint.js +0 -103
  512. package/dist/client/bot-entrypoint.js.map +0 -1
  513. package/dist/client/bot-manager.d.ts +0 -44
  514. package/dist/client/bot-manager.d.ts.map +0 -1
  515. package/dist/client/bot-manager.js +0 -173
  516. package/dist/client/bot-manager.js.map +0 -1
  517. package/dist/client/bot-runner.d.ts +0 -35
  518. package/dist/client/bot-runner.d.ts.map +0 -1
  519. package/dist/client/bot-runner.js +0 -188
  520. package/dist/client/bot-runner.js.map +0 -1
  521. package/dist/client/chat-agent-daemon.d.ts +0 -464
  522. package/dist/client/chat-agent-daemon.d.ts.map +0 -1
  523. package/dist/client/chat-agent-daemon.js +0 -1774
  524. package/dist/client/chat-agent-daemon.js.map +0 -1
  525. package/dist/client/daemon-factory.d.ts +0 -106
  526. package/dist/client/daemon-factory.d.ts.map +0 -1
  527. package/dist/client/daemon-factory.js +0 -301
  528. package/dist/client/daemon-factory.js.map +0 -1
  529. package/dist/client/factory.d.ts +0 -111
  530. package/dist/client/factory.d.ts.map +0 -1
  531. package/dist/client/factory.js +0 -314
  532. package/dist/client/factory.js.map +0 -1
  533. package/dist/client/index.d.ts +0 -17
  534. package/dist/client/index.d.ts.map +0 -1
  535. package/dist/client/index.js +0 -38
  536. package/dist/client/index.js.map +0 -1
  537. package/dist/client/multi-bot-manager.d.ts +0 -42
  538. package/dist/client/multi-bot-manager.d.ts.map +0 -1
  539. package/dist/client/multi-bot-manager.js +0 -161
  540. package/dist/client/multi-bot-manager.js.map +0 -1
  541. package/dist/client/orchestrator-daemon.d.ts +0 -87
  542. package/dist/client/orchestrator-daemon.d.ts.map +0 -1
  543. package/dist/client/orchestrator-daemon.js +0 -444
  544. package/dist/client/orchestrator-daemon.js.map +0 -1
  545. package/dist/client/server.d.ts +0 -8
  546. package/dist/client/server.d.ts.map +0 -1
  547. package/dist/client/server.js +0 -251
  548. package/dist/client/server.js.map +0 -1
  549. package/dist/client/services/agent-registry.d.ts +0 -108
  550. package/dist/client/services/agent-registry.d.ts.map +0 -1
  551. package/dist/client/services/agent-registry.js +0 -630
  552. package/dist/client/services/agent-registry.js.map +0 -1
  553. package/dist/client/services/conversation-manager.d.ts +0 -50
  554. package/dist/client/services/conversation-manager.d.ts.map +0 -1
  555. package/dist/client/services/conversation-manager.js +0 -136
  556. package/dist/client/services/conversation-manager.js.map +0 -1
  557. package/dist/client/services/mcp-client.d.ts +0 -48
  558. package/dist/client/services/mcp-client.d.ts.map +0 -1
  559. package/dist/client/services/mcp-client.js +0 -105
  560. package/dist/client/services/mcp-client.js.map +0 -1
  561. package/dist/client/services/message-classifier.d.ts +0 -37
  562. package/dist/client/services/message-classifier.d.ts.map +0 -1
  563. package/dist/client/services/message-classifier.js +0 -187
  564. package/dist/client/services/message-classifier.js.map +0 -1
  565. package/dist/client/services/message-formatter.d.ts +0 -84
  566. package/dist/client/services/message-formatter.d.ts.map +0 -1
  567. package/dist/client/services/message-formatter.js +0 -353
  568. package/dist/client/services/message-formatter.js.map +0 -1
  569. package/dist/client/services/session-logger.d.ts +0 -106
  570. package/dist/client/services/session-logger.d.ts.map +0 -1
  571. package/dist/client/services/session-logger.js +0 -446
  572. package/dist/client/services/session-logger.js.map +0 -1
  573. package/dist/client/services/tool-executor.d.ts +0 -41
  574. package/dist/client/services/tool-executor.d.ts.map +0 -1
  575. package/dist/client/services/tool-executor.js +0 -169
  576. package/dist/client/services/tool-executor.js.map +0 -1
  577. package/dist/client/services/workspace-schema-cache.d.ts +0 -149
  578. package/dist/client/services/workspace-schema-cache.d.ts.map +0 -1
  579. package/dist/client/services/workspace-schema-cache.js +0 -732
  580. package/dist/client/services/workspace-schema-cache.js.map +0 -1
  581. package/dist/client/specialist-daemon.d.ts +0 -77
  582. package/dist/client/specialist-daemon.d.ts.map +0 -1
  583. package/dist/client/specialist-daemon.js +0 -197
  584. package/dist/client/specialist-daemon.js.map +0 -1
  585. package/dist/client/specialists.d.ts +0 -53
  586. package/dist/client/specialists.d.ts.map +0 -1
  587. package/dist/client/specialists.js +0 -178
  588. package/dist/client/specialists.js.map +0 -1
  589. package/dist/client/tool-schema-loader.d.ts +0 -62
  590. package/dist/client/tool-schema-loader.d.ts.map +0 -1
  591. package/dist/client/tool-schema-loader.js +0 -232
  592. package/dist/client/tool-schema-loader.js.map +0 -1
  593. package/dist/client/types.d.ts +0 -327
  594. package/dist/client/types.d.ts.map +0 -1
  595. package/dist/client/types.js +0 -121
  596. package/dist/client/types.js.map +0 -1
  597. package/dist/commands/seed-config.d.ts +0 -9
  598. package/dist/commands/seed-config.d.ts.map +0 -1
  599. package/dist/commands/seed-config.js +0 -377
  600. package/dist/commands/seed-config.js.map +0 -1
  601. package/dist/commands/setup.d.ts +0 -11
  602. package/dist/commands/setup.d.ts.map +0 -1
  603. package/dist/commands/setup.js +0 -320
  604. package/dist/commands/setup.js.map +0 -1
  605. package/dist/lib/discussion-lock.d.ts +0 -42
  606. package/dist/lib/discussion-lock.d.ts.map +0 -1
  607. package/dist/lib/discussion-lock.js +0 -110
  608. package/dist/lib/discussion-lock.js.map +0 -1
  609. package/dist/mcp/signal-handler.d.ts +0 -82
  610. package/dist/mcp/signal-handler.d.ts.map +0 -1
  611. package/dist/mcp/signal-handler.js +0 -406
  612. package/dist/mcp/signal-handler.js.map +0 -1
  613. package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts +0 -2
  614. package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts.map +0 -1
  615. package/dist/mcp/tools/__tests__/discussion-forward.test.js +0 -218
  616. package/dist/mcp/tools/__tests__/discussion-forward.test.js.map +0 -1
  617. package/dist/mcp/tools/app-member.d.ts +0 -14
  618. package/dist/mcp/tools/app-member.d.ts.map +0 -1
  619. package/dist/mcp/tools/app-member.js +0 -195
  620. package/dist/mcp/tools/app-member.js.map +0 -1
  621. package/dist/mcp/tools/app-scaffold.d.ts +0 -14
  622. package/dist/mcp/tools/app-scaffold.d.ts.map +0 -1
  623. package/dist/mcp/tools/app-scaffold.js +0 -581
  624. package/dist/mcp/tools/app-scaffold.js.map +0 -1
  625. package/dist/mcp/tools/bot-config/constants.d.ts +0 -23
  626. package/dist/mcp/tools/bot-config/constants.d.ts.map +0 -1
  627. package/dist/mcp/tools/bot-config/constants.js +0 -94
  628. package/dist/mcp/tools/bot-config/constants.js.map +0 -1
  629. package/dist/mcp/tools/bot-config/core.d.ts +0 -253
  630. package/dist/mcp/tools/bot-config/core.d.ts.map +0 -1
  631. package/dist/mcp/tools/bot-config/core.js +0 -2456
  632. package/dist/mcp/tools/bot-config/core.js.map +0 -1
  633. package/dist/mcp/tools/bot-config/index.d.ts +0 -10
  634. package/dist/mcp/tools/bot-config/index.d.ts.map +0 -1
  635. package/dist/mcp/tools/bot-config/index.js +0 -59
  636. package/dist/mcp/tools/bot-config/index.js.map +0 -1
  637. package/dist/mcp/tools/bot-config/tools.d.ts +0 -7
  638. package/dist/mcp/tools/bot-config/tools.d.ts.map +0 -1
  639. package/dist/mcp/tools/bot-config/tools.js +0 -15
  640. package/dist/mcp/tools/bot-config/tools.js.map +0 -1
  641. package/dist/mcp/tools/bot-config/types.d.ts +0 -50
  642. package/dist/mcp/tools/bot-config/types.d.ts.map +0 -1
  643. package/dist/mcp/tools/bot-config/types.js +0 -6
  644. package/dist/mcp/tools/bot-config/types.js.map +0 -1
  645. package/dist/mcp/tools/bug-fixer-tools.d.ts +0 -45
  646. package/dist/mcp/tools/bug-fixer-tools.d.ts.map +0 -1
  647. package/dist/mcp/tools/bug-fixer-tools.js +0 -1096
  648. package/dist/mcp/tools/bug-fixer-tools.js.map +0 -1
  649. package/dist/mcp/tools/document.d.ts +0 -11
  650. package/dist/mcp/tools/document.d.ts.map +0 -1
  651. package/dist/mcp/tools/document.js +0 -741
  652. package/dist/mcp/tools/document.js.map +0 -1
  653. package/dist/mcp/tools/investigate.d.ts +0 -9
  654. package/dist/mcp/tools/investigate.d.ts.map +0 -1
  655. package/dist/mcp/tools/investigate.js +0 -254
  656. package/dist/mcp/tools/investigate.js.map +0 -1
  657. package/dist/mcp/utils/pagination.d.ts +0 -40
  658. package/dist/mcp/utils/pagination.d.ts.map +0 -1
  659. package/dist/mcp/utils/pagination.js +0 -55
  660. package/dist/mcp/utils/pagination.js.map +0 -1
  661. package/dist/modules/bug-reports/bug-config.d.ts +0 -25
  662. package/dist/modules/bug-reports/bug-config.d.ts.map +0 -1
  663. package/dist/modules/bug-reports/bug-config.js +0 -187
  664. package/dist/modules/bug-reports/bug-config.js.map +0 -1
  665. package/dist/modules/bug-reports/bug-monitor.d.ts +0 -108
  666. package/dist/modules/bug-reports/bug-monitor.d.ts.map +0 -1
  667. package/dist/modules/bug-reports/bug-monitor.js +0 -510
  668. package/dist/modules/bug-reports/bug-monitor.js.map +0 -1
  669. package/dist/modules/bug-reports/giuseppe-agent.d.ts +0 -58
  670. package/dist/modules/bug-reports/giuseppe-agent.d.ts.map +0 -1
  671. package/dist/modules/bug-reports/giuseppe-agent.js +0 -467
  672. package/dist/modules/bug-reports/giuseppe-agent.js.map +0 -1
  673. package/dist/modules/bug-reports/giuseppe-ai.d.ts +0 -83
  674. package/dist/modules/bug-reports/giuseppe-ai.d.ts.map +0 -1
  675. package/dist/modules/bug-reports/giuseppe-ai.js +0 -466
  676. package/dist/modules/bug-reports/giuseppe-ai.js.map +0 -1
  677. package/dist/modules/bug-reports/giuseppe-bot.d.ts +0 -110
  678. package/dist/modules/bug-reports/giuseppe-bot.d.ts.map +0 -1
  679. package/dist/modules/bug-reports/giuseppe-bot.js +0 -804
  680. package/dist/modules/bug-reports/giuseppe-bot.js.map +0 -1
  681. package/dist/modules/bug-reports/giuseppe-daemon.d.ts +0 -80
  682. package/dist/modules/bug-reports/giuseppe-daemon.d.ts.map +0 -1
  683. package/dist/modules/bug-reports/giuseppe-daemon.js +0 -617
  684. package/dist/modules/bug-reports/giuseppe-daemon.js.map +0 -1
  685. package/dist/modules/bug-reports/giuseppe-files.d.ts +0 -64
  686. package/dist/modules/bug-reports/giuseppe-files.d.ts.map +0 -1
  687. package/dist/modules/bug-reports/giuseppe-files.js +0 -375
  688. package/dist/modules/bug-reports/giuseppe-files.js.map +0 -1
  689. package/dist/modules/bug-reports/giuseppe-git.d.ts +0 -48
  690. package/dist/modules/bug-reports/giuseppe-git.d.ts.map +0 -1
  691. package/dist/modules/bug-reports/giuseppe-git.js +0 -298
  692. package/dist/modules/bug-reports/giuseppe-git.js.map +0 -1
  693. package/dist/modules/bug-reports/giuseppe-lsp.d.ts +0 -113
  694. package/dist/modules/bug-reports/giuseppe-lsp.d.ts.map +0 -1
  695. package/dist/modules/bug-reports/giuseppe-lsp.js +0 -485
  696. package/dist/modules/bug-reports/giuseppe-lsp.js.map +0 -1
  697. package/dist/modules/bug-reports/giuseppe-prompt.d.ts +0 -5
  698. package/dist/modules/bug-reports/giuseppe-prompt.d.ts.map +0 -1
  699. package/dist/modules/bug-reports/giuseppe-prompt.js +0 -94
  700. package/dist/modules/bug-reports/giuseppe-prompt.js.map +0 -1
  701. package/dist/modules/bug-reports/index.d.ts +0 -77
  702. package/dist/modules/bug-reports/index.d.ts.map +0 -1
  703. package/dist/modules/bug-reports/index.js +0 -215
  704. package/dist/modules/bug-reports/index.js.map +0 -1
  705. package/dist/modules/bug-reports/pending-classification-registry.d.ts +0 -28
  706. package/dist/modules/bug-reports/pending-classification-registry.d.ts.map +0 -1
  707. package/dist/modules/bug-reports/pending-classification-registry.js +0 -50
  708. package/dist/modules/bug-reports/pending-classification-registry.js.map +0 -1
  709. package/dist/modules/bug-reports/pending-fix-registry.d.ts +0 -30
  710. package/dist/modules/bug-reports/pending-fix-registry.d.ts.map +0 -1
  711. package/dist/modules/bug-reports/pending-fix-registry.js +0 -42
  712. package/dist/modules/bug-reports/pending-fix-registry.js.map +0 -1
  713. package/dist/modules/bug-reports/pending-registry.d.ts +0 -27
  714. package/dist/modules/bug-reports/pending-registry.d.ts.map +0 -1
  715. package/dist/modules/bug-reports/pending-registry.js +0 -49
  716. package/dist/modules/bug-reports/pending-registry.js.map +0 -1
  717. package/dist/modules/bug-reports/types.d.ts +0 -123
  718. package/dist/modules/bug-reports/types.d.ts.map +0 -1
  719. package/dist/modules/bug-reports/types.js +0 -9
  720. package/dist/modules/bug-reports/types.js.map +0 -1
  721. package/dist/plugins/bug-fixer/index.d.ts +0 -2
  722. package/dist/plugins/bug-fixer/index.d.ts.map +0 -1
  723. package/dist/plugins/bug-fixer/index.js +0 -18
  724. package/dist/plugins/bug-fixer/index.js.map +0 -1
  725. package/dist/plugins/bug-fixer/tools.d.ts +0 -45
  726. package/dist/plugins/bug-fixer/tools.d.ts.map +0 -1
  727. package/dist/plugins/bug-fixer/tools.js +0 -1096
  728. package/dist/plugins/bug-fixer/tools.js.map +0 -1
  729. package/dist/plugins/vipunen/__tests__/tools.test.d.ts +0 -10
  730. package/dist/plugins/vipunen/__tests__/tools.test.d.ts.map +0 -1
  731. package/dist/plugins/vipunen/__tests__/tools.test.js +0 -646
  732. package/dist/plugins/vipunen/__tests__/tools.test.js.map +0 -1
  733. package/dist/routes/agents.d.ts +0 -44
  734. package/dist/routes/agents.d.ts.map +0 -1
  735. package/dist/routes/agents.js +0 -311
  736. package/dist/routes/agents.js.map +0 -1
  737. package/dist/services/agent-credential-store.d.ts +0 -73
  738. package/dist/services/agent-credential-store.d.ts.map +0 -1
  739. package/dist/services/agent-credential-store.js +0 -212
  740. package/dist/services/agent-credential-store.js.map +0 -1
  741. package/dist/stdio-server.d.ts +0 -14
  742. package/dist/stdio-server.d.ts.map +0 -1
  743. package/dist/stdio-server.js +0 -101
  744. package/dist/stdio-server.js.map +0 -1
  745. package/dist/workspace/context.d.ts +0 -148
  746. package/dist/workspace/context.d.ts.map +0 -1
  747. package/dist/workspace/context.js +0 -339
  748. package/dist/workspace/context.js.map +0 -1
  749. package/dist/workspace/credentials.d.ts +0 -55
  750. package/dist/workspace/credentials.d.ts.map +0 -1
  751. package/dist/workspace/credentials.js +0 -239
  752. package/dist/workspace/credentials.js.map +0 -1
  753. package/dist/workspace/index.d.ts +0 -21
  754. package/dist/workspace/index.d.ts.map +0 -1
  755. package/dist/workspace/index.js +0 -45
  756. package/dist/workspace/index.js.map +0 -1
  757. package/dist/workspace/loader.d.ts +0 -27
  758. package/dist/workspace/loader.d.ts.map +0 -1
  759. package/dist/workspace/loader.js +0 -222
  760. package/dist/workspace/loader.js.map +0 -1
  761. package/dist/workspace/schema.d.ts +0 -37
  762. package/dist/workspace/schema.d.ts.map +0 -1
  763. package/dist/workspace/schema.js +0 -192
  764. package/dist/workspace/schema.js.map +0 -1
@@ -0,0 +1,593 @@
1
+ "use strict";
2
+ /**
3
+ * Public chat graduation handler.
4
+ *
5
+ * Endpoint that runs at the tail of the demo-chat → workspace flow. The
6
+ * frontend opens Hailer's `/authorize/user-api-key` popup with this
7
+ * endpoint as `redirectUri`. Hailer POSTs the user's freshly-minted
8
+ * apiKey back to us as form-encoded body; we use it to:
9
+ *
10
+ * 1. Resolve the user's workspace and persist admin credentials so the
11
+ * bot webhook handler can authenticate later activity events.
12
+ * 2. Install the Agent Directory workflow if the (brand-new) workspace
13
+ * doesn't have one.
14
+ * 3. Create a bot activity directly in the Deployed phase. The phase
15
+ * webhook (configured during install) fires back to our own server,
16
+ * which auto-provisions the bot's Hailer user.
17
+ * 4. Poll the activity until `hailerProfile` is set — i.e., the bot
18
+ * account exists and BotManager can pick it up.
19
+ * 5. Redirect the popup to Hailer's `/authorize/complete` page so the
20
+ * surrounding frontend logic knows we're done.
21
+ *
22
+ * No idempotent re-claim (each authorize creates a fresh bot). If
23
+ * STUDIO_URL is set, the background task additionally pre-warms a
24
+ * Studio session for the new user so they have a ready coding session
25
+ * waiting on their first visit.
26
+ */
27
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ var desc = Object.getOwnPropertyDescriptor(m, k);
30
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
31
+ desc = { enumerable: true, get: function() { return m[k]; } };
32
+ }
33
+ Object.defineProperty(o, k2, desc);
34
+ }) : (function(o, m, k, k2) {
35
+ if (k2 === undefined) k2 = k;
36
+ o[k2] = m[k];
37
+ }));
38
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
39
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
40
+ }) : function(o, v) {
41
+ o["default"] = v;
42
+ });
43
+ var __importStar = (this && this.__importStar) || (function () {
44
+ var ownKeys = function(o) {
45
+ ownKeys = Object.getOwnPropertyNames || function (o) {
46
+ var ar = [];
47
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
48
+ return ar;
49
+ };
50
+ return ownKeys(o);
51
+ };
52
+ return function (mod) {
53
+ if (mod && mod.__esModule) return mod;
54
+ var result = {};
55
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
56
+ __setModuleDefault(result, mod);
57
+ return result;
58
+ };
59
+ })();
60
+ Object.defineProperty(exports, "__esModule", { value: true });
61
+ exports.PUBLIC_CHAT_AUTHORIZE_ROUTE = void 0;
62
+ exports.createPublicChatAuthorizeHandler = createPublicChatAuthorizeHandler;
63
+ const crypto = __importStar(require("crypto"));
64
+ const logger_1 = require("../lib/logger");
65
+ const config_1 = require("../config");
66
+ const hailer_clients_1 = require("../mcp/hailer-clients");
67
+ const hailer_rpc_1 = require("../mcp/hailer-rpc");
68
+ const workspace_admin_store_1 = require("../mcp/workspace-admin-store");
69
+ const workflow_installer_1 = require("../bot-config/workflow-installer");
70
+ const webhook_handler_1 = require("../mcp/webhook-handler");
71
+ const session_store_1 = require("./session-store");
72
+ const studio_prewarm_1 = require("./studio-prewarm");
73
+ const logger = (0, logger_1.createLogger)({ component: 'public-chat-graduate' });
74
+ exports.PUBLIC_CHAT_AUTHORIZE_ROUTE = '/api/public-chat/authorize';
75
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
76
+ /**
77
+ * Resolve the Hailer frontend origin to redirect the popup back to. The
78
+ * Hailer authorize page POSTs to us with its own Origin/Referer header
79
+ * (e.g. https://app.k8s.hailer.com), and the redirect must land on that
80
+ * same origin or the popup will hit a Hailer instance the user is not
81
+ * signed into — which bounces them to the default landing page (e.g.
82
+ * activities tab) instead of running /authorize/complete's window.close.
83
+ *
84
+ * Browsers send the literal four-character string `null` as the Origin
85
+ * header for tainted-origin requests — cross-origin form POSTs that
86
+ * cross schemes (e.g. https://localhost:9443 → http://localhost:3030)
87
+ * fall into this. Treat that as "no origin" and continue to referer/env,
88
+ * otherwise the redirect Location becomes `null/#/authorize/complete?…`
89
+ * which browsers resolve *relative* to the current URL.
90
+ *
91
+ * Falls back to environment.HAILER_APP_URL when no usable header is set.
92
+ */
93
+ function isValidAbsoluteHttpUrl(value) {
94
+ try {
95
+ const parsed = new URL(value);
96
+ return parsed.protocol === 'http:' || parsed.protocol === 'https:';
97
+ }
98
+ catch {
99
+ return false;
100
+ }
101
+ }
102
+ function resolveHailerOrigin(req) {
103
+ const origin = typeof req.headers.origin === 'string' ? req.headers.origin.trim() : '';
104
+ if (origin && origin !== 'null' && isValidAbsoluteHttpUrl(origin)) {
105
+ return origin.replace(/\/+$/, '');
106
+ }
107
+ const referer = typeof req.headers.referer === 'string' ? req.headers.referer : '';
108
+ if (referer) {
109
+ try {
110
+ const parsed = new URL(referer);
111
+ if (parsed.protocol === 'http:' || parsed.protocol === 'https:') {
112
+ return `${parsed.protocol}//${parsed.host}`;
113
+ }
114
+ }
115
+ catch {
116
+ // Fall through to env default.
117
+ }
118
+ }
119
+ if (!isValidAbsoluteHttpUrl(config_1.environment.HAILER_APP_URL)) {
120
+ // Should be unreachable — config.ts validates HAILER_APP_URL via
121
+ // z.string().url() — but surface it loudly if a future config
122
+ // change ever ships an unvalidated value.
123
+ logger.error('HAILER_APP_URL is not a usable absolute HTTP(S) URL', undefined, {
124
+ hailerAppUrl: config_1.environment.HAILER_APP_URL,
125
+ origin,
126
+ referer,
127
+ });
128
+ }
129
+ logger.debug('resolveHailerOrigin falling back to HAILER_APP_URL', {
130
+ origin: origin || '(unset)',
131
+ referer: referer || '(unset)',
132
+ fallback: config_1.environment.HAILER_APP_URL,
133
+ });
134
+ return config_1.environment.HAILER_APP_URL.replace(/\/+$/, '');
135
+ }
136
+ function completeUrl(hailerOrigin, status, message, extras) {
137
+ const params = new URLSearchParams({ status });
138
+ if (message) {
139
+ params.set('message', message);
140
+ }
141
+ if (extras) {
142
+ for (const [key, value] of Object.entries(extras)) {
143
+ if (value !== undefined && value !== '') {
144
+ params.set(key, value);
145
+ }
146
+ }
147
+ }
148
+ return `${hailerOrigin}/#/authorize/complete?${params.toString()}`;
149
+ }
150
+ /**
151
+ * Variant of completeUrl for the "signed up but not yet verified" branch.
152
+ * Echoes sessionId back so the demo page can key its localStorage flag to
153
+ * the same chat conversation when the user later clicks "I've verified —
154
+ * finish setup". Reason is enumerable so the frontend can branch on it
155
+ * (today: 'email-not-verified').
156
+ */
157
+ function pendingUrl(hailerOrigin, sessionId, reason) {
158
+ const params = new URLSearchParams({
159
+ status: 'pending',
160
+ reason,
161
+ sessionId,
162
+ });
163
+ return `${hailerOrigin}/#/authorize/complete?${params.toString()}`;
164
+ }
165
+ /**
166
+ * Read `user.emailVerified` from v2.core.init. Hailer's admin-side RPCs
167
+ * (e.g. v3.user.register for the bot account) reject unverified users
168
+ * with `403 "Validate your email."`, so if we ran the graduation chain
169
+ * before verification it would leave an orphan workspace with no bot,
170
+ * no discussion, and no recovery path.
171
+ *
172
+ * Returns:
173
+ * - { verified: true } → continue with graduation
174
+ * - { verified: false } → redirect popup to status=pending
175
+ * - { error } → upstream RPC error; surface as status=error
176
+ *
177
+ * Treats anything other than literal `true` (missing, false, null, or
178
+ * a non-boolean) as unverified — better to ask the user to verify one
179
+ * extra time than to silently produce a half-broken workspace.
180
+ */
181
+ async function isEmailVerified(client) {
182
+ try {
183
+ const init = await client.socket.request(hailer_rpc_1.HailerRpc.Core.init, [['user']]);
184
+ const verified = init?.user?.emailVerified === true;
185
+ logger.debug('isEmailVerified', {
186
+ verified,
187
+ userId: init?.user?._id,
188
+ rawEmailVerified: init?.user?.emailVerified,
189
+ });
190
+ return { verified };
191
+ }
192
+ catch (err) {
193
+ const message = err instanceof Error ? err.message : String(err);
194
+ return { error: `Could not read user.emailVerified: ${message}` };
195
+ }
196
+ }
197
+ function generateBotEmail(workspaceId) {
198
+ const wsPrefix = workspaceId.toLowerCase().replace(/[^a-z0-9]/g, '').slice(0, 8);
199
+ const suffix = crypto.randomBytes(3).toString('hex');
200
+ return `bot-${wsPrefix || 'ws'}-${suffix}@hailer.com`;
201
+ }
202
+ async function resolveWorkspaceAndTeam(client) {
203
+ const init = await client.socket.request(hailer_rpc_1.HailerRpc.Core.init, [['network', 'teams']]);
204
+ const workspaceId = init?.network?._id;
205
+ if (!workspaceId) {
206
+ return { error: 'Could not resolve workspaceId from API key' };
207
+ }
208
+ const teamIds = init?.teams ? Object.keys(init.teams) : [];
209
+ if (teamIds.length === 0) {
210
+ return { error: 'Workspace has no teams — cannot place bot activity' };
211
+ }
212
+ return { workspaceId, teamId: teamIds[0] };
213
+ }
214
+ // Slide ids the demo deck currently knows about. Anything outside this set
215
+ // arriving via the URL is ignored — keeps unknown ids from leaking into the
216
+ // bot's intro prompt.
217
+ const KNOWN_SLIDE_IDS = new Set([
218
+ 'title', 'what', 'problem', 'core-label', 'workspaces', 'workflows',
219
+ 'activities', 'discussions', 'build-label', 'apps-studio', 'sdk',
220
+ 'sdk-code', 'mcp', 'insights', 'closer',
221
+ ]);
222
+ /**
223
+ * Pull the public-chat demo turns for `sessionId` and serialize them into
224
+ * the shape `bot.ts:parseSeedTurns` expects. Two output shapes:
225
+ * - bare JSON array of turns (no viewed slides) — backwards-compatible.
226
+ * - JSON object `{ turns, viewedSlides }` (when the visitor opened slides).
227
+ *
228
+ * Returns `undefined` when there's nothing meaningful to forward.
229
+ */
230
+ function buildSeedContext(sessionId, viewedSlides = []) {
231
+ const turns = session_store_1.publicChatSessionStore.get(sessionId);
232
+ const filteredSlides = viewedSlides.filter((id) => KNOWN_SLIDE_IDS.has(id));
233
+ if ((!turns || turns.length === 0) && filteredSlides.length === 0) {
234
+ return undefined;
235
+ }
236
+ const turnPayload = (turns || []).map((turn) => ({ role: turn.role, content: turn.content }));
237
+ if (filteredSlides.length === 0) {
238
+ // Preserve the original bare-array shape so older bots still parse it.
239
+ return JSON.stringify(turnPayload);
240
+ }
241
+ return JSON.stringify({ turns: turnPayload, viewedSlides: filteredSlides });
242
+ }
243
+ /** Best-effort turn count for log output — tolerates both seedContext shapes. */
244
+ function countSeedTurnsForLog(seedContext) {
245
+ if (!seedContext)
246
+ return 0;
247
+ try {
248
+ const parsed = JSON.parse(seedContext);
249
+ if (Array.isArray(parsed))
250
+ return parsed.length;
251
+ if (parsed && typeof parsed === 'object' && Array.isArray(parsed.turns)) {
252
+ return (parsed.turns).length;
253
+ }
254
+ }
255
+ catch {
256
+ // ignored — log 0
257
+ }
258
+ return 0;
259
+ }
260
+ async function createBotActivity(client, workspaceId, teamId, workflowId, deployedPhaseId, seedContext) {
261
+ const email = generateBotEmail(workspaceId);
262
+ const schemaConfig = JSON.stringify({
263
+ workflowId,
264
+ deployedPhaseId,
265
+ responseMode: 'always',
266
+ // Provision the bot's Hailer account as a workspace admin. The
267
+ // graduation flow drops a brand-new visitor into a workspace
268
+ // where this bot is effectively their starter assistant — it
269
+ // needs admin to install workflows, invite collaborators, and
270
+ // configure the workspace on their behalf.
271
+ memberRole: 'admin',
272
+ // Run as the Hailer Helper persona: UI guidance (highlights,
273
+ // navigation links), plain-language concept explanations, and the
274
+ // opt-in onboarding tour. The graduation seedContext keeps it
275
+ // anchored on what the visitor came to build — buildSystemPrompt
276
+ // sees both helperMode and the seed and steers the Helper persona
277
+ // to continue that intent rather than run the from-zero tour.
278
+ helperMode: true,
279
+ });
280
+ const fields = {
281
+ firstName: 'Hailer',
282
+ lastName: 'Helper',
283
+ agentEmailInHailer: email,
284
+ password: `pending-${crypto.randomBytes(8).toString('hex')}`,
285
+ botType: 'specialist',
286
+ schemaConfig,
287
+ accessLevel: 'all',
288
+ ...(seedContext ? { seedContext } : {}),
289
+ };
290
+ const activity = {
291
+ name: 'Hailer Helper',
292
+ teamId,
293
+ phaseId: deployedPhaseId,
294
+ fields,
295
+ };
296
+ try {
297
+ const result = await client.socket.request('v3.activity.createMany', [
298
+ workflowId,
299
+ [activity],
300
+ { returnDocument: true },
301
+ ]);
302
+ const activityId = Array.isArray(result) && result[0]?._id ? result[0]._id : undefined;
303
+ if (!activityId) {
304
+ return { error: 'Activity create returned no _id' };
305
+ }
306
+ return { activityId, activityName: activity.name, fields };
307
+ }
308
+ catch (err) {
309
+ const msg = err instanceof Error ? err.message : JSON.stringify(err);
310
+ return { error: `Failed to create bot activity: ${msg}` };
311
+ }
312
+ }
313
+ /**
314
+ * Locally invoke the bot-config webhook handler with a payload synthesized
315
+ * from the just-created activity. Hailer's phase webhook *should* fire on
316
+ * `webhookAdded:true`, but in local dev clusters (and possibly older
317
+ * Hailer versions in general) `v3.activity.createMany` doesn't trigger
318
+ * delivery — so the bot never provisions and the user lands in a silent
319
+ * workspace.
320
+ *
321
+ * The handler is just a function with no implicit HTTP dependency, and
322
+ * its first action is to probe the activity by ID to detect already-
323
+ * provisioned bots — so calling it inline is safe even if Hailer later
324
+ * delivers the real webhook (second call is a no-op).
325
+ *
326
+ * Field IDs are synthetic — `getFieldValue` matches by `.key`, not by
327
+ * `.id`, so the placeholders never get dereferenced. We pass the same
328
+ * `key` value as `id` so any future logging that surfaces `id` is
329
+ * still informative.
330
+ */
331
+ async function provisionBotInline(params) {
332
+ const payload = {
333
+ _id: params.activityId,
334
+ name: params.activityName,
335
+ process: params.workflowId,
336
+ cid: params.workspaceId,
337
+ currentPhase: params.deployedPhaseId,
338
+ uid: params.userId ?? '',
339
+ created: Date.now(),
340
+ updated: Date.now(),
341
+ fields: Object.entries(params.fields).map(([key, value]) => ({
342
+ id: key,
343
+ key,
344
+ type: 'text',
345
+ value,
346
+ })),
347
+ };
348
+ try {
349
+ const result = await (0, webhook_handler_1.handleBotConfigWebhook)(payload);
350
+ if (result.success) {
351
+ logger.info('Graduation (bg): bot provisioned via inline webhook handler', {
352
+ activityId: params.activityId,
353
+ workspaceId: params.workspaceId,
354
+ action: result.action,
355
+ botType: result.botType,
356
+ botUserId: result.userId,
357
+ });
358
+ return { botUserId: result.userId || undefined };
359
+ }
360
+ logger.warn('Graduation (bg): inline webhook handler returned non-success', {
361
+ activityId: params.activityId,
362
+ workspaceId: params.workspaceId,
363
+ action: result.action,
364
+ error: result.error,
365
+ });
366
+ }
367
+ catch (err) {
368
+ const message = err instanceof Error ? err.message : String(err);
369
+ logger.error('Graduation (bg): inline webhook handler threw', err, {
370
+ activityId: params.activityId,
371
+ workspaceId: params.workspaceId,
372
+ errorMessage: message,
373
+ });
374
+ }
375
+ return {};
376
+ }
377
+ async function runGraduationBackground(params) {
378
+ const { sessionId, workspaceId, workflowId, deployedPhaseId, activityId, activityName, fields, apiKey, userId, viewedSlides, } = params;
379
+ try {
380
+ // Provision the bot first so we know its Hailer user id before
381
+ // building the Studio brief — the brief tells the Studio builder to
382
+ // message the Helper bot (by that id) once it's done, asking it to
383
+ // offer the visitor a tour. We drive provisioning ourselves instead
384
+ // of waiting for Hailer's phase webhook: local Hailer clusters don't
385
+ // reliably fire webhookAdded on v3.activity.createMany, which leaves
386
+ // the user in a silent workspace. handleBotConfigWebhook is idempotent
387
+ // (probes for an already-provisioned bot before registering), so if
388
+ // Hailer does later deliver the real webhook it's a no-op.
389
+ //
390
+ // This runs a couple of seconds before the Studio session kicks off
391
+ // (vs. the other way around previously) — acceptable, since the
392
+ // Studio one-shot build then runs server-side for minutes.
393
+ const { botUserId } = await provisionBotInline({
394
+ workspaceId, workflowId, deployedPhaseId,
395
+ activityId, activityName, fields, userId,
396
+ });
397
+ // Build the brief from the demo conversation; pair the autonomous-
398
+ // builder persona with it only when we actually have something to
399
+ // build. When the bot provisioned successfully, hand its user id and
400
+ // activity id to the brief so the builder can locate the bot's
401
+ // discussion and post the post-build tour handoff.
402
+ const turns = session_store_1.publicChatSessionStore.get(sessionId) ?? [];
403
+ const initialPrompt = (0, studio_prewarm_1.buildStudioInitialPrompt)(turns.map(turn => ({ role: turn.role, content: turn.content })), viewedSlides, { helperBotUserId: botUserId, helperBotActivityId: activityId });
404
+ await (0, studio_prewarm_1.createStudioSession)({
405
+ apiKey,
406
+ workspaceId,
407
+ systemMessage: initialPrompt ? studio_prewarm_1.STUDIO_BUILDER_SYSTEM_MESSAGE : undefined,
408
+ initialPrompt,
409
+ });
410
+ }
411
+ catch (err) {
412
+ logger.error('Graduation (bg): unexpected failure', { sessionId, workspaceId, err });
413
+ }
414
+ }
415
+ /**
416
+ * Validate the freshly-minted user API key against Hailer's REST API.
417
+ * Hailer's `v3.user.apikey.create` returns synchronously but the key can
418
+ * take a few hundred ms to become usable on the API node we hit — retry
419
+ * a couple of times before giving up. On final failure, log the full
420
+ * downstream error and a sanitized version goes back to the popup so
421
+ * the user (and the dev tailing logs) can see *why*.
422
+ */
423
+ const VALIDATE_RETRY_BACKOFFS_MS = [0, 250, 600];
424
+ async function validateApiKeyWithRetry(apiKey) {
425
+ const apiKeyPrefix = apiKey.slice(0, 16);
426
+ const matchesUserApiKeyPrefix = apiKey.startsWith('userapikey_');
427
+ let lastErr;
428
+ for (let attempt = 0; attempt < VALIDATE_RETRY_BACKOFFS_MS.length; attempt++) {
429
+ const delayMs = VALIDATE_RETRY_BACKOFFS_MS[attempt];
430
+ if (delayMs > 0) {
431
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
432
+ }
433
+ try {
434
+ const client = await (0, hailer_clients_1.createHailerClientByApiKey)(apiKey);
435
+ if (attempt > 0) {
436
+ logger.info('Graduation: API key accepted after retry', {
437
+ attempt: attempt + 1,
438
+ apiKeyPrefix,
439
+ });
440
+ }
441
+ return client;
442
+ }
443
+ catch (err) {
444
+ lastErr = err;
445
+ const message = err instanceof Error ? err.message : String(err);
446
+ logger.warn('Graduation: API key validation attempt failed', {
447
+ attempt: attempt + 1,
448
+ totalAttempts: VALIDATE_RETRY_BACKOFFS_MS.length,
449
+ apiKeyPrefix,
450
+ matchesUserApiKeyPrefix,
451
+ botApiBaseUrl: config_1.environment.BOT_API_BASE_URL,
452
+ errorMessage: message,
453
+ });
454
+ }
455
+ }
456
+ // All retries exhausted. Log once at error with stack, return a
457
+ // user-facing string that includes the downstream error message so
458
+ // the popup is actionable instead of just "API key validation failed".
459
+ const downstreamMessage = lastErr instanceof Error ? lastErr.message : String(lastErr);
460
+ logger.error('Graduation: API key rejected after retries', lastErr, {
461
+ apiKeyPrefix,
462
+ matchesUserApiKeyPrefix,
463
+ botApiBaseUrl: config_1.environment.BOT_API_BASE_URL,
464
+ attempts: VALIDATE_RETRY_BACKOFFS_MS.length,
465
+ });
466
+ // Truncate to keep the popup URL sane; full error is in server logs.
467
+ const truncated = downstreamMessage.length > 240
468
+ ? `${downstreamMessage.slice(0, 240)}…`
469
+ : downstreamMessage;
470
+ return { error: `API key validation failed: ${truncated}` };
471
+ }
472
+ function createPublicChatAuthorizeHandler() {
473
+ return async (req, res) => {
474
+ const hailerOrigin = resolveHailerOrigin(req);
475
+ const sessionId = typeof req.query.sessionId === 'string' ? req.query.sessionId : '';
476
+ const apiKey = typeof req.body?.apiKey === 'string' ? req.body.apiKey : '';
477
+ // Optional comma-separated list of overview-slide ids the visitor
478
+ // opened during the demo. Whitelisted in buildSeedContext.
479
+ const viewedSlides = typeof req.query.viewedSlides === 'string' && req.query.viewedSlides.length > 0
480
+ ? req.query.viewedSlides.split(',').map((s) => s.trim()).filter(Boolean)
481
+ : [];
482
+ if (!UUID_REGEX.test(sessionId)) {
483
+ res.redirect(303, completeUrl(hailerOrigin, 'error', 'Missing or invalid sessionId'));
484
+ return;
485
+ }
486
+ if (!apiKey) {
487
+ res.redirect(303, completeUrl(hailerOrigin, 'error', 'Missing apiKey'));
488
+ return;
489
+ }
490
+ logger.info('Public-chat graduation started', { sessionId, hailerOrigin });
491
+ const client = await validateApiKeyWithRetry(apiKey);
492
+ if ('error' in client) {
493
+ res.redirect(303, completeUrl(hailerOrigin, 'error', client.error));
494
+ return;
495
+ }
496
+ // Gate everything that calls admin-style Hailer RPCs (workflow
497
+ // install, v3.user.register for the bot, etc.) on the visitor
498
+ // having verified their email — Hailer rejects those with
499
+ // 403 "Validate your email." otherwise. We skip the whole chain
500
+ // here so no orphan workflow/activity is created; the frontend
501
+ // shows a "check your inbox" banner and the user re-triggers
502
+ // this endpoint once verified.
503
+ const verifyCheck = await isEmailVerified(client);
504
+ if ('error' in verifyCheck) {
505
+ logger.warn('Public-chat graduation: email-verified check failed', {
506
+ sessionId, error: verifyCheck.error,
507
+ });
508
+ res.redirect(303, completeUrl(hailerOrigin, 'error', verifyCheck.error));
509
+ return;
510
+ }
511
+ if (!verifyCheck.verified) {
512
+ logger.info('Public-chat graduation: email-not-verified, returning pending', {
513
+ sessionId, hailerOrigin,
514
+ });
515
+ res.redirect(303, pendingUrl(hailerOrigin, sessionId, 'email-not-verified'));
516
+ return;
517
+ }
518
+ logger.info('Public-chat graduation: starting workflow install', {
519
+ sessionId, hailerOrigin,
520
+ });
521
+ const wsResult = await resolveWorkspaceAndTeam(client);
522
+ if ('error' in wsResult) {
523
+ res.redirect(303, completeUrl(hailerOrigin, 'error', wsResult.error));
524
+ return;
525
+ }
526
+ const { workspaceId, teamId } = wsResult;
527
+ let userId;
528
+ try {
529
+ const identity = await (0, workspace_admin_store_1.resolveAdminIdentity)(client);
530
+ userId = identity.uid;
531
+ if (identity.uid) {
532
+ (0, workspace_admin_store_1.persistAdminCredentials)(workspaceId, apiKey, identity);
533
+ }
534
+ }
535
+ catch (err) {
536
+ logger.warn('Graduation: persistAdminCredentials failed (continuing)', { err });
537
+ }
538
+ // Workflow install + activity create run synchronously so the
539
+ // success redirect can carry the bot's discussion ID forward.
540
+ // Combined they take ~1s on local Hailer (see install logs),
541
+ // which is barely perceptible on top of the popup's existing
542
+ // ~0.5s authorize spinner. Provisioning the bot's Hailer account
543
+ // and posting the self-intro is the slow part (~2s) — that stays
544
+ // background so the popup closes promptly.
545
+ const install = await (0, workflow_installer_1.ensureAgentDirectoryWorkflow)(client, workspaceId);
546
+ if (!install.success || !install.workflowId || !install.deployedPhaseId) {
547
+ logger.error('Graduation: workflow install failed', {
548
+ sessionId, workspaceId, error: install.error,
549
+ });
550
+ res.redirect(303, completeUrl(hailerOrigin, 'error', install.error || 'Workflow install failed'));
551
+ return;
552
+ }
553
+ const seedContext = buildSeedContext(sessionId, viewedSlides);
554
+ const created = await createBotActivity(client, workspaceId, teamId, install.workflowId, install.deployedPhaseId, seedContext);
555
+ if ('error' in created) {
556
+ logger.error('Graduation: activity create failed', {
557
+ sessionId, workspaceId, error: created.error,
558
+ });
559
+ res.redirect(303, completeUrl(hailerOrigin, 'error', created.error));
560
+ return;
561
+ }
562
+ logger.info('Graduation: activity created (sync)', {
563
+ sessionId, workspaceId,
564
+ workflowId: install.workflowId,
565
+ activityId: created.activityId,
566
+ installedNew: !install.alreadyExisted,
567
+ seedTurns: countSeedTurnsForLog(seedContext),
568
+ viewedSlides: viewedSlides.length,
569
+ });
570
+ // The frontend lands the visitor in the Studio app (created in the
571
+ // background task below), so we only need workspaceId for its
572
+ // switchNetwork hop. botActivityId is carried forward for debugging /
573
+ // a future deep-link; no discussion id is resolved — the bot lives in
574
+ // messenger but is no longer the landing destination.
575
+ res.redirect(303, completeUrl(hailerOrigin, 'success', undefined, {
576
+ workspaceId,
577
+ botActivityId: created.activityId,
578
+ }));
579
+ void runGraduationBackground({
580
+ sessionId,
581
+ workspaceId,
582
+ workflowId: install.workflowId,
583
+ deployedPhaseId: install.deployedPhaseId,
584
+ activityId: created.activityId,
585
+ activityName: created.activityName,
586
+ fields: created.fields,
587
+ apiKey,
588
+ userId,
589
+ viewedSlides,
590
+ });
591
+ };
592
+ }
593
+ //# sourceMappingURL=graduate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graduate.js","sourceRoot":"","sources":["../../src/public-chat/graduate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Express handler for POST /api/public-chat.
3
+ *
4
+ * Anonymous endpoint (no Hailer auth). The handler:
5
+ * 1. Rate-limits by client IP.
6
+ * 2. Validates the request payload (turns + new user message).
7
+ * 3. Calls Claude Haiku 4.5 with a cached system prompt.
8
+ * 4. Streams text deltas back to the client as Server-Sent Events.
9
+ */
10
+ import express from 'express';
11
+ export declare function createPublicChatHandler(anthropicApiKey: string): express.RequestHandler;
12
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/public-chat/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAuC9B,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CA6IvF"}