@hailer/mcp 1.2.1 → 2.0.0-beta.10

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 (768) hide show
  1. package/.claude/agents/agent-hailer-helper.md +118 -0
  2. package/.claude/commands/debug-squad.md +13 -290
  3. package/.claude/commands/publish.md +2 -2
  4. package/.claude/commands/review-squad.md +17 -139
  5. package/.claude/skills/create-and-publish-app/SKILL.md +119 -148
  6. package/.claude/skills/hailer-app-builder/SKILL.md +24 -2
  7. package/.claude/skills/hailer-ui-guide/SKILL.md +265 -0
  8. package/.env.example +50 -1
  9. package/CLAUDE.md +141 -10
  10. package/dist/app.d.ts.map +1 -1
  11. package/dist/app.js +3 -0
  12. package/dist/app.js.map +1 -1
  13. package/dist/bot/bot-manager.d.ts +9 -6
  14. package/dist/bot/bot-manager.d.ts.map +1 -1
  15. package/dist/bot/bot-manager.js +142 -31
  16. package/dist/bot/bot-manager.js.map +1 -1
  17. package/dist/bot/bot.d.ts +59 -16
  18. package/dist/bot/bot.d.ts.map +1 -1
  19. package/dist/bot/bot.js +889 -142
  20. package/dist/bot/bot.js.map +1 -1
  21. package/dist/bot/operation-logger.d.ts.map +1 -1
  22. package/dist/bot/operation-logger.js +24 -12
  23. package/dist/bot/operation-logger.js.map +1 -1
  24. package/dist/bot/services/bot-permissions.d.ts +2 -2
  25. package/dist/bot/services/bot-permissions.d.ts.map +1 -1
  26. package/dist/bot/services/bot-permissions.js +28 -9
  27. package/dist/bot/services/bot-permissions.js.map +1 -1
  28. package/dist/bot/services/conversation-manager.d.ts +23 -23
  29. package/dist/bot/services/conversation-manager.d.ts.map +1 -1
  30. package/dist/bot/services/conversation-manager.js +52 -49
  31. package/dist/bot/services/conversation-manager.js.map +1 -1
  32. package/dist/bot/services/helper-prompt.d.ts +8 -0
  33. package/dist/bot/services/helper-prompt.d.ts.map +1 -0
  34. package/dist/bot/services/helper-prompt.js +177 -0
  35. package/dist/bot/services/helper-prompt.js.map +1 -0
  36. package/dist/bot/services/message-classifier.d.ts +16 -16
  37. package/dist/bot/services/message-classifier.d.ts.map +1 -1
  38. package/dist/bot/services/message-classifier.js +55 -49
  39. package/dist/bot/services/message-classifier.js.map +1 -1
  40. package/dist/bot/services/message-formatter.d.ts +38 -38
  41. package/dist/bot/services/message-formatter.d.ts.map +1 -1
  42. package/dist/bot/services/message-formatter.js +81 -74
  43. package/dist/bot/services/message-formatter.js.map +1 -1
  44. package/dist/bot/services/permission-guard.d.ts.map +1 -1
  45. package/dist/bot/services/permission-guard.js +20 -10
  46. package/dist/bot/services/permission-guard.js.map +1 -1
  47. package/dist/bot/services/signal-router.d.ts.map +1 -1
  48. package/dist/bot/services/signal-router.js +11 -6
  49. package/dist/bot/services/signal-router.js.map +1 -1
  50. package/dist/bot/services/system-prompt.d.ts +14 -0
  51. package/dist/bot/services/system-prompt.d.ts.map +1 -1
  52. package/dist/bot/services/system-prompt.js +179 -4
  53. package/dist/bot/services/system-prompt.js.map +1 -1
  54. package/dist/bot/services/token-billing.d.ts +23 -23
  55. package/dist/bot/services/token-billing.d.ts.map +1 -1
  56. package/dist/bot/services/token-billing.js +51 -36
  57. package/dist/bot/services/token-billing.js.map +1 -1
  58. package/dist/bot/services/types.d.ts +3 -1
  59. package/dist/bot/services/types.d.ts.map +1 -1
  60. package/dist/bot/services/typing-indicator.d.ts +8 -8
  61. package/dist/bot/services/typing-indicator.d.ts.map +1 -1
  62. package/dist/bot/services/typing-indicator.js +12 -10
  63. package/dist/bot/services/typing-indicator.js.map +1 -1
  64. package/dist/bot/services/workspace-refresh.d.ts +3 -3
  65. package/dist/bot/services/workspace-refresh.d.ts.map +1 -1
  66. package/dist/bot/services/workspace-refresh.js +23 -13
  67. package/dist/bot/services/workspace-refresh.js.map +1 -1
  68. package/dist/bot/tool-executor.d.ts +10 -6
  69. package/dist/bot/tool-executor.d.ts.map +1 -1
  70. package/dist/bot/tool-executor.js +12 -6
  71. package/dist/bot/tool-executor.js.map +1 -1
  72. package/dist/bot/workspace-overview.d.ts.map +1 -1
  73. package/dist/bot/workspace-overview.js +6 -3
  74. package/dist/bot/workspace-overview.js.map +1 -1
  75. package/dist/bot-config/activity-error.d.ts +47 -0
  76. package/dist/bot-config/activity-error.d.ts.map +1 -0
  77. package/dist/bot-config/activity-error.js +67 -0
  78. package/dist/bot-config/activity-error.js.map +1 -0
  79. package/dist/bot-config/context.d.ts +4 -4
  80. package/dist/bot-config/context.d.ts.map +1 -1
  81. package/dist/bot-config/context.js +18 -14
  82. package/dist/bot-config/context.js.map +1 -1
  83. package/dist/bot-config/events.d.ts +45 -0
  84. package/dist/bot-config/events.d.ts.map +1 -0
  85. package/dist/bot-config/events.js +51 -0
  86. package/dist/bot-config/events.js.map +1 -0
  87. package/dist/bot-config/index.d.ts +3 -0
  88. package/dist/bot-config/index.d.ts.map +1 -1
  89. package/dist/bot-config/index.js +8 -1
  90. package/dist/bot-config/index.js.map +1 -1
  91. package/dist/bot-config/loader.d.ts +3 -0
  92. package/dist/bot-config/loader.d.ts.map +1 -1
  93. package/dist/bot-config/loader.js +45 -20
  94. package/dist/bot-config/loader.js.map +1 -1
  95. package/dist/bot-config/persistence.js.map +1 -1
  96. package/dist/bot-config/reconciler.d.ts +11 -0
  97. package/dist/bot-config/reconciler.d.ts.map +1 -0
  98. package/dist/bot-config/reconciler.js +121 -0
  99. package/dist/bot-config/reconciler.js.map +1 -0
  100. package/dist/bot-config/state.d.ts.map +1 -1
  101. package/dist/bot-config/state.js.map +1 -1
  102. package/dist/bot-config/types.d.ts +32 -0
  103. package/dist/bot-config/types.d.ts.map +1 -1
  104. package/dist/bot-config/webhooks.d.ts.map +1 -1
  105. package/dist/bot-config/webhooks.js.map +1 -1
  106. package/dist/bot-config/workflow-installer.d.ts +37 -0
  107. package/dist/bot-config/workflow-installer.d.ts.map +1 -0
  108. package/dist/bot-config/workflow-installer.js +346 -0
  109. package/dist/bot-config/workflow-installer.js.map +1 -0
  110. package/dist/cli.d.ts.map +1 -1
  111. package/dist/cli.js +54 -0
  112. package/dist/cli.js.map +1 -1
  113. package/dist/config.d.ts +23 -19
  114. package/dist/config.d.ts.map +1 -1
  115. package/dist/config.js +65 -27
  116. package/dist/config.js.map +1 -1
  117. package/dist/core.d.ts +6 -4
  118. package/dist/core.d.ts.map +1 -1
  119. package/dist/core.js +11 -16
  120. package/dist/core.js.map +1 -1
  121. package/dist/lib/logger.d.ts.map +1 -1
  122. package/dist/lib/logger.js +7 -4
  123. package/dist/lib/logger.js.map +1 -1
  124. package/dist/lib/request-logger.d.ts +19 -19
  125. package/dist/lib/request-logger.d.ts.map +1 -1
  126. package/dist/lib/request-logger.js +19 -19
  127. package/dist/lib/request-logger.js.map +1 -1
  128. package/dist/mcp/UserContextCache.d.ts +28 -22
  129. package/dist/mcp/UserContextCache.d.ts.map +1 -1
  130. package/dist/mcp/UserContextCache.js +23 -23
  131. package/dist/mcp/UserContextCache.js.map +1 -1
  132. package/dist/mcp/auth.js.map +1 -1
  133. package/dist/mcp/hailer-clients.d.ts +5 -4
  134. package/dist/mcp/hailer-clients.d.ts.map +1 -1
  135. package/dist/mcp/hailer-clients.js +61 -27
  136. package/dist/mcp/hailer-clients.js.map +1 -1
  137. package/dist/mcp/hailer-rpc.d.ts +40 -0
  138. package/dist/mcp/hailer-rpc.d.ts.map +1 -0
  139. package/dist/mcp/hailer-rpc.js +43 -0
  140. package/dist/mcp/hailer-rpc.js.map +1 -0
  141. package/dist/mcp/publish-auth-injector.d.ts +22 -0
  142. package/dist/mcp/publish-auth-injector.d.ts.map +1 -0
  143. package/dist/mcp/publish-auth-injector.js +100 -0
  144. package/dist/mcp/publish-auth-injector.js.map +1 -0
  145. package/dist/mcp/session-store.d.ts +16 -16
  146. package/dist/mcp/session-store.d.ts.map +1 -1
  147. package/dist/mcp/session-store.js +16 -16
  148. package/dist/mcp/session-store.js.map +1 -1
  149. package/dist/mcp/tool-profiles.d.ts +69 -0
  150. package/dist/mcp/tool-profiles.d.ts.map +1 -0
  151. package/dist/mcp/tool-profiles.js +176 -0
  152. package/dist/mcp/tool-profiles.js.map +1 -0
  153. package/dist/mcp/tool-registry.d.ts +16 -0
  154. package/dist/mcp/tool-registry.d.ts.map +1 -1
  155. package/dist/mcp/tool-registry.js +91 -39
  156. package/dist/mcp/tool-registry.js.map +1 -1
  157. package/dist/mcp/tools/activity.d.ts.map +1 -1
  158. package/dist/mcp/tools/activity.js +398 -198
  159. package/dist/mcp/tools/activity.js.map +1 -1
  160. package/dist/mcp/tools/aliases.d.ts +11 -0
  161. package/dist/mcp/tools/aliases.d.ts.map +1 -0
  162. package/dist/mcp/tools/aliases.js +176 -0
  163. package/dist/mcp/tools/aliases.js.map +1 -0
  164. package/dist/mcp/tools/app-core.d.ts +6 -8
  165. package/dist/mcp/tools/app-core.d.ts.map +1 -1
  166. package/dist/mcp/tools/app-core.js +355 -254
  167. package/dist/mcp/tools/app-core.js.map +1 -1
  168. package/dist/mcp/tools/app-marketplace.d.ts +8 -16
  169. package/dist/mcp/tools/app-marketplace.d.ts.map +1 -1
  170. package/dist/mcp/tools/app-marketplace.js +604 -930
  171. package/dist/mcp/tools/app-marketplace.js.map +1 -1
  172. package/dist/mcp/tools/app.d.ts +4 -7
  173. package/dist/mcp/tools/app.d.ts.map +1 -1
  174. package/dist/mcp/tools/app.js +4 -7
  175. package/dist/mcp/tools/app.js.map +1 -1
  176. package/dist/mcp/tools/bot-self.d.ts +21 -0
  177. package/dist/mcp/tools/bot-self.d.ts.map +1 -0
  178. package/dist/mcp/tools/bot-self.js +174 -0
  179. package/dist/mcp/tools/bot-self.js.map +1 -0
  180. package/dist/mcp/tools/calendar.d.ts +21 -0
  181. package/dist/mcp/tools/calendar.d.ts.map +1 -0
  182. package/dist/mcp/tools/calendar.js +741 -0
  183. package/dist/mcp/tools/calendar.js.map +1 -0
  184. package/dist/mcp/tools/company.d.ts.map +1 -1
  185. package/dist/mcp/tools/company.js +2 -1
  186. package/dist/mcp/tools/company.js.map +1 -1
  187. package/dist/mcp/tools/date.js.map +1 -1
  188. package/dist/mcp/tools/discussion.d.ts +23 -3
  189. package/dist/mcp/tools/discussion.d.ts.map +1 -1
  190. package/dist/mcp/tools/discussion.js +417 -534
  191. package/dist/mcp/tools/discussion.js.map +1 -1
  192. package/dist/mcp/tools/file.d.ts.map +1 -1
  193. package/dist/mcp/tools/file.js +18 -16
  194. package/dist/mcp/tools/file.js.map +1 -1
  195. package/dist/mcp/tools/index.js +4 -4
  196. package/dist/mcp/tools/index.js.map +1 -1
  197. package/dist/mcp/tools/insight.d.ts +7 -5
  198. package/dist/mcp/tools/insight.d.ts.map +1 -1
  199. package/dist/mcp/tools/insight.js +419 -477
  200. package/dist/mcp/tools/insight.js.map +1 -1
  201. package/dist/mcp/tools/user.d.ts.map +1 -1
  202. package/dist/mcp/tools/user.js +15 -13
  203. package/dist/mcp/tools/user.js.map +1 -1
  204. package/dist/mcp/tools/workflow-permissions.d.ts +2 -4
  205. package/dist/mcp/tools/workflow-permissions.d.ts.map +1 -1
  206. package/dist/mcp/tools/workflow-permissions.js +88 -97
  207. package/dist/mcp/tools/workflow-permissions.js.map +1 -1
  208. package/dist/mcp/tools/workflow.d.ts +2 -7
  209. package/dist/mcp/tools/workflow.d.ts.map +1 -1
  210. package/dist/mcp/tools/workflow.js +817 -850
  211. package/dist/mcp/tools/workflow.js.map +1 -1
  212. package/dist/mcp/utils/api-errors.d.ts.map +1 -1
  213. package/dist/mcp/utils/api-errors.js +2 -2
  214. package/dist/mcp/utils/api-errors.js.map +1 -1
  215. package/dist/mcp/utils/data-transformers.d.ts.map +1 -1
  216. package/dist/mcp/utils/data-transformers.js +8 -4
  217. package/dist/mcp/utils/data-transformers.js.map +1 -1
  218. package/dist/mcp/utils/file-upload.d.ts.map +1 -1
  219. package/dist/mcp/utils/file-upload.js +1 -1
  220. package/dist/mcp/utils/file-upload.js.map +1 -1
  221. package/dist/mcp/utils/hailer-api-client.d.ts +81 -81
  222. package/dist/mcp/utils/hailer-api-client.d.ts.map +1 -1
  223. package/dist/mcp/utils/hailer-api-client.js +103 -101
  224. package/dist/mcp/utils/hailer-api-client.js.map +1 -1
  225. package/dist/mcp/utils/index.d.ts.map +1 -1
  226. package/dist/mcp/utils/index.js.map +1 -1
  227. package/dist/mcp/utils/logger.d.ts.map +1 -1
  228. package/dist/mcp/utils/logger.js.map +1 -1
  229. package/dist/mcp/utils/response-builder.d.ts.map +1 -1
  230. package/dist/mcp/utils/response-builder.js +8 -4
  231. package/dist/mcp/utils/response-builder.js.map +1 -1
  232. package/dist/mcp/utils/role-utils.d.ts.map +1 -1
  233. package/dist/mcp/utils/role-utils.js +6 -3
  234. package/dist/mcp/utils/role-utils.js.map +1 -1
  235. package/dist/mcp/utils/tool-helpers.d.ts.map +1 -1
  236. package/dist/mcp/utils/tool-helpers.js +2 -2
  237. package/dist/mcp/utils/tool-helpers.js.map +1 -1
  238. package/dist/mcp/utils/types.d.ts +1 -1
  239. package/dist/mcp/utils/types.d.ts.map +1 -1
  240. package/dist/mcp/utils/types.js.map +1 -1
  241. package/dist/mcp/webhook-handler.d.ts +43 -8
  242. package/dist/mcp/webhook-handler.d.ts.map +1 -1
  243. package/dist/mcp/webhook-handler.js +861 -116
  244. package/dist/mcp/webhook-handler.js.map +1 -1
  245. package/dist/mcp/workspace-admin-store.d.ts +49 -0
  246. package/dist/mcp/workspace-admin-store.d.ts.map +1 -0
  247. package/dist/mcp/workspace-admin-store.js +168 -0
  248. package/dist/mcp/workspace-admin-store.js.map +1 -0
  249. package/dist/mcp/workspace-cache.d.ts +2 -2
  250. package/dist/mcp/workspace-cache.d.ts.map +1 -1
  251. package/dist/mcp/workspace-cache.js +9 -5
  252. package/dist/mcp/workspace-cache.js.map +1 -1
  253. package/dist/mcp-server.d.ts +26 -11
  254. package/dist/mcp-server.d.ts.map +1 -1
  255. package/dist/mcp-server.js +360 -36
  256. package/dist/mcp-server.js.map +1 -1
  257. package/dist/plugins/vipunen/client.d.ts +41 -41
  258. package/dist/plugins/vipunen/client.d.ts.map +1 -1
  259. package/dist/plugins/vipunen/client.js +53 -48
  260. package/dist/plugins/vipunen/client.js.map +1 -1
  261. package/dist/plugins/vipunen/index.js.map +1 -1
  262. package/dist/plugins/vipunen/tools.d.ts.map +1 -1
  263. package/dist/plugins/vipunen/tools.js +6 -3
  264. package/dist/plugins/vipunen/tools.js.map +1 -1
  265. package/dist/public-chat/graduate.d.ts +29 -0
  266. package/dist/public-chat/graduate.d.ts.map +1 -0
  267. package/dist/public-chat/graduate.js +593 -0
  268. package/dist/public-chat/graduate.js.map +1 -0
  269. package/dist/public-chat/handler.d.ts +12 -0
  270. package/dist/public-chat/handler.d.ts.map +1 -0
  271. package/dist/public-chat/handler.js +179 -0
  272. package/dist/public-chat/handler.js.map +1 -0
  273. package/dist/public-chat/index.d.ts +16 -0
  274. package/dist/public-chat/index.d.ts.map +1 -0
  275. package/dist/public-chat/index.js +74 -0
  276. package/dist/public-chat/index.js.map +1 -0
  277. package/dist/public-chat/knowledge.d.ts +3 -0
  278. package/dist/public-chat/knowledge.d.ts.map +1 -0
  279. package/dist/public-chat/knowledge.js +1341 -0
  280. package/dist/public-chat/knowledge.js.map +1 -0
  281. package/dist/public-chat/rate-limit.d.ts +16 -0
  282. package/dist/public-chat/rate-limit.d.ts.map +1 -0
  283. package/dist/public-chat/rate-limit.js +51 -0
  284. package/dist/public-chat/rate-limit.js.map +1 -0
  285. package/dist/public-chat/session-store.d.ts +41 -0
  286. package/dist/public-chat/session-store.d.ts.map +1 -0
  287. package/dist/public-chat/session-store.js +95 -0
  288. package/dist/public-chat/session-store.js.map +1 -0
  289. package/dist/public-chat/studio-prewarm.d.ts +61 -0
  290. package/dist/public-chat/studio-prewarm.d.ts.map +1 -0
  291. package/dist/public-chat/studio-prewarm.js +162 -0
  292. package/dist/public-chat/studio-prewarm.js.map +1 -0
  293. package/dist/public-chat/system-prompt.d.ts +22 -0
  294. package/dist/public-chat/system-prompt.d.ts.map +1 -0
  295. package/dist/public-chat/system-prompt.js +428 -0
  296. package/dist/public-chat/system-prompt.js.map +1 -0
  297. package/package.json +14 -7
  298. package/scripts/build-public-chat-knowledge.py +101 -0
  299. package/scripts/probe-mcp-pricing.ts +52 -0
  300. package/scripts/smoke-public-chat-live.ts +148 -0
  301. package/scripts/smoke-public-chat.ts +110 -0
  302. package/.claude/CLAUDE.md +0 -126
  303. package/.claude/commands/app-squad.md +0 -131
  304. package/.claude/commands/audit-squad.md +0 -158
  305. package/.claude/commands/cleanup-squad.md +0 -98
  306. package/.claude/commands/config-squad.md +0 -106
  307. package/.claude/commands/crud-squad.md +0 -87
  308. package/.claude/commands/data-squad.md +0 -97
  309. package/.claude/commands/doc-squad.md +0 -65
  310. package/.claude/commands/help.md +0 -29
  311. package/.claude/commands/help:agents.md +0 -182
  312. package/.claude/commands/help:commands.md +0 -78
  313. package/.claude/commands/help:faq.md +0 -79
  314. package/.claude/commands/help:plugins.md +0 -50
  315. package/.claude/commands/help:skills.md +0 -87
  316. package/.claude/commands/help:tools.md +0 -75
  317. package/.claude/commands/hotfix-squad.md +0 -112
  318. package/.claude/commands/integration-squad.md +0 -82
  319. package/.claude/commands/janitor-squad.md +0 -167
  320. package/.claude/commands/onboard-squad.md +0 -130
  321. package/.claude/commands/swarm.md +0 -210
  322. package/.claude/commands/tool-builder.md +0 -39
  323. package/.claude/skills/publish-hailer-app/SKILL.md +0 -280
  324. package/dist/CLAUDE.md +0 -370
  325. package/dist/agents/bot-manager.d.ts +0 -48
  326. package/dist/agents/bot-manager.d.ts.map +0 -1
  327. package/dist/agents/bot-manager.js +0 -254
  328. package/dist/agents/bot-manager.js.map +0 -1
  329. package/dist/agents/bug-fixer/ai.d.ts +0 -80
  330. package/dist/agents/bug-fixer/ai.d.ts.map +0 -1
  331. package/dist/agents/bug-fixer/ai.js +0 -466
  332. package/dist/agents/bug-fixer/ai.js.map +0 -1
  333. package/dist/agents/bug-fixer/bot.d.ts +0 -92
  334. package/dist/agents/bug-fixer/bot.d.ts.map +0 -1
  335. package/dist/agents/bug-fixer/bot.js +0 -687
  336. package/dist/agents/bug-fixer/bot.js.map +0 -1
  337. package/dist/agents/bug-fixer/config.d.ts +0 -21
  338. package/dist/agents/bug-fixer/config.d.ts.map +0 -1
  339. package/dist/agents/bug-fixer/config.js +0 -218
  340. package/dist/agents/bug-fixer/config.js.map +0 -1
  341. package/dist/agents/bug-fixer/files.d.ts +0 -67
  342. package/dist/agents/bug-fixer/files.d.ts.map +0 -1
  343. package/dist/agents/bug-fixer/files.js +0 -386
  344. package/dist/agents/bug-fixer/files.js.map +0 -1
  345. package/dist/agents/bug-fixer/git.d.ts +0 -48
  346. package/dist/agents/bug-fixer/git.d.ts.map +0 -1
  347. package/dist/agents/bug-fixer/git.js +0 -298
  348. package/dist/agents/bug-fixer/git.js.map +0 -1
  349. package/dist/agents/bug-fixer/index.d.ts +0 -103
  350. package/dist/agents/bug-fixer/index.d.ts.map +0 -1
  351. package/dist/agents/bug-fixer/index.js +0 -262
  352. package/dist/agents/bug-fixer/index.js.map +0 -1
  353. package/dist/agents/bug-fixer/lsp.d.ts +0 -113
  354. package/dist/agents/bug-fixer/lsp.d.ts.map +0 -1
  355. package/dist/agents/bug-fixer/lsp.js +0 -485
  356. package/dist/agents/bug-fixer/lsp.js.map +0 -1
  357. package/dist/agents/bug-fixer/monitor.d.ts +0 -123
  358. package/dist/agents/bug-fixer/monitor.d.ts.map +0 -1
  359. package/dist/agents/bug-fixer/monitor.js +0 -629
  360. package/dist/agents/bug-fixer/monitor.js.map +0 -1
  361. package/dist/agents/bug-fixer/prompt.d.ts +0 -5
  362. package/dist/agents/bug-fixer/prompt.d.ts.map +0 -1
  363. package/dist/agents/bug-fixer/prompt.js +0 -94
  364. package/dist/agents/bug-fixer/prompt.js.map +0 -1
  365. package/dist/agents/bug-fixer/registries/pending-classification.d.ts +0 -28
  366. package/dist/agents/bug-fixer/registries/pending-classification.d.ts.map +0 -1
  367. package/dist/agents/bug-fixer/registries/pending-classification.js +0 -50
  368. package/dist/agents/bug-fixer/registries/pending-classification.js.map +0 -1
  369. package/dist/agents/bug-fixer/registries/pending-fix.d.ts +0 -33
  370. package/dist/agents/bug-fixer/registries/pending-fix.d.ts.map +0 -1
  371. package/dist/agents/bug-fixer/registries/pending-fix.js +0 -64
  372. package/dist/agents/bug-fixer/registries/pending-fix.js.map +0 -1
  373. package/dist/agents/bug-fixer/registries/pending.d.ts +0 -27
  374. package/dist/agents/bug-fixer/registries/pending.d.ts.map +0 -1
  375. package/dist/agents/bug-fixer/registries/pending.js +0 -49
  376. package/dist/agents/bug-fixer/registries/pending.js.map +0 -1
  377. package/dist/agents/bug-fixer/specialist-daemon.d.ts +0 -88
  378. package/dist/agents/bug-fixer/specialist-daemon.d.ts.map +0 -1
  379. package/dist/agents/bug-fixer/specialist-daemon.js +0 -431
  380. package/dist/agents/bug-fixer/specialist-daemon.js.map +0 -1
  381. package/dist/agents/bug-fixer/specialist.d.ts +0 -47
  382. package/dist/agents/bug-fixer/specialist.d.ts.map +0 -1
  383. package/dist/agents/bug-fixer/specialist.js +0 -327
  384. package/dist/agents/bug-fixer/specialist.js.map +0 -1
  385. package/dist/agents/bug-fixer/types.d.ts +0 -123
  386. package/dist/agents/bug-fixer/types.d.ts.map +0 -1
  387. package/dist/agents/bug-fixer/types.js +0 -9
  388. package/dist/agents/bug-fixer/types.js.map +0 -1
  389. package/dist/agents/factory.d.ts +0 -172
  390. package/dist/agents/factory.d.ts.map +0 -1
  391. package/dist/agents/factory.js +0 -706
  392. package/dist/agents/factory.js.map +0 -1
  393. package/dist/agents/hailer-expert/index.d.ts +0 -8
  394. package/dist/agents/hailer-expert/index.d.ts.map +0 -1
  395. package/dist/agents/hailer-expert/index.js +0 -14
  396. package/dist/agents/hailer-expert/index.js.map +0 -1
  397. package/dist/agents/hal/daemon.d.ts +0 -174
  398. package/dist/agents/hal/daemon.d.ts.map +0 -1
  399. package/dist/agents/hal/daemon.js +0 -1385
  400. package/dist/agents/hal/daemon.js.map +0 -1
  401. package/dist/agents/hal/definitions.d.ts +0 -42
  402. package/dist/agents/hal/definitions.d.ts.map +0 -1
  403. package/dist/agents/hal/definitions.js +0 -300
  404. package/dist/agents/hal/definitions.js.map +0 -1
  405. package/dist/agents/hal/index.d.ts +0 -3
  406. package/dist/agents/hal/index.d.ts.map +0 -1
  407. package/dist/agents/hal/index.js +0 -8
  408. package/dist/agents/hal/index.js.map +0 -1
  409. package/dist/agents/index.d.ts +0 -18
  410. package/dist/agents/index.d.ts.map +0 -1
  411. package/dist/agents/index.js +0 -48
  412. package/dist/agents/index.js.map +0 -1
  413. package/dist/agents/shared/base.d.ts +0 -253
  414. package/dist/agents/shared/base.d.ts.map +0 -1
  415. package/dist/agents/shared/base.js +0 -1122
  416. package/dist/agents/shared/base.js.map +0 -1
  417. package/dist/agents/shared/schemas/action-schema.d.ts +0 -62
  418. package/dist/agents/shared/schemas/action-schema.d.ts.map +0 -1
  419. package/dist/agents/shared/schemas/action-schema.js +0 -483
  420. package/dist/agents/shared/schemas/action-schema.js.map +0 -1
  421. package/dist/agents/shared/services/agent-registry.d.ts +0 -108
  422. package/dist/agents/shared/services/agent-registry.d.ts.map +0 -1
  423. package/dist/agents/shared/services/agent-registry.js +0 -469
  424. package/dist/agents/shared/services/agent-registry.js.map +0 -1
  425. package/dist/agents/shared/services/conversation-manager.d.ts +0 -57
  426. package/dist/agents/shared/services/conversation-manager.d.ts.map +0 -1
  427. package/dist/agents/shared/services/conversation-manager.js +0 -168
  428. package/dist/agents/shared/services/conversation-manager.js.map +0 -1
  429. package/dist/agents/shared/services/mcp-client.d.ts +0 -56
  430. package/dist/agents/shared/services/mcp-client.d.ts.map +0 -1
  431. package/dist/agents/shared/services/mcp-client.js +0 -124
  432. package/dist/agents/shared/services/mcp-client.js.map +0 -1
  433. package/dist/agents/shared/services/message-classifier.d.ts +0 -37
  434. package/dist/agents/shared/services/message-classifier.d.ts.map +0 -1
  435. package/dist/agents/shared/services/message-classifier.js +0 -203
  436. package/dist/agents/shared/services/message-classifier.js.map +0 -1
  437. package/dist/agents/shared/services/message-formatter.d.ts +0 -89
  438. package/dist/agents/shared/services/message-formatter.d.ts.map +0 -1
  439. package/dist/agents/shared/services/message-formatter.js +0 -390
  440. package/dist/agents/shared/services/message-formatter.js.map +0 -1
  441. package/dist/agents/shared/services/session-logger.d.ts +0 -162
  442. package/dist/agents/shared/services/session-logger.d.ts.map +0 -1
  443. package/dist/agents/shared/services/session-logger.js +0 -724
  444. package/dist/agents/shared/services/session-logger.js.map +0 -1
  445. package/dist/agents/shared/services/structured-output-executor.d.ts +0 -88
  446. package/dist/agents/shared/services/structured-output-executor.d.ts.map +0 -1
  447. package/dist/agents/shared/services/structured-output-executor.js +0 -296
  448. package/dist/agents/shared/services/structured-output-executor.js.map +0 -1
  449. package/dist/agents/shared/services/token-billing.d.ts +0 -72
  450. package/dist/agents/shared/services/token-billing.d.ts.map +0 -1
  451. package/dist/agents/shared/services/token-billing.js +0 -198
  452. package/dist/agents/shared/services/token-billing.js.map +0 -1
  453. package/dist/agents/shared/services/tool-executor.d.ts +0 -43
  454. package/dist/agents/shared/services/tool-executor.d.ts.map +0 -1
  455. package/dist/agents/shared/services/tool-executor.js +0 -175
  456. package/dist/agents/shared/services/tool-executor.js.map +0 -1
  457. package/dist/agents/shared/services/typing-indicator.d.ts +0 -24
  458. package/dist/agents/shared/services/typing-indicator.d.ts.map +0 -1
  459. package/dist/agents/shared/services/typing-indicator.js +0 -54
  460. package/dist/agents/shared/services/typing-indicator.js.map +0 -1
  461. package/dist/agents/shared/services/workspace-schema-cache.d.ts +0 -122
  462. package/dist/agents/shared/services/workspace-schema-cache.d.ts.map +0 -1
  463. package/dist/agents/shared/services/workspace-schema-cache.js +0 -507
  464. package/dist/agents/shared/services/workspace-schema-cache.js.map +0 -1
  465. package/dist/agents/shared/specialist.d.ts +0 -91
  466. package/dist/agents/shared/specialist.d.ts.map +0 -1
  467. package/dist/agents/shared/specialist.js +0 -399
  468. package/dist/agents/shared/specialist.js.map +0 -1
  469. package/dist/agents/shared/tool-schema-loader.d.ts +0 -65
  470. package/dist/agents/shared/tool-schema-loader.d.ts.map +0 -1
  471. package/dist/agents/shared/tool-schema-loader.js +0 -238
  472. package/dist/agents/shared/tool-schema-loader.js.map +0 -1
  473. package/dist/agents/shared/types.d.ts +0 -190
  474. package/dist/agents/shared/types.d.ts.map +0 -1
  475. package/dist/agents/shared/types.js +0 -13
  476. package/dist/agents/shared/types.js.map +0 -1
  477. package/dist/bot/bot-config.d.ts +0 -37
  478. package/dist/bot/bot-config.d.ts.map +0 -1
  479. package/dist/bot/bot-config.js +0 -219
  480. package/dist/bot/bot-config.js.map +0 -1
  481. package/dist/bot/services/__tests__/permission-guard.test.d.ts +0 -2
  482. package/dist/bot/services/__tests__/permission-guard.test.d.ts.map +0 -1
  483. package/dist/bot/services/__tests__/permission-guard.test.js +0 -357
  484. package/dist/bot/services/__tests__/permission-guard.test.js.map +0 -1
  485. package/dist/bot/services/session-logger.d.ts +0 -162
  486. package/dist/bot/services/session-logger.d.ts.map +0 -1
  487. package/dist/bot/services/session-logger.js +0 -724
  488. package/dist/bot/services/session-logger.js.map +0 -1
  489. package/dist/bot/services/workspace-schema-cache.d.ts +0 -122
  490. package/dist/bot/services/workspace-schema-cache.d.ts.map +0 -1
  491. package/dist/bot/services/workspace-schema-cache.js +0 -506
  492. package/dist/bot/services/workspace-schema-cache.js.map +0 -1
  493. package/dist/bot-config/tools.d.ts +0 -28
  494. package/dist/bot-config/tools.d.ts.map +0 -1
  495. package/dist/bot-config/tools.js +0 -279
  496. package/dist/bot-config/tools.js.map +0 -1
  497. package/dist/client/agents/base.d.ts +0 -207
  498. package/dist/client/agents/base.d.ts.map +0 -1
  499. package/dist/client/agents/base.js +0 -744
  500. package/dist/client/agents/base.js.map +0 -1
  501. package/dist/client/agents/definitions.d.ts +0 -53
  502. package/dist/client/agents/definitions.d.ts.map +0 -1
  503. package/dist/client/agents/definitions.js +0 -263
  504. package/dist/client/agents/definitions.js.map +0 -1
  505. package/dist/client/agents/orchestrator.d.ts +0 -141
  506. package/dist/client/agents/orchestrator.d.ts.map +0 -1
  507. package/dist/client/agents/orchestrator.js +0 -1062
  508. package/dist/client/agents/orchestrator.js.map +0 -1
  509. package/dist/client/agents/specialist.d.ts +0 -86
  510. package/dist/client/agents/specialist.d.ts.map +0 -1
  511. package/dist/client/agents/specialist.js +0 -340
  512. package/dist/client/agents/specialist.js.map +0 -1
  513. package/dist/client/bot-entrypoint.d.ts +0 -7
  514. package/dist/client/bot-entrypoint.d.ts.map +0 -1
  515. package/dist/client/bot-entrypoint.js +0 -103
  516. package/dist/client/bot-entrypoint.js.map +0 -1
  517. package/dist/client/bot-manager.d.ts +0 -44
  518. package/dist/client/bot-manager.d.ts.map +0 -1
  519. package/dist/client/bot-manager.js +0 -173
  520. package/dist/client/bot-manager.js.map +0 -1
  521. package/dist/client/bot-runner.d.ts +0 -35
  522. package/dist/client/bot-runner.d.ts.map +0 -1
  523. package/dist/client/bot-runner.js +0 -188
  524. package/dist/client/bot-runner.js.map +0 -1
  525. package/dist/client/chat-agent-daemon.d.ts +0 -464
  526. package/dist/client/chat-agent-daemon.d.ts.map +0 -1
  527. package/dist/client/chat-agent-daemon.js +0 -1774
  528. package/dist/client/chat-agent-daemon.js.map +0 -1
  529. package/dist/client/daemon-factory.d.ts +0 -106
  530. package/dist/client/daemon-factory.d.ts.map +0 -1
  531. package/dist/client/daemon-factory.js +0 -301
  532. package/dist/client/daemon-factory.js.map +0 -1
  533. package/dist/client/factory.d.ts +0 -111
  534. package/dist/client/factory.d.ts.map +0 -1
  535. package/dist/client/factory.js +0 -314
  536. package/dist/client/factory.js.map +0 -1
  537. package/dist/client/index.d.ts +0 -17
  538. package/dist/client/index.d.ts.map +0 -1
  539. package/dist/client/index.js +0 -38
  540. package/dist/client/index.js.map +0 -1
  541. package/dist/client/multi-bot-manager.d.ts +0 -42
  542. package/dist/client/multi-bot-manager.d.ts.map +0 -1
  543. package/dist/client/multi-bot-manager.js +0 -161
  544. package/dist/client/multi-bot-manager.js.map +0 -1
  545. package/dist/client/orchestrator-daemon.d.ts +0 -87
  546. package/dist/client/orchestrator-daemon.d.ts.map +0 -1
  547. package/dist/client/orchestrator-daemon.js +0 -444
  548. package/dist/client/orchestrator-daemon.js.map +0 -1
  549. package/dist/client/server.d.ts +0 -8
  550. package/dist/client/server.d.ts.map +0 -1
  551. package/dist/client/server.js +0 -251
  552. package/dist/client/server.js.map +0 -1
  553. package/dist/client/services/agent-registry.d.ts +0 -108
  554. package/dist/client/services/agent-registry.d.ts.map +0 -1
  555. package/dist/client/services/agent-registry.js +0 -630
  556. package/dist/client/services/agent-registry.js.map +0 -1
  557. package/dist/client/services/conversation-manager.d.ts +0 -50
  558. package/dist/client/services/conversation-manager.d.ts.map +0 -1
  559. package/dist/client/services/conversation-manager.js +0 -136
  560. package/dist/client/services/conversation-manager.js.map +0 -1
  561. package/dist/client/services/mcp-client.d.ts +0 -48
  562. package/dist/client/services/mcp-client.d.ts.map +0 -1
  563. package/dist/client/services/mcp-client.js +0 -105
  564. package/dist/client/services/mcp-client.js.map +0 -1
  565. package/dist/client/services/message-classifier.d.ts +0 -37
  566. package/dist/client/services/message-classifier.d.ts.map +0 -1
  567. package/dist/client/services/message-classifier.js +0 -187
  568. package/dist/client/services/message-classifier.js.map +0 -1
  569. package/dist/client/services/message-formatter.d.ts +0 -84
  570. package/dist/client/services/message-formatter.d.ts.map +0 -1
  571. package/dist/client/services/message-formatter.js +0 -353
  572. package/dist/client/services/message-formatter.js.map +0 -1
  573. package/dist/client/services/session-logger.d.ts +0 -106
  574. package/dist/client/services/session-logger.d.ts.map +0 -1
  575. package/dist/client/services/session-logger.js +0 -446
  576. package/dist/client/services/session-logger.js.map +0 -1
  577. package/dist/client/services/tool-executor.d.ts +0 -41
  578. package/dist/client/services/tool-executor.d.ts.map +0 -1
  579. package/dist/client/services/tool-executor.js +0 -169
  580. package/dist/client/services/tool-executor.js.map +0 -1
  581. package/dist/client/services/workspace-schema-cache.d.ts +0 -149
  582. package/dist/client/services/workspace-schema-cache.d.ts.map +0 -1
  583. package/dist/client/services/workspace-schema-cache.js +0 -732
  584. package/dist/client/services/workspace-schema-cache.js.map +0 -1
  585. package/dist/client/specialist-daemon.d.ts +0 -77
  586. package/dist/client/specialist-daemon.d.ts.map +0 -1
  587. package/dist/client/specialist-daemon.js +0 -197
  588. package/dist/client/specialist-daemon.js.map +0 -1
  589. package/dist/client/specialists.d.ts +0 -53
  590. package/dist/client/specialists.d.ts.map +0 -1
  591. package/dist/client/specialists.js +0 -178
  592. package/dist/client/specialists.js.map +0 -1
  593. package/dist/client/tool-schema-loader.d.ts +0 -62
  594. package/dist/client/tool-schema-loader.d.ts.map +0 -1
  595. package/dist/client/tool-schema-loader.js +0 -232
  596. package/dist/client/tool-schema-loader.js.map +0 -1
  597. package/dist/client/types.d.ts +0 -327
  598. package/dist/client/types.d.ts.map +0 -1
  599. package/dist/client/types.js +0 -121
  600. package/dist/client/types.js.map +0 -1
  601. package/dist/commands/seed-config.d.ts +0 -9
  602. package/dist/commands/seed-config.d.ts.map +0 -1
  603. package/dist/commands/seed-config.js +0 -377
  604. package/dist/commands/seed-config.js.map +0 -1
  605. package/dist/commands/setup.d.ts +0 -11
  606. package/dist/commands/setup.d.ts.map +0 -1
  607. package/dist/commands/setup.js +0 -320
  608. package/dist/commands/setup.js.map +0 -1
  609. package/dist/lib/discussion-lock.d.ts +0 -42
  610. package/dist/lib/discussion-lock.d.ts.map +0 -1
  611. package/dist/lib/discussion-lock.js +0 -110
  612. package/dist/lib/discussion-lock.js.map +0 -1
  613. package/dist/mcp/signal-handler.d.ts +0 -82
  614. package/dist/mcp/signal-handler.d.ts.map +0 -1
  615. package/dist/mcp/signal-handler.js +0 -406
  616. package/dist/mcp/signal-handler.js.map +0 -1
  617. package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts +0 -2
  618. package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts.map +0 -1
  619. package/dist/mcp/tools/__tests__/discussion-forward.test.js +0 -218
  620. package/dist/mcp/tools/__tests__/discussion-forward.test.js.map +0 -1
  621. package/dist/mcp/tools/app-member.d.ts +0 -14
  622. package/dist/mcp/tools/app-member.d.ts.map +0 -1
  623. package/dist/mcp/tools/app-member.js +0 -195
  624. package/dist/mcp/tools/app-member.js.map +0 -1
  625. package/dist/mcp/tools/app-scaffold.d.ts +0 -14
  626. package/dist/mcp/tools/app-scaffold.d.ts.map +0 -1
  627. package/dist/mcp/tools/app-scaffold.js +0 -581
  628. package/dist/mcp/tools/app-scaffold.js.map +0 -1
  629. package/dist/mcp/tools/bot-config/constants.d.ts +0 -23
  630. package/dist/mcp/tools/bot-config/constants.d.ts.map +0 -1
  631. package/dist/mcp/tools/bot-config/constants.js +0 -94
  632. package/dist/mcp/tools/bot-config/constants.js.map +0 -1
  633. package/dist/mcp/tools/bot-config/core.d.ts +0 -253
  634. package/dist/mcp/tools/bot-config/core.d.ts.map +0 -1
  635. package/dist/mcp/tools/bot-config/core.js +0 -2456
  636. package/dist/mcp/tools/bot-config/core.js.map +0 -1
  637. package/dist/mcp/tools/bot-config/index.d.ts +0 -10
  638. package/dist/mcp/tools/bot-config/index.d.ts.map +0 -1
  639. package/dist/mcp/tools/bot-config/index.js +0 -59
  640. package/dist/mcp/tools/bot-config/index.js.map +0 -1
  641. package/dist/mcp/tools/bot-config/tools.d.ts +0 -7
  642. package/dist/mcp/tools/bot-config/tools.d.ts.map +0 -1
  643. package/dist/mcp/tools/bot-config/tools.js +0 -15
  644. package/dist/mcp/tools/bot-config/tools.js.map +0 -1
  645. package/dist/mcp/tools/bot-config/types.d.ts +0 -50
  646. package/dist/mcp/tools/bot-config/types.d.ts.map +0 -1
  647. package/dist/mcp/tools/bot-config/types.js +0 -6
  648. package/dist/mcp/tools/bot-config/types.js.map +0 -1
  649. package/dist/mcp/tools/bug-fixer-tools.d.ts +0 -45
  650. package/dist/mcp/tools/bug-fixer-tools.d.ts.map +0 -1
  651. package/dist/mcp/tools/bug-fixer-tools.js +0 -1096
  652. package/dist/mcp/tools/bug-fixer-tools.js.map +0 -1
  653. package/dist/mcp/tools/document.d.ts +0 -11
  654. package/dist/mcp/tools/document.d.ts.map +0 -1
  655. package/dist/mcp/tools/document.js +0 -741
  656. package/dist/mcp/tools/document.js.map +0 -1
  657. package/dist/mcp/tools/investigate.d.ts +0 -9
  658. package/dist/mcp/tools/investigate.d.ts.map +0 -1
  659. package/dist/mcp/tools/investigate.js +0 -254
  660. package/dist/mcp/tools/investigate.js.map +0 -1
  661. package/dist/mcp/utils/pagination.d.ts +0 -40
  662. package/dist/mcp/utils/pagination.d.ts.map +0 -1
  663. package/dist/mcp/utils/pagination.js +0 -55
  664. package/dist/mcp/utils/pagination.js.map +0 -1
  665. package/dist/modules/bug-reports/bug-config.d.ts +0 -25
  666. package/dist/modules/bug-reports/bug-config.d.ts.map +0 -1
  667. package/dist/modules/bug-reports/bug-config.js +0 -187
  668. package/dist/modules/bug-reports/bug-config.js.map +0 -1
  669. package/dist/modules/bug-reports/bug-monitor.d.ts +0 -108
  670. package/dist/modules/bug-reports/bug-monitor.d.ts.map +0 -1
  671. package/dist/modules/bug-reports/bug-monitor.js +0 -510
  672. package/dist/modules/bug-reports/bug-monitor.js.map +0 -1
  673. package/dist/modules/bug-reports/giuseppe-agent.d.ts +0 -58
  674. package/dist/modules/bug-reports/giuseppe-agent.d.ts.map +0 -1
  675. package/dist/modules/bug-reports/giuseppe-agent.js +0 -467
  676. package/dist/modules/bug-reports/giuseppe-agent.js.map +0 -1
  677. package/dist/modules/bug-reports/giuseppe-ai.d.ts +0 -83
  678. package/dist/modules/bug-reports/giuseppe-ai.d.ts.map +0 -1
  679. package/dist/modules/bug-reports/giuseppe-ai.js +0 -466
  680. package/dist/modules/bug-reports/giuseppe-ai.js.map +0 -1
  681. package/dist/modules/bug-reports/giuseppe-bot.d.ts +0 -110
  682. package/dist/modules/bug-reports/giuseppe-bot.d.ts.map +0 -1
  683. package/dist/modules/bug-reports/giuseppe-bot.js +0 -804
  684. package/dist/modules/bug-reports/giuseppe-bot.js.map +0 -1
  685. package/dist/modules/bug-reports/giuseppe-daemon.d.ts +0 -80
  686. package/dist/modules/bug-reports/giuseppe-daemon.d.ts.map +0 -1
  687. package/dist/modules/bug-reports/giuseppe-daemon.js +0 -617
  688. package/dist/modules/bug-reports/giuseppe-daemon.js.map +0 -1
  689. package/dist/modules/bug-reports/giuseppe-files.d.ts +0 -64
  690. package/dist/modules/bug-reports/giuseppe-files.d.ts.map +0 -1
  691. package/dist/modules/bug-reports/giuseppe-files.js +0 -375
  692. package/dist/modules/bug-reports/giuseppe-files.js.map +0 -1
  693. package/dist/modules/bug-reports/giuseppe-git.d.ts +0 -48
  694. package/dist/modules/bug-reports/giuseppe-git.d.ts.map +0 -1
  695. package/dist/modules/bug-reports/giuseppe-git.js +0 -298
  696. package/dist/modules/bug-reports/giuseppe-git.js.map +0 -1
  697. package/dist/modules/bug-reports/giuseppe-lsp.d.ts +0 -113
  698. package/dist/modules/bug-reports/giuseppe-lsp.d.ts.map +0 -1
  699. package/dist/modules/bug-reports/giuseppe-lsp.js +0 -485
  700. package/dist/modules/bug-reports/giuseppe-lsp.js.map +0 -1
  701. package/dist/modules/bug-reports/giuseppe-prompt.d.ts +0 -5
  702. package/dist/modules/bug-reports/giuseppe-prompt.d.ts.map +0 -1
  703. package/dist/modules/bug-reports/giuseppe-prompt.js +0 -94
  704. package/dist/modules/bug-reports/giuseppe-prompt.js.map +0 -1
  705. package/dist/modules/bug-reports/index.d.ts +0 -77
  706. package/dist/modules/bug-reports/index.d.ts.map +0 -1
  707. package/dist/modules/bug-reports/index.js +0 -215
  708. package/dist/modules/bug-reports/index.js.map +0 -1
  709. package/dist/modules/bug-reports/pending-classification-registry.d.ts +0 -28
  710. package/dist/modules/bug-reports/pending-classification-registry.d.ts.map +0 -1
  711. package/dist/modules/bug-reports/pending-classification-registry.js +0 -50
  712. package/dist/modules/bug-reports/pending-classification-registry.js.map +0 -1
  713. package/dist/modules/bug-reports/pending-fix-registry.d.ts +0 -30
  714. package/dist/modules/bug-reports/pending-fix-registry.d.ts.map +0 -1
  715. package/dist/modules/bug-reports/pending-fix-registry.js +0 -42
  716. package/dist/modules/bug-reports/pending-fix-registry.js.map +0 -1
  717. package/dist/modules/bug-reports/pending-registry.d.ts +0 -27
  718. package/dist/modules/bug-reports/pending-registry.d.ts.map +0 -1
  719. package/dist/modules/bug-reports/pending-registry.js +0 -49
  720. package/dist/modules/bug-reports/pending-registry.js.map +0 -1
  721. package/dist/modules/bug-reports/types.d.ts +0 -123
  722. package/dist/modules/bug-reports/types.d.ts.map +0 -1
  723. package/dist/modules/bug-reports/types.js +0 -9
  724. package/dist/modules/bug-reports/types.js.map +0 -1
  725. package/dist/plugins/bug-fixer/index.d.ts +0 -2
  726. package/dist/plugins/bug-fixer/index.d.ts.map +0 -1
  727. package/dist/plugins/bug-fixer/index.js +0 -18
  728. package/dist/plugins/bug-fixer/index.js.map +0 -1
  729. package/dist/plugins/bug-fixer/tools.d.ts +0 -45
  730. package/dist/plugins/bug-fixer/tools.d.ts.map +0 -1
  731. package/dist/plugins/bug-fixer/tools.js +0 -1096
  732. package/dist/plugins/bug-fixer/tools.js.map +0 -1
  733. package/dist/plugins/vipunen/__tests__/tools.test.d.ts +0 -10
  734. package/dist/plugins/vipunen/__tests__/tools.test.d.ts.map +0 -1
  735. package/dist/plugins/vipunen/__tests__/tools.test.js +0 -646
  736. package/dist/plugins/vipunen/__tests__/tools.test.js.map +0 -1
  737. package/dist/routes/agents.d.ts +0 -44
  738. package/dist/routes/agents.d.ts.map +0 -1
  739. package/dist/routes/agents.js +0 -311
  740. package/dist/routes/agents.js.map +0 -1
  741. package/dist/services/agent-credential-store.d.ts +0 -73
  742. package/dist/services/agent-credential-store.d.ts.map +0 -1
  743. package/dist/services/agent-credential-store.js +0 -212
  744. package/dist/services/agent-credential-store.js.map +0 -1
  745. package/dist/stdio-server.d.ts +0 -14
  746. package/dist/stdio-server.d.ts.map +0 -1
  747. package/dist/stdio-server.js +0 -101
  748. package/dist/stdio-server.js.map +0 -1
  749. package/dist/workspace/context.d.ts +0 -148
  750. package/dist/workspace/context.d.ts.map +0 -1
  751. package/dist/workspace/context.js +0 -339
  752. package/dist/workspace/context.js.map +0 -1
  753. package/dist/workspace/credentials.d.ts +0 -55
  754. package/dist/workspace/credentials.d.ts.map +0 -1
  755. package/dist/workspace/credentials.js +0 -239
  756. package/dist/workspace/credentials.js.map +0 -1
  757. package/dist/workspace/index.d.ts +0 -21
  758. package/dist/workspace/index.d.ts.map +0 -1
  759. package/dist/workspace/index.js +0 -45
  760. package/dist/workspace/index.js.map +0 -1
  761. package/dist/workspace/loader.d.ts +0 -27
  762. package/dist/workspace/loader.d.ts.map +0 -1
  763. package/dist/workspace/loader.js +0 -222
  764. package/dist/workspace/loader.js.map +0 -1
  765. package/dist/workspace/schema.d.ts +0 -37
  766. package/dist/workspace/schema.d.ts.map +0 -1
  767. package/dist/workspace/schema.js +0 -192
  768. 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"}