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.
Files changed (108) hide show
  1. package/dist/cli/chat.d.ts +42 -0
  2. package/dist/cli/chat.d.ts.map +1 -1
  3. package/dist/cli/chat.js +240 -16
  4. package/dist/cli/chat.js.map +1 -1
  5. package/dist/cli/edit.d.ts.map +1 -1
  6. package/dist/cli/edit.js +3 -2
  7. package/dist/cli/edit.js.map +1 -1
  8. package/dist/cli/execute.d.ts.map +1 -1
  9. package/dist/cli/execute.js +10 -3
  10. package/dist/cli/execute.js.map +1 -1
  11. package/dist/cli/loop-executor.d.ts +16 -0
  12. package/dist/cli/loop-executor.d.ts.map +1 -1
  13. package/dist/cli/loop-executor.js +9 -0
  14. package/dist/cli/loop-executor.js.map +1 -1
  15. package/dist/cli/plan.d.ts.map +1 -1
  16. package/dist/cli/plan.js +18 -6
  17. package/dist/cli/plan.js.map +1 -1
  18. package/dist/cli/run.d.ts.map +1 -1
  19. package/dist/cli/run.js +23 -8
  20. package/dist/cli/run.js.map +1 -1
  21. package/dist/cli/ui/answer-view.d.ts +38 -0
  22. package/dist/cli/ui/answer-view.d.ts.map +1 -0
  23. package/dist/cli/ui/answer-view.js +72 -0
  24. package/dist/cli/ui/answer-view.js.map +1 -0
  25. package/dist/cli/ui/cards.d.ts +61 -0
  26. package/dist/cli/ui/cards.d.ts.map +1 -0
  27. package/dist/cli/ui/cards.js +141 -0
  28. package/dist/cli/ui/cards.js.map +1 -0
  29. package/dist/cli/ui/highlight.d.ts +32 -0
  30. package/dist/cli/ui/highlight.d.ts.map +1 -0
  31. package/dist/cli/ui/highlight.js +261 -0
  32. package/dist/cli/ui/highlight.js.map +1 -0
  33. package/dist/cli/ui/index.d.ts +21 -0
  34. package/dist/cli/ui/index.d.ts.map +1 -0
  35. package/dist/cli/ui/index.js +14 -0
  36. package/dist/cli/ui/index.js.map +1 -0
  37. package/dist/cli/ui/markdown.d.ts +90 -0
  38. package/dist/cli/ui/markdown.d.ts.map +1 -0
  39. package/dist/cli/ui/markdown.js +292 -0
  40. package/dist/cli/ui/markdown.js.map +1 -0
  41. package/dist/cli/ui/presenter.d.ts +147 -0
  42. package/dist/cli/ui/presenter.d.ts.map +1 -0
  43. package/dist/cli/ui/presenter.js +313 -0
  44. package/dist/cli/ui/presenter.js.map +1 -0
  45. package/dist/cli/ui/render.d.ts +52 -0
  46. package/dist/cli/ui/render.d.ts.map +1 -0
  47. package/dist/cli/ui/render.js +384 -0
  48. package/dist/cli/ui/render.js.map +1 -0
  49. package/dist/cli/ui/theme.d.ts +36 -0
  50. package/dist/cli/ui/theme.d.ts.map +1 -0
  51. package/dist/cli/ui/theme.js +92 -0
  52. package/dist/cli/ui/theme.js.map +1 -0
  53. package/dist/inference/model-entitlement.d.ts +10 -0
  54. package/dist/inference/model-entitlement.d.ts.map +1 -1
  55. package/dist/inference/model-entitlement.js +1 -1
  56. package/dist/inference/model-entitlement.js.map +1 -1
  57. package/dist/learning/auto-router.d.ts +10 -1
  58. package/dist/learning/auto-router.d.ts.map +1 -1
  59. package/dist/learning/auto-router.js +63 -11
  60. package/dist/learning/auto-router.js.map +1 -1
  61. package/dist/learning/reasoning-trace.d.ts +21 -1
  62. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  63. package/dist/learning/reasoning-trace.js.map +1 -1
  64. package/dist/learning/resilient-call.d.ts.map +1 -1
  65. package/dist/learning/resilient-call.js +70 -4
  66. package/dist/learning/resilient-call.js.map +1 -1
  67. package/dist/tools/process-liveness.d.ts +227 -0
  68. package/dist/tools/process-liveness.d.ts.map +1 -0
  69. package/dist/tools/process-liveness.js +486 -0
  70. package/dist/tools/process-liveness.js.map +1 -0
  71. package/dist/tools/registry.d.ts.map +1 -1
  72. package/dist/tools/registry.js +4 -2
  73. package/dist/tools/registry.js.map +1 -1
  74. package/dist/tools/run-registry.d.ts +282 -0
  75. package/dist/tools/run-registry.d.ts.map +1 -0
  76. package/dist/tools/run-registry.js +544 -0
  77. package/dist/tools/run-registry.js.map +1 -0
  78. package/dist/tools/run-terminal.d.ts +100 -2
  79. package/dist/tools/run-terminal.d.ts.map +1 -1
  80. package/dist/tools/run-terminal.js +841 -67
  81. package/dist/tools/run-terminal.js.map +1 -1
  82. package/dist/tools/tool-loop.d.ts +46 -0
  83. package/dist/tools/tool-loop.d.ts.map +1 -1
  84. package/dist/tools/tool-loop.js +115 -2
  85. package/dist/tools/tool-loop.js.map +1 -1
  86. package/dist/web-dashboard/chat-console.d.ts +25 -0
  87. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  88. package/dist/web-dashboard/chat-console.js +16 -1
  89. package/dist/web-dashboard/chat-console.js.map +1 -1
  90. package/dist/web-dashboard/server.d.ts.map +1 -1
  91. package/dist/web-dashboard/server.js +7 -1
  92. package/dist/web-dashboard/server.js.map +1 -1
  93. package/dist/web-dashboard/src/types.d.ts +32 -1
  94. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  95. package/dist/web-dashboard/task-registry.d.ts +98 -0
  96. package/dist/web-dashboard/task-registry.d.ts.map +1 -0
  97. package/dist/web-dashboard/task-registry.js +159 -0
  98. package/dist/web-dashboard/task-registry.js.map +1 -0
  99. package/dist/web-dashboard/task-runner.d.ts +155 -5
  100. package/dist/web-dashboard/task-runner.d.ts.map +1 -1
  101. package/dist/web-dashboard/task-runner.js +505 -14
  102. package/dist/web-dashboard/task-runner.js.map +1 -1
  103. package/package.json +1 -1
  104. package/src/web-dashboard/public/assets/index-DycGBWwy.js +236 -0
  105. package/src/web-dashboard/public/assets/index-DycGBWwy.js.map +1 -0
  106. package/src/web-dashboard/public/index.html +1 -1
  107. package/src/web-dashboard/public/assets/index-Bik91KJh.js +0 -236
  108. 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
- * Timeouts SIGTERM the child, then SIGKILL after a grace period. Logs are
15
- * ring-buffered (capped) so a chatty command can't exhaust memory. All state
16
- * is in-memory (P4: persist task history + rerun).
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
- export type TaskStatus = 'running' | 'done' | 'failed' | 'cancelled' | 'timeout' | 'error';
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
- /** Cancel a running task (SIGTERM). True when a task existed. */
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;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3F,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAuBD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,sCAAsC;IACtC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrG;AAED,qBAAa,UAAU;IAQT,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAA8D;gBAElD,IAAI,GAAE,iBAAsB;IAEzD,8EAA8E;IAC9E,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI;IAKxE,OAAO,CAAC,IAAI;IAUZ,wEAAwE;IACxE,QAAQ,IAAI,MAAM;IAMlB,0EAA0E;IAC1E,IAAI,IAAI,UAAU,EAAE;IAIpB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIvC,OAAO,CAAC,SAAS;IAajB;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,UAAU,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAmI1H,iEAAiE;IACjE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAW5B"}
1
+ {"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/web-dashboard/task-runner.ts"],"names":[],"mappings":"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"}