Files
openclaw/qa/scenarios/channels/telegram-tools-compact-command.yaml
Vincent Koc fb81d03d8e fix(commands): restore tool inventory for dynamic models (#119306)
* fix(qa): scale Telegram compact command timeout

* fix(qa): surface Telegram compact reply failures

Punchcard-Session: amber-workshop-river-yr

* fix(commands): prepare tool inventory model context

Punchcard-Session: amber-workshop-river-yr

* test(commands): type runtime context mock

Punchcard-Session: amber-workshop-river-yr

* docs(changelog): note tool inventory repair

Punchcard-Session: amber-workshop-river-yr

* chore(release): defer tool inventory note

Punchcard-Session: amber-workshop-river-yr

* fix(ci): lower environment variable budget

Punchcard-Session: amber-workshop-river-yr
2026-08-05 06:57:21 +08:00

53 lines
2.0 KiB
YAML

title: Telegram compact tools command reply
scenario:
id: telegram-tools-compact-command
surface: channels
category: channels.channel-actions-commands-and-approvals
coverage:
primary:
- telegram.built-in-commands
objective: Verify Telegram renders the compact model-tool inventory.
successCriteria:
- The compact tools command reaches native command dispatch.
- The joined reply includes exec and the verbose-mode hint.
codeRefs:
- src/auto-reply/reply/commands-info.ts
- extensions/qa-lab/src/live-transports/telegram/adapter.runtime.ts
execution:
kind: flow
channel: telegram
summary: Request compact tools through Telegram and verify inventory text.
config:
expectedAny: [exec, Use /tools verbose for descriptions.]
flow:
steps:
- name: compact tools renders inventory
actions:
- resetTransport: true
- set: startIndex
value:
expr: "state.getSnapshot().messages.filter((message) => message.direction === 'outbound').length"
- sendInbound:
conversation: { id: telegram-command-room, kind: channel }
senderId: qa-command-operator
senderName: QA Command Operator
text: /tools compact
nativeCommand: { name: tools }
- waitForOutbound:
conversation: { id: telegram-command-room, kind: channel }
sinceIndex: { ref: startIndex }
timeoutMs:
expr: liveTurnTimeoutMs(env, 60000)
- call: sleep
args: [1000]
- set: joinedReply
value:
expr: "state.getSnapshot().messages.filter((message) => message.direction === 'outbound').slice(startIndex).map((message) => message.text).join('\\n')"
- assert:
expr: "config.expectedAny.every((needle) => joinedReply.includes(needle))"
message:
expr: "`tools reply missing expected text: ${joinedReply}`"
detailsExpr: joinedReply