@a1hvdy/cc-openclaw 0.26.2 → 0.26.4
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/src/channels/telegram-mirror/askuser.d.ts +97 -0
- package/dist/src/channels/telegram-mirror/askuser.js +267 -0
- package/dist/src/channels/telegram-mirror/askuser.js.map +1 -0
- package/dist/src/channels/telegram-mirror/card-renderer.d.ts +7 -0
- package/dist/src/channels/telegram-mirror/card-renderer.js +36 -1
- package/dist/src/channels/telegram-mirror/card-renderer.js.map +1 -1
- package/dist/src/channels/telegram-mirror/inbound-handler.d.ts +10 -0
- package/dist/src/channels/telegram-mirror/inbound-handler.js +54 -0
- package/dist/src/channels/telegram-mirror/inbound-handler.js.map +1 -1
- package/dist/src/channels/telegram-mirror/index.d.ts +2 -0
- package/dist/src/channels/telegram-mirror/index.js +11 -0
- package/dist/src/channels/telegram-mirror/index.js.map +1 -1
- package/dist/src/channels/telegram-mirror/turn-bridge.js +16 -0
- package/dist/src/channels/telegram-mirror/turn-bridge.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/channels/telegram-mirror/askuser.ts — v0.26.3 M5.
|
|
3
|
+
*
|
|
4
|
+
* Renders Claude Code's AskUserQuestion tool as native Telegram inline
|
|
5
|
+
* keyboards, "next-turn model" (Path A, chosen by A1 2026-05-20):
|
|
6
|
+
*
|
|
7
|
+
* agent calls AskUserQuestion → turn ends
|
|
8
|
+
* → we send a keyboard message (single-select: one button per option +
|
|
9
|
+
* "✍️ Write something else"; multi-select: checkbox toggles + Submit)
|
|
10
|
+
* → user taps → api.registerInteractiveHandler fires
|
|
11
|
+
* → we answer the callback, edit the message to show the choice, and
|
|
12
|
+
* api.enqueueNextTurnInjection() queues the answer as context for the
|
|
13
|
+
* agent's NEXT turn (it is acted on when the next message runs — the
|
|
14
|
+
* documented primitive injects context, it does not start a turn).
|
|
15
|
+
*
|
|
16
|
+
* Feasibility proven 2026-05-20: the headless subprocess DOES emit an
|
|
17
|
+
* AskUserQuestion tool_use (pushToolUse name=AskUserQuestion). The tool emits
|
|
18
|
+
* twice (dual content_block_start + assistant-block), so capture dedups by
|
|
19
|
+
* tool_use id.
|
|
20
|
+
*
|
|
21
|
+
* Telegram has no ANSI color — checkboxes use ☐/☑ glyphs.
|
|
22
|
+
*/
|
|
23
|
+
/** Namespace prefix for callback_data so api.registerInteractiveHandler routes
|
|
24
|
+
* taps here. Matched at the first ':' by the gateway (must be [A-Za-z0-9._-]+). */
|
|
25
|
+
export declare const ASKUSER_NS = "ccmirror";
|
|
26
|
+
interface QOption {
|
|
27
|
+
label: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
}
|
|
30
|
+
interface ParsedQuestion {
|
|
31
|
+
header: string;
|
|
32
|
+
question: string;
|
|
33
|
+
multiSelect: boolean;
|
|
34
|
+
options: QOption[];
|
|
35
|
+
}
|
|
36
|
+
/** Minimal subset of the registerInteractiveHandler ctx we use. */
|
|
37
|
+
export interface InteractiveCtx {
|
|
38
|
+
callback: {
|
|
39
|
+
id?: string;
|
|
40
|
+
data?: string;
|
|
41
|
+
namespace?: string;
|
|
42
|
+
payload?: string;
|
|
43
|
+
};
|
|
44
|
+
chatId?: string | number;
|
|
45
|
+
conversationId?: string;
|
|
46
|
+
sessionKey?: string;
|
|
47
|
+
threadId?: number;
|
|
48
|
+
respond?: {
|
|
49
|
+
editMessage?: (text: string) => Promise<unknown>;
|
|
50
|
+
answer?: (text?: string) => Promise<unknown>;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Minimal subset of the plugin api we use (next-turn injection). */
|
|
54
|
+
export interface InjectApi {
|
|
55
|
+
enqueueNextTurnInjection?: (injection: {
|
|
56
|
+
sessionKey: string;
|
|
57
|
+
text: string;
|
|
58
|
+
placement?: 'prepend_context' | 'append_context';
|
|
59
|
+
idempotencyKey?: string;
|
|
60
|
+
}) => unknown;
|
|
61
|
+
}
|
|
62
|
+
/** Record the real agent session key for a chat (called from inbound before_dispatch). */
|
|
63
|
+
export declare function rememberSessionKey(chatId: string, sessionKey: string | undefined): void;
|
|
64
|
+
/** Parse the FIRST question from an AskUserQuestion tool input. Defensive —
|
|
65
|
+
* returns undefined if the shape isn't usable (no fabrication). */
|
|
66
|
+
export declare function parseFirstQuestion(input: Record<string, unknown> | undefined): ParsedQuestion | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Capture an AskUserQuestion tool_use and render the keyboard. Called from
|
|
69
|
+
* turn-bridge when name === 'AskUserQuestion'. Dedups the dual-emission by
|
|
70
|
+
* tool_use id. Best-effort: a send failure must not break the turn.
|
|
71
|
+
*/
|
|
72
|
+
export declare function captureAskUserQuestion(chatId: string, threadId: number | undefined, input: Record<string, unknown> | undefined, toolUseId: string | undefined): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Handle an inline-button tap routed from api.registerInteractiveHandler.
|
|
75
|
+
* Resolves the callback payload, updates state, and on a terminal choice
|
|
76
|
+
* (single-select option, multi-select Submit) injects the answer for the next
|
|
77
|
+
* turn. "Write something else" just prompts the user to type — their typed
|
|
78
|
+
* message becomes the next turn naturally, so no injection is needed.
|
|
79
|
+
*/
|
|
80
|
+
export declare function handleTap(ctx: InteractiveCtx, api: InjectApi): Promise<void>;
|
|
81
|
+
/** True if an inbound message text is actually an AskUserQuestion button tap.
|
|
82
|
+
* The gateway delivers taps on plugin-sent keyboards as before_dispatch
|
|
83
|
+
* messages with text = the callback_data (`ccmirror:<id>`), NOT as routed
|
|
84
|
+
* interactive-handler callbacks — so we intercept them in before_dispatch. */
|
|
85
|
+
export declare function isAskUserCallback(text: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Handle a tap that arrived as a before_dispatch message (text=`ccmirror:<id>`).
|
|
88
|
+
* Builds a synthetic ctx (conversationId = chatId resolves the remembered
|
|
89
|
+
* session key) and runs the normal tap logic. Caller MUST claim the event so
|
|
90
|
+
* the literal callback_data never reaches the agent.
|
|
91
|
+
*/
|
|
92
|
+
export declare function handleTapData(text: string, chatId: string, api: InjectApi): Promise<void>;
|
|
93
|
+
/** Test-only — reset module state. */
|
|
94
|
+
export declare function _resetAskUserForTests(): void;
|
|
95
|
+
/** Test-only — peek pending question count. */
|
|
96
|
+
export declare function _pendingCount(): number;
|
|
97
|
+
export {};
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/channels/telegram-mirror/askuser.ts — v0.26.3 M5.
|
|
3
|
+
*
|
|
4
|
+
* Renders Claude Code's AskUserQuestion tool as native Telegram inline
|
|
5
|
+
* keyboards, "next-turn model" (Path A, chosen by A1 2026-05-20):
|
|
6
|
+
*
|
|
7
|
+
* agent calls AskUserQuestion → turn ends
|
|
8
|
+
* → we send a keyboard message (single-select: one button per option +
|
|
9
|
+
* "✍️ Write something else"; multi-select: checkbox toggles + Submit)
|
|
10
|
+
* → user taps → api.registerInteractiveHandler fires
|
|
11
|
+
* → we answer the callback, edit the message to show the choice, and
|
|
12
|
+
* api.enqueueNextTurnInjection() queues the answer as context for the
|
|
13
|
+
* agent's NEXT turn (it is acted on when the next message runs — the
|
|
14
|
+
* documented primitive injects context, it does not start a turn).
|
|
15
|
+
*
|
|
16
|
+
* Feasibility proven 2026-05-20: the headless subprocess DOES emit an
|
|
17
|
+
* AskUserQuestion tool_use (pushToolUse name=AskUserQuestion). The tool emits
|
|
18
|
+
* twice (dual content_block_start + assistant-block), so capture dedups by
|
|
19
|
+
* tool_use id.
|
|
20
|
+
*
|
|
21
|
+
* Telegram has no ANSI color — checkboxes use ☐/☑ glyphs.
|
|
22
|
+
*/
|
|
23
|
+
import { CallbackMap } from './callback-mapping.js';
|
|
24
|
+
import { sendTg, editTg, telegramApi } from '../../lib/telegram-bot-api.js';
|
|
25
|
+
/** Namespace prefix for callback_data so api.registerInteractiveHandler routes
|
|
26
|
+
* taps here. Matched at the first ':' by the gateway (must be [A-Za-z0-9._-]+). */
|
|
27
|
+
export const ASKUSER_NS = 'ccmirror';
|
|
28
|
+
const _cb = new CallbackMap();
|
|
29
|
+
const _questions = new Map();
|
|
30
|
+
const _seenToolUse = new Set();
|
|
31
|
+
// v0.26.4 — chatId → real agent session key (e.g. agent:main:telegram:direct:NNN).
|
|
32
|
+
// The gateway's tap ctx only carries conversationId = String(chatId), but
|
|
33
|
+
// enqueueNextTurnInjection matches the AGENT session-store key. The inbound
|
|
34
|
+
// before_dispatch event carries the true sessionKey; remember it per chat so a
|
|
35
|
+
// tap (which arrives after the turn, when the card is gone) can resolve it.
|
|
36
|
+
const _chatSessionKeys = new Map();
|
|
37
|
+
/** Record the real agent session key for a chat (called from inbound before_dispatch). */
|
|
38
|
+
export function rememberSessionKey(chatId, sessionKey) {
|
|
39
|
+
if (chatId && sessionKey)
|
|
40
|
+
_chatSessionKeys.set(chatId, sessionKey);
|
|
41
|
+
}
|
|
42
|
+
/** Parse the FIRST question from an AskUserQuestion tool input. Defensive —
|
|
43
|
+
* returns undefined if the shape isn't usable (no fabrication). */
|
|
44
|
+
export function parseFirstQuestion(input) {
|
|
45
|
+
const questions = input?.questions;
|
|
46
|
+
if (!Array.isArray(questions) || questions.length === 0)
|
|
47
|
+
return undefined;
|
|
48
|
+
const q = questions[0];
|
|
49
|
+
const question = typeof q.question === 'string' ? q.question : '';
|
|
50
|
+
if (!question)
|
|
51
|
+
return undefined;
|
|
52
|
+
const header = typeof q.header === 'string' ? q.header : 'Question';
|
|
53
|
+
const multiSelect = q.multiSelect === true;
|
|
54
|
+
const rawOpts = Array.isArray(q.options) ? q.options : [];
|
|
55
|
+
const options = [];
|
|
56
|
+
for (const o of rawOpts) {
|
|
57
|
+
const oo = (o ?? {});
|
|
58
|
+
const label = typeof oo.label === 'string' ? oo.label : '';
|
|
59
|
+
if (!label)
|
|
60
|
+
continue;
|
|
61
|
+
options.push(typeof oo.description === 'string' ? { label, description: oo.description } : { label });
|
|
62
|
+
}
|
|
63
|
+
if (options.length === 0)
|
|
64
|
+
return undefined;
|
|
65
|
+
return { header, question, multiSelect, options };
|
|
66
|
+
}
|
|
67
|
+
function shortQid() {
|
|
68
|
+
return Math.random().toString(36).slice(2, 8);
|
|
69
|
+
}
|
|
70
|
+
function bodyText(s) {
|
|
71
|
+
const lines = [`❓ ${s.header}`, s.question];
|
|
72
|
+
// v0.26.4 polish — list options with their descriptions in the body (buttons
|
|
73
|
+
// only show the label, so descriptions would otherwise be lost).
|
|
74
|
+
const described = s.options.filter((o) => o.description);
|
|
75
|
+
if (described.length > 0) {
|
|
76
|
+
lines.push('');
|
|
77
|
+
s.options.forEach((o, i) => {
|
|
78
|
+
lines.push(o.description ? `${i + 1}. ${o.label} — ${o.description}` : `${i + 1}. ${o.label}`);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (s.multiSelect)
|
|
82
|
+
lines.push('', '(select one or more, then Submit)');
|
|
83
|
+
return lines.join('\n');
|
|
84
|
+
}
|
|
85
|
+
/** Build the inline keyboard for a question. callback_data is
|
|
86
|
+
* `ccmirror:<CallbackMap id>` so the gateway routes taps to our handler. */
|
|
87
|
+
function buildKeyboard(qid, s) {
|
|
88
|
+
const rows = [];
|
|
89
|
+
s.options.forEach((opt, idx) => {
|
|
90
|
+
const checked = s.multiSelect ? (s.selected.has(idx) ? '☑ ' : '☐ ') : '';
|
|
91
|
+
const id = _cb.create({ qid, kind: 'opt', idx });
|
|
92
|
+
rows.push([{ text: `${checked}${opt.label}`, callback_data: `${ASKUSER_NS}:${id}` }]);
|
|
93
|
+
});
|
|
94
|
+
if (s.multiSelect) {
|
|
95
|
+
const sid = _cb.create({ qid, kind: 'submit' });
|
|
96
|
+
rows.push([{ text: '✅ Submit', callback_data: `${ASKUSER_NS}:${sid}` }]);
|
|
97
|
+
}
|
|
98
|
+
const oid = _cb.create({ qid, kind: 'other' });
|
|
99
|
+
rows.push([{ text: '✍️ Write something else', callback_data: `${ASKUSER_NS}:${oid}` }]);
|
|
100
|
+
return { inline_keyboard: rows };
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Capture an AskUserQuestion tool_use and render the keyboard. Called from
|
|
104
|
+
* turn-bridge when name === 'AskUserQuestion'. Dedups the dual-emission by
|
|
105
|
+
* tool_use id. Best-effort: a send failure must not break the turn.
|
|
106
|
+
*/
|
|
107
|
+
export async function captureAskUserQuestion(chatId, threadId, input, toolUseId) {
|
|
108
|
+
// Parse BEFORE dedup. The tool emits twice: content_block_start with
|
|
109
|
+
// input:{} (empty — args stream later) and the assistant-block with the full
|
|
110
|
+
// {questions:[...]}. Marking seen before parsing let the empty emission eat
|
|
111
|
+
// the dedup slot and skip the real one → no keyboard. So: only dedup once we
|
|
112
|
+
// have a parseable question.
|
|
113
|
+
const parsed = parseFirstQuestion(input);
|
|
114
|
+
process.stderr.write(`[cc-openclaw/askuser] capture chat=${chatId} toolUseId=${toolUseId ?? 'none'} parsed=${parsed ? parsed.options.length : 0} inputKeys=${input ? Object.keys(input).join(',') || 'empty' : 'none'}\n`);
|
|
115
|
+
if (!parsed)
|
|
116
|
+
return;
|
|
117
|
+
if (toolUseId) {
|
|
118
|
+
if (_seenToolUse.has(toolUseId))
|
|
119
|
+
return;
|
|
120
|
+
_seenToolUse.add(toolUseId);
|
|
121
|
+
}
|
|
122
|
+
const qid = shortQid();
|
|
123
|
+
const state = { ...parsed, chatId, threadId, selected: new Set(), resolved: false };
|
|
124
|
+
_questions.set(qid, state);
|
|
125
|
+
try {
|
|
126
|
+
const res = (await sendTg(chatId, bodyText(state), threadId !== undefined ? String(threadId) : undefined, buildKeyboard(qid, state)));
|
|
127
|
+
state.messageId = res?.result?.message_id;
|
|
128
|
+
process.stderr.write(`[cc-openclaw/askuser] rendered qid=${qid} opts=${state.options.length} multi=${state.multiSelect} chat=${chatId} msg=${state.messageId}\n`);
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
process.stderr.write(`[cc-openclaw/askuser] keyboard send failed chat=${chatId}: ${err.message}\n`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function injectAnswer(api, ctx, text) {
|
|
135
|
+
// Resolve the REAL agent session key. The tap ctx gives conversationId =
|
|
136
|
+
// String(chatId) (or "chatId:topic:thread"), NOT the agent session-store key
|
|
137
|
+
// enqueueNextTurnInjection needs. Prefer the key remembered from
|
|
138
|
+
// before_dispatch; fall back to ctx fields only if unknown.
|
|
139
|
+
const conv = String(ctx.conversationId ?? '');
|
|
140
|
+
const chatPart = conv.includes(':topic:') ? conv.slice(0, conv.indexOf(':topic:')) : conv;
|
|
141
|
+
const sessionKey = _chatSessionKeys.get(conv) ?? _chatSessionKeys.get(chatPart) ?? ctx.sessionKey ?? ctx.conversationId;
|
|
142
|
+
if (!sessionKey || !api.enqueueNextTurnInjection) {
|
|
143
|
+
process.stderr.write(`[cc-openclaw/askuser] inject SKIPPED sessionKey=${sessionKey ?? 'none'} hasInject=${typeof api.enqueueNextTurnInjection === 'function'}\n`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
api.enqueueNextTurnInjection({
|
|
148
|
+
sessionKey,
|
|
149
|
+
text: `[User answered the AskUserQuestion]: ${text}`,
|
|
150
|
+
placement: 'append_context',
|
|
151
|
+
idempotencyKey: `askuser-${sessionKey}-${Date.now()}`,
|
|
152
|
+
});
|
|
153
|
+
process.stderr.write(`[cc-openclaw/askuser] injected sessionKey=${sessionKey} text=${JSON.stringify(text.slice(0, 60))}\n`);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
process.stderr.write(`[cc-openclaw/askuser] inject failed: ${err.message}\n`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async function answerCb(ctx, text) {
|
|
160
|
+
try {
|
|
161
|
+
if (ctx.respond?.answer)
|
|
162
|
+
await ctx.respond.answer(text);
|
|
163
|
+
else if (ctx.callback.id)
|
|
164
|
+
await telegramApi('answerCallbackQuery', { callback_query_id: ctx.callback.id, text });
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
/* answering the callback is best-effort */
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async function editQ(s, text, keyboard) {
|
|
171
|
+
if (s.messageId === undefined)
|
|
172
|
+
return;
|
|
173
|
+
try {
|
|
174
|
+
await editTg(s.chatId, s.messageId, text, keyboard);
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
const m = err.message;
|
|
178
|
+
if (!/message is not modified/i.test(m)) {
|
|
179
|
+
process.stderr.write(`[cc-openclaw/askuser] edit failed: ${m}\n`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Handle an inline-button tap routed from api.registerInteractiveHandler.
|
|
185
|
+
* Resolves the callback payload, updates state, and on a terminal choice
|
|
186
|
+
* (single-select option, multi-select Submit) injects the answer for the next
|
|
187
|
+
* turn. "Write something else" just prompts the user to type — their typed
|
|
188
|
+
* message becomes the next turn naturally, so no injection is needed.
|
|
189
|
+
*/
|
|
190
|
+
export async function handleTap(ctx, api) {
|
|
191
|
+
const id = ctx.callback.payload ?? '';
|
|
192
|
+
const payload = _cb.get(id);
|
|
193
|
+
process.stderr.write(`[cc-openclaw/askuser] tap payload=${id} kind=${payload?.kind ?? 'EXPIRED'} sessionKey=${ctx.sessionKey ?? ctx.conversationId ?? 'none'}\n`);
|
|
194
|
+
if (!payload) {
|
|
195
|
+
await answerCb(ctx, 'This prompt expired.');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const s = _questions.get(payload.qid);
|
|
199
|
+
if (!s) {
|
|
200
|
+
await answerCb(ctx, 'This prompt is no longer active.');
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if (payload.kind === 'other') {
|
|
204
|
+
await answerCb(ctx, 'Type your answer as a message.');
|
|
205
|
+
await editQ(s, `${bodyText(s)}\n\n✍️ Type your answer as a normal message.`);
|
|
206
|
+
_questions.delete(payload.qid);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (payload.kind === 'opt' && !s.multiSelect) {
|
|
210
|
+
const label = s.options[payload.idx]?.label ?? '';
|
|
211
|
+
await answerCb(ctx, `Selected: ${label}`);
|
|
212
|
+
await editQ(s, `❓ ${s.header}\n${s.question}\n\n✓ You chose: ${label}`);
|
|
213
|
+
injectAnswer(api, ctx, label);
|
|
214
|
+
_questions.delete(payload.qid);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (payload.kind === 'opt' && s.multiSelect) {
|
|
218
|
+
if (s.selected.has(payload.idx))
|
|
219
|
+
s.selected.delete(payload.idx);
|
|
220
|
+
else
|
|
221
|
+
s.selected.add(payload.idx);
|
|
222
|
+
await answerCb(ctx);
|
|
223
|
+
await editQ(s, bodyText(s), buildKeyboard(payload.qid, s));
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (payload.kind === 'submit') {
|
|
227
|
+
const labels = [...s.selected].sort((a, b) => a - b).map((i) => s.options[i]?.label ?? '');
|
|
228
|
+
if (labels.length === 0) {
|
|
229
|
+
await answerCb(ctx, 'Select at least one option first.');
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
await answerCb(ctx, `Submitted ${labels.length}`);
|
|
233
|
+
await editQ(s, `❓ ${s.header}\n${s.question}\n\n✓ You chose: ${labels.join(', ')}`);
|
|
234
|
+
injectAnswer(api, ctx, labels.join(', '));
|
|
235
|
+
_questions.delete(payload.qid);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/** True if an inbound message text is actually an AskUserQuestion button tap.
|
|
240
|
+
* The gateway delivers taps on plugin-sent keyboards as before_dispatch
|
|
241
|
+
* messages with text = the callback_data (`ccmirror:<id>`), NOT as routed
|
|
242
|
+
* interactive-handler callbacks — so we intercept them in before_dispatch. */
|
|
243
|
+
export function isAskUserCallback(text) {
|
|
244
|
+
return typeof text === 'string' && text.startsWith(`${ASKUSER_NS}:`);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Handle a tap that arrived as a before_dispatch message (text=`ccmirror:<id>`).
|
|
248
|
+
* Builds a synthetic ctx (conversationId = chatId resolves the remembered
|
|
249
|
+
* session key) and runs the normal tap logic. Caller MUST claim the event so
|
|
250
|
+
* the literal callback_data never reaches the agent.
|
|
251
|
+
*/
|
|
252
|
+
export async function handleTapData(text, chatId, api) {
|
|
253
|
+
const id = text.slice(ASKUSER_NS.length + 1);
|
|
254
|
+
await handleTap({ callback: { payload: id }, conversationId: chatId }, api);
|
|
255
|
+
}
|
|
256
|
+
/** Test-only — reset module state. */
|
|
257
|
+
export function _resetAskUserForTests() {
|
|
258
|
+
_questions.clear();
|
|
259
|
+
_seenToolUse.clear();
|
|
260
|
+
_cb.clear();
|
|
261
|
+
_chatSessionKeys.clear();
|
|
262
|
+
}
|
|
263
|
+
/** Test-only — peek pending question count. */
|
|
264
|
+
export function _pendingCount() {
|
|
265
|
+
return _questions.size;
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=askuser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"askuser.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/askuser.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,13 @@ import type { CardMeta } from './card-state.js';
|
|
|
21
21
|
* "… Read · src/index.ts"
|
|
22
22
|
* "✗ Edit · …error glyph at left"
|
|
23
23
|
*/
|
|
24
|
+
/**
|
|
25
|
+
* Tool-type emoji icon (v0.26.4 styling). Pure unicode — renders in Telegram's
|
|
26
|
+
* plain-text mode (the card currently sends as plain because unescaped
|
|
27
|
+
* MarkdownV2 specials fail the parse; emoji/dividers work regardless). Unknown
|
|
28
|
+
* tools get a neutral marker.
|
|
29
|
+
*/
|
|
30
|
+
export declare function toolIcon(name: string): string;
|
|
24
31
|
export declare function renderToolLine(tc: ToolCallRecord): string;
|
|
25
32
|
/**
|
|
26
33
|
* Render the thinking block (M6). Each line of the thinking text is
|
|
@@ -54,10 +54,41 @@ function toolInputSummary(tc) {
|
|
|
54
54
|
* "… Read · src/index.ts"
|
|
55
55
|
* "✗ Edit · …error glyph at left"
|
|
56
56
|
*/
|
|
57
|
+
/**
|
|
58
|
+
* Tool-type emoji icon (v0.26.4 styling). Pure unicode — renders in Telegram's
|
|
59
|
+
* plain-text mode (the card currently sends as plain because unescaped
|
|
60
|
+
* MarkdownV2 specials fail the parse; emoji/dividers work regardless). Unknown
|
|
61
|
+
* tools get a neutral marker.
|
|
62
|
+
*/
|
|
63
|
+
export function toolIcon(name) {
|
|
64
|
+
const n = name.toLowerCase();
|
|
65
|
+
if (n === 'bash' || n === 'shell')
|
|
66
|
+
return '🔧';
|
|
67
|
+
if (n === 'read')
|
|
68
|
+
return '📖';
|
|
69
|
+
if (n === 'edit' || n === 'multiedit')
|
|
70
|
+
return '✏️';
|
|
71
|
+
if (n === 'write')
|
|
72
|
+
return '📝';
|
|
73
|
+
if (n === 'grep' || n === 'glob' || n === 'ls')
|
|
74
|
+
return '🔍';
|
|
75
|
+
if (n.startsWith('webfetch') || n.startsWith('websearch') || n === 'fetch')
|
|
76
|
+
return '🌐';
|
|
77
|
+
if (n === 'task' || n === 'agent')
|
|
78
|
+
return '🤖';
|
|
79
|
+
if (n === 'todowrite')
|
|
80
|
+
return '☑️';
|
|
81
|
+
if (n === 'askuserquestion')
|
|
82
|
+
return '❓';
|
|
83
|
+
if (n.startsWith('mcp__'))
|
|
84
|
+
return '🔌';
|
|
85
|
+
return '🔹';
|
|
86
|
+
}
|
|
57
87
|
export function renderToolLine(tc) {
|
|
58
88
|
const glyph = toolGlyph(tc);
|
|
89
|
+
const icon = toolIcon(tc.name);
|
|
59
90
|
const summary = toolInputSummary(tc);
|
|
60
|
-
return summary ? `${glyph} ${tc.name} · ${summary}` : `${glyph} ${tc.name}`;
|
|
91
|
+
return summary ? `${glyph} ${icon} ${tc.name} · ${summary}` : `${glyph} ${icon} ${tc.name}`;
|
|
61
92
|
}
|
|
62
93
|
/**
|
|
63
94
|
* Render the thinking block (M6). Each line of the thinking text is
|
|
@@ -109,6 +140,10 @@ export function renderTurn(turn, meta) {
|
|
|
109
140
|
const meters = renderMeters(meta);
|
|
110
141
|
if (meters)
|
|
111
142
|
lines.push(meters);
|
|
143
|
+
// v0.26.4 styling — divider between the status/telemetry block and the
|
|
144
|
+
// activity block (only when a status block was actually rendered).
|
|
145
|
+
if (lines.length > 0)
|
|
146
|
+
lines.push('━━━━━━━━━━━━');
|
|
112
147
|
}
|
|
113
148
|
const header = turn.state === 'done' ? '✓ Done' : '▶ Working';
|
|
114
149
|
lines.push(header);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-renderer.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/card-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/E;;;GAGG;AACH,SAAS,SAAS,CAAC,EAAkB;IACnC,IAAI,EAAE,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAC3B,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,EAAkB;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;IACvB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACnD,kEAAkE;IAClE,MAAM,MAAM,GACV,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAC/B,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YACnC,CAAC,CAAC,KAAK,CAAC,SAAS;YACjB,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAC9B,CAAC,CAAC,KAAK,CAAC,IAAI;gBACZ,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;oBAC7B,CAAC,CAAC,KAAK,CAAC,GAAG;oBACX,CAAC,CAAC,EAAE,CAAC;IACf,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,EAAkB;IAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"card-renderer.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/card-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,12 +24,22 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import { CallbackMap } from './callback-mapping.js';
|
|
26
26
|
import { ComposeBuffer } from './compose-buffer.js';
|
|
27
|
+
import { type InteractiveCtx, type InjectApi } from './askuser.js';
|
|
27
28
|
export interface InboundHandlerApi {
|
|
28
29
|
on(event: string, handler: (...args: unknown[]) => unknown | Promise<unknown>): void;
|
|
29
30
|
logger?: {
|
|
30
31
|
info: (msg: string) => void;
|
|
31
32
|
warn: (msg: string) => void;
|
|
32
33
|
};
|
|
34
|
+
/** v0.26.3 M5 — forwarded from the full OpenClaw plugin api (index.ts) so
|
|
35
|
+
* AskUserQuestion inline-keyboard taps can be received + answered. Optional:
|
|
36
|
+
* absent on OpenClaw builds that don't expose it. */
|
|
37
|
+
registerInteractiveHandler?: (registration: {
|
|
38
|
+
channel: string;
|
|
39
|
+
namespace: string;
|
|
40
|
+
handler: (ctx: InteractiveCtx) => unknown;
|
|
41
|
+
}) => unknown;
|
|
42
|
+
enqueueNextTurnInjection?: InjectApi['enqueueNextTurnInjection'];
|
|
33
43
|
}
|
|
34
44
|
/**
|
|
35
45
|
* Internal handler state — exported only for tests so they can inspect
|
|
@@ -29,7 +29,11 @@ import { ComposeBuffer } from './compose-buffer.js';
|
|
|
29
29
|
import { TurnStateMachine } from './state-machine.js';
|
|
30
30
|
import { renderTurn } from './card-renderer.js';
|
|
31
31
|
import { cardState as _cardState, cardStateDebug } from './card-state.js';
|
|
32
|
+
import { handleTap, handleTapData, isAskUserCallback, rememberSessionKey, ASKUSER_NS, } from './askuser.js';
|
|
32
33
|
const PLUGIN_TAG = '[cc-openclaw/telegram-mirror/inbound]';
|
|
34
|
+
// v0.26.3 M5 — register the AskUserQuestion interactive tap handler exactly
|
|
35
|
+
// once per process (registerInboundHandler runs on every register() call).
|
|
36
|
+
let _interactiveRegistered = false;
|
|
33
37
|
/**
|
|
34
38
|
* Parse Telegram chat id out of a session key. Session keys look like
|
|
35
39
|
* "agent:main:telegram:direct:442300061" or
|
|
@@ -163,6 +167,30 @@ export function _resetSubscriptionForTests() {
|
|
|
163
167
|
export function registerInboundHandler(api, state = createHandlerState()) {
|
|
164
168
|
const logger = (api.logger ?? console);
|
|
165
169
|
_states.add(state);
|
|
170
|
+
// v0.26.3 M5 — wire AskUserQuestion inline-keyboard taps. callback_data is
|
|
171
|
+
// namespaced `ccmirror:` so the gateway routes taps here (the old
|
|
172
|
+
// before_dispatch callback_query guards are dead — taps never reach it).
|
|
173
|
+
// Guarded: registered once; older OpenClaw may lack registerInteractiveHandler.
|
|
174
|
+
if (!_interactiveRegistered) {
|
|
175
|
+
if (typeof api.registerInteractiveHandler === 'function') {
|
|
176
|
+
try {
|
|
177
|
+
const injectApi = { enqueueNextTurnInjection: api.enqueueNextTurnInjection };
|
|
178
|
+
api.registerInteractiveHandler({
|
|
179
|
+
channel: 'telegram',
|
|
180
|
+
namespace: ASKUSER_NS,
|
|
181
|
+
handler: (ctx) => handleTap(ctx, injectApi),
|
|
182
|
+
});
|
|
183
|
+
_interactiveRegistered = true;
|
|
184
|
+
logger.info(`${PLUGIN_TAG} AskUserQuestion interactive handler armed (ns=${ASKUSER_NS}, inject=${typeof api.enqueueNextTurnInjection === 'function'}).`);
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
logger.warn(`${PLUGIN_TAG} registerInteractiveHandler failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
logger.warn(`${PLUGIN_TAG} registerInteractiveHandler unavailable — AskUserQuestion buttons disabled.`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
166
194
|
// v0.25.10 — subscribe on EVERY register() call (no module-scope short-circuit).
|
|
167
195
|
// Per-event-id dedup inside each handler ensures actions fire exactly once per
|
|
168
196
|
// user message, regardless of how many api bindings exist.
|
|
@@ -187,6 +215,24 @@ export function registerInboundHandler(api, state = createHandlerState()) {
|
|
|
187
215
|
}
|
|
188
216
|
// Diagnostic trace stays — useful for soak observation. Kept short.
|
|
189
217
|
process.stderr.write(`[cc-openclaw/telegram-mirror/inbound] before_dispatch seen: text=${JSON.stringify(text.slice(0, 60))}\n`);
|
|
218
|
+
// v0.26.4 M5 — AskUserQuestion button tap. The gateway delivers taps on
|
|
219
|
+
// plugin-sent keyboards as before_dispatch messages (text=`ccmirror:<id>`),
|
|
220
|
+
// NOT as routed interactive-handler callbacks. Intercept + handle + CLAIM so
|
|
221
|
+
// the raw callback_data never reaches the agent as a user message.
|
|
222
|
+
if (isAskUserCallback(text)) {
|
|
223
|
+
const k = chatIdFromSessionKey(event.sessionKey);
|
|
224
|
+
const tapChatId = k.chatId || (event.senderId !== undefined ? String(event.senderId) : '');
|
|
225
|
+
try {
|
|
226
|
+
if (tapChatId && typeof api.enqueueNextTurnInjection === 'function') {
|
|
227
|
+
await handleTapData(text, tapChatId, { enqueueNextTurnInjection: api.enqueueNextTurnInjection });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
process.stderr.write(`${PLUGIN_TAG} askuser tap handling failed: ${err.message}\n`);
|
|
232
|
+
}
|
|
233
|
+
process.stderr.write(`${PLUGIN_TAG} AskUserQuestion tap handled via before_dispatch (chat=${tapChatId}).\n`);
|
|
234
|
+
return { handled: true };
|
|
235
|
+
}
|
|
190
236
|
const parsed = parseSlash(text);
|
|
191
237
|
if (!parsed)
|
|
192
238
|
return undefined;
|
|
@@ -324,6 +370,10 @@ export function registerInboundHandler(api, state = createHandlerState()) {
|
|
|
324
370
|
event.raw?.message?.text;
|
|
325
371
|
if (typeof text !== 'string')
|
|
326
372
|
return undefined;
|
|
373
|
+
// v0.26.4 M5 — never create a working card for an AskUserQuestion tap
|
|
374
|
+
// (handled + claimed by the dispatcher above).
|
|
375
|
+
if (isAskUserCallback(text))
|
|
376
|
+
return undefined;
|
|
327
377
|
// Skip if it's a known mirror slash — those are handled by the
|
|
328
378
|
// dispatcher above and shouldn't get a working card.
|
|
329
379
|
const parsed = parseSlash(text);
|
|
@@ -334,6 +384,10 @@ export function registerInboundHandler(api, state = createHandlerState()) {
|
|
|
334
384
|
if (!chatId)
|
|
335
385
|
return undefined;
|
|
336
386
|
const threadId = fromKey.threadId !== undefined ? fromKey.threadId : event.raw?.message?.message_thread_id;
|
|
387
|
+
// v0.26.4 M5 — remember the REAL agent session key for this chat so an
|
|
388
|
+
// AskUserQuestion tap (which arrives after the turn, with only the chatId in
|
|
389
|
+
// its ctx) can resolve the key enqueueNextTurnInjection needs.
|
|
390
|
+
rememberSessionKey(chatId, event.sessionKey);
|
|
337
391
|
// Start a fresh turn for this chat. Replaces any prior turn state.
|
|
338
392
|
const sm = new TurnStateMachine();
|
|
339
393
|
sm.start(chatId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound-handler.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/inbound-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inbound-handler.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/inbound-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
export interface PluginApi {
|
|
20
20
|
on(event: string, handler: (...args: unknown[]) => unknown | Promise<unknown>): void;
|
|
21
21
|
logger?: Console;
|
|
22
|
+
registerInteractiveHandler?: (registration: unknown) => unknown;
|
|
23
|
+
enqueueNextTurnInjection?: (injection: unknown) => unknown;
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
26
|
* Mirror channel register — idempotent via defaultRegisterGuard.
|
|
@@ -52,6 +52,11 @@ export function register(api) {
|
|
|
52
52
|
// v0.25.1 — subscribe before_dispatch and route mirror slash commands
|
|
53
53
|
// through dispatchCommand → telegram-bot-api.
|
|
54
54
|
try {
|
|
55
|
+
// v0.26.3 M5 — forward the interactive + injection methods from the FULL
|
|
56
|
+
// plugin api (the narrowed object passed before omitted them, which is why
|
|
57
|
+
// AskUserQuestion buttons were "unavailable"). Bound + cast to the typed
|
|
58
|
+
// shapes registerInboundHandler expects; left undefined if absent.
|
|
59
|
+
const fullApi = api;
|
|
55
60
|
registerInboundHandler({
|
|
56
61
|
on: api.on.bind(api),
|
|
57
62
|
logger: {
|
|
@@ -70,6 +75,12 @@ export function register(api) {
|
|
|
70
75
|
catch { /* swallow */ }
|
|
71
76
|
},
|
|
72
77
|
},
|
|
78
|
+
registerInteractiveHandler: typeof fullApi.registerInteractiveHandler === 'function'
|
|
79
|
+
? fullApi.registerInteractiveHandler.bind(api)
|
|
80
|
+
: undefined,
|
|
81
|
+
enqueueNextTurnInjection: typeof fullApi.enqueueNextTurnInjection === 'function'
|
|
82
|
+
? fullApi.enqueueNextTurnInjection.bind(api)
|
|
83
|
+
: undefined,
|
|
73
84
|
});
|
|
74
85
|
process.stderr.write('[cc-openclaw/telegram-mirror] guard body completed (v0.25.2).\n');
|
|
75
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAA0B,MAAM,sBAAsB,CAAC;AAYtF;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAc;IACrC,yEAAyE;IACzE,uEAAuE;IACvE,2CAA2C;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAEjG,oBAAoB,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,EAAE,GAAG,EAAE;QAClE,wEAAwE;QACxE,kEAAkE;QAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACvF,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CACT,iFAAiF,CAClF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAqD,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QACvG,CAAC;QACD,iEAAiE;QACjE,qEAAqE;QACrE,sBAAsB,CAAC;YACrB,MAAM,EAAG,GAAuD,CAAC,MAAM;YACvE,MAAM,EAAE,MAAiF;SAC1F,CAAC,CAAC;QACH,sEAAsE;QACtE,8CAA8C;QAC9C,IAAI,CAAC;YACH,yEAAyE;YACzE,2EAA2E;YAC3E,yEAAyE;YACzE,mEAAmE;YACnE,MAAM,OAAO,GAAG,GAGf,CAAC;YACF,sBAAsB,CAAC;gBACrB,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;gBACpB,MAAM,EAAE;oBACN,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;wBACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;wBACjC,IAAI,CAAC;4BAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;oBACnD,CAAC;oBACD,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;wBACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;wBACjC,IAAI,CAAC;4BAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;oBACnD,CAAC;iBACF;gBACD,0BAA0B,EACxB,OAAO,OAAO,CAAC,0BAA0B,KAAK,UAAU;oBACtD,CAAC,CAAE,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAqD;oBACnG,CAAC,CAAC,SAAS;gBACf,wBAAwB,EACtB,OAAO,OAAO,CAAC,wBAAwB,KAAK,UAAU;oBACpD,CAAC,CAAE,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAmD;oBAC/F,CAAC,CAAC,SAAS;aAChB,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+DAAgE,GAAa,CAAC,OAAO,KAAM,GAAa,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;QACjJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -28,6 +28,7 @@ import { cardState, cardStateDebug } from './card-state.js';
|
|
|
28
28
|
import { renderTurn } from './card-renderer.js';
|
|
29
29
|
import { editTg } from '../../lib/telegram-bot-api.js';
|
|
30
30
|
import { readQuotaSnapshot } from '../../lib/status-tee-reader.js';
|
|
31
|
+
import { captureAskUserQuestion } from './askuser.js';
|
|
31
32
|
const _lastRepaintAt = new Map();
|
|
32
33
|
const REPAINT_MIN_MS = 800;
|
|
33
34
|
async function repaint(chatId, force) {
|
|
@@ -115,6 +116,13 @@ export function pushToolUse(name, input, toolUseId) {
|
|
|
115
116
|
// v0.26.2 M4 — capture the agent's todo list from TodoWrite tool calls (the
|
|
116
117
|
// only one of rules/hooks/todos reachable from the plugin). Real data only.
|
|
117
118
|
const todos = parseTodoWrite(name, input);
|
|
119
|
+
// v0.26.3 M5 — render AskUserQuestion as a Telegram inline keyboard (deduped
|
|
120
|
+
// by toolUseId inside captureAskUserQuestion against the dual-emission).
|
|
121
|
+
if (/^askuserquestion$/i.test(name)) {
|
|
122
|
+
for (const chatId of chats) {
|
|
123
|
+
void captureAskUserQuestion(chatId, cardState.get(chatId)?.threadId, input, toolUseId);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
118
126
|
for (const chatId of chats) {
|
|
119
127
|
const card = cardState.get(chatId);
|
|
120
128
|
if (!card)
|
|
@@ -226,6 +234,14 @@ export async function finalizeActiveCards() {
|
|
|
226
234
|
card.sm.end(chatId);
|
|
227
235
|
const turn = card.sm.getTurn(chatId);
|
|
228
236
|
if (turn) {
|
|
237
|
+
// v0.26.4 dedup — drop the assistant text from the FINALIZED card. It
|
|
238
|
+
// streamed live during the turn (good), but the OpenClaw gateway also
|
|
239
|
+
// delivers the final reply as its own message; keeping it on the done
|
|
240
|
+
// card too made the answer appear twice (A1's duplicate-response bug).
|
|
241
|
+
// The plugin can't suppress the gateway reply (no suppressUserDelivery
|
|
242
|
+
// knob), so the card yields the final text and finalizes to a clean
|
|
243
|
+
// status/tools/✓ Done activity view. renderTurn itself is unchanged.
|
|
244
|
+
turn.assistantText = '';
|
|
229
245
|
try {
|
|
230
246
|
await editTg(chatId, card.messageId, renderTurn(turn, card.meta));
|
|
231
247
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-bridge.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/turn-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"turn-bridge.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/turn-bridge.ts"],"names":[],"mappings":"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"}
|