@pentoshi/clai 3.8.33 → 3.8.36

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 (50) hide show
  1. package/dist/agent/task-evidence.d.ts +11 -5
  2. package/dist/agent/task-evidence.js +33 -50
  3. package/dist/agent/task-evidence.js.map +1 -1
  4. package/dist/prompts/embedded.js +2 -2
  5. package/dist/prompts/embedded.js.map +1 -1
  6. package/dist/prompts/system.agent.md +5 -5
  7. package/dist/prompts/system.ask.md +1 -1
  8. package/dist/repl.js +1 -1
  9. package/dist/repl.js.map +1 -1
  10. package/dist/store/history.d.ts +3 -1
  11. package/dist/store/history.js +67 -17
  12. package/dist/store/history.js.map +1 -1
  13. package/dist/tools/command-intent.d.ts +1 -0
  14. package/dist/tools/command-intent.js +65 -0
  15. package/dist/tools/command-intent.js.map +1 -1
  16. package/dist/tools/definitions.js +92 -10
  17. package/dist/tools/definitions.js.map +1 -1
  18. package/dist/tools/http.d.ts +6 -2
  19. package/dist/tools/http.js +113 -62
  20. package/dist/tools/http.js.map +1 -1
  21. package/dist/tools/jobs.d.ts +10 -0
  22. package/dist/tools/jobs.js +78 -2
  23. package/dist/tools/jobs.js.map +1 -1
  24. package/dist/tools/nmap-runner.d.ts +2 -2
  25. package/dist/tools/nmap-runner.js +9 -2
  26. package/dist/tools/nmap-runner.js.map +1 -1
  27. package/dist/tools/output-selection.d.ts +8 -0
  28. package/dist/tools/output-selection.js +59 -0
  29. package/dist/tools/output-selection.js.map +1 -0
  30. package/dist/tools/pentest-workflows.js +22 -1
  31. package/dist/tools/pentest-workflows.js.map +1 -1
  32. package/dist/tools/registry.js +97 -30
  33. package/dist/tools/registry.js.map +1 -1
  34. package/dist/tools/shell.js +1 -1
  35. package/dist/tools/shell.js.map +1 -1
  36. package/dist/tools/web/fetch-core.js +69 -9
  37. package/dist/tools/web/fetch-core.js.map +1 -1
  38. package/dist/tools/web/fetch.d.ts +1 -1
  39. package/dist/tools/web/fetch.js +50 -35
  40. package/dist/tools/web/fetch.js.map +1 -1
  41. package/dist/tools/web/search.js +24 -4
  42. package/dist/tools/web/search.js.map +1 -1
  43. package/dist/tools/web/types.d.ts +12 -2
  44. package/dist/tools/web/types.js +4 -2
  45. package/dist/tools/web/types.js.map +1 -1
  46. package/dist/tui-v2/app/commands/picker-commands.js +8 -14
  47. package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
  48. package/dist/version.generated.d.ts +2 -2
  49. package/dist/version.generated.js +2 -2
  50. package/package.json +1 -1
@@ -3,6 +3,7 @@ import { lookup } from "node:dns/promises";
3
3
  import { Agent } from "undici";
4
4
  import { isBlockedAddress } from "./web/ssrf-guard.js";
5
5
  import { toReadableText } from "./web/readable.js";
6
+ import { selectOutput, } from "./output-selection.js";
6
7
  /** Shared undici agent that skips cert verification (authorized pentest only). */
7
8
  let insecureTlsAgent;
