@caupulican/pi-adaptative 0.81.0 → 0.81.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -182,6 +182,15 @@ function parseTimeoutSetting(value, settingName) {
182
182
  }
183
183
  return undefined;
184
184
  }
185
+ /** Stall bounds must be strictly positive — 0 is not "disabled" here (it would stall instantly). */
186
+ function parseStallBoundMs(value, settingName) {
187
+ if (value === undefined)
188
+ return undefined;
189
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
190
+ throw new Error(`Invalid ${settingName} setting: ${String(value)}`);
191
+ }
192
+ return Math.floor(value);
193
+ }
185
194
  function sanitizeIntegerSetting(value, fallback, min, max) {
186
195
  if (typeof value !== "number" || !Number.isInteger(value))
187
196
  return fallback;
@@ -1706,6 +1715,19 @@ export class SettingsManager {
1706
1715
  baseDelayMs: this.settings.retry?.baseDelayMs ?? 2000,
1707
1716
  };
1708
1717
  }
1718
+ /**
1719
+ * Stream-stall watchdog bounds (pi-agent-core reliability/watchdogs.ts). Returns only the
1720
+ * fields the user set, validated; unset fields fall back to DEFAULT_STREAM_IDLE at the
1721
+ * wiring site (agent-session constructor). Resolved per request, so edits apply live.
1722
+ */
1723
+ getStreamStallSettings() {
1724
+ const stall = this.settings.retry?.stall;
1725
+ return {
1726
+ connectMs: parseStallBoundMs(stall?.connectMs, "retry.stall.connectMs"),
1727
+ activeIdleMs: parseStallBoundMs(stall?.activeIdleMs, "retry.stall.activeIdleMs"),
1728
+ quietIdleMs: parseStallBoundMs(stall?.quietIdleMs, "retry.stall.quietIdleMs"),
1729
+ };
1730
+ }
1709
1731
  getHttpIdleTimeoutMs() {
1710
1732
  return parseTimeoutSetting(this.settings.httpIdleTimeoutMs, "httpIdleTimeoutMs") ?? DEFAULT_HTTP_IDLE_TIMEOUT_MS;
1711
1733
  }