@adhdev/daemon-standalone 1.0.38-rc.1 → 1.0.38-rc.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.
package/dist/index.js CHANGED
@@ -32731,7 +32731,7 @@ var require_dist3 = __commonJS({
32731
32731
  }
32732
32732
  return policy;
32733
32733
  }
32734
- function resolveDelegatedWorkerAutoApprove(meshPolicy, nodePolicy, provider, repoConfig, providerType) {
32734
+ function resolveDelegatedWorkerAutoApprove(meshPolicy, nodePolicy, provider, repoConfig, providerType, overrideModeId, overrideLegacyAutoApprove) {
32735
32735
  let enabled = true;
32736
32736
  if (typeof nodePolicy?.delegatedWorkerAutoApprove === "boolean") {
32737
32737
  enabled = nodePolicy.delegatedWorkerAutoApprove;
@@ -32740,8 +32740,9 @@ var require_dist3 = __commonJS({
32740
32740
  }
32741
32741
  if (!enabled) return false;
32742
32742
  const modes = provider?.autoApproveModes;
32743
- if (!modes) return true;
32744
- const requestedModeRaw = typeof providerType === "string" ? repoConfig?.providerDefaults?.autoApproveModes?.[providerType.trim()] : void 0;
32743
+ if (!modes) return typeof overrideLegacyAutoApprove === "boolean" ? overrideLegacyAutoApprove : true;
32744
+ const overrideModeIdTrimmed = typeof overrideModeId === "string" ? overrideModeId.trim() : "";
32745
+ const requestedModeRaw = overrideModeIdTrimmed ? overrideModeIdTrimmed : typeof providerType === "string" ? repoConfig?.providerDefaults?.autoApproveModes?.[providerType.trim()] : void 0;
32745
32746
  const requestedModeId = typeof requestedModeRaw === "string" && requestedModeRaw.trim() ? requestedModeRaw.trim() : "";
32746
32747
  const requestedMode = requestedModeId ? modes.modes.find((mode) => mode.id === requestedModeId) : void 0;
32747
32748
  const selectedMode = requestedMode ?? modes.modes.find((mode) => mode.id === modes.default);
@@ -32759,8 +32760,8 @@ var require_dist3 = __commonJS({
32759
32760
  }
32760
32761
  return meshPolicy?.delegatedWorkerDangerousModeAllow === true;
32761
32762
  }
32762
- function delegatedWorkerAutoApproveSettings(meshPolicy, nodePolicy, provider, repoConfig, providerType) {
32763
- const resolved = resolveDelegatedWorkerAutoApprove(meshPolicy, nodePolicy, provider, repoConfig, providerType);
32763
+ function delegatedWorkerAutoApproveSettings(meshPolicy, nodePolicy, provider, repoConfig, providerType, overrideModeId, overrideLegacyAutoApprove) {
32764
+ const resolved = resolveDelegatedWorkerAutoApprove(meshPolicy, nodePolicy, provider, repoConfig, providerType, overrideModeId, overrideLegacyAutoApprove);
32764
32765
  const delegatedWorkerDangerousModeAllow = resolveDelegatedWorkerDangerousModeAllow(meshPolicy, nodePolicy);
32765
32766
  return typeof resolved === "string" ? { autoApprove: void 0, autoApproveMode: resolved, delegatedWorkerDangerousModeAllow } : { autoApprove: resolved, autoApproveMode: void 0, delegatedWorkerDangerousModeAllow };
32766
32767
  }
@@ -33363,10 +33364,10 @@ var require_dist3 = __commonJS({
33363
33364
  }
33364
33365
  function getDaemonBuildInfo() {
33365
33366
  if (cached2) return cached2;
33366
- const commit = readInjected(true ? "34f39f386f8c9aa0b5f8dfb597ba55e16cffee54" : void 0) ?? "unknown";
33367
- const commitShort = readInjected(true ? "34f39f38" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
33368
- const version2 = readInjected(true ? "1.0.38-rc.1" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
33369
- const builtAt = readInjected(true ? "2026-08-06T05:39:02.333Z" : void 0);
33367
+ const commit = readInjected(true ? "42fda6be970f1a699962d2f136848ae613684721" : void 0) ?? "unknown";
33368
+ const commitShort = readInjected(true ? "42fda6be" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
33369
+ const version2 = readInjected(true ? "1.0.38-rc.2" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
33370
+ const builtAt = readInjected(true ? "2026-08-06T08:02:41.976Z" : void 0);
33370
33371
  cached2 = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
33371
33372
  return cached2;
33372
33373
  }
@@ -34995,21 +34996,33 @@ var require_dist3 = __commonJS({
34995
34996
  return { usedPercent: clampPercent(usedPercent), windowMinutes: windowMinutes2, resetsAt };
34996
34997
  }
34997
34998
  function quotaFailure(provider, status, error48, metadata) {
34999
+ const now = Date.now();
35000
+ const resolvedMetadata = metadata && metadata.failureKind && TRANSIENT_QUOTA_FAILURE_KINDS.has(metadata.failureKind) && metadata.retryAtMs === void 0 ? { ...metadata, retryAtMs: now + QUOTA_TRANSIENT_RETRY_DELAY_MS } : metadata;
34998
35001
  return {
34999
35002
  provider,
35000
35003
  session: null,
35001
35004
  weekly: null,
35002
- updatedAt: Date.now(),
35005
+ updatedAt: now,
35003
35006
  error: error48,
35004
35007
  status,
35005
- ...metadata ? { metadata } : {}
35008
+ ...resolvedMetadata ? { metadata: resolvedMetadata } : {}
35006
35009
  };
35007
35010
  }
35011
+ var TRANSIENT_QUOTA_FAILURE_KINDS;
35012
+ var QUOTA_TRANSIENT_RETRY_DELAY_MS;
35008
35013
  var SESSION_WINDOW_MINUTES;
35009
35014
  var WEEKLY_WINDOW_MINUTES;
35010
35015
  var init_types = __esm2({
35011
35016
  "src/quota/types.ts"() {
35012
35017
  "use strict";
35018
+ TRANSIENT_QUOTA_FAILURE_KINDS = /* @__PURE__ */ new Set([
35019
+ "expired-token",
35020
+ "unauthorized",
35021
+ "network",
35022
+ "server",
35023
+ "rate-limited"
35024
+ ]);
35025
+ QUOTA_TRANSIENT_RETRY_DELAY_MS = 2 * 60 * 1e3;
35013
35026
  SESSION_WINDOW_MINUTES = 300;
35014
35027
  WEEKLY_WINDOW_MINUTES = 10080;
35015
35028
  }
@@ -36514,6 +36527,7 @@ child.on('exit', () => process.exit(0));
36514
36527
  if (!isEnabled(provider)) {
36515
36528
  cache.delete(provider);
36516
36529
  hydratedOnly.delete(provider);
36530
+ cancelFailureRetry(provider);
36517
36531
  }
36518
36532
  }
36519
36533
  }
@@ -36536,9 +36550,54 @@ child.on('exit', () => process.exit(0));
36536
36550
  }
36537
36551
  })
36538
36552
  );
36553
+ for (const { provider, fetch: fetch2 } of active) {
36554
+ updateFailureRetry(provider, fetch2, isEnabled);
36555
+ }
36539
36556
  const snapshot = readQuotaCache();
36540
36557
  if (snapshot) saveQuotaCache(snapshot);
36541
36558
  }
36559
+ function cancelFailureRetry(provider) {
36560
+ const state = failureRetries.get(provider);
36561
+ if (state?.timer) clearTimeout(state.timer);
36562
+ failureRetries.delete(provider);
36563
+ }
36564
+ function isFailureRetryDue(provider, now = Date.now()) {
36565
+ const entry = cache.get(provider);
36566
+ if (!entry || entry.status === "ok") return false;
36567
+ const retryAtMs = entry.metadata?.retryAtMs;
36568
+ if (typeof retryAtMs !== "number" || retryAtMs > now) return false;
36569
+ return (failureRetries.get(provider)?.failures ?? 0) <= QUOTA_FAILURE_MAX_RETRIES;
36570
+ }
36571
+ function updateFailureRetry(provider, fetch2, isEnabled) {
36572
+ const entry = cache.get(provider);
36573
+ const retryAtMs = entry && entry.status !== "ok" ? entry.metadata?.retryAtMs : void 0;
36574
+ if (typeof retryAtMs !== "number") {
36575
+ cancelFailureRetry(provider);
36576
+ return;
36577
+ }
36578
+ const previous = failureRetries.get(provider);
36579
+ if (previous?.timer) clearTimeout(previous.timer);
36580
+ const failures = (previous?.failures ?? 0) + 1;
36581
+ if (failures > QUOTA_FAILURE_MAX_RETRIES) {
36582
+ failureRetries.set(provider, { failures, timer: null });
36583
+ LOG2.info("Quota", `${provider}: transient failure persists after ${QUOTA_FAILURE_MAX_RETRIES} retries \u2014 back to the normal refresh cadence`);
36584
+ return;
36585
+ }
36586
+ const backoffMs = Math.min(
36587
+ QUOTA_TRANSIENT_RETRY_DELAY_MS * 2 ** (failures - 1),
36588
+ QUOTA_REFRESH_INTERVAL_MS
36589
+ );
36590
+ const delayMs = Math.max(retryAtMs - Date.now(), backoffMs, 0);
36591
+ const timer = setTimeout(() => {
36592
+ const state = failureRetries.get(provider);
36593
+ if (state) state.timer = null;
36594
+ if (isEnabled && !isEnabled(provider)) return;
36595
+ void refreshQuotaCacheOnce([{ provider, fetch: fetch2 }], isEnabled).catch((e) => LOG2.warn("Quota", `${provider}: scheduled retry failed: ${e?.message || e}`));
36596
+ }, delayMs);
36597
+ if (typeof timer.unref === "function") timer.unref();
36598
+ failureRetries.set(provider, { failures, timer });
36599
+ LOG2.info("Quota", `${provider}: transient failure \u2014 retry scheduled in ${Math.round(delayMs / 1e3)}s (attempt ${failures}/${QUOTA_FAILURE_MAX_RETRIES})`);
36600
+ }
36542
36601
  function hasRecentCliActivity(sessions, now = Date.now(), windowMs = QUOTA_ACTIVITY_WINDOW_MS) {
36543
36602
  for (const session of sessions) {
36544
36603
  if (typeof session?.status === "string" && WORKING_STATUSES.has(session.status)) return true;
@@ -36559,7 +36618,7 @@ child.on('exit', () => process.exit(0));
36559
36618
  } catch {
36560
36619
  active = false;
36561
36620
  }
36562
- const needsBackfill = options.isEnabled ? fetchers.some(({ provider }) => options.isEnabled(provider) && !cache.has(provider)) : false;
36621
+ const needsBackfill = options.isEnabled ? fetchers.some(({ provider }) => options.isEnabled(provider) && (!cache.has(provider) || isFailureRetryDue(provider))) : false;
36563
36622
  if (!active && !needsBackfill) return;
36564
36623
  running = true;
36565
36624
  void refreshQuotaCacheOnce(fetchers, options.isEnabled).catch((e) => LOG2.warn("Quota", `Quota refresh tick error: ${e?.message || e}`)).finally(() => {
@@ -36588,18 +36647,47 @@ child.on('exit', () => process.exit(0));
36588
36647
  bootRefreshInFlight = false;
36589
36648
  });
36590
36649
  }
36650
+ function setupQuotaEventRefresh(components, options = {}) {
36651
+ const isEnabled = components.providerLoader ? quotaProviderEnabledFromLoader(components.providerLoader) : void 0;
36652
+ const debounceMs = options.debounceMs ?? QUOTA_EVENT_REFRESH_DEBOUNCE_MS;
36653
+ const now = options.now ?? Date.now;
36654
+ const lastRefreshAt = /* @__PURE__ */ new Map();
36655
+ let stopped = false;
36656
+ components.instanceManager.onEvent((event) => {
36657
+ if (stopped) return;
36658
+ if (event.event !== "agent:generating_completed") return;
36659
+ const refresher = typeof event.providerType === "string" ? REFRESHERS.find(({ provider }) => provider === event.providerType) : void 0;
36660
+ if (!refresher) return;
36661
+ if (isEnabled && !isEnabled(refresher.provider)) return;
36662
+ const at = now();
36663
+ if (at - (lastRefreshAt.get(refresher.provider) ?? -Infinity) < debounceMs) return;
36664
+ lastRefreshAt.set(refresher.provider, at);
36665
+ void refreshQuotaCacheOnce([refresher], isEnabled).catch((e) => LOG2.warn("Quota", `Event-driven quota refresh failed: ${e?.message || e}`));
36666
+ });
36667
+ LOG2.info("Quota", `Event-driven quota refresh armed (agent:generating_completed, ${debounceMs}ms debounce)`);
36668
+ return {
36669
+ stop() {
36670
+ stopped = true;
36671
+ LOG2.info("Quota", "Event-driven quota refresh stopped");
36672
+ }
36673
+ };
36674
+ }
36591
36675
  var QUOTA_REFRESH_INTERVAL_MS;
36592
36676
  var QUOTA_ACTIVITY_WINDOW_MS;
36593
36677
  var REFRESHERS;
36594
36678
  var cache;
36595
36679
  var hydratedOnly;
36596
36680
  var hydrated;
36681
+ var QUOTA_FAILURE_MAX_RETRIES;
36682
+ var failureRetries;
36597
36683
  var WORKING_STATUSES;
36598
36684
  var bootRefreshInFlight;
36685
+ var QUOTA_EVENT_REFRESH_DEBOUNCE_MS;
36599
36686
  var init_refresh = __esm2({
36600
36687
  "src/quota/refresh.ts"() {
36601
36688
  "use strict";
36602
36689
  init_logger();
36690
+ init_types();
36603
36691
  init_claude();
36604
36692
  init_codex();
36605
36693
  init_kimi();
@@ -36614,6 +36702,8 @@ child.on('exit', () => process.exit(0));
36614
36702
  cache = /* @__PURE__ */ new Map();
36615
36703
  hydratedOnly = /* @__PURE__ */ new Set();
36616
36704
  hydrated = false;
36705
+ QUOTA_FAILURE_MAX_RETRIES = 4;
36706
+ failureRetries = /* @__PURE__ */ new Map();
36617
36707
  WORKING_STATUSES = /* @__PURE__ */ new Set([
36618
36708
  "generating",
36619
36709
  "waiting_approval",
@@ -36625,6 +36715,7 @@ child.on('exit', () => process.exit(0));
36625
36715
  "long_generating"
36626
36716
  ]);
36627
36717
  bootRefreshInFlight = false;
36718
+ QUOTA_EVENT_REFRESH_DEBOUNCE_MS = 6e4;
36628
36719
  }
36629
36720
  });
36630
36721
  var import_session_host_core3;
@@ -106642,6 +106733,8 @@ ${formatManifestValidationIssues2(validation2.issues)}`);
106642
106733
  const extraSystemPrompt = typeof args?.extraSystemPrompt === "string" ? args.extraSystemPrompt.trim() : "";
106643
106734
  const initialModel = typeof args?.initialModel === "string" && args.initialModel.trim() ? args.initialModel.trim() : null;
106644
106735
  const initialThinkingLevel = typeof args?.initialThinkingLevel === "string" && args.initialThinkingLevel.trim() ? args.initialThinkingLevel.trim() : null;
106736
+ const autoApproveModeOverride = typeof args?.autoApproveMode === "string" && args.autoApproveMode.trim() ? args.autoApproveMode.trim() : null;
106737
+ const legacyAutoApproveOverride = typeof args?.autoApprove === "boolean" ? args.autoApprove : null;
106645
106738
  if (!meshId) return { success: false, error: "meshId required" };
106646
106739
  try {
106647
106740
  const { buildCoordinatorSystemPrompt: buildCoordinatorSystemPrompt2 } = await Promise.resolve().then(() => (init_coordinator_prompt(), coordinator_prompt_exports));
@@ -106947,7 +107040,9 @@ ${ptyResult.output.slice(-2e3)}`);
106947
107040
  coordinatorNode?.policy,
106948
107041
  providerMeta,
106949
107042
  repoMeshConfigLoad.config,
106950
- cliType
107043
+ cliType,
107044
+ autoApproveModeOverride,
107045
+ legacyAutoApproveOverride
106951
107046
  )
106952
107047
  },
106953
107048
  ...initialModel ? { initialModel } : {},
@@ -107150,7 +107245,9 @@ ${ptyResult.output.slice(-2e3)}`);
107150
107245
  coordinatorNode?.policy,
107151
107246
  providerMeta,
107152
107247
  repoMeshConfigLoad.config,
107153
- cliType
107248
+ cliType,
107249
+ autoApproveModeOverride,
107250
+ legacyAutoApproveOverride
107154
107251
  )
107155
107252
  },
107156
107253
  ...initialModel ? { initialModel } : {},
@@ -121346,6 +121443,7 @@ data: ${JSON.stringify(msg.data)}
121346
121443
  setupMeshEventForwarding(components);
121347
121444
  components.meshReconcileLoop = setupMeshReconcileLoop(components);
121348
121445
  components.quotaRefreshLoop = setupQuotaRefreshLoop(components);
121446
+ components.quotaEventRefresh = setupQuotaEventRefresh(components);
121349
121447
  setImmediate(() => {
121350
121448
  const isQuotaProviderEnabled = quotaProviderEnabledFromLoader(components.providerLoader);
121351
121449
  try {
@@ -121382,7 +121480,8 @@ data: ${JSON.stringify(msg.data)}
121382
121480
  instanceManager,
121383
121481
  cdpManagers,
121384
121482
  meshReconcileLoop,
121385
- quotaRefreshLoop
121483
+ quotaRefreshLoop,
121484
+ quotaEventRefresh
121386
121485
  } = components;
121387
121486
  poller.stop();
121388
121487
  cdpInitializer.stop();
@@ -121394,6 +121493,10 @@ data: ${JSON.stringify(msg.data)}
121394
121493
  quotaRefreshLoop?.stop();
121395
121494
  } catch {
121396
121495
  }
121496
+ try {
121497
+ quotaEventRefresh?.stop();
121498
+ } catch {
121499
+ }
121397
121500
  try {
121398
121501
  if (agentStreamManager) {
121399
121502
  await agentStreamManager.dispose(cdpManagers);