denpex-mcp 0.2.29 → 0.2.30

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 (2) hide show
  1. package/dist/index.js +40 -38
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -6763,40 +6763,42 @@ function Pd(e) {
6763
6763
  function Ti(e, t) {
6764
6764
  let r = /independent (?:mini)?batch/i.test(t) && /\b\w+\s*-=\s*[^\n;]*\.grad\b/.test(t) && /MISSING_ZERO_GRAD/i.test(String(e.failureType || ""));
6765
6765
  r && e.awaitingEvidence !== true && (e.action = "Manual action required: Clear the affected leaf tensor gradients before backward on each independent minibatch. For tensors updated directly with their .grad, set each affected tensor.grad = None before computing the next gradient. If an optimizer owns those parameters, use that existing optimizer to clear its gradients instead. Do not clear between intentionally accumulated microbatches.", e.verificationCommand = "Repeat multiple independent minibatches with different targets. Compare each gradient and parameter update with the per-minibatch reference from identical initial state. Confirm no previous batch gradient leaks into the next update; finite loss alone is insufficient.", e.fallbackAction = null, e.emergencyAction = null, e.codeFix = null, e.confidenceDisplay = null, e.repairVerified = false);
6766
- let i = r && e.awaitingEvidence !== true, n = () => {
6767
- for (let h of ["fallbackAction", "emergencyAction", "codeFix", "steps", "remediationScript", "recoveryScript", "nextAction"]) e[h] = null;
6766
+ let i = r && e.awaitingEvidence !== true, n = t.match(/MaxRSS\s*=\s*(\d+(?:\.\d+)?)G/i), o = t.match(/ReqMem\s*=\s*(\d+(?:\.\d+)?)G/i);
6767
+ n && o && Number(n[1]) <= Number(o[1]) && /cgroup.*out of memory|State=OUT_OF_MEMORY/i.test(t) && (e.summary = "The scheduler and cgroup report a host-memory OOM kill. The reported MaxRSS does not exceed the requested memory value, so those two numbers alone do not prove the instantaneous limit breach. Check the enforced cgroup limit, memory peak and sampling scope before choosing new headroom.", i = true), /Xid\s*74/i.test(t) && /Xid\s*79/i.test(t) && /earlier|before/i.test(t) && !/confirmed initiator|isolated reproduction|verified causal/i.test(t) && (e.summary = "An earlier Xid 79 and inaccessible peer are a candidate initiating fault for the affected pair. The local Xid 74 may be secondary, but event timing alone does not confirm that causal relationship.", e.action = "Read-only evidence required: Map the GPU UUIDs, PCI bus IDs and affected NVLink or fabric path for the exact peer pair. Compare first-error timestamps, peer logs and link counters before assigning the initiating device. Preserve evidence and obtain owner approval for any scoped containment; do not reset or reboot a node based on chronology alone.", e.awaitingEvidence = true, e.clarifyingQuestions = ["Do the exact GPU identities and topology confirm that the inaccessible device is on the affected path, and do peer logs or link counters corroborate propagation?"], e.needsEvidence = e.clarifyingQuestions, e.fallbackAction = null, e.emergencyAction = null, i = true), /Xid\s*119/i.test(t) && /driver upgrade|after.*upgrade/i.test(t) && !/\b\d{3}\.\d{2}(?:\.\d+)?\b/.test(t) && (e.summary = "A GSP RPC timeout followed a driver change. This supports investigating the software or firmware change, but does not establish exact version compatibility or prove a physical GPU fault.", e.action = "Read-only compatibility review required: Supply the exact previous and installed driver, firmware and GPU architecture, plus a matched known-good workload result. Check documented compatibility and supported recovery for that tuple before an owner-approved version change. Do not disable GSP or roll back an unspecified driver from this evidence alone.", e.awaitingEvidence = true, e.clarifyingQuestions = ["What are the exact previous and installed driver and firmware versions and GPU architecture, and was the same workload checked on the known-good node?"], e.needsEvidence = e.clarifyingQuestions, e.fallbackAction = null, e.emergencyAction = null, i = true);
6768
+ let a = () => {
6769
+ for (let _ of ["fallbackAction", "emergencyAction", "codeFix", "steps", "remediationScript", "recoveryScript", "nextAction"]) e[_] = null;
6768
6770
  e.resumeFrom = null;
6769
- }, o = Tn(t);
6770
- /compile|Inductor/i.test(t) && /alpha\s*=|lerp/i.test(t) && /tl\.fma|generated.*arithmetic|drops?.*alpha|omits?.*alpha/i.test(t) && /eager/i.test(t) && /ratio\s*=\s*1\b|eager.*correct|eager.*clean/i.test(t) && (e.action = "Manual temporary workaround required: Run the affected optimizer update eagerly, using the same inputs and optimizer state as the successful eager control. Do not keep an arithmetic rewrite compiled and call it fixed without inspecting the generated arithmetic and checking outputs, gradients and state updates. A lerp rewrite can be affected by the same scalar-fusion defect. Confirm an upstream matcher fix is present in the installed build before re-enabling compilation.", e.verificationCommand = "Compare affected optimizer outputs and state updates with the eager reference using identical inputs and initial state, including nondefault alpha or lerp weights. Repeat multiple updates and check gradients and losses remain finite. Inspect generated arithmetic if compilation is restored.", n(), i = true), /mO\.strides\[0\]/i.test(t) && /MLA|prefill_context_chunk/i.test(t) && /FA4|flash.attn.*cute/i.test(t) && (e.action = "Manual compatibility check required: This failure concerns the FA4 MLA output layout during context-chunk prefill. Check the installed vLLM and attention dependency revisions for a fix that handles dynamic output strides. Alternatively, select a documented MLA prefill backend supported on the installed GPU and version, then rerun the failing request compositions. Disabling chunked prefill or changing dtype is not an established remedy for this evidence. Do not use an unverified boolean command-line syntax.", e.verificationCommand = "Rerun the original long-context requests and different prompt-length compositions with the same model and precision. Check valid outputs, worker survival and subsequent requests. Record the exact backend and dependency revisions; a short request succeeding is not recovery.", e.needsEvidence = ["Installed vLLM and attention dependency revisions", "Documented MLA prefill backend support for the GPU and installed version"], e.awaitingEvidence = true, n(), i = true), /layer.?norm/i.test(t) && /constant.input|all.ones|torch\.ones/i.test(t) && /non.?zero|saved.mean[^\n]{0,60}(?:low|wrong)|mean[^\n]{0,40}(?:ulp|error)|output[^\n]{0,30}must[^\n]{0,12}zero|normalization invariant failed/i.test(t) && (e.action = "Manual numerical workaround required: Preserve the original normalized dimension, epsilon and intended model computation. Test higher-precision normalization statistics or a centered reference implementation against the affected input on the installed stack. Padding the hidden dimension changes the normalization and increasing epsilon can hide rather than correct a mean error. Use an upstream kernel fix only after confirming it is present in the installed build. Measure the performance cost of any temporary reference implementation.", e.verificationCommand = "For the same shape, check constant-input output against the mathematical reference, then compare nonconstant forward outputs, all intended gradients and parameter updates with an independent high-precision reference over repeated steps. Check recurrence on the original workload. A constant-input forward check alone is insufficient.", n(), i = true), /SDPA|scaled_dot_product_attention/i.test(t) && /cuDNN|CUDNN/i.test(t) && /dQ|query.gradient|grad.*nan/i.test(t) && o && (e.summary = "The supplied backend comparison shows a nonfinite query gradient on cuDNN SDPA while the tested MATH or EFFICIENT control remains finite. The evidence supports a backend-specific discrepancy, not an unobserved sequence shape.", e.action = "Manual scoped backend workaround required: Use the MATH or EFFICIENT SDPA backend that the supplied comparison demonstrated has finite gradients for this exact mask, shape and dtype. Exclude cuDNN SDPA across forward, backward and any checkpoint recomputation. Preserve and restore the previous backend settings when leaving the affected workload. Do not substitute another backend without testing its mask support and numerical results, and do not assume the next stable version includes an upstream fix.", e.verificationCommand = "Repeat the failing mask and sequence shape. Compare outputs, dQ, dK, dV and optimizer updates with the finite reference backend, including checkpoint recomputation if used. Check finite losses and recurrence over repeated training steps, and confirm prior backend settings are restored.", n(), i = true), /compile|compiled/i.test(t) && /eager/i.test(t) && /(?:outputs?|results?|values?|gradients?)[^\n]{0,65}(?:differ|mismatch|unexpected)|(?:differ|mismatch)[^\n]{0,65}(?:outputs?|results?|values?|gradients?)|eager and compiled differ/i.test(t) && !/Triton|tl\.|mO\.strides|LayerNorm|scaled_dot_product_attention|alpha\s*=|lerp|clone\(|add_\(|mul_\(/i.test(t) && !/torch\s*[:=]?\s*\d+\.\d+|PyTorch\s+\d+\.\d+/i.test(t) && (e.summary = "The supplied evidence establishes a compiled versus eager discrepancy, but does not establish its cause.", e.action = "Read-only evidence required: Provide the exact framework and compiler versions, failing operation, shapes, dtypes, precision settings and a minimal reproducer using identical inputs and initial state. Include expected and actual values. Compare eager and compiled outputs and gradients before selecting a correction; input mutation, precision settings and compiler defects require different remedies.", e.awaitingEvidence = true, e.needsEvidence = ["Exact framework and compiler versions", "Minimal failing operation with shapes, dtypes, identical inputs and initial state", "Expected and actual outputs and gradients with precision settings"], e.verificationCommand = null, n(), i = true), /^(?:NCCL_TIMEOUT_UNATTRIBUTED|GLOO_COMMUNICATION_UNATTRIBUTED)$/.test(String(e.failureType || "")) && (e.awaitingEvidence = true, e.needsEvidence = ["First exception and last completed collective on every participating rank", "Matching scheduler exit reasons and transport or GPU events from the failure window"], e.resumeFrom = null, i = true), /checkpoint|inline_container/i.test(t) && /unexpected pos/i.test(t) && !/No space left on device|errno\D{0,8}28|quota exceeded|permission denied|read.only file system/i.test(t) && (e.awaitingEvidence = true, e.needsEvidence = ["Original write exception and errno before the unexpected-position error", "Available capacity, quota and writable mount status for the checkpoint destination"], e.action = "Read-only evidence required: Preserve the original write exception and errno, then check available capacity, quota and write capability on the checkpoint destination. An unexpected-position error alone does not establish disk exhaustion or a complete remedy. Do not delete existing checkpoints or treat an atomic-save change as proof of recovery.", e.fallbackAction = null, e.emergencyAction = null, e.resumeFrom = null, i = true), /UNEVEN_COLLECTIVE_PARTICIPATION/.test(String(e.failureType || "")) && /evaluation|evaluate\(/i.test(t) && /barrier_inside_each_iteration[^\n]*true|barrier\(\)/i.test(t) && (e.action = "Manual code change required: In the supplied uneven evaluation loop, move the explicit barrier outside the per-item loop so every rank reaches the same barrier once after local evaluation. Collect metrics only at that shared point. A DDP join context does not automatically shadow an arbitrary explicit barrier. If the model forward has other synchronized operations, review those separately before allowing uneven iteration counts.", e.verificationCommand = "Run the affected evaluation shard layout and verify every rank reaches the final collective, every intended sample contributes exactly once, and aggregated metrics match a single-process reference. A timeout disappearing after dropping samples is not successful recovery.", e.fallbackAction = null, e.emergencyAction = null, e.codeFix = null, i = true), /sparse/i.test(t) && /backward/i.test(t) && /out of memory/i.test(t) && /dense gradient|dense.*gradient matrix/i.test(t) && (e.action = "Manual implementation review required: The full dense gradient is the allocation that must be avoided. Use a sparse matmul backward implementation that computes value gradients only at the stored nonzero indices without materializing the full dense gradient matrix. Setting requires_grad only on the values is not, by itself, a verified memory fix for every PyTorch version. Validate the chosen implementation on the installed version with a small dense numerical reference for all intended gradients and measure peak memory before scaling up.", e.verificationCommand = "Compare forward values, gradients of sparse nonzero values and the other trainable operand, and parameter updates with a bounded dense reference. Measure peak allocated memory at the affected backward operation. Preserving only the forward output or disabling required gradients is not recovery.", e.fallbackAction = null, e.emergencyAction = null, e.codeFix = null, i = true);
6771
- let a = /* @__PURE__ */ new Set(), s = new Set((t.match(/unrecognized arguments:[^\n]*/gi) || []).flatMap((h) => h.match(/--[A-Za-z][A-Za-z0-9_-]*/g) || [])), c = new Set((t.match(/--[A-Za-z][A-Za-z0-9_-]*/g) || []).filter((h) => !s.has(h)));
6772
- for (let h of ["action", "fallbackAction", "emergencyAction", "verificationCommand", "codeFix"]) {
6773
- let u = e[h];
6774
- if (h !== "action" && u != null && [...a].some((C) => String(JSON.stringify(u) || "").includes(C))) {
6775
- e[h] = null, i = true;
6771
+ }, s = Tn(t);
6772
+ /compile|Inductor/i.test(t) && /alpha\s*=|lerp/i.test(t) && /tl\.fma|generated.*arithmetic|drops?.*alpha|omits?.*alpha/i.test(t) && /eager/i.test(t) && /ratio\s*=\s*1\b|eager.*correct|eager.*clean/i.test(t) && (e.action = "Manual temporary workaround required: Run the affected optimizer update eagerly, using the same inputs and optimizer state as the successful eager control. Do not keep an arithmetic rewrite compiled and call it fixed without inspecting the generated arithmetic and checking outputs, gradients and state updates. A lerp rewrite can be affected by the same scalar-fusion defect. Confirm an upstream matcher fix is present in the installed build before re-enabling compilation.", e.verificationCommand = "Compare affected optimizer outputs and state updates with the eager reference using identical inputs and initial state, including nondefault alpha or lerp weights. Repeat multiple updates and check gradients and losses remain finite. Inspect generated arithmetic if compilation is restored.", a(), i = true), /mO\.strides\[0\]/i.test(t) && /MLA|prefill_context_chunk/i.test(t) && /FA4|flash.attn.*cute/i.test(t) && (e.action = "Manual compatibility check required: This failure concerns the FA4 MLA output layout during context-chunk prefill. Check the installed vLLM and attention dependency revisions for a fix that handles dynamic output strides. Alternatively, select a documented MLA prefill backend supported on the installed GPU and version, then rerun the failing request compositions. Disabling chunked prefill or changing dtype is not an established remedy for this evidence. Do not use an unverified boolean command-line syntax.", e.verificationCommand = "Rerun the original long-context requests and different prompt-length compositions with the same model and precision. Check valid outputs, worker survival and subsequent requests. Record the exact backend and dependency revisions; a short request succeeding is not recovery.", e.needsEvidence = ["Installed vLLM and attention dependency revisions", "Documented MLA prefill backend support for the GPU and installed version"], e.awaitingEvidence = true, a(), i = true), /layer.?norm/i.test(t) && /constant.input|all.ones|torch\.ones/i.test(t) && /non.?zero|saved.mean[^\n]{0,60}(?:low|wrong)|mean[^\n]{0,40}(?:ulp|error)|output[^\n]{0,30}must[^\n]{0,12}zero|normalization invariant failed/i.test(t) && (e.action = "Manual numerical workaround required: Preserve the original normalized dimension, epsilon and intended model computation. Test higher-precision normalization statistics or a centered reference implementation against the affected input on the installed stack. Padding the hidden dimension changes the normalization and increasing epsilon can hide rather than correct a mean error. Use an upstream kernel fix only after confirming it is present in the installed build. Measure the performance cost of any temporary reference implementation.", e.verificationCommand = "For the same shape, check constant-input output against the mathematical reference, then compare nonconstant forward outputs, all intended gradients and parameter updates with an independent high-precision reference over repeated steps. Check recurrence on the original workload. A constant-input forward check alone is insufficient.", a(), i = true), /SDPA|scaled_dot_product_attention/i.test(t) && /cuDNN|CUDNN/i.test(t) && /dQ|query.gradient|grad.*nan/i.test(t) && s && (e.summary = "The supplied backend comparison shows a nonfinite query gradient on cuDNN SDPA while the tested MATH or EFFICIENT control remains finite. The evidence supports a backend-specific discrepancy, not an unobserved sequence shape.", e.action = "Manual scoped backend workaround required: Use the MATH or EFFICIENT SDPA backend that the supplied comparison demonstrated has finite gradients for this exact mask, shape and dtype. Exclude cuDNN SDPA across forward, backward and any checkpoint recomputation. Preserve and restore the previous backend settings when leaving the affected workload. Do not substitute another backend without testing its mask support and numerical results, and do not assume the next stable version includes an upstream fix.", e.verificationCommand = "Repeat the failing mask and sequence shape. Compare outputs, dQ, dK, dV and optimizer updates with the finite reference backend, including checkpoint recomputation if used. Check finite losses and recurrence over repeated training steps, and confirm prior backend settings are restored.", a(), i = true), /compile|compiled/i.test(t) && /eager/i.test(t) && /(?:outputs?|results?|values?|gradients?)[^\n]{0,65}(?:differ|mismatch|unexpected)|(?:differ|mismatch)[^\n]{0,65}(?:outputs?|results?|values?|gradients?)|eager and compiled differ/i.test(t) && !/Triton|tl\.|mO\.strides|LayerNorm|scaled_dot_product_attention|alpha\s*=|lerp|clone\(|add_\(|mul_\(/i.test(t) && !/torch\s*[:=]?\s*\d+\.\d+|PyTorch\s+\d+\.\d+/i.test(t) && (e.summary = "The supplied evidence establishes a compiled versus eager discrepancy, but does not establish its cause.", e.action = "Read-only evidence required: Provide the exact framework and compiler versions, failing operation, shapes, dtypes, precision settings and a minimal reproducer using identical inputs and initial state. Include expected and actual values. Compare eager and compiled outputs and gradients before selecting a correction; input mutation, precision settings and compiler defects require different remedies.", e.awaitingEvidence = true, e.needsEvidence = ["Exact framework and compiler versions", "Minimal failing operation with shapes, dtypes, identical inputs and initial state", "Expected and actual outputs and gradients with precision settings"], e.verificationCommand = null, a(), i = true), /^(?:NCCL_TIMEOUT_UNATTRIBUTED|GLOO_COMMUNICATION_UNATTRIBUTED)$/.test(String(e.failureType || "")) && (e.awaitingEvidence = true, e.needsEvidence = ["First exception and last completed collective on every participating rank", "Matching scheduler exit reasons and transport or GPU events from the failure window"], e.resumeFrom = null, i = true), /checkpoint|inline_container/i.test(t) && /unexpected pos/i.test(t) && !/No space left on device|errno\D{0,8}28|quota exceeded|permission denied|read.only file system/i.test(t) && (e.awaitingEvidence = true, e.needsEvidence = ["Original write exception and errno before the unexpected-position error", "Available capacity, quota and writable mount status for the checkpoint destination"], e.action = "Read-only evidence required: Preserve the original write exception and errno, then check available capacity, quota and write capability on the checkpoint destination. An unexpected-position error alone does not establish disk exhaustion or a complete remedy. Do not delete existing checkpoints or treat an atomic-save change as proof of recovery.", e.fallbackAction = null, e.emergencyAction = null, e.resumeFrom = null, i = true), /UNEVEN_COLLECTIVE_PARTICIPATION/.test(String(e.failureType || "")) && /evaluation|evaluate\(/i.test(t) && /barrier_inside_each_iteration[^\n]*true|barrier\(\)/i.test(t) && (e.action = "Manual code change required: In the supplied uneven evaluation loop, move the explicit barrier outside the per-item loop so every rank reaches the same barrier once after local evaluation. Collect metrics only at that shared point. A DDP join context does not automatically shadow an arbitrary explicit barrier. If the model forward has other synchronized operations, review those separately before allowing uneven iteration counts.", e.verificationCommand = "Run the affected evaluation shard layout and verify every rank reaches the final collective, every intended sample contributes exactly once, and aggregated metrics match a single-process reference. A timeout disappearing after dropping samples is not successful recovery.", e.fallbackAction = null, e.emergencyAction = null, e.codeFix = null, i = true), /sparse/i.test(t) && /backward/i.test(t) && /out of memory/i.test(t) && /dense gradient|dense.*gradient matrix/i.test(t) && (e.action = "Manual implementation review required: The full dense gradient is the allocation that must be avoided. Use a sparse matmul backward implementation that computes value gradients only at the stored nonzero indices without materializing the full dense gradient matrix. Setting requires_grad only on the values is not, by itself, a verified memory fix for every PyTorch version. Validate the chosen implementation on the installed version with a small dense numerical reference for all intended gradients and measure peak memory before scaling up.", e.verificationCommand = "Compare forward values, gradients of sparse nonzero values and the other trainable operand, and parameter updates with a bounded dense reference. Measure peak allocated memory at the affected backward operation. Preserving only the forward output or disabling required gradients is not recovery.", e.fallbackAction = null, e.emergencyAction = null, e.codeFix = null, i = true);
6773
+ let c = /* @__PURE__ */ new Set(), d = new Set((t.match(/unrecognized arguments:[^\n]*/gi) || []).flatMap((_) => _.match(/--[A-Za-z][A-Za-z0-9_-]*/g) || [])), l = new Set((t.match(/--[A-Za-z][A-Za-z0-9_-]*/g) || []).filter((_) => !d.has(_)));
6774
+ for (let _ of ["action", "fallbackAction", "emergencyAction", "verificationCommand", "codeFix"]) {
6775
+ let g = e[_];
6776
+ if (_ !== "action" && g != null && [...c].some((T) => String(JSON.stringify(g) || "").includes(T))) {
6777
+ e[_] = null, i = true;
6776
6778
  continue;
6777
6779
  }
6778
- if (typeof u != "string") continue;
6779
- let _ = u.match(/\b(?:or\s+)?(?:run|launch)\b[^\n]{0,140}\b(?:the|your|this|existing)\s+script\b/i) || u.match(/\bpython(?:3)?\s+(?:"[^"]+\.py"|[^\s`]+\.py)/i);
6780
- if (!_) continue;
6781
- let f = (u.slice(_.index).match(/--[A-Za-z][A-Za-z0-9_-]*/g) || []).filter((C) => !c.has(C));
6782
- if (!f.length) continue;
6783
- for (let C of f) a.add(C);
6784
- let E = u.slice(0, _.index).replace(/[,;]\s*$/, "").trim();
6785
- h === "action" && E.length > 20 && /\b(?:modify|replace|change|use|edit)\b/i.test(E) ? e.action = E + ". Apply the code edit at the failing call site. Exact launch flags for this customer script have not been verified; use its documented interface rather than guessing from Python attribute names." : h === "action" ? (e.action = "Read-only evidence required: Provide the customer script's documented launch arguments before selecting a launch command. The proposed flags were not established by the submitted evidence.", e.awaitingEvidence = true, e.needsEvidence = ["Documented workload launch interface or optimizer parameter ownership and gradient scope"]) : e[h] = null, i = true;
6780
+ if (typeof g != "string") continue;
6781
+ let f = g.match(/\b(?:or\s+)?(?:run|launch)\b[^\n]{0,140}\b(?:the|your|this|existing)\s+script\b/i) || g.match(/\bpython(?:3)?\s+(?:"[^"]+\.py"|[^\s`]+\.py)/i);
6782
+ if (!f) continue;
6783
+ let C = (g.slice(f.index).match(/--[A-Za-z][A-Za-z0-9_-]*/g) || []).filter((T) => !l.has(T));
6784
+ if (!C.length) continue;
6785
+ for (let T of C) c.add(T);
6786
+ let y = g.slice(0, f.index).replace(/[,;]\s*$/, "").trim();
6787
+ _ === "action" && y.length > 20 && /\b(?:modify|replace|change|use|edit)\b/i.test(y) ? e.action = y + ". Apply the code edit at the failing call site. Exact launch flags for this customer script have not been verified; use its documented interface rather than guessing from Python attribute names." : _ === "action" ? (e.action = "Read-only evidence required: Provide the customer script's documented launch arguments before selecting a launch command. The proposed flags were not established by the submitted evidence.", e.awaitingEvidence = true, e.needsEvidence = ["Documented workload launch interface or optimizer parameter ownership and gradient scope"]) : e[_] = null, i = true;
6786
6788
  }
6787
- for (let h of ["steps", "remediationScript", "recoveryScript", "nextAction"]) e[h] != null && [...a].some((u) => String(JSON.stringify(e[h]) || "").includes(u)) && (e[h] = null);
6789
+ for (let _ of ["steps", "remediationScript", "recoveryScript", "nextAction"]) e[_] != null && [...c].some((g) => String(JSON.stringify(e[_]) || "").includes(g)) && (e[_] = null);
6788
6790
  /OutOfMemoryError|CUDA out of memory/i.test(t) && !/inactive_split_bytes[^\n]*[=:]\s*[1-9]|reserved[^\n]*(?:much larger|>>)[^\n]*allocated|fragmentation confirmed/i.test(t) && /expandable_segments|max_split_size_mb|allocator fragmentation/i.test(String(e.action || "")) && (e.action = "Manual evidence-led action required: Address the initiating allocation failure. Inspect live allocations, reserved and inactive split memory, other processes and the failing batch objective. Reduce activation demand only while preserving the intended effective batch and gradients. An OOM alone does not establish fragmentation; allocator tuning is not a confirmed remedy without supporting memory evidence and version compatibility.", e.fallbackAction = null, e.emergencyAction = null, e.codeFix = null, e.repairVerified = false, i = true);
6789
- let l = String(e.action || "");
6790
- /\b(?:roll back|rollback|resume|restore)\b[^.\n]*checkpoint/i.test(l) && !/verified|validate|checksum|integrity/i.test(l) && (e.action = l + " Before choosing a restore point, validate checkpoint integrity, required workload state and software compatibility. An earlier timestamp alone is not recovery proof. Preserve suspect artifacts and do not resume until the required checks pass.", e.repairVerified = false, i = true);
6791
- for (let h of ["action", "fallbackAction", "emergencyAction", "codeFix"]) (typeof e[h] == "string" ? String(e[h]) : "").split(/(?<=[.!?])\s+|\n/).some((g) => /\b(?:discard|delete|wipe)\b[^.\n]*checkpoint/i.test(g) && !/\b(?:do not|don't|never|avoid)\b/i.test(g)) && (e[h] = h === "action" ? "Manual evidence preservation required: Quarantine suspect checkpoints without deleting them. Validate integrity, required training state and a known-good reference before choosing a restore point. A hardware event alone does not prove every subsequent checkpoint is corrupt. Obtain owner approval for any retention cleanup after a usable recovery artifact is preserved." : null, e.repairVerified = false, i = true);
6792
- let m = /modified by an inplace operation|AUTOGRAD_INPLACE_MODIFICATION/i.test(t + " " + String(e.failureType || "")) && /optimizer\.step|opt(?:imizer)?_\w+\.step|optimizer.*modif/i.test(t), p = /generator.loss|generator_loss/i.test(t) && /critic.loss|critic_loss|discriminator.loss/i.test(t) || /shared (?:parameters|forward|graph)|objective_[a-z]|loss_[a-z]\.backward/i.test(t);
6793
- if (m && p) {
6794
- let h = /"optimizer_parameters_overlap"\s*:\s*false/.test(t), u = /"backward_parameter_scope"\s*:\s*\{[^}]+\}/.test(t) && /"zeroing_order"\s*:\s*\[[^\]]+\]/.test(t), _ = "Manual workload verification required: An exception disappearing is not proof of correct training. Check that each optimizer receives only its intended objective gradients, parameter updates match that objective, losses and gradients remain finite, and the failure does not recur. A different objective can accumulate gradients on another optimizer's parameters.";
6795
- e.verificationCommand = _, !h || !u ? (e.action = "Read-only evidence required: The optimizer update before a pending backward pass explains the version error, but a reorder alone can mix objective gradients. Provide the loop including zero_grad, each backward call, each optimizer step, and the parameter sets owned by each optimizer before choosing a complete correction.", e.awaitingEvidence = true, e.needsEvidence = ["Documented workload launch interface or optimizer parameter ownership and gradient scope"], e.clarifyingQuestions = ["Which parameters does each optimizer own, and which objective backward passes write gradients to those parameters?", "Show the zero_grad, backward and step order, including any detach or parameter freezing."]) : (e.action = "Manual code change required: For the confirmed disjoint optimizer parameter sets, compute each objective gradient only with respect to the parameters owned by its optimizer, for example with torch.autograd.grad. Keep the shared forward weights unchanged until all required gradients have been computed. Assign only the intended objective gradients to each optimizer, then step. Do not accumulate a different objective into an optimizer update unless that is the documented intended objective. If ownership or the intended objective changes, review the loop again rather than applying this recipe unchanged.", e.awaitingEvidence = false, e.needsEvidence = []), e.fallbackAction = null, e.emergencyAction = null, e.codeFix = null, i = true;
6791
+ let p = String(e.action || "");
6792
+ /\b(?:roll back|rollback|resume|restore)\b[^.\n]*checkpoint/i.test(p) && !/verified|validate|checksum|integrity/i.test(p) && (e.action = p + " Before choosing a restore point, validate checkpoint integrity, required workload state and software compatibility. An earlier timestamp alone is not recovery proof. Preserve suspect artifacts and do not resume until the required checks pass.", e.repairVerified = false, i = true);
6793
+ for (let _ of ["action", "fallbackAction", "emergencyAction", "codeFix"]) (typeof e[_] == "string" ? String(e[_]) : "").split(/(?<=[.!?])\s+|\n/).some((E) => /\b(?:discard|delete|wipe)\b[^.\n]*checkpoint/i.test(E) && !/\b(?:do not|don't|never|avoid)\b/i.test(E)) && (e[_] = _ === "action" ? "Manual evidence preservation required: Quarantine suspect checkpoints without deleting them. Validate integrity, required training state and a known-good reference before choosing a restore point. A hardware event alone does not prove every subsequent checkpoint is corrupt. Obtain owner approval for any retention cleanup after a usable recovery artifact is preserved." : null, e.repairVerified = false, i = true);
6794
+ let h = /modified by an inplace operation|AUTOGRAD_INPLACE_MODIFICATION/i.test(t + " " + String(e.failureType || "")) && /optimizer\.step|opt(?:imizer)?_\w+\.step|optimizer.*modif/i.test(t), u = /generator.loss|generator_loss/i.test(t) && /critic.loss|critic_loss|discriminator.loss/i.test(t) || /shared (?:parameters|forward|graph)|objective_[a-z]|loss_[a-z]\.backward/i.test(t);
6795
+ if (h && u) {
6796
+ let _ = /"optimizer_parameters_overlap"\s*:\s*false/.test(t), g = /"backward_parameter_scope"\s*:\s*\{[^}]+\}/.test(t) && /"zeroing_order"\s*:\s*\[[^\]]+\]/.test(t), f = "Manual workload verification required: An exception disappearing is not proof of correct training. Check that each optimizer receives only its intended objective gradients, parameter updates match that objective, losses and gradients remain finite, and the failure does not recur. A different objective can accumulate gradients on another optimizer's parameters.";
6797
+ e.verificationCommand = f, !_ || !g ? (e.action = "Read-only evidence required: The optimizer update before a pending backward pass explains the version error, but a reorder alone can mix objective gradients. Provide the loop including zero_grad, each backward call, each optimizer step, and the parameter sets owned by each optimizer before choosing a complete correction.", e.awaitingEvidence = true, e.needsEvidence = ["Documented workload launch interface or optimizer parameter ownership and gradient scope"], e.clarifyingQuestions = ["Which parameters does each optimizer own, and which objective backward passes write gradients to those parameters?", "Show the zero_grad, backward and step order, including any detach or parameter freezing."]) : (e.action = "Manual code change required: For the confirmed disjoint optimizer parameter sets, compute each objective gradient only with respect to the parameters owned by its optimizer, for example with torch.autograd.grad. Keep the shared forward weights unchanged until all required gradients have been computed. Assign only the intended objective gradients to each optimizer, then step. Do not accumulate a different objective into an optimizer update unless that is the documented intended objective. If ownership or the intended objective changes, review the loop again rather than applying this recipe unchanged.", e.awaitingEvidence = false, e.needsEvidence = []), e.fallbackAction = null, e.emergencyAction = null, e.codeFix = null, i = true;
6796
6798
  }
6797
6799
  if (i && (e.confidenceDisplay = null, e.awaitingEvidence === true && (e.confidence = Math.min(60, Number(e.confidence) || 0)), e.repairVerified = false), i && e.forensicReport && typeof e.forensicReport == "object") {
6798
- let h = e.forensicReport;
6799
- delete h.remediationRunbook, delete h.automationReadiness, delete h.automationExecutionResult;
6800
+ let _ = e.forensicReport;
6801
+ delete _.remediationRunbook, delete _.automationReadiness, delete _.automationExecutionResult;
6800
6802
  }
6801
6803
  return i;
6802
6804
  }
@@ -6862,13 +6864,13 @@ function xd(e, t) {
6862
6864
  let r = String(e || "").split(/\r?\n/), i = t.getTime(), n = null, o = null, a = null, s = false, c = false, d = false, l = null, m = null;
6863
6865
  for (let p of r) {
6864
6866
  let h = Fd(p);
6865
- if (B_.test(p) && (c = true), Nd.test(p) && !Ld.test(p) && (d = true), !Ld.test(p)) continue;
6867
+ if (B_.test(p.replace(/(?:\/[\w.-]+)+/g, "")) && (c = true), Nd.test(p) && !Ld.test(p) && (d = true), !Ld.test(p)) continue;
6866
6868
  let u = V_(p) || n;
6867
6869
  u && (n = u), z_.test(p) && (s = true, m = u || m);
6868
6870
  let _ = Dd.test(p), g = d || h != null && Number.isFinite(i) && h > i;
6869
6871
  _ && u ? (c || g ? (m = u, g && (l = u)) : o = u, a = null) : H_.test(p) && !Dd.test(p) && (a = u || "unknown", g && (l = a));
6870
6872
  }
6871
- if (s || c || l) {
6873
+ if (s || m || l) {
6872
6874
  let p = m || l || n, h = s ? "explicit corruption or integrity-failure evidence" : c ? "non-finite or desynchronized state before the save" : "a write that began or completed after the initiating failure";
6873
6875
  return { lastSafeCheckpoint: o, confidence: 99, isSafe: false, message: `Checkpoint${p ? ` ${p}` : ""} has ${h}. Do not resume it.${o ? ` Use previously verified checkpoint ${o}.` : " Locate and verify an earlier checkpoint first."}`, status: s ? "CORRUPTED" : "TAINTED", latestCheckpointFound: n, safeRollbackStep: o ? Number(o) : null, safeCheckpointPath: o };
6874
6876
  }
@@ -7340,18 +7342,18 @@ function Bn(e, t) {
7340
7342
  }
7341
7343
  function il(e) {
7342
7344
  if (/NVRM[^\n]*Xid\s*(?:\([^)]*\))?\s*[:=]?\s*(?:48|62|74|79|94|95|119|120|149)\b|uncorrectable ECC|Above 4G Decoding|BAR[^\n]*failed to assign|EXT4-fs[^\n]*(?:aborted journal|error|read-only)|groups missing|membership pruned|pip install[^\n]*(?:-U|--upgrade)[^\n]*torch|Memory cgroup out of memory|oom_kill|State=OUT_OF_MEMORY/i.test(e)) return null;
7343
- let t = e.split(/\r?\n/), r = (b, O, k, D, x, B = []) => ({ tier: 0, failureType: b, confidence: B.length ? 60 : 95, sourceType: "operation-evidence-contract", causalDiscriminator: true, summary: k, action: (B.length ? "Read-only evidence required: " : "Manual action required: ") + D, verificationCommand: "Manual verification required: " + x, evidence: t.filter((z11) => O.test(z11)).slice(0, 4), awaitingEvidence: B.length > 0, inviteFollowup: B.length > 0, clarifyingQuestions: B, needsEvidence: B, fallbackAction: null, emergencyAction: null, resumeFrom: null, repairVerified: false }), i = /RuntimeError:[^\n]*view size is not compatible with input tensor.*stride/i;
7345
+ let t = e.split(/\r?\n/), r = (b, O, k, D, x, B = []) => ({ tier: 0, failureType: b, confidence: B.length ? 60 : 95, sourceType: "operation-evidence-contract", causalDiscriminator: true, summary: k, action: (B.length ? "Read-only evidence required: " : "Manual action required: ") + D, verificationCommand: "Manual verification required: " + x, evidence: t.filter((z11) => O.test(z11)).slice(0, 4), awaitingEvidence: B.length > 0, inviteFollowup: B.length > 0, clarifyingQuestions: B, needsEvidence: B, fallbackAction: null, emergencyAction: null, resumeFrom: null, repairVerified: false }), i = /(?:RuntimeError:)?[^\n]*view size is not compatible with input tensor.*stride/i;
7344
7346
  if (i.test(e)) return r("NON_CONTIGUOUS_TENSOR_VIEW", i, "The requested view is incompatible with the input strides. This is a tensor layout contract, not evidence of a TensorRT quantization failure.", "Inspect shape, strides and intended logical element order. Use reshape, or contiguous followed by view, only when that order matches the intended computation. These operations may copy data; do not invent customer launch flags.", "Replay the exact operation and compare every output element with the intended logical-order reference. For training, also compare gradients and parameter updates. Absence of the exception alone is insufficient.");
7345
- let n = /RuntimeError:[^\n]*Expected all tensors to be on the same device/i;
7347
+ let n = /(?:RuntimeError:)?[^\n]*Expected all tensors to be on the same device/i;
7346
7348
  if (n.test(e)) return r("PT_DEVICE_MISMATCH", n, "Operands of the failing operation reside on different devices. The submitted exception does not imply TorchScript is in use.", /argument index|index\.device\s*=\s*cpu/i.test(e) ? "Put the index operand on the input tensor device at this call site, preserving its required integer dtype. Check restored buffers and dynamically created tensors. Do not relocate the entire workload without checking the exact operands." : "Inspect device and dtype of the exact operands, model buffers and restored optimizer state at the failing call. Place them deliberately on compatible devices without casting integer labels or changing the intended operation.", "Replay the same failing operation with the same values. Compare selected elements or outputs and, where applicable, gradients and parameter updates against an agreed reference.");
7347
- let o = /RuntimeError:[^\n]*(?:(?:expected )?mat1 and mat2 (?:must have|to have) the same dtype|expected scalar type \w+ but found \w+)/i;
7349
+ let o = /(?:RuntimeError:)?[^\n]*(?:(?:expected )?mat1 and mat2 (?:must have|to have) the same dtype|expected scalar type \w+ but found \w+)/i;
7348
7350
  if (o.test(e) && !/\[rank\d+\][^\n]*(?:Timed out|timeout)/i.test(e)) return r("MATMUL_DTYPE_MISMATCH", o, "The failing operation reports incompatible operand dtypes. This does not establish a distributed rank failure.", "Inspect the exact operand and model parameter dtypes. Choose the intended precision policy and convert floating operands consistently at this boundary. Preserve integer indices and labels; do not blindly cast every tensor.", "Replay identical values under the intended precision policy. Compare outputs and gradients to an agreed tolerance and confirm the expected parameter updates.");
7349
7351
  if (/Detected mismatch between collectives on ranks/i.test(e)) return r("COLLECTIVE_CONTROL_FLOW_MISMATCH", /SeqNum|OpType|mismatch between collectives/i, "Ranks report incompatible collective fingerprints" + (/SeqNum\s*=\s*(\d+)/i.exec(e)?.[1] ? " at submitted sequence " + /SeqNum\s*=\s*(\d+)/i.exec(e)[1] : "") + ". Compare the actual operation types and shapes from every participant.", "Align collective control flow so every required rank calls the same intended operations in the same order with compatible shapes. Review rank-local conditional branches using TORCH_DISTRIBUTED_DEBUG and available Flight Recorder traces. Increasing the timeout or adding arbitrary dummy operations does not establish correctness.", "Rerun the affected distributed operation and compare sequence, operation and shape fingerprints across all ranks. Compare its result and resulting parameter updates with the intended distributed reference.");
7350
- let s = /RuntimeError:[^\n]*mat1 and mat2 shapes cannot be multiplied/i;
7352
+ let s = /(?:RuntimeError:)?[^\n]*mat1 and mat2 shapes cannot be multiplied/i;
7351
7353
  if (s.test(e)) return r("MATMUL_SHAPE_MISMATCH", s, "The matrix multiplication inner dimensions do not agree. The reported dimensions establish an operation contract failure, not a GPU fault.", "Compare the encoder feature dimension with the intended projection input contract. Correct the configuration or upstream reshape that violates that contract. Do not pad or truncate features simply to silence the exception.", "Check the exact operand shapes, compare outputs with the intended model reference, and verify expected gradients and parameter updates after the change.");
7352
- let c = /RuntimeError:[^\n]*does not require grad and does not have a grad_fn/i;
7354
+ let c = /(?:RuntimeError:)?[^\n]*does not require grad and does not have a grad_fn/i;
7353
7355
  if (c.test(e)) return r("AUTOGRAD_DISCONNECTED_OBJECTIVE", c, "The backward target is not connected to a differentiable graph. Inspect the supplied detach/no_grad/parameter settings to establish where the intended training path was disconnected.", "Keep the intended objective connected to the parameters it should train. Remove an unintended detach or no_grad boundary at the relevant operation; do not merely set requires_grad on an already detached loss.", "Compare gradients for every intended parameter with the same-input reference and confirm only those parameters receive the intended update.");
7354
- let d = /RuntimeError:[^\n]*Trying to backward through the graph a second time/i;
7356
+ let d = /(?:RuntimeError:)?[^\n]*Trying to backward through the graph a second time/i;
7355
7357
  if (d.test(e)) return r("AUTOGRAD_GRAPH_FREED", d, "A backward pass consumed saved tensors from a graph that is being used again. This exception does not establish a particular attention module or ZeRO configuration.", "For a shared intended objective, combine its losses with the intended weights before backward. Alternatively intentionally retain or recompute the graph after assessing memory and optimizer ordering. Never change the objective just to remove the exception.", "Compare each parameter gradient with an independent reference for the complete weighted objective, then compare updates from identical initial state.");
7356
7358
  let l = /RuntimeError:[^\n]*modified by an inplace operation/i;
7357
7359
  if (l.test(e) && /optimizer[^\n]*step|opt(?:imizer)?_\w+\.step/i.test(e)) return r("AUTOGRAD_VERSION_ERROR", l, "A saved value needed by backward was mutated. The reported optimizer step is a concrete lead, but shared objectives require parameter ownership before a complete remedy can be selected.", "Preserve the training loop. Establish which optimizer owns each parameter and which objective should write each gradient before moving optimizer steps. A reorder alone can clear the exception and produce the wrong update.", "Compare per-objective gradients and parameter updates with the intended ownership reference, not only finite losses or disappearance of the version error.", ["Show zero_grad, forward, backward and step order, including detach/freezing boundaries.", "Which parameters does each optimizer own, and which objective is supposed to update each set?"]);
@@ -7514,9 +7516,9 @@ function ol(e) {
7514
7516
  }
7515
7517
  return null;
7516
7518
  }
7517
- var ir = "2026.10.09+native-cuda-operation-evidence-r27";
7519
+ var ir = "2026.10.09+checkpoint-history-evidence-r28";
7518
7520
  var Pb = Object.freeze(["worker/workload-instruction-safety.ts", "worker/remedy-applicability.ts", "worker/follow-up-context.ts", "worker/diagnosis-worker-optimized.ts", "worker/control-arm-falsification.ts", "worker/diagnosis-governance.ts", "worker/telemetry-parse.ts", "worker/keyword-match-tier.ts", "worker/detectors.ts", "worker/config-fault-detectors.ts", "worker/host-config-detectors.ts", "worker/environment-fault-detectors.ts", "worker/fleet-config-detectors.ts", "worker/infra-fault-detectors.ts", "worker/scheduler-network-detectors.ts", "worker/access-control-detectors.ts", "worker/fabric-config-detectors.ts", "worker/host-runtime-detectors.ts", "worker/pipeline-runtime-detectors.ts", "worker/host-capacity-detectors.ts", "worker/orchestration-precision-detectors.ts", "worker/capacity-transport-detectors.ts", "worker/throughput-runtime-detectors.ts", "worker/policy-configuration-detectors.ts", "worker/adversarial-causal-detectors.ts", "worker/detector-precedence.ts", "worker/incident-fact-ledger.ts", "worker/deep-reasoning-contract.ts", "worker/long-tail-causal-detectors.ts", "worker/precision-causal-detectors.ts", "worker/generalization-causal-detectors.ts", "worker/causal-timeline.ts", "worker/generalization-cycle-3-detectors.ts", "worker/generalization-cycle-4-detectors.ts", "worker/generalization-cycle-4-revealed-regressions.ts", "worker/generalization-cycle-5-detectors.ts", "worker/generalization-cycle-6-detectors.ts", "worker/generalization-cycle-7-revealed-regressions.ts", "worker/agent-challenge-causal-detectors.ts", "worker/clarifying-questions.ts", "worker/investigation-loop.ts", "worker/remediation-engine.ts", "worker/rma-generator.ts", "worker/negated-evidence.ts", "worker/healthy-baseline.ts", "worker/host-memory-evidence.ts", "worker/patterns/registry.ts", "worker/patterns/broad_taxonomy_patterns.ts", "worker/patterns/family-contracts.ts", "worker/patterns/seo_gap_patterns.ts", "worker/patterns/audit_gap_patterns.ts", "worker/patterns/cycle9_gap_patterns.ts", "worker/patterns/master_improvements.ts", "worker/patterns/remediation_gap_patterns.ts", "worker/patterns/silent_failures.ts", "worker/patterns/checkpoint_errors.ts", "worker/patterns/ddp_errors.ts", "worker/patterns/enterprise_core.ts", "worker/patterns/fallen_off_bus.ts", "worker/patterns/flash_attention.ts", "worker/patterns/fs_errors.ts", "worker/patterns/gpu_reset.ts", "worker/patterns/hung_rank.ts", "worker/patterns/hw_slowdown.ts", "worker/patterns/ib_errors.ts", "worker/patterns/index.ts", "worker/patterns/inference_serving.ts", "worker/patterns/init_errors.ts", "worker/patterns/jax_flax.ts", "worker/patterns/kernel_deadlock.ts", "worker/patterns/kmsg_gpu_errors.ts", "worker/patterns/nccl_hang_detector.ts", "worker/patterns/nccl_slow_node.ts", "worker/patterns/nvlink_check.ts", "worker/patterns/pcie_degradation.ts", "worker/patterns/prefilter.ts", "worker/patterns/straggler_detector.ts", "worker/patterns/sxid_detector.ts", "worker/patterns/thermal_check.ts", "worker/patterns/xid_core.ts", "worker/clock-skew.ts", "worker/serving-slo.ts", "worker/workload-class.ts", "worker/encyclopedia-name-evidence.ts", "worker/encyclopedia-negated-claim.ts", "worker/torchelastic-exitcode.ts", "worker/input-starvation.ts", "worker/cuda-driver-compat.ts", "worker/loss-scale-thrash.ts", "worker/transient-recovered.ts", "worker/throughput-paste-detector.ts", "worker/throughput-log-parse.ts", "worker/throughput-regression.ts", "worker/contracts.ts", "worker/finalize-diagnosis.ts", "worker/checkpoint-analyzer.ts", "worker/goodput.ts", "worker/straggler-detector.ts", "worker/inference-analysis.ts", "worker/fleet-risk.ts", "worker/remediation-scripts.ts", "worker/diagnostic-evidence-requests.ts", "worker/operation-evidence-contracts.ts", "worker/ownership.ts", "worker/mre-generator.ts", "worker/rma-ticket.ts", "worker/log-negation.ts", "worker/diagnostic-input-quality.ts", "worker/exoneration.ts", "worker/evidence-hierarchy.ts", "worker/failure-priors.ts", "worker/confidence-calibration.ts", "worker/encyclopedia-match.ts", "worker/bayesian-network.ts", "src/data/failures-matcher.ts", "src/lib/log-extract.ts", "src/lib/what-to-do.ts"]);
7519
- var Hn = "2059301630f5b4ef7f84c86d37bf71480e4e8e72ecdf81e74dc2d10af236cfb3";
7521
+ var Hn = "28b6f5650b7b33e8b7655cfc1e9aef64d1cbcd9c9a72a06fe4d4edb22519f828";
7520
7522
  var Ii = { sha: "0000000000000000000000000000000000000000", shortSha: "offline", branch: "offline-distribution", subject: "Canonical zero-egress diagnosis engine", committedAt: "1970-01-01T00:00:00.000Z", engineVersion: ir };
7521
7523
  var Nb = `canonical-offline@${ir}`;
7522
7524
  var Xy = { "immutable-negative-fact": ["paired-causal-owner", "contracted-subsystem", "generic-subsystem", "terminal-symptom"], "paired-causal-owner": ["contracted-subsystem", "generic-subsystem", "terminal-symptom"], "contracted-subsystem": ["generic-subsystem", "terminal-symptom"], "generic-subsystem": ["terminal-symptom"], "terminal-symptom": [] };
@@ -13055,7 +13057,7 @@ function registerPrompts(server) {
13055
13057
 
13056
13058
  // src/version.ts
13057
13059
  var SERVER_NAME = "denpex";
13058
- var SERVER_VERSION = "0.2.29";
13060
+ var SERVER_VERSION = "0.2.30";
13059
13061
 
13060
13062
  // src/server.ts
13061
13063
  function createServer() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "denpex-mcp",
3
- "version": "0.2.29",
3
+ "version": "0.2.30",
4
4
  "description": "Denpex MCP server, diagnose GPU/ML training failures (CUDA OOM, NCCL timeouts, Xid faults, NaN loss) from Claude Desktop, Cursor, or Claude Code, with optional explicit zero-egress mode.",
5
5
  "type": "module",
6
6
  "license": "MIT",