adhdev 0.9.76-rc.43 → 0.9.76-rc.45

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/cli/index.js CHANGED
@@ -93825,7 +93825,7 @@ var init_adhdev_daemon = __esm({
93825
93825
  init_version();
93826
93826
  init_src();
93827
93827
  init_runtime_defaults();
93828
- pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.76-rc.43" });
93828
+ pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.76-rc.45" });
93829
93829
  AdhdevDaemon = class _AdhdevDaemon {
93830
93830
  localHttpServer = null;
93831
93831
  localWss = null;
package/dist/index.js CHANGED
@@ -62683,7 +62683,7 @@ var init_adhdev_daemon = __esm({
62683
62683
  init_version();
62684
62684
  init_src();
62685
62685
  init_runtime_defaults();
62686
- pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.76-rc.43" });
62686
+ pkgVersion = resolvePackageVersion({ injectedVersion: "0.9.76-rc.45" });
62687
62687
  AdhdevDaemon = class _AdhdevDaemon {
62688
62688
  localHttpServer = null;
62689
62689
  localWss = null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adhdev",
3
- "version": "0.9.76-rc.43",
3
+ "version": "0.9.76-rc.45",
4
4
  "description": "ADHDev — Agent Dashboard Hub for Dev. Remote-control AI coding agents from anywhere.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -47,7 +47,7 @@
47
47
  "node": ">=18"
48
48
  },
49
49
  "dependencies": {
50
- "@adhdev/daemon-core": "0.9.76-rc.43",
50
+ "@adhdev/daemon-core": "0.9.76-rc.45",
51
51
  "@adhdev/ghostty-vt-node": "*",
52
52
  "@modelcontextprotocol/sdk": "^1.0.0",
53
53
  "@xterm/addon-serialize": "^0.14.0",
@@ -32152,9 +32152,17 @@ async function handleResolveAction(h, args) {
32152
32152
  const targetState = targetInstance?.getState?.();
32153
32153
  const surfacedModal = targetState?.activeChat?.activeModal && Array.isArray(targetState.activeChat.activeModal.buttons) && targetState.activeChat.activeModal.buttons.some((candidate) => typeof candidate === "string" && candidate.trim()) ? targetState.activeChat.activeModal : null;
32154
32154
  const statusModal = status?.activeModal && Array.isArray(status.activeModal.buttons) && status.activeModal.buttons.some((candidate) => typeof candidate === "string" && candidate.trim()) ? status.activeModal : null;
32155
- const effectiveModal = statusModal || surfacedModal;
32156
- const effectiveStatus = status?.status === "waiting_approval" || targetState?.activeChat?.status === "waiting_approval" ? "waiting_approval" : status?.status;
32157
- LOG.info("Command", `[resolveAction] CLI PTY gate target=${String(args?.targetSessionId || "")} rawStatus=${String(status?.status || "")} effectiveStatus=${String(effectiveStatus || "")} statusModal=${statusModal ? "yes" : "no"} surfacedModal=${surfacedModal ? "yes" : "no"} instance=${targetInstance ? "yes" : "no"}`);
32155
+ const parsedStatus = !statusModal && !surfacedModal && typeof adapter.getScriptParsedStatus === "function" ? (() => {
32156
+ try {
32157
+ return parseMaybeJson(adapter.getScriptParsedStatus());
32158
+ } catch {
32159
+ return null;
32160
+ }
32161
+ })() : null;
32162
+ const parsedModal = parsedStatus?.status === "waiting_approval" && parsedStatus?.activeModal && Array.isArray(parsedStatus.activeModal.buttons) && parsedStatus.activeModal.buttons.some((candidate) => typeof candidate === "string" && candidate.trim()) ? parsedStatus.activeModal : null;
32163
+ const effectiveModal = statusModal || surfacedModal || parsedModal;
32164
+ const effectiveStatus = status?.status === "waiting_approval" || targetState?.activeChat?.status === "waiting_approval" || parsedStatus?.status === "waiting_approval" ? "waiting_approval" : status?.status;
32165
+ LOG.info("Command", `[resolveAction] CLI PTY gate target=${String(args?.targetSessionId || "")} rawStatus=${String(status?.status || "")} effectiveStatus=${String(effectiveStatus || "")} statusModal=${statusModal ? "yes" : "no"} surfacedModal=${surfacedModal ? "yes" : "no"} parsedModal=${parsedModal ? "yes" : "no"} instance=${targetInstance ? "yes" : "no"}`);
32158
32166
  if (!effectiveModal) {
32159
32167
  return { success: false, error: "Not in approval state" };
32160
32168
  }
@@ -41987,7 +41995,14 @@ ${lastSnapshot}`;
41987
41995
  })() : null;
41988
41996
  const parsedSessionStatus = typeof parsedStatusBeforeSend?.status === "string" ? String(parsedStatusBeforeSend.status) : "";
41989
41997
  if (!allowInputDuringGeneration && (parsedSessionStatus === "generating" || parsedSessionStatus === "long_generating")) {
41990
- throw new Error(`${this.cliName} is still processing the previous prompt`);
41998
+ const parsedModal = parsedStatusBeforeSend?.activeModal ?? parsedStatusBeforeSend?.modal ?? null;
41999
+ const parsedHasActionableModal = Boolean(
42000
+ parsedModal && Array.isArray(parsedModal.buttons) && parsedModal.buttons.some((candidate) => typeof candidate === "string" && candidate.trim())
42001
+ );
42002
+ const terminalLooksIdle = this.currentStatus === "idle" && this.runDetectStatus(this.recentOutputBuffer) === "idle" && !this.isWaitingForResponse && !this.currentTurnScope && !this.hasActionableApproval() && !parsedHasActionableModal;
42003
+ if (!terminalLooksIdle) {
42004
+ throw new Error(`${this.cliName} is still processing the previous prompt`);
42005
+ }
41991
42006
  }
41992
42007
  if (this.isWaitingForResponse && !allowInputDuringGeneration) {
41993
42008
  if (!this.clearStaleIdleResponseGuard("send_message_guard")) {