@nex-ai/nex 0.1.65 → 0.2.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 (529) hide show
  1. package/README.md +190 -263
  2. package/bin/nex-mcp.js +50 -0
  3. package/bin/nex.js +53 -0
  4. package/package.json +15 -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,195 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { workspaceDataDir } from "./workspace-data-dir.js";
5
- const DEFAULT_MAX = 100;
6
- function isRecord(value) {
7
- return !!value && typeof value === "object" && !Array.isArray(value);
8
- }
9
- function sanitizePending(value) {
10
- if (!isRecord(value))
11
- return undefined;
12
- if (typeof value.promptHash !== "string")
13
- return undefined;
14
- if (typeof value.createdAt !== "number")
15
- return undefined;
16
- return {
17
- promptHash: value.promptHash,
18
- createdAt: value.createdAt,
19
- };
20
- }
21
- function sanitizeReady(value) {
22
- if (!isRecord(value))
23
- return undefined;
24
- if (typeof value.promptHash !== "string")
25
- return undefined;
26
- if (typeof value.context !== "string")
27
- return undefined;
28
- if (typeof value.createdAt !== "number")
29
- return undefined;
30
- if (value.deliveredAt !== undefined && typeof value.deliveredAt !== "number") {
31
- return undefined;
32
- }
33
- return {
34
- promptHash: value.promptHash,
35
- context: value.context,
36
- createdAt: value.createdAt,
37
- deliveredAt: typeof value.deliveredAt === "number" ? value.deliveredAt : undefined,
38
- };
39
- }
40
- function sanitizeEntry(value) {
41
- if (!isRecord(value))
42
- return undefined;
43
- const pending = sanitizePending(value.pending);
44
- const ready = sanitizeReady(value.ready);
45
- if (!pending && !ready)
46
- return undefined;
47
- return { pending, ready };
48
- }
49
- export function hashPrompt(prompt) {
50
- return createHash("sha1").update(prompt).digest("hex");
51
- }
52
- export class RecallCache {
53
- filePath;
54
- maxSize;
55
- constructor(config) {
56
- const dataDir = config?.dataDir ?? workspaceDataDir();
57
- this.maxSize = config?.maxSize ?? DEFAULT_MAX;
58
- this.filePath = join(dataDir, "claude-recall-cache.json");
59
- mkdirSync(dataDir, { recursive: true });
60
- }
61
- readStore() {
62
- try {
63
- const raw = readFileSync(this.filePath, "utf-8");
64
- const parsed = JSON.parse(raw);
65
- if (!isRecord(parsed))
66
- return {};
67
- const store = {};
68
- for (const [key, value] of Object.entries(parsed)) {
69
- const entry = sanitizeEntry(value);
70
- if (entry)
71
- store[key] = entry;
72
- }
73
- return store;
74
- }
75
- catch {
76
- return {};
77
- }
78
- }
79
- writeStore(store) {
80
- try {
81
- writeFileSync(this.filePath, JSON.stringify(store), "utf-8");
82
- }
83
- catch {
84
- // Best-effort — cache misses are acceptable.
85
- }
86
- }
87
- trimStore(store) {
88
- const keys = Object.keys(store);
89
- while (keys.length > this.maxSize) {
90
- delete store[keys.shift()];
91
- }
92
- }
93
- pruneEmptyEntry(store, sessionKey) {
94
- const entry = store[sessionKey];
95
- if (!entry)
96
- return;
97
- if (!entry.pending && !entry.ready) {
98
- delete store[sessionKey];
99
- }
100
- }
101
- get(sessionKey) {
102
- return this.readStore()[sessionKey];
103
- }
104
- list() {
105
- return this.readStore();
106
- }
107
- setPending(sessionKey, promptHash, now = Date.now()) {
108
- const store = this.readStore();
109
- const current = store[sessionKey] ?? {};
110
- current.pending = { promptHash, createdAt: now };
111
- store[sessionKey] = current;
112
- this.trimStore(store);
113
- this.writeStore(store);
114
- }
115
- hasPending(sessionKey, promptHash, maxAgeMs, now = Date.now()) {
116
- const store = this.readStore();
117
- const current = store[sessionKey];
118
- const pending = current?.pending;
119
- if (!pending)
120
- return false;
121
- if (now - pending.createdAt > maxAgeMs) {
122
- delete current.pending;
123
- this.pruneEmptyEntry(store, sessionKey);
124
- this.writeStore(store);
125
- return false;
126
- }
127
- return pending.promptHash === promptHash;
128
- }
129
- clearPending(sessionKey, promptHash) {
130
- const store = this.readStore();
131
- const current = store[sessionKey];
132
- if (!current?.pending)
133
- return false;
134
- if (promptHash && current.pending.promptHash !== promptHash) {
135
- return false;
136
- }
137
- delete current.pending;
138
- this.pruneEmptyEntry(store, sessionKey);
139
- this.writeStore(store);
140
- return true;
141
- }
142
- setReady(sessionKey, ready, now = Date.now()) {
143
- const store = this.readStore();
144
- const current = store[sessionKey] ?? {};
145
- current.ready = {
146
- promptHash: ready.promptHash,
147
- context: ready.context,
148
- createdAt: now,
149
- };
150
- if (current.pending?.promptHash === ready.promptHash) {
151
- delete current.pending;
152
- }
153
- store[sessionKey] = current;
154
- this.trimStore(store);
155
- this.writeStore(store);
156
- }
157
- getInjectable(sessionKey, maxAgeMs, now = Date.now()) {
158
- const store = this.readStore();
159
- const current = store[sessionKey];
160
- const ready = current?.ready;
161
- if (!ready)
162
- return undefined;
163
- if (ready.deliveredAt !== undefined)
164
- return undefined;
165
- if (now - ready.createdAt > maxAgeMs) {
166
- delete current.ready;
167
- this.pruneEmptyEntry(store, sessionKey);
168
- this.writeStore(store);
169
- return undefined;
170
- }
171
- return ready;
172
- }
173
- markReadyDelivered(sessionKey, now = Date.now()) {
174
- const store = this.readStore();
175
- const current = store[sessionKey];
176
- if (!current?.ready || current.ready.deliveredAt !== undefined) {
177
- return false;
178
- }
179
- current.ready.deliveredAt = now;
180
- this.writeStore(store);
181
- return true;
182
- }
183
- delete(sessionKey) {
184
- const store = this.readStore();
185
- if (!(sessionKey in store))
186
- return false;
187
- delete store[sessionKey];
188
- this.writeStore(store);
189
- return true;
190
- }
191
- clear() {
192
- this.writeStore({});
193
- }
194
- }
195
- //# sourceMappingURL=recall-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recall-cache.js","sourceRoot":"","sources":["../../src/plugin/recall-cache.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Minimal recall filter for Claude Code.
3
- *
4
- * The intended behavior is to query Nex for nearly every user message and
5
- * skip only clearly low-signal input such as very short replies, explicit
6
- * opt-outs, or raw shell commands. Natural-language coding prompts still go
7
- * through Ask so memory is available during regular coding turns.
8
- */
9
- export interface RecallDecision {
10
- shouldRecall: boolean;
11
- reason: string;
12
- }
13
- export declare function shouldRecall(prompt: string, isFirstPrompt: boolean): RecallDecision;
@@ -1,39 +0,0 @@
1
- /**
2
- * Minimal recall filter for Claude Code.
3
- *
4
- * The intended behavior is to query Nex for nearly every user message and
5
- * skip only clearly low-signal input such as very short replies, explicit
6
- * opt-outs, or raw shell commands. Natural-language coding prompts still go
7
- * through Ask so memory is available during regular coding turns.
8
- */
9
- const MIN_RECALL_LENGTH = 15;
10
- const NATURAL_LANGUAGE_HINTS = /\b(please|can|could|would|should|what|when|where|why|how|who|tell|explain|describe|summarize|check|review|look|find|show|help|about|for|to|with|without|into|from|before|after|need|want|current|my|our|this|that)\b/i;
11
- const BARE_SHELL_COMMAND = /^(?:[A-Za-z_][A-Za-z0-9_]*=\S+\s+)*(?:ls|pwd|cd|cat|grep|rg|find|mkdir|rm|cp|mv|touch|echo|git|npm|npx|yarn|pnpm|bun|node|python|python3|pytest|make|docker|kubectl|terraform)\b/i;
12
- const COMMAND_TOKEN = /^(?:[A-Za-z_][A-Za-z0-9_]*=\S+|--?[\w./:=@%+,~-]+|[\w./:=@%+,~-]+|["'][^"']*["'])$/;
13
- function looksLikeBareShellCommand(prompt) {
14
- if (!BARE_SHELL_COMMAND.test(prompt)) {
15
- return false;
16
- }
17
- if (NATURAL_LANGUAGE_HINTS.test(prompt)) {
18
- return false;
19
- }
20
- return prompt.split(/\s+/).every((token) => COMMAND_TOKEN.test(token));
21
- }
22
- export function shouldRecall(prompt, isFirstPrompt) {
23
- const trimmed = prompt.trim();
24
- // Explicit opt-out: prompt starts with !
25
- if (trimmed.startsWith("!")) {
26
- return { shouldRecall: false, reason: "opt-out" };
27
- }
28
- if (trimmed.length < MIN_RECALL_LENGTH) {
29
- return { shouldRecall: false, reason: "too-short" };
30
- }
31
- if (looksLikeBareShellCommand(trimmed)) {
32
- return { shouldRecall: false, reason: "bare-shell-command" };
33
- }
34
- if (isFirstPrompt) {
35
- return { shouldRecall: true, reason: "first-prompt" };
36
- }
37
- return { shouldRecall: true, reason: "default" };
38
- }
39
- //# sourceMappingURL=recall-filter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recall-filter.js","sourceRoot":"","sources":["../../src/plugin/recall-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,sBAAsB,GAC1B,uNAAuN,CAAC;AAC1N,MAAM,kBAAkB,GACtB,mLAAmL,CAAC;AACtL,MAAM,aAAa,GAAG,oFAAoF,CAAC;AAO3G,SAAS,yBAAyB,CAAC,MAAc;IAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,aAAsB;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAE9B,yCAAyC;IACzC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACvC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACnD,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * File-based session store mapping Claude Code session IDs to Nex session IDs.
3
- *
4
- * Since Claude Code hooks are short-lived processes (start, run, exit),
5
- * in-memory state is lost between invocations. This implementation persists
6
- * session mappings to a JSON file so multi-turn continuity works.
7
- */
8
- export interface SessionStoreConfig {
9
- maxSize: number;
10
- dataDir: string;
11
- }
12
- export declare class SessionStore {
13
- private filePath;
14
- private maxSize;
15
- constructor(config?: Partial<SessionStoreConfig>);
16
- private readStore;
17
- private writeStore;
18
- get(sessionKey: string): string | undefined;
19
- set(sessionKey: string, nexSessionId: string): void;
20
- delete(sessionKey: string): boolean;
21
- get size(): number;
22
- clear(): void;
23
- }
@@ -1,73 +0,0 @@
1
- /**
2
- * File-based session store mapping Claude Code session IDs to Nex session IDs.
3
- *
4
- * Since Claude Code hooks are short-lived processes (start, run, exit),
5
- * in-memory state is lost between invocations. This implementation persists
6
- * session mappings to a JSON file so multi-turn continuity works.
7
- */
8
- import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
9
- import { join } from "node:path";
10
- import { workspaceDataDir } from "./workspace-data-dir.js";
11
- const DEFAULT_MAX = 100;
12
- export class SessionStore {
13
- filePath;
14
- maxSize;
15
- constructor(config) {
16
- const dataDir = config?.dataDir ?? workspaceDataDir();
17
- this.maxSize = config?.maxSize ?? DEFAULT_MAX;
18
- this.filePath = join(dataDir, "claude-sessions.json");
19
- mkdirSync(dataDir, { recursive: true });
20
- }
21
- readStore() {
22
- try {
23
- const raw = readFileSync(this.filePath, "utf-8");
24
- const data = JSON.parse(raw);
25
- if (data && typeof data === "object" && !Array.isArray(data)) {
26
- return data;
27
- }
28
- return {};
29
- }
30
- catch {
31
- return {};
32
- }
33
- }
34
- writeStore(store) {
35
- try {
36
- writeFileSync(this.filePath, JSON.stringify(store), "utf-8");
37
- }
38
- catch {
39
- // Best-effort — if we can't write, session continuity degrades gracefully
40
- }
41
- }
42
- get(sessionKey) {
43
- const store = this.readStore();
44
- return store[sessionKey];
45
- }
46
- set(sessionKey, nexSessionId) {
47
- const store = this.readStore();
48
- store[sessionKey] = nexSessionId;
49
- // Evict oldest entries if over max size
50
- const keys = Object.keys(store);
51
- while (keys.length > this.maxSize) {
52
- const oldest = keys.shift();
53
- delete store[oldest];
54
- }
55
- this.writeStore(store);
56
- }
57
- delete(sessionKey) {
58
- const store = this.readStore();
59
- if (sessionKey in store) {
60
- delete store[sessionKey];
61
- this.writeStore(store);
62
- return true;
63
- }
64
- return false;
65
- }
66
- get size() {
67
- return Object.keys(this.readStore()).length;
68
- }
69
- clear() {
70
- this.writeStore({});
71
- }
72
- }
73
- //# sourceMappingURL=session-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/plugin/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,WAAW,GAAG,GAAG,CAAC;AAOxB,MAAM,OAAO,YAAY;IACf,QAAQ,CAAS;IACjB,OAAO,CAAS;IAExB,YAAY,MAAoC;QAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,WAAW,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QACtD,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEO,SAAS;QACf,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7D,OAAO,IAA8B,CAAC;YACxC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,KAA6B;QAC9C,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;QAC5E,CAAC;IACH,CAAC;IAED,GAAG,CAAC,UAAkB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,UAAkB,EAAE,YAAoB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;QAEjC,wCAAwC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC;YAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,UAAkB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI;QACN,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export declare function workspaceDataDir(): string;
2
- export declare function resetWorkspaceCache(): void;
@@ -1,31 +0,0 @@
1
- /**
2
- * Resolve the active workspace's data directory.
3
- * Reads from ~/.nex/config.json (workspace registry format).
4
- * Falls back to ~/.nex/ if no workspace is configured (pre-migration).
5
- *
6
- * Intentionally duplicated from cli/src/lib/workspace-registry.ts to avoid
7
- * cross-package imports. This is a lightweight reader — no migration logic.
8
- */
9
- import { readFileSync } from "node:fs";
10
- import { join } from "node:path";
11
- import { homedir } from "node:os";
12
- const BASE_DIR = process.env.NEX_BASE_DIR || join(homedir(), ".nex");
13
- let _cached;
14
- export function workspaceDataDir() {
15
- if (_cached)
16
- return _cached;
17
- try {
18
- const raw = readFileSync(join(BASE_DIR, "config.json"), "utf-8");
19
- const config = JSON.parse(raw);
20
- if (config.active_workspace) {
21
- _cached = join(BASE_DIR, "workspaces", config.active_workspace);
22
- return _cached;
23
- }
24
- }
25
- catch { /* No config or parse error — fall back */ }
26
- return BASE_DIR;
27
- }
28
- export function resetWorkspaceCache() {
29
- _cached = undefined;
30
- }
31
- //# sourceMappingURL=workspace-data-dir.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-data-dir.js","sourceRoot":"","sources":["../../src/plugin/workspace-data-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AAErE,IAAI,OAA2B,CAAC;AAEhC,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAChE,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,0CAA0C,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,GAAG,SAAS,CAAC;AACtB,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Persistent agent color assignment.
3
- *
4
- * Each agent slug gets a stable color from a palette of six terminal-safe
5
- * colours. Assignments survive re-renders (module-level map) and cycle
6
- * through the palette so every new agent gets the next colour in order.
7
- */
8
- declare const AGENT_COLORS: readonly ["cyan", "green", "yellow", "magenta", "blue", "red"];
9
- export type AgentColor = typeof AGENT_COLORS[number];
10
- /**
11
- * Return the colour assigned to `agentSlug`, assigning a new one on first
12
- * encounter. The same slug always returns the same colour.
13
- */
14
- export declare function getAgentColor(agentSlug: string): AgentColor;
15
- /** Read-only snapshot of the current colour map. */
16
- export declare function getAllAgentColors(): ReadonlyMap<string, AgentColor>;
17
- /** Reset all assignments (useful in tests). */
18
- export declare function resetAgentColors(): void;
19
- export {};
@@ -1,34 +0,0 @@
1
- /**
2
- * Persistent agent color assignment.
3
- *
4
- * Each agent slug gets a stable color from a palette of six terminal-safe
5
- * colours. Assignments survive re-renders (module-level map) and cycle
6
- * through the palette so every new agent gets the next colour in order.
7
- */
8
- const AGENT_COLORS = ['cyan', 'green', 'yellow', 'magenta', 'blue', 'red'];
9
- // Module-level state so colours persist across renders.
10
- const colorMap = new Map();
11
- let nextColorIdx = 0;
12
- /**
13
- * Return the colour assigned to `agentSlug`, assigning a new one on first
14
- * encounter. The same slug always returns the same colour.
15
- */
16
- export function getAgentColor(agentSlug) {
17
- const existing = colorMap.get(agentSlug);
18
- if (existing !== undefined)
19
- return existing;
20
- const color = AGENT_COLORS[nextColorIdx % AGENT_COLORS.length];
21
- colorMap.set(agentSlug, color);
22
- nextColorIdx++;
23
- return color;
24
- }
25
- /** Read-only snapshot of the current colour map. */
26
- export function getAllAgentColors() {
27
- return new Map(colorMap);
28
- }
29
- /** Reset all assignments (useful in tests). */
30
- export function resetAgentColors() {
31
- colorMap.clear();
32
- nextColorIdx = 0;
33
- }
34
- //# sourceMappingURL=agent-colors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-colors.js","sourceRoot":"","sources":["../../src/tui/agent-colors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAGpF,wDAAwD;AACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;AAC/C,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAE5C,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/D,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/B,YAAY,EAAE,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,gBAAgB;IAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,YAAY,GAAG,CAAC,CAAC;AACnB,CAAC"}
package/dist/tui/app.d.ts DELETED
@@ -1,14 +0,0 @@
1
- /**
2
- * Root Ink application.
3
- * Wraps everything in theme context + TuiContext, handles global key events,
4
- * renders the router and a single status bar.
5
- *
6
- * Ctrl+C behavior:
7
- * - During loading: cancels current operation, shows "^C (interrupted)"
8
- * - When idle: first press shows "Press Ctrl+C again to exit",
9
- * second press within 1s exits the process
10
- */
11
- import "./register-views.js";
12
- export { useTuiState } from "./tui-context.js";
13
- export type { TuiContextValue } from "./tui-context.js";
14
- export declare function App(): import("react/jsx-runtime").JSX.Element;
package/dist/tui/app.js DELETED
@@ -1,181 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Root Ink application.
4
- * Wraps everything in theme context + TuiContext, handles global key events,
5
- * renders the router and a single status bar.
6
- *
7
- * Ctrl+C behavior:
8
- * - During loading: cancels current operation, shows "^C (interrupted)"
9
- * - When idle: first press shows "Press Ctrl+C again to exit",
10
- * second press within 1s exits the process
11
- */
12
- import { useState, useEffect, useCallback, useMemo, useRef } from "react";
13
- import { Box, Text, useInput, useApp } from "ink";
14
- import { createStore } from "./store.js";
15
- import { handleKey } from "./keybindings.js";
16
- import { ThemeProvider } from "./theme.js";
17
- import { Router } from "./router.js";
18
- import { StatusBar as ComponentStatusBar } from "./components/status-bar.js";
19
- import { TuiContext } from "./tui-context.js";
20
- // Register all views with the router (side-effect import)
21
- import "./register-views.js";
22
- // Re-export context hook for convenience
23
- export { useTuiState } from "./tui-context.js";
24
- // ── Constants ─────────────────────────────────────────────────────────
25
- const CTRL_C_WINDOW_MS = 1000;
26
- const INTERRUPTED_DISPLAY_MS = 2000;
27
- const EXIT_HINT_DISPLAY_MS = 2000;
28
- // ── Status bar adapter ─────────────────────────────────────────────
29
- function AppStatusBar({ state }) {
30
- const breadcrumbs = state.viewStack.map((v) => v.name);
31
- const currentViewName = state.viewStack[state.viewStack.length - 1]?.name ?? "home";
32
- const inputViews = new Set(["home", "chat", "ask-chat"]);
33
- const isInputView = inputViews.has(currentViewName);
34
- const hint = state.loading
35
- ? state.loadingHint || "loading..."
36
- : isInputView
37
- ? currentViewName === "home"
38
- ? "Tab=complete /help=commands Ctrl+C=exit"
39
- : "Esc=back | type to send"
40
- : "Esc=back | j/k=nav Enter=select";
41
- return (_jsx(ComponentStatusBar, { mode: state.mode, breadcrumbs: breadcrumbs.length > 0 ? breadcrumbs : ["home"], hint: hint, conversationMode: isInputView, session: state.session ?? undefined }));
42
- }
43
- // ── App component ──────────────────────────────────────────────────
44
- export function App() {
45
- const store = useMemo(() => createStore(), []);
46
- const [state, setState] = useState(store.getState);
47
- const [interrupted, setInterrupted] = useState(false);
48
- const [exitHint, setExitHint] = useState(false);
49
- const { exit } = useApp();
50
- // Track last Ctrl+C press time for double-press detection
51
- const lastCtrlCTime = useRef(0);
52
- // Subscribe to store changes
53
- useEffect(() => {
54
- const unsub = store.subscribe(() => {
55
- setState(store.getState());
56
- });
57
- return unsub;
58
- }, [store]);
59
- // Override process.exit for clean shutdown within Ink
60
- const originalExit = useMemo(() => process.exit, []);
61
- useEffect(() => {
62
- const handler = ((_code) => {
63
- exit();
64
- // Ensure the Node process actually terminates after Ink unmounts
65
- setTimeout(() => originalExit(_code ?? 0), 150);
66
- });
67
- process.exit = handler;
68
- return () => {
69
- process.exit = originalExit;
70
- };
71
- }, [exit, originalExit]);
72
- // Cancel function: aborts current loading operation
73
- const cancel = useCallback(() => {
74
- const currentState = store.getState();
75
- if (currentState.loading) {
76
- store.dispatch({ type: "SET_LOADING", loading: false, hint: "" });
77
- setInterrupted(true);
78
- setTimeout(() => setInterrupted(false), INTERRUPTED_DISPLAY_MS);
79
- }
80
- }, [store]);
81
- // Clear interrupted when new loading starts
82
- useEffect(() => {
83
- if (state.loading) {
84
- setInterrupted(false);
85
- setExitHint(false);
86
- }
87
- }, [state.loading]);
88
- // Ctrl+C handler
89
- const handleCtrlC = useCallback(() => {
90
- const now = Date.now();
91
- const currentState = store.getState();
92
- // During loading: cancel the operation
93
- if (currentState.loading) {
94
- cancel();
95
- lastCtrlCTime.current = now;
96
- return;
97
- }
98
- // When idle: double-press to exit
99
- if (now - lastCtrlCTime.current <= CTRL_C_WINDOW_MS) {
100
- // Second press within window → exit
101
- process.exit(0);
102
- return;
103
- }
104
- // First idle press → show exit hint
105
- lastCtrlCTime.current = now;
106
- setExitHint(true);
107
- setTimeout(() => setExitHint(false), EXIT_HINT_DISPLAY_MS);
108
- }, [store, cancel]);
109
- // Global key handler
110
- const onInput = useCallback((input, key) => {
111
- const currentView = state.viewStack[state.viewStack.length - 1]?.name ?? "home";
112
- // Views that have their own text input — pass keys through
113
- // so users can type without vim mode. Only intercept Escape (back)
114
- // and Ctrl+C (cancel/exit).
115
- const inputViews = new Set(["home", "chat", "ask-chat"]);
116
- const isInputView = inputViews.has(currentView);
117
- if (isInputView) {
118
- if (key.ctrl && key.name === "c") {
119
- handleCtrlC();
120
- return;
121
- }
122
- if (key.escape && currentView !== "home") {
123
- store.dispatch({ type: "POP_VIEW" });
124
- return;
125
- }
126
- // Home stream: only intercept Tab (autocomplete) and arrows (autocomplete nav)
127
- if (currentView === "home") {
128
- const g = globalThis;
129
- if (key.name === "tab" && !key.shift) {
130
- const tabFn = g.__nexHomeTabComplete;
131
- if (tabFn)
132
- tabFn(1);
133
- return;
134
- }
135
- if (key.name === "up" || key.name === "down") {
136
- const acNav = g.__nexHomeAutocompleteNav;
137
- if (acNav && acNav(key.name === "up" ? -1 : 1))
138
- return;
139
- }
140
- }
141
- // Everything else → TextInput
142
- return;
143
- }
144
- // In non-input views, use the full keybinding handler
145
- let raw = input;
146
- if (key.escape)
147
- raw = "\x1b";
148
- if (key.ctrl && key.name) {
149
- if (key.name === "c") {
150
- handleCtrlC();
151
- return;
152
- }
153
- const code = key.name.charCodeAt(0) - 96;
154
- if (code > 0 && code <= 26)
155
- raw = String.fromCharCode(code);
156
- }
157
- if (key.name === "up" ||
158
- key.name === "down" ||
159
- key.name === "left" ||
160
- key.name === "right") {
161
- const arrowMap = {
162
- up: "\x1b[A",
163
- down: "\x1b[B",
164
- right: "\x1b[C",
165
- left: "\x1b[D",
166
- };
167
- raw = arrowMap[key.name] ?? raw;
168
- }
169
- if (key.name === "return")
170
- raw = "\r";
171
- if (key.name === "tab")
172
- raw = "\t";
173
- if (key.name === "backspace")
174
- raw = "\x7f";
175
- handleKey(raw, store.getState(), store.dispatch);
176
- }, [store, state.viewStack, handleCtrlC]);
177
- useInput(onInput);
178
- const tuiContextValue = useMemo(() => ({ state, dispatch: store.dispatch, store, cancel }), [state, store, cancel]);
179
- return (_jsx(ThemeProvider, { children: _jsx(TuiContext.Provider, { value: tuiContextValue, children: _jsxs(Box, { flexDirection: "column", minHeight: 10, children: [_jsx(Box, { flexDirection: "column", flexGrow: 1, children: _jsx(Router, { viewStack: state.viewStack, dispatch: store.dispatch }) }), interrupted && (_jsxs(Box, { paddingX: 2, children: [_jsx(Text, { dimColor: true, children: "^C" }), _jsx(Text, { color: "red", children: " (interrupted)" })] })), exitHint && !interrupted && (_jsx(Box, { paddingX: 2, children: _jsx(Text, { dimColor: true, children: "Press Ctrl+C again to exit" }) })), _jsx(AppStatusBar, { state: state })] }) }) }));
180
- }
181
- //# sourceMappingURL=app.js.map