@riddledc/riddle-proof 0.7.146 → 0.7.147

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 CHANGED
@@ -941,11 +941,14 @@ shape, and errors without rerunning blind.
941
941
 
942
942
  `riddle-proof-loop riddle-poll <job-id> --wait` keeps stdout as JSON and writes
943
943
  human progress lines to stderr while waiting. The JSON result includes
944
- `poll.timed_out`, `poll.elapsed_ms`, `poll.queue_elapsed_ms`, and
945
- `poll.running_without_submission` so delayed dispatch is distinguishable from a
946
- terminal proof failure. If `--wait` exhausts its attempts before a terminal job
947
- status, the command exits non-zero and the result explains the last observed
948
- status and `submitted_at` state.
944
+ `poll.timed_out`, `poll.elapsed_ms`, `poll.queue_elapsed_ms`,
945
+ `poll.pre_submission_elapsed_ms`, and `poll.running_without_submission` so
946
+ delayed dispatch is distinguishable from a terminal proof failure.
947
+ `queue_elapsed_ms` reflects Riddle's `created_at` to `submitted_at` timestamps;
948
+ `pre_submission_elapsed_ms` preserves how long the CLI actually observed the
949
+ job before `submitted_at` appeared. If `--wait` exhausts its attempts before a
950
+ terminal job status, the command exits non-zero and the result explains the
951
+ last observed status and `submitted_at` state.
949
952
 
950
953
  ## Base vs OpenClaw Wrapper Boundary
951
954
 
@@ -279,6 +279,7 @@ function buildPollSnapshot(jobId, job, input) {
279
279
  submitted_at: submittedAt,
280
280
  completed_at: completedAt,
281
281
  queue_elapsed_ms: queueElapsedMs,
282
+ pre_submission_elapsed_ms: Math.max(0, Math.floor(input.preSubmissionElapsedMs ?? 0)),
282
283
  running_without_submission: Boolean(status && !terminal && !submittedAt)
283
284
  };
284
285
  }
@@ -286,7 +287,8 @@ function pollMessage(snapshot, timedOut) {
286
287
  if (!timedOut) return void 0;
287
288
  const submitted = snapshot.submitted_at || "not submitted";
288
289
  const queue = snapshot.queue_elapsed_ms !== null ? ` queue_elapsed_ms=${snapshot.queue_elapsed_ms}` : "";
289
- return `Riddle job ${snapshot.job_id} did not reach a terminal status after ${snapshot.attempt} poll attempts; status=${snapshot.status || "unknown"} submitted_at=${submitted}.${queue}`;
290
+ const preSubmit = snapshot.pre_submission_elapsed_ms > 0 ? ` pre_submission_elapsed_ms=${snapshot.pre_submission_elapsed_ms}` : "";
291
+ return `Riddle job ${snapshot.job_id} did not reach a terminal status after ${snapshot.attempt} poll attempts; status=${snapshot.status || "unknown"} submitted_at=${submitted}.${queue}${preSubmit}`;
290
292
  }
