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.
- package/dist/api/client.js +13 -3
- package/dist/api/client.js.map +1 -1
- package/dist/callback/server.d.ts +2 -0
- package/dist/callback/server.js +38 -21
- package/dist/callback/server.js.map +1 -1
- package/dist/checkpoint/resume-session.d.ts +3 -0
- package/dist/checkpoint/resume-session.js +8 -6
- package/dist/checkpoint/resume-session.js.map +1 -1
- package/dist/commands/continue.js +57 -43
- package/dist/commands/continue.js.map +1 -1
- package/dist/commands/exec.js +14 -6
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/interactive.js +23 -13
- package/dist/commands/interactive.js.map +1 -1
- package/dist/commands/login.d.ts +1 -0
- package/dist/commands/login.js +182 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +1 -0
- package/dist/commands/logout.js +22 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.js +21 -1
- package/dist/config/config.js.map +1 -1
- package/dist/index.js +17 -5
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/setup.d.ts +2 -0
- package/dist/lifecycle/setup.js +14 -13
- package/dist/lifecycle/setup.js.map +1 -1
- package/dist/lifecycle/teardown.js +3 -6
- package/dist/lifecycle/teardown.js.map +1 -1
- package/dist/lifecycle/types.d.ts +2 -0
- package/dist/lifecycle/workers.js +2 -2
- package/dist/lifecycle/workers.js.map +1 -1
- package/dist/reporting/reporter.d.ts +38 -0
- package/dist/reporting/reporter.js +89 -0
- package/dist/reporting/reporter.js.map +1 -0
- package/dist/sync/checkpoint.d.ts +4 -1
- package/dist/sync/checkpoint.js +15 -4
- package/dist/sync/checkpoint.js.map +1 -1
- package/dist/sync/command-listener.d.ts +3 -0
- package/dist/sync/command-listener.js +10 -5
- package/dist/sync/command-listener.js.map +1 -1
- package/dist/sync/events.d.ts +4 -1
- package/dist/sync/events.js +11 -3
- package/dist/sync/events.js.map +1 -1
- package/extensions/naiad-extension.ts +51 -3
- 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
|
-
|
|
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
|
-
|
|
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(
|
|
817
|
+
reject(new Error("Seer analysis failed"));
|
|
770
818
|
}
|
|
771
819
|
});
|
|
772
820
|
|