@hailer/mcp 1.2.0 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (764) hide show
  1. package/.claude/agents/agent-hailer-helper.md +118 -0
  2. package/.claude/commands/app-squad.md +16 -110
  3. package/.claude/commands/debug-squad.md +13 -290
  4. package/.claude/commands/publish.md +2 -2
  5. package/.claude/commands/review-squad.md +17 -139
  6. package/.claude/skills/create-and-publish-app/SKILL.md +102 -83
  7. package/.claude/skills/hailer-app-builder/SKILL.md +2 -2
  8. package/.claude/skills/hailer-ui-guide/SKILL.md +265 -0
  9. package/.env.example +50 -1
  10. package/CLAUDE.md +136 -10
  11. package/dist/app.d.ts.map +1 -1
  12. package/dist/app.js +3 -0
  13. package/dist/app.js.map +1 -1
  14. package/dist/bot/bot-manager.d.ts +9 -6
  15. package/dist/bot/bot-manager.d.ts.map +1 -1
  16. package/dist/bot/bot-manager.js +142 -31
  17. package/dist/bot/bot-manager.js.map +1 -1
  18. package/dist/bot/bot.d.ts +59 -16
  19. package/dist/bot/bot.d.ts.map +1 -1
  20. package/dist/bot/bot.js +889 -142
  21. package/dist/bot/bot.js.map +1 -1
  22. package/dist/bot/operation-logger.d.ts.map +1 -1
  23. package/dist/bot/operation-logger.js +24 -12
  24. package/dist/bot/operation-logger.js.map +1 -1
  25. package/dist/bot/services/bot-permissions.d.ts +2 -2
  26. package/dist/bot/services/bot-permissions.d.ts.map +1 -1
  27. package/dist/bot/services/bot-permissions.js +28 -9
  28. package/dist/bot/services/bot-permissions.js.map +1 -1
  29. package/dist/bot/services/conversation-manager.d.ts +23 -23
  30. package/dist/bot/services/conversation-manager.d.ts.map +1 -1
  31. package/dist/bot/services/conversation-manager.js +52 -49
  32. package/dist/bot/services/conversation-manager.js.map +1 -1
  33. package/dist/bot/services/helper-prompt.d.ts +8 -0
  34. package/dist/bot/services/helper-prompt.d.ts.map +1 -0
  35. package/dist/bot/services/helper-prompt.js +177 -0
  36. package/dist/bot/services/helper-prompt.js.map +1 -0
  37. package/dist/bot/services/message-classifier.d.ts +16 -16
  38. package/dist/bot/services/message-classifier.d.ts.map +1 -1
  39. package/dist/bot/services/message-classifier.js +55 -49
  40. package/dist/bot/services/message-classifier.js.map +1 -1
  41. package/dist/bot/services/message-formatter.d.ts +38 -38
  42. package/dist/bot/services/message-formatter.d.ts.map +1 -1
  43. package/dist/bot/services/message-formatter.js +81 -74
  44. package/dist/bot/services/message-formatter.js.map +1 -1
  45. package/dist/bot/services/permission-guard.d.ts.map +1 -1
  46. package/dist/bot/services/permission-guard.js +20 -10
  47. package/dist/bot/services/permission-guard.js.map +1 -1
  48. package/dist/bot/services/signal-router.d.ts.map +1 -1
  49. package/dist/bot/services/signal-router.js +11 -6
  50. package/dist/bot/services/signal-router.js.map +1 -1
  51. package/dist/bot/services/system-prompt.d.ts +14 -0
  52. package/dist/bot/services/system-prompt.d.ts.map +1 -1
  53. package/dist/bot/services/system-prompt.js +179 -4
  54. package/dist/bot/services/system-prompt.js.map +1 -1
  55. package/dist/bot/services/token-billing.d.ts +23 -23
  56. package/dist/bot/services/token-billing.d.ts.map +1 -1
  57. package/dist/bot/services/token-billing.js +51 -36
  58. package/dist/bot/services/token-billing.js.map +1 -1
  59. package/dist/bot/services/types.d.ts +3 -1
  60. package/dist/bot/services/types.d.ts.map +1 -1
  61. package/dist/bot/services/typing-indicator.d.ts +8 -8
  62. package/dist/bot/services/typing-indicator.d.ts.map +1 -1
  63. package/dist/bot/services/typing-indicator.js +12 -10
  64. package/dist/bot/services/typing-indicator.js.map +1 -1
  65. package/dist/bot/services/workspace-refresh.d.ts +3 -3
  66. package/dist/bot/services/workspace-refresh.d.ts.map +1 -1
  67. package/dist/bot/services/workspace-refresh.js +23 -13
  68. package/dist/bot/services/workspace-refresh.js.map +1 -1
  69. package/dist/bot/tool-executor.d.ts +10 -6
  70. package/dist/bot/tool-executor.d.ts.map +1 -1
  71. package/dist/bot/tool-executor.js +12 -6
  72. package/dist/bot/tool-executor.js.map +1 -1
  73. package/dist/bot/workspace-overview.d.ts.map +1 -1
  74. package/dist/bot/workspace-overview.js +6 -3
  75. package/dist/bot/workspace-overview.js.map +1 -1
  76. package/dist/bot-config/activity-error.d.ts +47 -0
  77. package/dist/bot-config/activity-error.d.ts.map +1 -0
  78. package/dist/bot-config/activity-error.js +67 -0
  79. package/dist/bot-config/activity-error.js.map +1 -0
  80. package/dist/bot-config/context.d.ts +4 -4
  81. package/dist/bot-config/context.d.ts.map +1 -1
  82. package/dist/bot-config/context.js +18 -14
  83. package/dist/bot-config/context.js.map +1 -1
  84. package/dist/bot-config/events.d.ts +45 -0
  85. package/dist/bot-config/events.d.ts.map +1 -0
  86. package/dist/bot-config/events.js +51 -0
  87. package/dist/bot-config/events.js.map +1 -0
  88. package/dist/bot-config/index.d.ts +3 -0
  89. package/dist/bot-config/index.d.ts.map +1 -1
  90. package/dist/bot-config/index.js +8 -1
  91. package/dist/bot-config/index.js.map +1 -1
  92. package/dist/bot-config/loader.d.ts +3 -0
  93. package/dist/bot-config/loader.d.ts.map +1 -1
  94. package/dist/bot-config/loader.js +45 -20
  95. package/dist/bot-config/loader.js.map +1 -1
  96. package/dist/bot-config/persistence.js.map +1 -1
  97. package/dist/bot-config/reconciler.d.ts +11 -0
  98. package/dist/bot-config/reconciler.d.ts.map +1 -0
  99. package/dist/bot-config/reconciler.js +121 -0
  100. package/dist/bot-config/reconciler.js.map +1 -0
  101. package/dist/bot-config/state.d.ts.map +1 -1
  102. package/dist/bot-config/state.js.map +1 -1
  103. package/dist/bot-config/types.d.ts +32 -0
  104. package/dist/bot-config/types.d.ts.map +1 -1
  105. package/dist/bot-config/webhooks.d.ts.map +1 -1
  106. package/dist/bot-config/webhooks.js.map +1 -1
  107. package/dist/bot-config/workflow-installer.d.ts +37 -0
  108. package/dist/bot-config/workflow-installer.d.ts.map +1 -0
  109. package/dist/bot-config/workflow-installer.js +346 -0
  110. package/dist/bot-config/workflow-installer.js.map +1 -0
  111. package/dist/cli.d.ts.map +1 -1
  112. package/dist/cli.js +12 -0
  113. package/dist/cli.js.map +1 -1
  114. package/dist/config.d.ts +23 -19
  115. package/dist/config.d.ts.map +1 -1
  116. package/dist/config.js +65 -27
  117. package/dist/config.js.map +1 -1
  118. package/dist/core.d.ts +6 -4
  119. package/dist/core.d.ts.map +1 -1
  120. package/dist/core.js +11 -16
  121. package/dist/core.js.map +1 -1
  122. package/dist/lib/logger.d.ts.map +1 -1
  123. package/dist/lib/logger.js +7 -4
  124. package/dist/lib/logger.js.map +1 -1
  125. package/dist/lib/request-logger.d.ts +19 -19
  126. package/dist/lib/request-logger.d.ts.map +1 -1
  127. package/dist/lib/request-logger.js +19 -19
  128. package/dist/lib/request-logger.js.map +1 -1
  129. package/dist/mcp/UserContextCache.d.ts +28 -22
  130. package/dist/mcp/UserContextCache.d.ts.map +1 -1
  131. package/dist/mcp/UserContextCache.js +23 -23
  132. package/dist/mcp/UserContextCache.js.map +1 -1
  133. package/dist/mcp/auth.js.map +1 -1
  134. package/dist/mcp/hailer-clients.d.ts +5 -4
  135. package/dist/mcp/hailer-clients.d.ts.map +1 -1
  136. package/dist/mcp/hailer-clients.js +61 -27
  137. package/dist/mcp/hailer-clients.js.map +1 -1
  138. package/dist/mcp/hailer-rpc.d.ts +40 -0
  139. package/dist/mcp/hailer-rpc.d.ts.map +1 -0
  140. package/dist/mcp/hailer-rpc.js +43 -0
  141. package/dist/mcp/hailer-rpc.js.map +1 -0
  142. package/dist/mcp/session-store.d.ts +16 -16
  143. package/dist/mcp/session-store.d.ts.map +1 -1
  144. package/dist/mcp/session-store.js +16 -16
  145. package/dist/mcp/session-store.js.map +1 -1
  146. package/dist/mcp/tool-profiles.d.ts +69 -0
  147. package/dist/mcp/tool-profiles.d.ts.map +1 -0
  148. package/dist/mcp/tool-profiles.js +176 -0
  149. package/dist/mcp/tool-profiles.js.map +1 -0
  150. package/dist/mcp/tool-registry.d.ts +16 -0
  151. package/dist/mcp/tool-registry.d.ts.map +1 -1
  152. package/dist/mcp/tool-registry.js +91 -39
  153. package/dist/mcp/tool-registry.js.map +1 -1
  154. package/dist/mcp/tools/activity.d.ts.map +1 -1
  155. package/dist/mcp/tools/activity.js +398 -198
  156. package/dist/mcp/tools/activity.js.map +1 -1
  157. package/dist/mcp/tools/aliases.d.ts +11 -0
  158. package/dist/mcp/tools/aliases.d.ts.map +1 -0
  159. package/dist/mcp/tools/aliases.js +176 -0
  160. package/dist/mcp/tools/aliases.js.map +1 -0
  161. package/dist/mcp/tools/app-core.d.ts +6 -8
  162. package/dist/mcp/tools/app-core.d.ts.map +1 -1
  163. package/dist/mcp/tools/app-core.js +355 -254
  164. package/dist/mcp/tools/app-core.js.map +1 -1
  165. package/dist/mcp/tools/app-marketplace.d.ts +8 -16
  166. package/dist/mcp/tools/app-marketplace.d.ts.map +1 -1
  167. package/dist/mcp/tools/app-marketplace.js +604 -930
  168. package/dist/mcp/tools/app-marketplace.js.map +1 -1
  169. package/dist/mcp/tools/app.d.ts +4 -7
  170. package/dist/mcp/tools/app.d.ts.map +1 -1
  171. package/dist/mcp/tools/app.js +4 -7
  172. package/dist/mcp/tools/app.js.map +1 -1
  173. package/dist/mcp/tools/bot-self.d.ts +21 -0
  174. package/dist/mcp/tools/bot-self.d.ts.map +1 -0
  175. package/dist/mcp/tools/bot-self.js +174 -0
  176. package/dist/mcp/tools/bot-self.js.map +1 -0
  177. package/dist/mcp/tools/calendar.d.ts +21 -0
  178. package/dist/mcp/tools/calendar.d.ts.map +1 -0
  179. package/dist/mcp/tools/calendar.js +741 -0
  180. package/dist/mcp/tools/calendar.js.map +1 -0
  181. package/dist/mcp/tools/company.d.ts.map +1 -1
  182. package/dist/mcp/tools/company.js +2 -1
  183. package/dist/mcp/tools/company.js.map +1 -1
  184. package/dist/mcp/tools/date.js.map +1 -1
  185. package/dist/mcp/tools/discussion.d.ts +23 -3
  186. package/dist/mcp/tools/discussion.d.ts.map +1 -1
  187. package/dist/mcp/tools/discussion.js +417 -534
  188. package/dist/mcp/tools/discussion.js.map +1 -1
  189. package/dist/mcp/tools/file.d.ts.map +1 -1
  190. package/dist/mcp/tools/file.js +18 -16
  191. package/dist/mcp/tools/file.js.map +1 -1
  192. package/dist/mcp/tools/index.js +4 -4
  193. package/dist/mcp/tools/index.js.map +1 -1
  194. package/dist/mcp/tools/insight.d.ts +7 -5
  195. package/dist/mcp/tools/insight.d.ts.map +1 -1
  196. package/dist/mcp/tools/insight.js +419 -477
  197. package/dist/mcp/tools/insight.js.map +1 -1
  198. package/dist/mcp/tools/user.d.ts.map +1 -1
  199. package/dist/mcp/tools/user.js +15 -13
  200. package/dist/mcp/tools/user.js.map +1 -1
  201. package/dist/mcp/tools/workflow-permissions.d.ts +2 -4
  202. package/dist/mcp/tools/workflow-permissions.d.ts.map +1 -1
  203. package/dist/mcp/tools/workflow-permissions.js +88 -97
  204. package/dist/mcp/tools/workflow-permissions.js.map +1 -1
  205. package/dist/mcp/tools/workflow.d.ts +2 -7
  206. package/dist/mcp/tools/workflow.d.ts.map +1 -1
  207. package/dist/mcp/tools/workflow.js +817 -850
  208. package/dist/mcp/tools/workflow.js.map +1 -1
  209. package/dist/mcp/utils/api-errors.d.ts.map +1 -1
  210. package/dist/mcp/utils/api-errors.js +2 -2
  211. package/dist/mcp/utils/api-errors.js.map +1 -1
  212. package/dist/mcp/utils/data-transformers.d.ts.map +1 -1
  213. package/dist/mcp/utils/data-transformers.js +8 -4
  214. package/dist/mcp/utils/data-transformers.js.map +1 -1
  215. package/dist/mcp/utils/file-upload.d.ts.map +1 -1
  216. package/dist/mcp/utils/file-upload.js +1 -1
  217. package/dist/mcp/utils/file-upload.js.map +1 -1
  218. package/dist/mcp/utils/hailer-api-client.d.ts +81 -81
  219. package/dist/mcp/utils/hailer-api-client.d.ts.map +1 -1
  220. package/dist/mcp/utils/hailer-api-client.js +103 -101
  221. package/dist/mcp/utils/hailer-api-client.js.map +1 -1
  222. package/dist/mcp/utils/index.d.ts.map +1 -1
  223. package/dist/mcp/utils/index.js.map +1 -1
  224. package/dist/mcp/utils/logger.d.ts.map +1 -1
  225. package/dist/mcp/utils/logger.js.map +1 -1
  226. package/dist/mcp/utils/response-builder.d.ts.map +1 -1
  227. package/dist/mcp/utils/response-builder.js +8 -4
  228. package/dist/mcp/utils/response-builder.js.map +1 -1
  229. package/dist/mcp/utils/role-utils.d.ts.map +1 -1
  230. package/dist/mcp/utils/role-utils.js +6 -3
  231. package/dist/mcp/utils/role-utils.js.map +1 -1
  232. package/dist/mcp/utils/tool-helpers.d.ts.map +1 -1
  233. package/dist/mcp/utils/tool-helpers.js +2 -2
  234. package/dist/mcp/utils/tool-helpers.js.map +1 -1
  235. package/dist/mcp/utils/types.d.ts +1 -1
  236. package/dist/mcp/utils/types.d.ts.map +1 -1
  237. package/dist/mcp/utils/types.js.map +1 -1
  238. package/dist/mcp/webhook-handler.d.ts +43 -8
  239. package/dist/mcp/webhook-handler.d.ts.map +1 -1
  240. package/dist/mcp/webhook-handler.js +861 -116
  241. package/dist/mcp/webhook-handler.js.map +1 -1
  242. package/dist/mcp/workspace-admin-store.d.ts +49 -0
  243. package/dist/mcp/workspace-admin-store.d.ts.map +1 -0
  244. package/dist/mcp/workspace-admin-store.js +168 -0
  245. package/dist/mcp/workspace-admin-store.js.map +1 -0
  246. package/dist/mcp/workspace-cache.d.ts +2 -2
  247. package/dist/mcp/workspace-cache.d.ts.map +1 -1
  248. package/dist/mcp/workspace-cache.js +9 -5
  249. package/dist/mcp/workspace-cache.js.map +1 -1
  250. package/dist/mcp-server.d.ts +26 -11
  251. package/dist/mcp-server.d.ts.map +1 -1
  252. package/dist/mcp-server.js +360 -36
  253. package/dist/mcp-server.js.map +1 -1
  254. package/dist/plugins/vipunen/client.d.ts +41 -41
  255. package/dist/plugins/vipunen/client.d.ts.map +1 -1
  256. package/dist/plugins/vipunen/client.js +53 -48
  257. package/dist/plugins/vipunen/client.js.map +1 -1
  258. package/dist/plugins/vipunen/index.js.map +1 -1
  259. package/dist/plugins/vipunen/tools.d.ts.map +1 -1
  260. package/dist/plugins/vipunen/tools.js +6 -3
  261. package/dist/plugins/vipunen/tools.js.map +1 -1
  262. package/dist/public-chat/graduate.d.ts +29 -0
  263. package/dist/public-chat/graduate.d.ts.map +1 -0
  264. package/dist/public-chat/graduate.js +593 -0
  265. package/dist/public-chat/graduate.js.map +1 -0
  266. package/dist/public-chat/handler.d.ts +12 -0
  267. package/dist/public-chat/handler.d.ts.map +1 -0
  268. package/dist/public-chat/handler.js +179 -0
  269. package/dist/public-chat/handler.js.map +1 -0
  270. package/dist/public-chat/index.d.ts +16 -0
  271. package/dist/public-chat/index.d.ts.map +1 -0
  272. package/dist/public-chat/index.js +74 -0
  273. package/dist/public-chat/index.js.map +1 -0
  274. package/dist/public-chat/knowledge.d.ts +3 -0
  275. package/dist/public-chat/knowledge.d.ts.map +1 -0
  276. package/dist/public-chat/knowledge.js +1339 -0
  277. package/dist/public-chat/knowledge.js.map +1 -0
  278. package/dist/public-chat/rate-limit.d.ts +16 -0
  279. package/dist/public-chat/rate-limit.d.ts.map +1 -0
  280. package/dist/public-chat/rate-limit.js +51 -0
  281. package/dist/public-chat/rate-limit.js.map +1 -0
  282. package/dist/public-chat/session-store.d.ts +41 -0
  283. package/dist/public-chat/session-store.d.ts.map +1 -0
  284. package/dist/public-chat/session-store.js +95 -0
  285. package/dist/public-chat/session-store.js.map +1 -0
  286. package/dist/public-chat/studio-prewarm.d.ts +61 -0
  287. package/dist/public-chat/studio-prewarm.d.ts.map +1 -0
  288. package/dist/public-chat/studio-prewarm.js +162 -0
  289. package/dist/public-chat/studio-prewarm.js.map +1 -0
  290. package/dist/public-chat/system-prompt.d.ts +22 -0
  291. package/dist/public-chat/system-prompt.d.ts.map +1 -0
  292. package/dist/public-chat/system-prompt.js +428 -0
  293. package/dist/public-chat/system-prompt.js.map +1 -0
  294. package/package.json +14 -6
  295. package/scripts/build-public-chat-knowledge.py +101 -0
  296. package/scripts/probe-mcp-pricing.ts +52 -0
  297. package/scripts/smoke-public-chat-live.ts +148 -0
  298. package/scripts/smoke-public-chat.ts +110 -0
  299. package/.claude/CLAUDE.md +0 -126
  300. package/.claude/commands/audit-squad.md +0 -158
  301. package/.claude/commands/cleanup-squad.md +0 -98
  302. package/.claude/commands/config-squad.md +0 -106
  303. package/.claude/commands/crud-squad.md +0 -87
  304. package/.claude/commands/data-squad.md +0 -97
  305. package/.claude/commands/doc-squad.md +0 -65
  306. package/.claude/commands/help.md +0 -29
  307. package/.claude/commands/help:agents.md +0 -182
  308. package/.claude/commands/help:commands.md +0 -78
  309. package/.claude/commands/help:faq.md +0 -79
  310. package/.claude/commands/help:plugins.md +0 -50
  311. package/.claude/commands/help:skills.md +0 -87
  312. package/.claude/commands/help:tools.md +0 -75
  313. package/.claude/commands/hotfix-squad.md +0 -112
  314. package/.claude/commands/integration-squad.md +0 -82
  315. package/.claude/commands/janitor-squad.md +0 -167
  316. package/.claude/commands/onboard-squad.md +0 -130
  317. package/.claude/commands/swarm.md +0 -210
  318. package/.claude/commands/tool-builder.md +0 -39
  319. package/.claude/skills/publish-hailer-app/SKILL.md +0 -280
  320. package/dist/CLAUDE.md +0 -370
  321. package/dist/agents/bot-manager.d.ts +0 -48
  322. package/dist/agents/bot-manager.d.ts.map +0 -1
  323. package/dist/agents/bot-manager.js +0 -254
  324. package/dist/agents/bot-manager.js.map +0 -1
  325. package/dist/agents/bug-fixer/ai.d.ts +0 -80
  326. package/dist/agents/bug-fixer/ai.d.ts.map +0 -1
  327. package/dist/agents/bug-fixer/ai.js +0 -466
  328. package/dist/agents/bug-fixer/ai.js.map +0 -1
  329. package/dist/agents/bug-fixer/bot.d.ts +0 -92
  330. package/dist/agents/bug-fixer/bot.d.ts.map +0 -1
  331. package/dist/agents/bug-fixer/bot.js +0 -687
  332. package/dist/agents/bug-fixer/bot.js.map +0 -1
  333. package/dist/agents/bug-fixer/config.d.ts +0 -21
  334. package/dist/agents/bug-fixer/config.d.ts.map +0 -1
  335. package/dist/agents/bug-fixer/config.js +0 -218
  336. package/dist/agents/bug-fixer/config.js.map +0 -1
  337. package/dist/agents/bug-fixer/files.d.ts +0 -67
  338. package/dist/agents/bug-fixer/files.d.ts.map +0 -1
  339. package/dist/agents/bug-fixer/files.js +0 -386
  340. package/dist/agents/bug-fixer/files.js.map +0 -1
  341. package/dist/agents/bug-fixer/git.d.ts +0 -48
  342. package/dist/agents/bug-fixer/git.d.ts.map +0 -1
  343. package/dist/agents/bug-fixer/git.js +0 -298
  344. package/dist/agents/bug-fixer/git.js.map +0 -1
  345. package/dist/agents/bug-fixer/index.d.ts +0 -103
  346. package/dist/agents/bug-fixer/index.d.ts.map +0 -1
  347. package/dist/agents/bug-fixer/index.js +0 -262
  348. package/dist/agents/bug-fixer/index.js.map +0 -1
  349. package/dist/agents/bug-fixer/lsp.d.ts +0 -113
  350. package/dist/agents/bug-fixer/lsp.d.ts.map +0 -1
  351. package/dist/agents/bug-fixer/lsp.js +0 -485
  352. package/dist/agents/bug-fixer/lsp.js.map +0 -1
  353. package/dist/agents/bug-fixer/monitor.d.ts +0 -123
  354. package/dist/agents/bug-fixer/monitor.d.ts.map +0 -1
  355. package/dist/agents/bug-fixer/monitor.js +0 -629
  356. package/dist/agents/bug-fixer/monitor.js.map +0 -1
  357. package/dist/agents/bug-fixer/prompt.d.ts +0 -5
  358. package/dist/agents/bug-fixer/prompt.d.ts.map +0 -1
  359. package/dist/agents/bug-fixer/prompt.js +0 -94
  360. package/dist/agents/bug-fixer/prompt.js.map +0 -1
  361. package/dist/agents/bug-fixer/registries/pending-classification.d.ts +0 -28
  362. package/dist/agents/bug-fixer/registries/pending-classification.d.ts.map +0 -1
  363. package/dist/agents/bug-fixer/registries/pending-classification.js +0 -50
  364. package/dist/agents/bug-fixer/registries/pending-classification.js.map +0 -1
  365. package/dist/agents/bug-fixer/registries/pending-fix.d.ts +0 -33
  366. package/dist/agents/bug-fixer/registries/pending-fix.d.ts.map +0 -1
  367. package/dist/agents/bug-fixer/registries/pending-fix.js +0 -64
  368. package/dist/agents/bug-fixer/registries/pending-fix.js.map +0 -1
  369. package/dist/agents/bug-fixer/registries/pending.d.ts +0 -27
  370. package/dist/agents/bug-fixer/registries/pending.d.ts.map +0 -1
  371. package/dist/agents/bug-fixer/registries/pending.js +0 -49
  372. package/dist/agents/bug-fixer/registries/pending.js.map +0 -1
  373. package/dist/agents/bug-fixer/specialist-daemon.d.ts +0 -88
  374. package/dist/agents/bug-fixer/specialist-daemon.d.ts.map +0 -1
  375. package/dist/agents/bug-fixer/specialist-daemon.js +0 -431
  376. package/dist/agents/bug-fixer/specialist-daemon.js.map +0 -1
  377. package/dist/agents/bug-fixer/specialist.d.ts +0 -47
  378. package/dist/agents/bug-fixer/specialist.d.ts.map +0 -1
  379. package/dist/agents/bug-fixer/specialist.js +0 -327
  380. package/dist/agents/bug-fixer/specialist.js.map +0 -1
  381. package/dist/agents/bug-fixer/types.d.ts +0 -123
  382. package/dist/agents/bug-fixer/types.d.ts.map +0 -1
  383. package/dist/agents/bug-fixer/types.js +0 -9
  384. package/dist/agents/bug-fixer/types.js.map +0 -1
  385. package/dist/agents/factory.d.ts +0 -172
  386. package/dist/agents/factory.d.ts.map +0 -1
  387. package/dist/agents/factory.js +0 -706
  388. package/dist/agents/factory.js.map +0 -1
  389. package/dist/agents/hailer-expert/index.d.ts +0 -8
  390. package/dist/agents/hailer-expert/index.d.ts.map +0 -1
  391. package/dist/agents/hailer-expert/index.js +0 -14
  392. package/dist/agents/hailer-expert/index.js.map +0 -1
  393. package/dist/agents/hal/daemon.d.ts +0 -174
  394. package/dist/agents/hal/daemon.d.ts.map +0 -1
  395. package/dist/agents/hal/daemon.js +0 -1385
  396. package/dist/agents/hal/daemon.js.map +0 -1
  397. package/dist/agents/hal/definitions.d.ts +0 -42
  398. package/dist/agents/hal/definitions.d.ts.map +0 -1
  399. package/dist/agents/hal/definitions.js +0 -300
  400. package/dist/agents/hal/definitions.js.map +0 -1
  401. package/dist/agents/hal/index.d.ts +0 -3
  402. package/dist/agents/hal/index.d.ts.map +0 -1
  403. package/dist/agents/hal/index.js +0 -8
  404. package/dist/agents/hal/index.js.map +0 -1
  405. package/dist/agents/index.d.ts +0 -18
  406. package/dist/agents/index.d.ts.map +0 -1
  407. package/dist/agents/index.js +0 -48
  408. package/dist/agents/index.js.map +0 -1
  409. package/dist/agents/shared/base.d.ts +0 -253
  410. package/dist/agents/shared/base.d.ts.map +0 -1
  411. package/dist/agents/shared/base.js +0 -1122
  412. package/dist/agents/shared/base.js.map +0 -1
  413. package/dist/agents/shared/schemas/action-schema.d.ts +0 -62
  414. package/dist/agents/shared/schemas/action-schema.d.ts.map +0 -1
  415. package/dist/agents/shared/schemas/action-schema.js +0 -483
  416. package/dist/agents/shared/schemas/action-schema.js.map +0 -1
  417. package/dist/agents/shared/services/agent-registry.d.ts +0 -108
  418. package/dist/agents/shared/services/agent-registry.d.ts.map +0 -1
  419. package/dist/agents/shared/services/agent-registry.js +0 -469
  420. package/dist/agents/shared/services/agent-registry.js.map +0 -1
  421. package/dist/agents/shared/services/conversation-manager.d.ts +0 -57
  422. package/dist/agents/shared/services/conversation-manager.d.ts.map +0 -1
  423. package/dist/agents/shared/services/conversation-manager.js +0 -168
  424. package/dist/agents/shared/services/conversation-manager.js.map +0 -1
  425. package/dist/agents/shared/services/mcp-client.d.ts +0 -56
  426. package/dist/agents/shared/services/mcp-client.d.ts.map +0 -1
  427. package/dist/agents/shared/services/mcp-client.js +0 -124
  428. package/dist/agents/shared/services/mcp-client.js.map +0 -1
  429. package/dist/agents/shared/services/message-classifier.d.ts +0 -37
  430. package/dist/agents/shared/services/message-classifier.d.ts.map +0 -1
  431. package/dist/agents/shared/services/message-classifier.js +0 -203
  432. package/dist/agents/shared/services/message-classifier.js.map +0 -1
  433. package/dist/agents/shared/services/message-formatter.d.ts +0 -89
  434. package/dist/agents/shared/services/message-formatter.d.ts.map +0 -1
  435. package/dist/agents/shared/services/message-formatter.js +0 -390
  436. package/dist/agents/shared/services/message-formatter.js.map +0 -1
  437. package/dist/agents/shared/services/session-logger.d.ts +0 -162
  438. package/dist/agents/shared/services/session-logger.d.ts.map +0 -1
  439. package/dist/agents/shared/services/session-logger.js +0 -724
  440. package/dist/agents/shared/services/session-logger.js.map +0 -1
  441. package/dist/agents/shared/services/structured-output-executor.d.ts +0 -88
  442. package/dist/agents/shared/services/structured-output-executor.d.ts.map +0 -1
  443. package/dist/agents/shared/services/structured-output-executor.js +0 -296
  444. package/dist/agents/shared/services/structured-output-executor.js.map +0 -1
  445. package/dist/agents/shared/services/token-billing.d.ts +0 -72
  446. package/dist/agents/shared/services/token-billing.d.ts.map +0 -1
  447. package/dist/agents/shared/services/token-billing.js +0 -198
  448. package/dist/agents/shared/services/token-billing.js.map +0 -1
  449. package/dist/agents/shared/services/tool-executor.d.ts +0 -43
  450. package/dist/agents/shared/services/tool-executor.d.ts.map +0 -1
  451. package/dist/agents/shared/services/tool-executor.js +0 -175
  452. package/dist/agents/shared/services/tool-executor.js.map +0 -1
  453. package/dist/agents/shared/services/typing-indicator.d.ts +0 -24
  454. package/dist/agents/shared/services/typing-indicator.d.ts.map +0 -1
  455. package/dist/agents/shared/services/typing-indicator.js +0 -54
  456. package/dist/agents/shared/services/typing-indicator.js.map +0 -1
  457. package/dist/agents/shared/services/workspace-schema-cache.d.ts +0 -122
  458. package/dist/agents/shared/services/workspace-schema-cache.d.ts.map +0 -1
  459. package/dist/agents/shared/services/workspace-schema-cache.js +0 -507
  460. package/dist/agents/shared/services/workspace-schema-cache.js.map +0 -1
  461. package/dist/agents/shared/specialist.d.ts +0 -91
  462. package/dist/agents/shared/specialist.d.ts.map +0 -1
  463. package/dist/agents/shared/specialist.js +0 -399
  464. package/dist/agents/shared/specialist.js.map +0 -1
  465. package/dist/agents/shared/tool-schema-loader.d.ts +0 -65
  466. package/dist/agents/shared/tool-schema-loader.d.ts.map +0 -1
  467. package/dist/agents/shared/tool-schema-loader.js +0 -238
  468. package/dist/agents/shared/tool-schema-loader.js.map +0 -1
  469. package/dist/agents/shared/types.d.ts +0 -190
  470. package/dist/agents/shared/types.d.ts.map +0 -1
  471. package/dist/agents/shared/types.js +0 -13
  472. package/dist/agents/shared/types.js.map +0 -1
  473. package/dist/bot/bot-config.d.ts +0 -37
  474. package/dist/bot/bot-config.d.ts.map +0 -1
  475. package/dist/bot/bot-config.js +0 -219
  476. package/dist/bot/bot-config.js.map +0 -1
  477. package/dist/bot/services/__tests__/permission-guard.test.d.ts +0 -2
  478. package/dist/bot/services/__tests__/permission-guard.test.d.ts.map +0 -1
  479. package/dist/bot/services/__tests__/permission-guard.test.js +0 -357
  480. package/dist/bot/services/__tests__/permission-guard.test.js.map +0 -1
  481. package/dist/bot/services/session-logger.d.ts +0 -162
  482. package/dist/bot/services/session-logger.d.ts.map +0 -1
  483. package/dist/bot/services/session-logger.js +0 -724
  484. package/dist/bot/services/session-logger.js.map +0 -1
  485. package/dist/bot/services/workspace-schema-cache.d.ts +0 -122
  486. package/dist/bot/services/workspace-schema-cache.d.ts.map +0 -1
  487. package/dist/bot/services/workspace-schema-cache.js +0 -506
  488. package/dist/bot/services/workspace-schema-cache.js.map +0 -1
  489. package/dist/bot-config/tools.d.ts +0 -28
  490. package/dist/bot-config/tools.d.ts.map +0 -1
  491. package/dist/bot-config/tools.js +0 -279
  492. package/dist/bot-config/tools.js.map +0 -1
  493. package/dist/client/agents/base.d.ts +0 -207
  494. package/dist/client/agents/base.d.ts.map +0 -1
  495. package/dist/client/agents/base.js +0 -744
  496. package/dist/client/agents/base.js.map +0 -1
  497. package/dist/client/agents/definitions.d.ts +0 -53
  498. package/dist/client/agents/definitions.d.ts.map +0 -1
  499. package/dist/client/agents/definitions.js +0 -263
  500. package/dist/client/agents/definitions.js.map +0 -1
  501. package/dist/client/agents/orchestrator.d.ts +0 -141
  502. package/dist/client/agents/orchestrator.d.ts.map +0 -1
  503. package/dist/client/agents/orchestrator.js +0 -1062
  504. package/dist/client/agents/orchestrator.js.map +0 -1
  505. package/dist/client/agents/specialist.d.ts +0 -86
  506. package/dist/client/agents/specialist.d.ts.map +0 -1
  507. package/dist/client/agents/specialist.js +0 -340
  508. package/dist/client/agents/specialist.js.map +0 -1
  509. package/dist/client/bot-entrypoint.d.ts +0 -7
  510. package/dist/client/bot-entrypoint.d.ts.map +0 -1
  511. package/dist/client/bot-entrypoint.js +0 -103
  512. package/dist/client/bot-entrypoint.js.map +0 -1
  513. package/dist/client/bot-manager.d.ts +0 -44
  514. package/dist/client/bot-manager.d.ts.map +0 -1
  515. package/dist/client/bot-manager.js +0 -173
  516. package/dist/client/bot-manager.js.map +0 -1
  517. package/dist/client/bot-runner.d.ts +0 -35
  518. package/dist/client/bot-runner.d.ts.map +0 -1
  519. package/dist/client/bot-runner.js +0 -188
  520. package/dist/client/bot-runner.js.map +0 -1
  521. package/dist/client/chat-agent-daemon.d.ts +0 -464
  522. package/dist/client/chat-agent-daemon.d.ts.map +0 -1
  523. package/dist/client/chat-agent-daemon.js +0 -1774
  524. package/dist/client/chat-agent-daemon.js.map +0 -1
  525. package/dist/client/daemon-factory.d.ts +0 -106
  526. package/dist/client/daemon-factory.d.ts.map +0 -1
  527. package/dist/client/daemon-factory.js +0 -301
  528. package/dist/client/daemon-factory.js.map +0 -1
  529. package/dist/client/factory.d.ts +0 -111
  530. package/dist/client/factory.d.ts.map +0 -1
  531. package/dist/client/factory.js +0 -314
  532. package/dist/client/factory.js.map +0 -1
  533. package/dist/client/index.d.ts +0 -17
  534. package/dist/client/index.d.ts.map +0 -1
  535. package/dist/client/index.js +0 -38
  536. package/dist/client/index.js.map +0 -1
  537. package/dist/client/multi-bot-manager.d.ts +0 -42
  538. package/dist/client/multi-bot-manager.d.ts.map +0 -1
  539. package/dist/client/multi-bot-manager.js +0 -161
  540. package/dist/client/multi-bot-manager.js.map +0 -1
  541. package/dist/client/orchestrator-daemon.d.ts +0 -87
  542. package/dist/client/orchestrator-daemon.d.ts.map +0 -1
  543. package/dist/client/orchestrator-daemon.js +0 -444
  544. package/dist/client/orchestrator-daemon.js.map +0 -1
  545. package/dist/client/server.d.ts +0 -8
  546. package/dist/client/server.d.ts.map +0 -1
  547. package/dist/client/server.js +0 -251
  548. package/dist/client/server.js.map +0 -1
  549. package/dist/client/services/agent-registry.d.ts +0 -108
  550. package/dist/client/services/agent-registry.d.ts.map +0 -1
  551. package/dist/client/services/agent-registry.js +0 -630
  552. package/dist/client/services/agent-registry.js.map +0 -1
  553. package/dist/client/services/conversation-manager.d.ts +0 -50
  554. package/dist/client/services/conversation-manager.d.ts.map +0 -1
  555. package/dist/client/services/conversation-manager.js +0 -136
  556. package/dist/client/services/conversation-manager.js.map +0 -1
  557. package/dist/client/services/mcp-client.d.ts +0 -48
  558. package/dist/client/services/mcp-client.d.ts.map +0 -1
  559. package/dist/client/services/mcp-client.js +0 -105
  560. package/dist/client/services/mcp-client.js.map +0 -1
  561. package/dist/client/services/message-classifier.d.ts +0 -37
  562. package/dist/client/services/message-classifier.d.ts.map +0 -1
  563. package/dist/client/services/message-classifier.js +0 -187
  564. package/dist/client/services/message-classifier.js.map +0 -1
  565. package/dist/client/services/message-formatter.d.ts +0 -84
  566. package/dist/client/services/message-formatter.d.ts.map +0 -1
  567. package/dist/client/services/message-formatter.js +0 -353
  568. package/dist/client/services/message-formatter.js.map +0 -1
  569. package/dist/client/services/session-logger.d.ts +0 -106
  570. package/dist/client/services/session-logger.d.ts.map +0 -1
  571. package/dist/client/services/session-logger.js +0 -446
  572. package/dist/client/services/session-logger.js.map +0 -1
  573. package/dist/client/services/tool-executor.d.ts +0 -41
  574. package/dist/client/services/tool-executor.d.ts.map +0 -1
  575. package/dist/client/services/tool-executor.js +0 -169
  576. package/dist/client/services/tool-executor.js.map +0 -1
  577. package/dist/client/services/workspace-schema-cache.d.ts +0 -149
  578. package/dist/client/services/workspace-schema-cache.d.ts.map +0 -1
  579. package/dist/client/services/workspace-schema-cache.js +0 -732
  580. package/dist/client/services/workspace-schema-cache.js.map +0 -1
  581. package/dist/client/specialist-daemon.d.ts +0 -77
  582. package/dist/client/specialist-daemon.d.ts.map +0 -1
  583. package/dist/client/specialist-daemon.js +0 -197
  584. package/dist/client/specialist-daemon.js.map +0 -1
  585. package/dist/client/specialists.d.ts +0 -53
  586. package/dist/client/specialists.d.ts.map +0 -1
  587. package/dist/client/specialists.js +0 -178
  588. package/dist/client/specialists.js.map +0 -1
  589. package/dist/client/tool-schema-loader.d.ts +0 -62
  590. package/dist/client/tool-schema-loader.d.ts.map +0 -1
  591. package/dist/client/tool-schema-loader.js +0 -232
  592. package/dist/client/tool-schema-loader.js.map +0 -1
  593. package/dist/client/types.d.ts +0 -327
  594. package/dist/client/types.d.ts.map +0 -1
  595. package/dist/client/types.js +0 -121
  596. package/dist/client/types.js.map +0 -1
  597. package/dist/commands/seed-config.d.ts +0 -9
  598. package/dist/commands/seed-config.d.ts.map +0 -1
  599. package/dist/commands/seed-config.js +0 -377
  600. package/dist/commands/seed-config.js.map +0 -1
  601. package/dist/commands/setup.d.ts +0 -11
  602. package/dist/commands/setup.d.ts.map +0 -1
  603. package/dist/commands/setup.js +0 -320
  604. package/dist/commands/setup.js.map +0 -1
  605. package/dist/lib/discussion-lock.d.ts +0 -42
  606. package/dist/lib/discussion-lock.d.ts.map +0 -1
  607. package/dist/lib/discussion-lock.js +0 -110
  608. package/dist/lib/discussion-lock.js.map +0 -1
  609. package/dist/mcp/signal-handler.d.ts +0 -82
  610. package/dist/mcp/signal-handler.d.ts.map +0 -1
  611. package/dist/mcp/signal-handler.js +0 -406
  612. package/dist/mcp/signal-handler.js.map +0 -1
  613. package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts +0 -2
  614. package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts.map +0 -1
  615. package/dist/mcp/tools/__tests__/discussion-forward.test.js +0 -218
  616. package/dist/mcp/tools/__tests__/discussion-forward.test.js.map +0 -1
  617. package/dist/mcp/tools/app-member.d.ts +0 -14
  618. package/dist/mcp/tools/app-member.d.ts.map +0 -1
  619. package/dist/mcp/tools/app-member.js +0 -195
  620. package/dist/mcp/tools/app-member.js.map +0 -1
  621. package/dist/mcp/tools/app-scaffold.d.ts +0 -14
  622. package/dist/mcp/tools/app-scaffold.d.ts.map +0 -1
  623. package/dist/mcp/tools/app-scaffold.js +0 -581
  624. package/dist/mcp/tools/app-scaffold.js.map +0 -1
  625. package/dist/mcp/tools/bot-config/constants.d.ts +0 -23
  626. package/dist/mcp/tools/bot-config/constants.d.ts.map +0 -1
  627. package/dist/mcp/tools/bot-config/constants.js +0 -94
  628. package/dist/mcp/tools/bot-config/constants.js.map +0 -1
  629. package/dist/mcp/tools/bot-config/core.d.ts +0 -253
  630. package/dist/mcp/tools/bot-config/core.d.ts.map +0 -1
  631. package/dist/mcp/tools/bot-config/core.js +0 -2456
  632. package/dist/mcp/tools/bot-config/core.js.map +0 -1
  633. package/dist/mcp/tools/bot-config/index.d.ts +0 -10
  634. package/dist/mcp/tools/bot-config/index.d.ts.map +0 -1
  635. package/dist/mcp/tools/bot-config/index.js +0 -59
  636. package/dist/mcp/tools/bot-config/index.js.map +0 -1
  637. package/dist/mcp/tools/bot-config/tools.d.ts +0 -7
  638. package/dist/mcp/tools/bot-config/tools.d.ts.map +0 -1
  639. package/dist/mcp/tools/bot-config/tools.js +0 -15
  640. package/dist/mcp/tools/bot-config/tools.js.map +0 -1
  641. package/dist/mcp/tools/bot-config/types.d.ts +0 -50
  642. package/dist/mcp/tools/bot-config/types.d.ts.map +0 -1
  643. package/dist/mcp/tools/bot-config/types.js +0 -6
  644. package/dist/mcp/tools/bot-config/types.js.map +0 -1
  645. package/dist/mcp/tools/bug-fixer-tools.d.ts +0 -45
  646. package/dist/mcp/tools/bug-fixer-tools.d.ts.map +0 -1
  647. package/dist/mcp/tools/bug-fixer-tools.js +0 -1096
  648. package/dist/mcp/tools/bug-fixer-tools.js.map +0 -1
  649. package/dist/mcp/tools/document.d.ts +0 -11
  650. package/dist/mcp/tools/document.d.ts.map +0 -1
  651. package/dist/mcp/tools/document.js +0 -741
  652. package/dist/mcp/tools/document.js.map +0 -1
  653. package/dist/mcp/tools/investigate.d.ts +0 -9
  654. package/dist/mcp/tools/investigate.d.ts.map +0 -1
  655. package/dist/mcp/tools/investigate.js +0 -254
  656. package/dist/mcp/tools/investigate.js.map +0 -1
  657. package/dist/mcp/utils/pagination.d.ts +0 -40
  658. package/dist/mcp/utils/pagination.d.ts.map +0 -1
  659. package/dist/mcp/utils/pagination.js +0 -55
  660. package/dist/mcp/utils/pagination.js.map +0 -1
  661. package/dist/modules/bug-reports/bug-config.d.ts +0 -25
  662. package/dist/modules/bug-reports/bug-config.d.ts.map +0 -1
  663. package/dist/modules/bug-reports/bug-config.js +0 -187
  664. package/dist/modules/bug-reports/bug-config.js.map +0 -1
  665. package/dist/modules/bug-reports/bug-monitor.d.ts +0 -108
  666. package/dist/modules/bug-reports/bug-monitor.d.ts.map +0 -1
  667. package/dist/modules/bug-reports/bug-monitor.js +0 -510
  668. package/dist/modules/bug-reports/bug-monitor.js.map +0 -1
  669. package/dist/modules/bug-reports/giuseppe-agent.d.ts +0 -58
  670. package/dist/modules/bug-reports/giuseppe-agent.d.ts.map +0 -1
  671. package/dist/modules/bug-reports/giuseppe-agent.js +0 -467
  672. package/dist/modules/bug-reports/giuseppe-agent.js.map +0 -1
  673. package/dist/modules/bug-reports/giuseppe-ai.d.ts +0 -83
  674. package/dist/modules/bug-reports/giuseppe-ai.d.ts.map +0 -1
  675. package/dist/modules/bug-reports/giuseppe-ai.js +0 -466
  676. package/dist/modules/bug-reports/giuseppe-ai.js.map +0 -1
  677. package/dist/modules/bug-reports/giuseppe-bot.d.ts +0 -110
  678. package/dist/modules/bug-reports/giuseppe-bot.d.ts.map +0 -1
  679. package/dist/modules/bug-reports/giuseppe-bot.js +0 -804
  680. package/dist/modules/bug-reports/giuseppe-bot.js.map +0 -1
  681. package/dist/modules/bug-reports/giuseppe-daemon.d.ts +0 -80
  682. package/dist/modules/bug-reports/giuseppe-daemon.d.ts.map +0 -1
  683. package/dist/modules/bug-reports/giuseppe-daemon.js +0 -617
  684. package/dist/modules/bug-reports/giuseppe-daemon.js.map +0 -1
  685. package/dist/modules/bug-reports/giuseppe-files.d.ts +0 -64
  686. package/dist/modules/bug-reports/giuseppe-files.d.ts.map +0 -1
  687. package/dist/modules/bug-reports/giuseppe-files.js +0 -375
  688. package/dist/modules/bug-reports/giuseppe-files.js.map +0 -1
  689. package/dist/modules/bug-reports/giuseppe-git.d.ts +0 -48
  690. package/dist/modules/bug-reports/giuseppe-git.d.ts.map +0 -1
  691. package/dist/modules/bug-reports/giuseppe-git.js +0 -298
  692. package/dist/modules/bug-reports/giuseppe-git.js.map +0 -1
  693. package/dist/modules/bug-reports/giuseppe-lsp.d.ts +0 -113
  694. package/dist/modules/bug-reports/giuseppe-lsp.d.ts.map +0 -1
  695. package/dist/modules/bug-reports/giuseppe-lsp.js +0 -485
  696. package/dist/modules/bug-reports/giuseppe-lsp.js.map +0 -1
  697. package/dist/modules/bug-reports/giuseppe-prompt.d.ts +0 -5
  698. package/dist/modules/bug-reports/giuseppe-prompt.d.ts.map +0 -1
  699. package/dist/modules/bug-reports/giuseppe-prompt.js +0 -94
  700. package/dist/modules/bug-reports/giuseppe-prompt.js.map +0 -1
  701. package/dist/modules/bug-reports/index.d.ts +0 -77
  702. package/dist/modules/bug-reports/index.d.ts.map +0 -1
  703. package/dist/modules/bug-reports/index.js +0 -215
  704. package/dist/modules/bug-reports/index.js.map +0 -1
  705. package/dist/modules/bug-reports/pending-classification-registry.d.ts +0 -28
  706. package/dist/modules/bug-reports/pending-classification-registry.d.ts.map +0 -1
  707. package/dist/modules/bug-reports/pending-classification-registry.js +0 -50
  708. package/dist/modules/bug-reports/pending-classification-registry.js.map +0 -1
  709. package/dist/modules/bug-reports/pending-fix-registry.d.ts +0 -30
  710. package/dist/modules/bug-reports/pending-fix-registry.d.ts.map +0 -1
  711. package/dist/modules/bug-reports/pending-fix-registry.js +0 -42
  712. package/dist/modules/bug-reports/pending-fix-registry.js.map +0 -1
  713. package/dist/modules/bug-reports/pending-registry.d.ts +0 -27
  714. package/dist/modules/bug-reports/pending-registry.d.ts.map +0 -1
  715. package/dist/modules/bug-reports/pending-registry.js +0 -49
  716. package/dist/modules/bug-reports/pending-registry.js.map +0 -1
  717. package/dist/modules/bug-reports/types.d.ts +0 -123
  718. package/dist/modules/bug-reports/types.d.ts.map +0 -1
  719. package/dist/modules/bug-reports/types.js +0 -9
  720. package/dist/modules/bug-reports/types.js.map +0 -1
  721. package/dist/plugins/bug-fixer/index.d.ts +0 -2
  722. package/dist/plugins/bug-fixer/index.d.ts.map +0 -1
  723. package/dist/plugins/bug-fixer/index.js +0 -18
  724. package/dist/plugins/bug-fixer/index.js.map +0 -1
  725. package/dist/plugins/bug-fixer/tools.d.ts +0 -45
  726. package/dist/plugins/bug-fixer/tools.d.ts.map +0 -1
  727. package/dist/plugins/bug-fixer/tools.js +0 -1096
  728. package/dist/plugins/bug-fixer/tools.js.map +0 -1
  729. package/dist/plugins/vipunen/__tests__/tools.test.d.ts +0 -10
  730. package/dist/plugins/vipunen/__tests__/tools.test.d.ts.map +0 -1
  731. package/dist/plugins/vipunen/__tests__/tools.test.js +0 -646
  732. package/dist/plugins/vipunen/__tests__/tools.test.js.map +0 -1
  733. package/dist/routes/agents.d.ts +0 -44
  734. package/dist/routes/agents.d.ts.map +0 -1
  735. package/dist/routes/agents.js +0 -311
  736. package/dist/routes/agents.js.map +0 -1
  737. package/dist/services/agent-credential-store.d.ts +0 -73
  738. package/dist/services/agent-credential-store.d.ts.map +0 -1
  739. package/dist/services/agent-credential-store.js +0 -212
  740. package/dist/services/agent-credential-store.js.map +0 -1
  741. package/dist/stdio-server.d.ts +0 -14
  742. package/dist/stdio-server.d.ts.map +0 -1
  743. package/dist/stdio-server.js +0 -101
  744. package/dist/stdio-server.js.map +0 -1
  745. package/dist/workspace/context.d.ts +0 -148
  746. package/dist/workspace/context.d.ts.map +0 -1
  747. package/dist/workspace/context.js +0 -339
  748. package/dist/workspace/context.js.map +0 -1
  749. package/dist/workspace/credentials.d.ts +0 -55
  750. package/dist/workspace/credentials.d.ts.map +0 -1
  751. package/dist/workspace/credentials.js +0 -239
  752. package/dist/workspace/credentials.js.map +0 -1
  753. package/dist/workspace/index.d.ts +0 -21
  754. package/dist/workspace/index.d.ts.map +0 -1
  755. package/dist/workspace/index.js +0 -45
  756. package/dist/workspace/index.js.map +0 -1
  757. package/dist/workspace/loader.d.ts +0 -27
  758. package/dist/workspace/loader.d.ts.map +0 -1
  759. package/dist/workspace/loader.js +0 -222
  760. package/dist/workspace/loader.js.map +0 -1
  761. package/dist/workspace/schema.d.ts +0 -37
  762. package/dist/workspace/schema.d.ts.map +0 -1
  763. package/dist/workspace/schema.js +0 -192
  764. package/dist/workspace/schema.js.map +0 -1
@@ -0,0 +1,741 @@
1
+ "use strict";
2
+ /**
3
+ * Calendar Tools
4
+ *
5
+ * Tools for managing Hailer calendar events.
6
+ *
7
+ * v2 tool surface (docs/TOOL-SURFACE-V2.md):
8
+ * - query_events merges list_events + get_event + upcoming_events
9
+ * - manage_calendar merges list_calendars + create_calendar + update_calendar
10
+ * - update_event absorbs remove_attendee (removeAttendees param)
11
+ * - delete_calendar stays a separate NUCLEAR tool (deliberate deviation from the doc)
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.calendarTools = exports.respondToInviteTool = exports.deleteEventTool = exports.updateEventTool = exports.createEventTool = exports.deleteCalendarTool = exports.manageCalendarTool = exports.queryEventsTool = void 0;
15
+ const zod_1 = require("zod");
16
+ const tool_registry_1 = require("../tool-registry");
17
+ const logger_1 = require("../../lib/logger");
18
+ const request_logger_1 = require("../../lib/request-logger");
19
+ const logger = (0, logger_1.createLogger)({ component: 'calendar-tools' });
20
+ const VALID_ID_LENGTH = 24;
21
+ const TIME_OPTS = { hour: '2-digit', minute: '2-digit' };
22
+ /** Convert ISO string or timestamp to ms timestamp, returns NaN on failure */
23
+ function toTimestamp(value) {
24
+ return typeof value === 'string' ? new Date(value).getTime() : value;
25
+ }
26
+ /** True when an optional string|number param was actually passed (0 and '' count as provided) */
27
+ function isProvided(value) {
28
+ return typeof value === 'number' || typeof value === 'string';
29
+ }
30
+ // ============================================================================
31
+ // QUERY EVENTS TOOL (merges list_events + get_event + upcoming_events)
32
+ // ============================================================================
33
+ /** Single-event mode — former get_event body */
34
+ async function loadSingleEvent(eventId, context) {
35
+ try {
36
+ const event = await context.hailer.request('calendar.load_event', [eventId]);
37
+ if (!event) {
38
+ return { content: [{ type: 'text', text: `No event found with ID \`${eventId}\`.` }] };
39
+ }
40
+ let text = `📅 **${event.title || 'Untitled'}**\n\n`;
41
+ const startDate = new Date(event.start);
42
+ const endDate = new Date(event.end);
43
+ const allDayLine = `**When:** ${startDate.toLocaleDateString()} — ${endDate.toLocaleDateString()} (all day)\n`;
44
+ const timedLines = `**Start:** ${startDate.toLocaleString()}\n**End:** ${endDate.toLocaleString()}\n`;
45
+ text += event.allDay ? allDayLine : timedLines;
46
+ if (event.location) {
47
+ text += `**Location:** ${event.location}\n`;
48
+ }
49
+ if (event.notes) {
50
+ text += `**Notes:** ${event.notes}\n`;
51
+ }
52
+ if (event.calendar) {
53
+ text += `**Calendar:** ${event.calendar.name} (\`${event.calendar_id}\`)\n`;
54
+ }
55
+ text += `**Event ID:** \`${event._id}\`\n`;
56
+ if (event.repeat_id) {
57
+ text += `**Repeat series:** \`${event.repeat_id}\`\n`;
58
+ }
59
+ if (event.attendees && Object.keys(event.attendees).length > 0) {
60
+ text += `\n**Attendees:**\n`;
61
+ for (const [uid, status] of Object.entries(event.attendees)) {
62
+ const hasResponded = typeof status === 'boolean';
63
+ const rsvp = !hasResponded ? '⏳ pending' : status ? '✅ accepted' : '❌ declined';
64
+ text += `- \`${uid}\` — ${rsvp}\n`;
65
+ }
66
+ }
67
+ return { content: [{ type: 'text', text }] };
68
+ }
69
+ catch (error) {
70
+ if (!request_logger_1.RequestLogger.getCurrent()) {
71
+ logger.error('Error loading event', error);
72
+ }
73
+ return { content: [{ type: 'text', text: `❌ Error loading event: ${error instanceof Error ? error.message : String(error)}` }] };
74
+ }
75
+ }
76
+ /** Date-range mode — former list_events body */
77
+ async function loadEventRange(calendarIds, startInput, endInput, context) {
78
+ try {
79
+ const start = toTimestamp(startInput);
80
+ const end = toTimestamp(endInput);
81
+ if (isNaN(start) || isNaN(end)) {
82
+ return {
83
+ content: [{
84
+ type: 'text',
85
+ text: `❌ Invalid date format. Use ISO date strings like "2026-04-14" or "2026-04-14T10:00:00".`,
86
+ }],
87
+ };
88
+ }
89
+ const events = await context.hailer.request('calendar.load_events', [{
90
+ calendars: calendarIds,
91
+ start,
92
+ end,
93
+ }]);
94
+ if (!events || events.length === 0) {
95
+ const startStr = new Date(start).toLocaleDateString();
96
+ const endStr = new Date(end).toLocaleDateString();
97
+ return {
98
+ content: [{
99
+ type: 'text',
100
+ text: `No events found between ${startStr} and ${endStr}.`,
101
+ }],
102
+ };
103
+ }
104
+ // Sort by start time
105
+ events.sort((first, second) => (first.start || 0) - (second.start || 0));
106
+ let responseText = `📅 **${events.length} Event(s) Found**\n\n`;
107
+ for (const event of events) {
108
+ const startDate = new Date(event.start);
109
+ const endDate = new Date(event.end);
110
+ responseText += `**${event.title || 'Untitled'}**\n`;
111
+ const allDayLine = ` All day: ${startDate.toLocaleDateString()} — ${endDate.toLocaleDateString()}\n`;
112
+ const startTime = startDate.toLocaleTimeString([], TIME_OPTS);
113
+ const endTime = endDate.toLocaleTimeString([], TIME_OPTS);
114
+ const timedLine = ` ${startDate.toLocaleDateString()} ${startTime} — ${endTime}\n`;
115
+ responseText += event.allDay ? allDayLine : timedLine;
116
+ if (event.location) {
117
+ responseText += ` Location: ${event.location}\n`;
118
+ }
119
+ if (event.notes) {
120
+ responseText += ` Notes: ${event.notes}\n`;
121
+ }
122
+ if (event._id) {
123
+ responseText += ` ID: \`${event._id}\`\n`;
124
+ }
125
+ responseText += `\n`;
126
+ }
127
+ return {
128
+ content: [{
129
+ type: 'text',
130
+ text: responseText,
131
+ }],
132
+ };
133
+ }
134
+ catch (error) {
135
+ if (!request_logger_1.RequestLogger.getCurrent()) {
136
+ logger.error('Error listing events', error);
137
+ }
138
+ return {
139
+ content: [{
140
+ type: 'text',
141
+ text: `❌ Error loading events: ${error instanceof Error ? error.message : String(error)}`,
142
+ }],
143
+ };
144
+ }
145
+ }
146
+ /** Upcoming mode — former upcoming_events body */
147
+ async function loadUpcomingEvents(calendarIds, context) {
148
+ try {
149
+ const apiArg = calendarIds?.length ? calendarIds : undefined;
150
+ const events = await context.hailer.request('calendar.upcoming_events', [apiArg]);
151
+ if (!events || events.length === 0) {
152
+ return { content: [{ type: 'text', text: `No upcoming events found.` }] };
153
+ }
154
+ let text = `📅 **${events.length} Upcoming Event(s)**\n\n`;
155
+ for (const event of events) {
156
+ const startDate = new Date(event.start);
157
+ const endDate = new Date(event.end);
158
+ text += `**${event.title || 'Untitled'}**\n`;
159
+ const allDayLine = ` ${startDate.toLocaleDateString()} — ${endDate.toLocaleDateString()} (all day)\n`;
160
+ const startTime = startDate.toLocaleTimeString([], TIME_OPTS);
161
+ const endTime = endDate.toLocaleTimeString([], TIME_OPTS);
162
+ const timedLine = ` ${startDate.toLocaleDateString()} ${startTime} — ${endTime}\n`;
163
+ text += event.allDay ? allDayLine : timedLine;
164
+ if (event.location) {
165
+ text += ` Location: ${event.location}\n`;
166
+ }
167
+ text += ` ID: \`${event._id}\`\n\n`;
168
+ }
169
+ return { content: [{ type: 'text', text }] };
170
+ }
171
+ catch (error) {
172
+ if (!request_logger_1.RequestLogger.getCurrent()) {
173
+ logger.error('Error loading upcoming events', error);
174
+ }
175
+ return { content: [{ type: 'text', text: `❌ Error loading upcoming events: ${error instanceof Error ? error.message : String(error)}` }] };
176
+ }
177
+ }
178
+ const queryEventsDescription = `Query calendar events — three read modes in one tool.
179
+
180
+ - **eventId** → full details of one event (times, location, notes, attendees with RSVP status, repeat series).
181
+ - **start + end** (calendarIds required) → all events in the date range.
182
+ - **No eventId/start/end** → up to 50 upcoming events where the user is creator or attendee (calendarIds = optional filter).
183
+
184
+ eventId cannot be combined with start/end. Dates: ALWAYS ISO strings like '2026-04-14' or '2026-04-14T10:00:00'. Get calendar IDs from manage_calendar action 'list'.`;
185
+ const queryEventsSchema = zod_1.z.object({
186
+ eventId: zod_1.z.string().optional().describe('Event ID (24 characters) — returns full details for this single event'),
187
+ start: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).optional().describe("Range start — ALWAYS use ISO string like '2026-04-14'. Requires end + calendarIds."),
188
+ end: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).optional().describe("Range end — ALWAYS use ISO string like '2026-04-20'. Requires start + calendarIds."),
189
+ calendarIds: zod_1.z.array(zod_1.z.string()).optional().describe('Calendar IDs — required for range queries, optional filter for upcoming events'),
190
+ });
191
+ exports.queryEventsTool = {
192
+ name: 'query_events',
193
+ group: tool_registry_1.ToolGroup.READ,
194
+ description: queryEventsDescription,
195
+ schema: queryEventsSchema,
196
+ async execute(args, context) {
197
+ const hasStart = isProvided(args.start);
198
+ const hasEnd = isProvided(args.end);
199
+ if (args.eventId && (hasStart || hasEnd)) {
200
+ return {
201
+ content: [{
202
+ type: 'text',
203
+ text: `❌ eventId cannot be combined with start/end. Pass eventId alone, or start + end + calendarIds for a range.`,
204
+ }],
205
+ };
206
+ }
207
+ if (args.eventId) {
208
+ return loadSingleEvent(args.eventId, context);
209
+ }
210
+ if (hasStart !== hasEnd) {
211
+ return {
212
+ content: [{
213
+ type: 'text',
214
+ text: `❌ Range queries require both start and end.`,
215
+ }],
216
+ };
217
+ }
218
+ if (hasStart && !args.calendarIds?.length) {
219
+ return {
220
+ content: [{
221
+ type: 'text',
222
+ text: `❌ Range queries require calendarIds — get them from manage_calendar action 'list'.`,
223
+ }],
224
+ };
225
+ }
226
+ if (hasStart) {
227
+ return loadEventRange(args.calendarIds, args.start, args.end, context);
228
+ }
229
+ return loadUpcomingEvents(args.calendarIds, context);
230
+ },
231
+ };
232
+ // ============================================================================
233
+ // MANAGE CALENDAR TOOL (merges list_calendars + create_calendar + update_calendar)
234
+ // ============================================================================
235
+ /** action 'list' — former list_calendars body */
236
+ async function listCalendars(context) {
237
+ try {
238
+ const calendars = await context.hailer.request('calendar.list_all', [{}]);
239
+ if (!calendars || Object.keys(calendars).length === 0) {
240
+ return {
241
+ content: [{
242
+ type: 'text',
243
+ text: `No calendars found. The user may not have access to any calendars.`,
244
+ }],
245
+ };
246
+ }
247
+ const calendarList = Object.entries(calendars).map(([id, cal]) => ({
248
+ id,
249
+ name: cal.name || 'Unnamed',
250
+ color: cal.color || null,
251
+ }));
252
+ let responseText = `📅 **${calendarList.length} Calendar(s) Found**\n\n`;
253
+ calendarList.forEach(cal => {
254
+ responseText += `- **${cal.name}** (ID: \`${cal.id}\`)\n`;
255
+ });
256
+ responseText += `\n💡 Use the calendar ID with \`create_event\` to add events.`;
257
+ return {
258
+ content: [{
259
+ type: 'text',
260
+ text: responseText,
261
+ }],
262
+ };
263
+ }
264
+ catch (error) {
265
+ if (!request_logger_1.RequestLogger.getCurrent()) {
266
+ logger.error('Error listing calendars', error);
267
+ }
268
+ return {
269
+ content: [{
270
+ type: 'text',
271
+ text: `❌ Error listing calendars: ${error instanceof Error ? error.message : String(error)}`,
272
+ }],
273
+ };
274
+ }
275
+ }
276
+ /** action 'create' — former create_calendar body */
277
+ async function createCalendar(args, context) {
278
+ try {
279
+ const calData = {
280
+ name: args.name,
281
+ color: args.color,
282
+ };
283
+ if (args.description) {
284
+ calData.desc = args.description;
285
+ }
286
+ if (args.timezone) {
287
+ calData.timezone = args.timezone;
288
+ }
289
+ const result = await context.hailer.request('calendar.create_calendar', [calData]);
290
+ let text = `✅ **Calendar Created**\n\n`;
291
+ text += `**Name:** ${args.name}\n`;
292
+ text += `**Color:** ${args.color}\n`;
293
+ if (args.description) {
294
+ text += `**Description:** ${args.description}\n`;
295
+ }
296
+ if (args.timezone) {
297
+ text += `**Timezone:** ${args.timezone}\n`;
298
+ }
299
+ if (result?._id) {
300
+ text += `**Calendar ID:** \`${result._id}\`\n`;
301
+ }
302
+ return { content: [{ type: 'text', text }] };
303
+ }
304
+ catch (error) {
305
+ if (!request_logger_1.RequestLogger.getCurrent()) {
306
+ logger.error('Error creating calendar', error);
307
+ }
308
+ return { content: [{ type: 'text', text: `❌ Error creating calendar: ${error instanceof Error ? error.message : String(error)}` }] };
309
+ }
310
+ }
311
+ /** action 'update' — former update_calendar body */
312
+ async function updateCalendar(args, context) {
313
+ try {
314
+ const calData = {
315
+ _id: args.calendarId,
316
+ name: args.name,
317
+ color: args.color,
318
+ };
319
+ if (typeof args.description === 'string') {
320
+ calData.description = args.description;
321
+ }
322
+ if (args.timezone) {
323
+ calData.timezone = args.timezone;
324
+ }
325
+ if (typeof args.allowGuests === 'boolean') {
326
+ calData.allowGuests = args.allowGuests;
327
+ }
328
+ await context.hailer.request('calendar.update_calendar', [calData]);
329
+ let text = `✅ **Calendar Updated**\n\n`;
330
+ text += `**Name:** ${args.name}\n`;
331
+ text += `**Color:** ${args.color}\n`;
332
+ return { content: [{ type: 'text', text }] };
333
+ }
334
+ catch (error) {
335
+ if (!request_logger_1.RequestLogger.getCurrent()) {
336
+ logger.error('Error updating calendar', error);
337
+ }
338
+ return { content: [{ type: 'text', text: `❌ Error updating calendar: ${error instanceof Error ? error.message : String(error)}` }] };
339
+ }
340
+ }
341
+ const manageCalendarDescription = `List, create, or update calendars — pick with the action param.
342
+
343
+ - **action 'list'** → all calendars the user can access, with IDs (needed for events).
344
+ - **action 'create'** → requires name + color (hex like '#4A90D9'); optional description, timezone. Workspace admin only.
345
+ - **action 'update'** → requires calendarId + name + color — the API REPLACES these values, so run 'list' first to preserve current ones; optional description, timezone, allowGuests. Calendar admin only.
346
+
347
+ Deleting a calendar is a separate tool: delete_calendar.`;
348
+ const manageCalendarSchema = zod_1.z.object({
349
+ action: zod_1.z.enum(['list', 'create', 'update']).describe("'list' = all calendars, 'create' = new calendar, 'update' = modify existing"),
350
+ calendarId: zod_1.z.string().optional().describe("Calendar ID (24 characters) — required for 'update'"),
351
+ name: zod_1.z.string().optional().describe("Calendar name — required for 'create' and 'update'"),
352
+ color: zod_1.z.string().optional().describe("Hex color code (e.g. '#4A90D9') — required for 'create' and 'update'"),
353
+ description: zod_1.z.string().optional().describe('Calendar description'),
354
+ timezone: zod_1.z.string().optional().describe("Timezone (e.g. 'Europe/Helsinki')"),
355
+ allowGuests: zod_1.z.boolean().optional().describe("Allow guest users to access this calendar ('update' only)"),
356
+ });
357
+ exports.manageCalendarTool = {
358
+ name: 'manage_calendar',
359
+ group: tool_registry_1.ToolGroup.WRITE,
360
+ description: manageCalendarDescription,
361
+ schema: manageCalendarSchema,
362
+ async execute(args, context) {
363
+ if (args.action === 'list') {
364
+ return listCalendars(context);
365
+ }
366
+ if (!args.name || !args.color) {
367
+ return {
368
+ content: [{
369
+ type: 'text',
370
+ text: `❌ action '${args.action}' requires both name and color.`,
371
+ }],
372
+ };
373
+ }
374
+ if (args.action === 'create') {
375
+ return createCalendar(args, context);
376
+ }
377
+ if (!args.calendarId) {
378
+ return {
379
+ content: [{
380
+ type: 'text',
381
+ text: `❌ action 'update' requires calendarId — get it from manage_calendar action 'list'.`,
382
+ }],
383
+ };
384
+ }
385
+ return updateCalendar(args, context);
386
+ },
387
+ };
388
+ // ============================================================================
389
+ // DELETE CALENDAR TOOL (unchanged — stays a separate NUCLEAR tool)
390
+ // ============================================================================
391
+ exports.deleteCalendarTool = {
392
+ name: 'delete_calendar',
393
+ group: tool_registry_1.ToolGroup.NUCLEAR,
394
+ description: `Delete a calendar and all its events.
395
+
396
+ **⚠️ DESTRUCTIVE:** This permanently removes the calendar and all associated events. This cannot be undone.
397
+
398
+ **Example:**
399
+ \`\`\`javascript
400
+ delete_calendar({ calendarId: "69ccde43..." })
401
+ \`\`\`
402
+
403
+ **Requirements:** User must be a calendar admin.`,
404
+ schema: zod_1.z.object({
405
+ calendarId: zod_1.z.string().describe("Calendar ID to delete (24 characters)"),
406
+ }),
407
+ async execute(args, context) {
408
+ try {
409
+ if (args.calendarId.length !== VALID_ID_LENGTH) {
410
+ return { content: [{ type: "text", text: `Invalid calendarId — must be a 24-character ID.` }] };
411
+ }
412
+ await context.hailer.request('calendar.remove_calendar', [args.calendarId]);
413
+ return { content: [{ type: "text", text: `✅ **Calendar Deleted**\n\nCalendar \`${args.calendarId}\` and all its events have been permanently removed.` }] };
414
+ }
415
+ catch (error) {
416
+ if (!request_logger_1.RequestLogger.getCurrent())
417
+ logger.error("Error deleting calendar", error);
418
+ return { content: [{ type: "text", text: `❌ Error deleting calendar: ${error instanceof Error ? error.message : String(error)}` }] };
419
+ }
420
+ },
421
+ };
422
+ // ============================================================================
423
+ // CREATE EVENT TOOL
424
+ // ============================================================================
425
+ const createEventDescription = `Create a calendar event. Requires a 24-character calendarId — get it from manage_calendar action 'list'; the user must have access to the calendar.
426
+
427
+ **Dates:** ALWAYS pass ISO strings — NEVER compute timestamps manually (the tool converts). Timed events: 'YYYY-MM-DDTHH:MM:SS' (e.g. '2026-07-10T10:00:00'). All-day events: 'YYYY-MM-DD' with allDay: true. European 'DD.MM.YYYY' dates mean day-first — '10.07.2026' is July 10, 2026 → '2026-07-10'.
428
+
429
+ **Attendees:** pass attendeeUserIds — ALWAYS include the requesting user's ID from <context>.`;
430
+ const createEventSchema = zod_1.z.object({
431
+ calendarId: zod_1.z.string().describe("Calendar ID (24 characters) — get from manage_calendar action 'list'"),
432
+ title: zod_1.z.string().describe('Event title'),
433
+ start: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).describe("Start time — ALWAYS use ISO string like '2026-07-10T10:00:00'. Never compute timestamps."),
434
+ end: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).describe("End time — ALWAYS use ISO string like '2026-07-10T11:00:00'. Never compute timestamps."),
435
+ allDay: zod_1.z.boolean().optional().default(false).describe('Whether this is an all-day event'),
436
+ location: zod_1.z.string().optional().describe('Event location'),
437
+ notes: zod_1.z.string().optional().describe('Event description/notes'),
438
+ attendeeUserIds: zod_1.z.array(zod_1.z.string()).optional().describe("User IDs to add as attendees. CRITICAL: always include the requesting user's ID from <context>."),
439
+ });
440
+ exports.createEventTool = {
441
+ name: 'create_event',
442
+ group: tool_registry_1.ToolGroup.WRITE,
443
+ description: createEventDescription,
444
+ schema: createEventSchema,
445
+ async execute(args, context) {
446
+ logger.debug('Creating calendar event', {
447
+ calendarId: args.calendarId,
448
+ title: args.title,
449
+ });
450
+ try {
451
+ if (args.calendarId.length !== 24) {
452
+ return {
453
+ content: [{
454
+ type: 'text',
455
+ text: `Invalid calendarId "${args.calendarId}" - must be a 24-character ID.\n\nUse \`manage_calendar\` action 'list' to find valid calendar IDs.`,
456
+ }],
457
+ };
458
+ }
459
+ // Auto-convert date strings to timestamps
460
+ const start = typeof args.start === 'string' ? new Date(args.start).getTime() : args.start;
461
+ const end = typeof args.end === 'string' ? new Date(args.end).getTime() : args.end;
462
+ if (isNaN(start) || isNaN(end)) {
463
+ return {
464
+ content: [{
465
+ type: 'text',
466
+ text: `❌ Invalid date format. Use Unix timestamps in milliseconds or ISO date strings (e.g. "2026-04-15T10:00:00").`,
467
+ }],
468
+ };
469
+ }
470
+ const eventData = {
471
+ calendar_id: args.calendarId,
472
+ title: args.title,
473
+ start,
474
+ end,
475
+ allDay: args.allDay || false,
476
+ };
477
+ if (args.location) {
478
+ eventData.location = args.location;
479
+ }
480
+ if (args.notes) {
481
+ eventData.notes = args.notes;
482
+ }
483
+ // Convert attendeeUserIds array to attendees object format: { "userId": true }
484
+ if (args.attendeeUserIds?.length) {
485
+ const attendees = {};
486
+ for (const userId of args.attendeeUserIds) {
487
+ attendees[userId] = true;
488
+ }
489
+ eventData.attendees = attendees;
490
+ }
491
+ const result = await context.hailer.request('calendar.create_event', [eventData]);
492
+ const createdEvent = Array.isArray(result) ? result[0] : result;
493
+ let responseText = `✅ **Event Created**\n\n`;
494
+ responseText += `**Title:** ${args.title}\n`;
495
+ responseText += `**Start:** ${new Date(start).toLocaleString()}\n`;
496
+ responseText += `**End:** ${new Date(end).toLocaleString()}\n`;
497
+ if (args.allDay) {
498
+ responseText += `**All day:** Yes\n`;
499
+ }
500
+ if (args.location) {
501
+ responseText += `**Location:** ${args.location}\n`;
502
+ }
503
+ if (args.notes) {
504
+ responseText += `**Notes:** ${args.notes}\n`;
505
+ }
506
+ if (createdEvent?._id) {
507
+ responseText += `**Event ID:** \`${createdEvent._id}\`\n`;
508
+ }
509
+ return {
510
+ content: [{
511
+ type: 'text',
512
+ text: responseText,
513
+ }],
514
+ };
515
+ }
516
+ catch (error) {
517
+ if (!request_logger_1.RequestLogger.getCurrent()) {
518
+ logger.error('Error creating event', error);
519
+ }
520
+ const errorMessage = error instanceof Error ? error.message : String(error);
521
+ return {
522
+ content: [{
523
+ type: 'text',
524
+ text: `❌ **Error creating event**\n\n**Error:** ${errorMessage}\n\n**Common Issues:**\n- Calendar ID must be valid (use \`manage_calendar\` action 'list')\n- Start and end times are required\n- User must have access to the calendar`,
525
+ }],
526
+ };
527
+ }
528
+ },
529
+ };
530
+ // ============================================================================
531
+ // UPDATE EVENT TOOL (absorbs remove_attendee via removeAttendees)
532
+ // ============================================================================
533
+ const updateEventDescription = `Update a calendar event. The API REPLACES event data — eventId, calendarId, title, start, end are ALL required; load the event first (query_events) to preserve unchanged fields. Dates: ISO strings like '2026-04-20T14:00:00'. attendeeUserIds REPLACES the full attendee list.
534
+
535
+ **removeAttendees:** user IDs to uninvite — each is also removed from the event's linked discussion. Runs after the field update; combinable with other changes in one call.
536
+
537
+ **repeatUpdate** (repeating events only): 'single' = this occurrence, 'future' = this and later, 'all' = entire series.`;
538
+ const updateEventSchema = zod_1.z.object({
539
+ eventId: zod_1.z.string().describe('Event ID to update (24 characters)'),
540
+ calendarId: zod_1.z.string().optional()
541
+ .describe('Calendar ID the event belongs to (24 chars). Required unless ONLY removing attendees'),
542
+ title: zod_1.z.string().optional().describe('Event title. Required unless ONLY removing attendees'),
543
+ start: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).optional()
544
+ .describe("Start time — ISO string like '2026-04-20T14:00:00'. Required unless ONLY removing attendees"),
545
+ end: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).optional()
546
+ .describe("End time — ISO string like '2026-04-20T15:00:00'. Required unless ONLY removing attendees"),
547
+ allDay: zod_1.z.boolean().optional().default(false).describe('Whether this is an all-day event'),
548
+ location: zod_1.z.string().optional().describe('Event location'),
549
+ notes: zod_1.z.string().optional().describe('Event description/notes'),
550
+ attendeeUserIds: zod_1.z.array(zod_1.z.string()).optional().describe('User IDs as attendees — replaces existing attendees'),
551
+ removeAttendees: zod_1.z.array(zod_1.z.string()).optional().describe("User IDs to remove as attendees — also removed from the event's linked discussion"),
552
+ repeatUpdate: zod_1.z.enum(['single', 'future', 'all']).optional().describe("For repeating events: update 'single', 'future', or 'all' occurrences"),
553
+ });
554
+ async function runEventFieldUpdate(args, start, end, context) {
555
+ const eventData = {
556
+ _id: args.eventId,
557
+ calendar_id: args.calendarId,
558
+ title: args.title,
559
+ start,
560
+ end,
561
+ allDay: args.allDay || false,
562
+ };
563
+ if (typeof args.location === 'string') {
564
+ eventData.location = args.location;
565
+ }
566
+ if (typeof args.notes === 'string') {
567
+ eventData.notes = args.notes;
568
+ }
569
+ if (args.attendeeUserIds?.length) {
570
+ const attendees = {};
571
+ for (const userId of args.attendeeUserIds) {
572
+ attendees[userId] = true;
573
+ }
574
+ eventData.attendees = attendees;
575
+ }
576
+ const updateOptions = {};
577
+ if (args.repeatUpdate) {
578
+ updateOptions.update = args.repeatUpdate;
579
+ }
580
+ await context.hailer.request('calendar.update_event', [eventData, updateOptions]);
581
+ }
582
+ exports.updateEventTool = {
583
+ name: 'update_event',
584
+ group: tool_registry_1.ToolGroup.WRITE,
585
+ description: updateEventDescription,
586
+ schema: updateEventSchema,
587
+ async execute(args, context) {
588
+ try {
589
+ // Attendee-removal-only calls (incl. the remove_attendee alias) skip
590
+ // the field update — they don't need the full event payload.
591
+ const isFieldUpdate = Boolean(args.calendarId || args.title || args.start || args.end);
592
+ const hasFullPayload = Boolean(args.calendarId && args.title && args.start && args.end);
593
+ if (isFieldUpdate && !hasFullPayload) {
594
+ const text = '❌ Field updates REPLACE event data — calendarId, title, start, and end are all required. '
595
+ + 'Load the event first with query_events.';
596
+ return { content: [{ type: 'text', text }] };
597
+ }
598
+ if (!isFieldUpdate && !args.removeAttendees?.length) {
599
+ return { content: [{ type: 'text', text: '❌ Nothing to update — provide event fields (calendarId, title, start, end) and/or removeAttendees.' }] };
600
+ }
601
+ const start = toTimestamp(args.start ?? 0);
602
+ const end = toTimestamp(args.end ?? 0);
603
+ if (isFieldUpdate && (isNaN(start) || isNaN(end))) {
604
+ return { content: [{ type: 'text', text: `❌ Invalid date format. Use ISO strings like "2026-04-20T14:00:00".` }] };
605
+ }
606
+ if (isFieldUpdate) {
607
+ await runEventFieldUpdate(args, start, end, context);
608
+ }
609
+ // Attendee removal — former remove_attendee logic, one calendar.remove_invite per user
610
+ // (the server also removes each user from the event's linked discussion)
611
+ const removed = [];
612
+ const removeFailures = [];
613
+ for (const userId of args.removeAttendees ?? []) {
614
+ try {
615
+ await context.hailer.request('calendar.remove_invite', [args.eventId, userId]);
616
+ removed.push(userId);
617
+ }
618
+ catch (removeError) {
619
+ const reason = removeError instanceof Error ? removeError.message : String(removeError);
620
+ removeFailures.push(`\`${userId}\` — ${reason}`);
621
+ }
622
+ }
623
+ let text = `✅ **Event Updated**\n\n`;
624
+ if (isFieldUpdate) {
625
+ text += `**Title:** ${args.title}\n`;
626
+ text += `**Start:** ${new Date(start).toLocaleString()}\n`;
627
+ text += `**End:** ${new Date(end).toLocaleString()}\n`;
628
+ }
629
+ if (args.repeatUpdate) {
630
+ text += `**Repeat scope:** ${args.repeatUpdate}\n`;
631
+ }
632
+ if (removed.length) {
633
+ text += `**Removed attendees:** ${removed.map(uid => `\`${uid}\``).join(', ')}\n`;
634
+ }
635
+ if (removeFailures.length) {
636
+ text += `\n❌ **Failed to remove attendees:**\n${removeFailures.map(entry => `- ${entry}`).join('\n')}\n`;
637
+ }
638
+ return { content: [{ type: 'text', text }] };
639
+ }
640
+ catch (error) {
641
+ if (!request_logger_1.RequestLogger.getCurrent()) {
642
+ logger.error('Error updating event', error);
643
+ }
644
+ return { content: [{ type: 'text', text: `❌ Error updating event: ${error instanceof Error ? error.message : String(error)}` }] };
645
+ }
646
+ },
647
+ };
648
+ // ============================================================================
649
+ // DELETE EVENT TOOL (unchanged)
650
+ // ============================================================================
651
+ exports.deleteEventTool = {
652
+ name: 'delete_event',
653
+ group: tool_registry_1.ToolGroup.WRITE,
654
+ description: `Delete a calendar event.
655
+
656
+ **Examples:**
657
+
658
+ Delete single event:
659
+ \`\`\`javascript
660
+ delete_event({ eventId: "69ccde43..." })
661
+ \`\`\`
662
+
663
+ Delete entire repeating series:
664
+ \`\`\`javascript
665
+ delete_event({ eventId: "69ccde43...", repeatDelete: "all" })
666
+ \`\`\`
667
+
668
+ **repeatDelete options** (only for repeating events):
669
+ - \`"single"\` — delete only this occurrence (default)
670
+ - \`"future"\` — delete this and all future occurrences
671
+ - \`"all"\` — delete the entire series`,
672
+ schema: zod_1.z.object({
673
+ eventId: zod_1.z.string().describe("Event ID to delete (24 characters)"),
674
+ repeatDelete: zod_1.z.enum(['single', 'future', 'all']).optional().describe("For repeating events: delete 'single', 'future', or 'all'"),
675
+ }),
676
+ async execute(args, context) {
677
+ try {
678
+ const removeOptions = {};
679
+ if (args.repeatDelete) {
680
+ removeOptions.remove = args.repeatDelete;
681
+ }
682
+ await context.hailer.request('calendar.remove_event', [args.eventId, removeOptions]);
683
+ let text = `✅ **Event Deleted**\n`;
684
+ if (args.repeatDelete)
685
+ text += `Scope: ${args.repeatDelete}\n`;
686
+ return { content: [{ type: "text", text }] };
687
+ }
688
+ catch (error) {
689
+ if (!request_logger_1.RequestLogger.getCurrent())
690
+ logger.error("Error deleting event", error);
691
+ return { content: [{ type: "text", text: `❌ Error deleting event: ${error instanceof Error ? error.message : String(error)}` }] };
692
+ }
693
+ },
694
+ };
695
+ // ============================================================================
696
+ // RESPOND TO INVITE TOOL (unchanged)
697
+ // ============================================================================
698
+ exports.respondToInviteTool = {
699
+ name: 'respond_to_invite',
700
+ group: tool_registry_1.ToolGroup.WRITE,
701
+ description: `Accept or decline a calendar event invitation.
702
+
703
+ **Examples:**
704
+
705
+ Accept:
706
+ \`\`\`javascript
707
+ respond_to_invite({ eventId: "69ccde43...", attending: true })
708
+ \`\`\`
709
+
710
+ Decline:
711
+ \`\`\`javascript
712
+ respond_to_invite({ eventId: "69ccde43...", attending: false })
713
+ \`\`\``,
714
+ schema: zod_1.z.object({
715
+ eventId: zod_1.z.string().describe("Event ID to respond to (24 characters)"),
716
+ attending: zod_1.z.boolean().describe("true = accept, false = decline"),
717
+ }),
718
+ async execute(args, context) {
719
+ try {
720
+ const attendingMap = { [args.eventId]: args.attending };
721
+ await context.hailer.request('calendar.invite_respond', [attendingMap]);
722
+ const status = args.attending ? 'accepted ✅' : 'declined ❌';
723
+ return { content: [{ type: "text", text: `Event invitation ${status}.` }] };
724
+ }
725
+ catch (error) {
726
+ if (!request_logger_1.RequestLogger.getCurrent())
727
+ logger.error("Error responding to invite", error);
728
+ return { content: [{ type: "text", text: `❌ Error responding to invite: ${error instanceof Error ? error.message : String(error)}` }] };
729
+ }
730
+ },
731
+ };
732
+ exports.calendarTools = [
733
+ exports.queryEventsTool,
734
+ exports.manageCalendarTool,
735
+ exports.deleteCalendarTool,
736
+ exports.createEventTool,
737
+ exports.updateEventTool,
738
+ exports.deleteEventTool,
739
+ exports.respondToInviteTool,
740
+ ];
741
+ //# sourceMappingURL=calendar.js.map