@nodetool-ai/cli 0.7.0-rc.11

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 (77) hide show
  1. package/dist/ExecutionTree.d.ts +19 -0
  2. package/dist/ExecutionTree.d.ts.map +1 -0
  3. package/dist/ExecutionTree.js +100 -0
  4. package/dist/ExecutionTree.js.map +1 -0
  5. package/dist/app.d.ts +50 -0
  6. package/dist/app.d.ts.map +1 -0
  7. package/dist/app.js +767 -0
  8. package/dist/app.js.map +1 -0
  9. package/dist/commands/agent.d.ts +11 -0
  10. package/dist/commands/agent.d.ts.map +1 -0
  11. package/dist/commands/agent.js +483 -0
  12. package/dist/commands/agent.js.map +1 -0
  13. package/dist/commands/deploy-helpers.d.ts +46 -0
  14. package/dist/commands/deploy-helpers.d.ts.map +1 -0
  15. package/dist/commands/deploy-helpers.js +448 -0
  16. package/dist/commands/deploy-helpers.js.map +1 -0
  17. package/dist/commands/deploy.d.ts +8 -0
  18. package/dist/commands/deploy.d.ts.map +1 -0
  19. package/dist/commands/deploy.js +645 -0
  20. package/dist/commands/deploy.js.map +1 -0
  21. package/dist/commands/models-hf.d.ts +9 -0
  22. package/dist/commands/models-hf.d.ts.map +1 -0
  23. package/dist/commands/models-hf.js +235 -0
  24. package/dist/commands/models-hf.js.map +1 -0
  25. package/dist/commands/models-recommended.d.ts +10 -0
  26. package/dist/commands/models-recommended.d.ts.map +1 -0
  27. package/dist/commands/models-recommended.js +128 -0
  28. package/dist/commands/models-recommended.js.map +1 -0
  29. package/dist/commands/package-helpers.d.ts +14 -0
  30. package/dist/commands/package-helpers.d.ts.map +1 -0
  31. package/dist/commands/package-helpers.js +76 -0
  32. package/dist/commands/package-helpers.js.map +1 -0
  33. package/dist/commands/package.d.ts +3 -0
  34. package/dist/commands/package.d.ts.map +1 -0
  35. package/dist/commands/package.js +254 -0
  36. package/dist/commands/package.js.map +1 -0
  37. package/dist/index.d.ts +13 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +233 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/markdown.d.ts +9 -0
  42. package/dist/markdown.d.ts.map +1 -0
  43. package/dist/markdown.js +48 -0
  44. package/dist/markdown.js.map +1 -0
  45. package/dist/nodetool.d.ts +16 -0
  46. package/dist/nodetool.d.ts.map +1 -0
  47. package/dist/nodetool.js +1154 -0
  48. package/dist/nodetool.js.map +1 -0
  49. package/dist/providers.d.ts +47 -0
  50. package/dist/providers.d.ts.map +1 -0
  51. package/dist/providers.js +173 -0
  52. package/dist/providers.js.map +1 -0
  53. package/dist/readline-input.d.ts +29 -0
  54. package/dist/readline-input.d.ts.map +1 -0
  55. package/dist/readline-input.js +199 -0
  56. package/dist/readline-input.js.map +1 -0
  57. package/dist/run-dsl.d.ts +11 -0
  58. package/dist/run-dsl.d.ts.map +1 -0
  59. package/dist/run-dsl.js +31 -0
  60. package/dist/run-dsl.js.map +1 -0
  61. package/dist/settings.d.ts +18 -0
  62. package/dist/settings.d.ts.map +1 -0
  63. package/dist/settings.js +86 -0
  64. package/dist/settings.js.map +1 -0
  65. package/dist/stdin.d.ts +48 -0
  66. package/dist/stdin.d.ts.map +1 -0
  67. package/dist/stdin.js +352 -0
  68. package/dist/stdin.js.map +1 -0
  69. package/dist/useExecutionState.d.ts +44 -0
  70. package/dist/useExecutionState.d.ts.map +1 -0
  71. package/dist/useExecutionState.js +281 -0
  72. package/dist/useExecutionState.js.map +1 -0
  73. package/dist/websocket-client.d.ts +100 -0
  74. package/dist/websocket-client.d.ts.map +1 -0
  75. package/dist/websocket-client.js +351 -0
  76. package/dist/websocket-client.js.map +1 -0
  77. package/package.json +85 -0
