@adhdev/daemon-core 0.9.82-rc.185 → 0.9.82-rc.186

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adhdev/daemon-core",
3
- "version": "0.9.82-rc.185",
3
+ "version": "0.9.82-rc.186",
4
4
  "description": "ADHDev daemon core — CDP, IDE detection, providers, command execution",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -110,6 +110,10 @@ export function prepareSessionChatTailUpdate(
110
110
  const messages = fullMessages
111
111
  const title = typeof result.title === 'string' ? result.title : undefined
112
112
  const activeModal = normalizeChatTailActiveModal(result.activeModal)
113
+ const activeInteractivePrompt = (result as { activeInteractivePrompt?: unknown }).activeInteractivePrompt
114
+ const promptForUpdate = activeInteractivePrompt && typeof activeInteractivePrompt === 'object'
115
+ ? activeInteractivePrompt as Record<string, unknown>
116
+ : null
113
117
  const status = typeof result.status === 'string' ? result.status : 'idle'
114
118
  // (A3) messageSource passthrough. v1 deliberately dropped this on the
115
119
  // subscription wire so the frontend had to infer source from message
@@ -126,6 +130,7 @@ export function prepareSessionChatTailUpdate(
126
130
  status,
127
131
  ...(title ? { title } : {}),
128
132
  ...(activeModal ? { activeModal } : {}),
133
+ ...(promptForUpdate ? { activeInteractivePrompt: promptForUpdate } : {}),
129
134
  })
130
135
  const seq = input.seq + 1
131
136
 
@@ -154,6 +159,7 @@ export function prepareSessionChatTailUpdate(
154
159
  status,
155
160
  ...(title ? { title } : {}),
156
161
  ...(activeModal ? { activeModal } : {}),
162
+ ...(promptForUpdate ? { activeInteractivePrompt: promptForUpdate as any } : {}),
157
163
  ...(messageSource ? { messageSource } : {}),
158
164
  },
159
165
  }
@@ -1613,8 +1613,10 @@ function summarizeStateForDebug(state: any): Record<string, unknown> | null {
1613
1613
  title: activeChat.title,
1614
1614
  messageCount: Array.isArray(activeChat.messages) ? activeChat.messages.length : undefined,
1615
1615
  activeModal: activeChat.activeModal,
1616
+ activeInteractivePrompt: activeChat.activeInteractivePrompt ?? null,
1616
1617
  messagesTail: Array.isArray(activeChat.messages) ? activeChat.messages.slice(-10) : undefined,
1617
1618
  } : null,
1619
+ activeInteractivePrompt: (state as { activeInteractivePrompt?: unknown }).activeInteractivePrompt ?? null,
1618
1620
  controlValues: state.controlValues,
1619
1621
  summaryMetadata: state.summaryMetadata,
1620
1622
  };
@@ -217,7 +217,19 @@ function parseClaudeHeaderlessInteractiveTuiQuestion(page: ClaudeInteractiveTuiP
217
217
  let question = '';
218
218
  for (let i = firstOptionIndex - 1; i >= 0; i -= 1) {
219
219
  const candidate = lines[i].trim();
220
- if (!candidate || /^─+$/.test(candidate) || /^[☐☒]\s+/.test(candidate)) continue;
220
+ if (!candidate || /^─+$/.test(candidate)) continue;
221
+ // Standalone ☐/☒ markers (decorative section dividers in the headered
222
+ // variant) are not the question — keep skipping them.
223
+ if (/^[☐☒]\s*$/.test(candidate)) continue;
224
+ // The headerless variant introduced in claude-cli >=2.1 prefixes the
225
+ // actual question with `☐ ` (e.g. "☐ RPS R1 1라운드 — …"). Previously
226
+ // we skipped any ☐/☒ line and returned null, never opening the picker.
227
+ // Strip the marker so the dashboard label matches the on-screen text.
228
+ const markerMatch = candidate.match(/^[☐☒]\s+(.+)$/);
229
+ if (markerMatch) {
230
+ question = markerMatch[1].trim();
231
+ break;
232
+ }
221
233
  question = candidate;
222
234
  break;
223
235
  }