@adhdev/daemon-standalone 1.0.29-rc.4 → 1.0.29-rc.5

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
@@ -33311,10 +33311,10 @@ var require_dist3 = __commonJS({
33311
33311
  }
33312
33312
  function getDaemonBuildInfo() {
33313
33313
  if (cached2) return cached2;
33314
- const commit = readInjected(true ? "df91f2d3a3bded96267f00003d1ee8e27dda0512" : void 0) ?? "unknown";
33315
- const commitShort = readInjected(true ? "df91f2d3" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
33316
- const version2 = readInjected(true ? "1.0.29-rc.4" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
33317
- const builtAt = readInjected(true ? "2026-08-02T00:25:39.936Z" : void 0);
33314
+ const commit = readInjected(true ? "f4bab0079a473c45327927eb9481c5b4c2d48aa7" : void 0) ?? "unknown";
33315
+ const commitShort = readInjected(true ? "f4bab007" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
33316
+ const version2 = readInjected(true ? "1.0.29-rc.5" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
33317
+ const builtAt = readInjected(true ? "2026-08-02T04:13:46.304Z" : void 0);
33318
33318
  cached2 = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
33319
33319
  return cached2;
33320
33320
  }
@@ -54422,11 +54422,34 @@ The mesh has no work in flight. For each mission, decide its outcome: continue i
54422
54422
  if (!workspace) return null;
54423
54423
  try {
54424
54424
  const result = loadRepoMeshJsonConfig(workspace);
54425
- return result.sourceType === "repo_file" && result.config ? result.config : null;
54425
+ if (result.sourceType !== "repo_file" || !result.config) return null;
54426
+ if (!isConfigPathInsideWorkspace(result.path, workspace)) return null;
54427
+ return result.config;
54426
54428
  } catch {
54427
54429
  return null;
54428
54430
  }
54429
54431
  }
54432
+ function isConfigPathInsideWorkspace(configPath, workspace) {
54433
+ if (typeof configPath !== "string" || !configPath) return false;
54434
+ const toPosix = (value) => value.replace(/\\/g, "/").replace(/\/+$/, "");
54435
+ const ws = toPosix(workspace);
54436
+ const target = toPosix(configPath);
54437
+ return !!ws && (target === ws || target.startsWith(`${ws}/`));
54438
+ }
54439
+ function warnUnreadableRepoConfigForNode(node, providerType) {
54440
+ const workspace = typeof node?.workspace === "string" && node.workspace.trim() ? node.workspace.trim() : "";
54441
+ if (!workspace) return;
54442
+ const nodeId = readNonEmptyString(node?.id) || readNonEmptyString(node?.nodeId) || "unknown-node";
54443
+ LOG2.warn(
54444
+ "MeshQueue",
54445
+ `repo mesh.json unreadable from this daemon for node=${nodeId} workspace=${workspace} provider=${providerType || "unknown"} \u2014 delegated auto-approve MODE falls back to the provider default here; the worker daemon re-resolves it from its own checkout at launch`
54446
+ );
54447
+ }
54448
+ function delegatedWorkerAutoApproveSettingsForNode(mesh, node, provider, providerType) {
54449
+ const repoConfig = loadRepoConfigForNode(node);
54450
+ if (!repoConfig) warnUnreadableRepoConfigForNode(node, providerType);
54451
+ return delegatedWorkerAutoApproveSettings(mesh?.policy, node?.policy, provider, repoConfig, providerType);
54452
+ }
54430
54453
  function getMeshWithCache(components, meshId) {
54431
54454
  const localMesh = getMesh(meshId);
54432
54455
  const cachedMesh = components.router?.getCachedInlineMesh(meshId);
@@ -54843,11 +54866,10 @@ The mesh has no work in flight. For each mission, decide its outcome: continue i
54843
54866
  meshNodeFor: meshId,
54844
54867
  meshNodeId: nodeId,
54845
54868
  launchedByCoordinator: true,
54846
- ...delegatedWorkerAutoApproveSettings(
54847
- mesh?.policy,
54848
- node?.policy,
54869
+ ...delegatedWorkerAutoApproveSettingsForNode(
54870
+ mesh,
54871
+ node,
54849
54872
  components.providerLoader?.getMeta(providerType),
54850
- loadRepoConfigForNode(node),
54851
54873
  providerType
54852
54874
  ),
54853
54875
  ...localDaemonId ? { meshCoordinatorDaemonId: localDaemonId } : {},
@@ -55706,11 +55728,10 @@ The mesh has no work in flight. For each mission, decide its outcome: continue i
55706
55728
  // Coordinator-dispatched worker: auto-approve unless mesh/node policy
55707
55729
  // opts out (default true). Lands in settingsOverride and beats the
55708
55730
  // global per-provider-type boolean/mode through explicit opposite-key clearing.
55709
- ...delegatedWorkerAutoApproveSettings(
55710
- mesh?.policy,
55711
- node?.policy,
55731
+ ...delegatedWorkerAutoApproveSettingsForNode(
55732
+ mesh,
55733
+ node,
55712
55734
  components.providerLoader?.getMeta(resolved.providerType),
55713
- loadRepoConfigForNode(node),
55714
55735
  resolved.providerType
55715
55736
  ),
55716
55737
  launchedByCoordinator: true,
@@ -85846,6 +85867,84 @@ ${body}
85846
85867
  init_hash();
85847
85868
  init_coordinator_registry();
85848
85869
  init_mesh_duplicate_dispatch();
85870
+ init_mesh_json_config();
85871
+ init_logger();
85872
+ init_repo_mesh_types();
85873
+ function resolveDelegatedWorkerAutoApproveModeForLaunch(input) {
85874
+ const settings = input.settings;
85875
+ const envelopeMode = typeof settings?.autoApproveMode === "string" && settings.autoApproveMode.trim() ? settings.autoApproveMode.trim() : void 0;
85876
+ if (settings?.launchedByCoordinator !== true) {
85877
+ return { autoApproveMode: envelopeMode, changed: false, source: "not_delegated" };
85878
+ }
85879
+ if (settings.autoApprove === false) {
85880
+ return { autoApproveMode: void 0, changed: false, source: "enable_gate_off" };
85881
+ }
85882
+ const providerType = typeof input.providerType === "string" ? input.providerType.trim() : "";
85883
+ if (!providerType || !input.provider?.autoApproveModes) {
85884
+ return { autoApproveMode: envelopeMode, changed: false, source: "no_provider_modes" };
85885
+ }
85886
+ const workspace = typeof input.workspace === "string" ? input.workspace.trim() : "";
85887
+ if (!workspace) {
85888
+ return { autoApproveMode: envelopeMode, changed: false, source: "no_repo_config" };
85889
+ }
85890
+ let repoConfig = null;
85891
+ try {
85892
+ const result = loadRepoMeshJsonConfig(workspace);
85893
+ const fromThisWorkspace = result.sourceType === "repo_file" && typeof result.path === "string" && isPathInsideWorkspace(result.path, workspace);
85894
+ repoConfig = fromThisWorkspace && result.config ? result.config : null;
85895
+ } catch {
85896
+ repoConfig = null;
85897
+ }
85898
+ const requestedMode = repoConfig?.providerDefaults?.autoApproveModes?.[providerType];
85899
+ const requestedModeId = typeof requestedMode === "string" && requestedMode.trim() ? requestedMode.trim() : "";
85900
+ if (!requestedModeId) {
85901
+ return { autoApproveMode: envelopeMode, changed: false, source: "no_repo_config" };
85902
+ }
85903
+ const dangerousAllowed = settings.delegatedWorkerDangerousModeAllow === true;
85904
+ const resolved = resolveDelegatedWorkerAutoApprove(
85905
+ { delegatedWorkerAutoApprove: true, delegatedWorkerDangerousModeAllow: dangerousAllowed },
85906
+ void 0,
85907
+ input.provider,
85908
+ repoConfig,
85909
+ providerType
85910
+ );
85911
+ if (typeof resolved !== "string") {
85912
+ return { autoApproveMode: envelopeMode, changed: false, source: "no_repo_config" };
85913
+ }
85914
+ return {
85915
+ autoApproveMode: resolved,
85916
+ changed: resolved !== envelopeMode,
85917
+ source: "worker_repo_file"
85918
+ };
85919
+ }
85920
+ function isPathInsideWorkspace(configPath, workspace) {
85921
+ const normalize4 = (value) => value.replace(/[\\/]+$/, "");
85922
+ const ws = normalize4(workspace);
85923
+ if (!ws) return false;
85924
+ const separatorAgnostic = (value) => value.replace(/\\/g, "/");
85925
+ const normalizedPath = separatorAgnostic(configPath);
85926
+ const normalizedWs = separatorAgnostic(ws);
85927
+ return normalizedPath === normalizedWs || normalizedPath.startsWith(`${normalizedWs}/`);
85928
+ }
85929
+ function logDelegatedWorkerModeDelivery(resolution, context) {
85930
+ if (resolution.source !== "worker_repo_file" && resolution.source !== "no_repo_config") return;
85931
+ const node = context.meshNodeId || "unknown-node";
85932
+ const workspace = context.workspace || "unknown-workspace";
85933
+ const provider = context.providerType || "unknown-provider";
85934
+ if (resolution.source === "worker_repo_file" && resolution.changed) {
85935
+ LOG2.info(
85936
+ "MeshWorker",
85937
+ `auto-approve mode re-resolved from worker repo config: node=${node} workspace=${workspace} provider=${provider} coordinatorMode=${context.envelopeMode ?? "(none)"} workerMode=${resolution.autoApproveMode}`
85938
+ );
85939
+ return;
85940
+ }
85941
+ if (resolution.source === "no_repo_config" && context.envelopeMode) {
85942
+ LOG2.warn(
85943
+ "MeshWorker",
85944
+ `auto-approve mode NOT confirmed by worker repo config (keeping coordinator value): node=${node} workspace=${workspace} provider=${provider} mode=${context.envelopeMode} \u2014 no readable .adhdev/mesh.json in this workspace`
85945
+ );
85946
+ }
85947
+ }
85849
85948
  init_summary_metadata();
85850
85949
  var os19 = __toESM2(require("os"));
85851
85950
  var crypto5 = __toESM2(require("crypto"));
@@ -95198,7 +95297,29 @@ Run 'adhdev doctor' for detailed diagnostics.`
95198
95297
  if (!cliType) throw new Error("cliType required");
95199
95298
  const providerType = this.providerLoader.resolveAlias(cliType);
95200
95299
  const provLookup = this.providerLoader.getMeta(providerType);
95201
- const settingsOverride = args?.settings && typeof args.settings === "object" ? args.settings : void 0;
95300
+ let settingsOverride = args?.settings && typeof args.settings === "object" ? args.settings : void 0;
95301
+ if (settingsOverride?.launchedByCoordinator === true) {
95302
+ const envelopeMode = typeof settingsOverride.autoApproveMode === "string" ? settingsOverride.autoApproveMode : void 0;
95303
+ const modeResolution = resolveDelegatedWorkerAutoApproveModeForLaunch({
95304
+ workspace: dir,
95305
+ providerType,
95306
+ provider: provLookup,
95307
+ settings: settingsOverride
95308
+ });
95309
+ logDelegatedWorkerModeDelivery(modeResolution, {
95310
+ workspace: dir,
95311
+ providerType,
95312
+ meshNodeId: typeof settingsOverride.meshNodeId === "string" ? settingsOverride.meshNodeId : void 0,
95313
+ envelopeMode
95314
+ });
95315
+ if (modeResolution.changed && modeResolution.autoApproveMode) {
95316
+ settingsOverride = {
95317
+ ...settingsOverride,
95318
+ autoApproveMode: modeResolution.autoApproveMode,
95319
+ autoApprove: void 0
95320
+ };
95321
+ }
95322
+ }
95202
95323
  const delegatedLaunch = settingsOverride?.launchedByCoordinator === true ? buildCoordinatorDelegatedCliLaunchOptions({
95203
95324
  cliType,
95204
95325
  workspace: dir,