@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 +46 -17
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
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 ? "
|
|
36915
|
-
const commitShort = readInjected(true ? "
|
|
36916
|
-
const version2 = readInjected(true ? "1.0.58-rc.
|
|
36917
|
-
const builtAt = readInjected(true ? "2026-
|
|
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
|
-
|
|
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
|
-
|
|
124039
|
-
|
|
124040
|
-
|
|
124041
|
-
|
|
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
|
|
124806
|
-
|
|
124807
|
-
|
|
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.
|