naiad-cli 0.2.39 → 0.2.41

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 (47) hide show
  1. package/dist/api/client.js +13 -3
  2. package/dist/api/client.js.map +1 -1
  3. package/dist/callback/server.d.ts +2 -0
  4. package/dist/callback/server.js +38 -21
  5. package/dist/callback/server.js.map +1 -1
  6. package/dist/checkpoint/resume-session.d.ts +3 -0
  7. package/dist/checkpoint/resume-session.js +8 -6
  8. package/dist/checkpoint/resume-session.js.map +1 -1
  9. package/dist/commands/continue.js +57 -43
  10. package/dist/commands/continue.js.map +1 -1
  11. package/dist/commands/exec.js +14 -6
  12. package/dist/commands/exec.js.map +1 -1
  13. package/dist/commands/interactive.js +23 -13
  14. package/dist/commands/interactive.js.map +1 -1
  15. package/dist/commands/login.d.ts +1 -0
  16. package/dist/commands/login.js +182 -0
  17. package/dist/commands/login.js.map +1 -0
  18. package/dist/commands/logout.d.ts +1 -0
  19. package/dist/commands/logout.js +22 -0
  20. package/dist/commands/logout.js.map +1 -0
  21. package/dist/config/config.d.ts +2 -0
  22. package/dist/config/config.js +21 -1
  23. package/dist/config/config.js.map +1 -1
  24. package/dist/index.js +17 -5
  25. package/dist/index.js.map +1 -1
  26. package/dist/lifecycle/setup.d.ts +2 -0
  27. package/dist/lifecycle/setup.js +14 -13
  28. package/dist/lifecycle/setup.js.map +1 -1
  29. package/dist/lifecycle/teardown.js +3 -6
  30. package/dist/lifecycle/teardown.js.map +1 -1
  31. package/dist/lifecycle/types.d.ts +2 -0
  32. package/dist/lifecycle/workers.js +2 -2
  33. package/dist/lifecycle/workers.js.map +1 -1
  34. package/dist/reporting/reporter.d.ts +38 -0
  35. package/dist/reporting/reporter.js +89 -0
  36. package/dist/reporting/reporter.js.map +1 -0
  37. package/dist/sync/checkpoint.d.ts +4 -1
  38. package/dist/sync/checkpoint.js +15 -4
  39. package/dist/sync/checkpoint.js.map +1 -1
  40. package/dist/sync/command-listener.d.ts +3 -0
  41. package/dist/sync/command-listener.js +10 -5
  42. package/dist/sync/command-listener.js.map +1 -1
  43. package/dist/sync/events.d.ts +4 -1
  44. package/dist/sync/events.js +11 -3
  45. package/dist/sync/events.js.map +1 -1
  46. package/extensions/naiad-extension.ts +51 -3
  47. package/package.json +1 -1
@@ -65,6 +65,10 @@ export default function (pi: ExtensionAPI) {
65
65
  },
66
66
  };
67
67
 
68
+ // UI bridge for dispatching notifications/status to pi's TUI via ctx.ui
69
+ // Captured from agent_start event when callbackUrl is set (interactive mode)
70
+ let uiBridge: { notify(message: string, type?: string): void; setStatus(key: string, text: string | undefined): void } | undefined;
71
+
68
72
  if (typeof (pi as any).on === "function") {
69
73
  (pi as any).on("turn_end", () => {
70
74
  try {
@@ -114,7 +118,8 @@ export default function (pi: ExtensionAPI) {
114
118
  untrackedExceededMaxBuffer = true;
115
119
  untrackedTarball = null;
116
120
  } else {
117
- console.error("[naiad] tar failed, skipping untracked archive:", err.message);
121
+ // Notify via UI bridge if available, otherwise silent (non-actionable)
122
+ uiBridge?.notify("Checkpoint: skipped untracked files (tar failed)", "warning");
118
123
  untrackedTarball = null;
119
124
  }
120
125
  }
@@ -153,7 +158,7 @@ export default function (pi: ExtensionAPI) {
153
158
  timestamp: Date.now(),
154
159
  });
155
160
  } catch (err: any) {
156
- console.error("[naiad] checkpoint generation failed:", err.message);
161
+ uiBridge?.notify("Checkpoint generation failed — will retry next turn", "warning");
157
162
  }
158
163
  });
159
164
  }
@@ -191,6 +196,49 @@ export default function (pi: ExtensionAPI) {
191
196
  (pi as any).on("tool_execution_start", (event: unknown) => postEvent("tool_execution_start", event));
192
197
  (pi as any).on("tool_execution_update", (event: unknown) => postEvent("tool_execution_update", event));
193
198
  (pi as any).on("tool_execution_end", (event: unknown) => postEvent("tool_execution_end", event));
199
+
200
+ // Poll UI commands from CLI and dispatch to pi's UI via ctx
201
+ const callbackBase = callbackUrl.replace(/\/events$/, "");
202
+ let uiCursor = 0;
203
+ let uiPolling = false;
204
+
205
+ // Capture ctx.ui from the first event that provides it
206
+ (pi as any).on("agent_start", (_event: unknown, ctx: any) => {
207
+ if (ctx?.ui) {
208
+ uiBridge = {
209
+ notify: (message, type) => ctx.ui.notify(message, type),
210
+ setStatus: (key, text) => ctx.ui.setStatus(key, text),
211
+ };
212
+ }
213
+ });
214
+
215
+ const uiPoller = setInterval(async () => {
216
+ if (uiPolling || !uiBridge) return;
217
+ uiPolling = true;
218
+ try {
219
+ const res = await fetch(`${callbackBase}/ui-commands?cursor=${uiCursor}`);
220
+ if (!res.ok) return;
221
+ const data = await res.json() as { commands: Array<{ id: number; type: string; level?: string; message?: string; key?: string; text?: string }> };
222
+ for (const cmd of data.commands) {
223
+ if (cmd.id <= uiCursor) continue;
224
+ uiCursor = cmd.id;
225
+ if (cmd.type === "notify" && cmd.message) {
226
+ uiBridge.notify(cmd.message, cmd.level ?? "info");
227
+ } else if (cmd.type === "status") {
228
+ uiBridge.setStatus(cmd.key!, cmd.text);
229
+ }
230
+ }
231
+ } catch {
232
+ // Best effort — don't crash if polling fails
233
+ } finally {
234
+ uiPolling = false;
235
+ }
236
+ }, 2000);
237
+
238
+ // Clean up poller when agent ends
239
+ (pi as any).on("agent_end", () => {
240
+ clearInterval(uiPoller);
241
+ });
194
242
  }
195
243
 
196
244
  pi.registerProvider("naiad-proxy", {
@@ -766,7 +814,7 @@ When you're done, provide a clear, actionable summary the caller can act on.`;
766
814
  resolve(text);
767
815
  }
768
816
  } else {
769
- reject(new Error(`Seer failed (exit ${code}): ${stderr.slice(0, 2000)}`));
817
+ reject(new Error("Seer analysis failed"));
770
818
  }
771
819
  });
772
820
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "naiad-cli",
3
- "version": "0.2.39",
3
+ "version": "0.2.41",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "naiad": "./dist/index.js"