291
293
  async function pollRiddleJob(config, jobId, options = {}) {
292
294
  if (!jobId?.trim()) throw new Error("jobId is required");
@@ -298,15 +300,24 @@ async function pollRiddleJob(config, jobId, options = {}) {
298
300
  let lastSnapshot = null;
299
301
  let lastProgressAt = 0;
300
302
  let lastProgressKey = "";
303
+ let preSubmissionElapsedMs = 0;
301
304
  for (let index = 0; index < attempts; index += 1) {
302
305
  job = await riddleRequestJson(config, `/v1/jobs/${jobId}`);
303
306
  const observedAt = Date.now();
304
- lastSnapshot = buildPollSnapshot(jobId, job, {
307
+ const nextSnapshot = buildPollSnapshot(jobId, job, {
305
308
  attempt: index + 1,
306
309
  attempts,
307
310
  startedAt,
308
- observedAt
311
+ observedAt,
312
+ preSubmissionElapsedMs
309
313
  });
314
+ if (nextSnapshot.running_without_submission) {
315
+ preSubmissionElapsedMs = Math.max(preSubmissionElapsedMs, nextSnapshot.elapsed_ms);
316
+ }
317
+ lastSnapshot = {
318
+ ...nextSnapshot,
319
+ pre_submission_elapsed_ms: preSubmissionElapsedMs
320
+ };
310
321
  const progressKey = [
311
322
  lastSnapshot.status || "unknown",
312
323
  lastSnapshot.terminal ? "terminal" : "nonterminal",
package/dist/cli.cjs CHANGED
@@ -6840,6 +6840,7 @@ function buildPollSnapshot(jobId, job, input) {
6840
6840
  submitted_at: submittedAt,
6841
6841
  completed_at: completedAt,
6842
6842
  queue_elapsed_ms: queueElapsedMs,
6843
+ pre_submission_elapsed_ms: Math.max(0, Math.floor(input.preSubmissionElapsedMs ?? 0)),
6843
6844
  running_without_submission: Boolean(status && !terminal && !submittedAt)
6844
6845
  };
6845
6846
  }
@@ -6847,7 +6848,8 @@ function pollMessage(snapshot, timedOut) {
6847
6848
  if (!timedOut) return void 0;
6848
6849
  const submitted = snapshot.submitted_at || "not submitted";
6849
6850
  const queue = snapshot.queue_elapsed_ms !== null ? ` queue_elapsed_ms=${snapshot.queue_elapsed_ms}` : "";
6850
- return `Riddle job ${snapshot.job_id} did not reach a terminal status after ${snapshot.attempt} poll attempts; status=${snapshot.status || "unknown"} submitted_at=${submitted}.${queue}`;
6851
+ const preSubmit = snapshot.pre_submission_elapsed_ms > 0 ? ` pre_submission_elapsed_ms=${snapshot.pre_submission_elapsed_ms}` : "";
6852
+ return `Riddle job ${snapshot.job_id} did not reach a terminal status after ${snapshot.attempt} poll attempts; status=${snapshot.status || "unknown"} submitted_at=${submitted}.${queue}${preSubmit}`;
6851
6853
  }
6852
6854
  async function pollRiddleJob(config, jobId, options = {}) {
6853
6855
  if (!jobId?.trim()) throw new Error("jobId is required");
@@ -6859,15 +6861,24 @@ async function pollRiddleJob(config, jobId, options = {}) {
6859
6861
  let lastSnapshot = null;
6860
6862
  let lastProgressAt = 0;
6861
6863
  let lastProgressKey = "";
6864
+ let preSubmissionElapsedMs = 0;
6862
6865
  for (let index = 0; index < attempts; index += 1) {
6863
6866
  job = await riddleRequestJson(config, `/v1/jobs/${jobId}`);
6864
6867
  const observedAt = Date.now();
6865
- lastSnapshot = buildPollSnapshot(jobId, job, {
6868
+ const nextSnapshot = buildPollSnapshot(jobId, job, {
6866
6869
  attempt: index + 1,
6867
6870
  attempts,
6868
6871
  startedAt,
6869
- observedAt
6872
+ observedAt,
6873
+ preSubmissionElapsedMs
6870
6874
  });
6875
+ if (nextSnapshot.running_without_submission) {
6876
+ preSubmissionElapsedMs = Math.max(preSubmissionElapsedMs, nextSnapshot.elapsed_ms);
6877
+ }
6878
+ lastSnapshot = {
6879
+ ...nextSnapshot,
6880
+ pre_submission_elapsed_ms: preSubmissionElapsedMs
6881
+ };
6871
6882
  const progressKey = [
6872
6883
  lastSnapshot.status || "unknown",
6873
6884
  lastSnapshot.terminal ? "terminal" : "nonterminal",
@@ -14480,7 +14491,7 @@ function formatPollDuration(ms) {
14480
14491
  }
14481
14492
  function riddlePollProgressLine(snapshot) {
14482
14493
  const submittedAt = snapshot.submitted_at || "not-submitted";
14483
- const queuePart = snapshot.running_without_submission ? ` queued_for=${formatPollDuration(snapshot.queue_elapsed_ms)}` : snapshot.queue_elapsed_ms !== null ? ` queue=${formatPollDuration(snapshot.queue_elapsed_ms)}` : "";
14494
+ const queuePart = snapshot.running_without_submission ? ` waiting_for_submit=${formatPollDuration(snapshot.pre_submission_elapsed_ms)}${snapshot.queue_elapsed_ms !== null ? ` queued_for=${formatPollDuration(snapshot.queue_elapsed_ms)}` : ""}` : snapshot.queue_elapsed_ms !== null ? ` queue=${formatPollDuration(snapshot.queue_elapsed_ms)}` : "";
14484
14495
  const terminalPart = snapshot.terminal ? " terminal=true" : "";
14485
14496
  return [
14486
14497
  "[riddle-poll]",
@@ -14759,6 +14770,7 @@ function profileRiddleJobMarkdown(result) {
14759
14770
  const terminal = typeof riddle.terminal === "boolean" ? riddle.terminal : void 0;
14760
14771
  const queueElapsedMs = cliFiniteNumber(riddle.queue_elapsed_ms);
14761
14772
  const elapsedMs3 = cliFiniteNumber(riddle.elapsed_ms);
14773
+ const preSubmissionElapsedMs = cliFiniteNumber(riddle.pre_submission_elapsed_ms);
14762
14774
  const attempt = cliFiniteNumber(riddle.attempt);
14763
14775
  const attempts = cliFiniteNumber(riddle.attempts);
14764
14776
  const submittedAt = cliString(riddle.submitted_at);
@@ -14773,7 +14785,7 @@ function profileRiddleJobMarkdown(result) {
14773
14785
  const lines = parts.length ? [`- ${parts.join(", ")}`] : [];
14774
14786
  if (queueElapsedMs !== void 0 || elapsedMs3 !== void 0 || attempt !== void 0 || attempts !== void 0) {
14775
14787
  lines.push(
14776
- `- poll: queue ${formatPollDuration(queueElapsedMs)}, elapsed ${formatPollDuration(elapsedMs3)}${attempt === void 0 ? "" : `, attempt ${attempt}${attempts === void 0 ? "" : `/${attempts}`}`}`
14788
+ `- poll: queue ${formatPollDuration(queueElapsedMs)}, elapsed ${formatPollDuration(elapsedMs3)}${preSubmissionElapsedMs === void 0 || preSubmissionElapsedMs < 1e3 ? "" : `, pre-submit ${formatPollDuration(preSubmissionElapsedMs)}`}${attempt === void 0 ? "" : `, attempt ${attempt}${attempts === void 0 ? "" : `/${attempts}`}`}`
14777
14789
  );
14778
14790
  }
14779
14791
  if (submittedAt || completedAt) {
@@ -14785,11 +14797,15 @@ function profileRiddleJobMarkdown(result) {
14785
14797
  const splitJobId = cliString(job.job_id);
14786
14798
  const splitStatus = cliString(job.status);
14787
14799
  const splitTerminal = typeof job.terminal === "boolean" ? job.terminal : void 0;
14800
+ const splitElapsedMs = cliFiniteNumber(job.elapsed_ms);
14801
+ const splitPreSubmissionElapsedMs = cliFiniteNumber(job.pre_submission_elapsed_ms);
14788
14802
  lines.push(
14789
14803
  `- ${viewport}: ${[
14790
14804
  splitJobId ? `job ${markdownInlineCode(splitJobId)}` : "",
14791
14805
  splitStatus ? `status ${markdownInlineCode(splitStatus)}` : "",
14792
- splitTerminal === void 0 ? "" : `terminal ${splitTerminal ? "true" : "false"}`
14806
+ splitTerminal === void 0 ? "" : `terminal ${splitTerminal ? "true" : "false"}`,
14807
+ splitElapsedMs === void 0 ? "" : `elapsed ${formatPollDuration(splitElapsedMs)}`,
14808
+ splitPreSubmissionElapsedMs === void 0 || splitPreSubmissionElapsedMs < 1e3 ? "" : `pre-submit ${formatPollDuration(splitPreSubmissionElapsedMs)}`
14793
14809
  ].filter(Boolean).join(", ") || "job metadata unavailable"}`
14794
14810
  );
14795
14811
  }
@@ -15393,6 +15409,7 @@ function withRiddleMetadata(result, input) {
15393
15409
  submitted_at: poll?.submitted_at ?? result.riddle?.submitted_at,
15394
15410
  completed_at: poll?.completed_at ?? result.riddle?.completed_at,
15395
15411
  queue_elapsed_ms: poll?.queue_elapsed_ms ?? result.riddle?.queue_elapsed_ms,
15412
+ pre_submission_elapsed_ms: poll?.pre_submission_elapsed_ms ?? result.riddle?.pre_submission_elapsed_ms,
15396
15413
  elapsed_ms: poll?.elapsed_ms ?? result.riddle?.elapsed_ms,
15397
15414
  attempt: poll?.attempt ?? result.riddle?.attempt,
15398
15415
  attempts: poll?.attempts ?? result.riddle?.attempts,
@@ -15413,6 +15430,7 @@ function riddleMetadataFromPoll(jobId, poll) {
15413
15430
  submitted_at: poll.poll?.submitted_at,
15414
15431
  completed_at: poll.poll?.completed_at,
15415
15432
  queue_elapsed_ms: poll.poll?.queue_elapsed_ms,
15433
+ pre_submission_elapsed_ms: poll.poll?.pre_submission_elapsed_ms,
15416
15434
  elapsed_ms: poll.poll?.elapsed_ms,
15417
15435
  attempt: poll.poll?.attempt,
15418
15436
  attempts: poll.poll?.attempts,
@@ -15461,6 +15479,7 @@ function splitViewportRiddleMetadata(childRuns) {
15461
15479
  status: result.riddle?.status,
15462
15480
  terminal: result.riddle?.terminal,
15463
15481
  queue_elapsed_ms: result.riddle?.queue_elapsed_ms,
15482
+ pre_submission_elapsed_ms: result.riddle?.pre_submission_elapsed_ms,
15464
15483
  elapsed_ms: result.riddle?.elapsed_ms,
15465
15484
  attempt: result.riddle?.attempt,
15466
15485
  attempts: result.riddle?.attempts,
@@ -15472,6 +15491,7 @@ function splitViewportRiddleMetadata(childRuns) {
15472
15491
  status: "split-viewports",
15473
15492
  terminal: childRuns.every(({ result }) => result.riddle?.terminal !== false),
15474
15493
  queue_elapsed_ms: sumDefinedNumbers(splitJobs.map((job) => job.queue_elapsed_ms)),
15494
+ pre_submission_elapsed_ms: sumDefinedNumbers(splitJobs.map((job) => job.pre_submission_elapsed_ms)),
15475
15495
  elapsed_ms: sumDefinedNumbers(splitJobs.map((job) => job.elapsed_ms)),
15476
15496
  split_jobs: splitJobs
15477
15497
  };
package/dist/cli.js CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  createRiddleApiClient,
19
19
  parseRiddleViewport
20
- } from "./chunk-7GHBRZHQ.js";
20
+ } from "./chunk-M3ZTY6PQ.js";
21
21
  import {
22
22
  createDisabledRiddleProofAgentAdapter,
23
23
  readRiddleProofRunStatus,
@@ -146,7 +146,7 @@ function formatPollDuration(ms) {
146
146
  }
147
147
  function riddlePollProgressLine(snapshot) {
148
148
  const submittedAt = snapshot.submitted_at || "not-submitted";
149
- const queuePart = snapshot.running_without_submission ? ` queued_for=${formatPollDuration(snapshot.queue_elapsed_ms)}` : snapshot.queue_elapsed_ms !== null ? ` queue=${formatPollDuration(snapshot.queue_elapsed_ms)}` : "";
149
+ const queuePart = snapshot.running_without_submission ? ` waiting_for_submit=${formatPollDuration(snapshot.pre_submission_elapsed_ms)}${snapshot.queue_elapsed_ms !== null ? ` queued_for=${formatPollDuration(snapshot.queue_elapsed_ms)}` : ""}` : snapshot.queue_elapsed_ms !== null ? ` queue=${formatPollDuration(snapshot.queue_elapsed_ms)}` : "";
150
150
  const terminalPart = snapshot.terminal ? " terminal=true" : "";
151
151
  return [
152
152
  "[riddle-poll]",
@@ -425,6 +425,7 @@ function profileRiddleJobMarkdown(result) {
425
425
  const terminal = typeof riddle.terminal === "boolean" ? riddle.terminal : void 0;
426
426
  const queueElapsedMs = cliFiniteNumber(riddle.queue_elapsed_ms);
427
427
  const elapsedMs = cliFiniteNumber(riddle.elapsed_ms);
428
+ const preSubmissionElapsedMs = cliFiniteNumber(riddle.pre_submission_elapsed_ms);
428
429
  const attempt = cliFiniteNumber(riddle.attempt);
429
430
  const attempts = cliFiniteNumber(riddle.attempts);
430
431
  const submittedAt = cliString(riddle.submitted_at);
@@ -439,7 +440,7 @@ function profileRiddleJobMarkdown(result) {
439
440
  const lines = parts.length ? [`- ${parts.join(", ")}`] : [];
440
441
  if (queueElapsedMs !== void 0 || elapsedMs !== void 0 || attempt !== void 0 || attempts !== void 0) {
441
442
  lines.push(
442
- `- poll: queue ${formatPollDuration(queueElapsedMs)}, elapsed ${formatPollDuration(elapsedMs)}${attempt === void 0 ? "" : `, attempt ${attempt}${attempts === void 0 ? "" : `/${attempts}`}`}`
443
+ `- poll: queue ${formatPollDuration(queueElapsedMs)}, elapsed ${formatPollDuration(elapsedMs)}${preSubmissionElapsedMs === void 0 || preSubmissionElapsedMs < 1e3 ? "" : `, pre-submit ${formatPollDuration(preSubmissionElapsedMs)}`}${attempt === void 0 ? "" : `, attempt ${attempt}${attempts === void 0 ? "" : `/${attempts}`}`}`
443
444
  );
444
445
  }
445
446
  if (submittedAt || completedAt) {
@@ -451,11 +452,15 @@ function profileRiddleJobMarkdown(result) {
451
452
  const splitJobId = cliString(job.job_id);
452
453
  const splitStatus = cliString(job.status);
453
454
  const splitTerminal = typeof job.terminal === "boolean" ? job.terminal : void 0;
455
+ const splitElapsedMs = cliFiniteNumber(job.elapsed_ms);
456
+ const splitPreSubmissionElapsedMs = cliFiniteNumber(job.pre_submission_elapsed_ms);
454
457
  lines.push(
455
458
  `- ${viewport}: ${[
456
459
  splitJobId ? `job ${markdownInlineCode(splitJobId)}` : "",
457
460
  splitStatus ? `status ${markdownInlineCode(splitStatus)}` : "",
458
- splitTerminal === void 0 ? "" : `terminal ${splitTerminal ? "true" : "false"}`
461
+ splitTerminal === void 0 ? "" : `terminal ${splitTerminal ? "true" : "false"}`,
462
+ splitElapsedMs === void 0 ? "" : `elapsed ${formatPollDuration(splitElapsedMs)}`,
463
+ splitPreSubmissionElapsedMs === void 0 || splitPreSubmissionElapsedMs < 1e3 ? "" : `pre-submit ${formatPollDuration(splitPreSubmissionElapsedMs)}`
459
464
  ].filter(Boolean).join(", ") || "job metadata unavailable"}`
460
465
  );
461
466
  }
@@ -1059,6 +1064,7 @@ function withRiddleMetadata(result, input) {
1059
1064
  submitted_at: poll?.submitted_at ?? result.riddle?.submitted_at,
1060
1065
  completed_at: poll?.completed_at ?? result.riddle?.completed_at,
1061
1066
  queue_elapsed_ms: poll?.queue_elapsed_ms ?? result.riddle?.queue_elapsed_ms,
1067
+ pre_submission_elapsed_ms: poll?.pre_submission_elapsed_ms ?? result.riddle?.pre_submission_elapsed_ms,
1062
1068
  elapsed_ms: poll?.elapsed_ms ?? result.riddle?.elapsed_ms,
1063
1069
  attempt: poll?.attempt ?? result.riddle?.attempt,
1064
1070
  attempts: poll?.attempts ?? result.riddle?.attempts,
@@ -1079,6 +1085,7 @@ function riddleMetadataFromPoll(jobId, poll) {
1079
1085
  submitted_at: poll.poll?.submitted_at,
1080
1086
  completed_at: poll.poll?.completed_at,
1081
1087
  queue_elapsed_ms: poll.poll?.queue_elapsed_ms,
1088
+ pre_submission_elapsed_ms: poll.poll?.pre_submission_elapsed_ms,
1082
1089
  elapsed_ms: poll.poll?.elapsed_ms,
1083
1090
  attempt: poll.poll?.attempt,
1084
1091
  attempts: poll.poll?.attempts,
@@ -1127,6 +1134,7 @@ function splitViewportRiddleMetadata(childRuns) {
1127
1134
  status: result.riddle?.status,
1128
1135
  terminal: result.riddle?.terminal,
1129
1136
  queue_elapsed_ms: result.riddle?.queue_elapsed_ms,
1137
+ pre_submission_elapsed_ms: result.riddle?.pre_submission_elapsed_ms,
1130
1138
  elapsed_ms: result.riddle?.elapsed_ms,
1131
1139
  attempt: result.riddle?.attempt,
1132
1140
  attempts: result.riddle?.attempts,
@@ -1138,6 +1146,7 @@ function splitViewportRiddleMetadata(childRuns) {
1138
1146
  status: "split-viewports",
1139
1147
  terminal: childRuns.every(({ result }) => result.riddle?.terminal !== false),
1140
1148
  queue_elapsed_ms: sumDefinedNumbers(splitJobs.map((job) => job.queue_elapsed_ms)),
1149
+ pre_submission_elapsed_ms: sumDefinedNumbers(splitJobs.map((job) => job.pre_submission_elapsed_ms)),
1141
1150
  elapsed_ms: sumDefinedNumbers(splitJobs.map((job) => job.elapsed_ms)),
1142
1151
  split_jobs: splitJobs
1143
1152
  };
package/dist/index.cjs CHANGED
@@ -16464,6 +16464,7 @@ function buildPollSnapshot(jobId, job, input) {
16464
16464
  submitted_at: submittedAt,
16465
16465
  completed_at: completedAt,
16466
16466
  queue_elapsed_ms: queueElapsedMs,
16467
+ pre_submission_elapsed_ms: Math.max(0, Math.floor(input.preSubmissionElapsedMs ?? 0)),
16467
16468
  running_without_submission: Boolean(status && !terminal && !submittedAt)
16468
16469
  };
16469
16470
  }
@@ -16471,7 +16472,8 @@ function pollMessage(snapshot, timedOut) {
16471
16472
  if (!timedOut) return void 0;
16472
16473
  const submitted = snapshot.submitted_at || "not submitted";
16473
16474
  const queue = snapshot.queue_elapsed_ms !== null ? ` queue_elapsed_ms=${snapshot.queue_elapsed_ms}` : "";
16474
- return `Riddle job ${snapshot.job_id} did not reach a terminal status after ${snapshot.attempt} poll attempts; status=${snapshot.status || "unknown"} submitted_at=${submitted}.${queue}`;
16475
+ const preSubmit = snapshot.pre_submission_elapsed_ms > 0 ? ` pre_submission_elapsed_ms=${snapshot.pre_submission_elapsed_ms}` : "";
16476
+ return `Riddle job ${snapshot.job_id} did not reach a terminal status after ${snapshot.attempt} poll attempts; status=${snapshot.status || "unknown"} submitted_at=${submitted}.${queue}${preSubmit}`;
16475
16477
  }
16476
16478
  async function pollRiddleJob(config, jobId, options = {}) {
16477
16479
  if (!jobId?.trim()) throw new Error("jobId is required");
@@ -16483,15 +16485,24 @@ async function pollRiddleJob(config, jobId, options = {}) {
16483
16485
  let lastSnapshot = null;
16484
16486
  let lastProgressAt = 0;
16485
16487
  let lastProgressKey = "";
16488
+ let preSubmissionElapsedMs = 0;
16486
16489
  for (let index = 0; index < attempts; index += 1) {
16487
16490
  job = await riddleRequestJson(config, `/v1/jobs/${jobId}`);
16488
16491
  const observedAt = Date.now();
16489
- lastSnapshot = buildPollSnapshot(jobId, job, {
16492
+ const nextSnapshot = buildPollSnapshot(jobId, job, {
16490
16493
  attempt: index + 1,
16491
16494
  attempts,
16492
16495
  startedAt,
16493
- observedAt
16496
+ observedAt,
16497
+ preSubmissionElapsedMs
16494
16498
  });
16499
+ if (nextSnapshot.running_without_submission) {
16500
+ preSubmissionElapsedMs = Math.max(preSubmissionElapsedMs, nextSnapshot.elapsed_ms);
16501
+ }
16502
+ lastSnapshot = {
16503
+ ...nextSnapshot,
16504
+ pre_submission_elapsed_ms: preSubmissionElapsedMs
16505
+ };
16495
16506
  const progressKey = [
16496
16507
  lastSnapshot.status || "unknown",
16497
16508
  lastSnapshot.terminal ? "terminal" : "nonterminal",
package/dist/index.js CHANGED
@@ -77,7 +77,7 @@ import {
77
77
  riddleRequestJson,
78
78
  runRiddleScript,
79
79
  runRiddleServerPreview
80
- } from "./chunk-7GHBRZHQ.js";
80
+ } from "./chunk-M3ZTY6PQ.js";
81
81
  import {
82
82
  DEFAULT_DIAGNOSTIC_ARRAY_LIMIT,
83
83
  DEFAULT_DIAGNOSTIC_HISTORY_LIMIT,
@@ -385,6 +385,7 @@ interface RiddleProofProfileResult {
385
385
  submitted_at?: string | null;
386
386
  completed_at?: string | null;
387
387
  queue_elapsed_ms?: number | null;
388
+ pre_submission_elapsed_ms?: number;
388
389
  elapsed_ms?: number;
389
390
  attempt?: number;
390
391
  attempts?: number;
@@ -395,6 +396,7 @@ interface RiddleProofProfileResult {
395
396
  status?: string | null;
396
397
  terminal?: boolean;
397
398
  queue_elapsed_ms?: number | null;
399
+ pre_submission_elapsed_ms?: number;
398
400
  elapsed_ms?: number;
399
401
  attempt?: number;
400
402
  attempts?: number;
package/dist/profile.d.ts CHANGED
@@ -385,6 +385,7 @@ interface RiddleProofProfileResult {
385
385
  submitted_at?: string | null;
386
386
  completed_at?: string | null;
387
387
  queue_elapsed_ms?: number | null;
388
+ pre_submission_elapsed_ms?: number;
388
389
  elapsed_ms?: number;
389
390
  attempt?: number;
390
391
  attempts?: number;
@@ -395,6 +396,7 @@ interface RiddleProofProfileResult {
395
396
  status?: string | null;
396
397
  terminal?: boolean;
397
398
  queue_elapsed_ms?: number | null;
399
+ pre_submission_elapsed_ms?: number;
398
400
  elapsed_ms?: number;
399
401
  attempt?: number;
400
402
  attempts?: number;
@@ -325,6 +325,7 @@ function buildPollSnapshot(jobId, job, input) {
325
325
  submitted_at: submittedAt,
326
326
  completed_at: completedAt,
327
327
  queue_elapsed_ms: queueElapsedMs,
328
+ pre_submission_elapsed_ms: Math.max(0, Math.floor(input.preSubmissionElapsedMs ?? 0)),
328
329
  running_without_submission: Boolean(status && !terminal && !submittedAt)
329
330
  };
330
331
  }
@@ -332,7 +333,8 @@ function pollMessage(snapshot, timedOut) {
332
333
  if (!timedOut) return void 0;
333
334
  const submitted = snapshot.submitted_at || "not submitted";
334
335
  const queue = snapshot.queue_elapsed_ms !== null ? ` queue_elapsed_ms=${snapshot.queue_elapsed_ms}` : "";
335
- return `Riddle job ${snapshot.job_id} did not reach a terminal status after ${snapshot.attempt} poll attempts; status=${snapshot.status || "unknown"} submitted_at=${submitted}.${queue}`;
336
+ const preSubmit = snapshot.pre_submission_elapsed_ms > 0 ? ` pre_submission_elapsed_ms=${snapshot.pre_submission_elapsed_ms}` : "";
337
+ return `Riddle job ${snapshot.job_id} did not reach a terminal status after ${snapshot.attempt} poll attempts; status=${snapshot.status || "unknown"} submitted_at=${submitted}.${queue}${preSubmit}`;
336
338
  }
337
339
  async function pollRiddleJob(config, jobId, options = {}) {
338
340
  if (!jobId?.trim()) throw new Error("jobId is required");
@@ -344,15 +346,24 @@ async function pollRiddleJob(config, jobId, options = {}) {
344
346
  let lastSnapshot = null;
345
347
  let lastProgressAt = 0;
346
348
  let lastProgressKey = "";
349
+ let preSubmissionElapsedMs = 0;
347
350
  for (let index = 0; index < attempts; index += 1) {
348
351
  job = await riddleRequestJson(config, `/v1/jobs/${jobId}`);
349
352
  const observedAt = Date.now();
350
- lastSnapshot = buildPollSnapshot(jobId, job, {
353
+ const nextSnapshot = buildPollSnapshot(jobId, job, {
351
354
  attempt: index + 1,
352
355
  attempts,
353
356
  startedAt,
354
- observedAt
357
+ observedAt,
358
+ preSubmissionElapsedMs
355
359
  });
360
+ if (nextSnapshot.running_without_submission) {
361
+ preSubmissionElapsedMs = Math.max(preSubmissionElapsedMs, nextSnapshot.elapsed_ms);
362
+ }
363
+ lastSnapshot = {
364
+ ...nextSnapshot,
365
+ pre_submission_elapsed_ms: preSubmissionElapsedMs
366
+ };
356
367
  const progressKey = [
357
368
  lastSnapshot.status || "unknown",
358
369
  lastSnapshot.terminal ? "terminal" : "nonterminal",
@@ -18,6 +18,7 @@ interface RiddlePollProgressSnapshot {
18
18
  submitted_at: string | null;
19
19
  completed_at: string | null;
20
20
  queue_elapsed_ms: number | null;
21
+ pre_submission_elapsed_ms: number;
21
22
  running_without_submission: boolean;
22
23
  }
23
24
  interface RiddlePollSummary extends RiddlePollProgressSnapshot {
@@ -18,6 +18,7 @@ interface RiddlePollProgressSnapshot {
18
18
  submitted_at: string | null;
19
19
  completed_at: string | null;
20
20
  queue_elapsed_ms: number | null;
21
+ pre_submission_elapsed_ms: number;
21
22
  running_without_submission: boolean;
22
23
  }
23
24
  interface RiddlePollSummary extends RiddlePollProgressSnapshot {
@@ -12,7 +12,7 @@ import {
12
12
  riddleRequestJson,
13
13
  runRiddleScript,
14
14
  runRiddleServerPreview
15
- } from "./chunk-7GHBRZHQ.js";
15
+ } from "./chunk-M3ZTY6PQ.js";
16
16
  export {
17
17
  DEFAULT_RIDDLE_API_BASE_URL,
18
18
  DEFAULT_RIDDLE_API_KEY_FILE,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riddledc/riddle-proof",
3
- "version": "0.7.146",
3
+ "version": "0.7.147",
4
4
  "description": "Reusable Riddle Proof contracts and helpers for evidence-backed agent changes.",
5
5
  "license": "MIT",
6
6
  "author": "RiddleDC",