@@ -0,0 +1,351 @@
1
+ /**
2
+ * WebSocket client for connecting the CLI to a NodeTool server.
3
+ * Handles chat (stateful, with thread history), inference (stateless, for agent mode),
4
+ * and workflow commands (run_job, cancel_job, get_status).
5
+ */
6
+ import WebSocket from "ws";
7
+ export class WebSocketChatClient {
8
+ wsUrl;
9
+ ws = null;
10
+ contentQueue = [];
11
+ contentWaiters = [];
12
+ constructor(wsUrl) {
13
+ this.wsUrl = wsUrl;
14
+ }
15
+ async connect() {
16
+ return new Promise((resolve, reject) => {
17
+ const ws = new WebSocket(this.wsUrl);
18
+ ws.on("open", () => {
19
+ this.ws = ws;
20
+ // Switch server to text/JSON mode
21
+ ws.send(JSON.stringify({ command: "set_mode", data: { mode: "text" } }));
22
+ resolve();
23
+ });
24
+ ws.on("error", (err) => reject(err));
25
+ ws.on("message", (data) => {
26
+ try {
27
+ const msg = JSON.parse(typeof data === "string" ? data : data.toString("utf8"));
28
+ this.handleMessage(msg);
29
+ }
30
+ catch {
31
+ // ignore malformed messages
32
+ }
33
+ });
34
+ ws.on("close", () => {
35
+ this.ws = null;
36
+ // Unblock all pending waiters
37
+ for (const waiter of this.contentWaiters)
38
+ waiter(null);
39
+ this.contentWaiters = [];
40
+ });
41
+ });
42
+ }
43
+ handleMessage(msg) {
44
+ const type = typeof msg.type === "string" ? msg.type : null;
45
+ // Auto-respond to server pings
46
+ if (type === "ping") {
47
+ this.send({ type: "pong", ts: Date.now() / 1000 });
48
+ return;
49
+ }
50
+ // Treat command-level errors (no type field but has error field) as error content events
51
+ if (!type && typeof msg.error === "string") {
52
+ const errorEvent = {
53
+ type: "error",
54
+ message: msg.error
55
+ };
56
+ const waiter = this.contentWaiters.shift();
57
+ if (waiter) {
58
+ waiter(errorEvent);
59
+ }
60
+ else {
61
+ this.contentQueue.push(errorEvent);
62
+ }
63
+ return;
64
+ }
65
+ // Route content events to waiting generators
66
+ if (this.isContentEvent(type)) {
67
+ const waiter = this.contentWaiters.shift();
68
+ if (waiter) {
69
+ waiter(msg);
70
+ }
71
+ else {
72
+ this.contentQueue.push(msg);
73
+ }
74
+ }
75
+ // Ignore: system_stats, command acks (no type field), etc.
76
+ }
77
+ isContentEvent(type) {
78
+ return (type === "chunk" ||
79
+ type === "message" ||
80
+ type === "tool_call" ||
81
+ type === "job_update" ||
82
+ type === "node_update" ||
83
+ type === "output_update" ||
84
+ type === "node_progress" ||
85
+ type === "error" ||
86
+ type === "inference_done" ||
87
+ type === "generation_stopped");
88
+ }
89
+ send(data) {
90
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
91
+ this.ws.send(JSON.stringify(data));
92
+ }
93
+ }
94
+ nextContent() {
95
+ if (this.contentQueue.length > 0) {
96
+ return Promise.resolve(this.contentQueue.shift());
97
+ }
98
+ return new Promise((resolve) => {
99
+ this.contentWaiters.push(resolve);
100
+ });
101
+ }
102
+ /** Stateful chat — messages are saved to DB, thread history is loaded. */
103
+ async *chat(content, threadId, model, provider, tools) {
104
+ // Drain stale events from previous responses (extra done chunks, final messages, etc.)
105
+ // that arrived between the previous chat completing and this one starting.
106
+ this.contentQueue.length = 0;
107
+ this.send({
108
+ command: "chat_message",
109
+ data: {
110
+ role: "user",
111
+ content,
112
+ thread_id: threadId,
113
+ model,
114
+ provider,
115
+ tools: tools ?? []
116
+ }
117
+ });
118
+ while (true) {
119
+ const event = await this.nextContent();
120
+ if (!event) {
121
+ yield { type: "done" };
122
+ return;
123
+ }
124
+ const type = event.type;
125
+ if (type === "chunk") {
126
+ // Yield content from every chunk — including the done chunk which may carry the last piece
127
+ const chunkContent = typeof event.content === "string" ? event.content : "";
128
+ if (chunkContent) {
129
+ yield { type: "chunk", content: chunkContent };
130
+ }
131
+ // Done chunk signals completion — matches Python's {"type": "chunk", "done": true}
132
+ if (event.done === true) {
133
+ yield { type: "done" };
134
+ return;
135
+ }
136
+ }
137
+ else if (type === "message") {
138
+ const role = event.role;
139
+ if (role === "assistant" && Array.isArray(event.tool_calls)) {
140
+ // Assistant decided to call tool(s) — yield each one
141
+ for (const tc of event.tool_calls) {
142
+ yield {
143
+ type: "tool_call",
144
+ id: typeof tc.id === "string" ? tc.id : "",
145
+ name: typeof tc.name === "string" ? tc.name : "",
146
+ args: (tc.args ?? {})
147
+ };
148
+ }
149
+ }
150
+ else if (role === "tool") {
151
+ // Tool result — yield for display
152
+ yield {
153
+ type: "tool_result",
154
+ id: typeof event.tool_call_id === "string" ? event.tool_call_id : "",
155
+ name: typeof event.name === "string" ? event.name : "",
156
+ content: typeof event.content === "string" ? event.content : ""
157
+ };
158
+ }
159
+ // Final assistant message (no tool_calls) is ignored — content already streamed via chunks
160
+ continue;
161
+ }
162
+ else if (type === "output_update") {
163
+ yield {
164
+ type: "output_update",
165
+ node_id: typeof event.node_id === "string" ? event.node_id : "",
166
+ value: event.value,
167
+ output_type: typeof event.output_type === "string"
168
+ ? event.output_type
169
+ : undefined
170
+ };
171
+ }
172
+ else if (type === "job_update" || type === "generation_stopped") {
173
+ yield { type: "done" };
174
+ return;
175
+ }
176
+ else if (type === "error") {
177
+ yield {
178
+ type: "error",
179
+ message: typeof event.message === "string" ? event.message : "Unknown error"
180
+ };
181
+ return;
182
+ }
183
+ }
184
+ }
185
+ /** Stateless inference — takes full messages array, streams back, no DB. Used by agent mode. */
186
+ async *inference(messages, model, provider, tools) {
187
+ this.send({
188
+ command: "inference",
189
+ data: { messages, model, provider, tools: tools ?? [] }
190
+ });
191
+ while (true) {
192
+ const event = await this.nextContent();
193
+ if (!event) {
194
+ yield { type: "done" };
195
+ return;
196
+ }
197
+ const type = event.type;
198
+ if (type === "chunk") {
199
+ const chunkContent = typeof event.content === "string" ? event.content : "";
200
+ if (chunkContent) {
201
+ yield { type: "chunk", content: chunkContent };
202
+ }
203
+ if (event.done === true) {
204
+ yield { type: "done" };
205
+ return;
206
+ }
207
+ }
208
+ else if (type === "tool_call") {
209
+ yield {
210
+ type: "tool_call",
211
+ id: typeof event.id === "string" ? event.id : "",
212
+ name: typeof event.name === "string" ? event.name : "",
213
+ args: (event.args ?? {})
214
+ };
215
+ }
216
+ else if (type === "inference_done" || type === "generation_stopped") {
217
+ yield { type: "done" };
218
+ return;
219
+ }
220
+ else if (type === "error") {
221
+ yield {
222
+ type: "error",
223
+ message: typeof event.message === "string" ? event.message : "Unknown error"
224
+ };
225
+ return;
226
+ }
227
+ }
228
+ }
229
+ /**
230
+ * Run a workflow job. Streams job_update, node_update, output_update events.
231
+ * Terminates when a terminal job_update is received (completed/failed/cancelled).
232
+ */
233
+ async *runJob(opts) {
234
+ this.contentQueue.length = 0;
235
+ this.send({
236
+ command: "run_job",
237
+ data: {
238
+ workflow_id: opts.workflowId,
239
+ graph: opts.graph,
240
+ params: opts.params ?? {},
241
+ job_id: opts.jobId
242
+ }
243
+ });
244
+ yield* this.consumeJobEvents();
245
+ }
246
+ /** Reconnect to a running job's event stream. */
247
+ async *reconnectJob(jobId, workflowId) {
248
+ this.contentQueue.length = 0;
249
+ this.send({
250
+ command: "reconnect_job",
251
+ data: { job_id: jobId, workflow_id: workflowId }
252
+ });
253
+ yield* this.consumeJobEvents();
254
+ }
255
+ /** Resume a paused/interrupted job. */
256
+ async *resumeJob(jobId, workflowId) {
257
+ this.contentQueue.length = 0;
258
+ this.send({
259
+ command: "resume_job",
260
+ data: { job_id: jobId, workflow_id: workflowId }
261
+ });
262
+ yield* this.consumeJobEvents();
263
+ }
264
+ /** Shared job event consumer used by runJob, reconnectJob, resumeJob. */
265
+ async *consumeJobEvents() {
266
+ while (true) {
267
+ const event = await this.nextContent();
268
+ if (!event) {
269
+ yield { type: "done" };
270
+ return;
271
+ }
272
+ const type = event.type;
273
+ if (type === "job_update") {
274
+ const status = typeof event.status === "string" ? event.status : "unknown";
275
+ yield {
276
+ type: "job_update",
277
+ status,
278
+ job_id: typeof event.job_id === "string" ? event.job_id : undefined,
279
+ workflow_id: typeof event.workflow_id === "string"
280
+ ? event.workflow_id
281
+ : undefined,
282
+ error: typeof event.error === "string" ? event.error : undefined,
283
+ result: event.result
284
+ };
285
+ if (["completed", "failed", "cancelled", "error"].includes(status)) {
286
+ yield { type: "done" };
287
+ return;
288
+ }
289
+ }
290
+ else if (type === "node_update") {
291
+ yield {
292
+ type: "node_update",
293
+ node_id: typeof event.node_id === "string" ? event.node_id : "",
294
+ status: typeof event.status === "string" ? event.status : "unknown",
295
+ error: typeof event.error === "string" ? event.error : undefined
296
+ };
297
+ }
298
+ else if (type === "output_update") {
299
+ yield {
300
+ type: "output_update",
301
+ node_id: typeof event.node_id === "string" ? event.node_id : "",
302
+ value: event.value,
303
+ output_type: typeof event.output_type === "string"
304
+ ? event.output_type
305
+ : undefined
306
+ };
307
+ }
308
+ else if (type === "node_progress") {
309
+ yield {
310
+ type: "node_progress",
311
+ node_id: typeof event.node_id === "string" ? event.node_id : "",
312
+ progress: typeof event.progress === "number" ? event.progress : 0,
313
+ total: typeof event.total === "number" ? event.total : undefined
314
+ };
315
+ }
316
+ else if (type === "error") {
317
+ yield {
318
+ type: "error",
319
+ message: typeof event.message === "string" ? event.message : "Unknown error"
320
+ };
321
+ return;
322
+ }
323
+ else if (type === "generation_stopped") {
324
+ yield { type: "done" };
325
+ return;
326
+ }
327
+ }
328
+ }
329
+ /** Cancel a running job. */
330
+ cancelJob(jobId) {
331
+ this.send({ command: "cancel_job", data: { job_id: jobId } });
332
+ }
333
+ /** Get status of a job or all active jobs. */
334
+ getStatus(jobId) {
335
+ this.send({ command: "get_status", data: jobId ? { job_id: jobId } : {} });
336
+ }
337
+ /** Stop in-progress generation. Pass threadId for chat, omit for inference. */
338
+ stop(threadId) {
339
+ const data = {};
340
+ if (threadId)
341
+ data["thread_id"] = threadId;
342
+ this.send({ command: "stop", data });
343
+ }
344
+ disconnect() {
345
+ if (this.ws) {
346
+ this.ws.close();
347
+ this.ws = null;
348
+ }
349
+ }
350
+ }
351
+ //# sourceMappingURL=websocket-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../src/websocket-client.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@nodetool-ai/cli",
3
+ "version": "0.7.0-rc.11",
4
+ "description": "NodeTool chat CLI — interactive AI chat with agent mode and tool support",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "nodetool-chat": "dist/index.js",
9
+ "nodetool": "dist/nodetool.js"
10
+ },
11
+ "scripts": {
12
+ "build": "node ../../scripts/build-typescript-workspace.mjs",
13
+ "dev": "tsc --watch",
14
+ "start": "node dist/index.js",
15
+ "test": "vitest run",
16
+ "lint": "tsc --noEmit"
17
+ },
18
+ "dependencies": {
19
+ "@nodetool-ai/config": "^0.7.0-rc.11",
20
+ "@nodetool-ai/agents": "^0.7.0-rc.11",
21
+ "@nodetool-ai/deploy": "^0.7.0-rc.11",
22
+ "@nodetool-ai/huggingface": "^0.7.0-rc.11",
23
+ "@nodetool-ai/vectorstore": "^0.7.0-rc.11",
24
+ "@nodetool-ai/websocket": "^0.7.0-rc.11",
25
+ "@trpc/client": "^11.0.0",
26
+ "@trpc/server": "^11.0.0",
27
+ "@nodetool-ai/base-nodes": "^0.7.0-rc.11",
28
+ "@nodetool-ai/elevenlabs-nodes": "^0.7.0-rc.11",
29
+ "@nodetool-ai/transformers-js-nodes": "^0.7.0-rc.11",
30
+ "@nodetool-ai/dsl": "^0.7.0-rc.11",
31
+ "@nodetool-ai/fal-nodes": "^0.7.0-rc.11",
32
+ "@nodetool-ai/replicate-nodes": "^0.7.0-rc.11",
33
+ "@nodetool-ai/kernel": "^0.7.0-rc.11",
34
+ "@nodetool-ai/models": "^0.7.0-rc.11",
35
+ "@nodetool-ai/node-sdk": "^0.7.0-rc.11",
36
+ "@nodetool-ai/chat": "^0.7.0-rc.11",
37
+ "@nodetool-ai/protocol": "^0.7.0-rc.11",
38
+ "@nodetool-ai/runtime": "^0.7.0-rc.11",
39
+ "@nodetool-ai/sandbox": "^0.7.0-rc.11",
40
+ "@nodetool-ai/sandbox-tools": "^0.7.0-rc.11",
41
+ "@nodetool-ai/security": "^0.7.0-rc.11",
42
+ "@inquirer/prompts": "^5.0.0",
43
+ "chalk": "^5.3.0",
44
+ "js-yaml": "^4.1.0",
45
+ "ws": "^8.18.3",
46
+ "commander": "^12.1.0",
47
+ "ink": "^6.8.0",
48
+ "ink-spinner": "^5.0.0",
49
+ "marked": "^12.0.0",
50
+ "marked-terminal": "^7.1.0",
51
+ "react": "^19.0.0",
52
+ "superjson": "^2.2.2"
53
+ },
54
+ "devDependencies": {
55
+ "@types/js-yaml": "^4.0.9",
56
+ "@types/react": "^19.0.0",
57
+ "vitest": "^4.1.2",
58
+ "typescript": "^5.7.2"
59
+ },
60
+ "exports": {
61
+ ".": {
62
+ "nodetool-dev": "./src/index.ts",
63
+ "types": "./dist/index.d.ts",
64
+ "import": "./dist/index.js",
65
+ "default": "./dist/index.js"
66
+ }
67
+ },
68
+ "license": "MIT",
69
+ "repository": {
70
+ "type": "git",
71
+ "url": "https://github.com/nodetool-ai/nodetool.git",
72
+ "directory": "packages/cli"
73
+ },
74
+ "homepage": "https://nodetool.ai",
75
+ "bugs": {
76
+ "url": "https://github.com/nodetool-ai/nodetool/issues"
77
+ },
78
+ "publishConfig": {
79
+ "access": "public"
80
+ },
81
+ "files": [
82
+ "dist",
83
+ "README.md"
84
+ ]
85
+ }