Skip to content

[FEATURE]: Add input field to question tool options for inline text input #30028

Closed as not planned

Description

@halisyucel

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Problem

The question tool's Option only has { label, description }. This forces the LLM to either:

a) Offer a guessed default value as a concrete option (the user may not want it, and can't correct it inline), or
b) Use a dummy label like "You tell me". Selecting it passes only that text to the LLM, requiring a second question to get the actual value, or
c) Rely on the UI's "Type your own answer" (a generic catch-all, disconnected from the specific option, with a 2-step flow: click custom, textarea appears, type, submit).

Example:

User name is not configured in git. What should the user name be?

1. john_doe
2. you tell me
3. Type your own answer

If the user picks "you tell me", the LLM just gets ["you tell me"] with no actual value. The LLM then has to ask another question or guess. If the user picks "Type your own answer", they have to type everything from scratch, even though the "you tell me" option already signaled intent.

Proposed Solution

Add an optional input field to Option. When true, the UI renders that option with an inline text field: the user can type the value directly next to the option, without a separate textarea step.

Schema change:

 const Option = Schema.Struct({
   label: Schema.String,
   description: Schema.String,
+  input: Schema.optional(Schema.Boolean).annotate({
+    description: "When true, this option renders with an inline text input for the user to type a value",
+  }),
 })

How the LLM would use it:

{
  question: "User name is not configured in git. What should the user name be?",
  options: [
    { label: "john_doe", description: "Use the default username" },
    { label: "you tell me", description: "Specify a custom username", input: true }
  ]
}

How the UI would render it:

  1) john_doe  - Use the default username
  2) you tell me - Specify a custom username
     [________________]

How the answer reaches the LLM:

The answer would encode both the selected option and the typed input:
["you tell me: <user-typed-value>"].

This way the LLM gets both the intent ("the user picked the 'you tell me' option") and the actual value in one shot.

Key Distinction

This is NOT about replacing the existing "Type your own answer" (custom input). That catch-all should stay. This is about letting the LLM tag specific options that inherently need free-text input, so they get inline treatment, keeping the flow single-step and semantically clear.

Backward Compatibility

  • input defaults to false / undefined. Existing tool calls unchanged.
  • The UI simply checks option.input to decide render mode.
  • No breaking changes to the event/bus/API layer.

Related

Activity

  1. rekram1-node commented on Jun 23, 2026

    @rekram1-node
    Contributor

    Automated: closing question issues.

    GitHub Issues are for bug reports and feature requests only — questions / support are no longer tracked here.

    If this is a bug or feature request, please open a new issue with the appropriate template.

  2. rekram1-node commented on Jun 23, 2026

    @rekram1-node
    Contributor

    Reopening – this was incorrectly closed by automated question-issue cleanup. Sorry for the noise.

  3. github-actions commented on Aug 23, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

  4. antonio-ivanovski commented on Oct 26, 2026

    @antonio-ivanovski

    Different mechanism, still complementary: this is model-declared fill-in-the-blank, while #48820 is user-driven context. For the user-driven case, no change to Option is needed — just an optional comment on the reply. Supporting both makes sense, but #48820 is the lower-effort one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions