@hailer/mcp 1.2.1 → 1.3.9

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