@nex-ai/nex 0.1.65 → 0.2.0

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 (529) hide show
  1. package/README.md +236 -231
  2. package/bin/nex-mcp.js +50 -0
  3. package/bin/nex.js +53 -0
  4. package/package.json +9 -36
  5. package/dist/agent/adoption.d.ts +0 -23
  6. package/dist/agent/adoption.js +0 -87
  7. package/dist/agent/adoption.js.map +0 -1
  8. package/dist/agent/gossip.d.ts +0 -17
  9. package/dist/agent/gossip.js +0 -48
  10. package/dist/agent/gossip.js.map +0 -1
  11. package/dist/agent/loop.d.ts +0 -59
  12. package/dist/agent/loop.js +0 -389
  13. package/dist/agent/loop.js.map +0 -1
  14. package/dist/agent/queues.d.ts +0 -16
  15. package/dist/agent/queues.js +0 -44
  16. package/dist/agent/queues.js.map +0 -1
  17. package/dist/agent/session-store.d.ts +0 -21
  18. package/dist/agent/session-store.js +0 -96
  19. package/dist/agent/session-store.js.map +0 -1
  20. package/dist/agent/templates.d.ts +0 -5
  21. package/dist/agent/templates.js +0 -55
  22. package/dist/agent/templates.js.map +0 -1
  23. package/dist/agent/tools.d.ts +0 -25
  24. package/dist/agent/tools.js +0 -238
  25. package/dist/agent/tools.js.map +0 -1
  26. package/dist/agent/types.d.ts +0 -59
  27. package/dist/agent/types.js +0 -5
  28. package/dist/agent/types.js.map +0 -1
  29. package/dist/calendar/scheduler.d.ts +0 -32
  30. package/dist/calendar/scheduler.js +0 -178
  31. package/dist/calendar/scheduler.js.map +0 -1
  32. package/dist/calendar/store.d.ts +0 -15
  33. package/dist/calendar/store.js +0 -50
  34. package/dist/calendar/store.js.map +0 -1
  35. package/dist/calendar/types.d.ts +0 -17
  36. package/dist/calendar/types.js +0 -5
  37. package/dist/calendar/types.js.map +0 -1
  38. package/dist/chat/channel.d.ts +0 -20
  39. package/dist/chat/channel.js +0 -84
  40. package/dist/chat/channel.js.map +0 -1
  41. package/dist/chat/message-store.d.ts +0 -18
  42. package/dist/chat/message-store.js +0 -82
  43. package/dist/chat/message-store.js.map +0 -1
  44. package/dist/chat/router.d.ts +0 -17
  45. package/dist/chat/router.js +0 -65
  46. package/dist/chat/router.js.map +0 -1
  47. package/dist/chat/suggested-responses.d.ts +0 -6
  48. package/dist/chat/suggested-responses.js +0 -99
  49. package/dist/chat/suggested-responses.js.map +0 -1
  50. package/dist/chat/types.d.ts +0 -28
  51. package/dist/chat/types.js +0 -5
  52. package/dist/chat/types.js.map +0 -1
  53. package/dist/cli.d.ts +0 -5
  54. package/dist/cli.js +0 -20
  55. package/dist/cli.js.map +0 -1
  56. package/dist/commands/attribute.d.ts +0 -4
  57. package/dist/commands/attribute.js +0 -75
  58. package/dist/commands/attribute.js.map +0 -1
  59. package/dist/commands/config-cmd.d.ts +0 -4
  60. package/dist/commands/config-cmd.js +0 -53
  61. package/dist/commands/config-cmd.js.map +0 -1
  62. package/dist/commands/context.d.ts +0 -4
  63. package/dist/commands/context.js +0 -167
  64. package/dist/commands/context.js.map +0 -1
  65. package/dist/commands/dispatch.d.ts +0 -44
  66. package/dist/commands/dispatch.js +0 -1544
  67. package/dist/commands/dispatch.js.map +0 -1
  68. package/dist/commands/graph.d.ts +0 -5
  69. package/dist/commands/graph.js +0 -77
  70. package/dist/commands/graph.js.map +0 -1
  71. package/dist/commands/init.d.ts +0 -49
  72. package/dist/commands/init.js +0 -319
  73. package/dist/commands/init.js.map +0 -1
  74. package/dist/commands/insight.d.ts +0 -4
  75. package/dist/commands/insight.js +0 -39
  76. package/dist/commands/insight.js.map +0 -1
  77. package/dist/commands/integrate.d.ts +0 -4
  78. package/dist/commands/integrate.js +0 -361
  79. package/dist/commands/integrate.js.map +0 -1
  80. package/dist/commands/list-job.d.ts +0 -4
  81. package/dist/commands/list-job.js +0 -41
  82. package/dist/commands/list-job.js.map +0 -1
  83. package/dist/commands/list.d.ts +0 -4
  84. package/dist/commands/list.js +0 -148
  85. package/dist/commands/list.js.map +0 -1
  86. package/dist/commands/note.d.ts +0 -4
  87. package/dist/commands/note.js +0 -77
  88. package/dist/commands/note.js.map +0 -1
  89. package/dist/commands/object.d.ts +0 -4
  90. package/dist/commands/object.js +0 -78
  91. package/dist/commands/object.js.map +0 -1
  92. package/dist/commands/parse-input.d.ts +0 -5
  93. package/dist/commands/parse-input.js +0 -37
  94. package/dist/commands/parse-input.js.map +0 -1
  95. package/dist/commands/record.d.ts +0 -4
  96. package/dist/commands/record.js +0 -126
  97. package/dist/commands/record.js.map +0 -1
  98. package/dist/commands/register.d.ts +0 -4
  99. package/dist/commands/register.js +0 -23
  100. package/dist/commands/register.js.map +0 -1
  101. package/dist/commands/relationship.d.ts +0 -4
  102. package/dist/commands/relationship.js +0 -80
  103. package/dist/commands/relationship.js.map +0 -1
  104. package/dist/commands/scan.d.ts +0 -4
  105. package/dist/commands/scan.js +0 -111
  106. package/dist/commands/scan.js.map +0 -1
  107. package/dist/commands/search.d.ts +0 -4
  108. package/dist/commands/search.js +0 -62
  109. package/dist/commands/search.js.map +0 -1
  110. package/dist/commands/session.d.ts +0 -4
  111. package/dist/commands/session.js +0 -31
  112. package/dist/commands/session.js.map +0 -1
  113. package/dist/commands/setup.d.ts +0 -25
  114. package/dist/commands/setup.js +0 -584
  115. package/dist/commands/setup.js.map +0 -1
  116. package/dist/commands/task.d.ts +0 -4
  117. package/dist/commands/task.js +0 -140
  118. package/dist/commands/task.js.map +0 -1
  119. package/dist/commands/workspace.d.ts +0 -8
  120. package/dist/commands/workspace.js +0 -251
  121. package/dist/commands/workspace.js.map +0 -1
  122. package/dist/index.d.ts +0 -9
  123. package/dist/index.js +0 -142
  124. package/dist/index.js.map +0 -1
  125. package/dist/lib/capture-filter.d.ts +0 -9
  126. package/dist/lib/capture-filter.js +0 -14
  127. package/dist/lib/capture-filter.js.map +0 -1
  128. package/dist/lib/client.d.ts +0 -20
  129. package/dist/lib/client.js +0 -160
  130. package/dist/lib/client.js.map +0 -1
  131. package/dist/lib/compounding-worker.d.ts +0 -2
  132. package/dist/lib/compounding-worker.js +0 -21
  133. package/dist/lib/compounding-worker.js.map +0 -1
  134. package/dist/lib/compounding.d.ts +0 -20
  135. package/dist/lib/compounding.js +0 -45
  136. package/dist/lib/compounding.js.map +0 -1
  137. package/dist/lib/config.d.ts +0 -35
  138. package/dist/lib/config.js +0 -96
  139. package/dist/lib/config.js.map +0 -1
  140. package/dist/lib/context-format.d.ts +0 -7
  141. package/dist/lib/context-format.js +0 -21
  142. package/dist/lib/context-format.js.map +0 -1
  143. package/dist/lib/errors.d.ts +0 -18
  144. package/dist/lib/errors.js +0 -30
  145. package/dist/lib/errors.js.map +0 -1
  146. package/dist/lib/file-scanner.d.ts +0 -38
  147. package/dist/lib/file-scanner.js +0 -188
  148. package/dist/lib/file-scanner.js.map +0 -1
  149. package/dist/lib/graph-html.d.ts +0 -59
  150. package/dist/lib/graph-html.js +0 -859
  151. package/dist/lib/graph-html.js.map +0 -1
  152. package/dist/lib/installers.d.ts +0 -80
  153. package/dist/lib/installers.js +0 -602
  154. package/dist/lib/installers.js.map +0 -1
  155. package/dist/lib/integrations.d.ts +0 -23
  156. package/dist/lib/integrations.js +0 -25
  157. package/dist/lib/integrations.js.map +0 -1
  158. package/dist/lib/output.d.ts +0 -7
  159. package/dist/lib/output.js +0 -70
  160. package/dist/lib/output.js.map +0 -1
  161. package/dist/lib/platform-detect.d.ts +0 -23
  162. package/dist/lib/platform-detect.js +0 -359
  163. package/dist/lib/platform-detect.js.map +0 -1
  164. package/dist/lib/project-config.d.ts +0 -53
  165. package/dist/lib/project-config.js +0 -151
  166. package/dist/lib/project-config.js.map +0 -1
  167. package/dist/lib/prompt.d.ts +0 -15
  168. package/dist/lib/prompt.js +0 -213
  169. package/dist/lib/prompt.js.map +0 -1
  170. package/dist/lib/rate-limiter.d.ts +0 -13
  171. package/dist/lib/rate-limiter.js +0 -49
  172. package/dist/lib/rate-limiter.js.map +0 -1
  173. package/dist/lib/recall-filter.d.ts +0 -5
  174. package/dist/lib/recall-filter.js +0 -24
  175. package/dist/lib/recall-filter.js.map +0 -1
  176. package/dist/lib/session-store.d.ts +0 -15
  177. package/dist/lib/session-store.js +0 -62
  178. package/dist/lib/session-store.js.map +0 -1
  179. package/dist/lib/tui.d.ts +0 -57
  180. package/dist/lib/tui.js +0 -247
  181. package/dist/lib/tui.js.map +0 -1
  182. package/dist/lib/workspace-registry.d.ts +0 -47
  183. package/dist/lib/workspace-registry.js +0 -240
  184. package/dist/lib/workspace-registry.js.map +0 -1
  185. package/dist/mcp/channel.d.ts +0 -24
  186. package/dist/mcp/channel.js +0 -198
  187. package/dist/mcp/channel.js.map +0 -1
  188. package/dist/mcp/client.d.ts +0 -20
  189. package/dist/mcp/client.js +0 -131
  190. package/dist/mcp/client.js.map +0 -1
  191. package/dist/mcp/config.d.ts +0 -19
  192. package/dist/mcp/config.js +0 -48
  193. package/dist/mcp/config.js.map +0 -1
  194. package/dist/mcp/context-files.d.ts +0 -9
  195. package/dist/mcp/context-files.js +0 -90
  196. package/dist/mcp/context-files.js.map +0 -1
  197. package/dist/mcp/file-manifest.d.ts +0 -27
  198. package/dist/mcp/file-manifest.js +0 -68
  199. package/dist/mcp/file-manifest.js.map +0 -1
  200. package/dist/mcp/file-scanner.d.ts +0 -17
  201. package/dist/mcp/file-scanner.js +0 -77
  202. package/dist/mcp/file-scanner.js.map +0 -1
  203. package/dist/mcp/index.d.ts +0 -2
  204. package/dist/mcp/index.js +0 -51
  205. package/dist/mcp/index.js.map +0 -1
  206. package/dist/mcp/rate-limiter.d.ts +0 -14
  207. package/dist/mcp/rate-limiter.js +0 -60
  208. package/dist/mcp/rate-limiter.js.map +0 -1
  209. package/dist/mcp/server.d.ts +0 -6
  210. package/dist/mcp/server.js +0 -44
  211. package/dist/mcp/server.js.map +0 -1
  212. package/dist/mcp/session-store.d.ts +0 -16
  213. package/dist/mcp/session-store.js +0 -70
  214. package/dist/mcp/session-store.js.map +0 -1
  215. package/dist/mcp/tools/context.d.ts +0 -3
  216. package/dist/mcp/tools/context.js +0 -65
  217. package/dist/mcp/tools/context.js.map +0 -1
  218. package/dist/mcp/tools/insights.d.ts +0 -3
  219. package/dist/mcp/tools/insights.js +0 -24
  220. package/dist/mcp/tools/insights.js.map +0 -1
  221. package/dist/mcp/tools/integrations.d.ts +0 -3
  222. package/dist/mcp/tools/integrations.js +0 -27
  223. package/dist/mcp/tools/integrations.js.map +0 -1
  224. package/dist/mcp/tools/lists.d.ts +0 -3
  225. package/dist/mcp/tools/lists.js +0 -101
  226. package/dist/mcp/tools/lists.js.map +0 -1
  227. package/dist/mcp/tools/notes.d.ts +0 -3
  228. package/dist/mcp/tools/notes.js +0 -52
  229. package/dist/mcp/tools/notes.js.map +0 -1
  230. package/dist/mcp/tools/notifications.d.ts +0 -3
  231. package/dist/mcp/tools/notifications.js +0 -53
  232. package/dist/mcp/tools/notifications.js.map +0 -1
  233. package/dist/mcp/tools/records.d.ts +0 -3
  234. package/dist/mcp/tools/records.js +0 -74
  235. package/dist/mcp/tools/records.js.map +0 -1
  236. package/dist/mcp/tools/register.d.ts +0 -3
  237. package/dist/mcp/tools/register.js +0 -41
  238. package/dist/mcp/tools/register.js.map +0 -1
  239. package/dist/mcp/tools/relationships.d.ts +0 -3
  240. package/dist/mcp/tools/relationships.js +0 -47
  241. package/dist/mcp/tools/relationships.js.map +0 -1
  242. package/dist/mcp/tools/scan.d.ts +0 -3
  243. package/dist/mcp/tools/scan.js +0 -37
  244. package/dist/mcp/tools/scan.js.map +0 -1
  245. package/dist/mcp/tools/schema.d.ts +0 -3
  246. package/dist/mcp/tools/schema.js +0 -108
  247. package/dist/mcp/tools/schema.js.map +0 -1
  248. package/dist/mcp/tools/search.d.ts +0 -3
  249. package/dist/mcp/tools/search.js +0 -8
  250. package/dist/mcp/tools/search.js.map +0 -1
  251. package/dist/mcp/tools/tasks.d.ts +0 -3
  252. package/dist/mcp/tools/tasks.js +0 -88
  253. package/dist/mcp/tools/tasks.js.map +0 -1
  254. package/dist/mcp/workspace-data-dir.d.ts +0 -2
  255. package/dist/mcp/workspace-data-dir.js +0 -28
  256. package/dist/mcp/workspace-data-dir.js.map +0 -1
  257. package/dist/orchestration/budget.d.ts +0 -32
  258. package/dist/orchestration/budget.js +0 -72
  259. package/dist/orchestration/budget.js.map +0 -1
  260. package/dist/orchestration/executor.d.ts +0 -59
  261. package/dist/orchestration/executor.js +0 -197
  262. package/dist/orchestration/executor.js.map +0 -1
  263. package/dist/orchestration/router.d.ts +0 -30
  264. package/dist/orchestration/router.js +0 -98
  265. package/dist/orchestration/router.js.map +0 -1
  266. package/dist/orchestration/templates.d.ts +0 -11
  267. package/dist/orchestration/templates.js +0 -99
  268. package/dist/orchestration/templates.js.map +0 -1
  269. package/dist/orchestration/types.d.ts +0 -58
  270. package/dist/orchestration/types.js +0 -7
  271. package/dist/orchestration/types.js.map +0 -1
  272. package/dist/plugin/auto-capture.d.ts +0 -11
  273. package/dist/plugin/auto-capture.js +0 -135
  274. package/dist/plugin/auto-capture.js.map +0 -1
  275. package/dist/plugin/auto-recall-worker.d.ts +0 -2
  276. package/dist/plugin/auto-recall-worker.js +0 -74
  277. package/dist/plugin/auto-recall-worker.js.map +0 -1
  278. package/dist/plugin/auto-recall.d.ts +0 -11
  279. package/dist/plugin/auto-recall.js +0 -186
  280. package/dist/plugin/auto-recall.js.map +0 -1
  281. package/dist/plugin/auto-register.d.ts +0 -10
  282. package/dist/plugin/auto-register.js +0 -81
  283. package/dist/plugin/auto-register.js.map +0 -1
  284. package/dist/plugin/auto-scan.d.ts +0 -10
  285. package/dist/plugin/auto-scan.js +0 -54
  286. package/dist/plugin/auto-scan.js.map +0 -1
  287. package/dist/plugin/auto-session-start.d.ts +0 -14
  288. package/dist/plugin/auto-session-start.js +0 -156
  289. package/dist/plugin/auto-session-start.js.map +0 -1
  290. package/dist/plugin/capture-filter.d.ts +0 -21
  291. package/dist/plugin/capture-filter.js +0 -32
  292. package/dist/plugin/capture-filter.js.map +0 -1
  293. package/dist/plugin/config.d.ts +0 -61
  294. package/dist/plugin/config.js +0 -182
  295. package/dist/plugin/config.js.map +0 -1
  296. package/dist/plugin/context-files.d.ts +0 -23
  297. package/dist/plugin/context-files.js +0 -103
  298. package/dist/plugin/context-files.js.map +0 -1
  299. package/dist/plugin/context-format.d.ts +0 -18
  300. package/dist/plugin/context-format.js +0 -34
  301. package/dist/plugin/context-format.js.map +0 -1
  302. package/dist/plugin/file-manifest.d.ts +0 -27
  303. package/dist/plugin/file-manifest.js +0 -68
  304. package/dist/plugin/file-manifest.js.map +0 -1
  305. package/dist/plugin/file-scanner.d.ts +0 -19
  306. package/dist/plugin/file-scanner.js +0 -90
  307. package/dist/plugin/file-scanner.js.map +0 -1
  308. package/dist/plugin/nex-client.d.ts +0 -50
  309. package/dist/plugin/nex-client.js +0 -129
  310. package/dist/plugin/nex-client.js.map +0 -1
  311. package/dist/plugin/rate-limiter.d.ts +0 -26
  312. package/dist/plugin/rate-limiter.js +0 -65
  313. package/dist/plugin/rate-limiter.js.map +0 -1
  314. package/dist/plugin/recall-cache.d.ts +0 -41
  315. package/dist/plugin/recall-cache.js +0 -195
  316. package/dist/plugin/recall-cache.js.map +0 -1
  317. package/dist/plugin/recall-filter.d.ts +0 -13
  318. package/dist/plugin/recall-filter.js +0 -39
  319. package/dist/plugin/recall-filter.js.map +0 -1
  320. package/dist/plugin/session-store.d.ts +0 -23
  321. package/dist/plugin/session-store.js +0 -73
  322. package/dist/plugin/session-store.js.map +0 -1
  323. package/dist/plugin/workspace-data-dir.d.ts +0 -2
  324. package/dist/plugin/workspace-data-dir.js +0 -31
  325. package/dist/plugin/workspace-data-dir.js.map +0 -1
  326. package/dist/tui/agent-colors.d.ts +0 -19
  327. package/dist/tui/agent-colors.js +0 -34
  328. package/dist/tui/agent-colors.js.map +0 -1
  329. package/dist/tui/app.d.ts +0 -14
  330. package/dist/tui/app.js +0 -181
  331. package/dist/tui/app.js.map +0 -1
  332. package/dist/tui/channel-colors.d.ts +0 -16
  333. package/dist/tui/channel-colors.js +0 -43
  334. package/dist/tui/channel-colors.js.map +0 -1
  335. package/dist/tui/components/agent-card.d.ts +0 -11
  336. package/dist/tui/components/agent-card.js +0 -40
  337. package/dist/tui/components/agent-card.js.map +0 -1
  338. package/dist/tui/components/banner.d.ts +0 -44
  339. package/dist/tui/components/banner.js +0 -130
  340. package/dist/tui/components/banner.js.map +0 -1
  341. package/dist/tui/components/channel-colors.d.ts +0 -21
  342. package/dist/tui/components/channel-colors.js +0 -53
  343. package/dist/tui/components/channel-colors.js.map +0 -1
  344. package/dist/tui/components/channel-message.d.ts +0 -53
  345. package/dist/tui/components/channel-message.js +0 -66
  346. package/dist/tui/components/channel-message.js.map +0 -1
  347. package/dist/tui/components/chat-input.d.ts +0 -11
  348. package/dist/tui/components/chat-input.js +0 -19
  349. package/dist/tui/components/chat-input.js.map +0 -1
  350. package/dist/tui/components/data-table.d.ts +0 -11
  351. package/dist/tui/components/data-table.js +0 -47
  352. package/dist/tui/components/data-table.js.map +0 -1
  353. package/dist/tui/components/error-box.d.ts +0 -11
  354. package/dist/tui/components/error-box.js +0 -59
  355. package/dist/tui/components/error-box.js.map +0 -1
  356. package/dist/tui/components/help-screen.d.ts +0 -3
  357. package/dist/tui/components/help-screen.js +0 -63
  358. package/dist/tui/components/help-screen.js.map +0 -1
  359. package/dist/tui/components/index.d.ts +0 -17
  360. package/dist/tui/components/index.js +0 -10
  361. package/dist/tui/components/index.js.map +0 -1
  362. package/dist/tui/components/inline-confirm.d.ts +0 -14
  363. package/dist/tui/components/inline-confirm.js +0 -13
  364. package/dist/tui/components/inline-confirm.js.map +0 -1
  365. package/dist/tui/components/inline-select.d.ts +0 -21
  366. package/dist/tui/components/inline-select.js +0 -20
  367. package/dist/tui/components/inline-select.js.map +0 -1
  368. package/dist/tui/components/markdown.d.ts +0 -6
  369. package/dist/tui/components/markdown.js +0 -179
  370. package/dist/tui/components/markdown.js.map +0 -1
  371. package/dist/tui/components/mention-autocomplete.d.ts +0 -79
  372. package/dist/tui/components/mention-autocomplete.js +0 -250
  373. package/dist/tui/components/mention-autocomplete.js.map +0 -1
  374. package/dist/tui/components/message-list.d.ts +0 -18
  375. package/dist/tui/components/message-list.js +0 -29
  376. package/dist/tui/components/message-list.js.map +0 -1
  377. package/dist/tui/components/picker.d.ts +0 -16
  378. package/dist/tui/components/picker.js +0 -32
  379. package/dist/tui/components/picker.js.map +0 -1
  380. package/dist/tui/components/progress-steps.d.ts +0 -13
  381. package/dist/tui/components/progress-steps.js +0 -21
  382. package/dist/tui/components/progress-steps.js.map +0 -1
  383. package/dist/tui/components/slack/compose.d.ts +0 -27
  384. package/dist/tui/components/slack/compose.js +0 -147
  385. package/dist/tui/components/slack/compose.js.map +0 -1
  386. package/dist/tui/components/slack/layout.d.ts +0 -36
  387. package/dist/tui/components/slack/layout.js +0 -96
  388. package/dist/tui/components/slack/layout.js.map +0 -1
  389. package/dist/tui/components/slack/messages.d.ts +0 -72
  390. package/dist/tui/components/slack/messages.js +0 -177
  391. package/dist/tui/components/slack/messages.js.map +0 -1
  392. package/dist/tui/components/slack/quick-switcher.d.ts +0 -33
  393. package/dist/tui/components/slack/quick-switcher.js +0 -98
  394. package/dist/tui/components/slack/quick-switcher.js.map +0 -1
  395. package/dist/tui/components/slack/sidebar-types.d.ts +0 -65
  396. package/dist/tui/components/slack/sidebar-types.js +0 -7
  397. package/dist/tui/components/slack/sidebar-types.js.map +0 -1
  398. package/dist/tui/components/slack/sidebar.d.ts +0 -46
  399. package/dist/tui/components/slack/sidebar.js +0 -52
  400. package/dist/tui/components/slack/sidebar.js.map +0 -1
  401. package/dist/tui/components/slack/thread-panel.d.ts +0 -45
  402. package/dist/tui/components/slack/thread-panel.js +0 -47
  403. package/dist/tui/components/slack/thread-panel.js.map +0 -1
  404. package/dist/tui/components/slash-autocomplete.d.ts +0 -83
  405. package/dist/tui/components/slash-autocomplete.js +0 -233
  406. package/dist/tui/components/slash-autocomplete.js.map +0 -1
  407. package/dist/tui/components/spinner.d.ts +0 -17
  408. package/dist/tui/components/spinner.js +0 -30
  409. package/dist/tui/components/spinner.js.map +0 -1
  410. package/dist/tui/components/status-bar.d.ts +0 -23
  411. package/dist/tui/components/status-bar.js +0 -55
  412. package/dist/tui/components/status-bar.js.map +0 -1
  413. package/dist/tui/components/success-box.d.ts +0 -7
  414. package/dist/tui/components/success-box.js +0 -10
  415. package/dist/tui/components/success-box.js.map +0 -1
  416. package/dist/tui/components/tool-indicator.d.ts +0 -12
  417. package/dist/tui/components/tool-indicator.js +0 -18
  418. package/dist/tui/components/tool-indicator.js.map +0 -1
  419. package/dist/tui/components/viewport.d.ts +0 -9
  420. package/dist/tui/components/viewport.js +0 -24
  421. package/dist/tui/components/viewport.js.map +0 -1
  422. package/dist/tui/generative/bindings.d.ts +0 -27
  423. package/dist/tui/generative/bindings.js +0 -152
  424. package/dist/tui/generative/bindings.js.map +0 -1
  425. package/dist/tui/generative/registry.d.ts +0 -19
  426. package/dist/tui/generative/registry.js +0 -31
  427. package/dist/tui/generative/registry.js.map +0 -1
  428. package/dist/tui/generative/renderer.d.ts +0 -24
  429. package/dist/tui/generative/renderer.js +0 -160
  430. package/dist/tui/generative/renderer.js.map +0 -1
  431. package/dist/tui/generative/types.d.ts +0 -68
  432. package/dist/tui/generative/types.js +0 -7
  433. package/dist/tui/generative/types.js.map +0 -1
  434. package/dist/tui/hooks/use-cancellable.d.ts +0 -28
  435. package/dist/tui/hooks/use-cancellable.js +0 -51
  436. package/dist/tui/hooks/use-cancellable.js.map +0 -1
  437. package/dist/tui/hooks/use-streaming.d.ts +0 -44
  438. package/dist/tui/hooks/use-streaming.js +0 -105
  439. package/dist/tui/hooks/use-streaming.js.map +0 -1
  440. package/dist/tui/index.d.ts +0 -4
  441. package/dist/tui/index.js +0 -7
  442. package/dist/tui/index.js.map +0 -1
  443. package/dist/tui/keybindings.d.ts +0 -25
  444. package/dist/tui/keybindings.js +0 -277
  445. package/dist/tui/keybindings.js.map +0 -1
  446. package/dist/tui/register-views.d.ts +0 -8
  447. package/dist/tui/register-views.js +0 -122
  448. package/dist/tui/register-views.js.map +0 -1
  449. package/dist/tui/router.d.ts +0 -29
  450. package/dist/tui/router.js +0 -87
  451. package/dist/tui/router.js.map +0 -1
  452. package/dist/tui/services/agent-service.d.ts +0 -58
  453. package/dist/tui/services/agent-service.js +0 -197
  454. package/dist/tui/services/agent-service.js.map +0 -1
  455. package/dist/tui/services/calendar-service.d.ts +0 -31
  456. package/dist/tui/services/calendar-service.js +0 -133
  457. package/dist/tui/services/calendar-service.js.map +0 -1
  458. package/dist/tui/services/chat-service.d.ts +0 -28
  459. package/dist/tui/services/chat-service.js +0 -91
  460. package/dist/tui/services/chat-service.js.map +0 -1
  461. package/dist/tui/services/orchestration-service.d.ts +0 -42
  462. package/dist/tui/services/orchestration-service.js +0 -153
  463. package/dist/tui/services/orchestration-service.js.map +0 -1
  464. package/dist/tui/slash-commands.d.ts +0 -106
  465. package/dist/tui/slash-commands.js +0 -1421
  466. package/dist/tui/slash-commands.js.map +0 -1
  467. package/dist/tui/store.d.ts +0 -96
  468. package/dist/tui/store.js +0 -120
  469. package/dist/tui/store.js.map +0 -1
  470. package/dist/tui/theme.d.ts +0 -40
  471. package/dist/tui/theme.js +0 -39
  472. package/dist/tui/theme.js.map +0 -1
  473. package/dist/tui/tui-context.d.ts +0 -22
  474. package/dist/tui/tui-context.js +0 -17
  475. package/dist/tui/tui-context.js.map +0 -1
  476. package/dist/tui/views/agent-list.d.ts +0 -8
  477. package/dist/tui/views/agent-list.js +0 -11
  478. package/dist/tui/views/agent-list.js.map +0 -1
  479. package/dist/tui/views/ask-chat.d.ts +0 -9
  480. package/dist/tui/views/ask-chat.js +0 -40
  481. package/dist/tui/views/ask-chat.js.map +0 -1
  482. package/dist/tui/views/calendar.d.ts +0 -15
  483. package/dist/tui/views/calendar.js +0 -29
  484. package/dist/tui/views/calendar.js.map +0 -1
  485. package/dist/tui/views/chat.d.ts +0 -18
  486. package/dist/tui/views/chat.js +0 -28
  487. package/dist/tui/views/chat.js.map +0 -1
  488. package/dist/tui/views/generative.d.ts +0 -14
  489. package/dist/tui/views/generative.js +0 -37
  490. package/dist/tui/views/generative.js.map +0 -1
  491. package/dist/tui/views/help.d.ts +0 -6
  492. package/dist/tui/views/help.js +0 -9
  493. package/dist/tui/views/help.js.map +0 -1
  494. package/dist/tui/views/home-screen.d.ts +0 -67
  495. package/dist/tui/views/home-screen.js +0 -192
  496. package/dist/tui/views/home-screen.js.map +0 -1
  497. package/dist/tui/views/home.d.ts +0 -33
  498. package/dist/tui/views/home.js +0 -60
  499. package/dist/tui/views/home.js.map +0 -1
  500. package/dist/tui/views/index.d.ts +0 -20
  501. package/dist/tui/views/index.js +0 -11
  502. package/dist/tui/views/index.js.map +0 -1
  503. package/dist/tui/views/insights.d.ts +0 -19
  504. package/dist/tui/views/insights.js +0 -46
  505. package/dist/tui/views/insights.js.map +0 -1
  506. package/dist/tui/views/orchestration.d.ts +0 -18
  507. package/dist/tui/views/orchestration.js +0 -73
  508. package/dist/tui/views/orchestration.js.map +0 -1
  509. package/dist/tui/views/record-detail.d.ts +0 -10
  510. package/dist/tui/views/record-detail.js +0 -22
  511. package/dist/tui/views/record-detail.js.map +0 -1
  512. package/dist/tui/views/record-list.d.ts +0 -15
  513. package/dist/tui/views/record-list.js +0 -22
  514. package/dist/tui/views/record-list.js.map +0 -1
  515. package/dist/tui/views/slack-channel-header.d.ts +0 -15
  516. package/dist/tui/views/slack-channel-header.js +0 -16
  517. package/dist/tui/views/slack-channel-header.js.map +0 -1
  518. package/dist/tui/views/slack-home.d.ts +0 -21
  519. package/dist/tui/views/slack-home.js +0 -572
  520. package/dist/tui/views/slack-home.js.map +0 -1
  521. package/dist/tui/views/stream.d.ts +0 -16
  522. package/dist/tui/views/stream.js +0 -210
  523. package/dist/tui/views/stream.js.map +0 -1
  524. package/dist/tui/views/task-board.d.ts +0 -21
  525. package/dist/tui/views/task-board.js +0 -33
  526. package/dist/tui/views/task-board.js.map +0 -1
  527. package/dist/tui/views/timeline.d.ts +0 -17
  528. package/dist/tui/views/timeline.js +0 -24
  529. package/dist/tui/views/timeline.js.map +0 -1
