@interactive-inc/claude-funnel 0.7.1 → 0.8.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 (472) hide show
  1. package/README.md +155 -133
  2. package/dist/bin.js +1344 -0
  3. package/dist/cli/factory.d.ts +7 -0
  4. package/dist/cli/router/query-to-cli-args.d.ts +1 -0
  5. package/dist/cli/router/to-request.d.ts +5 -0
  6. package/dist/cli/router/validator.d.ts +5 -0
  7. package/dist/cli/routes/channels.$channel.connectors.$connector.d.ts +42 -0
  8. package/dist/cli/routes/channels.$channel.connectors.$connector.rename.$newName.d.ts +46 -0
  9. package/dist/cli/routes/channels.$channel.connectors.$connector.request.d.ts +54 -0
  10. package/dist/cli/routes/channels.$channel.connectors.$connector.schedules.add.$id.d.ts +66 -0
  11. package/dist/cli/routes/channels.$channel.connectors.$connector.schedules.d.ts +42 -0
  12. package/dist/cli/routes/channels.$channel.connectors.$connector.schedules.remove.$id.d.ts +46 -0
  13. package/dist/cli/routes/channels.$channel.connectors.add.$connector.d.ts +90 -0
  14. package/dist/cli/routes/channels.$channel.connectors.d.ts +38 -0
  15. package/dist/cli/routes/channels.$channel.connectors.remove.$connector.d.ts +42 -0
  16. package/dist/cli/routes/channels.$channel.connectors.set.$connector.d.ts +62 -0
  17. package/dist/cli/routes/channels.$channel.d.ts +38 -0
  18. package/dist/cli/routes/channels.$channel.rename.$newName.d.ts +42 -0
  19. package/dist/cli/routes/channels.$channel.set.delivery.$mode.d.ts +28 -0
  20. package/dist/cli/routes/channels.add.$channel.d.ts +46 -0
  21. package/dist/cli/routes/channels.d.ts +16 -0
  22. package/dist/cli/routes/channels.remove.$channel.d.ts +38 -0
  23. package/dist/cli/routes/claude.d.ts +32 -0
  24. package/dist/cli/routes/gateway.d.ts +20 -0
  25. package/dist/cli/routes/gateway.listeners.d.ts +17 -0
  26. package/dist/cli/routes/gateway.logs.d.ts +24 -0
  27. package/dist/cli/routes/gateway.restart.d.ts +24 -0
  28. package/dist/cli/routes/gateway.run.d.ts +24 -0
  29. package/dist/cli/routes/gateway.start.d.ts +24 -0
  30. package/dist/cli/routes/gateway.status.d.ts +13 -0
  31. package/dist/cli/routes/gateway.stop.d.ts +16 -0
  32. package/dist/cli/routes/index.d.ts +1222 -0
  33. package/dist/cli/routes/profiles.$profile.as-default.d.ts +38 -0
  34. package/dist/cli/routes/profiles.$profile.rename.$newName.d.ts +42 -0
  35. package/dist/cli/routes/profiles.$profile.run.d.ts +46 -0
  36. package/dist/cli/routes/profiles.add.$profile.d.ts +54 -0
  37. package/dist/cli/routes/profiles.d.ts +16 -0
  38. package/dist/cli/routes/profiles.remove.$profile.d.ts +38 -0
  39. package/dist/cli/routes/profiles.set.$profile.d.ts +54 -0
  40. package/dist/cli/routes/status.d.ts +16 -0
  41. package/dist/cli/routes/update.d.ts +16 -0
  42. package/dist/connectors/connector-adapter.d.ts +8 -0
  43. package/dist/connectors/connector-config-schema.d.ts +43 -0
  44. package/dist/connectors/connector-factory.d.ts +32 -0
  45. package/dist/connectors/connector-listener.d.ts +17 -0
  46. package/dist/connectors/discord-adapter.d.ts +14 -0
  47. package/dist/connectors/discord-connector-schema.d.ts +10 -0
  48. package/dist/connectors/discord-event-processor.d.ts +26 -0
  49. package/dist/connectors/discord-listener.d.ts +17 -0
  50. package/dist/connectors/gh-adapter.d.ts +11 -0
  51. package/dist/connectors/gh-connector-schema.d.ts +10 -0
  52. package/dist/connectors/gh-listener.d.ts +26 -0
  53. package/dist/connectors/match-cron.d.ts +1 -0
  54. package/dist/connectors/schedule-connector-schema.d.ts +45 -0
  55. package/dist/connectors/schedule-listener.d.ts +30 -0
  56. package/dist/connectors/schedule-state-store.d.ts +19 -0
  57. package/dist/connectors/slack-adapter.d.ts +15 -0
  58. package/dist/connectors/slack-connector-schema.d.ts +11 -0
  59. package/dist/connectors/slack-event-processor.d.ts +27 -0
  60. package/dist/connectors/slack-listener.d.ts +17 -0
  61. package/dist/engine/channels/channels.d.ts +106 -0
  62. package/dist/engine/claude/claude.d.ts +49 -0
  63. package/dist/engine/claude/gateway-controller.d.ts +6 -0
  64. package/dist/engine/fs/file-system.d.ts +24 -0
  65. package/dist/engine/fs/memory-file-system.d.ts +31 -0
  66. package/dist/engine/fs/node-file-system.d.ts +15 -0
  67. package/dist/engine/http/http-client.d.ts +15 -0
  68. package/dist/engine/http/memory-http-client.d.ts +12 -0
  69. package/dist/engine/http/node-http-client.d.ts +5 -0
  70. package/dist/engine/id/id-generator.d.ts +7 -0
  71. package/dist/engine/id/memory-id-generator.d.ts +11 -0
  72. package/dist/engine/id/node-id-generator.d.ts +4 -0
  73. package/dist/engine/logger/logger.d.ts +11 -0
  74. package/dist/engine/logger/memory-logger.d.ts +14 -0
  75. package/dist/engine/logger/node-logger.d.ts +15 -0
  76. package/dist/engine/logger/noop-logger.d.ts +7 -0
  77. package/dist/engine/mcp/channel-server.d.ts +1 -0
  78. package/dist/engine/mcp/mcp.d.ts +22 -0
  79. package/dist/engine/process/memory-process-runner.d.ts +43 -0
  80. package/dist/engine/process/node-process-runner.d.ts +9 -0
  81. package/dist/engine/process/process-runner.d.ts +29 -0
  82. package/dist/engine/profiles/profile-channel-checker.d.ts +7 -0
  83. package/dist/engine/profiles/profiles.d.ts +31 -0
  84. package/dist/engine/settings/mock-settings-reader.d.ts +9 -0
  85. package/dist/engine/settings/settings-reader.d.ts +5 -0
  86. package/dist/engine/settings/settings-schema.d.ts +132 -0
  87. package/dist/engine/settings/settings-store.d.ts +18 -0
  88. package/dist/engine/time/clock.d.ts +9 -0
  89. package/dist/engine/time/memory-clock.d.ts +12 -0
  90. package/dist/engine/time/node-clock.d.ts +4 -0
  91. package/dist/funnel.d.ts +95 -0
  92. package/dist/gateway/auth-middleware.d.ts +14 -0
  93. package/dist/gateway/broadcaster.d.ts +122 -0
  94. package/dist/gateway/daemon.d.ts +2 -0
  95. package/dist/gateway/daemon.js +485 -0
  96. package/dist/gateway/factory.d.ts +7 -0
  97. package/dist/gateway/funnel-event-store.d.ts +81 -0
  98. package/dist/gateway/gateway-server.d.ts +94 -0
  99. package/dist/gateway/gateway-token.d.ts +33 -0
  100. package/dist/gateway/gateway.d.ts +58 -0
  101. package/dist/gateway/kill-competing-slack-gateways.d.ts +9 -0
  102. package/dist/gateway/listener-supervisor.d.ts +85 -0
  103. package/dist/gateway/listeners-client.d.ts +53 -0
  104. package/dist/gateway/resolve-daemon-script.d.ts +11 -0
  105. package/dist/gateway/routes/channels.connectors.call.d.ts +41 -0
  106. package/dist/gateway/routes/health.d.ts +17 -0
  107. package/dist/gateway/routes/index.d.ts +209 -0
  108. package/dist/gateway/routes/listeners.list.d.ts +14 -0
  109. package/dist/gateway/routes/listeners.restart.d.ts +34 -0
  110. package/dist/gateway/routes/listeners.start.d.ts +34 -0
  111. package/dist/gateway/routes/listeners.stop.d.ts +34 -0
  112. package/dist/gateway/routes/route-deps.d.ts +10 -0
  113. package/dist/gateway/routes/status.d.ts +30 -0
  114. package/dist/gateway/routes/validator.d.ts +19 -0
  115. package/dist/highlights-eq9cgrbb.scm +604 -0
  116. package/dist/highlights-ghv9g403.scm +205 -0
  117. package/dist/highlights-hk7bwhj4.scm +284 -0
  118. package/dist/highlights-r812a2qc.scm +150 -0
  119. package/dist/highlights-x6tmsnaa.scm +115 -0
  120. package/dist/index.d.ts +36 -0
  121. package/dist/index.js +3575 -0
  122. package/dist/injections-73j83es3.scm +27 -0
  123. package/dist/logger/leuco-human-file-writer.d.ts +33 -0
  124. package/dist/logger/leuco-human-logger.d.ts +46 -0
  125. package/dist/logger/leuco-human-record.d.ts +15 -0
  126. package/dist/logger/leuco-human-stdout-writer.d.ts +20 -0
  127. package/dist/logger/leuco-human-writer.d.ts +13 -0
  128. package/dist/logger/leuco-logger-memory-sink.d.ts +33 -0
  129. package/dist/logger/leuco-logger-record.d.ts +13 -0
  130. package/dist/logger/leuco-logger-sink.d.ts +34 -0
  131. package/dist/logger/leuco-logger-sqlite-sink.d.ts +102 -0
  132. package/dist/logger/leuco-logger.d.ts +56 -0
  133. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  134. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  135. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  136. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  137. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
  138. package/lib/bin.ts +78 -0
  139. package/lib/{modules → cli}/router/to-request.ts +13 -20
  140. package/lib/cli/routes/channels.$channel.connectors.$connector.rename.$newName.ts +27 -0
  141. package/lib/cli/routes/channels.$channel.connectors.$connector.request.ts +40 -0
  142. package/lib/cli/routes/channels.$channel.connectors.$connector.schedules.add.$id.ts +41 -0
  143. package/lib/cli/routes/channels.$channel.connectors.$connector.schedules.remove.$id.ts +22 -0
  144. package/lib/cli/routes/channels.$channel.connectors.$connector.schedules.ts +23 -0
  145. package/lib/cli/routes/channels.$channel.connectors.$connector.ts +26 -0
  146. package/lib/cli/routes/channels.$channel.connectors.add.$connector.ts +92 -0
  147. package/lib/cli/routes/channels.$channel.connectors.remove.$connector.ts +22 -0
  148. package/lib/cli/routes/channels.$channel.connectors.set.$connector.ts +63 -0
  149. package/lib/cli/routes/channels.$channel.connectors.ts +26 -0
  150. package/lib/cli/routes/channels.$channel.rename.$newName.ts +22 -0
  151. package/lib/cli/routes/channels.$channel.set.delivery.$mode.ts +34 -0
  152. package/lib/cli/routes/channels.$channel.ts +34 -0
  153. package/lib/cli/routes/channels.add.$channel.ts +33 -0
  154. package/lib/cli/routes/channels.remove.$channel.ts +20 -0
  155. package/lib/cli/routes/channels.ts +39 -0
  156. package/lib/cli/routes/claude.ts +69 -0
  157. package/lib/cli/routes/gateway.listeners.ts +41 -0
  158. package/lib/cli/routes/gateway.logs.ts +123 -0
  159. package/lib/{routes/gateway/restart.ts → cli/routes/gateway.restart.ts} +20 -5
  160. package/lib/cli/routes/gateway.run.ts +41 -0
  161. package/lib/cli/routes/gateway.start.ts +50 -0
  162. package/lib/cli/routes/gateway.status.ts +19 -0
  163. package/lib/cli/routes/gateway.stop.ts +32 -0
  164. package/lib/cli/routes/gateway.ts +55 -0
  165. package/lib/cli/routes/index.ts +202 -0
  166. package/lib/cli/routes/profiles.$profile.as-default.ts +22 -0
  167. package/lib/cli/routes/profiles.$profile.rename.$newName.ts +22 -0
  168. package/lib/cli/routes/profiles.$profile.run.ts +36 -0
  169. package/lib/cli/routes/profiles.add.$profile.ts +46 -0
  170. package/lib/cli/routes/profiles.remove.$profile.ts +20 -0
  171. package/lib/cli/routes/profiles.set.$profile.ts +46 -0
  172. package/lib/cli/routes/profiles.ts +40 -0
  173. package/lib/cli/routes/status.ts +93 -0
  174. package/lib/cli/routes/update.ts +27 -0
  175. package/lib/connectors/connector-config-schema.ts +16 -0
  176. package/lib/connectors/connector-factory.ts +94 -0
  177. package/lib/connectors/connector-listener.ts +20 -0
  178. package/lib/{modules/connectors/funnel-discord-adapter.ts → connectors/discord-adapter.ts} +6 -11
  179. package/lib/{modules/connectors → connectors}/discord-connector-schema.ts +4 -1
  180. package/lib/connectors/discord-listener.ts +111 -0
  181. package/lib/{modules/connectors/funnel-gh-adapter.ts → connectors/gh-adapter.ts} +3 -6
  182. package/lib/{modules/connectors → connectors}/gh-connector-schema.ts +4 -1
  183. package/lib/{modules/connectors/funnel-gh-listener.ts → connectors/gh-listener.ts} +45 -19
  184. package/lib/{modules/connectors → connectors}/match-cron.ts +10 -4
  185. package/lib/connectors/schedule-connector-schema.ts +33 -0
  186. package/lib/connectors/schedule-listener.ts +207 -0
  187. package/lib/connectors/schedule-state-store.ts +54 -0
  188. package/lib/connectors/slack-adapter.ts +36 -0
  189. package/lib/{modules/connectors → connectors}/slack-connector-schema.ts +4 -1
  190. package/lib/{modules/connectors/funnel-slack-event-processor.ts → connectors/slack-event-processor.ts} +15 -9
  191. package/lib/{modules/connectors/funnel-slack-listener.ts → connectors/slack-listener.ts} +33 -14
  192. package/lib/engine/channels/channels.ts +520 -0
  193. package/lib/{modules/claude/funnel-claude.ts → engine/claude/claude.ts} +28 -55
  194. package/lib/engine/claude/gateway-controller.ts +4 -0
  195. package/lib/{modules/fs/funnel-file-system.ts → engine/fs/file-system.ts} +4 -0
  196. package/lib/{modules/fs/memory-funnel-file-system.ts → engine/fs/memory-file-system.ts} +20 -3
  197. package/lib/{modules/fs/node-funnel-file-system.ts → engine/fs/node-file-system.ts} +14 -2
  198. package/lib/{modules/http/memory-funnel-http-client.ts → engine/http/memory-http-client.ts} +1 -5
  199. package/lib/{modules/http/node-funnel-http-client.ts → engine/http/node-http-client.ts} +1 -5
  200. package/lib/{modules/id/memory-funnel-id-generator.ts → engine/id/memory-id-generator.ts} +1 -1
  201. package/lib/{modules/id/node-funnel-id-generator.ts → engine/id/node-id-generator.ts} +1 -1
  202. package/lib/{modules/logger/memory-funnel-logger.ts → engine/logger/memory-logger.ts} +1 -1
  203. package/lib/{modules/logger/node-funnel-logger.ts → engine/logger/node-logger.ts} +1 -1
  204. package/lib/{modules/logger/noop-funnel-logger.ts → engine/logger/noop-logger.ts} +1 -1
  205. package/lib/engine/mcp/channel-server.ts +204 -0
  206. package/lib/{modules/mcp/funnel-mcp.ts → engine/mcp/mcp.ts} +24 -10
  207. package/lib/{modules/process/memory-funnel-process-runner.ts → engine/process/memory-process-runner.ts} +1 -1
  208. package/lib/{modules/process/node-funnel-process-runner.ts → engine/process/node-process-runner.ts} +12 -21
  209. package/lib/engine/profiles/profile-channel-checker.ts +7 -0
  210. package/lib/{modules/profiles/funnel-profiles.ts → engine/profiles/profiles.ts} +41 -43
  211. package/lib/{modules/settings/mock-funnel-settings-reader.ts → engine/settings/mock-settings-reader.ts} +4 -3
  212. package/lib/{modules/settings/funnel-settings-reader.ts → engine/settings/settings-reader.ts} +1 -1
  213. package/lib/engine/settings/settings-schema.ts +46 -0
  214. package/lib/engine/settings/settings-store.ts +110 -0
  215. package/lib/{modules/time/memory-funnel-clock.ts → engine/time/memory-clock.ts} +1 -1
  216. package/lib/{modules/time/node-funnel-clock.ts → engine/time/node-clock.ts} +1 -1
  217. package/lib/funnel.ts +83 -78
  218. package/lib/gateway/auth-middleware.ts +44 -0
  219. package/lib/gateway/broadcaster.ts +319 -0
  220. package/lib/gateway/daemon.ts +47 -0
  221. package/lib/gateway/factory.ts +10 -0
  222. package/lib/gateway/funnel-event-store.ts +155 -0
  223. package/lib/gateway/gateway-server.ts +414 -0
  224. package/lib/gateway/gateway-token.ts +79 -0
  225. package/lib/{modules/gateway/funnel-gateway.ts → gateway/gateway.ts} +27 -13
  226. package/lib/{modules/gateway → gateway}/kill-competing-slack-gateways.ts +4 -4
  227. package/lib/gateway/listener-supervisor.ts +339 -0
  228. package/lib/gateway/listeners-client.ts +128 -0
  229. package/lib/gateway/resolve-daemon-script.ts +26 -0
  230. package/lib/gateway/routes/channels.connectors.call.ts +39 -0
  231. package/lib/gateway/routes/health.ts +13 -0
  232. package/lib/gateway/routes/index.ts +24 -0
  233. package/lib/gateway/routes/listeners.list.ts +6 -0
  234. package/lib/gateway/routes/listeners.restart.ts +15 -0
  235. package/lib/gateway/routes/listeners.start.ts +15 -0
  236. package/lib/gateway/routes/listeners.stop.ts +15 -0
  237. package/lib/gateway/routes/route-deps.ts +11 -0
  238. package/lib/gateway/routes/status.ts +15 -0
  239. package/lib/gateway/routes/validator.ts +17 -0
  240. package/lib/index.ts +52 -92
  241. package/lib/logger/leuco-human-file-writer.ts +65 -0
  242. package/lib/logger/leuco-human-logger.ts +98 -0
  243. package/lib/logger/leuco-human-record.ts +16 -0
  244. package/lib/logger/leuco-human-stdout-writer.ts +26 -0
  245. package/lib/logger/leuco-human-writer.ts +14 -0
  246. package/lib/logger/leuco-logger-memory-sink.ts +67 -0
  247. package/lib/logger/leuco-logger-record.ts +13 -0
  248. package/lib/logger/leuco-logger-sink.ts +33 -0
  249. package/lib/logger/leuco-logger-sqlite-sink.ts +355 -0
  250. package/lib/logger/leuco-logger.ts +135 -0
  251. package/lib/tui/app.tsx +357 -0
  252. package/lib/tui/components/add-row.tsx +18 -0
  253. package/lib/tui/components/brand.tsx +27 -0
  254. package/lib/tui/components/card.tsx +44 -0
  255. package/lib/tui/components/detail-bar.tsx +46 -0
  256. package/lib/tui/components/editable-field.tsx +33 -0
  257. package/lib/tui/components/empty-state.tsx +11 -0
  258. package/lib/tui/components/gateway-status.tsx +66 -0
  259. package/lib/tui/components/keymap.tsx +29 -0
  260. package/lib/tui/components/menu-item.tsx +73 -0
  261. package/lib/tui/components/menu.tsx +26 -0
  262. package/lib/tui/components/panel-header.tsx +22 -0
  263. package/lib/tui/components/readonly-field.tsx +18 -0
  264. package/lib/tui/components/section-header.tsx +25 -0
  265. package/lib/tui/components/selection-accent.tsx +32 -0
  266. package/lib/tui/components/session-item.tsx +33 -0
  267. package/lib/tui/components/session-list.tsx +33 -0
  268. package/lib/tui/components/ui/hascii/accordion-item.tsx +88 -0
  269. package/lib/tui/components/ui/hascii/accordion.tsx +96 -0
  270. package/lib/tui/components/ui/hascii/alert-dialog.tsx +43 -0
  271. package/lib/tui/components/ui/hascii/badge.tsx +51 -0
  272. package/lib/tui/components/ui/hascii/breadcrumb.tsx +58 -0
  273. package/lib/tui/components/ui/hascii/button.tsx +194 -0
  274. package/lib/tui/components/ui/hascii/card-content.tsx +14 -0
  275. package/lib/tui/components/ui/hascii/card-description.tsx +13 -0
  276. package/lib/tui/components/ui/hascii/card-footer.tsx +14 -0
  277. package/lib/tui/components/ui/hascii/card-header.tsx +14 -0
  278. package/lib/tui/components/ui/hascii/card-title.tsx +13 -0
  279. package/lib/tui/components/ui/hascii/card.tsx +27 -0
  280. package/lib/tui/components/ui/hascii/checkbox.tsx +65 -0
  281. package/lib/tui/components/ui/hascii/command.tsx +159 -0
  282. package/lib/tui/components/ui/hascii/dialog-content.tsx +14 -0
  283. package/lib/tui/components/ui/hascii/dialog-description.tsx +13 -0
  284. package/lib/tui/components/ui/hascii/dialog-footer.tsx +14 -0
  285. package/lib/tui/components/ui/hascii/dialog-header.tsx +14 -0
  286. package/lib/tui/components/ui/hascii/dialog-title.tsx +13 -0
  287. package/lib/tui/components/ui/hascii/dialog.tsx +27 -0
  288. package/lib/tui/components/ui/hascii/file-tree.tsx +142 -0
  289. package/lib/tui/components/ui/hascii/focus-group.tsx +62 -0
  290. package/lib/tui/components/ui/hascii/form-item.tsx +43 -0
  291. package/lib/tui/components/ui/hascii/input-otp.tsx +86 -0
  292. package/lib/tui/components/ui/hascii/input.tsx +130 -0
  293. package/lib/tui/components/ui/hascii/pagination.tsx +105 -0
  294. package/lib/tui/components/ui/hascii/progress.tsx +28 -0
  295. package/lib/tui/components/ui/hascii/select.tsx +131 -0
  296. package/lib/tui/components/ui/hascii/separator.tsx +35 -0
  297. package/lib/tui/components/ui/hascii/sidebar-content.tsx +23 -0
  298. package/lib/tui/components/ui/hascii/sidebar-header.tsx +14 -0
  299. package/lib/tui/components/ui/hascii/sidebar-menu-item.tsx +67 -0
  300. package/lib/tui/components/ui/hascii/sidebar.tsx +24 -0
  301. package/lib/tui/components/ui/hascii/skeleton.tsx +60 -0
  302. package/lib/tui/components/ui/hascii/slider.tsx +91 -0
  303. package/lib/tui/components/ui/hascii/snackbar.tsx +75 -0
  304. package/lib/tui/components/ui/hascii/sparkline.tsx +53 -0
  305. package/lib/tui/components/ui/hascii/spinner.tsx +47 -0
  306. package/lib/tui/components/ui/hascii/stepper.tsx +54 -0
  307. package/lib/tui/components/ui/hascii/switch.tsx +66 -0
  308. package/lib/tui/components/ui/hascii/table.tsx +95 -0
  309. package/lib/tui/components/ui/hascii/tabs.tsx +59 -0
  310. package/lib/tui/components/ui/hascii/toggle-group-item.tsx +45 -0
  311. package/lib/tui/components/ui/hascii/toggle-group.tsx +99 -0
  312. package/lib/tui/components/ui/hascii/tree.tsx +104 -0
  313. package/lib/tui/components/view-shell.tsx +44 -0
  314. package/lib/tui/filter-input.tsx +33 -0
  315. package/lib/tui/hooks/hascii/use-pressable.ts +54 -0
  316. package/lib/tui/parse-comma-list.ts +14 -0
  317. package/lib/tui/profile-launcher.tsx +61 -0
  318. package/lib/tui/scrollbar-options.ts +19 -0
  319. package/lib/tui/sidebar.tsx +50 -0
  320. package/lib/tui/theme.ts +40 -0
  321. package/lib/tui/tui.tsx +20 -0
  322. package/lib/tui/types.ts +38 -0
  323. package/lib/tui/unique-name.ts +18 -0
  324. package/lib/tui/use-event-stream.ts +133 -0
  325. package/lib/tui/use-snapshot.ts +99 -0
  326. package/lib/tui/utils/hascii/form-item-context.tsx +23 -0
  327. package/lib/tui/utils/hascii/input-focus-context.tsx +31 -0
  328. package/lib/tui/utils/hascii/theme-context.tsx +26 -0
  329. package/lib/tui/utils/hascii/theme.ts +176 -0
  330. package/lib/tui/views/channels-view.tsx +108 -0
  331. package/lib/tui/views/connectors-view.tsx +164 -0
  332. package/lib/tui/views/events-view.tsx +160 -0
  333. package/lib/tui/views/listeners-view.tsx +80 -0
  334. package/lib/tui/views/profiles-view.tsx +152 -0
  335. package/package.json +55 -44
  336. package/lib/api.ts +0 -54
  337. package/lib/modules/channels/channel-connector-ref-updater.ts +0 -4
  338. package/lib/modules/channels/funnel-channels.ts +0 -160
  339. package/lib/modules/connectors/connector-config-schema.ts +0 -16
  340. package/lib/modules/connectors/connector-existence-checker.ts +0 -3
  341. package/lib/modules/connectors/funnel-callable-connector-store.ts +0 -9
  342. package/lib/modules/connectors/funnel-connector-listener.ts +0 -5
  343. package/lib/modules/connectors/funnel-connector-stores.ts +0 -52
  344. package/lib/modules/connectors/funnel-connector-type-store.ts +0 -24
  345. package/lib/modules/connectors/funnel-connectors.ts +0 -151
  346. package/lib/modules/connectors/funnel-discord-listener.ts +0 -71
  347. package/lib/modules/connectors/funnel-discord-store.ts +0 -88
  348. package/lib/modules/connectors/funnel-gh-store.ts +0 -101
  349. package/lib/modules/connectors/funnel-json-connector-store.ts +0 -100
  350. package/lib/modules/connectors/funnel-schedule-listener.ts +0 -130
  351. package/lib/modules/connectors/funnel-schedule-store.ts +0 -195
  352. package/lib/modules/connectors/funnel-slack-adapter.ts +0 -31
  353. package/lib/modules/connectors/funnel-slack-store.ts +0 -90
  354. package/lib/modules/connectors/migrate-legacy-connectors.ts +0 -81
  355. package/lib/modules/connectors/schedule-connector-schema.ts +0 -18
  356. package/lib/modules/connectors/schedule-last-fired-store.ts +0 -48
  357. package/lib/modules/gateway/daemon.ts +0 -74
  358. package/lib/modules/gateway/funnel-broadcaster.ts +0 -37
  359. package/lib/modules/gateway/funnel-event-logger.ts +0 -59
  360. package/lib/modules/gateway/funnel-gateway-server.ts +0 -241
  361. package/lib/modules/mcp/channel-server.ts +0 -76
  362. package/lib/modules/profiles/profile-channel-checker.ts +0 -3
  363. package/lib/modules/profiles/profile-channel-ref-updater.ts +0 -3
  364. package/lib/modules/repos/funnel-repositories.ts +0 -112
  365. package/lib/modules/schedule/funnel-schedule.ts +0 -39
  366. package/lib/modules/settings/funnel-settings-store.ts +0 -56
  367. package/lib/modules/settings/settings-schema.ts +0 -33
  368. package/lib/modules/tui/app.tsx +0 -44
  369. package/lib/modules/tui/tui.tsx +0 -13
  370. package/lib/routes/channels/add.help.ts +0 -3
  371. package/lib/routes/channels/add.ts +0 -21
  372. package/lib/routes/channels/connectors-attach.help.ts +0 -3
  373. package/lib/routes/channels/connectors-attach.ts +0 -17
  374. package/lib/routes/channels/connectors-detach.help.ts +0 -3
  375. package/lib/routes/channels/connectors-detach.ts +0 -17
  376. package/lib/routes/channels/group.help.ts +0 -16
  377. package/lib/routes/channels/group.ts +0 -22
  378. package/lib/routes/channels/remove.help.ts +0 -3
  379. package/lib/routes/channels/remove.ts +0 -17
  380. package/lib/routes/channels/rename.help.ts +0 -5
  381. package/lib/routes/channels/rename.ts +0 -17
  382. package/lib/routes/channels/routes.ts +0 -19
  383. package/lib/routes/channels/show.help.ts +0 -1
  384. package/lib/routes/channels/show.ts +0 -26
  385. package/lib/routes/claude/claude.help.ts +0 -16
  386. package/lib/routes/claude/claude.ts +0 -76
  387. package/lib/routes/claude/routes.ts +0 -4
  388. package/lib/routes/connectors/add.help.ts +0 -28
  389. package/lib/routes/connectors/add.ts +0 -64
  390. package/lib/routes/connectors/group.help.ts +0 -14
  391. package/lib/routes/connectors/group.ts +0 -18
  392. package/lib/routes/connectors/remove.help.ts +0 -3
  393. package/lib/routes/connectors/remove.ts +0 -17
  394. package/lib/routes/connectors/rename.help.ts +0 -5
  395. package/lib/routes/connectors/rename.ts +0 -17
  396. package/lib/routes/connectors/routes.ts +0 -23
  397. package/lib/routes/connectors/schedules-add.help.ts +0 -11
  398. package/lib/routes/connectors/schedules-add.ts +0 -33
  399. package/lib/routes/connectors/schedules-group.help.ts +0 -1
  400. package/lib/routes/connectors/schedules-group.ts +0 -38
  401. package/lib/routes/connectors/schedules-remove.help.ts +0 -3
  402. package/lib/routes/connectors/schedules-remove.ts +0 -17
  403. package/lib/routes/connectors/set.help.ts +0 -8
  404. package/lib/routes/connectors/set.ts +0 -72
  405. package/lib/routes/connectors/show.help.ts +0 -1
  406. package/lib/routes/connectors/show.ts +0 -41
  407. package/lib/routes/gateway/group.help.ts +0 -15
  408. package/lib/routes/gateway/group.ts +0 -28
  409. package/lib/routes/gateway/logs.help.ts +0 -13
  410. package/lib/routes/gateway/logs.ts +0 -102
  411. package/lib/routes/gateway/restart.help.ts +0 -10
  412. package/lib/routes/gateway/routes.ts +0 -18
  413. package/lib/routes/gateway/run.help.ts +0 -12
  414. package/lib/routes/gateway/run.ts +0 -35
  415. package/lib/routes/gateway/start.help.ts +0 -15
  416. package/lib/routes/gateway/start.ts +0 -32
  417. package/lib/routes/gateway/status.help.ts +0 -9
  418. package/lib/routes/gateway/status.ts +0 -28
  419. package/lib/routes/gateway/stop.help.ts +0 -8
  420. package/lib/routes/gateway/stop.ts +0 -21
  421. package/lib/routes/profiles/add.help.ts +0 -3
  422. package/lib/routes/profiles/add.ts +0 -33
  423. package/lib/routes/profiles/group.help.ts +0 -16
  424. package/lib/routes/profiles/group.ts +0 -25
  425. package/lib/routes/profiles/launch.help.ts +0 -4
  426. package/lib/routes/profiles/launch.ts +0 -36
  427. package/lib/routes/profiles/remove.help.ts +0 -3
  428. package/lib/routes/profiles/remove.ts +0 -17
  429. package/lib/routes/profiles/rename.help.ts +0 -5
  430. package/lib/routes/profiles/rename.ts +0 -17
  431. package/lib/routes/profiles/routes.ts +0 -18
  432. package/lib/routes/profiles/set.help.ts +0 -5
  433. package/lib/routes/profiles/set.ts +0 -32
  434. package/lib/routes/repos/add.help.ts +0 -6
  435. package/lib/routes/repos/add.ts +0 -20
  436. package/lib/routes/repos/group.help.ts +0 -11
  437. package/lib/routes/repos/group.ts +0 -18
  438. package/lib/routes/repos/remove.help.ts +0 -3
  439. package/lib/routes/repos/remove.ts +0 -17
  440. package/lib/routes/repos/rename.help.ts +0 -5
  441. package/lib/routes/repos/rename.ts +0 -17
  442. package/lib/routes/repos/routes.ts +0 -17
  443. package/lib/routes/repos/set.help.ts +0 -5
  444. package/lib/routes/repos/set.ts +0 -21
  445. package/lib/routes/repos/show.help.ts +0 -1
  446. package/lib/routes/repos/show.ts +0 -19
  447. package/lib/routes/request/discord-help.ts +0 -9
  448. package/lib/routes/request/discord.help.ts +0 -19
  449. package/lib/routes/request/discord.ts +0 -65
  450. package/lib/routes/request/group.help.ts +0 -15
  451. package/lib/routes/request/group.ts +0 -9
  452. package/lib/routes/request/routes.ts +0 -14
  453. package/lib/routes/request/slack-help.ts +0 -9
  454. package/lib/routes/request/slack.help.ts +0 -19
  455. package/lib/routes/request/slack.ts +0 -61
  456. package/lib/routes/status/routes.ts +0 -4
  457. package/lib/routes/status/status.help.ts +0 -6
  458. package/lib/routes/status/status.ts +0 -77
  459. package/lib/routes/update/routes.ts +0 -4
  460. package/lib/routes/update/update.help.ts +0 -5
  461. package/lib/routes/update/update.ts +0 -21
  462. package/lib/routes.ts +0 -40
  463. /package/lib/{factory.ts → cli/factory.ts} +0 -0
  464. /package/lib/{modules → cli}/router/query-to-cli-args.ts +0 -0
  465. /package/lib/{modules → cli}/router/validator.ts +0 -0
  466. /package/lib/{modules/connectors/funnel-connector-adapter.ts → connectors/connector-adapter.ts} +0 -0
  467. /package/lib/{modules/connectors/funnel-discord-event-processor.ts → connectors/discord-event-processor.ts} +0 -0
  468. /package/lib/{modules/http/funnel-http-client.ts → engine/http/http-client.ts} +0 -0
  469. /package/lib/{modules/id/funnel-id-generator.ts → engine/id/id-generator.ts} +0 -0
  470. /package/lib/{modules/logger/funnel-logger.ts → engine/logger/logger.ts} +0 -0
  471. /package/lib/{modules/process/funnel-process-runner.ts → engine/process/process-runner.ts} +0 -0
  472. /package/lib/{modules/time/funnel-clock.ts → engine/time/clock.ts} +0 -0
