steamharness resolve-params
resolve-params is called by CLI Web and can also be used to debug parameter linkage locally. Workflow uses --entrypoint <id> to select the entry's resolveParams, using the default entry when omitted; Conversation uses executor resolveParams and rejects non-empty entry parameters. Request JSON is read from stdin to keep input text out of command-line arguments.
printf '%s' '{"draftText":"Search the documentation","args":["--tone","balanced"],"inputMode":"form","trigger":{"kind":"input"}}' \
| steamharness resolve-params ./workspace/workflow/example --entrypoint search
On success stdout returns ParamResolveResult:
{"params":{"tone":{"value":"precise","resolvedOptions":[{"value":"precise","label":"Precise"},{"value":"creative","label":"Creative"}],"options":{"creative":{"disabled":true}}}}}
Returns {"params":{}} if the selected entry or Conversation executor has no resolveParams defined. The resolvedOptions array replaces the parameter's current full list of options, null restores the static list, and options only supplements the display or disabled state of a single option. --entrypoint must be placed in the CLI parameter area; parameters with the same name after an explicit -- will not be read by CLI. If the request format, entry, or callback result is invalid, the exit code is 1, and errors are written to stderr.
In Studio and CLI Web, static Conversation parameters are available immediately without starting a parameter-resolution process. Dynamic parameters are cached in the current page by project, conversation and entrypoint. Returning to an unchanged conversation reuses its options. Consecutive parameter edits are coalesced; later refreshes run in the background, retaining options and drafts and keeping parameter and Slash menus available. Switching conversations or reopening the page preserves unsent parameter edits and resets. Confirmed user-input effects update their parameters by revision, including cleared values.
Typing a normal message does not resolve parameters. Only fields declaring resolveOnInput: true request resolution after a 350 ms pause, and IME composition must finish first. Background resolution pauses during a run and resumes afterward if an update is pending. Configuration, identity and connection changes invalidate the cache. The refresh icon in the parameter toolbar updates options manually and retries failed loads. Every message submission resolves and validates against the latest configuration, so cached options never bypass server validation. You can submit during initial loading or after a loading failure; the server resolves dynamic defaults and validates required fields. An empty option list rejects stale selections.