agent-nuvira 3.5.2 → 3.5.6
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/README.md +66 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +72 -19
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +17 -3
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +63 -22
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/failover-runner.js +4 -4
- package/dist/cli/failover-runner.js.map +1 -1
- package/dist/cli/gateway.js +13 -13
- package/dist/cli/gateway.js.map +1 -1
- package/dist/cli/loop-executor.d.ts +22 -0
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +56 -12
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/stats.d.ts +62 -4
- package/dist/cli/stats.d.ts.map +1 -1
- package/dist/cli/stats.js +282 -5
- package/dist/cli/stats.js.map +1 -1
- package/dist/cli/ui/index.d.ts +2 -2
- package/dist/cli/ui/index.d.ts.map +1 -1
- package/dist/cli/ui/index.js +1 -1
- package/dist/cli/ui/index.js.map +1 -1
- package/dist/cli/ui/presenter.d.ts +43 -0
- package/dist/cli/ui/presenter.d.ts.map +1 -1
- package/dist/cli/ui/presenter.js +88 -1
- package/dist/cli/ui/presenter.js.map +1 -1
- package/dist/config/manager.d.ts +29 -1
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +178 -143
- package/dist/config/manager.js.map +1 -1
- package/dist/config/paths.d.ts +48 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +59 -9
- package/dist/config/paths.js.map +1 -1
- package/dist/config/service-catalog.js +1 -1
- package/dist/config/service-catalog.js.map +1 -1
- package/dist/config/service-probe.js +1 -1
- package/dist/config/service-probe.js.map +1 -1
- package/dist/config/types.d.ts +22 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/gateway/adapters.js +8 -8
- package/dist/gateway/adapters.js.map +1 -1
- package/dist/gateway/registry.js +1 -1
- package/dist/gateway/registry.js.map +1 -1
- package/dist/learning/auto-router.d.ts +30 -4
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +54 -38
- package/dist/learning/auto-router.js.map +1 -1
- package/dist/learning/cost-classification.d.ts +188 -0
- package/dist/learning/cost-classification.d.ts.map +1 -0
- package/dist/learning/cost-classification.js +294 -0
- package/dist/learning/cost-classification.js.map +1 -0
- package/dist/learning/cost-ledger-maintenance.d.ts +122 -0
- package/dist/learning/cost-ledger-maintenance.d.ts.map +1 -0
- package/dist/learning/cost-ledger-maintenance.js +289 -0
- package/dist/learning/cost-ledger-maintenance.js.map +1 -0
- package/dist/learning/cost-reconcile.d.ts +160 -0
- package/dist/learning/cost-reconcile.d.ts.map +1 -0
- package/dist/learning/cost-reconcile.js +238 -0
- package/dist/learning/cost-reconcile.js.map +1 -0
- package/dist/learning/cost-tracker.d.ts +134 -13
- package/dist/learning/cost-tracker.d.ts.map +1 -1
- package/dist/learning/cost-tracker.js +190 -68
- package/dist/learning/cost-tracker.js.map +1 -1
- package/dist/learning/model-pricing.d.ts +240 -0
- package/dist/learning/model-pricing.d.ts.map +1 -0
- package/dist/learning/model-pricing.js +309 -0
- package/dist/learning/model-pricing.js.map +1 -0
- package/dist/learning/model-selection.d.ts +15 -0
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +22 -2
- package/dist/learning/model-selection.js.map +1 -1
- package/dist/learning/model-warmup.d.ts.map +1 -1
- package/dist/learning/model-warmup.js +4 -1
- package/dist/learning/model-warmup.js.map +1 -1
- package/dist/learning/session-store.d.ts +1 -5
- package/dist/learning/session-store.d.ts.map +1 -1
- package/dist/learning/session-store.js +10 -1
- package/dist/learning/session-store.js.map +1 -1
- package/dist/learning/step-checkpoint.d.ts +32 -3
- package/dist/learning/step-checkpoint.d.ts.map +1 -1
- package/dist/learning/step-checkpoint.js +33 -4
- package/dist/learning/step-checkpoint.js.map +1 -1
- package/dist/mcp/settings.d.ts +15 -3
- package/dist/mcp/settings.d.ts.map +1 -1
- package/dist/mcp/settings.js +30 -15
- package/dist/mcp/settings.js.map +1 -1
- package/dist/parity/drivers.d.ts.map +1 -1
- package/dist/parity/drivers.js +31 -5
- package/dist/parity/drivers.js.map +1 -1
- package/dist/tools/child-agent-runtime.d.ts.map +1 -1
- package/dist/tools/child-agent-runtime.js +13 -7
- package/dist/tools/child-agent-runtime.js.map +1 -1
- package/dist/tools/followup-utils.d.ts +36 -0
- package/dist/tools/followup-utils.d.ts.map +1 -1
- package/dist/tools/followup-utils.js +66 -0
- package/dist/tools/followup-utils.js.map +1 -1
- package/dist/tools/modality/browser.js +2 -2
- package/dist/tools/modality/browser.js.map +1 -1
- package/dist/tools/modality/image-gen.d.ts +1 -1
- package/dist/tools/modality/image-gen.js +1 -1
- package/dist/tools/modality/image-providers.js +1 -1
- package/dist/tools/modality/image-providers.js.map +1 -1
- package/dist/tools/modality/vision.d.ts +1 -1
- package/dist/tools/modality/vision.js +1 -1
- package/dist/tools/modality/voice.js +2 -2
- package/dist/tools/modality/voice.js.map +1 -1
- package/dist/tools/neutts-synth.d.ts +3 -3
- package/dist/tools/neutts-synth.js +3 -3
- package/dist/tools/neutts-synth.js.map +1 -1
- package/dist/tools/process-liveness.d.ts +50 -0
- package/dist/tools/process-liveness.d.ts.map +1 -1
- package/dist/tools/process-liveness.js +82 -9
- package/dist/tools/process-liveness.js.map +1 -1
- package/dist/tools/registry.d.ts +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +27 -4
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/run-registry.d.ts.map +1 -1
- package/dist/tools/run-registry.js +14 -1
- package/dist/tools/run-registry.js.map +1 -1
- package/dist/tools/run-terminal.d.ts.map +1 -1
- package/dist/tools/run-terminal.js +18 -1
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +5 -3
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/web-research.d.ts +1 -1
- package/dist/tools/web-research.js +3 -3
- package/dist/tools/web-research.js.map +1 -1
- package/dist/web-dashboard/chat-console.d.ts +56 -0
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +57 -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 +122 -2
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +63 -0
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/web-dashboard/task-runner.d.ts +17 -1
- package/dist/web-dashboard/task-runner.d.ts.map +1 -1
- package/dist/web-dashboard/task-runner.js +84 -9
- package/dist/web-dashboard/task-runner.js.map +1 -1
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/index-DeSsNU94.css +1 -0
- package/src/web-dashboard/public/assets/index-Do_O67Kv.js +236 -0
- package/src/web-dashboard/public/assets/index-Do_O67Kv.js.map +1 -0
- package/src/web-dashboard/public/index.html +2 -2
- package/src/web-dashboard/public/assets/index-DycGBWwy.js +0 -236
- package/src/web-dashboard/public/assets/index-DycGBWwy.js.map +0 -1
- package/src/web-dashboard/public/assets/index-aO3aG7ex.css +0 -1
|
@@ -99,6 +99,72 @@ export function normalizeFollowups(raw, opts) {
|
|
|
99
99
|
}
|
|
100
100
|
return out;
|
|
101
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* A numbered/bulleted line, with its item text captured ("1. do x", "- do x").
|
|
104
|
+
* The prefix is stripped because a followup PROMPT is sent as the next user
|
|
105
|
+
* message — "2. Run the tests" typed verbatim would ask the model about an item
|
|
106
|
+
* of a list it never saw.
|
|
107
|
+
*/
|
|
108
|
+
const LIST_ITEM_LINE = /^\s*(?:[-*\u2022]|\d+[.)])\s+(\S.*)$/;
|
|
109
|
+
/**
|
|
110
|
+
* Recover the next steps a model wrote as a PROSE list instead of calling
|
|
111
|
+
* `suggest_followups`.
|
|
112
|
+
*
|
|
113
|
+
* WHY THIS EXISTS (measured live, 2026-10-14): the contract asks every turn to
|
|
114
|
+
* end with a `suggest_followups` tool call, and a weak model on the JSON
|
|
115
|
+
* transport often writes the same thing as text instead —
|
|
116
|
+
*
|
|
117
|
+
* Would you like me to:
|
|
118
|
+
* 1. Fix the factorial performance issue by adding a limit?
|
|
119
|
+
* 2. Replace the new Function evaluation with a safer alternative?
|
|
120
|
+
* 3. Run the existing test suite to see if these bugs are triggering failures?
|
|
121
|
+
*
|
|
122
|
+
* `nuvira execute` on `local/deepseek-coder` reported 0 tool calls, printed
|
|
123
|
+
* those three options, and offered the user only the generic menu — the model's
|
|
124
|
+
* own suggestions were unreachable, which is the one thing a followup is for.
|
|
125
|
+
* Nothing about that list is ambiguous to a READER, so it should not be
|
|
126
|
+
* ambiguous to the surface either.
|
|
127
|
+
*
|
|
128
|
+
* Deliberately narrow, and deterministic — no LLM:
|
|
129
|
+
* - only the answer's TRAILING list counts. A list in the middle of an
|
|
130
|
+
* explanation is part of the explanation, not a menu;
|
|
131
|
+
* - at least TWO items, each a single line that starts with a number or a
|
|
132
|
+
* bullet on its own line;
|
|
133
|
+
* - the item must follow a LEAD-IN that ends in `:` or `?` ("Would you like me
|
|
134
|
+
* to:", "Which of these should I start with?") — the signal that the list is
|
|
135
|
+
* offered TO the reader. A bare numbered procedure with no lead-in is
|
|
136
|
+
* usually the answer itself and is left alone;
|
|
137
|
+
* - at most MAX_FOLLOWUPS items, cleaned and capped by `normalizeFollowups`,
|
|
138
|
+
* so a recovered list is indistinguishable from a structured one downstream.
|
|
139
|
+
*
|
|
140
|
+
* Returns [] when the pattern does not hold (callers keep their own defaults).
|
|
141
|
+
*/
|
|
142
|
+
export function followupsFromAnswerList(text, opts) {
|
|
143
|
+
const raw = (text ?? '').toString();
|
|
144
|
+
if (!raw.trim())
|
|
145
|
+
return [];
|
|
146
|
+
const lines = raw.split(/\r?\n/);
|
|
147
|
+
// Walk back over trailing blank lines, then over the contiguous run of list
|
|
148
|
+
// items. Anything else stops the scan — the run has to be the answer's END.
|
|
149
|
+
let i = lines.length - 1;
|
|
150
|
+
while (i >= 0 && !lines[i].trim())
|
|
151
|
+
i -= 1;
|
|
152
|
+
const items = [];
|
|
153
|
+
let lead = '';
|
|
154
|
+
for (; i >= 0; i -= 1) {
|
|
155
|
+
const match = LIST_ITEM_LINE.exec(lines[i]);
|
|
156
|
+
if (!match) {
|
|
157
|
+
lead = lines[i].trim();
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
items.unshift(match[1]);
|
|
161
|
+
}
|
|
162
|
+
if (items.length < 2)
|
|
163
|
+
return [];
|
|
164
|
+
if (!/[?:]\s*$/.test(lead))
|
|
165
|
+
return [];
|
|
166
|
+
return normalizeFollowups(items.map((prompt) => ({ prompt })), { limit: Math.min(opts?.limit ?? MAX_FOLLOWUPS, MAX_FOLLOWUPS) });
|
|
167
|
+
}
|
|
102
168
|
/** The prompt behind the "Continue" chip — resumption, explicitly not a restart. */
|
|
103
169
|
export const CONTINUE_PROMPT = 'Continue where the previous turn stopped. Do NOT restart the work that is already done — ' +
|
|
104
170
|
're-read the current state of the files/artifacts first, then finish the remaining steps.';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"followup-utils.js","sourceRoot":"","sources":["../../src/tools/followup-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"followup-utils.js","sourceRoot":"","sources":["../../src/tools/followup-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,10 +75,10 @@ export async function executeBrowserAction(page, action, args) {
|
|
|
75
75
|
if (!args.url)
|
|
76
76
|
return { text: 'browser_open: url is required' };
|
|
77
77
|
// SSRF guard — reuse the read_page policy: block loopback/private/link-local/
|
|
78
|
-
// metadata hosts unless
|
|
78
|
+
// metadata hosts unless NUVIRA_WEB_ALLOW_PRIVATE=1 (same guard, one policy).
|
|
79
79
|
const { isAllowedReadUrl } = await import('../web-research.js');
|
|
80
80
|
if (!isAllowedReadUrl(args.url)) {
|
|
81
|
-
return { text: `browser_open: blocked private/loopback/metadata URL ${args.url} (set
|
|
81
|
+
return { text: `browser_open: blocked private/loopback/metadata URL ${args.url} (set NUVIRA_WEB_ALLOW_PRIVATE=1 to allow)` };
|
|
82
82
|
}
|
|
83
83
|
await page.goto(args.url, { timeout });
|
|
84
84
|
const title = await page.title().catch(() => '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/tools/modality/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkB/E,+EAA+E;AAE/E,IAAI,UAAU,GAAmB,IAAI,CAAC;AACtC,IAAI,SAAS,GAAmB,IAAI,CAAC;AAErC,0DAA0D;AAC1D,MAAM,UAAU,kBAAkB;IAChC,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IAC3C,IAAI,CAAC;QACH,2EAA2E;QAC3E,wEAAwE;QACxE,6DAA6D;QAC7D,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrD,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAyB;IAC3D,SAAS,GAAG,SAAS,CAAC;AACxB,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,wBAAwB;IACtC,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,IAAI,CAAC;IACjB,eAAe,EAAE,CAAC;AACpB,CAAC;AAaD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAqB,EACrB,MAAqB,EACrB,IAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACxC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC;YAChE,8EAA8E;YAC9E,
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/tools/modality/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - **Google Gemini / Imagen ("Nano Banana")** — `GEMINI_API_KEY` / `GOOGLE_API_KEY`
|
|
7
7
|
* - **OpenAI DALL·E / gpt-image** — `OPENAI_API_KEY`
|
|
8
8
|
* - **Stability AI** — `STABILITY_API_KEY`
|
|
9
|
-
* - **Local ComfyUI / Stable Diffusion** — `
|
|
9
|
+
* - **Local ComfyUI / Stable Diffusion** — `NUVIRA_IMAGE_API_URL`
|
|
10
10
|
* - **Pollinations.ai** — free, keyless default + fallback.
|
|
11
11
|
*
|
|
12
12
|
* Priority: an explicit provider (`opts.provider` or `modality.image.provider`)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - **Google Gemini / Imagen ("Nano Banana")** — `GEMINI_API_KEY` / `GOOGLE_API_KEY`
|
|
7
7
|
* - **OpenAI DALL·E / gpt-image** — `OPENAI_API_KEY`
|
|
8
8
|
* - **Stability AI** — `STABILITY_API_KEY`
|
|
9
|
-
* - **Local ComfyUI / Stable Diffusion** — `
|
|
9
|
+
* - **Local ComfyUI / Stable Diffusion** — `NUVIRA_IMAGE_API_URL`
|
|
10
10
|
* - **Pollinations.ai** — free, keyless default + fallback.
|
|
11
11
|
*
|
|
12
12
|
* Priority: an explicit provider (`opts.provider` or `modality.image.provider`)
|
|
@@ -137,7 +137,7 @@ async function stabilityGenerate(req) {
|
|
|
137
137
|
async function comfyuiGenerate(req) {
|
|
138
138
|
const url = req.endpoint ?? localImageEndpoint();
|
|
139
139
|
if (!url)
|
|
140
|
-
throw new Error('local image endpoint (
|
|
140
|
+
throw new Error('local image endpoint (NUVIRA_IMAGE_API_URL) is not configured');
|
|
141
141
|
const res = await fetch(url, {
|
|
142
142
|
method: 'POST',
|
|
143
143
|
headers: { 'content-type': 'application/json' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-providers.js","sourceRoot":"","sources":["../../../src/tools/modality/image-providers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"image-providers.js","sourceRoot":"","sources":["../../../src/tools/modality/image-providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* `describe_image(path, prompt?)` describes an image using:
|
|
5
5
|
* 1. Local **llava / llama3.2-vision** via Ollama (the existing local
|
|
6
6
|
* adapter's HTTP API — `/api/generate` with base64 images), or
|
|
7
|
-
* 2. The free **Gemini vision** tier when
|
|
7
|
+
* 2. The free **Gemini vision** tier when NUVIRA_GEMINI_API_KEY is set.
|
|
8
8
|
*
|
|
9
9
|
* Availability: true when Ollama answers the `/api/tags` probe OR a Gemini key
|
|
10
10
|
* is present. The Ollama probe is injectable so tests run without a server.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* `describe_image(path, prompt?)` describes an image using:
|
|
5
5
|
* 1. Local **llava / llama3.2-vision** via Ollama (the existing local
|
|
6
6
|
* adapter's HTTP API — `/api/generate` with base64 images), or
|
|
7
|
-
* 2. The free **Gemini vision** tier when
|
|
7
|
+
* 2. The free **Gemini vision** tier when NUVIRA_GEMINI_API_KEY is set.
|
|
8
8
|
*
|
|
9
9
|
* Availability: true when Ollama answers the `/api/tags` probe OR a Gemini key
|
|
10
10
|
* is present. The Ollama probe is injectable so tests run without a server.
|
|
@@ -80,11 +80,11 @@ export async function speak(text, opts = {}, exec = defaultExec) {
|
|
|
80
80
|
}
|
|
81
81
|
// Piper fallback — piper reads the text on STDIN.
|
|
82
82
|
if (!usePiper()) {
|
|
83
|
-
return { ok: false, error: 'voice: piper needs
|
|
83
|
+
return { ok: false, error: 'voice: piper needs NUVIRA_PIPER_MODEL (path to a .onnx voice)' };
|
|
84
84
|
}
|
|
85
85
|
const model = opts.piperModel || envBuff('PIPER_MODEL');
|
|
86
86
|
if (!model)
|
|
87
|
-
return { ok: false, error: 'voice: piper needs
|
|
87
|
+
return { ok: false, error: 'voice: piper needs NUVIRA_PIPER_MODEL (path to a .onnx voice)' };
|
|
88
88
|
const out = join(process.env.TMPDIR || '/tmp', `${safeArtifactName('tts', '.wav')}`);
|
|
89
89
|
exec('piper', ['-m', model, '--output_file', out], { timeout: 60000, input: text });
|
|
90
90
|
const file = writeArtifact('audio', safeArtifactName('speech', '.wav'), readFileSync(out), opts.cwd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../../../src/tools/modality/voice.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../../../src/tools/modality/voice.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
* returned it as a successful synthesis with duration/voice/text metadata. Anything
|
|
14
14
|
* downstream — a gateway that sends the file, an agent that reports "the audio is
|
|
15
15
|
* ready" — then acted on silence that looked like speech. Silence is now an
|
|
16
|
-
* explicit opt-in (
|
|
16
|
+
* explicit opt-in (NUVIRA_NEUTTS_ALLOW_SILENT) and never the default.
|
|
17
17
|
*
|
|
18
18
|
* See TOOL_TRUTHFULNESS_TRACKER.md finding #5.
|
|
19
19
|
*/
|
|
20
20
|
import { type ToolRefusal } from './tool-refusal.js';
|
|
21
21
|
/**
|
|
22
22
|
* Whether a silent placeholder WAV may stand in for speech. Opt-in only
|
|
23
|
-
* (`
|
|
23
|
+
* (`NUVIRA_NEUTTS_ALLOW_SILENT=1`) — the point of the refusal is that silence must
|
|
24
24
|
* never be mistaken for synthesis. Exported for tests.
|
|
25
25
|
*/
|
|
26
26
|
export declare function allowSilentFallback(): boolean;
|
|
@@ -41,7 +41,7 @@ export interface SynthesisResult {
|
|
|
41
41
|
ok: boolean;
|
|
42
42
|
/**
|
|
43
43
|
* True when the audio is a silent placeholder rather than synthesised speech.
|
|
44
|
-
* Only ever set behind the
|
|
44
|
+
* Only ever set behind the NUVIRA_NEUTTS_ALLOW_SILENT opt-in.
|
|
45
45
|
*/
|
|
46
46
|
silent?: boolean;
|
|
47
47
|
code?: ToolRefusal['code'];
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* returned it as a successful synthesis with duration/voice/text metadata. Anything
|
|
14
14
|
* downstream — a gateway that sends the file, an agent that reports "the audio is
|
|
15
15
|
* ready" — then acted on silence that looked like speech. Silence is now an
|
|
16
|
-
* explicit opt-in (
|
|
16
|
+
* explicit opt-in (NUVIRA_NEUTTS_ALLOW_SILENT) and never the default.
|
|
17
17
|
*
|
|
18
18
|
* See TOOL_TRUTHFULNESS_TRACKER.md finding #5.
|
|
19
19
|
*/
|
|
@@ -26,7 +26,7 @@ import { envBuff } from '../config/paths.js';
|
|
|
26
26
|
import { refusalFields } from './tool-refusal.js';
|
|
27
27
|
/**
|
|
28
28
|
* Whether a silent placeholder WAV may stand in for speech. Opt-in only
|
|
29
|
-
* (`
|
|
29
|
+
* (`NUVIRA_NEUTTS_ALLOW_SILENT=1`) — the point of the refusal is that silence must
|
|
30
30
|
* never be mistaken for synthesis. Exported for tests.
|
|
31
31
|
*/
|
|
32
32
|
export function allowSilentFallback() {
|
|
@@ -67,7 +67,7 @@ export class NeuTTSSynthesizer {
|
|
|
67
67
|
// it — a silent WAV reported as a successful synthesis is a lie the caller
|
|
68
68
|
// cannot detect, so it is never the default.
|
|
69
69
|
if (allowSilentFallback()) {
|
|
70
|
-
logger.warn(`[neutts] writing SILENT placeholder audio (
|
|
70
|
+
logger.warn(`[neutts] writing SILENT placeholder audio (NUVIRA_NEUTTS_ALLOW_SILENT is set) — ${failureReason}`);
|
|
71
71
|
return this.synthesizeLocal(text, voice, audioPath, options);
|
|
72
72
|
}
|
|
73
73
|
// 3. Refuse: say what is missing and what to use instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neutts-synth.js","sourceRoot":"","sources":["../../src/tools/neutts-synth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACzC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,CAAC;AAClD,CAAC;AA8BD,4EAA4E;AAE5E,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAe;IACrB,SAAS,CAAS;IAE1B,YAAY,SAAuB,EAAE;QACnC,IAAI,CAAC,MAAM,GAAG;YACZ,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;YACzD,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,SAAS;SAC/C,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,IAAY,EACZ,UAA+E,EAAE;QAEjF,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,YAAa,CAAC;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC;QAE1D,+CAA+C;QAC/C,IAAI,aAAa,GAAG,mDAAmD,CAAC;QACxE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,aAAa,GAAG,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnG,MAAM,CAAC,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,gFAAgF;QAChF,8EAA8E;QAC9E,gDAAgD;QAChD,IAAI,mBAAmB,EAAE,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"neutts-synth.js","sourceRoot":"","sources":["../../src/tools/neutts-synth.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,6 +123,10 @@ export declare function parseWindowsProcessTable(stdout: string): ProcessTable;
|
|
|
123
123
|
* themselves can contain commas — so the header is the only reliable index.
|
|
124
124
|
*/
|
|
125
125
|
export declare function parseWmicProcessTable(stdout: string): ProcessTable;
|
|
126
|
+
export declare function lastProbeBlockedWindow(): {
|
|
127
|
+
from: number;
|
|
128
|
+
until: number;
|
|
129
|
+
};
|
|
126
130
|
/**
|
|
127
131
|
* One process table read, for a caller that needs the SAME view several times.
|
|
128
132
|
*
|
|
@@ -174,6 +178,20 @@ export declare function lookupProcess(pid: number): {
|
|
|
174
178
|
command: string | null;
|
|
175
179
|
startedAtText: string | null;
|
|
176
180
|
} | null;
|
|
181
|
+
/**
|
|
182
|
+
* How much of a quiet window `[quietFrom, quietUntil]` fell inside a window in
|
|
183
|
+
* which the monitor could not observe output at all.
|
|
184
|
+
*
|
|
185
|
+
* That part of the silence is not evidence: an output byte produced while the
|
|
186
|
+
* observer's event loop was blocked is timestamped only once the loop is free
|
|
187
|
+
* again, so it shows up as silence that never happened. Pure, so the overlap can
|
|
188
|
+
* be asserted directly (see `lastProbeBlockedWindow` for where the blocked
|
|
189
|
+
* window comes from).
|
|
190
|
+
*/
|
|
191
|
+
export declare function unobservedPartOf(quietFrom: number, quietUntil: number, blocked: {
|
|
192
|
+
from: number;
|
|
193
|
+
until: number;
|
|
194
|
+
}): number;
|
|
177
195
|
export interface LivenessInput {
|
|
178
196
|
/** The run still exists (the registry has not seen it exit). */
|
|
179
197
|
alive: boolean;
|
|
@@ -181,6 +199,34 @@ export interface LivenessInput {
|
|
|
181
199
|
bytes: number;
|
|
182
200
|
/** ms since the last output byte (or since the start when nothing came). */
|
|
183
201
|
quietMs: number;
|
|
202
|
+
/**
|
|
203
|
+
* How much of `quietMs` the monitor itself could not have observed — time its
|
|
204
|
+
* own synchronous probe held the event loop (see `lastProbeBlockedWindow`, and
|
|
205
|
+
* `unobservedPartOf` for computing it). SUBTRACTED before any verdict is made:
|
|
206
|
+
* silence we were blind for is not the command's silence. Optional, and 0 by
|
|
207
|
+
* default, because a caller that knows it was watching the whole time has
|
|
208
|
+
* nothing to subtract.
|
|
209
|
+
*/
|
|
210
|
+
unobservedMs?: number;
|
|
211
|
+
/**
|
|
212
|
+
* Output bytes that arrived SINCE THE PREVIOUS SAMPLE.
|
|
213
|
+
*
|
|
214
|
+
* This is the load-bearing signal, and it exists because a byte's timestamp is
|
|
215
|
+
* the moment the monitor READ it, not the moment the command wrote it: while a
|
|
216
|
+
* sample holds the event loop (the process-table probe is synchronous — ~10-30ms
|
|
217
|
+
* of `ps`, but ~1s of PowerShell on the windows release runners), everything the
|
|
218
|
+
* command prints queues up unread and is stamped all at once when the loop is
|
|
219
|
+
* free. So measured silence can be an artefact of the observer, and a command
|
|
220
|
+
* printing a line every 80ms was reported in CI as "HUNG — no output for 1s and
|
|
221
|
+
* no CPU in that time". Bytes moved, though. They always move when a command is
|
|
222
|
+
* producing, whatever the clock of the reader says, and they do NOT move when it
|
|
223
|
+
* is genuinely stuck — which is exactly the distinction being made.
|
|
224
|
+
*
|
|
225
|
+
* 0/undefined (nothing arrived, or this is the first sample and there is no
|
|
226
|
+
* baseline) is NOT evidence of anything, so it leaves the CPU and silence rules
|
|
227
|
+
* to decide.
|
|
228
|
+
*/
|
|
229
|
+
bytesSinceLastSample?: number;
|
|
184
230
|
/** ms since the run started. */
|
|
185
231
|
ageMs: number;
|
|
186
232
|
/** CPU ms now, and at the previous sample (null = unmeasurable). */
|
|
@@ -204,6 +250,10 @@ export declare function formatSpan(ms: number): string;
|
|
|
204
250
|
* output recently → working; CPU advancing → working; only then, silence PLUS a
|
|
205
251
|
* measurable absence of CPU → hung. Anything we cannot prove lands in `stalled`,
|
|
206
252
|
* which is reported but never reaped.
|
|
253
|
+
*
|
|
254
|
+
* The silence is the ATTESTED silence: `quietMs` minus the part of it the monitor
|
|
255
|
+
* could not have observed (`unobservedMs`). Silence nobody was watching for is
|
|
256
|
+
* not something to accuse a command of.
|
|
207
257
|
*/
|
|
208
258
|
export declare function classifyLiveness(input: LivenessInput, thresholds?: LivenessThresholds): LivenessVerdict;
|
|
209
259
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-liveness.d.ts","sourceRoot":"","sources":["../../src/tools/process-liveness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,2EAA2E;AAC3E,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhF,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,2BAA2B,EAAE,kBAIzC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,kBAAkB,CAU3F;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASxD;AAED,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,iFAAiF;IACjF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kFAAkF;IAClF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;;;;;;;;OAYG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAanD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAiBnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAyBrE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAgClE;
|
|
1
|
+
{"version":3,"file":"process-liveness.d.ts","sourceRoot":"","sources":["../../src/tools/process-liveness.ts"],"names":[],"mappings":"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"}
|
|
@@ -249,9 +249,51 @@ function readPosixProcessTable() {
|
|
|
249
249
|
}
|
|
250
250
|
return null;
|
|
251
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* The last window in which the process-table probe held the event loop — the
|
|
254
|
+
* time during which this process could not have NOTICED the output a monitored
|
|
255
|
+
* command was producing.
|
|
256
|
+
*
|
|
257
|
+
* It is not bookkeeping for its own sake. The probe is SYNCHRONOUS
|
|
258
|
+
* (`execFileSync`/`execSync`), so while it runs the child's stdout events sit in
|
|
259
|
+
* the queue unread and `lastOutputAt` stays frozen at the last drain. On POSIX
|
|
260
|
+
* `ps` costs ~10-30ms and that is invisible, but on Windows it is a PowerShell
|
|
261
|
+
* start — MEASURED at ~1s on the release runners — which is longer than the
|
|
262
|
+
* silence a watchdog is willing to call a hang. The consequence was REAL and
|
|
263
|
+
* reproduced in CI: a command printing a line every 80ms was reported "HUNG — no
|
|
264
|
+
* output for 1s and no CPU in that time", because the only second of silence in
|
|
265
|
+
* the picture was the watchdog's own blindness. Callers subtract this window from
|
|
266
|
+
* the silence they are willing to hold against a run (see
|
|
267
|
+
* `LivenessInput.unobservedMs`), which is the difference between "it said
|
|
268
|
+
* nothing" and "I was not looking".
|
|
269
|
+
*
|
|
270
|
+
* It is the COMPLEMENT of the byte count (`LivenessInput.bytesSinceLastSample`),
|
|
271
|
+
* which is the primary rule: a run whose output WAS read between two samples is
|
|
272
|
+
* plainly working, and that covers a monitor slow enough to batch its reads. This
|
|
273
|
+
* window covers the other half — a sample that read nothing at all, because its
|
|
274
|
+
* own probe held the loop for the span being judged.
|
|
275
|
+
*
|
|
276
|
+
* The MOST RECENT read only, and that is the one that matters: a tick reads this
|
|
277
|
+
* BEFORE running its own probe, so what it gets is the PREVIOUS probe's block —
|
|
278
|
+
* precisely the block that can have frozen the quiet window it is judging.
|
|
279
|
+
*/
|
|
280
|
+
let lastProbeBlockedFrom = 0;
|
|
281
|
+
let lastProbeBlockedUntil = 0;
|
|
282
|
+
export function lastProbeBlockedWindow() {
|
|
283
|
+
return { from: lastProbeBlockedFrom, until: lastProbeBlockedUntil };
|
|
284
|
+
}
|
|
252
285
|
/** One process table read: pid → { parent, cpu, command }. NEVER cached. */
|
|
253
286
|
function readProcessTable() {
|
|
254
|
-
|
|
287
|
+
const from = Date.now();
|
|
288
|
+
try {
|
|
289
|
+
return process.platform === 'win32' ? readWindowsProcessTable() : readPosixProcessTable();
|
|
290
|
+
}
|
|
291
|
+
finally {
|
|
292
|
+
// Recorded in `finally` so a probe that THREW still reports the time it held
|
|
293
|
+
// the loop — a failed read hides output exactly as well as a slow one.
|
|
294
|
+
lastProbeBlockedFrom = from;
|
|
295
|
+
lastProbeBlockedUntil = Date.now();
|
|
296
|
+
}
|
|
255
297
|
}
|
|
256
298
|
/**
|
|
257
299
|
* One process table read, for a caller that needs the SAME view several times.
|
|
@@ -372,6 +414,22 @@ export function lookupProcess(pid) {
|
|
|
372
414
|
? { found: true, command: row.command, startedAtText: row.startedAtText }
|
|
373
415
|
: { found: false, command: null, startedAtText: null };
|
|
374
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* How much of a quiet window `[quietFrom, quietUntil]` fell inside a window in
|
|
419
|
+
* which the monitor could not observe output at all.
|
|
420
|
+
*
|
|
421
|
+
* That part of the silence is not evidence: an output byte produced while the
|
|
422
|
+
* observer's event loop was blocked is timestamped only once the loop is free
|
|
423
|
+
* again, so it shows up as silence that never happened. Pure, so the overlap can
|
|
424
|
+
* be asserted directly (see `lastProbeBlockedWindow` for where the blocked
|
|
425
|
+
* window comes from).
|
|
426
|
+
*/
|
|
427
|
+
export function unobservedPartOf(quietFrom, quietUntil, blocked) {
|
|
428
|
+
if (blocked.until <= blocked.from)
|
|
429
|
+
return 0;
|
|
430
|
+
const overlap = Math.min(blocked.until, quietUntil) - Math.max(blocked.from, quietFrom);
|
|
431
|
+
return Math.max(0, overlap);
|
|
432
|
+
}
|
|
375
433
|
/** `45s` / `3m 05s` — how long, for a human reading a message. */
|
|
376
434
|
export function formatSpan(ms) {
|
|
377
435
|
const totalSeconds = Math.max(0, Math.round(ms / 1000));
|
|
@@ -391,6 +449,10 @@ export function formatSpan(ms) {
|
|
|
391
449
|
* output recently → working; CPU advancing → working; only then, silence PLUS a
|
|
392
450
|
* measurable absence of CPU → hung. Anything we cannot prove lands in `stalled`,
|
|
393
451
|
* which is reported but never reaped.
|
|
452
|
+
*
|
|
453
|
+
* The silence is the ATTESTED silence: `quietMs` minus the part of it the monitor
|
|
454
|
+
* could not have observed (`unobservedMs`). Silence nobody was watching for is
|
|
455
|
+
* not something to accuse a command of.
|
|
394
456
|
*/
|
|
395
457
|
export function classifyLiveness(input, thresholds = DEFAULT_LIVENESS_THRESHOLDS) {
|
|
396
458
|
if (!input.alive)
|
|
@@ -398,10 +460,21 @@ export function classifyLiveness(input, thresholds = DEFAULT_LIVENESS_THRESHOLDS
|
|
|
398
460
|
// A command seconds old has simply not said anything yet.
|
|
399
461
|
if (input.ageMs < 3_000)
|
|
400
462
|
return { verdict: 'starting', why: 'just started' };
|
|
401
|
-
|
|
463
|
+
// It produced something since we last looked — that is production itself, and
|
|
464
|
+
// it outranks the clock (see `bytesSinceLastSample`: the clock measures when we
|
|
465
|
+
// READ, so it under-reports a command we were too busy to listen to).
|
|
466
|
+
const arrived = input.bytesSinceLastSample ?? 0;
|
|
467
|
+
if (arrived > 0) {
|
|
468
|
+
return {
|
|
469
|
+
verdict: 'working',
|
|
470
|
+
why: `${arrived} bytes of output arrived since the last sample — still producing`,
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
const quietMs = Math.max(0, input.quietMs - Math.max(0, input.unobservedMs ?? 0));
|
|
474
|
+
if (quietMs < thresholds.stallQuietMs) {
|
|
402
475
|
return {
|
|
403
476
|
verdict: 'working',
|
|
404
|
-
why: input.bytes > 0 ? `produced output ${formatSpan(
|
|
477
|
+
why: input.bytes > 0 ? `produced output ${formatSpan(quietMs)} ago` : 'producing output',
|
|
405
478
|
};
|
|
406
479
|
}
|
|
407
480
|
// "the last 0s" reads as nonsense, so a sub-second sample window is reported
|
|
@@ -412,31 +485,31 @@ export function classifyLiveness(input, thresholds = DEFAULT_LIVENESS_THRESHOLDS
|
|
|
412
485
|
if (cpuDelta !== null && cpuDelta >= thresholds.hangCpuFloorMs) {
|
|
413
486
|
return {
|
|
414
487
|
verdict: 'working',
|
|
415
|
-
why: `silent for ${formatSpan(
|
|
488
|
+
why: `silent for ${formatSpan(quietMs)} but still computing — ` +
|
|
416
489
|
`${cpuDelta}ms of CPU in the last ${windowLabel}`,
|
|
417
490
|
};
|
|
418
491
|
}
|
|
419
|
-
if (
|
|
492
|
+
if (quietMs >= thresholds.hangQuietMs) {
|
|
420
493
|
if (cpuDelta !== null) {
|
|
421
494
|
return {
|
|
422
495
|
verdict: 'hung',
|
|
423
|
-
why: `no output for ${formatSpan(
|
|
496
|
+
why: `no output for ${formatSpan(quietMs)} and no CPU in that time ` +
|
|
424
497
|
`(${cpuDelta}ms over the last ${windowLabel}) — it is waiting for something ` +
|
|
425
498
|
`that is not coming (a prompt with no stdin, a lock, or a socket that never answers)`,
|
|
426
499
|
};
|
|
427
500
|
}
|
|
428
501
|
return {
|
|
429
502
|
verdict: 'stalled',
|
|
430
|
-
why: `no output for ${formatSpan(
|
|
503
|
+
why: `no output for ${formatSpan(quietMs)}; CPU is not measurable on this platform, so this is ` +
|
|
431
504
|
`reported rather than treated as a confirmed hang`,
|
|
432
505
|
};
|
|
433
506
|
}
|
|
434
507
|
return {
|
|
435
508
|
verdict: 'stalled',
|
|
436
509
|
why: measurable
|
|
437
|
-
? `quiet for ${formatSpan(
|
|
510
|
+
? `quiet for ${formatSpan(quietMs)} with only ${cpuDelta}ms of CPU in the last ` +
|
|
438
511
|
`${windowLabel} — slowing rather than stopped`
|
|
439
|
-
: `quiet for ${formatSpan(
|
|
512
|
+
: `quiet for ${formatSpan(quietMs)}`,
|
|
440
513
|
};
|
|
441
514
|
}
|
|
442
515
|
/**
|