8
9
  function getInsecureTlsAgent() {
@@ -96,9 +97,9 @@ const ALLOWED_METHODS = new Set([
96
97
  ]);
97
98
  /** Browser-like default UA — less fingerprint noise than clai-http-fetch/*. */
98
99
  const DEFAULT_USER_AGENT = "Mozilla/5.0 (compatible; clai/1.0; +https://github.com/pentoshi007/clai) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36";
99
- const DEFAULT_TIMEOUT_MS = 15_000;
100
- const MIN_TIMEOUT_MS = 3_000;
101
- const MAX_TIMEOUT_MS = 60_000;
100
+ const DEFAULT_TIMEOUT_MS = 40_000;
101
+ const MIN_TIMEOUT_MS = 1_000;
102
+ const MAX_TIMEOUT_MS = 1_800_000;
102
103
  /**
103
104
  * Block (or require explicit ownership confirmation for) requests that
104
105
  * target loopback, private, link-local, or cloud-metadata addresses.
@@ -297,6 +298,7 @@ export async function httpFetch(url, options = {}) {
297
298
  let lastNetworkError;
298
299
  let usedUrl = url;
299
300
  let redirectHops = [];
301
+ let responseCleanup;
300
302
  const timeoutMs = clampTimeoutMs(options.timeoutMs);
301
303
  // Status retries only when caller opts in (default 0). Loopback keeps soft
302
304
  // connection-refused retries below regardless of status-retry budget.
@@ -317,6 +319,13 @@ export async function httpFetch(url, options = {}) {
317
319
  const controller = new AbortController();
318
320
  const timer = setTimeout(() => controller.abort(), timeoutMs);
319
321
  const onParentAbort = () => controller.abort();
322
+ const cleanupAttempt = () => {
323
+ clearTimeout(timer);
324
+ if (options.signal) {
325
+ options.signal.removeEventListener("abort", onParentAbort);
326
+ }
327
+ };
328
+ let retainForBody = false;
320
329
  if (options.signal) {
321
330
  if (options.signal.aborted) {
322
331
  throw options.signal.reason ?? new Error("Aborted");
@@ -360,6 +369,8 @@ export async function httpFetch(url, options = {}) {
360
369
  await sleep(retryDelayMs(localAttempts));
361
370
  continue;
362
371
  }
372
+ retainForBody = true;
373
+ responseCleanup = cleanupAttempt;
363
374
  break candidateLoop;
364
375
  }
365
376
  catch (error) {
@@ -392,10 +403,8 @@ export async function httpFetch(url, options = {}) {
392
403
  await sleep(retryDelayMs(localAttempts));
393
404
  }
394
405
  finally {
395
- clearTimeout(timer);
396
- if (options.signal) {
397
- options.signal.removeEventListener("abort", onParentAbort);
398
- }
406
+ if (!retainForBody)
407
+ cleanupAttempt();
399
408
  }
400
409
  }
401
410
  }
@@ -423,44 +432,93 @@ export async function httpFetch(url, options = {}) {
423
432
  let collected = "";
424
433
  let bytesRead = 0;
425
434
  let truncated = false;
426
- const reader = response.body?.getReader();
427
- if (reader) {
428
- try {
429
- while (bytesRead < limit) {
430
- const { done, value } = await reader.read();
431
- if (done)
432
- break;
433
- if (!value)
434
- continue;
435
- const remaining = limit - bytesRead;
436
- if (value.byteLength > remaining) {
437
- collected += decoder.decode(value.subarray(0, remaining), { stream: true });
438
- bytesRead += remaining;
439
- truncated = true;
440
- try {
441
- await reader.cancel();
442
- }
443
- catch {
444
- // ignore — we're abandoning the body deliberately
445
- }
446
- break;
435
+ let bodyReadError;
436
+ try {
437
+ const reader = response.body?.getReader();
438
+ if (reader && options.responsePart === "headers") {
439
+ // Headers-only callers do not need to buffer or decode the body.
440
+ try {
441
+ await reader.cancel();
442
+ }
443
+ catch {
444
+ // The response metadata is still valid if cancellation races socket close.
445
+ }
446
+ finally {
447
+ try {
448
+ reader.releaseLock();
449
+ }
450
+ catch {
451
+ // already released
447
452
  }
448
- collected += decoder.decode(value, { stream: true });
449
- bytesRead += value.byteLength;
450
453
  }
451
- collected += decoder.decode();
452
454
  }
453
- finally {
455
+ else if (reader) {
454
456
  try {
455
- reader.releaseLock();
457
+ for (;;) {
458
+ const { done, value } = await reader.read();
459
+ if (done)
460
+ break;
461
+ if (!value)
462
+ continue;
463
+ const remaining = limit - bytesRead;
464
+ if (remaining <= 0) {
465
+ truncated = true;
466
+ try {
467
+ await reader.cancel();
468
+ }
469
+ catch {
470
+ // ignore — we're abandoning the body deliberately
471
+ }
472
+ break;
473
+ }
474
+ if (value.byteLength > remaining) {
475
+ collected += decoder.decode(value.subarray(0, remaining), { stream: true });
476
+ bytesRead += remaining;
477
+ truncated = true;
478
+ try {
479
+ await reader.cancel();
480
+ }
481
+ catch {
482
+ // ignore — we're abandoning the body deliberately
483
+ }
484
+ break;
485
+ }
486
+ collected += decoder.decode(value, { stream: true });
487
+ bytesRead += value.byteLength;
488
+ }
489
+ collected += decoder.decode();
456
490
  }
457
- catch {
458
- // already released
491
+ finally {
492
+ try {
493
+ reader.releaseLock();
494
+ }
495
+ catch {
496
+ // already released
497
+ }
459
498
  }
460
499
  }
500
+ else {
501
+ collected = "";
502
+ }
461
503
  }
462
- else {
463
- collected = "";
504
+ catch (error) {
505
+ bodyReadError = error;
506
+ }
507
+ finally {
508
+ responseCleanup?.();
509
+ responseCleanup = undefined;
510
+ }
511
+ if (bodyReadError !== undefined) {
512
+ const timedOut = bodyReadError instanceof Error &&
513
+ bodyReadError.name === "AbortError" &&
514
+ !options.signal?.aborted;
515
+ return {
516
+ ok: false,
517
+ output: timedOut
518
+ ? `Request timed out after ${timeoutMs}ms while reading response body`
519
+ : `Response body read failed: ${bodyReadError instanceof Error ? bodyReadError.message : String(bodyReadError)}`,
520
+ exitCode: timedOut ? 124 : options.signal?.aborted ? 130 : 1,
521
+ };
464
522
  }
465
523
  const contentType = response.headers.get("content-type") ?? "";
466
524
  const isBinary = isBinaryContentType(contentType) || isBinaryContent(collected);
@@ -483,12 +541,15 @@ export async function httpFetch(url, options = {}) {
483
541
  redirectHops,
484
542
  lastNetworkError,
485
543
  insecureTls,
544
+ responseMode: options.responseMode ?? "readable",
545
+ responsePart: options.responsePart ?? "full",
486
546
  });
547
+ const output = selectOutput(evidence, options);
487
548
  return {
488
549
  ok: true,
489
- output: evidence,
550
+ output,
490
551
  exitCode: 0,
491
- truncated,
552
+ truncated: truncated || output !== evidence,
492
553
  };
493
554
  }
494
555
  function multiHeader(headers, name) {
@@ -568,33 +629,16 @@ function formatHttpEvidence(input) {
568
629
  else {
569
630
  const ct = input.contentType.toLowerCase();
570
631
  const isHtml = ct.includes("html");
571
- const isJson = ct.includes("json") ||
572
- ct.includes("javascript") ||
573
- ct.includes("xml") ||
574
- ct.startsWith("text/");
575
- // Single representation: readable HTML OR raw text/json — never both.
576
- let bodyText = isHtml
632
+ // Single representation: readable HTML OR raw captured source.
633
+ const bodyText = isHtml && input.responseMode === "readable"
577
634
  ? toReadableText(input.body) || input.body
578
635
  : input.body;
579
- // Error pages: keep status/headers rich, body shorter.
580
- const isError = input.status >= 400;
581
- const bodyCap = isError
582
- ? 3_000
583
- : isHtml
584
- ? 6_000
585
- : isJson
586
- ? 12_000
587
- : 8_000;
588
- // Body is the only intentional truncate — status/headers/redirects stay full.
589
- if (bodyText.length > bodyCap) {
590
- bodyText =
591
- bodyText.slice(0, bodyCap) +
592
- `\n... (body truncated at ${bodyCap.toLocaleString()} chars — headers/status above are complete; re-fetch with higher maxBytes or page if you need more body)`;
636
+ if (input.truncated) {
637
+ lines.push(`${bodyText || "(empty)"}\n... (wire capture stopped at ${input.limit.toLocaleString()} bytes — raise maxBytes for more body)`);
593
638
  }
594
- if (input.truncated && !bodyText.includes("capture truncated")) {
595
- bodyText += `\n... (wire capture stopped at ${input.limit.toLocaleString()} bytes — raise maxBytes for more body)`;
639
+ else {
640
+ lines.push(bodyText || "(empty)");
596
641
  }
597
- lines.push(bodyText || "(empty)");
598
642
  }
599
643
  }
600
644
  if (input.lastNetworkError) {
@@ -606,6 +650,13 @@ function formatHttpEvidence(input) {
606
650
  lines.push(`note: earlier network error during retries: ${err}`);
607
651
  }
608
652
  }
653
+ const bodyMarker = lines.indexOf("Body:");
654
+ if (input.responsePart === "body") {
655
+ return bodyMarker >= 0 ? lines.slice(bodyMarker + 1).join("\n") : "";
656
+ }
657
+ if (input.responsePart === "headers" && bodyMarker >= 0) {
658
+ return lines.slice(0, Math.max(0, bodyMarker - 1)).join("\n");
659
+ }
609
660
  return lines.join("\n");
610
661
  }
611
662
  /** Header-derived stack hints only — never invent products. */
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/tools/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/tools/http.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,8 @@ export interface BackgroundJob {
44
44
  target: string;
45
45
  expiresAt?: string | undefined;
46
46
  } | undefined;
47
+ /** Optional execution deadline for finite durable jobs. */
48
+ timeoutAt?: string | undefined;
47
49
  }