@@ -0,0 +1,1222 @@
1
+ export declare const app: import("hono/hono-base").HonoBase<import("../factory").Env, {
2
+ "/claude": {
3
+ $get: {
4
+ input: {
5
+ query: {
6
+ [x: string]: string | string[];
7
+ profile?: string | undefined;
8
+ channel?: string | undefined;
9
+ };
10
+ };
11
+ output: string;
12
+ outputFormat: "text";
13
+ status: import("hono/utils/http-status").ContentfulStatusCode;
14
+ } | {
15
+ input: {
16
+ query: {
17
+ [x: string]: string | string[];
18
+ profile?: string | undefined;
19
+ channel?: string | undefined;
20
+ };
21
+ };
22
+ output: "funnel claude — launch Claude Code\n\nusage:\n funnel claude launch the default profile (first in the list)\n funnel claude -p <name> launch a named profile\n funnel claude --profile <name> (long form)\n funnel claude --channel <name> raw launch (no profile, cwd = current dir)\n\noptions:\n -p, --profile profile name to launch\n --channel channel name (raw launch, ignored when --profile is given)\n\nAny other arguments are forwarded to the claude CLI.\nOn launch the FUNNEL_CHANNEL_ID env var is set and MCP connects to the gateway.";
23
+ outputFormat: "text";
24
+ status: import("hono/utils/http-status").ContentfulStatusCode;
25
+ };
26
+ };
27
+ } & {
28
+ "/channels": {
29
+ $get: {
30
+ input: {
31
+ query: Record<string, never>;
32
+ };
33
+ output: string;
34
+ outputFormat: "text";
35
+ status: import("hono/utils/http-status").ContentfulStatusCode;
36
+ };
37
+ };
38
+ } & {
39
+ "/channels/add": {
40
+ $post: {
41
+ input: {};
42
+ output: string;
43
+ outputFormat: "text";
44
+ status: import("hono/utils/http-status").ContentfulStatusCode;
45
+ };
46
+ };
47
+ } & {
48
+ "/channels/add/:channel": {
49
+ $post: {
50
+ input: {
51
+ param: {
52
+ channel: string;
53
+ };
54
+ } & {
55
+ query: {
56
+ delivery?: "fanout" | "exclusive" | undefined;
57
+ };
58
+ };
59
+ output: string;
60
+ outputFormat: "text";
61
+ status: import("hono/utils/http-status").ContentfulStatusCode;
62
+ } | {
63
+ input: {
64
+ param: {
65
+ channel: string;
66
+ };
67
+ } & {
68
+ query: {
69
+ delivery?: "fanout" | "exclusive" | undefined;
70
+ };
71
+ };
72
+ output: `added channel "${string}" (id: ${string})`;
73
+ outputFormat: "text";
74
+ status: import("hono/utils/http-status").ContentfulStatusCode;
75
+ };
76
+ };
77
+ } & {
78
+ "/channels/remove": {
79
+ $post: {
80
+ input: {};
81
+ output: string;
82
+ outputFormat: "text";
83
+ status: import("hono/utils/http-status").ContentfulStatusCode;
84
+ };
85
+ };
86
+ } & {
87
+ "/channels/remove/:channel": {
88
+ $post: {
89
+ input: {
90
+ param: {
91
+ channel: string;
92
+ };
93
+ } & {
94
+ query: Record<string, never>;
95
+ };
96
+ output: string;
97
+ outputFormat: "text";
98
+ status: import("hono/utils/http-status").ContentfulStatusCode;
99
+ } | {
100
+ input: {
101
+ param: {
102
+ channel: string;
103
+ };
104
+ } & {
105
+ query: Record<string, never>;
106
+ };
107
+ output: `removed channel "${string}"`;
108
+ outputFormat: "text";
109
+ status: import("hono/utils/http-status").ContentfulStatusCode;
110
+ };
111
+ };
112
+ } & {
113
+ "/channels/rename/:channel/:newName": {
114
+ $post: {
115
+ input: {
116
+ param: {
117
+ channel: string;
118
+ newName: string;
119
+ };
120
+ } & {
121
+ query: Record<string, never>;
122
+ };
123
+ output: string;
124
+ outputFormat: "text";
125
+ status: import("hono/utils/http-status").ContentfulStatusCode;
126
+ } | {
127
+ input: {
128
+ param: {
129
+ channel: string;
130
+ newName: string;
131
+ };
132
+ } & {
133
+ query: Record<string, never>;
134
+ };
135
+ output: `renamed channel "${string}" to "${string}"`;
136
+ outputFormat: "text";
137
+ status: import("hono/utils/http-status").ContentfulStatusCode;
138
+ };
139
+ };
140
+ } & {
141
+ "/channels/:channel/rename/:newName": {
142
+ $post: {
143
+ input: {
144
+ param: {
145
+ channel: string;
146
+ newName: string;
147
+ };
148
+ } & {
149
+ query: Record<string, never>;
150
+ };
151
+ output: string;
152
+ outputFormat: "text";
153
+ status: import("hono/utils/http-status").ContentfulStatusCode;
154
+ } | {
155
+ input: {
156
+ param: {
157
+ channel: string;
158
+ newName: string;
159
+ };
160
+ } & {
161
+ query: Record<string, never>;
162
+ };
163
+ output: `renamed channel "${string}" to "${string}"`;
164
+ outputFormat: "text";
165
+ status: import("hono/utils/http-status").ContentfulStatusCode;
166
+ };
167
+ };
168
+ } & {
169
+ "/channels/rename": {
170
+ $post: {
171
+ input: {};
172
+ output: string;
173
+ outputFormat: "text";
174
+ status: import("hono/utils/http-status").ContentfulStatusCode;
175
+ };
176
+ };
177
+ } & {
178
+ "/channels/:channel/rename": {
179
+ $post: {
180
+ input: {
181
+ param: {
182
+ channel: string;
183
+ };
184
+ };
185
+ output: string;
186
+ outputFormat: "text";
187
+ status: import("hono/utils/http-status").ContentfulStatusCode;
188
+ };
189
+ };
190
+ } & {
191
+ "/channels/:channel/set/delivery/:mode": {
192
+ $post: {
193
+ input: {
194
+ param: {
195
+ channel: string;
196
+ mode: "fanout" | "exclusive";
197
+ };
198
+ };
199
+ output: string;
200
+ outputFormat: "text";
201
+ status: import("hono/utils/http-status").ContentfulStatusCode;
202
+ } | {
203
+ input: {
204
+ param: {
205
+ channel: string;
206
+ mode: "fanout" | "exclusive";
207
+ };
208
+ };
209
+ output: `channel "${string}" delivery set to fanout` | `channel "${string}" delivery set to exclusive`;
210
+ outputFormat: "text";
211
+ status: import("hono/utils/http-status").ContentfulStatusCode;
212
+ };
213
+ };
214
+ } & {
215
+ "/channels/:channel": {
216
+ $get: {
217
+ input: {
218
+ param: {
219
+ channel: string;
220
+ };
221
+ } & {
222
+ query: Record<string, never>;
223
+ };
224
+ output: string;
225
+ outputFormat: "text";
226
+ status: import("hono/utils/http-status").ContentfulStatusCode;
227
+ };
228
+ };
229
+ } & {
230
+ "/channels/:channel/connectors": {
231
+ $get: {
232
+ input: {
233
+ param: {
234
+ channel: string;
235
+ };
236
+ } & {
237
+ query: Record<string, never>;
238
+ };
239
+ output: string;
240
+ outputFormat: "text";
241
+ status: import("hono/utils/http-status").ContentfulStatusCode;
242
+ };
243
+ };
244
+ } & {
245
+ "/channels/:channel/connectors/add": {
246
+ $post: {
247
+ input: {
248
+ param: {
249
+ channel: string;
250
+ };
251
+ };
252
+ output: string;
253
+ outputFormat: "text";
254
+ status: import("hono/utils/http-status").ContentfulStatusCode;
255
+ };
256
+ };
257
+ } & {
258
+ "/channels/:channel/connectors/add/:connector": {
259
+ $post: {
260
+ input: {
261
+ param: {
262
+ channel: string;
263
+ connector: string;
264
+ };
265
+ } & {
266
+ query: {
267
+ type: string | string[];
268
+ "bot-token": string | string[];
269
+ "app-token": string | string[];
270
+ } | {
271
+ type: string | string[];
272
+ "poll-interval"?: string | string[] | undefined;
273
+ } | {
274
+ type: string | string[];
275
+ "bot-token": string | string[];
276
+ } | {
277
+ type: string | string[];
278
+ };
279
+ };
280
+ output: string;
281
+ outputFormat: "text";
282
+ status: import("hono/utils/http-status").ContentfulStatusCode;
283
+ } | {
284
+ input: {
285
+ param: {
286
+ channel: string;
287
+ connector: string;
288
+ };
289
+ } & {
290
+ query: {
291
+ type: string | string[];
292
+ "bot-token": string | string[];
293
+ "app-token": string | string[];
294
+ } | {
295
+ type: string | string[];
296
+ "poll-interval"?: string | string[] | undefined;
297
+ } | {
298
+ type: string | string[];
299
+ "bot-token": string | string[];
300
+ } | {
301
+ type: string | string[];
302
+ };
303
+ };
304
+ output: `added slack connector "${string}" to channel "${string}"`;
305
+ outputFormat: "text";
306
+ status: import("hono/utils/http-status").ContentfulStatusCode;
307
+ } | {
308
+ input: {
309
+ param: {
310
+ channel: string;
311
+ connector: string;
312
+ };
313
+ } & {
314
+ query: {
315
+ type: string | string[];
316
+ "bot-token": string | string[];
317
+ "app-token": string | string[];
318
+ } | {
319
+ type: string | string[];
320
+ "poll-interval"?: string | string[] | undefined;
321
+ } | {
322
+ type: string | string[];
323
+ "bot-token": string | string[];
324
+ } | {
325
+ type: string | string[];
326
+ };
327
+ };
328
+ output: `added gh connector "${string}" to channel "${string}"`;
329
+ outputFormat: "text";
330
+ status: import("hono/utils/http-status").ContentfulStatusCode;
331
+ } | {
332
+ input: {
333
+ param: {
334
+ channel: string;
335
+ connector: string;
336
+ };
337
+ } & {
338
+ query: {
339
+ type: string | string[];
340
+ "bot-token": string | string[];
341
+ "app-token": string | string[];
342
+ } | {
343
+ type: string | string[];
344
+ "poll-interval"?: string | string[] | undefined;
345
+ } | {
346
+ type: string | string[];
347
+ "bot-token": string | string[];
348
+ } | {
349
+ type: string | string[];
350
+ };
351
+ };
352
+ output: `added discord connector "${string}" to channel "${string}"`;
353
+ outputFormat: "text";
354
+ status: import("hono/utils/http-status").ContentfulStatusCode;
355
+ } | {
356
+ input: {
357
+ param: {
358
+ channel: string;
359
+ connector: string;
360
+ };
361
+ } & {
362
+ query: {
363
+ type: string | string[];
364
+ "bot-token": string | string[];
365
+ "app-token": string | string[];
366
+ } | {
367
+ type: string | string[];
368
+ "poll-interval"?: string | string[] | undefined;
369
+ } | {
370
+ type: string | string[];
371
+ "bot-token": string | string[];
372
+ } | {
373
+ type: string | string[];
374
+ };
375
+ };
376
+ output: `added schedule connector "${string}" to channel "${string}"`;
377
+ outputFormat: "text";
378
+ status: import("hono/utils/http-status").ContentfulStatusCode;
379
+ };
380
+ };
381
+ } & {
382
+ "/channels/:channel/connectors/remove": {
383
+ $post: {
384
+ input: {
385
+ param: {
386
+ channel: string;
387
+ };
388
+ };
389
+ output: string;
390
+ outputFormat: "text";
391
+ status: import("hono/utils/http-status").ContentfulStatusCode;
392
+ };
393
+ };
394
+ } & {
395
+ "/channels/:channel/connectors/remove/:connector": {
396
+ $post: {
397
+ input: {
398
+ param: {
399
+ channel: string;
400
+ connector: string;
401
+ };
402
+ } & {
403
+ query: Record<string, never>;
404
+ };
405
+ output: string;
406
+ outputFormat: "text";
407
+ status: import("hono/utils/http-status").ContentfulStatusCode;
408
+ } | {
409
+ input: {
410
+ param: {
411
+ channel: string;
412
+ connector: string;
413
+ };
414
+ } & {
415
+ query: Record<string, never>;
416
+ };
417
+ output: `removed connector "${string}" from channel "${string}"`;
418
+ outputFormat: "text";
419
+ status: import("hono/utils/http-status").ContentfulStatusCode;
420
+ };
421
+ };
422
+ } & {
423
+ "/channels/:channel/connectors/set": {
424
+ $post: {
425
+ input: {
426
+ param: {
427
+ channel: string;
428
+ };
429
+ };
430
+ output: string;
431
+ outputFormat: "text";
432
+ status: import("hono/utils/http-status").ContentfulStatusCode;
433
+ };
434
+ };
435
+ } & {
436
+ "/channels/:channel/connectors/set/:connector": {
437
+ $post: {
438
+ input: {
439
+ param: {
440
+ channel: string;
441
+ connector: string;
442
+ };
443
+ } & {
444
+ query: {
445
+ [x: string]: string | string[];
446
+ "bot-token"?: string | undefined;
447
+ "app-token"?: string | undefined;
448
+ "poll-interval"?: string | string[] | undefined;
449
+ };
450
+ };
451
+ output: string;
452
+ outputFormat: "text";
453
+ status: import("hono/utils/http-status").ContentfulStatusCode;
454
+ } | {
455
+ input: {
456
+ param: {
457
+ channel: string;
458
+ connector: string;
459
+ };
460
+ } & {
461
+ query: {
462
+ [x: string]: string | string[];
463
+ "bot-token"?: string | undefined;
464
+ "app-token"?: string | undefined;
465
+ "poll-interval"?: string | string[] | undefined;
466
+ };
467
+ };
468
+ output: `updated connector "${string}" in channel "${string}"`;
469
+ outputFormat: "text";
470
+ status: import("hono/utils/http-status").ContentfulStatusCode;
471
+ };
472
+ };
473
+ } & {
474
+ "/channels/:channel/connectors/rename/:connector/:newName": {
475
+ $post: {
476
+ input: {
477
+ param: {
478
+ channel: string;
479
+ connector: string;
480
+ newName: string;
481
+ };
482
+ } & {
483
+ query: Record<string, never>;
484
+ };
485
+ output: string;
486
+ outputFormat: "text";
487
+ status: import("hono/utils/http-status").ContentfulStatusCode;
488
+ } | {
489
+ input: {
490
+ param: {
491
+ channel: string;
492
+ connector: string;
493
+ newName: string;
494
+ };
495
+ } & {
496
+ query: Record<string, never>;
497
+ };
498
+ output: `renamed connector "${string}" to "${string}"`;
499
+ outputFormat: "text";
500
+ status: import("hono/utils/http-status").ContentfulStatusCode;
501
+ };
502
+ };
503
+ } & {
504
+ "/channels/:channel/connectors/:connector/rename/:newName": {
505
+ $post: {
506
+ input: {
507
+ param: {
508
+ channel: string;
509
+ connector: string;
510
+ newName: string;
511
+ };
512
+ } & {
513
+ query: Record<string, never>;
514
+ };
515
+ output: string;
516
+ outputFormat: "text";
517
+ status: import("hono/utils/http-status").ContentfulStatusCode;
518
+ } | {
519
+ input: {
520
+ param: {
521
+ channel: string;
522
+ connector: string;
523
+ newName: string;
524
+ };
525
+ } & {
526
+ query: Record<string, never>;
527
+ };
528
+ output: `renamed connector "${string}" to "${string}"`;
529
+ outputFormat: "text";
530
+ status: import("hono/utils/http-status").ContentfulStatusCode;
531
+ };
532
+ };
533
+ } & {
534
+ "/channels/:channel/connectors/rename": {
535
+ $post: {
536
+ input: {
537
+ param: {
538
+ channel: string;
539
+ };
540
+ };
541
+ output: string;
542
+ outputFormat: "text";
543
+ status: import("hono/utils/http-status").ContentfulStatusCode;
544
+ };
545
+ };
546
+ } & {
547
+ "/channels/:channel/connectors/:connector/rename": {
548
+ $post: {
549
+ input: {
550
+ param: {
551
+ channel: string;
552
+ } & {
553
+ connector: string;
554
+ };
555
+ };
556
+ output: string;
557
+ outputFormat: "text";
558
+ status: import("hono/utils/http-status").ContentfulStatusCode;
559
+ };
560
+ };
561
+ } & {
562
+ "/channels/:channel/connectors/:connector/request": {
563
+ $post: {
564
+ input: {
565
+ param: {
566
+ channel: string;
567
+ connector: string;
568
+ };
569
+ } & {
570
+ query: {
571
+ [x: string]: string | string[];
572
+ method: string | string[];
573
+ };
574
+ };
575
+ output: string;
576
+ outputFormat: "text";
577
+ status: import("hono/utils/http-status").ContentfulStatusCode;
578
+ };
579
+ };
580
+ } & {
581
+ "/channels/:channel/connectors/:connector": {
582
+ $get: {
583
+ input: {
584
+ param: {
585
+ channel: string;
586
+ connector: string;
587
+ };
588
+ } & {
589
+ query: Record<string, never>;
590
+ };
591
+ output: string;
592
+ outputFormat: "text";
593
+ status: import("hono/utils/http-status").ContentfulStatusCode;
594
+ };
595
+ };
596
+ } & {
597
+ "/channels/:channel/connectors/:connector/schedules": {
598
+ $get: {
599
+ input: {
600
+ param: {
601
+ channel: string;
602
+ connector: string;
603
+ };
604
+ } & {
605
+ query: Record<string, never>;
606
+ };
607
+ output: string;
608
+ outputFormat: "text";
609
+ status: import("hono/utils/http-status").ContentfulStatusCode;
610
+ };
611
+ };
612
+ } & {
613
+ "/channels/:channel/connectors/:connector/schedules/add": {
614
+ $post: {
615
+ input: {
616
+ param: {
617
+ channel: string;
618
+ } & {
619
+ connector: string;
620
+ };
621
+ };
622
+ output: string;
623
+ outputFormat: "text";
624
+ status: import("hono/utils/http-status").ContentfulStatusCode;
625
+ };
626
+ };
627
+ } & {
628
+ "/channels/:channel/connectors/:connector/schedules/add/:id": {
629
+ $post: {
630
+ input: {
631
+ param: {
632
+ channel: string;
633
+ connector: string;
634
+ id: string;
635
+ };
636
+ } & {
637
+ query: {
638
+ cron: string | string[];
639
+ prompt: string | string[];
640
+ enabled?: string | string[] | undefined;
641
+ "catchup-policy"?: "latest" | "all" | "skip" | undefined;
642
+ };
643
+ };
644
+ output: string;
645
+ outputFormat: "text";
646
+ status: import("hono/utils/http-status").ContentfulStatusCode;
647
+ } | {
648
+ input: {
649
+ param: {
650
+ channel: string;
651
+ connector: string;
652
+ id: string;
653
+ };
654
+ } & {
655
+ query: {
656
+ cron: string | string[];
657
+ prompt: string | string[];
658
+ enabled?: string | string[] | undefined;
659
+ "catchup-policy"?: "latest" | "all" | "skip" | undefined;
660
+ };
661
+ };
662
+ output: `added schedule entry "${string}"`;
663
+ outputFormat: "text";
664
+ status: import("hono/utils/http-status").ContentfulStatusCode;
665
+ };
666
+ };
667
+ } & {
668
+ "/channels/:channel/connectors/:connector/schedules/remove": {
669
+ $post: {
670
+ input: {
671
+ param: {
672
+ channel: string;
673
+ } & {
674
+ connector: string;
675
+ };
676
+ };
677
+ output: string;
678
+ outputFormat: "text";
679
+ status: import("hono/utils/http-status").ContentfulStatusCode;
680
+ };
681
+ };
682
+ } & {
683
+ "/channels/:channel/connectors/:connector/schedules/remove/:id": {
684
+ $post: {
685
+ input: {
686
+ param: {
687
+ channel: string;
688
+ connector: string;
689
+ id: string;
690
+ };
691
+ } & {
692
+ query: Record<string, never>;
693
+ };
694
+ output: string;
695
+ outputFormat: "text";
696
+ status: import("hono/utils/http-status").ContentfulStatusCode;
697
+ } | {
698
+ input: {
699
+ param: {
700
+ channel: string;
701
+ connector: string;
702
+ id: string;
703
+ };
704
+ } & {
705
+ query: Record<string, never>;
706
+ };
707
+ output: `removed schedule entry "${string}"`;
708
+ outputFormat: "text";
709
+ status: import("hono/utils/http-status").ContentfulStatusCode;
710
+ };
711
+ };
712
+ } & {
713
+ "/profiles": {
714
+ $get: {
715
+ input: {
716
+ query: Record<string, never>;
717
+ };
718
+ output: string;
719
+ outputFormat: "text";
720
+ status: import("hono/utils/http-status").ContentfulStatusCode;
721
+ };
722
+ };
723
+ } & {
724
+ "/profiles/add": {
725
+ $post: {
726
+ input: {};
727
+ output: string;
728
+ outputFormat: "text";
729
+ status: import("hono/utils/http-status").ContentfulStatusCode;
730
+ };
731
+ };
732
+ } & {
733
+ "/profiles/add/:profile": {
734
+ $post: {
735
+ input: {
736
+ param: {
737
+ profile: string;
738
+ };
739
+ } & {
740
+ query: {
741
+ path: string;
742
+ "sub-agent": string;
743
+ channel: string;
744
+ };
745
+ };
746
+ output: string;
747
+ outputFormat: "text";
748
+ status: import("hono/utils/http-status").ContentfulStatusCode;
749
+ } | {
750
+ input: {
751
+ param: {
752
+ profile: string;
753
+ };
754
+ } & {
755
+ query: {
756
+ path: string;
757
+ "sub-agent": string;
758
+ channel: string;
759
+ };
760
+ };
761
+ output: `added profile "${string}"`;
762
+ outputFormat: "text";
763
+ status: import("hono/utils/http-status").ContentfulStatusCode;
764
+ };
765
+ };
766
+ } & {
767
+ "/profiles/set": {
768
+ $post: {
769
+ input: {};
770
+ output: string;
771
+ outputFormat: "text";
772
+ status: import("hono/utils/http-status").ContentfulStatusCode;
773
+ };
774
+ };
775
+ } & {
776
+ "/profiles/set/:profile": {
777
+ $post: {
778
+ input: {
779
+ param: {
780
+ profile: string;
781
+ };
782
+ } & {
783
+ query: {
784
+ path?: string | undefined;
785
+ "sub-agent"?: string | undefined;
786
+ channel?: string | undefined;
787
+ };
788
+ };
789
+ output: string;
790
+ outputFormat: "text";
791
+ status: import("hono/utils/http-status").ContentfulStatusCode;
792
+ } | {
793
+ input: {
794
+ param: {
795
+ profile: string;
796
+ };
797
+ } & {
798
+ query: {
799
+ path?: string | undefined;
800
+ "sub-agent"?: string | undefined;
801
+ channel?: string | undefined;
802
+ };
803
+ };
804
+ output: `updated profile "${string}"`;
805
+ outputFormat: "text";
806
+ status: import("hono/utils/http-status").ContentfulStatusCode;
807
+ };
808
+ };
809
+ } & {
810
+ "/profiles/remove": {
811
+ $post: {
812
+ input: {};
813
+ output: string;
814
+ outputFormat: "text";
815
+ status: import("hono/utils/http-status").ContentfulStatusCode;
816
+ };
817
+ };
818
+ } & {
819
+ "/profiles/remove/:profile": {
820
+ $post: {
821
+ input: {
822
+ param: {
823
+ profile: string;
824
+ };
825
+ } & {
826
+ query: Record<string, never>;
827
+ };
828
+ output: string;
829
+ outputFormat: "text";
830
+ status: import("hono/utils/http-status").ContentfulStatusCode;
831
+ } | {
832
+ input: {
833
+ param: {
834
+ profile: string;
835
+ };
836
+ } & {
837
+ query: Record<string, never>;
838
+ };
839
+ output: `removed profile "${string}"`;
840
+ outputFormat: "text";
841
+ status: import("hono/utils/http-status").ContentfulStatusCode;
842
+ };
843
+ };
844
+ } & {
845
+ "/profiles/rename/:profile/:newName": {
846
+ $post: {
847
+ input: {
848
+ param: {
849
+ profile: string;
850
+ newName: string;
851
+ };
852
+ } & {
853
+ query: Record<string, never>;
854
+ };
855
+ output: string;
856
+ outputFormat: "text";
857
+ status: import("hono/utils/http-status").ContentfulStatusCode;
858
+ } | {
859
+ input: {
860
+ param: {
861
+ profile: string;
862
+ newName: string;
863
+ };
864
+ } & {
865
+ query: Record<string, never>;
866
+ };
867
+ output: `renamed profile "${string}" to "${string}"`;
868
+ outputFormat: "text";
869
+ status: import("hono/utils/http-status").ContentfulStatusCode;
870
+ };
871
+ };
872
+ } & {
873
+ "/profiles/:profile/rename/:newName": {
874
+ $post: {
875
+ input: {
876
+ param: {
877
+ profile: string;
878
+ newName: string;
879
+ };
880
+ } & {
881
+ query: Record<string, never>;
882
+ };
883
+ output: string;
884
+ outputFormat: "text";
885
+ status: import("hono/utils/http-status").ContentfulStatusCode;
886
+ } | {
887
+ input: {
888
+ param: {
889
+ profile: string;
890
+ newName: string;
891
+ };
892
+ } & {
893
+ query: Record<string, never>;
894
+ };
895
+ output: `renamed profile "${string}" to "${string}"`;
896
+ outputFormat: "text";
897
+ status: import("hono/utils/http-status").ContentfulStatusCode;
898
+ };
899
+ };
900
+ } & {
901
+ "/profiles/rename": {
902
+ $post: {
903
+ input: {};
904
+ output: string;
905
+ outputFormat: "text";
906
+ status: import("hono/utils/http-status").ContentfulStatusCode;
907
+ };
908
+ };
909
+ } & {
910
+ "/profiles/:profile/rename": {
911
+ $post: {
912
+ input: {
913
+ param: {
914
+ profile: string;
915
+ };
916
+ };
917
+ output: string;
918
+ outputFormat: "text";
919
+ status: import("hono/utils/http-status").ContentfulStatusCode;
920
+ };
921
+ };
922
+ } & {
923
+ "/profiles/:profile/as-default": {
924
+ $post: {
925
+ input: {
926
+ param: {
927
+ profile: string;
928
+ };
929
+ } & {
930
+ query: Record<string, never>;
931
+ };
932
+ output: string;
933
+ outputFormat: "text";
934
+ status: import("hono/utils/http-status").ContentfulStatusCode;
935
+ } | {
936
+ input: {
937
+ param: {
938
+ profile: string;
939
+ };
940
+ } & {
941
+ query: Record<string, never>;
942
+ };
943
+ output: `profile "${string}" is now the default`;
944
+ outputFormat: "text";
945
+ status: import("hono/utils/http-status").ContentfulStatusCode;
946
+ };
947
+ };
948
+ } & {
949
+ "/profiles/:profile/run": {
950
+ $get: {
951
+ input: {
952
+ param: {
953
+ profile: string;
954
+ };
955
+ } & {
956
+ query: {
957
+ [x: string]: string | string[];
958
+ };
959
+ };
960
+ output: string;
961
+ outputFormat: "text";
962
+ status: import("hono/utils/http-status").ContentfulStatusCode;
963
+ } | {
964
+ input: {
965
+ param: {
966
+ profile: string;
967
+ };
968
+ } & {
969
+ query: {
970
+ [x: string]: string | string[];
971
+ };
972
+ };
973
+ output: Promise<never>;
974
+ outputFormat: "json";
975
+ status: import("hono/utils/http-status").StatusCode;
976
+ };
977
+ };
978
+ } & {
979
+ "/profiles/:profile": {
980
+ $get: {
981
+ input: {
982
+ param: {
983
+ profile: string;
984
+ };
985
+ } & {
986
+ query: {
987
+ [x: string]: string | string[];
988
+ };
989
+ };
990
+ output: string;
991
+ outputFormat: "text";
992
+ status: import("hono/utils/http-status").ContentfulStatusCode;
993
+ } | {
994
+ input: {
995
+ param: {
996
+ profile: string;
997
+ };
998
+ } & {
999
+ query: {
1000
+ [x: string]: string | string[];
1001
+ };
1002
+ };
1003
+ output: Promise<never>;
1004
+ outputFormat: "json";
1005
+ status: import("hono/utils/http-status").StatusCode;
1006
+ };
1007
+ };
1008
+ } & {
1009
+ "/gateway": {
1010
+ $get: {
1011
+ input: {};
1012
+ output: string;
1013
+ outputFormat: "text";
1014
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1015
+ } | {
1016
+ input: {};
1017
+ output: "funnel gateway: running (pid null) — health check failed" | `funnel gateway: running (pid ${number}) \u2014 health check failed`;
1018
+ outputFormat: "text";
1019
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1020
+ } | {
1021
+ input: {};
1022
+ output: `funnel gateway: running (pid null)
1023
+ port: ${number}
1024
+ clients: ${string}` | `funnel gateway: running (pid ${number})
1025
+ port: ${number}
1026
+ clients: ${string}`;
1027
+ outputFormat: "text";
1028
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1029
+ };
1030
+ };
1031
+ } & {
1032
+ "/gateway/status": {
1033
+ $get: {
1034
+ input: {};
1035
+ output: string;
1036
+ outputFormat: "text";
1037
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1038
+ } | {
1039
+ input: {};
1040
+ output: "funnel gateway: running (pid null) — health check failed" | `funnel gateway: running (pid ${number}) \u2014 health check failed`;
1041
+ outputFormat: "text";
1042
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1043
+ } | {
1044
+ input: {};
1045
+ output: `funnel gateway: running (pid null)
1046
+ port: ${number}
1047
+ clients: ${string}` | `funnel gateway: running (pid ${number})
1048
+ port: ${number}
1049
+ clients: ${string}`;
1050
+ outputFormat: "text";
1051
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1052
+ };
1053
+ };
1054
+ } & {
1055
+ "/gateway/start": {
1056
+ $get: {
1057
+ input: {
1058
+ query: {
1059
+ "no-caffeine"?: string | undefined;
1060
+ };
1061
+ };
1062
+ output: string;
1063
+ outputFormat: "text";
1064
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1065
+ } | {
1066
+ input: {
1067
+ query: {
1068
+ "no-caffeine"?: string | undefined;
1069
+ };
1070
+ };
1071
+ output: "funnel gateway: already running (pid null)" | `funnel gateway: already running (pid ${number})`;
1072
+ outputFormat: "text";
1073
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1074
+ } | {
1075
+ input: {
1076
+ query: {
1077
+ "no-caffeine"?: string | undefined;
1078
+ };
1079
+ };
1080
+ output: "funnel gateway: started";
1081
+ outputFormat: "text";
1082
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1083
+ };
1084
+ };
1085
+ } & {
1086
+ "/gateway/stop": {
1087
+ $get: {
1088
+ input: {
1089
+ query: Record<string, never>;
1090
+ };
1091
+ output: string;
1092
+ outputFormat: "text";
1093
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1094
+ } | {
1095
+ input: {
1096
+ query: Record<string, never>;
1097
+ };
1098
+ output: "funnel gateway: no running process";
1099
+ outputFormat: "text";
1100
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1101
+ } | {
1102
+ input: {
1103
+ query: Record<string, never>;
1104
+ };
1105
+ output: "funnel gateway: stopped";
1106
+ outputFormat: "text";
1107
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1108
+ };
1109
+ };
1110
+ } & {
1111
+ "/gateway/restart": {
1112
+ $get: {
1113
+ input: {
1114
+ query: {
1115
+ "no-caffeine"?: string | undefined;
1116
+ };
1117
+ };
1118
+ output: string;
1119
+ outputFormat: "text";
1120
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1121
+ };
1122
+ };
1123
+ } & {
1124
+ "/gateway/run": {
1125
+ $get: {
1126
+ input: {
1127
+ query: {
1128
+ "no-caffeine"?: string | undefined;
1129
+ };
1130
+ };
1131
+ output: string;
1132
+ outputFormat: "text";
1133
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1134
+ } | {
1135
+ input: {
1136
+ query: {
1137
+ "no-caffeine"?: string | undefined;
1138
+ };
1139
+ };
1140
+ output: Promise<never>;
1141
+ outputFormat: "json";
1142
+ status: import("hono/utils/http-status").StatusCode;
1143
+ };
1144
+ };
1145
+ } & {
1146
+ "/gateway/logs": {
1147
+ $get: {
1148
+ input: {
1149
+ query: {
1150
+ n?: string | undefined;
1151
+ };
1152
+ };
1153
+ output: string;
1154
+ outputFormat: "text";
1155
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1156
+ } | {
1157
+ input: {
1158
+ query: {
1159
+ n?: string | undefined;
1160
+ };
1161
+ };
1162
+ output: "no logs";
1163
+ outputFormat: "text";
1164
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1165
+ };
1166
+ };
1167
+ } & {
1168
+ "/gateway/listeners": {
1169
+ $get: {
1170
+ input: {
1171
+ query: Record<string, never>;
1172
+ };
1173
+ output: string;
1174
+ outputFormat: "text";
1175
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1176
+ } | {
1177
+ input: {
1178
+ query: Record<string, never>;
1179
+ };
1180
+ output: "funnel gateway: no running listeners";
1181
+ outputFormat: "text";
1182
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1183
+ } | {
1184
+ input: {
1185
+ query: Record<string, never>;
1186
+ };
1187
+ output: `funnel gateway: running listeners
1188
+ ${string}`;
1189
+ outputFormat: "text";
1190
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1191
+ };
1192
+ };
1193
+ } & {
1194
+ "/status": {
1195
+ $get: {
1196
+ input: {
1197
+ query: Record<string, never>;
1198
+ };
1199
+ output: string;
1200
+ outputFormat: "text";
1201
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1202
+ };
1203
+ };
1204
+ } & {
1205
+ "/update": {
1206
+ $get: {
1207
+ input: {
1208
+ query: Record<string, never>;
1209
+ };
1210
+ output: string;
1211
+ outputFormat: "text";
1212
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1213
+ } | {
1214
+ input: {
1215
+ query: Record<string, never>;
1216
+ };
1217
+ output: "updated @interactive-inc/claude-funnel";
1218
+ outputFormat: "text";
1219
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1220
+ };
1221
+ };
1222
+ }, "/", "/update">;