agent-nuvira 3.5.1 → 3.5.2
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/cli/chat.d.ts +42 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +240 -16
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/edit.d.ts.map +1 -1
- package/dist/cli/edit.js +3 -2
- package/dist/cli/edit.js.map +1 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +10 -3
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/loop-executor.d.ts +16 -0
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +9 -0
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +18 -6
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +23 -8
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/ui/answer-view.d.ts +38 -0
- package/dist/cli/ui/answer-view.d.ts.map +1 -0
- package/dist/cli/ui/answer-view.js +72 -0
- package/dist/cli/ui/answer-view.js.map +1 -0
- package/dist/cli/ui/cards.d.ts +61 -0
- package/dist/cli/ui/cards.d.ts.map +1 -0
- package/dist/cli/ui/cards.js +141 -0
- package/dist/cli/ui/cards.js.map +1 -0
- package/dist/cli/ui/highlight.d.ts +32 -0
- package/dist/cli/ui/highlight.d.ts.map +1 -0
- package/dist/cli/ui/highlight.js +261 -0
- package/dist/cli/ui/highlight.js.map +1 -0
- package/dist/cli/ui/index.d.ts +21 -0
- package/dist/cli/ui/index.d.ts.map +1 -0
- package/dist/cli/ui/index.js +14 -0
- package/dist/cli/ui/index.js.map +1 -0
- package/dist/cli/ui/markdown.d.ts +90 -0
- package/dist/cli/ui/markdown.d.ts.map +1 -0
- package/dist/cli/ui/markdown.js +292 -0
- package/dist/cli/ui/markdown.js.map +1 -0
- package/dist/cli/ui/presenter.d.ts +147 -0
- package/dist/cli/ui/presenter.d.ts.map +1 -0
- package/dist/cli/ui/presenter.js +313 -0
- package/dist/cli/ui/presenter.js.map +1 -0
- package/dist/cli/ui/render.d.ts +52 -0
- package/dist/cli/ui/render.d.ts.map +1 -0
- package/dist/cli/ui/render.js +384 -0
- package/dist/cli/ui/render.js.map +1 -0
- package/dist/cli/ui/theme.d.ts +36 -0
- package/dist/cli/ui/theme.d.ts.map +1 -0
- package/dist/cli/ui/theme.js +92 -0
- package/dist/cli/ui/theme.js.map +1 -0
- package/dist/inference/model-entitlement.d.ts +10 -0
- package/dist/inference/model-entitlement.d.ts.map +1 -1
- package/dist/inference/model-entitlement.js +1 -1
- package/dist/inference/model-entitlement.js.map +1 -1
- package/dist/learning/auto-router.d.ts +10 -1
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +63 -11
- package/dist/learning/auto-router.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +21 -1
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +70 -4
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/tools/process-liveness.d.ts +227 -0
- package/dist/tools/process-liveness.d.ts.map +1 -0
- package/dist/tools/process-liveness.js +486 -0
- package/dist/tools/process-liveness.js.map +1 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +4 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/run-registry.d.ts +282 -0
- package/dist/tools/run-registry.d.ts.map +1 -0
- package/dist/tools/run-registry.js +544 -0
- package/dist/tools/run-registry.js.map +1 -0
- package/dist/tools/run-terminal.d.ts +100 -2
- package/dist/tools/run-terminal.d.ts.map +1 -1
- package/dist/tools/run-terminal.js +841 -67
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/tool-loop.d.ts +46 -0
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +115 -2
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/web-dashboard/chat-console.d.ts +25 -0
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +16 -1
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +7 -1
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +32 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/web-dashboard/task-registry.d.ts +98 -0
- package/dist/web-dashboard/task-registry.d.ts.map +1 -0
- package/dist/web-dashboard/task-registry.js +159 -0
- package/dist/web-dashboard/task-registry.js.map +1 -0
- package/dist/web-dashboard/task-runner.d.ts +155 -5
- package/dist/web-dashboard/task-runner.d.ts.map +1 -1
- package/dist/web-dashboard/task-runner.js +505 -14
- package/dist/web-dashboard/task-runner.js.map +1 -1
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/index-DycGBWwy.js +236 -0
- package/src/web-dashboard/public/assets/index-DycGBWwy.js.map +1 -0
- package/src/web-dashboard/public/index.html +1 -1
- package/src/web-dashboard/public/assets/index-Bik91KJh.js +0 -236
- package/src/web-dashboard/public/assets/index-Bik91KJh.js.map +0 -1
|
@@ -11,14 +11,40 @@
|
|
|
11
11
|
* - get(id) / list() → serializable task records
|
|
12
12
|
* - onEvent(cb) → 'log'/'status' events (SSE fan-out)
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* An EXPLICIT timeout SIGTERMs the child, then SIGKILLs after a grace period.
|
|
15
|
+
* With no timeout (the default) nothing is killed on a clock — instead a
|
|
16
|
+
* LIVENESS WATCHDOG samples the task's process tree and distinguishes a command
|
|
17
|
+
* that is genuinely HUNG (no output AND no CPU: a prompt with no stdin, a lock,
|
|
18
|
+
* a socket that never answers) from one that is merely slow (silent but still
|
|
19
|
+
* burning CPU). A confirmed hang is flagged on the record and in the log, and —
|
|
20
|
+
* unless the command is a long-lived server/watch command, which is SUPPOSED to
|
|
21
|
+
* be silent and idle — the runner stops it after a further grace, so a hang is
|
|
22
|
+
* never left running forever. Logs are ring-buffered (capped) so a chatty
|
|
23
|
+
* command can't exhaust memory.
|
|
24
|
+
*
|
|
25
|
+
* STATE OUTLIVES THE PROCESS (see `task-registry.ts`). A task is written to a
|
|
26
|
+
* durable record the moment it starts — pid, args, cwd, start time, the OS's
|
|
27
|
+
* start token for that pid — and its output to a bounded log window. A new
|
|
28
|
+
* dashboard process HYDRATES from those: the list and the log pane come back,
|
|
29
|
+
* a task whose process is still alive is re-attached to the liveness watchdog,
|
|
30
|
+
* and one whose pid is gone is settled honestly (no exit code, because none was
|
|
31
|
+
* ever observed). The bug this fixes was measured: restarting the dashboard left
|
|
32
|
+
* the child running and the console empty, so work kept burning CPU that nothing
|
|
33
|
+
* could see, collect or stop.
|
|
34
|
+
*
|
|
35
|
+
* A recovered process is stopped ONLY once its identity is re-verified (the
|
|
36
|
+
* command line AND the OS start token — see `processIdentityVerdict`); a refusal
|
|
37
|
+
* is logged on the task with its pid so it can be stopped by hand.
|
|
38
|
+
*
|
|
39
|
+
* ONE OWNER PER PROFILE, like the monitored-run registry: two dashboards sharing
|
|
40
|
+
* a config dir write the same records and the last write wins. That is a
|
|
41
|
+
* limitation, not a claim.
|
|
17
42
|
*
|
|
18
43
|
* The spawn target is injectable (`execPath`/`cliEntry`) so unit tests can
|
|
19
44
|
* point at fixture scripts instead of the real CLI.
|
|
20
45
|
*/
|
|
21
|
-
|
|
46
|
+
import { type Liveness } from '../tools/process-liveness.js';
|
|
47
|
+
export type TaskStatus = 'running' | 'done' | 'failed' | 'cancelled' | 'timeout' | 'error' | 'hung';
|
|
22
48
|
export type TaskLogStream = 'stdout' | 'stderr' | 'system';
|
|
23
49
|
export interface TaskLogLine {
|
|
24
50
|
stream: TaskLogStream;
|
|
@@ -39,8 +65,36 @@ export interface TaskRecord {
|
|
|
39
65
|
durationMs: number | null;
|
|
40
66
|
timeoutMs: number;
|
|
41
67
|
logs: TaskLogLine[];
|
|
68
|
+
/** When the last output arrived — the silence half of the liveness check. */
|
|
69
|
+
lastOutputAt: number;
|
|
70
|
+
/**
|
|
71
|
+
* The watchdog's last liveness verdict and the evidence behind it. Present
|
|
72
|
+
* once a run has been sampled; this is what makes "still running" different
|
|
73
|
+
* from "running, and here is why I believe it is stuck".
|
|
74
|
+
*/
|
|
75
|
+
liveness?: {
|
|
76
|
+
verdict: Liveness;
|
|
77
|
+
why: string;
|
|
78
|
+
at: number;
|
|
79
|
+
};
|
|
80
|
+
/** When a CONFIRMED hang began (cleared the moment it speaks or computes). */
|
|
81
|
+
hungSince?: number | null;
|
|
82
|
+
/** Why the task stopped, when it was stopped rather than finishing on its own. */
|
|
83
|
+
stopReason?: string;
|
|
42
84
|
/** Spawn-level errors (ENOENT, entry missing, …). */
|
|
43
85
|
error?: string;
|
|
86
|
+
/** The child's pid — what a RESTART needs in order to find the work again. */
|
|
87
|
+
pid?: number | null;
|
|
88
|
+
/**
|
|
89
|
+
* Set only on a task recovered from a previous dashboard process. `verified`
|
|
90
|
+
* is the identity verdict (`null` = this platform could not tell), and `why`
|
|
91
|
+
* is the evidence — a recovered task that cannot be verified is still SHOWN,
|
|
92
|
+
* but never stopped.
|
|
93
|
+
*/
|
|
94
|
+
recovered?: {
|
|
95
|
+
verified: boolean | null;
|
|
96
|
+
why: string;
|
|
97
|
+
};
|
|
44
98
|
}
|
|
45
99
|
export interface TaskRunnerOptions {
|
|
46
100
|
/** Executable to spawn. Defaults to process.execPath (node). */
|
|
@@ -50,6 +104,16 @@ export interface TaskRunnerOptions {
|
|
|
50
104
|
/** Working directory for spawned tasks. Defaults to process.cwd(). */
|
|
51
105
|
cwd?: string;
|
|
52
106
|
}
|
|
107
|
+
/** True when this command is a long-lived server/watcher (never reaped for a hang). */
|
|
108
|
+
export declare function isLongLivedCommand(args: string[]): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* How long a CONFIRMED hang runs before the runner stops it (0 = never — flag it
|
|
111
|
+
* and leave the decision to the operator, who can always cancel).
|
|
112
|
+
*
|
|
113
|
+
* Ten minutes by default, and the grace only starts once a hang has been
|
|
114
|
+
* ESTABLISHED from evidence, so a slow-but-working command is never touched.
|
|
115
|
+
*/
|
|
116
|
+
export declare function taskHangReapMs(): number;
|
|
53
117
|
export interface TaskEventPayload {
|
|
54
118
|
kind: 'log' | 'status';
|
|
55
119
|
/** New log line (log events only). */
|
|
@@ -60,6 +124,8 @@ export interface TaskEventPayload {
|
|
|
60
124
|
exitCode: number | null;
|
|
61
125
|
durationMs: number | null;
|
|
62
126
|
error?: string;
|
|
127
|
+
/** Set when the task was stopped rather than finishing on its own. */
|
|
128
|
+
stopReason?: string;
|
|
63
129
|
};
|
|
64
130
|
}
|
|
65
131
|
export declare class TaskRunner {
|
|
@@ -69,8 +135,63 @@ export declare class TaskRunner {
|
|
|
69
135
|
private children;
|
|
70
136
|
private cancelled;
|
|
71
137
|
private timedOut;
|
|
138
|
+
/** Tasks the liveness watchdog stopped (distinct from a user's cancel). */
|
|
139
|
+
private hung;
|
|
140
|
+
/** The last CPU sample per task — the delta is what proves a hang. */
|
|
141
|
+
private cpuSamples;
|
|
142
|
+
private watchers;
|
|
72
143
|
private listeners;
|
|
144
|
+
/** The bounded on-disk log window per task (what a restart reads back). */
|
|
145
|
+
private logs;
|
|
146
|
+
/**
|
|
147
|
+
* Recovered RUNNING tasks: their pid, and whether it could be re-verified as
|
|
148
|
+
* the process this dashboard started. A recovered task has no child handle, so
|
|
149
|
+
* this is what the watchdog samples and what a cancel is gated on.
|
|
150
|
+
*/
|
|
151
|
+
private recoveredRuns;
|
|
152
|
+
/**
|
|
153
|
+
* The identity of each task's process (OS start token + live command line at
|
|
154
|
+
* spawn), remembered so every later write of the record keeps it — a record
|
|
155
|
+
* that lost its token could no longer be re-verified after a restart.
|
|
156
|
+
*/
|
|
157
|
+
private identities;
|
|
73
158
|
constructor(opts?: TaskRunnerOptions);
|
|
159
|
+
/**
|
|
160
|
+
* Restore the previous process's task list, logs, and live pids.
|
|
161
|
+
*
|
|
162
|
+
* This is the whole point of the registry: without it, a dashboard restart
|
|
163
|
+
* orphaned a child that kept running while the console forgot it existed.
|
|
164
|
+
*
|
|
165
|
+
* A recovered task whose pid is GONE is settled honestly — with no exit code,
|
|
166
|
+
* because none was ever observed — rather than being left "running" forever or
|
|
167
|
+
* quietly deleted. A recovered task whose pid may belong to someone else is
|
|
168
|
+
* followed and reported, and only stopped once its identity is re-verified.
|
|
169
|
+
*/
|
|
170
|
+
private hydrate;
|
|
171
|
+
/** The restored transcript of a task, capped like the live ring buffer. */
|
|
172
|
+
private restoreLogs;
|
|
173
|
+
/** Write one task's record to the registry (best-effort — never throws). */
|
|
174
|
+
private persist;
|
|
175
|
+
/**
|
|
176
|
+
* Capture the identity of a task's process, for a restart that has to tell it
|
|
177
|
+
* apart from whatever holds that pid later.
|
|
178
|
+
*
|
|
179
|
+
* Read NOW, at spawn, because that is the last moment it is certainly ours. If
|
|
180
|
+
* the read misses (a freshly forked child can take a few milliseconds to appear
|
|
181
|
+
* in the table) it is retried once off the request path; a task that still has
|
|
182
|
+
* no token is followable after a restart but not stoppable, and it SAYS so in
|
|
183
|
+
* its own log rather than failing quietly.
|
|
184
|
+
*/
|
|
185
|
+
private captureIdentity;
|
|
186
|
+
/** Start the liveness watchdog for one task (spawned or recovered). */
|
|
187
|
+
private startWatching;
|
|
188
|
+
/**
|
|
189
|
+
* Settle a RECOVERED task — one with no child handle, so nothing will ever
|
|
190
|
+
* fire an exit event for it. The status is the best evidence available, and the
|
|
191
|
+
* exit code is `null` because none was observed: inventing one would be the
|
|
192
|
+
* exact lie this feature exists to avoid.
|
|
193
|
+
*/
|
|
194
|
+
private settleRecovered;
|
|
74
195
|
/** Subscribe to task events ('log' + 'status'). Returns an unsubscribe fn. */
|
|
75
196
|
onEvent(cb: (id: string, payload: TaskEventPayload) => void): () => void;
|
|
76
197
|
private emit;
|
|
@@ -92,7 +213,36 @@ export declare class TaskRunner {
|
|
|
92
213
|
task?: TaskRecord;
|
|
93
214
|
error?: string;
|
|
94
215
|
};
|
|
95
|
-
|
|
216
|
+
private stopWatching;
|
|
217
|
+
/**
|
|
218
|
+
* One liveness sample for a running task: classify it, flag a hang on the
|
|
219
|
+
* record (and in the log, live), and — only for a task that is not a
|
|
220
|
+
* long-lived server, and only after the grace — stop it.
|
|
221
|
+
*
|
|
222
|
+
* Exported behaviour is reached through the watchdog interval; this method is
|
|
223
|
+
* also the seam a test drives directly.
|
|
224
|
+
*/
|
|
225
|
+
private sampleLiveness;
|
|
226
|
+
/** Stop a task the watchdog has established is hung, and say why. */
|
|
227
|
+
private stopHungTask;
|
|
228
|
+
/**
|
|
229
|
+
* The same, for a task recovered from a previous dashboard process.
|
|
230
|
+
*
|
|
231
|
+
* Gated on the identity verdict. A pid that outlived the process table it came
|
|
232
|
+
* from may now belong to something else, and this runner only ever signals work
|
|
233
|
+
* IT started — so an unverifiable "hang" is reported and left running, and the
|
|
234
|
+
* refusal says why. That is the honest trade: a hung command that keeps running
|
|
235
|
+
* is bad, and stopping a stranger's process is worse.
|
|
236
|
+
*/
|
|
237
|
+
private stopRecoveredHung;
|
|
238
|
+
/**
|
|
239
|
+
* Cancel a running task (SIGTERM). True when a task existed and was signalled.
|
|
240
|
+
*
|
|
241
|
+
* A task recovered from a previous dashboard process has no child handle, so it
|
|
242
|
+
* is stoppable only once its pid was re-verified as the process this dashboard
|
|
243
|
+
* started. A refusal is logged on the task itself (not just returned) so the
|
|
244
|
+
* operator sees it in the pane, with the pid for a manual stop.
|
|
245
|
+
*/
|
|
96
246
|
cancel(id: string): boolean;
|
|
97
247
|
}
|
|
98
248
|
//# sourceMappingURL=task-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/web-dashboard/task-runner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/web-dashboard/task-runner.ts"],"names":[],"mappings":"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"}
|