@adhdev/daemon-standalone 1.0.58-rc.54 → 1.0.58-rc.56

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
@@ -36911,10 +36911,10 @@ var require_dist3 = __commonJS({
36911
36911
  }
36912
36912
  function getDaemonBuildInfo() {
36913
36913
  if (cached2) return cached2;
36914
- const commit = readInjected(true ? "c269ba93419ec36106d4f3d3d63068b2362fe92b" : void 0) ?? "unknown";
36915
- const commitShort = readInjected(true ? "c269ba93" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
36916
- const version2 = readInjected(true ? "1.0.58-rc.54" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
36917
- const builtAt = readInjected(true ? "2026-08-31T06:34:22.633Z" : void 0);
36914
+ const commit = readInjected(true ? "43f93dcf63e5cbf8071a6823ef9bf15cd26da0ee" : void 0) ?? "unknown";
36915
+ const commitShort = readInjected(true ? "43f93dcf" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
36916
+ const version2 = readInjected(true ? "1.0.58-rc.56" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
36917
+ const builtAt = readInjected(true ? "2026-09-01T08:32:25.689Z" : void 0);
36918
36918
  cached2 = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
36919
36919
  return cached2;
36920
36920
  }
@@ -48823,8 +48823,26 @@ ${blocks.join("\n\n")}`;
48823
48823
  {
48824
48824
  providerType: "antigravity-cli",
48825
48825
  imports: [
48826
+ // Security.framework resolves the default keychain through HOME.
48827
+ // Keep the worker-private HOME while linking macOS's keychain
48828
+ // directory back to the real home. This stays optional and
48829
+ // platform-agnostic: hosts without this path use the generic
48830
+ // missing-import skip contract below.
48831
+ { relativePath: path222.join("Library", "Keychains"), mode: "symlink" },
48826
48832
  { relativePath: path222.join(".gemini", "antigravity-cli", "antigravity-oauth-token"), mode: "symlink", required: true, requireOwnerOnly: true },
48827
48833
  { relativePath: path222.join(".gemini", "antigravity-cli", "settings.json"), mode: "symlink", requireOwnerOnly: true },
48834
+ // First-run onboarding completion — COPIED, never symlinked. Without
48835
+ // it the CLI opens its colour-scheme picker and then the Terms of
48836
+ // Service screen inside the worker PTY, where nobody is there to
48837
+ // answer: the session sits in `starting` making zero model calls
48838
+ // until it is reaped. Private HOMEs are keyed per TASK, so every
48839
+ // task would re-onboard without this.
48840
+ // Copy rather than symlink because the worker has no reason to
48841
+ // rewrite it, and a symlink would let a worker's write land in the
48842
+ // real user config. Not `required`: a host that has never run agy
48843
+ // (or any non-mac host laid out differently) must still launch, and
48844
+ // the generic missing-import skip contract covers it.
48845
+ { relativePath: path222.join(".gemini", "antigravity-cli", "cache", "onboarding.json"), mode: "copy" },
48828
48846
  // Transcript surfaces — linked THROUGH so the daemon's
48829
48847
  // os.homedir()-rooted reader still finds what the worker writes.
48830
48848
  // Not `required`: a fresh machine may not have them yet, and the
@@ -123940,7 +123958,7 @@ ${text}` : text;
123940
123958
  LOG2.warn("SpecAdapter", `[${this.cliType}] send_keys refused (actionable_modal): keys=${encoded.keys.join(",")} \u2014 use mesh_approve`);
123941
123959
  return { ok: false, refused: "actionable_modal", keys: encoded.keys, hasDestructive: encoded.hasDestructive };
123942
123960
  }
123943
- if (this.latestState?.status === "generating") {
123961
+ if (this.latestState?.status === "generating" && !encoded.hasDestructive) {
123944
123962
  const message = "session is generating; mesh_send_keys cannot write during an active turn. Use mesh_send_task with delivery_mode: 'interrupt' to interrupt it.";
123945
123963
  LOG2.warn("SpecAdapter", `[${this.cliType}] send_keys refused (generating): keys=${encoded.keys.join(",")} \u2014 use mesh_send_task delivery_mode=interrupt`);
123946
123964
  return { ok: false, refused: "generating", keys: encoded.keys, hasDestructive: encoded.hasDestructive, message };
@@ -124024,24 +124042,30 @@ ${text}` : text;
124024
124042
  }
124025
124043
  if (this.interactivePromptTransport === "tui") {
124026
124044
  const allowsFreeform = prompt.questions.some((q) => q.allowFreeform);
124027
- for (const question of prompt.questions) {
124045
+ let completedWithoutReview = false;
124046
+ questionLoop: for (const question of prompt.questions) {
124028
124047
  const questionSteps = buildClaudeInteractiveTuiAnswerSteps({
124029
124048
  ...prompt,
124030
124049
  questions: [question]
124031
124050
  }, response).slice(0, -1);
124032
124051
  for (const step of questionSteps) {
124033
- this.assertFocusedClaudeTuiQuestion(question);
124052
+ if (this.assertFocusedClaudeTuiQuestion(question, prompt) === "completed") {
124053
+ completedWithoutReview = true;
124054
+ break questionLoop;
124055
+ }
124034
124056
  this.driver.dispatch({ kind: "pty_write", data: step });
124035
124057
  await new Promise((resolve32) => setTimeout(resolve32, 180));
124036
124058
  }
124037
124059
  }
124038
- await this.assertFocusedClaudeTuiReview(prompt, allowsFreeform);
124039
- if (!this.activeInteractivePrompt) return;
124040
- if (this.activeInteractivePrompt.promptId !== prompt.promptId) {
124041
- throw new Error("Claude TUI active interactive prompt changed before review submission");
124060
+ if (!completedWithoutReview) {
124061
+ await this.assertFocusedClaudeTuiReview(prompt, allowsFreeform);
124062
+ if (!this.activeInteractivePrompt) return;
124063
+ if (this.activeInteractivePrompt.promptId !== prompt.promptId) {
124064
+ throw new Error("Claude TUI active interactive prompt changed before review submission");
124065
+ }
124066
+ this.driver.dispatch({ kind: "pty_write", data: "\r" });
124067
+ await new Promise((resolve32) => setTimeout(resolve32, 180));
124042
124068
  }
124043
- this.driver.dispatch({ kind: "pty_write", data: "\r" });
124044
- await new Promise((resolve32) => setTimeout(resolve32, 180));
124045
124069
  } else {
124046
124070
  this.driver.dispatch({ kind: "pty_write", data: `${buildClaudeInteractiveToolResult(response)}
124047
124071
  ` });
@@ -124799,12 +124823,17 @@ ${text}` : text;
124799
124823
  throw new Error(`Cannot verify the focused Claude TUI question before answering: ${error48?.message || error48}`);
124800
124824
  }
124801
124825
  }
124802
- assertFocusedClaudeTuiQuestion(expected) {
124826
+ assertFocusedClaudeTuiQuestion(expected, prompt) {
124803
124827
  const screenText = this.readClaudeTuiSnapshotForAnswer();
124804
124828
  const focused = readFocusedClaudeTuiQuestion(screenText);
124805
- if (focused && this.claudeTuiQuestionMatches(expected, focused)) return;
124806
- const observed = focused?.question ? `; focused question is "${focused.question}"` : "";
124807
- throw new Error(`Claude TUI focused question does not match the active interactive prompt (expected "${expected.question}"${observed})`);
124829
+ if (focused) {
124830
+ if (this.claudeTuiQuestionMatches(expected, focused)) return "focused";
124831
+ throw new Error(`Claude TUI focused question does not match the active interactive prompt (expected "${expected.question}"; focused question is "${focused.question}")`);
124832
+ }
124833
+ const resolvedByBoundToolResult = this.hasBoundClaudeAskUserQuestionToolResult(prompt);
124834
+ const resolvedByBusyAdvance = this.latestState?.status === "generating";
124835
+ if (resolvedByBoundToolResult || resolvedByBusyAdvance) return "completed";
124836
+ throw new Error(`Claude TUI focused question does not match the active interactive prompt (expected "${expected.question}")`);
124808
124837
  }
124809
124838
  /**
124810
124839
  * Wait for the review page to actually be on screen before the final Enter.