@nex-ai/nex 0.1.22 → 0.1.23

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 (292) hide show
  1. package/README.md +9 -2
  2. package/dist/agent/adoption.d.ts +23 -0
  3. package/dist/agent/adoption.js +87 -0
  4. package/dist/agent/adoption.js.map +1 -0
  5. package/dist/agent/gossip.d.ts +17 -0
  6. package/dist/agent/gossip.js +48 -0
  7. package/dist/agent/gossip.js.map +1 -0
  8. package/dist/agent/loop.d.ts +59 -0
  9. package/dist/agent/loop.js +389 -0
  10. package/dist/agent/loop.js.map +1 -0
  11. package/dist/agent/queues.d.ts +16 -0
  12. package/dist/agent/queues.js +44 -0
  13. package/dist/agent/queues.js.map +1 -0
  14. package/dist/agent/session-store.d.ts +21 -0
  15. package/dist/agent/session-store.js +96 -0
  16. package/dist/agent/session-store.js.map +1 -0
  17. package/dist/agent/templates.d.ts +5 -0
  18. package/dist/agent/templates.js +48 -0
  19. package/dist/agent/templates.js.map +1 -0
  20. package/dist/agent/tools.d.ts +25 -0
  21. package/dist/agent/tools.js +238 -0
  22. package/dist/agent/tools.js.map +1 -0
  23. package/dist/agent/types.d.ts +59 -0
  24. package/dist/agent/types.js +5 -0
  25. package/dist/agent/types.js.map +1 -0
  26. package/dist/calendar/scheduler.d.ts +32 -0
  27. package/dist/calendar/scheduler.js +178 -0
  28. package/dist/calendar/scheduler.js.map +1 -0
  29. package/dist/calendar/store.d.ts +15 -0
  30. package/dist/calendar/store.js +50 -0
  31. package/dist/calendar/store.js.map +1 -0
  32. package/dist/calendar/types.d.ts +17 -0
  33. package/dist/calendar/types.js +5 -0
  34. package/dist/calendar/types.js.map +1 -0
  35. package/dist/chat/channel.d.ts +20 -0
  36. package/dist/chat/channel.js +84 -0
  37. package/dist/chat/channel.js.map +1 -0
  38. package/dist/chat/message-store.d.ts +18 -0
  39. package/dist/chat/message-store.js +82 -0
  40. package/dist/chat/message-store.js.map +1 -0
  41. package/dist/chat/router.d.ts +17 -0
  42. package/dist/chat/router.js +65 -0
  43. package/dist/chat/router.js.map +1 -0
  44. package/dist/chat/suggested-responses.d.ts +6 -0
  45. package/dist/chat/suggested-responses.js +99 -0
  46. package/dist/chat/suggested-responses.js.map +1 -0
  47. package/dist/chat/types.d.ts +28 -0
  48. package/dist/chat/types.js +5 -0
  49. package/dist/chat/types.js.map +1 -0
  50. package/dist/cli.js +3 -1
  51. package/dist/cli.js.map +1 -1
  52. package/dist/commands/dispatch.d.ts +39 -0
  53. package/dist/commands/dispatch.js +1293 -0
  54. package/dist/commands/dispatch.js.map +1 -0
  55. package/dist/commands/init.d.ts +49 -0
  56. package/dist/commands/init.js +315 -0
  57. package/dist/commands/init.js.map +1 -0
  58. package/dist/commands/parse-input.d.ts +5 -0
  59. package/dist/commands/parse-input.js +37 -0
  60. package/dist/commands/parse-input.js.map +1 -0
  61. package/dist/index.d.ts +6 -23
  62. package/dist/index.js +118 -50
  63. package/dist/index.js.map +1 -1
  64. package/dist/lib/client.js +1 -1
  65. package/dist/lib/client.js.map +1 -1
  66. package/dist/lib/errors.js +1 -1
  67. package/dist/lib/errors.js.map +1 -1
  68. package/dist/lib/integrations.d.ts +23 -0
  69. package/dist/lib/integrations.js +25 -0
  70. package/dist/lib/integrations.js.map +1 -0
  71. package/dist/lib/nex-mcp-config.d.ts +14 -0
  72. package/dist/lib/nex-mcp-config.js +26 -0
  73. package/dist/lib/nex-mcp-config.js.map +1 -0
  74. package/dist/orchestration/budget.d.ts +32 -0
  75. package/dist/orchestration/budget.js +72 -0
  76. package/dist/orchestration/budget.js.map +1 -0
  77. package/dist/orchestration/executor.d.ts +59 -0
  78. package/dist/orchestration/executor.js +197 -0
  79. package/dist/orchestration/executor.js.map +1 -0
  80. package/dist/orchestration/router.d.ts +30 -0
  81. package/dist/orchestration/router.js +98 -0
  82. package/dist/orchestration/router.js.map +1 -0
  83. package/dist/orchestration/templates.d.ts +11 -0
  84. package/dist/orchestration/templates.js +99 -0
  85. package/dist/orchestration/templates.js.map +1 -0
  86. package/dist/orchestration/types.d.ts +58 -0
  87. package/dist/orchestration/types.js +7 -0
  88. package/dist/orchestration/types.js.map +1 -0
  89. package/dist/plugin/shared.js +1 -1
  90. package/dist/plugin/shared.js.map +1 -1
  91. package/dist/tui/agent-colors.d.ts +19 -0
  92. package/dist/tui/agent-colors.js +34 -0
  93. package/dist/tui/agent-colors.js.map +1 -0
  94. package/dist/tui/app.d.ts +14 -0
  95. package/dist/tui/app.js +267 -0
  96. package/dist/tui/app.js.map +1 -0
  97. package/dist/tui/channel-colors.d.ts +16 -0
  98. package/dist/tui/channel-colors.js +43 -0
  99. package/dist/tui/channel-colors.js.map +1 -0
  100. package/dist/tui/components/agent-card.d.ts +11 -0
  101. package/dist/tui/components/agent-card.js +40 -0
  102. package/dist/tui/components/agent-card.js.map +1 -0
  103. package/dist/tui/components/banner.d.ts +44 -0
  104. package/dist/tui/components/banner.js +130 -0
  105. package/dist/tui/components/banner.js.map +1 -0
  106. package/dist/tui/components/channel-colors.d.ts +21 -0
  107. package/dist/tui/components/channel-colors.js +53 -0
  108. package/dist/tui/components/channel-colors.js.map +1 -0
  109. package/dist/tui/components/channel-message.d.ts +53 -0
  110. package/dist/tui/components/channel-message.js +66 -0
  111. package/dist/tui/components/channel-message.js.map +1 -0
  112. package/dist/tui/components/chat-input.d.ts +11 -0
  113. package/dist/tui/components/chat-input.js +19 -0
  114. package/dist/tui/components/chat-input.js.map +1 -0
  115. package/dist/tui/components/data-table.d.ts +11 -0
  116. package/dist/tui/components/data-table.js +47 -0
  117. package/dist/tui/components/data-table.js.map +1 -0
  118. package/dist/tui/components/error-box.d.ts +11 -0
  119. package/dist/tui/components/error-box.js +59 -0
  120. package/dist/tui/components/error-box.js.map +1 -0
  121. package/dist/tui/components/help-screen.d.ts +3 -0
  122. package/dist/tui/components/help-screen.js +63 -0
  123. package/dist/tui/components/help-screen.js.map +1 -0
  124. package/dist/tui/components/index.d.ts +17 -0
  125. package/dist/tui/components/index.js +10 -0
  126. package/dist/tui/components/index.js.map +1 -0
  127. package/dist/tui/components/inline-confirm.d.ts +14 -0
  128. package/dist/tui/components/inline-confirm.js +13 -0
  129. package/dist/tui/components/inline-confirm.js.map +1 -0
  130. package/dist/tui/components/inline-select.d.ts +21 -0
  131. package/dist/tui/components/inline-select.js +20 -0
  132. package/dist/tui/components/inline-select.js.map +1 -0
  133. package/dist/tui/components/markdown.d.ts +6 -0
  134. package/dist/tui/components/markdown.js +179 -0
  135. package/dist/tui/components/markdown.js.map +1 -0
  136. package/dist/tui/components/mention-autocomplete.d.ts +77 -0
  137. package/dist/tui/components/mention-autocomplete.js +235 -0
  138. package/dist/tui/components/mention-autocomplete.js.map +1 -0
  139. package/dist/tui/components/message-list.d.ts +18 -0
  140. package/dist/tui/components/message-list.js +29 -0
  141. package/dist/tui/components/message-list.js.map +1 -0
  142. package/dist/tui/components/picker.d.ts +16 -0
  143. package/dist/tui/components/picker.js +32 -0
  144. package/dist/tui/components/picker.js.map +1 -0
  145. package/dist/tui/components/progress-steps.d.ts +13 -0
  146. package/dist/tui/components/progress-steps.js +21 -0
  147. package/dist/tui/components/progress-steps.js.map +1 -0
  148. package/dist/tui/components/slack/compose.d.ts +27 -0
  149. package/dist/tui/components/slack/compose.js +123 -0
  150. package/dist/tui/components/slack/compose.js.map +1 -0
  151. package/dist/tui/components/slack/layout.d.ts +36 -0
  152. package/dist/tui/components/slack/layout.js +96 -0
  153. package/dist/tui/components/slack/layout.js.map +1 -0
  154. package/dist/tui/components/slack/messages.d.ts +72 -0
  155. package/dist/tui/components/slack/messages.js +177 -0
  156. package/dist/tui/components/slack/messages.js.map +1 -0
  157. package/dist/tui/components/slack/quick-switcher.d.ts +33 -0
  158. package/dist/tui/components/slack/quick-switcher.js +98 -0
  159. package/dist/tui/components/slack/quick-switcher.js.map +1 -0
  160. package/dist/tui/components/slack/sidebar-types.d.ts +65 -0
  161. package/dist/tui/components/slack/sidebar-types.js +7 -0
  162. package/dist/tui/components/slack/sidebar-types.js.map +1 -0
  163. package/dist/tui/components/slack/sidebar.d.ts +46 -0
  164. package/dist/tui/components/slack/sidebar.js +52 -0
  165. package/dist/tui/components/slack/sidebar.js.map +1 -0
  166. package/dist/tui/components/slack/thread-panel.d.ts +45 -0
  167. package/dist/tui/components/slack/thread-panel.js +47 -0
  168. package/dist/tui/components/slack/thread-panel.js.map +1 -0
  169. package/dist/tui/components/slash-autocomplete.d.ts +81 -0
  170. package/dist/tui/components/slash-autocomplete.js +218 -0
  171. package/dist/tui/components/slash-autocomplete.js.map +1 -0
  172. package/dist/tui/components/spinner.d.ts +17 -0
  173. package/dist/tui/components/spinner.js +30 -0
  174. package/dist/tui/components/spinner.js.map +1 -0
  175. package/dist/tui/components/status-bar.d.ts +23 -0
  176. package/dist/tui/components/status-bar.js +55 -0
  177. package/dist/tui/components/status-bar.js.map +1 -0
  178. package/dist/tui/components/success-box.d.ts +7 -0
  179. package/dist/tui/components/success-box.js +10 -0
  180. package/dist/tui/components/success-box.js.map +1 -0
  181. package/dist/tui/components/tool-indicator.d.ts +12 -0
  182. package/dist/tui/components/tool-indicator.js +18 -0
  183. package/dist/tui/components/tool-indicator.js.map +1 -0
  184. package/dist/tui/components/viewport.d.ts +9 -0
  185. package/dist/tui/components/viewport.js +24 -0
  186. package/dist/tui/components/viewport.js.map +1 -0
  187. package/dist/tui/generative/bindings.d.ts +27 -0
  188. package/dist/tui/generative/bindings.js +152 -0
  189. package/dist/tui/generative/bindings.js.map +1 -0
  190. package/dist/tui/generative/registry.d.ts +19 -0
  191. package/dist/tui/generative/registry.js +31 -0
  192. package/dist/tui/generative/registry.js.map +1 -0
  193. package/dist/tui/generative/renderer.d.ts +24 -0
  194. package/dist/tui/generative/renderer.js +160 -0
  195. package/dist/tui/generative/renderer.js.map +1 -0
  196. package/dist/tui/generative/types.d.ts +68 -0
  197. package/dist/tui/generative/types.js +7 -0
  198. package/dist/tui/generative/types.js.map +1 -0
  199. package/dist/tui/hooks/use-cancellable.d.ts +28 -0
  200. package/dist/tui/hooks/use-cancellable.js +51 -0
  201. package/dist/tui/hooks/use-cancellable.js.map +1 -0
  202. package/dist/tui/hooks/use-streaming.d.ts +44 -0
  203. package/dist/tui/hooks/use-streaming.js +105 -0
  204. package/dist/tui/hooks/use-streaming.js.map +1 -0
  205. package/dist/tui/index.d.ts +4 -0
  206. package/dist/tui/index.js +7 -0
  207. package/dist/tui/index.js.map +1 -0
  208. package/dist/tui/keybindings.d.ts +25 -0
  209. package/dist/tui/keybindings.js +277 -0
  210. package/dist/tui/keybindings.js.map +1 -0
  211. package/dist/tui/register-views.d.ts +8 -0
  212. package/dist/tui/register-views.js +116 -0
  213. package/dist/tui/register-views.js.map +1 -0
  214. package/dist/tui/router.d.ts +29 -0
  215. package/dist/tui/router.js +87 -0
  216. package/dist/tui/router.js.map +1 -0
  217. package/dist/tui/services/agent-service.d.ts +58 -0
  218. package/dist/tui/services/agent-service.js +197 -0
  219. package/dist/tui/services/agent-service.js.map +1 -0
  220. package/dist/tui/services/calendar-service.d.ts +31 -0
  221. package/dist/tui/services/calendar-service.js +133 -0
  222. package/dist/tui/services/calendar-service.js.map +1 -0
  223. package/dist/tui/services/chat-service.d.ts +28 -0
  224. package/dist/tui/services/chat-service.js +91 -0
  225. package/dist/tui/services/chat-service.js.map +1 -0
  226. package/dist/tui/services/orchestration-service.d.ts +42 -0
  227. package/dist/tui/services/orchestration-service.js +153 -0
  228. package/dist/tui/services/orchestration-service.js.map +1 -0
  229. package/dist/tui/slash-commands.d.ts +106 -0
  230. package/dist/tui/slash-commands.js +1421 -0
  231. package/dist/tui/slash-commands.js.map +1 -0
  232. package/dist/tui/store.d.ts +96 -0
  233. package/dist/tui/store.js +120 -0
  234. package/dist/tui/store.js.map +1 -0
  235. package/dist/tui/theme.d.ts +40 -0
  236. package/dist/tui/theme.js +39 -0
  237. package/dist/tui/theme.js.map +1 -0
  238. package/dist/tui/tui-context.d.ts +22 -0
  239. package/dist/tui/tui-context.js +17 -0
  240. package/dist/tui/tui-context.js.map +1 -0
  241. package/dist/tui/views/agent-list.d.ts +8 -0
  242. package/dist/tui/views/agent-list.js +11 -0
  243. package/dist/tui/views/agent-list.js.map +1 -0
  244. package/dist/tui/views/ask-chat.d.ts +9 -0
  245. package/dist/tui/views/ask-chat.js +40 -0
  246. package/dist/tui/views/ask-chat.js.map +1 -0
  247. package/dist/tui/views/calendar.d.ts +15 -0
  248. package/dist/tui/views/calendar.js +29 -0
  249. package/dist/tui/views/calendar.js.map +1 -0
  250. package/dist/tui/views/chat.d.ts +18 -0
  251. package/dist/tui/views/chat.js +28 -0
  252. package/dist/tui/views/chat.js.map +1 -0
  253. package/dist/tui/views/generative.d.ts +14 -0
  254. package/dist/tui/views/generative.js +37 -0
  255. package/dist/tui/views/generative.js.map +1 -0
  256. package/dist/tui/views/help.d.ts +6 -0
  257. package/dist/tui/views/help.js +9 -0
  258. package/dist/tui/views/help.js.map +1 -0
  259. package/dist/tui/views/home-screen.d.ts +67 -0
  260. package/dist/tui/views/home-screen.js +192 -0
  261. package/dist/tui/views/home-screen.js.map +1 -0
  262. package/dist/tui/views/home.d.ts +33 -0
  263. package/dist/tui/views/home.js +60 -0
  264. package/dist/tui/views/home.js.map +1 -0
  265. package/dist/tui/views/index.d.ts +20 -0
  266. package/dist/tui/views/index.js +11 -0
  267. package/dist/tui/views/index.js.map +1 -0
  268. package/dist/tui/views/insights.d.ts +19 -0
  269. package/dist/tui/views/insights.js +46 -0
  270. package/dist/tui/views/insights.js.map +1 -0
  271. package/dist/tui/views/orchestration.d.ts +18 -0
  272. package/dist/tui/views/orchestration.js +73 -0
  273. package/dist/tui/views/orchestration.js.map +1 -0
  274. package/dist/tui/views/record-detail.d.ts +10 -0
  275. package/dist/tui/views/record-detail.js +22 -0
  276. package/dist/tui/views/record-detail.js.map +1 -0
  277. package/dist/tui/views/record-list.d.ts +15 -0
  278. package/dist/tui/views/record-list.js +22 -0
  279. package/dist/tui/views/record-list.js.map +1 -0
  280. package/dist/tui/views/slack-channel-header.d.ts +15 -0
  281. package/dist/tui/views/slack-channel-header.js +16 -0
  282. package/dist/tui/views/slack-channel-header.js.map +1 -0
  283. package/dist/tui/views/slack-home.d.ts +21 -0
  284. package/dist/tui/views/slack-home.js +572 -0
  285. package/dist/tui/views/slack-home.js.map +1 -0
  286. package/dist/tui/views/task-board.d.ts +21 -0
  287. package/dist/tui/views/task-board.js +33 -0
  288. package/dist/tui/views/task-board.js.map +1 -0
  289. package/dist/tui/views/timeline.d.ts +17 -0
  290. package/dist/tui/views/timeline.js +24 -0
  291. package/dist/tui/views/timeline.js.map +1 -0
  292. package/package.json +8 -3
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Concurrent agent executor for multi-agent orchestration.
3
+ * Manages task checkout/release, concurrency limits, and lifecycle events.
4
+ */
5
+ import { EventEmitter } from 'node:events';
6
+ export class OrchestratorExecutor {
7
+ config;
8
+ tasks = new Map();
9
+ locks = new Map(); // taskId -> agentSlug
10
+ activeCount = 0;
11
+ emitter = new EventEmitter();
12
+ timers = new Map();
13
+ stopped = false;
14
+ constructor(config) {
15
+ this.config = config;
16
+ }
17
+ /** Subscribe to executor events. */
18
+ on(handler) {
19
+ this.emitter.on('event', handler);
20
+ return () => {
21
+ this.emitter.off('event', handler);
22
+ };
23
+ }
24
+ emit(event) {
25
+ this.emitter.emit('event', event);
26
+ }
27
+ /**
28
+ * Atomic task checkout -- prevents duplicate assignment.
29
+ * Returns true if the task was successfully locked for this agent.
30
+ */
31
+ async checkout(taskId, agentSlug) {
32
+ // Already locked by someone else
33
+ if (this.locks.has(taskId))
34
+ return false;
35
+ const task = this.tasks.get(taskId);
36
+ if (!task)
37
+ return false;
38
+ if (task.status !== 'pending')
39
+ return false;
40
+ // Concurrency limit
41
+ if (this.activeCount >= this.config.maxConcurrentAgents)
42
+ return false;
43
+ // Lock it
44
+ this.locks.set(taskId, agentSlug);
45
+ task.status = 'locked';
46
+ task.assignedAgent = agentSlug;
47
+ this.tasks.set(taskId, task);
48
+ return true;
49
+ }
50
+ /**
51
+ * Release a task on completion or failure.
52
+ */
53
+ async release(taskId, result, error) {
54
+ const task = this.tasks.get(taskId);
55
+ if (!task)
56
+ return;
57
+ // Clear timeout timer
58
+ const timer = this.timers.get(taskId);
59
+ if (timer) {
60
+ clearTimeout(timer);
61
+ this.timers.delete(taskId);
62
+ }
63
+ this.locks.delete(taskId);
64
+ if (error) {
65
+ task.status = 'failed';
66
+ task.result = error;
67
+ task.completedAt = Date.now();
68
+ this.emit({ type: 'task:fail', taskId, error });
69
+ }
70
+ else {
71
+ task.status = 'completed';
72
+ task.result = result;
73
+ task.completedAt = Date.now();
74
+ this.emit({ type: 'task:complete', taskId, result });
75
+ }
76
+ this.tasks.set(taskId, task);
77
+ if (this.activeCount > 0)
78
+ this.activeCount--;
79
+ }
80
+ /**
81
+ * Submit a task for execution.
82
+ * Stores the task; actual execution happens during runBatch or by
83
+ * the external executor loop calling checkout/release.
84
+ */
85
+ async submit(task) {
86
+ this.tasks.set(task.id, { ...task, status: 'pending' });
87
+ }
88
+ /**
89
+ * Run multiple tasks concurrently, respecting maxConcurrentAgents.
90
+ * Assigns tasks to their assignedAgent (or marks them as in_progress).
91
+ * Returns final task states.
92
+ */
93
+ async runBatch(tasks) {
94
+ this.stopped = false;
95
+ // Register all tasks
96
+ for (const t of tasks) {
97
+ await this.submit(t);
98
+ }
99
+ const pending = tasks.map((t) => t.id);
100
+ const results = new Map();
101
+ // Process in waves respecting concurrency limit
102
+ const runNext = async () => {
103
+ while (pending.length > 0 && !this.stopped) {
104
+ // Fill up to max concurrent
105
+ const toStart = [];
106
+ while (pending.length > 0 &&
107
+ this.activeCount < this.config.maxConcurrentAgents) {
108
+ const taskId = pending.shift();
109
+ const task = this.tasks.get(taskId);
110
+ if (!task)
111
+ continue;
112
+ const agent = task.assignedAgent ?? 'default';
113
+ const locked = await this.checkout(taskId, agent);
114
+ if (locked) {
115
+ toStart.push(taskId);
116
+ this.activeCount++;
117
+ }
118
+ else {
119
+ // Put back for retry
120
+ pending.push(taskId);
121
+ break;
122
+ }
123
+ }
124
+ // Start timeout timers and mark as in_progress
125
+ const completions = toStart.map((taskId) => {
126
+ const task = this.tasks.get(taskId);
127
+ task.status = 'in_progress';
128
+ this.tasks.set(taskId, task);
129
+ this.emit({
130
+ type: 'task:start',
131
+ taskId,
132
+ agentSlug: task.assignedAgent ?? 'default',
133
+ });
134
+ // Set timeout
135
+ return new Promise((resolve) => {
136
+ const timer = setTimeout(async () => {
137
+ const current = this.tasks.get(taskId);
138
+ if (current && current.status === 'in_progress') {
139
+ this.emit({ type: 'task:timeout', taskId });
140
+ await this.release(taskId, undefined, 'Task timed out');
141
+ }
142
+ resolve();
143
+ }, this.config.taskTimeout);
144
+ this.timers.set(taskId, timer);
145
+ // Simulate immediate completion for batch mode
146
+ // (real execution is driven externally)
147
+ resolve();
148
+ });
149
+ });
150
+ await Promise.all(completions);
151
+ // Collect results for started tasks
152
+ for (const taskId of toStart) {
153
+ const task = this.tasks.get(taskId);
154
+ if (task)
155
+ results.set(taskId, task);
156
+ }
157
+ // If all tasks started, break
158
+ if (pending.length === 0)
159
+ break;
160
+ }
161
+ };
162
+ await runNext();
163
+ // Return all task states
164
+ for (const [id, task] of this.tasks) {
165
+ results.set(id, task);
166
+ }
167
+ return results;
168
+ }
169
+ /** Get currently active (in_progress) tasks. */
170
+ getActive() {
171
+ const active = [];
172
+ for (const task of this.tasks.values()) {
173
+ if (task.status === 'in_progress' || task.status === 'locked') {
174
+ active.push(task);
175
+ }
176
+ }
177
+ return active;
178
+ }
179
+ /** Stop all running tasks. */
180
+ async stopAll() {
181
+ this.stopped = true;
182
+ for (const [taskId, timer] of this.timers) {
183
+ clearTimeout(timer);
184
+ this.timers.delete(taskId);
185
+ }
186
+ for (const task of this.tasks.values()) {
187
+ if (task.status === 'in_progress' || task.status === 'locked') {
188
+ task.status = 'failed';
189
+ task.result = 'Stopped by orchestrator';
190
+ task.completedAt = Date.now();
191
+ this.locks.delete(task.id);
192
+ }
193
+ }
194
+ this.activeCount = 0;
195
+ }
196
+ }
197
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/orchestration/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Expertise-based task routing.
3
+ * Matches agent skills to task requirements using fuzzy string matching
4
+ * weighted by proficiency scores.
5
+ */
6
+ import type { SkillDeclaration, TaskDefinition } from './types.js';
7
+ export declare class TaskRouter {
8
+ private agents;
9
+ /** Register an agent with its skill declarations. */
10
+ registerAgent(agentSlug: string, skills: SkillDeclaration[]): void;
11
+ /** Unregister an agent. */
12
+ unregisterAgent(agentSlug: string): void;
13
+ /**
14
+ * Score a single agent against a task.
15
+ * For each required skill, find the best matching agent skill (fuzzy match).
16
+ * Score = average of best matches * agent proficiency average.
17
+ * Agents with 0 matching skills (all similarities below threshold) get 0.
18
+ */
19
+ scoreMatch(agentSlug: string, task: TaskDefinition): number;
20
+ /** Find the single best agent for a task, or null if none can match. */
21
+ findBestAgent(task: TaskDefinition): {
22
+ agentSlug: string;
23
+ score: number;
24
+ } | null;
25
+ /** Find all capable agents, ranked by match score descending. */
26
+ findCapableAgents(task: TaskDefinition): Array<{
27
+ agentSlug: string;
28
+ score: number;
29
+ }>;
30
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Expertise-based task routing.
3
+ * Matches agent skills to task requirements using fuzzy string matching
4
+ * weighted by proficiency scores.
5
+ */
6
+ /**
7
+ * Simple normalized string similarity (Dice coefficient on bigrams).
8
+ * Returns 0-1, where 1 is a perfect match.
9
+ */
10
+ function similarity(a, b) {
11
+ const sa = a.toLowerCase().trim();
12
+ const sb = b.toLowerCase().trim();
13
+ if (sa === sb)
14
+ return 1;
15
+ if (sa.length < 2 || sb.length < 2)
16
+ return 0;
17
+ const bigramsA = new Set();
18
+ for (let i = 0; i < sa.length - 1; i++)
19
+ bigramsA.add(sa.slice(i, i + 2));
20
+ const bigramsB = new Set();
21
+ for (let i = 0; i < sb.length - 1; i++)
22
+ bigramsB.add(sb.slice(i, i + 2));
23
+ let intersection = 0;
24
+ for (const bg of bigramsA) {
25
+ if (bigramsB.has(bg))
26
+ intersection++;
27
+ }
28
+ return (2 * intersection) / (bigramsA.size + bigramsB.size);
29
+ }
30
+ export class TaskRouter {
31
+ agents = new Map();
32
+ /** Register an agent with its skill declarations. */
33
+ registerAgent(agentSlug, skills) {
34
+ this.agents.set(agentSlug, { slug: agentSlug, skills });
35
+ }
36
+ /** Unregister an agent. */
37
+ unregisterAgent(agentSlug) {
38
+ this.agents.delete(agentSlug);
39
+ }
40
+ /**
41
+ * Score a single agent against a task.
42
+ * For each required skill, find the best matching agent skill (fuzzy match).
43
+ * Score = average of best matches * agent proficiency average.
44
+ * Agents with 0 matching skills (all similarities below threshold) get 0.
45
+ */
46
+ scoreMatch(agentSlug, task) {
47
+ const reg = this.agents.get(agentSlug);
48
+ if (!reg)
49
+ return 0;
50
+ const required = task.requiredSkills;
51
+ // If task requires no skills, any agent can handle it
52
+ if (required.length === 0)
53
+ return 1;
54
+ const agentSkills = reg.skills;
55
+ if (agentSkills.length === 0)
56
+ return 0;
57
+ const MATCH_THRESHOLD = 0.3;
58
+ let matchSum = 0;
59
+ let matchCount = 0;
60
+ for (const reqSkill of required) {
61
+ let bestSim = 0;
62
+ let bestProf = 0;
63
+ for (const agentSkill of agentSkills) {
64
+ const sim = similarity(reqSkill, agentSkill.name);
65
+ if (sim > bestSim) {
66
+ bestSim = sim;
67
+ bestProf = agentSkill.proficiency;
68
+ }
69
+ }
70
+ if (bestSim >= MATCH_THRESHOLD) {
71
+ matchSum += bestSim * bestProf;
72
+ matchCount++;
73
+ }
74
+ }
75
+ // If no skills matched above threshold, return 0
76
+ if (matchCount === 0)
77
+ return 0;
78
+ return matchSum / required.length;
79
+ }
80
+ /** Find the single best agent for a task, or null if none can match. */
81
+ findBestAgent(task) {
82
+ const ranked = this.findCapableAgents(task);
83
+ return ranked.length > 0 ? ranked[0] : null;
84
+ }
85
+ /** Find all capable agents, ranked by match score descending. */
86
+ findCapableAgents(task) {
87
+ const results = [];
88
+ for (const [slug] of this.agents) {
89
+ const score = this.scoreMatch(slug, task);
90
+ if (score > 0) {
91
+ results.push({ agentSlug: slug, score });
92
+ }
93
+ }
94
+ results.sort((a, b) => b.score - a.score);
95
+ return results;
96
+ }
97
+ }
98
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/orchestration/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Pre-built workflow templates for common multi-agent workflows.
3
+ */
4
+ import type { GoalDefinition, TaskDefinition } from './types.js';
5
+ export interface WorkflowTemplate {
6
+ name: string;
7
+ description: string;
8
+ goals: Omit<GoalDefinition, 'id' | 'createdAt' | 'tasks'>[];
9
+ tasks: Omit<TaskDefinition, 'id' | 'createdAt' | 'status' | 'completedAt' | 'result'>[];
10
+ }
11
+ export declare const workflows: Record<string, WorkflowTemplate>;
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Pre-built workflow templates for common multi-agent workflows.
3
+ */
4
+ export const workflows = {
5
+ 'seo-audit': {
6
+ name: 'SEO Audit',
7
+ description: 'Comprehensive SEO analysis of content and keywords',
8
+ goals: [
9
+ {
10
+ title: 'SEO Audit',
11
+ description: 'Analyze and improve search visibility',
12
+ status: 'active',
13
+ },
14
+ ],
15
+ tasks: [
16
+ {
17
+ title: 'Keyword analysis',
18
+ description: 'Research current keyword rankings',
19
+ requiredSkills: ['seo', 'keyword-research'],
20
+ priority: 'high',
21
+ },
22
+ {
23
+ title: 'Content gap analysis',
24
+ description: 'Identify missing content opportunities',
25
+ requiredSkills: ['seo', 'content-analysis'],
26
+ priority: 'medium',
27
+ },
28
+ {
29
+ title: 'Competitor analysis',
30
+ description: 'Analyze competitor SEO strategies',
31
+ requiredSkills: ['seo', 'competitive-analysis'],
32
+ priority: 'medium',
33
+ },
34
+ ],
35
+ },
36
+ 'lead-gen-pipeline': {
37
+ name: 'Lead Generation Pipeline',
38
+ description: 'Automated lead discovery and qualification',
39
+ goals: [
40
+ {
41
+ title: 'Lead Generation',
42
+ description: 'Find and qualify new prospects',
43
+ status: 'active',
44
+ },
45
+ ],
46
+ tasks: [
47
+ {
48
+ title: 'Prospect discovery',
49
+ description: 'Search for potential leads matching ICP',
50
+ requiredSkills: ['prospecting', 'research'],
51
+ priority: 'high',
52
+ },
53
+ {
54
+ title: 'Lead enrichment',
55
+ description: 'Enrich discovered leads with additional data',
56
+ requiredSkills: ['data-enrichment', 'research'],
57
+ priority: 'medium',
58
+ },
59
+ {
60
+ title: 'Lead scoring',
61
+ description: 'Score and qualify enriched leads',
62
+ requiredSkills: ['prospecting', 'data-enrichment'],
63
+ priority: 'medium',
64
+ },
65
+ ],
66
+ },
67
+ 'enrichment-batch': {
68
+ name: 'Data Enrichment Batch',
69
+ description: 'Bulk enrichment of existing records',
70
+ goals: [
71
+ {
72
+ title: 'Data Enrichment',
73
+ description: 'Fill gaps in existing records',
74
+ status: 'active',
75
+ },
76
+ ],
77
+ tasks: [
78
+ {
79
+ title: 'Identify gaps',
80
+ description: 'Find records with missing key fields',
81
+ requiredSkills: ['data-enrichment'],
82
+ priority: 'high',
83
+ },
84
+ {
85
+ title: 'Research and fill',
86
+ description: 'Research and fill missing data',
87
+ requiredSkills: ['data-enrichment', 'research'],
88
+ priority: 'high',
89
+ },
90
+ {
91
+ title: 'Validate updates',
92
+ description: 'Verify enriched data quality',
93
+ requiredSkills: ['data-enrichment', 'validation'],
94
+ priority: 'medium',
95
+ },
96
+ ],
97
+ },
98
+ };
99
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/orchestration/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,MAAM,CAAC,MAAM,SAAS,GAAqC;IACzD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oDAAoD;QACjE,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,uCAAuC;gBACpD,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,mCAAmC;gBAChD,cAAc,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC;gBAC3C,QAAQ,EAAE,MAAM;aACjB;YACD;gBACE,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EAAE,wCAAwC;gBACrD,cAAc,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC;gBAC3C,QAAQ,EAAE,QAAQ;aACnB;YACD;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,WAAW,EAAE,mCAAmC;gBAChD,cAAc,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC;gBAC/C,QAAQ,EAAE,QAAQ;aACnB;SACF;KACF;IAED,mBAAmB,EAAE;QACnB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,iBAAiB;gBACxB,WAAW,EAAE,gCAAgC;gBAC7C,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,oBAAoB;gBAC3B,WAAW,EAAE,yCAAyC;gBACtD,cAAc,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;gBAC3C,QAAQ,EAAE,MAAM;aACjB;YACD;gBACE,KAAK,EAAE,iBAAiB;gBACxB,WAAW,EAAE,8CAA8C;gBAC3D,cAAc,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC;gBAC/C,QAAQ,EAAE,QAAQ;aACnB;YACD;gBACE,KAAK,EAAE,cAAc;gBACrB,WAAW,EAAE,kCAAkC;gBAC/C,cAAc,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;gBAClD,QAAQ,EAAE,QAAQ;aACnB;SACF;KACF;IAED,kBAAkB,EAAE;QAClB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,qCAAqC;QAClD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,iBAAiB;gBACxB,WAAW,EAAE,+BAA+B;gBAC5C,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,sCAAsC;gBACnD,cAAc,EAAE,CAAC,iBAAiB,CAAC;gBACnC,QAAQ,EAAE,MAAM;aACjB;YACD;gBACE,KAAK,EAAE,mBAAmB;gBAC1B,WAAW,EAAE,gCAAgC;gBAC7C,cAAc,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC;gBAC/C,QAAQ,EAAE,MAAM;aACjB;YACD;gBACE,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,8BAA8B;gBAC3C,cAAc,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;gBACjD,QAAQ,EAAE,QAAQ;aACnB;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Core types for the multi-agent orchestration engine.
3
+ * Follows Paperclip patterns: flat task pool, expertise-based routing,
4
+ * atomic checkout, budget tracking.
5
+ */
6
+ export interface SkillDeclaration {
7
+ name: string;
8
+ description: string;
9
+ proficiency: number;
10
+ }
11
+ export interface TaskDefinition {
12
+ id: string;
13
+ title: string;
14
+ description: string;
15
+ requiredSkills: string[];
16
+ parentGoalId?: string;
17
+ priority: 'low' | 'medium' | 'high' | 'critical';
18
+ status: 'pending' | 'locked' | 'in_progress' | 'completed' | 'failed';
19
+ assignedAgent?: string;
20
+ budget?: {
21
+ maxTokens: number;
22
+ maxCostUsd: number;
23
+ };
24
+ createdAt: number;
25
+ completedAt?: number;
26
+ result?: string;
27
+ }
28
+ export interface GoalDefinition {
29
+ id: string;
30
+ title: string;
31
+ description: string;
32
+ projectId?: string;
33
+ tasks: string[];
34
+ status: 'active' | 'completed' | 'paused';
35
+ createdAt: number;
36
+ }
37
+ export interface OrchestratorConfig {
38
+ maxConcurrentAgents: number;
39
+ globalBudget: {
40
+ maxTokens: number;
41
+ maxCostUsd: number;
42
+ };
43
+ taskTimeout: number;
44
+ autoRetry: boolean;
45
+ maxRetries: number;
46
+ }
47
+ export interface BudgetSnapshot {
48
+ agentSlug: string;
49
+ tokensUsed: number;
50
+ costUsd: number;
51
+ budgetLimit: {
52
+ maxTokens: number;
53
+ maxCostUsd: number;
54
+ };
55
+ percentUsed: number;
56
+ warning: boolean;
57
+ exceeded: boolean;
58
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Core types for the multi-agent orchestration engine.
3
+ * Follows Paperclip patterns: flat task pool, expertise-based routing,
4
+ * atomic checkout, budget tracking.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestration/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -215,7 +215,7 @@ function buildRegistrationPrompt() {
215
215
  "IMPORTANT: Before proceeding with the user's request, you must set up Nex memory:",
216
216
  "1. Ask the user for their email address to register for a Nex account",
217
217
  "2. Run: nex register --email <email>",
218
- "3. Then run: nex setup",
218
+ "3. Then run: nex init",
219
219
  "",
220
220
  "Keep it brief — just ask for the email and register. No restart needed after registration.",
221
221
  ].join("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/plugin/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/plugin/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
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 {};
@@ -0,0 +1,34 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,14 @@
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;