@adhdev/daemon-standalone 0.9.82-rc.294 → 0.9.82-rc.295
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 +40 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -29983,10 +29983,10 @@ var require_dist3 = __commonJS({
|
|
|
29983
29983
|
}
|
|
29984
29984
|
function getDaemonBuildInfo() {
|
|
29985
29985
|
if (cached2) return cached2;
|
|
29986
|
-
const commit = readInjected(true ? "
|
|
29987
|
-
const commitShort = readInjected(true ? "
|
|
29988
|
-
const version2 = readInjected(true ? "0.9.82-rc.
|
|
29989
|
-
const builtAt = readInjected(true ? "2026-06-
|
|
29986
|
+
const commit = readInjected(true ? "dc26917ced80beb84689897738b6edb82208c146" : void 0) ?? "unknown";
|
|
29987
|
+
const commitShort = readInjected(true ? "dc26917c" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
|
|
29988
|
+
const version2 = readInjected(true ? "0.9.82-rc.295" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
|
|
29989
|
+
const builtAt = readInjected(true ? "2026-06-16T13:44:55.274Z" : void 0);
|
|
29990
29990
|
cached2 = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
|
|
29991
29991
|
return cached2;
|
|
29992
29992
|
}
|
|
@@ -45411,10 +45411,12 @@ ${lastSnapshot}`;
|
|
|
45411
45411
|
if (/Space to (?:select|toggle)|toggle selection|select multiple|select all that apply/i.test(screenText)) {
|
|
45412
45412
|
return true;
|
|
45413
45413
|
}
|
|
45414
|
-
const optionCheckbox =
|
|
45414
|
+
const optionCheckbox = `(?:\\[[ xX]\\]|[\u2610\u2612\u25FB\u25FC])`;
|
|
45415
|
+
const beforeNumber = new RegExp(`^\\s*(?:[\u276F\u203A>]\\s*)?${optionCheckbox}\\s*\\d+\\.\\s+\\S`);
|
|
45416
|
+
const afterNumber = new RegExp(`^\\s*(?:[\u276F\u203A>]\\s*)?\\d+\\.\\s*${optionCheckbox}\\s+\\S`);
|
|
45415
45417
|
for (const line of screenText.split(/\r?\n/)) {
|
|
45416
45418
|
if (line.includes("\u2714 Submit")) continue;
|
|
45417
|
-
if (
|
|
45419
|
+
if (beforeNumber.test(line) || afterNumber.test(line)) return true;
|
|
45418
45420
|
}
|
|
45419
45421
|
return false;
|
|
45420
45422
|
}
|
|
@@ -45554,6 +45556,16 @@ ${lastSnapshot}`;
|
|
|
45554
45556
|
...allowFreeform ? { allowFreeform: true } : {}
|
|
45555
45557
|
};
|
|
45556
45558
|
}
|
|
45559
|
+
function readFocusedClaudeTuiQuestion(screenText) {
|
|
45560
|
+
if (!screenText.includes("Enter to select")) return null;
|
|
45561
|
+
const parsed = parseClaudeInteractiveTuiQuestion({ screenText }, 0);
|
|
45562
|
+
if (!parsed) return null;
|
|
45563
|
+
return {
|
|
45564
|
+
question: parsed.question,
|
|
45565
|
+
...parsed.header ? { header: parsed.header } : {},
|
|
45566
|
+
multiSelect: parsed.multiSelect
|
|
45567
|
+
};
|
|
45568
|
+
}
|
|
45557
45569
|
function detectClaudeAskUserQuestionPromptFromTuiPages(pages, options) {
|
|
45558
45570
|
if (pages.length === 0) return null;
|
|
45559
45571
|
const headers = claudeTuiQuestionHeaders(pages[0].screenText);
|
|
@@ -61803,12 +61815,20 @@ ${formatManifestValidationIssues2(validation.issues)}`,
|
|
|
61803
61815
|
* question to multi-select and re-emit status. Promotion is one-way
|
|
61804
61816
|
* (false→true only) — once a question is known multi-select we never demote
|
|
61805
61817
|
* it, since the glyph column can scroll out of view on later frames.
|
|
61818
|
+
*
|
|
61819
|
+
* For MULTI-question prompts the per-page Tab capture is the actual source
|
|
61820
|
+
* of the bug: pages 2..N are snapshotted ~120ms after the Tab keypress,
|
|
61821
|
+
* before their option-row glyph column has redrawn, so those questions
|
|
61822
|
+
* freeze as single-select while page 1 (already settled) is correct. We
|
|
61823
|
+
* cannot upgrade blindly — the live snapshot shows only ONE focused page —
|
|
61824
|
+
* but we CAN read that page's question text/header and upgrade the matching
|
|
61825
|
+
* question. As the user navigates the picker (or it settles), each page is
|
|
61826
|
+
* eventually re-read and repaired.
|
|
61806
61827
|
*/
|
|
61807
61828
|
maybeUpgradeClaudeTuiMultiSelect() {
|
|
61808
61829
|
if (this.cliType !== "claude-cli" || this.interactivePromptTransport !== "tui" || !this.activeInteractivePrompt) return;
|
|
61809
61830
|
const questions = this.activeInteractivePrompt.questions;
|
|
61810
|
-
if (questions.
|
|
61811
|
-
if (questions[0].multiSelect) return;
|
|
61831
|
+
if (questions.every((q) => q.multiSelect)) return;
|
|
61812
61832
|
let screenText = "";
|
|
61813
61833
|
try {
|
|
61814
61834
|
screenText = this.driver.snapshot();
|
|
@@ -61816,8 +61836,18 @@ ${formatManifestValidationIssues2(validation.issues)}`,
|
|
|
61816
61836
|
return;
|
|
61817
61837
|
}
|
|
61818
61838
|
if (!screenText.includes("Enter to select")) return;
|
|
61819
|
-
if (
|
|
61820
|
-
|
|
61839
|
+
if (questions.length === 1) {
|
|
61840
|
+
if (questions[0].multiSelect) return;
|
|
61841
|
+
if (!detectClaudeTuiMultiSelect(screenText)) return;
|
|
61842
|
+
questions[0].multiSelect = true;
|
|
61843
|
+
this.statusCallback?.();
|
|
61844
|
+
return;
|
|
61845
|
+
}
|
|
61846
|
+
const focused = readFocusedClaudeTuiQuestion(screenText);
|
|
61847
|
+
if (!focused || !focused.multiSelect) return;
|
|
61848
|
+
const match = questions.find((q) => focused.header && q.header && q.header === focused.header || q.question === focused.question);
|
|
61849
|
+
if (!match || match.multiSelect) return;
|
|
61850
|
+
match.multiSelect = true;
|
|
61821
61851
|
this.statusCallback?.();
|
|
61822
61852
|
}
|
|
61823
61853
|
readClaudeTuiHeaders(screenText) {
|