48
50
  interface TailCursor {
49
51
  stream?: "stdout" | "stderr" | "combined";
@@ -64,6 +66,8 @@ export interface StartJobOptions {
64
66
  ownerSessionId?: string | undefined;
65
67
  profile?: string | undefined;
66
68
  estimatedSeconds?: number | undefined;
69
+ /** Stop this finite job after the selected duration. */
70
+ timeoutMs?: number | undefined;
67
71
  authorization?: {
68
72
  target: string;
69
73
  expiresAt?: string | undefined;
@@ -75,11 +79,17 @@ export declare class JobManager {
75
79
  private processes;
76
80
  private writers;
77
81
  private abortControllers;
82
+ private deadlineTimers;
78
83
  private readonly registryPath;
79
84
  constructor(jobsDir?: string);
80
85
  private isDurable;
81
86
  private isLive;
82
87
  private matchesSession;
88
+ private clearJobDeadline;
89
+ /** Reconcile a restored process that no longer has a ChildProcess close event. */
90
+ private refreshJobLiveness;
91
+ /** Arm or restore a persisted finite-job deadline. */
92
+ private scheduleJobDeadline;
83
93
  /**
84
94
  * Register an in-flight tool for stall tracking only.
85
95
  * Never appears in shell.jobs and never touches the durable registry.
@@ -147,6 +147,7 @@ export class JobManager {
147
147
  processes = new Map();
148
148
  writers = new Map();
149
149
  abortControllers = new Map();
150
+ deadlineTimers = new Map();
150
151
  registryPath;
151
152
  constructor(jobsDir = getJobsDir()) {
152
153
  this.jobsDir = jobsDir;
@@ -167,6 +168,45 @@ export class JobManager {
167
168
  // Strict: only this session's durable jobs (never leak other sessions).
168
169
  return job.ownerSessionId === sessionId;
169
170
  }
171
+ clearJobDeadline(id) {
172
+ const timer = this.deadlineTimers.get(id);
173
+ if (timer)
174
+ clearTimeout(timer);
175
+ this.deadlineTimers.delete(id);
176
+ }
177
+ /** Reconcile a restored process that no longer has a ChildProcess close event. */
178
+ refreshJobLiveness(job) {
179
+ if (!this.isLive(job) || this.processes.has(job.id))
180
+ return;
181
+ const identity = processIdentity(job.pid);
182
+ if (processAlive(job.pid) &&
183
+ identity &&
184
+ job.processIdentity &&
185
+ identity === job.processIdentity) {
186
+ return;
187
+ }
188
+ job.status = "lost";
189
+ job.endedAt = new Date().toISOString();
190
+ this.clearJobDeadline(job.id);
191
+ void this.persist();
192
+ }
193
+ /** Arm or restore a persisted finite-job deadline. */
194
+ scheduleJobDeadline(job) {
195
+ this.clearJobDeadline(job.id);
196
+ if (!job.timeoutAt || !this.isLive(job))
197
+ return;
198
+ const timeoutAt = Date.parse(job.timeoutAt);
199
+ if (!Number.isFinite(timeoutAt))
200
+ return;
201
+ const timer = setTimeout(() => {
202
+ this.deadlineTimers.delete(job.id);
203
+ this.refreshJobLiveness(job);
204
+ if (this.isLive(job))
205
+ void this.stopJob(job.id, { graceMs: 1_000 });
206
+ }, Math.max(0, timeoutAt - Date.now()));
207
+ timer.unref?.();
208
+ this.deadlineTimers.set(job.id, timer);
209
+ }
170
210
  /**
171
211
  * Register an in-flight tool for stall tracking only.
172
212
  * Never appears in shell.jobs and never touches the durable registry.
@@ -195,6 +235,8 @@ export class JobManager {
195
235
  }
196
236
  this.abortControllers.delete(id);
197
237
  this.processes.delete(id);
238
+ if (!this.isLive(job))
239
+ this.clearJobDeadline(id);
198
240
  // Drop finished tool-track rows immediately — they are not background jobs.
199
241
  if (!this.isDurable(job) && !this.isLive(job)) {
200
242
  this.jobs.delete(id);
@@ -263,6 +305,11 @@ export class JobManager {
263
305
  ownerSessionId: options?.ownerSessionId ?? "unknown",
264
306
  kind: "durable",
265
307
  ...(options?.name ? { name: options.name } : {}),
308
+ ...(options?.timeoutMs !== undefined
309
+ ? {
310
+ timeoutAt: new Date(Date.now() + Math.max(1_000, Math.floor(options.timeoutMs))).toISOString(),
311
+ }
312
+ : {}),
266
313
  ...(options?.authorization ? { authorization: options.authorization } : {}),
267
314
  };
268
315
  this.jobs.set(id, job);
@@ -368,11 +415,13 @@ export class JobManager {
368
415
  ? setTimeout(() => { void this.stopJob(id, { graceMs: 1_000 }); }, expiresAt - Date.now())
369
416
  : undefined;
370
417
  expiryTimer?.unref?.();
418
+ this.scheduleJobDeadline(job);
371
419
  child.stdout?.on("data", (chunk) => { stdout.append(chunk); job.heartbeatAt = new Date().toISOString(); void this.persist(); });
372
420
  child.stderr?.on("data", (chunk) => { stderr.append(chunk); job.heartbeatAt = new Date().toISOString(); void this.persist(); });
373
421
  child.on("close", (code, signal) => {
374
422
  if (expiryTimer)
375
423
  clearTimeout(expiryTimer);
424
+ this.clearJobDeadline(id);
376
425
  job.exitCode = code ?? undefined;
377
426
  job.signal = signal ?? undefined;
378
427
  job.status = signal ? "killed" : code === 0 ? "exited" : "failed";
@@ -386,6 +435,7 @@ export class JobManager {
386
435
  child.on("error", (error) => {
387
436
  if (expiryTimer)
388
437
  clearTimeout(expiryTimer);
438
+ this.clearJobDeadline(id);
389
439
  const code = error.code ?? "UNKNOWN";
390
440
  stderr.append(`Background process error [${code}]: ${error.message}\n`);
391
441
  job.status = "failed";
@@ -495,6 +545,8 @@ export class JobManager {
495
545
  */
496
546
  listJobs(sessionId) {
497
547
  this.pruneTerminalJobs();
548
+ for (const job of this.jobs.values())
549
+ this.refreshJobLiveness(job);
498
550
  const durable = [...this.jobs.values()].filter((job) => this.isDurable(job) && this.matchesSession(job, sessionId));
499
551
  if (durable.length === 0) {
500
552
  return {
@@ -558,7 +610,10 @@ export class JobManager {
558
610
  }
559
611
  getJob(id) {
560
612
  const resolved = this.resolveJobId(id);
561
- return resolved ? this.jobs.get(resolved) : undefined;
613
+ const job = resolved ? this.jobs.get(resolved) : undefined;
614
+ if (job)
615
+ this.refreshJobLiveness(job);
616
+ return job;
562
617
  }
563
618
  async tailJob(id, bytesOrCursor) {
564
619
  const resolved = this.resolveJobId(id);
@@ -567,8 +622,16 @@ export class JobManager {
567
622
  const known = [...this.jobs.keys()].join(", ") || "none";
568
623
  return { ok: false, output: `Job "${id}" not found. Canonical job IDs: ${known}.`, exitCode: 1 };
569
624
  }
625
+ this.refreshJobLiveness(job);
570
626
  const cursor = typeof bytesOrCursor === "number" ? { bytes: bytesOrCursor } : (bytesOrCursor ?? {});
571
- const stream = cursor.stream ?? "combined";
627
+ const stream = cursor.stream ?? "stdout";
628
+ if (stream === "combined" && cursor.offset !== undefined) {
629
+ return {
630
+ ok: false,
631
+ output: "Incremental offsets are stream-specific. Poll stdout and stderr separately when using offset/nextOffset; combined is snapshot-only.",
632
+ exitCode: 1,
633
+ };
634
+ }
572
635
  const paths = stream === "stderr" ? job.artifacts.stderr.chunks : stream === "stdout" ? job.artifacts.stdout.chunks : [...job.artifacts.stdout.chunks, ...job.artifacts.stderr.chunks];
573
636
  const readablePaths = paths.length > 0 ? paths : [stream === "stderr" ? job.stderrArtifact : job.stdoutArtifact];
574
637
  const path = readablePaths.at(-1);
@@ -629,6 +692,7 @@ export class JobManager {
629
692
  id = resolved;
630
693
  if (job.status !== "running" && job.status !== "starting")
631
694
  return { ok: false, output: `Job "${id}" is already ${job.status}.`, exitCode: 1 };
695
+ this.clearJobDeadline(id);
632
696
  job.status = "stopping";
633
697
  await this.persist();
634
698
  this.abortControllers.get(id)?.abort();
@@ -647,6 +711,8 @@ export class JobManager {
647
711
  const graceful = options?.signal ?? "SIGTERM";
648
712
  if (!send(graceful) && processAlive(pid)) {
649
713
  job.status = "running";
714
+ if (!job.timeoutAt || Date.parse(job.timeoutAt) > Date.now())
715
+ this.scheduleJobDeadline(job);
650
716
  await this.persist();
651
717
  return { ok: false, output: `Failed to signal job "${id}".`, exitCode: 1 };
652
718
  }
@@ -668,6 +734,8 @@ export class JobManager {
668
734
  }
669
735
  if (!stopped) {
670
736
  job.status = "running";
737
+ if (!job.timeoutAt || Date.parse(job.timeoutAt) > Date.now())
738
+ this.scheduleJobDeadline(job);
671
739
  await this.persist();
672
740
  return { ok: false, output: `Job "${id}" remains alive after ${actualSignal}.`, exitCode: 1 };
673
741
  }
@@ -683,11 +751,15 @@ export class JobManager {
683
751
  return { ok: true, output: `Job "${id}" stopped and termination verified (${actualSignal}).` };
684
752
  }
685
753
  getRunningJobs(sessionId) {
754
+ for (const job of this.jobs.values())
755
+ this.refreshJobLiveness(job);
686
756
  return [...this.jobs.values()].filter((job) => this.isDurable(job) &&
687
757
  this.isLive(job) &&
688
758
  this.matchesSession(job, sessionId));
689
759
  }
690
760
  getRecentJobs(limit = 50, sessionId) {
761
+ for (const job of this.jobs.values())
762
+ this.refreshJobLiveness(job);
691
763
  return [...this.jobs.values()]
692
764
  .filter((job) => this.isDurable(job) && this.matchesSession(job, sessionId))
693
765
  .sort((a, b) => b.startedAt.localeCompare(a.startedAt))
@@ -742,11 +814,15 @@ export class JobManager {
742
814
  job.endedAt = new Date().toISOString();
743
815
  }
744
816
  else {
817
+ // The process identity is still verified. Restore any persisted
818
+ // deadline after insertion; an already-expired deadline schedules
819
+ // immediate stopJob(), which verifies termination before marking it.
745
820
  job.status = "running";
746
821
  job.heartbeatAt = new Date().toISOString();
747
822
  }
748
823
  }
749
824
  this.jobs.set(job.id, job);
825
+ this.scheduleJobDeadline(job);
750
826
  }
751
827
  this.pruneTerminalJobs();
752
828
  this.persistSync();