@hailer/mcp 1.1.15 → 1.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/dist/agents/bot-manager.d.ts +48 -0
  2. package/dist/agents/bot-manager.d.ts.map +1 -0
  3. package/dist/agents/bot-manager.js +254 -0
  4. package/dist/agents/bot-manager.js.map +1 -0
  5. package/dist/agents/bug-fixer/ai.d.ts +80 -0
  6. package/dist/agents/bug-fixer/ai.d.ts.map +1 -0
  7. package/dist/agents/bug-fixer/ai.js +466 -0
  8. package/dist/agents/bug-fixer/ai.js.map +1 -0
  9. package/dist/agents/bug-fixer/bot.d.ts +92 -0
  10. package/dist/agents/bug-fixer/bot.d.ts.map +1 -0
  11. package/dist/agents/bug-fixer/bot.js +687 -0
  12. package/dist/agents/bug-fixer/bot.js.map +1 -0
  13. package/dist/agents/bug-fixer/config.d.ts +21 -0
  14. package/dist/agents/bug-fixer/config.d.ts.map +1 -0
  15. package/dist/agents/bug-fixer/config.js +218 -0
  16. package/dist/agents/bug-fixer/config.js.map +1 -0
  17. package/dist/agents/bug-fixer/files.d.ts +67 -0
  18. package/dist/agents/bug-fixer/files.d.ts.map +1 -0
  19. package/dist/agents/bug-fixer/files.js +386 -0
  20. package/dist/agents/bug-fixer/files.js.map +1 -0
  21. package/dist/agents/bug-fixer/git.d.ts +48 -0
  22. package/dist/agents/bug-fixer/git.d.ts.map +1 -0
  23. package/dist/agents/bug-fixer/git.js +298 -0
  24. package/dist/agents/bug-fixer/git.js.map +1 -0
  25. package/dist/agents/bug-fixer/index.d.ts +103 -0
  26. package/dist/agents/bug-fixer/index.d.ts.map +1 -0
  27. package/dist/agents/bug-fixer/index.js +262 -0
  28. package/dist/agents/bug-fixer/index.js.map +1 -0
  29. package/dist/agents/bug-fixer/lsp.d.ts +113 -0
  30. package/dist/agents/bug-fixer/lsp.d.ts.map +1 -0
  31. package/dist/agents/bug-fixer/lsp.js +485 -0
  32. package/dist/agents/bug-fixer/lsp.js.map +1 -0
  33. package/dist/agents/bug-fixer/monitor.d.ts +123 -0
  34. package/dist/agents/bug-fixer/monitor.d.ts.map +1 -0
  35. package/dist/agents/bug-fixer/monitor.js +629 -0
  36. package/dist/agents/bug-fixer/monitor.js.map +1 -0
  37. package/dist/agents/bug-fixer/prompt.d.ts +5 -0
  38. package/dist/agents/bug-fixer/prompt.d.ts.map +1 -0
  39. package/dist/agents/bug-fixer/prompt.js +94 -0
  40. package/dist/agents/bug-fixer/prompt.js.map +1 -0
  41. package/dist/agents/bug-fixer/registries/pending-classification.d.ts +28 -0
  42. package/dist/agents/bug-fixer/registries/pending-classification.d.ts.map +1 -0
  43. package/dist/agents/bug-fixer/registries/pending-classification.js +50 -0
  44. package/dist/agents/bug-fixer/registries/pending-classification.js.map +1 -0
  45. package/dist/agents/bug-fixer/registries/pending-fix.d.ts +33 -0
  46. package/dist/agents/bug-fixer/registries/pending-fix.d.ts.map +1 -0
  47. package/dist/agents/bug-fixer/registries/pending-fix.js +64 -0
  48. package/dist/agents/bug-fixer/registries/pending-fix.js.map +1 -0
  49. package/dist/agents/bug-fixer/registries/pending.d.ts +27 -0
  50. package/dist/agents/bug-fixer/registries/pending.d.ts.map +1 -0
  51. package/dist/agents/bug-fixer/registries/pending.js +49 -0
  52. package/dist/agents/bug-fixer/registries/pending.js.map +1 -0
  53. package/dist/agents/bug-fixer/specialist-daemon.d.ts +88 -0
  54. package/dist/agents/bug-fixer/specialist-daemon.d.ts.map +1 -0
  55. package/dist/agents/bug-fixer/specialist-daemon.js +431 -0
  56. package/dist/agents/bug-fixer/specialist-daemon.js.map +1 -0
  57. package/dist/agents/bug-fixer/specialist.d.ts +47 -0
  58. package/dist/agents/bug-fixer/specialist.d.ts.map +1 -0
  59. package/dist/agents/bug-fixer/specialist.js +327 -0
  60. package/dist/agents/bug-fixer/specialist.js.map +1 -0
  61. package/dist/agents/bug-fixer/types.d.ts +123 -0
  62. package/dist/agents/bug-fixer/types.d.ts.map +1 -0
  63. package/dist/agents/bug-fixer/types.js +9 -0
  64. package/dist/agents/bug-fixer/types.js.map +1 -0
  65. package/dist/agents/factory.d.ts +172 -0
  66. package/dist/agents/factory.d.ts.map +1 -0
  67. package/dist/agents/factory.js +706 -0
  68. package/dist/agents/factory.js.map +1 -0
  69. package/dist/agents/hailer-expert/index.d.ts +8 -0
  70. package/dist/agents/hailer-expert/index.d.ts.map +1 -0
  71. package/dist/agents/hailer-expert/index.js +14 -0
  72. package/dist/agents/hailer-expert/index.js.map +1 -0
  73. package/dist/agents/hal/daemon.d.ts +174 -0
  74. package/dist/agents/hal/daemon.d.ts.map +1 -0
  75. package/dist/agents/hal/daemon.js +1385 -0
  76. package/dist/agents/hal/daemon.js.map +1 -0
  77. package/dist/agents/hal/definitions.d.ts +42 -0
  78. package/dist/agents/hal/definitions.d.ts.map +1 -0
  79. package/dist/agents/hal/definitions.js +300 -0
  80. package/dist/agents/hal/definitions.js.map +1 -0
  81. package/dist/agents/hal/index.d.ts +3 -0
  82. package/dist/agents/hal/index.d.ts.map +1 -0
  83. package/dist/agents/hal/index.js +8 -0
  84. package/dist/agents/hal/index.js.map +1 -0
  85. package/dist/agents/index.d.ts +18 -0
  86. package/dist/agents/index.d.ts.map +1 -0
  87. package/dist/agents/index.js +48 -0
  88. package/dist/agents/index.js.map +1 -0
  89. package/dist/agents/shared/base.d.ts +253 -0
  90. package/dist/agents/shared/base.d.ts.map +1 -0
  91. package/dist/agents/shared/base.js +1122 -0
  92. package/dist/agents/shared/base.js.map +1 -0
  93. package/dist/agents/shared/schemas/action-schema.d.ts +62 -0
  94. package/dist/agents/shared/schemas/action-schema.d.ts.map +1 -0
  95. package/dist/agents/shared/schemas/action-schema.js +483 -0
  96. package/dist/agents/shared/schemas/action-schema.js.map +1 -0
  97. package/dist/agents/shared/services/agent-registry.d.ts +108 -0
  98. package/dist/agents/shared/services/agent-registry.d.ts.map +1 -0
  99. package/dist/agents/shared/services/agent-registry.js +469 -0
  100. package/dist/agents/shared/services/agent-registry.js.map +1 -0
  101. package/dist/agents/shared/services/conversation-manager.d.ts +57 -0
  102. package/dist/agents/shared/services/conversation-manager.d.ts.map +1 -0
  103. package/dist/agents/shared/services/conversation-manager.js +168 -0
  104. package/dist/agents/shared/services/conversation-manager.js.map +1 -0
  105. package/dist/agents/shared/services/mcp-client.d.ts +56 -0
  106. package/dist/agents/shared/services/mcp-client.d.ts.map +1 -0
  107. package/dist/agents/shared/services/mcp-client.js +124 -0
  108. package/dist/agents/shared/services/mcp-client.js.map +1 -0
  109. package/dist/agents/shared/services/message-classifier.d.ts +37 -0
  110. package/dist/agents/shared/services/message-classifier.d.ts.map +1 -0
  111. package/dist/agents/shared/services/message-classifier.js +203 -0
  112. package/dist/agents/shared/services/message-classifier.js.map +1 -0
  113. package/dist/agents/shared/services/message-formatter.d.ts +89 -0
  114. package/dist/agents/shared/services/message-formatter.d.ts.map +1 -0
  115. package/dist/agents/shared/services/message-formatter.js +390 -0
  116. package/dist/agents/shared/services/message-formatter.js.map +1 -0
  117. package/dist/agents/shared/services/session-logger.d.ts +162 -0
  118. package/dist/agents/shared/services/session-logger.d.ts.map +1 -0
  119. package/dist/agents/shared/services/session-logger.js +724 -0
  120. package/dist/agents/shared/services/session-logger.js.map +1 -0
  121. package/dist/agents/shared/services/structured-output-executor.d.ts +88 -0
  122. package/dist/agents/shared/services/structured-output-executor.d.ts.map +1 -0
  123. package/dist/agents/shared/services/structured-output-executor.js +296 -0
  124. package/dist/agents/shared/services/structured-output-executor.js.map +1 -0
  125. package/dist/agents/shared/services/token-billing.d.ts +72 -0
  126. package/dist/agents/shared/services/token-billing.d.ts.map +1 -0
  127. package/dist/agents/shared/services/token-billing.js +198 -0
  128. package/dist/agents/shared/services/token-billing.js.map +1 -0
  129. package/dist/agents/shared/services/tool-executor.d.ts +43 -0
  130. package/dist/agents/shared/services/tool-executor.d.ts.map +1 -0
  131. package/dist/agents/shared/services/tool-executor.js +175 -0
  132. package/dist/agents/shared/services/tool-executor.js.map +1 -0
  133. package/dist/agents/shared/services/typing-indicator.d.ts +24 -0
  134. package/dist/agents/shared/services/typing-indicator.d.ts.map +1 -0
  135. package/dist/agents/shared/services/typing-indicator.js +54 -0
  136. package/dist/agents/shared/services/typing-indicator.js.map +1 -0
  137. package/dist/agents/shared/services/workspace-schema-cache.d.ts +122 -0
  138. package/dist/agents/shared/services/workspace-schema-cache.d.ts.map +1 -0
  139. package/dist/agents/shared/services/workspace-schema-cache.js +507 -0
  140. package/dist/agents/shared/services/workspace-schema-cache.js.map +1 -0
  141. package/dist/agents/shared/specialist.d.ts +91 -0
  142. package/dist/agents/shared/specialist.d.ts.map +1 -0
  143. package/dist/agents/shared/specialist.js +399 -0
  144. package/dist/agents/shared/specialist.js.map +1 -0
  145. package/dist/agents/shared/tool-schema-loader.d.ts +65 -0
  146. package/dist/agents/shared/tool-schema-loader.d.ts.map +1 -0
  147. package/dist/agents/shared/tool-schema-loader.js +238 -0
  148. package/dist/agents/shared/tool-schema-loader.js.map +1 -0
  149. package/dist/agents/shared/types.d.ts +190 -0
  150. package/dist/agents/shared/types.d.ts.map +1 -0
  151. package/dist/agents/shared/types.js +13 -0
  152. package/dist/agents/shared/types.js.map +1 -0
  153. package/dist/app.d.ts.map +1 -0
  154. package/dist/app.js.map +1 -0
  155. package/dist/bot/bot-config.d.ts.map +1 -0
  156. package/dist/bot/bot-config.js.map +1 -0
  157. package/dist/bot/bot-manager.d.ts.map +1 -0
  158. package/dist/bot/bot-manager.js.map +1 -0
  159. package/dist/bot/bot.d.ts.map +1 -0
  160. package/dist/bot/bot.js.map +1 -0
  161. package/dist/bot/operation-logger.d.ts.map +1 -0
  162. package/dist/bot/operation-logger.js.map +1 -0
  163. package/dist/bot/services/__tests__/permission-guard.test.d.ts +2 -0
  164. package/dist/bot/services/__tests__/permission-guard.test.d.ts.map +1 -0
  165. package/dist/bot/services/__tests__/permission-guard.test.js +357 -0
  166. package/dist/bot/services/__tests__/permission-guard.test.js.map +1 -0
  167. package/dist/bot/services/conversation-manager.d.ts.map +1 -0
  168. package/dist/bot/services/conversation-manager.js.map +1 -0
  169. package/dist/bot/services/index.d.ts.map +1 -0
  170. package/dist/bot/services/index.js.map +1 -0
  171. package/dist/bot/services/message-classifier.d.ts.map +1 -0
  172. package/dist/bot/services/message-classifier.js.map +1 -0
  173. package/dist/bot/services/message-formatter.d.ts.map +1 -0
  174. package/dist/bot/services/message-formatter.js.map +1 -0
  175. package/dist/bot/services/permission-guard.d.ts.map +1 -0
  176. package/dist/bot/services/permission-guard.js.map +1 -0
  177. package/dist/bot/services/session-logger.d.ts.map +1 -0
  178. package/dist/bot/services/session-logger.js.map +1 -0
  179. package/dist/bot/services/token-billing.d.ts.map +1 -0
  180. package/dist/bot/services/token-billing.js.map +1 -0
  181. package/dist/bot/services/types.d.ts.map +1 -0
  182. package/dist/bot/services/types.js.map +1 -0
  183. package/dist/bot/services/typing-indicator.d.ts.map +1 -0
  184. package/dist/bot/services/typing-indicator.js.map +1 -0
  185. package/dist/bot/services/workspace-schema-cache.d.ts.map +1 -0
  186. package/dist/bot/services/workspace-schema-cache.js.map +1 -0
  187. package/dist/bot/tool-executor.d.ts.map +1 -0
  188. package/dist/bot/tool-executor.js.map +1 -0
  189. package/dist/bot/workspace-overview.d.ts.map +1 -0
  190. package/dist/bot/workspace-overview.js.map +1 -0
  191. package/dist/bot-config/constants.d.ts +42 -0
  192. package/dist/bot-config/constants.d.ts.map +1 -0
  193. package/dist/bot-config/constants.js +118 -0
  194. package/dist/bot-config/constants.js.map +1 -0
  195. package/dist/bot-config/context.d.ts +157 -0
  196. package/dist/bot-config/context.d.ts.map +1 -0
  197. package/dist/bot-config/context.js +475 -0
  198. package/dist/bot-config/context.js.map +1 -0
  199. package/dist/bot-config/index.d.ts +21 -0
  200. package/dist/bot-config/index.d.ts.map +1 -0
  201. package/dist/bot-config/index.js +104 -0
  202. package/dist/bot-config/index.js.map +1 -0
  203. package/dist/bot-config/loader.d.ts +28 -0
  204. package/dist/bot-config/loader.d.ts.map +1 -0
  205. package/dist/bot-config/loader.js +194 -0
  206. package/dist/bot-config/loader.js.map +1 -0
  207. package/dist/bot-config/persistence.d.ts +68 -0
  208. package/dist/bot-config/persistence.d.ts.map +1 -0
  209. package/dist/bot-config/persistence.js +261 -0
  210. package/dist/bot-config/persistence.js.map +1 -0
  211. package/dist/bot-config/state.d.ts +56 -0
  212. package/dist/bot-config/state.d.ts.map +1 -0
  213. package/dist/bot-config/state.js +197 -0
  214. package/dist/bot-config/state.js.map +1 -0
  215. package/dist/bot-config/tools.d.ts +28 -0
  216. package/dist/bot-config/tools.d.ts.map +1 -0
  217. package/dist/bot-config/tools.js +279 -0
  218. package/dist/bot-config/tools.js.map +1 -0
  219. package/dist/bot-config/types.d.ts +45 -0
  220. package/dist/bot-config/types.d.ts.map +1 -0
  221. package/dist/bot-config/types.js +9 -0
  222. package/dist/bot-config/types.js.map +1 -0
  223. package/dist/bot-config/webhooks.d.ts +27 -0
  224. package/dist/bot-config/webhooks.d.ts.map +1 -0
  225. package/dist/bot-config/webhooks.js +212 -0
  226. package/dist/bot-config/webhooks.js.map +1 -0
  227. package/dist/cli.d.ts.map +1 -0
  228. package/dist/cli.js.map +1 -0
  229. package/dist/client/agents/base.d.ts +207 -0
  230. package/dist/client/agents/base.d.ts.map +1 -0
  231. package/dist/client/agents/base.js +744 -0
  232. package/dist/client/agents/base.js.map +1 -0
  233. package/dist/client/agents/definitions.d.ts +53 -0
  234. package/dist/client/agents/definitions.d.ts.map +1 -0
  235. package/dist/client/agents/definitions.js +263 -0
  236. package/dist/client/agents/definitions.js.map +1 -0
  237. package/dist/client/agents/orchestrator.d.ts +141 -0
  238. package/dist/client/agents/orchestrator.d.ts.map +1 -0
  239. package/dist/client/agents/orchestrator.js +1062 -0
  240. package/dist/client/agents/orchestrator.js.map +1 -0
  241. package/dist/client/agents/specialist.d.ts +86 -0
  242. package/dist/client/agents/specialist.d.ts.map +1 -0
  243. package/dist/client/agents/specialist.js +340 -0
  244. package/dist/client/agents/specialist.js.map +1 -0
  245. package/dist/client/bot-entrypoint.d.ts +7 -0
  246. package/dist/client/bot-entrypoint.d.ts.map +1 -0
  247. package/dist/client/bot-entrypoint.js +103 -0
  248. package/dist/client/bot-entrypoint.js.map +1 -0
  249. package/dist/client/bot-manager.d.ts +44 -0
  250. package/dist/client/bot-manager.d.ts.map +1 -0
  251. package/dist/client/bot-manager.js +173 -0
  252. package/dist/client/bot-manager.js.map +1 -0
  253. package/dist/client/bot-runner.d.ts +35 -0
  254. package/dist/client/bot-runner.d.ts.map +1 -0
  255. package/dist/client/bot-runner.js +188 -0
  256. package/dist/client/bot-runner.js.map +1 -0
  257. package/dist/client/chat-agent-daemon.d.ts +464 -0
  258. package/dist/client/chat-agent-daemon.d.ts.map +1 -0
  259. package/dist/client/chat-agent-daemon.js +1774 -0
  260. package/dist/client/chat-agent-daemon.js.map +1 -0
  261. package/dist/client/daemon-factory.d.ts +106 -0
  262. package/dist/client/daemon-factory.d.ts.map +1 -0
  263. package/dist/client/daemon-factory.js +301 -0
  264. package/dist/client/daemon-factory.js.map +1 -0
  265. package/dist/client/factory.d.ts +111 -0
  266. package/dist/client/factory.d.ts.map +1 -0
  267. package/dist/client/factory.js +314 -0
  268. package/dist/client/factory.js.map +1 -0
  269. package/dist/client/index.d.ts +17 -0
  270. package/dist/client/index.d.ts.map +1 -0
  271. package/dist/client/index.js +38 -0
  272. package/dist/client/index.js.map +1 -0
  273. package/dist/client/multi-bot-manager.d.ts +42 -0
  274. package/dist/client/multi-bot-manager.d.ts.map +1 -0
  275. package/dist/client/multi-bot-manager.js +161 -0
  276. package/dist/client/multi-bot-manager.js.map +1 -0
  277. package/dist/client/orchestrator-daemon.d.ts +87 -0
  278. package/dist/client/orchestrator-daemon.d.ts.map +1 -0
  279. package/dist/client/orchestrator-daemon.js +444 -0
  280. package/dist/client/orchestrator-daemon.js.map +1 -0
  281. package/dist/client/server.d.ts +8 -0
  282. package/dist/client/server.d.ts.map +1 -0
  283. package/dist/client/server.js +251 -0
  284. package/dist/client/server.js.map +1 -0
  285. package/dist/client/services/agent-registry.d.ts +108 -0
  286. package/dist/client/services/agent-registry.d.ts.map +1 -0
  287. package/dist/client/services/agent-registry.js +630 -0
  288. package/dist/client/services/agent-registry.js.map +1 -0
  289. package/dist/client/services/conversation-manager.d.ts +50 -0
  290. package/dist/client/services/conversation-manager.d.ts.map +1 -0
  291. package/dist/client/services/conversation-manager.js +136 -0
  292. package/dist/client/services/conversation-manager.js.map +1 -0
  293. package/dist/client/services/mcp-client.d.ts +48 -0
  294. package/dist/client/services/mcp-client.d.ts.map +1 -0
  295. package/dist/client/services/mcp-client.js +105 -0
  296. package/dist/client/services/mcp-client.js.map +1 -0
  297. package/dist/client/services/message-classifier.d.ts +37 -0
  298. package/dist/client/services/message-classifier.d.ts.map +1 -0
  299. package/dist/client/services/message-classifier.js +187 -0
  300. package/dist/client/services/message-classifier.js.map +1 -0
  301. package/dist/client/services/message-formatter.d.ts +84 -0
  302. package/dist/client/services/message-formatter.d.ts.map +1 -0
  303. package/dist/client/services/message-formatter.js +353 -0
  304. package/dist/client/services/message-formatter.js.map +1 -0
  305. package/dist/client/services/session-logger.d.ts +106 -0
  306. package/dist/client/services/session-logger.d.ts.map +1 -0
  307. package/dist/client/services/session-logger.js +446 -0
  308. package/dist/client/services/session-logger.js.map +1 -0
  309. package/dist/client/services/tool-executor.d.ts +41 -0
  310. package/dist/client/services/tool-executor.d.ts.map +1 -0
  311. package/dist/client/services/tool-executor.js +169 -0
  312. package/dist/client/services/tool-executor.js.map +1 -0
  313. package/dist/client/services/workspace-schema-cache.d.ts +149 -0
  314. package/dist/client/services/workspace-schema-cache.d.ts.map +1 -0
  315. package/dist/client/services/workspace-schema-cache.js +732 -0
  316. package/dist/client/services/workspace-schema-cache.js.map +1 -0
  317. package/dist/client/specialist-daemon.d.ts +77 -0
  318. package/dist/client/specialist-daemon.d.ts.map +1 -0
  319. package/dist/client/specialist-daemon.js +197 -0
  320. package/dist/client/specialist-daemon.js.map +1 -0
  321. package/dist/client/specialists.d.ts +53 -0
  322. package/dist/client/specialists.d.ts.map +1 -0
  323. package/dist/client/specialists.js +178 -0
  324. package/dist/client/specialists.js.map +1 -0
  325. package/dist/client/tool-schema-loader.d.ts +62 -0
  326. package/dist/client/tool-schema-loader.d.ts.map +1 -0
  327. package/dist/client/tool-schema-loader.js +232 -0
  328. package/dist/client/tool-schema-loader.js.map +1 -0
  329. package/dist/client/types.d.ts +327 -0
  330. package/dist/client/types.d.ts.map +1 -0
  331. package/dist/client/types.js +121 -0
  332. package/dist/client/types.js.map +1 -0
  333. package/dist/commands/seed-config.d.ts +9 -0
  334. package/dist/commands/seed-config.d.ts.map +1 -0
  335. package/dist/commands/seed-config.js +392 -0
  336. package/dist/commands/seed-config.js.map +1 -0
  337. package/dist/commands/setup.d.ts +11 -0
  338. package/dist/commands/setup.d.ts.map +1 -0
  339. package/dist/commands/setup.js +320 -0
  340. package/dist/commands/setup.js.map +1 -0
  341. package/dist/config.d.ts.map +1 -0
  342. package/dist/config.js.map +1 -0
  343. package/dist/core.d.ts.map +1 -0
  344. package/dist/core.js.map +1 -0
  345. package/dist/lib/discussion-lock.d.ts.map +1 -0
  346. package/dist/lib/discussion-lock.js.map +1 -0
  347. package/dist/lib/logger.d.ts.map +1 -0
  348. package/dist/lib/logger.js.map +1 -0
  349. package/dist/lib/request-logger.d.ts.map +1 -0
  350. package/dist/lib/request-logger.js.map +1 -0
  351. package/dist/mcp/UserContextCache.d.ts.map +1 -0
  352. package/dist/mcp/UserContextCache.js.map +1 -0
  353. package/dist/mcp/auth.d.ts.map +1 -0
  354. package/dist/mcp/auth.js.map +1 -0
  355. package/dist/mcp/hailer-clients.d.ts.map +1 -0
  356. package/dist/mcp/hailer-clients.js.map +1 -0
  357. package/dist/mcp/session-store.d.ts.map +1 -0
  358. package/dist/mcp/session-store.js.map +1 -0
  359. package/dist/mcp/signal-handler.d.ts.map +1 -0
  360. package/dist/mcp/signal-handler.js.map +1 -0
  361. package/dist/mcp/tool-registry.d.ts.map +1 -0
  362. package/dist/mcp/tool-registry.js.map +1 -0
  363. package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts +2 -0
  364. package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts.map +1 -0
  365. package/dist/mcp/tools/__tests__/discussion-forward.test.js +218 -0
  366. package/dist/mcp/tools/__tests__/discussion-forward.test.js.map +1 -0
  367. package/dist/mcp/tools/activity.d.ts.map +1 -0
  368. package/dist/mcp/tools/activity.js.map +1 -0
  369. package/dist/mcp/tools/app-core.d.ts.map +1 -0
  370. package/dist/mcp/tools/app-core.js.map +1 -0
  371. package/dist/mcp/tools/app-marketplace.d.ts.map +1 -0
  372. package/dist/mcp/tools/app-marketplace.js.map +1 -0
  373. package/dist/mcp/tools/app-member.d.ts.map +1 -0
  374. package/dist/mcp/tools/app-member.js.map +1 -0
  375. package/dist/mcp/tools/app-scaffold.d.ts.map +1 -0
  376. package/dist/mcp/tools/app-scaffold.js.map +1 -0
  377. package/dist/mcp/tools/app.d.ts.map +1 -0
  378. package/dist/mcp/tools/app.js.map +1 -0
  379. package/dist/mcp/tools/bot-config/constants.d.ts.map +1 -0
  380. package/dist/mcp/tools/bot-config/constants.js.map +1 -0
  381. package/dist/mcp/tools/bot-config/core.d.ts.map +1 -0
  382. package/dist/mcp/tools/bot-config/core.js.map +1 -0
  383. package/dist/mcp/tools/bot-config/index.d.ts.map +1 -0
  384. package/dist/mcp/tools/bot-config/index.js.map +1 -0
  385. package/dist/mcp/tools/bot-config/tools.d.ts.map +1 -0
  386. package/dist/mcp/tools/bot-config/tools.js.map +1 -0
  387. package/dist/mcp/tools/bot-config/types.d.ts.map +1 -0
  388. package/dist/mcp/tools/bot-config/types.js.map +1 -0
  389. package/dist/mcp/tools/bug-fixer-tools.d.ts.map +1 -0
  390. package/dist/mcp/tools/bug-fixer-tools.js.map +1 -0
  391. package/dist/mcp/tools/company.d.ts.map +1 -0
  392. package/dist/mcp/tools/company.js.map +1 -0
  393. package/dist/mcp/tools/discussion.d.ts.map +1 -0
  394. package/dist/mcp/tools/discussion.js.map +1 -0
  395. package/dist/mcp/tools/document.d.ts.map +1 -0
  396. package/dist/mcp/tools/document.js.map +1 -0
  397. package/dist/mcp/tools/file.d.ts.map +1 -0
  398. package/dist/mcp/tools/file.js.map +1 -0
  399. package/dist/mcp/tools/insight.d.ts.map +1 -0
  400. package/dist/mcp/tools/insight.js.map +1 -0
  401. package/dist/mcp/tools/investigate.d.ts.map +1 -0
  402. package/dist/mcp/tools/investigate.js.map +1 -0
  403. package/dist/mcp/tools/user.d.ts.map +1 -0
  404. package/dist/mcp/tools/user.js.map +1 -0
  405. package/dist/mcp/tools/workflow-permissions.d.ts.map +1 -0
  406. package/dist/mcp/tools/workflow-permissions.js.map +1 -0
  407. package/dist/mcp/tools/workflow.d.ts.map +1 -0
  408. package/dist/mcp/tools/workflow.js.map +1 -0
  409. package/dist/mcp/utils/api-errors.d.ts.map +1 -0
  410. package/dist/mcp/utils/api-errors.js.map +1 -0
  411. package/dist/mcp/utils/data-transformers.d.ts.map +1 -0
  412. package/dist/mcp/utils/data-transformers.js.map +1 -0
  413. package/dist/mcp/utils/file-upload.d.ts.map +1 -0
  414. package/dist/mcp/utils/file-upload.js.map +1 -0
  415. package/dist/mcp/utils/hailer-api-client.d.ts.map +1 -0
  416. package/dist/mcp/utils/hailer-api-client.js.map +1 -0
  417. package/dist/mcp/utils/index.d.ts.map +1 -0
  418. package/dist/mcp/utils/index.js.map +1 -0
  419. package/dist/mcp/utils/logger.d.ts.map +1 -0
  420. package/dist/mcp/utils/logger.js.map +1 -0
  421. package/dist/mcp/utils/pagination.d.ts.map +1 -0
  422. package/dist/mcp/utils/pagination.js.map +1 -0
  423. package/dist/mcp/utils/response-builder.d.ts.map +1 -0
  424. package/dist/mcp/utils/response-builder.js.map +1 -0
  425. package/dist/mcp/utils/role-utils.d.ts.map +1 -0
  426. package/dist/mcp/utils/role-utils.js.map +1 -0
  427. package/dist/mcp/utils/tool-helpers.d.ts.map +1 -0
  428. package/dist/mcp/utils/tool-helpers.js.map +1 -0
  429. package/dist/mcp/utils/types.d.ts.map +1 -0
  430. package/dist/mcp/utils/types.js.map +1 -0
  431. package/dist/mcp/webhook-handler.d.ts.map +1 -0
  432. package/dist/mcp/webhook-handler.js.map +1 -0
  433. package/dist/mcp/workspace-cache.d.ts.map +1 -0
  434. package/dist/mcp/workspace-cache.js.map +1 -0
  435. package/dist/mcp-server.d.ts.map +1 -0
  436. package/dist/mcp-server.js.map +1 -0
  437. package/dist/modules/bug-reports/bug-config.d.ts +25 -0
  438. package/dist/modules/bug-reports/bug-config.d.ts.map +1 -0
  439. package/dist/modules/bug-reports/bug-config.js +187 -0
  440. package/dist/modules/bug-reports/bug-config.js.map +1 -0
  441. package/dist/modules/bug-reports/bug-monitor.d.ts +108 -0
  442. package/dist/modules/bug-reports/bug-monitor.d.ts.map +1 -0
  443. package/dist/modules/bug-reports/bug-monitor.js +510 -0
  444. package/dist/modules/bug-reports/bug-monitor.js.map +1 -0
  445. package/dist/modules/bug-reports/giuseppe-agent.d.ts +58 -0
  446. package/dist/modules/bug-reports/giuseppe-agent.d.ts.map +1 -0
  447. package/dist/modules/bug-reports/giuseppe-agent.js +467 -0
  448. package/dist/modules/bug-reports/giuseppe-agent.js.map +1 -0
  449. package/dist/modules/bug-reports/giuseppe-ai.d.ts +83 -0
  450. package/dist/modules/bug-reports/giuseppe-ai.d.ts.map +1 -0
  451. package/dist/modules/bug-reports/giuseppe-ai.js +466 -0
  452. package/dist/modules/bug-reports/giuseppe-ai.js.map +1 -0
  453. package/dist/modules/bug-reports/giuseppe-bot.d.ts +110 -0
  454. package/dist/modules/bug-reports/giuseppe-bot.d.ts.map +1 -0
  455. package/dist/modules/bug-reports/giuseppe-bot.js +804 -0
  456. package/dist/modules/bug-reports/giuseppe-bot.js.map +1 -0
  457. package/dist/modules/bug-reports/giuseppe-daemon.d.ts +80 -0
  458. package/dist/modules/bug-reports/giuseppe-daemon.d.ts.map +1 -0
  459. package/dist/modules/bug-reports/giuseppe-daemon.js +617 -0
  460. package/dist/modules/bug-reports/giuseppe-daemon.js.map +1 -0
  461. package/dist/modules/bug-reports/giuseppe-files.d.ts +64 -0
  462. package/dist/modules/bug-reports/giuseppe-files.d.ts.map +1 -0
  463. package/dist/modules/bug-reports/giuseppe-files.js +375 -0
  464. package/dist/modules/bug-reports/giuseppe-files.js.map +1 -0
  465. package/dist/modules/bug-reports/giuseppe-git.d.ts +48 -0
  466. package/dist/modules/bug-reports/giuseppe-git.d.ts.map +1 -0
  467. package/dist/modules/bug-reports/giuseppe-git.js +298 -0
  468. package/dist/modules/bug-reports/giuseppe-git.js.map +1 -0
  469. package/dist/modules/bug-reports/giuseppe-lsp.d.ts +113 -0
  470. package/dist/modules/bug-reports/giuseppe-lsp.d.ts.map +1 -0
  471. package/dist/modules/bug-reports/giuseppe-lsp.js +485 -0
  472. package/dist/modules/bug-reports/giuseppe-lsp.js.map +1 -0
  473. package/dist/modules/bug-reports/giuseppe-prompt.d.ts +5 -0
  474. package/dist/modules/bug-reports/giuseppe-prompt.d.ts.map +1 -0
  475. package/dist/modules/bug-reports/giuseppe-prompt.js +94 -0
  476. package/dist/modules/bug-reports/giuseppe-prompt.js.map +1 -0
  477. package/dist/modules/bug-reports/index.d.ts +77 -0
  478. package/dist/modules/bug-reports/index.d.ts.map +1 -0
  479. package/dist/modules/bug-reports/index.js +215 -0
  480. package/dist/modules/bug-reports/index.js.map +1 -0
  481. package/dist/modules/bug-reports/pending-classification-registry.d.ts +28 -0
  482. package/dist/modules/bug-reports/pending-classification-registry.d.ts.map +1 -0
  483. package/dist/modules/bug-reports/pending-classification-registry.js +50 -0
  484. package/dist/modules/bug-reports/pending-classification-registry.js.map +1 -0
  485. package/dist/modules/bug-reports/pending-fix-registry.d.ts +30 -0
  486. package/dist/modules/bug-reports/pending-fix-registry.d.ts.map +1 -0
  487. package/dist/modules/bug-reports/pending-fix-registry.js +42 -0
  488. package/dist/modules/bug-reports/pending-fix-registry.js.map +1 -0
  489. package/dist/modules/bug-reports/pending-registry.d.ts +27 -0
  490. package/dist/modules/bug-reports/pending-registry.d.ts.map +1 -0
  491. package/dist/modules/bug-reports/pending-registry.js +49 -0
  492. package/dist/modules/bug-reports/pending-registry.js.map +1 -0
  493. package/dist/modules/bug-reports/types.d.ts +123 -0
  494. package/dist/modules/bug-reports/types.d.ts.map +1 -0
  495. package/dist/modules/bug-reports/types.js +9 -0
  496. package/dist/modules/bug-reports/types.js.map +1 -0
  497. package/dist/plugins/bug-fixer/index.d.ts.map +1 -0
  498. package/dist/plugins/bug-fixer/index.js.map +1 -0
  499. package/dist/plugins/bug-fixer/tools.d.ts.map +1 -0
  500. package/dist/plugins/bug-fixer/tools.js.map +1 -0
  501. package/dist/plugins/vipunen/__tests__/tools.test.d.ts +10 -0
  502. package/dist/plugins/vipunen/__tests__/tools.test.d.ts.map +1 -0
  503. package/dist/plugins/vipunen/__tests__/tools.test.js +646 -0
  504. package/dist/plugins/vipunen/__tests__/tools.test.js.map +1 -0
  505. package/dist/plugins/vipunen/client.d.ts.map +1 -0
  506. package/dist/plugins/vipunen/client.js.map +1 -0
  507. package/dist/plugins/vipunen/index.d.ts.map +1 -0
  508. package/dist/plugins/vipunen/index.js.map +1 -0
  509. package/dist/plugins/vipunen/tools.d.ts.map +1 -0
  510. package/dist/plugins/vipunen/tools.js.map +1 -0
  511. package/dist/routes/agents.d.ts +44 -0
  512. package/dist/routes/agents.d.ts.map +1 -0
  513. package/dist/routes/agents.js +311 -0
  514. package/dist/routes/agents.js.map +1 -0
  515. package/dist/services/agent-credential-store.d.ts +73 -0
  516. package/dist/services/agent-credential-store.d.ts.map +1 -0
  517. package/dist/services/agent-credential-store.js +212 -0
  518. package/dist/services/agent-credential-store.js.map +1 -0
  519. package/dist/stdio-server.d.ts.map +1 -0
  520. package/dist/stdio-server.js.map +1 -0
  521. package/dist/workspace/context.d.ts +148 -0
  522. package/dist/workspace/context.d.ts.map +1 -0
  523. package/dist/workspace/context.js +339 -0
  524. package/dist/workspace/context.js.map +1 -0
  525. package/dist/workspace/credentials.d.ts +55 -0
  526. package/dist/workspace/credentials.d.ts.map +1 -0
  527. package/dist/workspace/credentials.js +239 -0
  528. package/dist/workspace/credentials.js.map +1 -0
  529. package/dist/workspace/index.d.ts +21 -0
  530. package/dist/workspace/index.d.ts.map +1 -0
  531. package/dist/workspace/index.js +45 -0
  532. package/dist/workspace/index.js.map +1 -0
  533. package/dist/workspace/loader.d.ts +27 -0
  534. package/dist/workspace/loader.d.ts.map +1 -0
  535. package/dist/workspace/loader.js +222 -0
  536. package/dist/workspace/loader.js.map +1 -0
  537. package/dist/workspace/schema.d.ts +37 -0
  538. package/dist/workspace/schema.d.ts.map +1 -0
  539. package/dist/workspace/schema.js +192 -0
  540. package/dist/workspace/schema.js.map +1 -0
  541. package/package.json +13 -1
  542. package/.claude/.context-watchdog.json +0 -1
  543. package/.claude/.session-checked +0 -1
  544. package/test-billing-server.js +0 -136
