Skip to content

Generic ACP form elicitation drops multi-select options in items.enum #30851

Closed

Description

@daniellindem

What happened

While reviewing Hermes through T3 Code's generic ACP integration, we verified that form elicitation loses choices declared as JSON Schema type: "array" with items.enum. T3 creates an optionless question without multiSelect, so the code cannot offer those choices as a multi-select card.

This is a source-based report with an isolated projection probe, not a claimed user-observed runtime failure or live UI reproduction. The scope is the generic array-enum mapping.

Diagnosis

Steps to reproduce

Proposed protocol reproduction, not run end to end:

  1. Connect a minimal ACP fixture to T3 and, during an active turn, send elicitation/create with these params, substituting the active session ID:
{"sessionId":"<active-session-id>","mode":"form","message":"Choose databases","requestedSchema":{"type":"object","properties":{"answer":{"type":"array","items":{"type":"string","enum":["PostgreSQL","SQLite"]}}},"required":["answer"]}}
  1. Inspect the resulting question. The verified projection produces options: [] and omits multiSelect.
  2. Expected: offer PostgreSQL and SQLite, permit selecting both, and return:
{"action":"accept","content":{"answer":["PostgreSQL","SQLite"]}}

For a Hermes reproduction, explicitly enable clarify or attach a session whose frozen toolset already includes it, then invoke it with both choices and multi_select: true. The default hermes-acp toolset excludes clarify; this is a reproduction precondition, not a T3 defect.

Version

Affected runtime version: unknown, since no runtime failure was reproduced. Source verified at T3 commit 8b44f42b14c8e273156474a924ccf29680dd7857, also the tag commit for v0.1.8-nightly.20261104.4165.

Local server independently reports 0.1.7-nightly.20261103.4119 via /.well-known/t3/environment. This is not proof that its exact build was exercised.

Environment

Windows x64, version 10.0.26300; Node v26.12.1. Hermes via generic ACP; inspected Hermes commit 71736c9f32597bbca9d89cede5aa136e55946b2f. Installed Hermes version and client surface were not established. Triage CLI only: 0.1.8-nightly.20261104.4165, launched with npx t3@nightly triage.

Evidence

An isolated, dependency-free probe executed the real Hermes builder and T3's extracted generic projection with TypeScript annotations stripped. It did not start T3, make a model call, or render a client.

PASS: real Hermes builder emits array items.enum
Actual T3 projection: [{"id":"answer","header":"Question 1","question":"Choose databases","options":[]}]
PASS: single string enum retains two options; free text remains optionless
PASS: existing elicitationContent preserves an already supplied string array
FAIL: expected two selectable options, got 0; expected multiSelect=true, got undefined

No logs or screenshots are claimed.

Related issues

  • #15743 closing comment says "One part is still open: ACP elicitation capability and multi-select answer handling." It asks for a new issue limited to the remaining part. This report covers the generic array-enum mapping only.
  • #21770 is open and unmerged as checked on 2026-11-04. Its proposed tests include plain items.enum. The limitation remains in the latest nightly source inspected above; no shipped fix was found.
  • #23505 concerns OMP's titled choices, separate custom-answer field, and card layout. It overlaps the generic mapping but does not report this narrow Hermes array-enum case. No open issue dedicated to the residual items.enum limitation was found.

Fix applied or workaround

None applied; no workaround was tested. A focused change would map array items.enum into options and set multiSelect: true, preserving existing single-string enum and free-text behavior.

Filed by

Prepared by Codex, GPT-6.1-Sol, via npx t3@nightly triage.

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

Metadata

Metadata

Assignees

No one assigned

    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