@@ -1,36 +0,0 @@
1
- /**
2
- * SlackLayout — root 3-panel responsive layout.
3
- *
4
- * Arranges sidebar + main panel + optional thread panel side by side.
5
- * Responsive breakpoints:
6
- * < 60 cols: main only (no sidebar)
7
- * 60–79 cols: narrow sidebar (20) + main
8
- * 80–119 cols: sidebar (24) + main; thread replaces main if open
9
- * ≥ 120 cols: sidebar (28) + main + thread (45)
10
- */
11
- import React from "react";
12
- import type { ReactNode } from "react";
13
- export interface LayoutMetrics {
14
- sidebarWidth: number;
15
- showSidebar: boolean;
16
- mainWidth: number;
17
- threadWidth: number;
18
- showThread: boolean;
19
- /** When true, thread replaces main (narrow terminal + thread open) */
20
- threadReplacesMain: boolean;
21
- }
22
- export declare function computeLayout(cols: number, threadOpen: boolean): LayoutMetrics;
23
- export type FocusSection = "sidebar" | "messages" | "compose" | "thread";
24
- export interface SlackLayoutProps {
25
- cols: number;
26
- rows: number;
27
- threadOpen: boolean;
28
- focusSection: FocusSection;
29
- sidebar: ReactNode;
30
- main: ReactNode;
31
- thread?: ReactNode;
32
- /** Overlay content (quick switcher) — rendered on top */
33
- overlay?: ReactNode;
34
- }
35
- export declare function SlackLayout({ cols, rows, threadOpen, focusSection, sidebar, main, thread, overlay, }: SlackLayoutProps): React.JSX.Element;
36
- export default SlackLayout;
@@ -1,96 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- export function computeLayout(cols, threadOpen) {
4
- const SIDEBAR_WIDE = 28;
5
- const SIDEBAR_NORMAL = 24;
6
- const SIDEBAR_NARROW = 20;
7
- const THREAD_WIDTH = 45;
8
- const BORDER = 1; // right border on sidebar
9
- if (cols < 60) {
10
- return {
11
- sidebarWidth: 0,
12
- showSidebar: false,
13
- mainWidth: cols,
14
- threadWidth: 0,
15
- showThread: false,
16
- threadReplacesMain: false,
17
- };
18
- }
19
- if (cols < 80) {
20
- if (threadOpen) {
21
- // Thread replaces main at narrow widths
22
- return {
23
- sidebarWidth: SIDEBAR_NARROW,
24
- showSidebar: true,
25
- mainWidth: 0,
26
- threadWidth: cols - SIDEBAR_NARROW - BORDER,
27
- showThread: true,
28
- threadReplacesMain: true,
29
- };
30
- }
31
- return {
32
- sidebarWidth: SIDEBAR_NARROW,
33
- showSidebar: true,
34
- mainWidth: cols - SIDEBAR_NARROW - BORDER,
35
- threadWidth: 0,
36
- showThread: false,
37
- threadReplacesMain: false,
38
- };
39
- }
40
- if (cols < 120) {
41
- if (threadOpen) {
42
- // Thread replaces main at medium widths
43
- return {
44
- sidebarWidth: SIDEBAR_NORMAL,
45
- showSidebar: true,
46
- mainWidth: 0,
47
- threadWidth: cols - SIDEBAR_NORMAL - BORDER,
48
- showThread: true,
49
- threadReplacesMain: true,
50
- };
51
- }
52
- return {
53
- sidebarWidth: SIDEBAR_NORMAL,
54
- showSidebar: true,
55
- mainWidth: cols - SIDEBAR_NORMAL - BORDER,
56
- threadWidth: 0,
57
- showThread: false,
58
- threadReplacesMain: false,
59
- };
60
- }
61
- // Wide: full 3-panel layout
62
- if (threadOpen) {
63
- const mainW = cols - SIDEBAR_WIDE - THREAD_WIDTH - BORDER - 1;
64
- return {
65
- sidebarWidth: SIDEBAR_WIDE,
66
- showSidebar: true,
67
- mainWidth: Math.max(mainW, 30),
68
- threadWidth: THREAD_WIDTH,
69
- showThread: true,
70
- threadReplacesMain: false,
71
- };
72
- }
73
- return {
74
- sidebarWidth: SIDEBAR_WIDE,
75
- showSidebar: true,
76
- mainWidth: cols - SIDEBAR_WIDE - BORDER,
77
- threadWidth: 0,
78
- showThread: false,
79
- threadReplacesMain: false,
80
- };
81
- }
82
- /**
83
- * FocusBadge — small colored label showing which section has focus.
84
- * Renders at the top of each panel, only visible when that panel is focused.
85
- */
86
- function FocusBadge({ label, visible }) {
87
- if (!visible)
88
- return null;
89
- return (_jsx(Box, { children: _jsx(Text, { color: "black", backgroundColor: "cyan", bold: true, children: ` ${label} ` }) }));
90
- }
91
- export function SlackLayout({ cols, rows, threadOpen, focusSection, sidebar, main, thread, overlay, }) {
92
- const layout = computeLayout(cols, threadOpen);
93
- return (_jsxs(Box, { flexDirection: "column", width: cols, height: rows, children: [_jsxs(Box, { flexDirection: "row", flexGrow: 1, children: [layout.showSidebar && (_jsxs(Box, { width: layout.sidebarWidth, flexDirection: "column", flexShrink: 0, borderStyle: "single", borderLeft: false, borderTop: false, borderBottom: false, borderRight: true, borderColor: focusSection === "sidebar" ? "cyan" : "gray", children: [_jsx(FocusBadge, { label: "SIDEBAR", visible: focusSection === "sidebar" }), sidebar] })), layout.mainWidth > 0 && !layout.threadReplacesMain && (_jsx(Box, { width: layout.mainWidth, flexDirection: "column", flexGrow: 1, children: main })), layout.showThread && thread && (_jsxs(Box, { width: layout.threadWidth, flexDirection: "column", flexShrink: 0, borderStyle: "single", borderRight: false, borderTop: false, borderBottom: false, borderLeft: true, borderColor: focusSection === "thread" ? "cyan" : "gray", children: [_jsx(FocusBadge, { label: "THREAD", visible: focusSection === "thread" }), thread] }))] }), overlay] }));
94
- }
95
- export default SlackLayout;
96
- //# sourceMappingURL=layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../src/tui/components/slack/layout.tsx"],"names":[],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- /**
2
- * Slack-style message rendering components.
3
- *
4
- * Includes message grouping logic, date separators, unread markers,
5
- * thread indicators, system messages, and the scrollable message list.
6
- */
7
- import React from "react";
8
- export interface ChatMessageInput {
9
- id: string;
10
- sender: string;
11
- senderType: "agent" | "human" | "system";
12
- content: string;
13
- timestamp: number;
14
- threadReplyCount?: number;
15
- threadParticipants?: string[];
16
- threadLastReply?: number;
17
- reactions?: ReactionData[];
18
- edited?: boolean;
19
- isError?: boolean;
20
- }
21
- export interface ReactionData {
22
- emoji: string;
23
- count: number;
24
- reacted: boolean;
25
- }
26
- export interface GroupedMessage {
27
- id: string;
28
- sender: string;
29
- senderType: "agent" | "human" | "system";
30
- initials: string;
31
- content: string;
32
- timestamp: number;
33
- isFirstInGroup: boolean;
34
- threadReplyCount?: number;
35
- threadParticipants?: string[];
36
- threadLastReply?: number;
37
- reactions?: ReactionData[];
38
- edited?: boolean;
39
- isSystem?: boolean;
40
- dateSeparator?: string;
41
- isUnreadMarker?: boolean;
42
- isError?: boolean;
43
- }
44
- export declare function groupMessages(messages: ChatMessageInput[], unreadAfterTimestamp?: number): GroupedMessage[];
45
- export interface DateSeparatorProps {
46
- label: string;
47
- width?: number;
48
- }
49
- export declare function DateSeparator({ label, width, }: DateSeparatorProps): React.JSX.Element;
50
- export interface UnreadSeparatorProps {
51
- width?: number;
52
- }
53
- export declare function UnreadSeparator({ width, }: UnreadSeparatorProps): React.JSX.Element;
54
- export interface SystemMessageProps {
55
- content: string;
56
- timestamp: number;
57
- }
58
- export declare function SystemMessage({ content, timestamp, }: SystemMessageProps): React.JSX.Element;
59
- export interface ThreadIndicatorProps {
60
- replyCount: number;
61
- lastReplyTimestamp: number;
62
- onClick?: () => void;
63
- }
64
- export declare function ThreadIndicator({ replyCount, lastReplyTimestamp, onClick, }: ThreadIndicatorProps): React.JSX.Element;
65
- export interface SlackMessageListProps {
66
- messages: ChatMessageInput[];
67
- unreadAfterTimestamp?: number;
68
- onThreadOpen?: (messageId: string) => void;
69
- width?: number;
70
- }
71
- export declare function SlackMessageList({ messages, unreadAfterTimestamp, onThreadOpen, width, }: SlackMessageListProps): React.JSX.Element;
72
- export default SlackMessageList;
@@ -1,177 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Slack-style message rendering components.
4
- *
5
- * Includes message grouping logic, date separators, unread markers,
6
- * thread indicators, system messages, and the scrollable message list.
7
- */
8
- import { useMemo } from "react";
9
- import { Box, Text } from "ink";
10
- import { getAgentColor } from "../../agent-colors.js";
11
- import { Markdown } from "../markdown.js";
12
- // ── Time Formatting ─────────────────────────────────────────────────
13
- function formatTime(timestamp) {
14
- const d = new Date(timestamp);
15
- const hours = d.getHours();
16
- const minutes = d.getMinutes().toString().padStart(2, "0");
17
- const ampm = hours >= 12 ? "PM" : "AM";
18
- const h = hours % 12 || 12;
19
- return `${h}:${minutes} ${ampm}`;
20
- }
21
- function formatTimeWithDate(timestamp) {
22
- const d = new Date(timestamp);
23
- const now = new Date();
24
- const isToday = d.getFullYear() === now.getFullYear() &&
25
- d.getMonth() === now.getMonth() &&
26
- d.getDate() === now.getDate();
27
- if (isToday)
28
- return formatTime(timestamp);
29
- const month = d.toLocaleDateString("en-US", { month: "short" });
30
- const day = d.getDate();
31
- return `${month} ${day}, ${formatTime(timestamp)}`;
32
- }
33
- function getDateLabel(timestamp) {
34
- const d = new Date(timestamp);
35
- const now = new Date();
36
- const isToday = d.getFullYear() === now.getFullYear() &&
37
- d.getMonth() === now.getMonth() &&
38
- d.getDate() === now.getDate();
39
- if (isToday)
40
- return "Today";
41
- const yesterday = new Date(now);
42
- yesterday.setDate(yesterday.getDate() - 1);
43
- const isYesterday = d.getFullYear() === yesterday.getFullYear() &&
44
- d.getMonth() === yesterday.getMonth() &&
45
- d.getDate() === yesterday.getDate();
46
- if (isYesterday)
47
- return "Yesterday";
48
- return d.toLocaleDateString("en-US", {
49
- weekday: "long",
50
- month: "long",
51
- day: "numeric",
52
- });
53
- }
54
- // ── groupMessages ───────────────────────────────────────────────────
55
- const GROUP_WINDOW_MS = 5 * 60 * 1000; // 5 minutes
56
- export function groupMessages(messages, unreadAfterTimestamp) {
57
- const result = [];
58
- let lastSender = "";
59
- let lastTimestamp = 0;
60
- let lastDateKey = "";
61
- let unreadMarkerInserted = false;
62
- for (const msg of messages) {
63
- const msgDate = new Date(msg.timestamp);
64
- const dateKey = `${msgDate.getFullYear()}-${msgDate.getMonth()}-${msgDate.getDate()}`;
65
- // Date separator
66
- let dateSeparator;
67
- if (dateKey !== lastDateKey) {
68
- dateSeparator = getDateLabel(msg.timestamp);
69
- lastDateKey = dateKey;
70
- }
71
- // Unread marker
72
- let isUnreadMarker = false;
73
- if (!unreadMarkerInserted &&
74
- unreadAfterTimestamp !== undefined &&
75
- msg.timestamp > unreadAfterTimestamp) {
76
- isUnreadMarker = true;
77
- unreadMarkerInserted = true;
78
- }
79
- // Grouping: same sender within 5 min = continuation
80
- const isFirstInGroup = msg.sender !== lastSender ||
81
- msg.timestamp - lastTimestamp > GROUP_WINDOW_MS ||
82
- dateSeparator !== undefined ||
83
- msg.senderType === "system";
84
- // Compute initials
85
- const initials = msg.sender
86
- .split(/[\s-]+/)
87
- .slice(0, 2)
88
- .map((w) => w[0]?.toUpperCase() ?? "")
89
- .join("");
90
- result.push({
91
- id: msg.id,
92
- sender: msg.sender,
93
- senderType: msg.senderType,
94
- initials,
95
- content: msg.content,
96
- timestamp: msg.timestamp,
97
- isFirstInGroup,
98
- isSystem: msg.senderType === "system",
99
- dateSeparator,
100
- isUnreadMarker,
101
- threadReplyCount: msg.threadReplyCount,
102
- threadParticipants: msg.threadParticipants,
103
- threadLastReply: msg.threadLastReply,
104
- reactions: msg.reactions,
105
- edited: msg.edited,
106
- isError: msg.isError,
107
- });
108
- lastSender = msg.sender;
109
- lastTimestamp = msg.timestamp;
110
- }
111
- return result;
112
- }
113
- export function DateSeparator({ label, width = 60, }) {
114
- const labelWithPad = ` ${label} `;
115
- const remaining = Math.max(0, width - labelWithPad.length);
116
- const left = Math.floor(remaining / 2);
117
- const right = remaining - left;
118
- const line = "─".repeat(left) + labelWithPad + "─".repeat(right);
119
- return (_jsx(Box, { justifyContent: "center", marginY: 0, children: _jsx(Text, { color: "gray", children: line }) }));
120
- }
121
- export function UnreadSeparator({ width = 60, }) {
122
- const labelWithPad = " New ";
123
- const remaining = Math.max(0, width - labelWithPad.length);
124
- const left = Math.floor(remaining / 2);
125
- const right = remaining - left;
126
- const line = "─".repeat(left) + labelWithPad + "─".repeat(right);
127
- return (_jsx(Box, { justifyContent: "center", marginY: 0, children: _jsx(Text, { color: "red", bold: true, children: line }) }));
128
- }
129
- export function SystemMessage({ content, timestamp, }) {
130
- return (_jsx(Box, { justifyContent: "center", paddingX: 4, children: _jsxs(Text, { color: "gray", dimColor: true, italic: true, children: ["✦ ", content] }) }));
131
- }
132
- export function ThreadIndicator({ replyCount, lastReplyTimestamp, onClick, }) {
133
- const replyText = replyCount === 1 ? "1 reply" : `${replyCount} replies`;
134
- const lastReply = `Last reply ${formatTimeWithDate(lastReplyTimestamp)}`;
135
- return (_jsx(Box, { paddingLeft: 6, children: _jsxs(Text, { color: "cyan", children: ["↳ ", replyText, " ", lastReply] }) }));
136
- }
137
- function FirstMessage({ message, onThreadOpen, }) {
138
- const isHuman = message.senderType === "human";
139
- const avatarChar = isHuman ? ">" : message.initials.charAt(0) || "?";
140
- const nameColor = isHuman ? "white" : getAgentColor(message.sender);
141
- const time = formatTimeWithDate(message.timestamp);
142
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { color: nameColor, bold: true, children: ["[", avatarChar, "] "] }), _jsx(Text, { color: nameColor, bold: true, children: message.sender }), _jsxs(Text, { color: "gray", dimColor: true, children: [" ", time] })] }), _jsx(Box, { paddingLeft: 4, children: _jsx(Markdown, { content: message.content }) }), message.edited && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "gray", dimColor: true, children: "(edited)" }) })), message.threadReplyCount != null &&
143
- message.threadReplyCount > 0 &&
144
- message.threadLastReply != null && (_jsx(ThreadIndicator, { replyCount: message.threadReplyCount, lastReplyTimestamp: message.threadLastReply, onClick: onThreadOpen ? () => onThreadOpen(message.id) : undefined }))] }));
145
- }
146
- function ContinuationMessage({ message, onThreadOpen, }) {
147
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { paddingLeft: 4, children: _jsx(Markdown, { content: message.content }) }), message.edited && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "gray", dimColor: true, children: "(edited)" }) })), message.threadReplyCount != null &&
148
- message.threadReplyCount > 0 &&
149
- message.threadLastReply != null && (_jsx(ThreadIndicator, { replyCount: message.threadReplyCount, lastReplyTimestamp: message.threadLastReply, onClick: onThreadOpen ? () => onThreadOpen(message.id) : undefined }))] }));
150
- }
151
- export function SlackMessageList({ messages, unreadAfterTimestamp, onThreadOpen, width = 60, }) {
152
- const grouped = useMemo(() => groupMessages(messages, unreadAfterTimestamp), [messages, unreadAfterTimestamp]);
153
- return (_jsx(Box, { flexDirection: "column", flexGrow: 1, children: grouped.map((msg) => {
154
- const elements = [];
155
- // Date separator before this message
156
- if (msg.dateSeparator) {
157
- elements.push(_jsx(DateSeparator, { label: msg.dateSeparator, width: width }, `date-${msg.id}`));
158
- }
159
- // Unread marker before this message
160
- if (msg.isUnreadMarker) {
161
- elements.push(_jsx(UnreadSeparator, { width: width }, `unread-${msg.id}`));
162
- }
163
- // The message itself
164
- if (msg.isSystem) {
165
- elements.push(_jsx(SystemMessage, { content: msg.content, timestamp: msg.timestamp }, msg.id));
166
- }
167
- else if (msg.isFirstInGroup) {
168
- elements.push(_jsx(FirstMessage, { message: msg, onThreadOpen: onThreadOpen }, msg.id));
169
- }
170
- else {
171
- elements.push(_jsx(ContinuationMessage, { message: msg, onThreadOpen: onThreadOpen }, msg.id));
172
- }
173
- return _jsx(Box, { flexDirection: "column", children: elements }, `row-${msg.id}`);
174
- }) }));
175
- }
176
- export default SlackMessageList;
177
- //# sourceMappingURL=messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/tui/components/slack/messages.tsx"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Quick Switcher (Ctrl+K) modal overlay.
3
- *
4
- * Provides fuzzy search across channels and DMs with frecency-based
5
- * ranking. Renders as a centered overlay capturing all keyboard input.
6
- */
7
- import React from "react";
8
- export interface QuickSwitcherItem {
9
- id: string;
10
- name: string;
11
- type: "channel" | "dm" | "group-dm";
12
- online?: boolean;
13
- unread: number;
14
- /** Frecency score for ranking (higher = more recent/frequent). */
15
- score: number;
16
- }
17
- export interface QuickSwitcherProps {
18
- open: boolean;
19
- items: QuickSwitcherItem[];
20
- onSelect: (id: string) => void;
21
- onClose: () => void;
22
- }
23
- /**
24
- * Case-insensitive substring match on name.
25
- * Matches partial words and hyphen/underscore-separated tokens.
26
- */
27
- export declare function fuzzyMatch(query: string, name: string): boolean;
28
- /**
29
- * Filter and sort items by fuzzy match + frecency score.
30
- */
31
- export declare function filterItems(query: string, items: QuickSwitcherItem[]): QuickSwitcherItem[];
32
- export declare function QuickSwitcher({ open, items, onSelect, onClose, }: QuickSwitcherProps): React.JSX.Element | null;
33
- export default QuickSwitcher;
@@ -1,98 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Quick Switcher (Ctrl+K) modal overlay.
4
- *
5
- * Provides fuzzy search across channels and DMs with frecency-based
6
- * ranking. Renders as a centered overlay capturing all keyboard input.
7
- */
8
- import React, { useState, useMemo, useCallback, useEffect } from "react";
9
- import { Box, Text } from "ink";
10
- import { TextInput } from "@inkjs/ui";
11
- // ── Fuzzy match ─────────────────────────────────────────────────────
12
- /**
13
- * Case-insensitive substring match on name.
14
- * Matches partial words and hyphen/underscore-separated tokens.
15
- */
16
- export function fuzzyMatch(query, name) {
17
- if (!query)
18
- return true;
19
- const q = query.toLowerCase();
20
- const n = name.toLowerCase();
21
- // Direct substring
22
- if (n.includes(q))
23
- return true;
24
- // Token initials match (e.g. "fa" matches "Founding Agent")
25
- const tokens = n.split(/[\s\-_]+/);
26
- const initials = tokens.map((t) => t[0] || "").join("");
27
- if (initials.includes(q))
28
- return true;
29
- return false;
30
- }
31
- /**
32
- * Filter and sort items by fuzzy match + frecency score.
33
- */
34
- export function filterItems(query, items) {
35
- const matched = items.filter((item) => fuzzyMatch(query, item.name));
36
- // Sort by score descending (frecency)
37
- return matched.sort((a, b) => b.score - a.score);
38
- }
39
- // ── Item row ────────────────────────────────────────────────────────
40
- function SwitcherItem({ item, isSelected, }) {
41
- let prefix;
42
- if (item.type === "channel") {
43
- prefix = _jsx(Text, { color: "gray", children: "# " });
44
- }
45
- else {
46
- const dotColor = item.online ? "green" : "gray";
47
- const dot = item.online ? "●" : "○";
48
- prefix = _jsxs(Text, { color: dotColor, children: [dot, " "] });
49
- }
50
- return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? "cyan" : undefined, bold: isSelected, children: isSelected ? "> " : " " }), prefix, _jsx(Text, { color: isSelected ? "cyan" : "white", bold: isSelected, children: item.name }), item.unread > 0 && _jsxs(Text, { color: "gray", children: [" (", item.unread, ")"] })] }));
51
- }
52
- // ── QuickSwitcher ───────────────────────────────────────────────────
53
- export function QuickSwitcher({ open, items, onSelect, onClose, }) {
54
- // All hooks must be called unconditionally before any early return
55
- const [query, setQuery] = useState("");
56
- const [selectedIndex, setSelectedIndex] = useState(0);
57
- const maxVisible = 10;
58
- const filtered = useMemo(() => filterItems(query, items), [query, items]);
59
- const visibleItems = filtered.slice(0, maxVisible);
60
- // Reset state when switcher opens
61
- useEffect(() => {
62
- if (open) {
63
- setQuery("");
64
- setSelectedIndex(0);
65
- }
66
- }, [open]);
67
- const handleChange = useCallback((newQuery) => {
68
- setQuery(newQuery);
69
- setSelectedIndex(0);
70
- }, []);
71
- const handleSubmit = useCallback(() => {
72
- if (filtered.length > 0 && selectedIndex < filtered.length) {
73
- onSelect(filtered[selectedIndex].id);
74
- }
75
- }, [filtered, selectedIndex, onSelect]);
76
- // Register globalThis bridge for arrow key navigation from app.tsx
77
- const filteredLengthRef = React.useRef(filtered.length);
78
- filteredLengthRef.current = filtered.length;
79
- useEffect(() => {
80
- if (!open)
81
- return;
82
- const g = globalThis;
83
- g.__nexQuickSwitcherNav = (direction) => {
84
- setSelectedIndex((prev) => {
85
- const len = Math.min(filteredLengthRef.current, maxVisible);
86
- if (len === 0)
87
- return 0;
88
- return ((prev + direction) % len + len) % len;
89
- });
90
- };
91
- return () => { delete g.__nexQuickSwitcherNav; };
92
- }, [open]);
93
- if (!open)
94
- return null;
95
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "double", borderColor: "cyan", paddingX: 1, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: "cyan", children: "Switch to..." }) }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "\uD83D\uDD0D " }), _jsx(TextInput, { placeholder: "Search channels and DMs", onChange: handleChange, onSubmit: handleSubmit })] }), _jsx(Box, { children: _jsx(Text, { color: "gray", children: "─".repeat(40) }) }), _jsxs(Box, { flexDirection: "column", children: [visibleItems.length === 0 && (_jsx(Box, { paddingX: 1, children: _jsx(Text, { color: "gray", children: "No matches found" }) })), visibleItems.map((item, idx) => (_jsx(SwitcherItem, { item: item, isSelected: idx === selectedIndex }, item.id)))] }), _jsx(Box, { children: _jsx(Text, { color: "gray", children: "\u2191\u2193 navigate \u00B7 Enter select \u00B7 Esc close" }) })] }));
96
- }
97
- export default QuickSwitcher;
98
- //# sourceMappingURL=quick-switcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quick-switcher.js","sourceRoot":"","sources":["../../../../src/tui/components/slack/quick-switcher.tsx"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- /**
2
- * Type definitions for the Slack sidebar components.
3
- *
4
- * Matches the interfaces defined in docs/slack-tui-architecture.md §2.3.
5
- */
6
- /** A sidebar item (channel or DM). */
7
- export interface SidebarItemData {
8
- id: string;
9
- name: string;
10
- type: "channel" | "dm" | "group-dm";
11
- /** For channels: public or private */
12
- visibility?: "public" | "private";
13
- /** For DMs: the agent/user slugs */
14
- members?: string[];
15
- /** Online status (DMs only) */
16
- online?: boolean;
17
- /** Unread message count */
18
- unread: number;
19
- /** Has @mention in unread */
20
- hasMention: boolean;
21
- /** Muted by user */
22
- muted: boolean;
23
- /** Last message timestamp for frecency sort */
24
- lastActivity: number;
25
- }
26
- /** Section grouping for the sidebar. */
27
- export interface SidebarSectionData {
28
- title: string;
29
- items: SidebarItemData[];
30
- }
31
- /** Props for the root SlackSidebar component. */
32
- export interface SidebarProps {
33
- width: number;
34
- focused: boolean;
35
- workspaceName: string;
36
- sections: SidebarSectionData[];
37
- collapsedSections: string[];
38
- activeChannelId: string;
39
- cursor: number;
40
- onToggleSection: (title: string) => void;
41
- onSelectItem: (id: string) => void;
42
- }
43
- /** Props for SidebarSection. */
44
- export interface SidebarSectionProps {
45
- title: string;
46
- collapsed: boolean;
47
- items: SidebarItemData[];
48
- activeChannelId: string;
49
- /** Index of cursor within the flattened sidebar list */
50
- cursorIndex: number;
51
- /** Starting index of this section in the flat list */
52
- startIndex: number;
53
- onToggle: () => void;
54
- onSelect: (id: string) => void;
55
- }
56
- /** Props for SidebarItem. */
57
- export interface SidebarItemProps {
58
- item: SidebarItemData;
59
- isActive: boolean;
60
- isCursor: boolean;
61
- }
62
- /** Props for WorkspaceHeader. */
63
- export interface WorkspaceHeaderProps {
64
- name: string;
65
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Type definitions for the Slack sidebar components.
3
- *
4
- * Matches the interfaces defined in docs/slack-tui-architecture.md §2.3.
5
- */
6
- export {};
7
- //# sourceMappingURL=sidebar-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar-types.js","sourceRoot":"","sources":["../../../../src/tui/components/slack/sidebar-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}