mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 08:11:34 +00:00
feat: ask_user — structured questions from the agent with web card, channel buttons, and text answers (#109922)
* feat(gateway): add transient question runtime (question.* methods + broadcasts) * feat(agents): add blocking ask_user question tool with chat prompt delivery and text-reply claim * feat(ui): interactive in-thread question cards for ask_user * feat(channels): native tap-to-answer buttons for ask_user on Telegram, Discord, and Slack * feat(ui): unify codex and gateway question cards with interactive gateway answering * refactor(agents): collapse ask_user pending state to one registry; docs for ask_user * fix(agents): include ask_user in normal gateway runs; add question-flow control-ui e2e * test(ui): avoid credential-shaped fixture in question card test * refactor(ui): reorder stream-group context keys * fix(gateway,ui): validate question answers at resolve; reject secret/duplicate-label questions; UI retry and reconnect hardening * fix(gateway,agents): canonicalize accepted option answers; bound ask_user option labels to 64 chars * chore(ci): prune unused question exports, allowlist mobile question events, fix discord lint * chore(ci): regenerate protocol/i18n/docs/tool-display artifacts for question surface * fix(protocol): flatten QuestionRecord for native codegen; drop TS-only alias from schema registry * chore(android): regenerate ask-user localization resources * docs: regenerate docs map after rebase * fix(ci): avoid stale read-only dependency disks * test: remove stale reef lint suppression ratchet * fix(ci): keep source locale drift advisory in release gates * fix(ci): scope locale advisory handling to parity check
This commit is contained in:
committed by
GitHub
parent
bab9a5ede7
commit
da44d52ac6
@@ -32,6 +32,7 @@
|
||||
"approval-reaction-runtime",
|
||||
"approval-reply-runtime",
|
||||
"approval-runtime",
|
||||
"question-gateway-runtime",
|
||||
"config-runtime",
|
||||
"config-contracts",
|
||||
"config-types",
|
||||
|
||||
@@ -214,7 +214,8 @@ export function readPluginSdkSurfaceBudgets(env = process.env) {
|
||||
// Registry sweep: 77 packages, zero fetch failures; retired dead channel-ingress facade.
|
||||
// +1: speech-settings keeps agent prompt imports off the synthesis/runtime graph.
|
||||
// +1: meeting-runtime barrel: browser meeting-bot core behind MeetingPlatformAdapter.
|
||||
330,
|
||||
// +1: question-gateway-runtime resolves ask_user choices for channel plugins.
|
||||
331,
|
||||
env,
|
||||
),
|
||||
// ScopeTree adds six channel-policy exports, mirrored by compat, including three functions.
|
||||
@@ -262,7 +263,8 @@ export function readPluginSdkSurfaceBudgets(env = process.env) {
|
||||
// Harvest: retired dual-field plan payload builder -1.
|
||||
// +23: core channel, envelope, direct-DM, feedback, legacy-payload, and memory contracts.
|
||||
// +81: meeting-runtime barrel: browser meeting-bot core behind MeetingPlatformAdapter.
|
||||
8149,
|
||||
// +3: question-gateway-runtime resolver plus request/result types.
|
||||
8152,
|
||||
env,
|
||||
),
|
||||
publicFunctionExports: readPluginSdkSurfaceBudgetEnv(
|
||||
@@ -296,7 +298,8 @@ export function readPluginSdkSurfaceBudgets(env = process.env) {
|
||||
// Harvest: retired dual-field plan payload builder -1.
|
||||
// +13: core channel, envelope, direct-DM, feedback, legacy-payload, and memory operations.
|
||||
// +32: meeting-runtime barrel: browser meeting-bot core behind MeetingPlatformAdapter.
|
||||
4533,
|
||||
// +1: question-gateway-runtime resolver.
|
||||
4534,
|
||||
env,
|
||||
),
|
||||
publicDeprecatedExports: readPluginSdkSurfaceBudgetEnv(
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
"voicewake.routing.changed": "iOS only consumes voicewake.changed trigger updates; routing changes are not surfaced.",
|
||||
"plugin.approval.requested": "Plugin approval prompts are not implemented on iOS.",
|
||||
"plugin.approval.resolved": "Plugin approval prompts are not implemented on iOS.",
|
||||
"question.requested": "Interactive question UI ships on web/channels first; mobile apps ignore operator question events until their card UI lands.",
|
||||
"question.resolved": "Interactive question UI ships on web/channels first; mobile apps ignore operator question events until their card UI lands.",
|
||||
"openclaw.approval.requested": "OpenClaw system-agent config approvals are a web/desktop operator surface; iOS has no operator-approval prompt.",
|
||||
"openclaw.approval.resolved": "OpenClaw system-agent config approvals are a web/desktop operator surface; iOS has no operator-approval prompt.",
|
||||
"terminal.data": "Embedded terminal is a web/desktop surface; iOS has no terminal client.",
|
||||
@@ -44,6 +46,8 @@
|
||||
"voicewake.routing.changed": "Android reads voicewake state on demand via voicewake.get; no push consumer yet.",
|
||||
"plugin.approval.requested": "Plugin approval prompts are not implemented on Android.",
|
||||
"plugin.approval.resolved": "Plugin approval prompts are not implemented on Android.",
|
||||
"question.requested": "Interactive question UI ships on web/channels first; mobile apps ignore operator question events until their card UI lands.",
|
||||
"question.resolved": "Interactive question UI ships on web/channels first; mobile apps ignore operator question events until their card UI lands.",
|
||||
"openclaw.approval.requested": "OpenClaw system-agent config approvals are a web/desktop operator surface; Android has no operator-approval prompt.",
|
||||
"openclaw.approval.resolved": "OpenClaw system-agent config approvals are a web/desktop operator surface; Android has no operator-approval prompt.",
|
||||
"terminal.data": "Embedded terminal is a web/desktop surface; Android has no terminal client.",
|
||||
|
||||
Reference in New Issue
Block a user