@@ -0,0 +1,339 @@
1
+ "use strict";
2
+ /**
3
+ * Workspace Context
4
+ *
5
+ * Workspace-scoped singleton container for complete tenant isolation.
6
+ * Each workspace gets ONE instance of WorkspaceContext that holds:
7
+ * - Schema (workflow/field IDs)
8
+ * - Credentials (bot email/password)
9
+ * - Bot state (enabled/disabled)
10
+ *
11
+ * CRITICAL: Data must NEVER mix between workspaces.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.WorkspaceContext = void 0;
15
+ exports.getWorkspace = getWorkspace;
16
+ exports.getExistingWorkspace = getExistingWorkspace;
17
+ exports.listWorkspaces = listWorkspaces;
18
+ exports.hasWorkspace = hasWorkspace;
19
+ exports.removeWorkspace = removeWorkspace;
20
+ exports.clearAllWorkspaces = clearAllWorkspaces;
21
+ exports.getWorkspaceByWorkflowId = getWorkspaceByWorkflowId;
22
+ const logger_1 = require("../lib/logger");
23
+ const schema_1 = require("./schema");
24
+ const credentials_1 = require("./credentials");
25
+ const logger = (0, logger_1.createLogger)({ component: 'WorkspaceContext' });
26
+ /**
27
+ * Workspace-scoped singleton container
28
+ */
29
+ class WorkspaceContext {
30
+ workspaceId;
31
+ workspaceName;
32
+ schema = null;
33
+ credentials = new Map();
34
+ botState = new Map();
35
+ initialized = false;
36
+ // Callbacks for state changes
37
+ stateChangeCallbacks = [];
38
+ credentialChangeCallbacks = [];
39
+ constructor(workspaceId, workspaceName = '') {
40
+ this.workspaceId = workspaceId;
41
+ this.workspaceName = workspaceName;
42
+ logger.debug('WorkspaceContext created', { workspaceId, workspaceName });
43
+ }
44
+ // ============================================================================
45
+ // Initialization
46
+ // ============================================================================
47
+ /**
48
+ * Initialize the workspace context by discovering schema and loading credentials
49
+ */
50
+ async initialize(client) {
51
+ if (this.initialized) {
52
+ logger.debug('Workspace already initialized', { workspaceId: this.workspaceId });
53
+ return true;
54
+ }
55
+ logger.info('Initializing workspace context', { workspaceId: this.workspaceId });
56
+ try {
57
+ // Step 1: Discover schema (Agent Directory workflow IDs)
58
+ this.schema = await (0, schema_1.discoverSchema)(client, this.workspaceId);
59
+ if (!this.schema) {
60
+ logger.warn('Schema discovery failed - Agent Directory not found', {
61
+ workspaceId: this.workspaceId
62
+ });
63
+ this.initialized = true; // Mark as initialized even without schema
64
+ return false;
65
+ }
66
+ // Step 2: Load credentials from Agent Directory
67
+ const creds = await (0, credentials_1.loadCredentials)(client, this.schema, this.workspaceId);
68
+ for (const cred of creds) {
69
+ this.credentials.set(cred.userId, cred);
70
+ this.botState.set(cred.userId, {
71
+ enabled: cred.enabled,
72
+ userId: cred.userId,
73
+ botType: cred.botType
74
+ });
75
+ }
76
+ this.initialized = true;
77
+ logger.info('Workspace context initialized', {
78
+ workspaceId: this.workspaceId,
79
+ botCount: creds.length,
80
+ orchestrator: creds.find(c => c.botType === 'orchestrator')?.userId
81
+ });
82
+ return true;
83
+ }
84
+ catch (error) {
85
+ logger.error('Failed to initialize workspace context', {
86
+ workspaceId: this.workspaceId,
87
+ error: error instanceof Error ? error.message : String(error)
88
+ });
89
+ this.initialized = true; // Mark as initialized to prevent retry loops
90
+ return false;
91
+ }
92
+ }
93
+ /**
94
+ * Check if workspace is initialized
95
+ */
96
+ isInitialized() {
97
+ return this.initialized;
98
+ }
99
+ // ============================================================================
100
+ // Schema Access
101
+ // ============================================================================
102
+ /**
103
+ * Get the workspace schema (workflow/field IDs)
104
+ */
105
+ getSchema() {
106
+ return this.schema;
107
+ }
108
+ /**
109
+ * Set the workspace schema (used during hot-reload)
110
+ */
111
+ setSchema(schema) {
112
+ this.schema = schema;
113
+ logger.debug('Schema updated', { workspaceId: this.workspaceId });
114
+ }
115
+ /**
116
+ * Get Agent Directory workflow ID
117
+ */
118
+ getAgentDirectoryWorkflowId() {
119
+ return this.schema?.agentDirectoryWorkflowId ?? null;
120
+ }
121
+ /**
122
+ * Get phase IDs
123
+ */
124
+ getPhaseIds() {
125
+ return {
126
+ deployed: this.schema?.deployedPhaseId ?? null,
127
+ retired: this.schema?.retiredPhaseId ?? null
128
+ };
129
+ }
130
+ // ============================================================================
131
+ // Credentials Access
132
+ // ============================================================================
133
+ /**
134
+ * Get credentials for a specific bot
135
+ */
136
+ getCredentials(userId) {
137
+ return this.credentials.get(userId);
138
+ }
139
+ /**
140
+ * Get all credentials
141
+ */
142
+ getAllCredentials() {
143
+ return Array.from(this.credentials.values());
144
+ }
145
+ /**
146
+ * Update credentials for a bot
147
+ */
148
+ updateCredentials(userId, creds) {
149
+ const existing = this.credentials.get(userId) || {
150
+ userId,
151
+ email: '',
152
+ password: '',
153
+ displayName: undefined,
154
+ botType: null,
155
+ enabled: false,
156
+ workspaceId: this.workspaceId
157
+ };
158
+ this.credentials.set(userId, { ...existing, ...creds });
159
+ this.credentialChangeCallbacks.forEach(cb => cb(userId));
160
+ logger.debug('Credentials updated', { workspaceId: this.workspaceId, userId });
161
+ }
162
+ /**
163
+ * Get orchestrator credentials (first bot with orchestrator type)
164
+ */
165
+ getOrchestratorCredentials() {
166
+ return Array.from(this.credentials.values())
167
+ .find(c => c.botType === 'orchestrator' && c.enabled);
168
+ }
169
+ /**
170
+ * Get specialist credentials (non-orchestrator enabled bots)
171
+ */
172
+ getSpecialistCredentials() {
173
+ return Array.from(this.credentials.values())
174
+ .filter(c => c.botType !== 'orchestrator' && c.enabled);
175
+ }
176
+ // ============================================================================
177
+ // Bot State Access
178
+ // ============================================================================
179
+ /**
180
+ * Get bot state for a specific user
181
+ */
182
+ getBotState(userId) {
183
+ return this.botState.get(userId);
184
+ }
185
+ /**
186
+ * Get all bot states as a simple map (userId -> enabled)
187
+ */
188
+ getAllBotStates() {
189
+ const result = {};
190
+ for (const [userId, entry] of this.botState) {
191
+ result[userId] = entry.enabled;
192
+ }
193
+ return result;
194
+ }
195
+ /**
196
+ * Get enabled bots with their types
197
+ */
198
+ getEnabledBotsWithTypes() {
199
+ const result = new Map();
200
+ for (const [userId, entry] of this.botState) {
201
+ if (entry.enabled) {
202
+ result.set(userId, entry.botType);
203
+ }
204
+ }
205
+ return result;
206
+ }
207
+ /**
208
+ * Set bot enabled state
209
+ */
210
+ setBotEnabled(userId, enabled) {
211
+ const existing = this.botState.get(userId);
212
+ this.botState.set(userId, {
213
+ enabled,
214
+ userId,
215
+ botType: existing?.botType ?? null
216
+ });
217
+ // Update credentials too
218
+ const creds = this.credentials.get(userId);
219
+ if (creds) {
220
+ creds.enabled = enabled;
221
+ }
222
+ // Notify listeners
223
+ this.stateChangeCallbacks.forEach(cb => cb(userId, enabled));
224
+ logger.info('Bot state changed', { workspaceId: this.workspaceId, userId, enabled });
225
+ }
226
+ /**
227
+ * Set bot type for a user
228
+ */
229
+ setBotType(userId, botType) {
230
+ const existing = this.botState.get(userId);
231
+ this.botState.set(userId, {
232
+ enabled: existing?.enabled ?? false,
233
+ userId,
234
+ botType
235
+ });
236
+ // Update credentials too
237
+ const creds = this.credentials.get(userId);
238
+ if (creds) {
239
+ creds.botType = botType;
240
+ }
241
+ logger.debug('Bot type updated', { workspaceId: this.workspaceId, userId, botType });
242
+ }
243
+ // ============================================================================
244
+ // Callbacks
245
+ // ============================================================================
246
+ /**
247
+ * Register callback for bot state changes
248
+ */
249
+ onBotStateChange(callback) {
250
+ this.stateChangeCallbacks.push(callback);
251
+ }
252
+ /**
253
+ * Register callback for credential changes
254
+ */
255
+ onCredentialChange(callback) {
256
+ this.credentialChangeCallbacks.push(callback);
257
+ }
258
+ /**
259
+ * Clear all callbacks (for cleanup)
260
+ */
261
+ clearCallbacks() {
262
+ this.stateChangeCallbacks.length = 0;
263
+ this.credentialChangeCallbacks.length = 0;
264
+ }
265
+ }
266
+ exports.WorkspaceContext = WorkspaceContext;
267
+ // ============================================================================
268
+ // Global Registry (Workspace Isolation)
269
+ // ============================================================================
270
+ /**
271
+ * Global registry of workspace contexts
272
+ * Each workspace gets exactly ONE context instance
273
+ */
274
+ const workspaces = new Map();
275
+ /**
276
+ * Get or create WorkspaceContext for a workspace
277
+ */
278
+ function getWorkspace(workspaceId, workspaceName) {
279
+ let ctx = workspaces.get(workspaceId);
280
+ if (!ctx) {
281
+ ctx = new WorkspaceContext(workspaceId, workspaceName || '');
282
+ workspaces.set(workspaceId, ctx);
283
+ logger.info('Created new workspace context', { workspaceId });
284
+ }
285
+ return ctx;
286
+ }
287
+ /**
288
+ * Get existing WorkspaceContext (returns undefined if not created)
289
+ */
290
+ function getExistingWorkspace(workspaceId) {
291
+ return workspaces.get(workspaceId);
292
+ }
293
+ /**
294
+ * List all registered workspace IDs
295
+ */
296
+ function listWorkspaces() {
297
+ return Array.from(workspaces.keys());
298
+ }
299
+ /**
300
+ * Check if a workspace context exists
301
+ */
302
+ function hasWorkspace(workspaceId) {
303
+ return workspaces.has(workspaceId);
304
+ }
305
+ /**
306
+ * Remove a workspace context (for cleanup)
307
+ */
308
+ function removeWorkspace(workspaceId) {
309
+ const ctx = workspaces.get(workspaceId);
310
+ if (ctx) {
311
+ ctx.clearCallbacks();
312
+ workspaces.delete(workspaceId);
313
+ logger.info('Removed workspace context', { workspaceId });
314
+ return true;
315
+ }
316
+ return false;
317
+ }
318
+ /**
319
+ * Clear all workspace contexts (for testing/shutdown)
320
+ */
321
+ function clearAllWorkspaces() {
322
+ for (const ctx of workspaces.values()) {
323
+ ctx.clearCallbacks();
324
+ }
325
+ workspaces.clear();
326
+ logger.info('Cleared all workspace contexts');
327
+ }
328
+ /**
329
+ * Find workspace by Agent Directory workflow ID (reverse lookup)
330
+ */
331
+ function getWorkspaceByWorkflowId(workflowId) {
332
+ for (const ctx of workspaces.values()) {
333
+ if (ctx.getAgentDirectoryWorkflowId() === workflowId) {
334
+ return ctx;
335
+ }
336
+ }
337
+ return undefined;
338
+ }
339
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/workspace/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Credential Loading
3
+ *
4
+ * Loads bot credentials from Agent Directory activities.
5
+ * Consolidates multiple extraction functions into one clean implementation.
6
+ */
7
+ import { HailerApiClient } from '../mcp/utils';
8
+ import { WorkspaceSchema } from './schema';
9
+ /**
10
+ * Bot credentials structure
11
+ */
12
+ export interface BotCredentials {
13
+ userId: string;
14
+ email: string;
15
+ password: string;
16
+ displayName?: string;
17
+ botType: string | null;
18
+ enabled: boolean;
19
+ workspaceId: string;
20
+ }
21
+ /**
22
+ * Load all bot credentials from Agent Directory
23
+ *
24
+ * @param client - Hailer client
25
+ * @param schema - Workspace schema with field IDs
26
+ * @param workspaceId - Workspace ID
27
+ */
28
+ export declare function loadCredentials(client: HailerApiClient, schema: WorkspaceSchema, workspaceId: string): Promise<BotCredentials[]>;
29
+ /**
30
+ * Activity data structure (partial)
31
+ */
32
+ interface ActivityData {
33
+ _id: string;
34
+ name?: string;
35
+ fields?: Record<string, unknown>;
36
+ fieldsAndValues?: Array<{
37
+ fieldId?: string;
38
+ fieldName?: string;
39
+ value?: unknown;
40
+ }>;
41
+ }
42
+ /**
43
+ * Extract credentials from an activity (for hot-reload / webhook processing)
44
+ */
45
+ export declare function extractCredentialsFromActivityData(activity: ActivityData, schema: WorkspaceSchema, workspaceId: string, enabled: boolean): BotCredentials | null;
46
+ /**
47
+ * Extract just the user ID from an activity
48
+ */
49
+ export declare function extractUserIdFromActivity(activity: ActivityData, schema: WorkspaceSchema): string | null;
50
+ /**
51
+ * Extract just the bot type from an activity
52
+ */
53
+ export declare function extractBotTypeFromActivity(activity: ActivityData, schema: WorkspaceSchema): string | null;
54
+ export {};
55
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/workspace/credentials.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC,CA+D3B;AAiCD;;GAEG;AACH,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC,CAAC;CACJ;AAoKD;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,cAAc,GAAG,IAAI,CAEvB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,eAAe,GACtB,MAAM,GAAG,IAAI,CAEf;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,eAAe,GACtB,MAAM,GAAG,IAAI,CAEf"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ /**
3
+ * Credential Loading
4
+ *
5
+ * Loads bot credentials from Agent Directory activities.
6
+ * Consolidates multiple extraction functions into one clean implementation.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.loadCredentials = loadCredentials;
10
+ exports.extractCredentialsFromActivityData = extractCredentialsFromActivityData;
11
+ exports.extractUserIdFromActivity = extractUserIdFromActivity;
12
+ exports.extractBotTypeFromActivity = extractBotTypeFromActivity;
13
+ const logger_1 = require("../lib/logger");
14
+ const config_1 = require("../config");
15
+ const logger = (0, logger_1.createLogger)({ component: 'CredentialLoader' });
16
+ /**
17
+ * Load all bot credentials from Agent Directory
18
+ *
19
+ * @param client - Hailer client
20
+ * @param schema - Workspace schema with field IDs
21
+ * @param workspaceId - Workspace ID
22
+ */
23
+ async function loadCredentials(client, schema, workspaceId) {
24
+ const credentials = [];
25
+ if (!schema.deployedPhaseId) {
26
+ logger.warn('Cannot load credentials - no deployed phase ID', { workspaceId });
27
+ return credentials;
28
+ }
29
+ try {
30
+ // Load deployed agents (enabled = true)
31
+ const deployedActivities = await fetchActivitiesFromPhase(client, schema.agentDirectoryWorkflowId, schema.deployedPhaseId);
32
+ for (const activity of deployedActivities) {
33
+ const cred = extractCredentialsFromActivity(activity, schema, workspaceId, true);
34
+ if (cred) {
35
+ credentials.push(cred);
36
+ logger.debug('Loaded deployed bot credentials', {
37
+ userId: cred.userId,
38
+ email: (0, config_1.maskEmail)(cred.email),
39
+ botType: cred.botType
40
+ });
41
+ }
42
+ }
43
+ // Load retired agents (enabled = false)
44
+ if (schema.retiredPhaseId) {
45
+ const retiredActivities = await fetchActivitiesFromPhase(client, schema.agentDirectoryWorkflowId, schema.retiredPhaseId);
46
+ for (const activity of retiredActivities) {
47
+ const cred = extractCredentialsFromActivity(activity, schema, workspaceId, false);
48
+ if (cred) {
49
+ credentials.push(cred);
50
+ logger.debug('Loaded retired bot credentials', {
51
+ userId: cred.userId,
52
+ email: (0, config_1.maskEmail)(cred.email),
53
+ botType: cred.botType
54
+ });
55
+ }
56
+ }
57
+ }
58
+ logger.info('Credentials loaded from Agent Directory', {
59
+ workspaceId,
60
+ deployed: deployedActivities.length,
61
+ total: credentials.length
62
+ });
63
+ return credentials;
64
+ }
65
+ catch (error) {
66
+ logger.error('Failed to load credentials', {
67
+ workspaceId,
68
+ error: error instanceof Error ? error.message : String(error)
69
+ });
70
+ return credentials;
71
+ }
72
+ }
73
+ /**
74
+ * Fetch activities from a workflow phase
75
+ */
76
+ async function fetchActivitiesFromPhase(client, workflowId, phaseId) {
77
+ try {
78
+ const result = await client.fetchActivityList(workflowId, phaseId, 100, { returnFlat: true });
79
+ // Handle various response formats
80
+ if (Array.isArray(result))
81
+ return result;
82
+ if (result?.data)
83
+ return result.data;
84
+ if (result?.activities)
85
+ return result.activities;
86
+ return [];
87
+ }
88
+ catch (error) {
89
+ logger.warn('Failed to fetch activities', {
90
+ workflowId,
91
+ phaseId,
92
+ error: error instanceof Error ? error.message : String(error)
93
+ });
94
+ return [];
95
+ }
96
+ }
97
+ /**
98
+ * Extract credentials from a single activity
99
+ */
100
+ function extractCredentialsFromActivity(activity, schema, workspaceId, enabled) {
101
+ const userId = extractUserId(activity, schema);
102
+ if (!userId) {
103
+ logger.debug('Activity has no user ID', { activityId: activity._id });
104
+ return null;
105
+ }
106
+ const email = extractFieldValue(activity, schema.fields.email);
107
+ const password = extractFieldValue(activity, schema.fields.password);
108
+ const botType = extractFieldValue(activity, schema.fields.botType);
109
+ // Email and password are required for a valid credential
110
+ if (!email || !password) {
111
+ logger.debug('Activity missing email/password', {
112
+ activityId: activity._id,
113
+ userId,
114
+ hasEmail: !!email,
115
+ hasPassword: !!password
116
+ });
117
+ return null;
118
+ }
119
+ return {
120
+ userId,
121
+ email,
122
+ password,
123
+ displayName: activity.name,
124
+ botType: botType || null,
125
+ enabled,
126
+ workspaceId
127
+ };
128
+ }
129
+ /**
130
+ * Extract user ID from activity's hailerProfile field
131
+ */
132
+ function extractUserId(activity, schema) {
133
+ const fields = activity.fields || {};
134
+ const fieldsAndValues = activity.fieldsAndValues || [];
135
+ const hailerProfileFieldId = schema.fields.hailerProfile;
136
+ // Try fields object format - by field key first
137
+ if (fields.hailerProfile) {
138
+ const value = fields.hailerProfile;
139
+ return normalizeUserId(value);
140
+ }
141
+ // Try fields object format - by field ID
142
+ if (hailerProfileFieldId) {
143
+ const profileField = fields[hailerProfileFieldId];
144
+ if (profileField) {
145
+ return normalizeUserId(profileField);
146
+ }
147
+ }
148
+ // Try fieldsAndValues array format
149
+ if (hailerProfileFieldId) {
150
+ const fav = fieldsAndValues.find(f => f.fieldId === hailerProfileFieldId);
151
+ if (fav?.value) {
152
+ return normalizeUserId(fav.value);
153
+ }
154
+ }
155
+ // Fallback: look for users field type in any field
156
+ for (const fieldValue of Object.values(fields)) {
157
+ if (isTypedUsersField(fieldValue)) {
158
+ const userId = normalizeUserId(fieldValue.value);
159
+ if (userId && looksLikeUserId(userId)) {
160
+ return userId;
161
+ }
162
+ }
163
+ }
164
+ return null;
165
+ }
166
+ /**
167
+ * Extract a field value from activity
168
+ */
169
+ function extractFieldValue(activity, fieldId) {
170
+ if (!fieldId)
171
+ return undefined;
172
+ const fields = activity.fields || {};
173
+ const fieldsAndValues = activity.fieldsAndValues || [];
174
+ // Try fields object format - by field ID
175
+ const field = fields[fieldId];
176
+ if (field !== undefined) {
177
+ // Handle typed field format {type, value}
178
+ if (isTypedField(field)) {
179
+ return field.value;
180
+ }
181
+ return field;
182
+ }
183
+ // Try fieldsAndValues array format
184
+ const fav = fieldsAndValues.find(f => f.fieldId === fieldId);
185
+ if (fav?.value !== undefined) {
186
+ return fav.value;
187
+ }
188
+ return undefined;
189
+ }
190
+ /**
191
+ * Normalize user ID from various formats
192
+ */
193
+ function normalizeUserId(value) {
194
+ if (typeof value === 'string') {
195
+ return value;
196
+ }
197
+ if (Array.isArray(value) && value.length > 0) {
198
+ return typeof value[0] === 'string' ? value[0] : null;
199
+ }
200
+ if (isTypedField(value)) {
201
+ return normalizeUserId(value.value);
202
+ }
203
+ return null;
204
+ }
205
+ /**
206
+ * Check if a string looks like a MongoDB ObjectId
207
+ */
208
+ function looksLikeUserId(value) {
209
+ return /^[a-f0-9]{24}$/i.test(value);
210
+ }
211
+ function isTypedField(value) {
212
+ return (typeof value === 'object' &&
213
+ value !== null &&
214
+ !Array.isArray(value) &&
215
+ 'value' in value);
216
+ }
217
+ function isTypedUsersField(value) {
218
+ return (isTypedField(value) &&
219
+ value.type === 'users');
220
+ }
221
+ /**
222
+ * Extract credentials from an activity (for hot-reload / webhook processing)
223
+ */
224
+ function extractCredentialsFromActivityData(activity, schema, workspaceId, enabled) {
225
+ return extractCredentialsFromActivity(activity, schema, workspaceId, enabled);
226
+ }
227
+ /**
228
+ * Extract just the user ID from an activity
229
+ */
230
+ function extractUserIdFromActivity(activity, schema) {
231
+ return extractUserId(activity, schema);
232
+ }
233
+ /**
234
+ * Extract just the bot type from an activity
235
+ */
236
+ function extractBotTypeFromActivity(activity, schema) {
237
+ return extractFieldValue(activity, schema.fields.botType);
238
+ }
239
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/workspace/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Workspace Isolation Layer
3
+ *
4
+ * Provides complete tenant isolation for client bots.
5
+ * Each workspace gets its own:
6
+ * - Schema (workflow/field IDs)
7
+ * - Credentials (bot email/password)
8
+ * - Bot state (enabled/disabled)
9
+ *
10
+ * Usage:
11
+ * import { getWorkspace, WorkspaceContext } from './workspace';
12
+ *
13
+ * const ctx = getWorkspace(workspaceId);
14
+ * await ctx.initialize(client);
15
+ * const creds = ctx.getOrchestratorCredentials();
16
+ */
17
+ export { WorkspaceContext, BotStateEntry, BotStateMap, getWorkspace, getExistingWorkspace, listWorkspaces, hasWorkspace, removeWorkspace, clearAllWorkspaces, getWorkspaceByWorkflowId, } from './context';
18
+ export { WorkspaceSchema, discoverSchema, discoverFieldIds, } from './schema';
19
+ export { BotCredentials, loadCredentials, extractCredentialsFromActivityData, extractUserIdFromActivity, extractBotTypeFromActivity, } from './credentials';
20
+ export { loadWorkspacesFromConfig, getOrLoadWorkspace, saveWorkspaceToConfig, } from './loader';
21
+ //# sourceMappingURL=index.d.ts.map