ta
TanStack
GitHub
ai
Workspace
GitHub
CI Pipeline Executions
Filtered
Runs
Demo
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Overview
⌘K
ai
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
Succeeded
fix/1128-persist-chat-run-usage
42101e04 feat: honor outputSchema on dedicated harness adapters (#1110) * feat: honor outputSchema on dedicated harness adapters Harness adapters honor chat({ outputSchema }) on the same turn. Claude Code and Codex pass a native schema flag. OpenCode and Grok Build parse JSON from the last assistant text. The engine reads structured-output.complete so harness prose is not parsed as JSON. Add a repo-report page in ts-react-chat and a Harness Agents guide. * fix(docs): give adapter outputSchema snippets a real sandbox Kiira type-checks doc fences. defineSandbox requires id and provider. * fix(example): render repo report on its own route /sandboxes/repo-report was a child of the triage page. The parent has no Outlet, so the URL showed issue triage. Move the page to /repo-report. * fix: parse harness JSON after prose and render the report card Grok writes tool notes then the object. Parsing the whole assistant text failed on I'll. Take the last JSON object. The repo-report page hides the raw JSON and fills the card as the object streams. Claude Code sets CLAUDE_CODE_SANDBOXED so a cloned repo is not blocked as untrusted. * fix: pass Claude --json-schema inline and stop guessing the report card --json-schema expects JSON, not a .json filename. Mark the local sandbox cwd trusted so cloned .claude/settings.json is used. Render the card from structured-output parts or a text part that starts with the root object. Show thinking, tools, and text while the run is still going. * fix(ai-claude-code): expand --json-schema from a file and skip project settings The CLI parses --json-schema as JSON. A .json filename dies on the leading dot. Pass the schema through the shell with cat. Add --bare so a cloned repo's .claude/settings.json does not require a trust dialog. * fix(ai-claude-code): spawn Claude with real argv for --json-schema -p was eating --bare as the prompt, so project settings still loaded. Pass --bare before -p. Feed --json-schema through a Node runner so the shell never sees a .json filename or broken quotes. * fix(ai-claude-code): stop sending --json-schema through the shell Claude's CLI only accepts inline JSON for --json-schema. Passing a filename (or letting git-bash retokenize JSON) failed with Unexpected token '.'. The runner now reads argv and the schema from files, then spawn()s claude so the JSON is one real argument. A cloned repo that ships .claude/settings.json no longer needs a trust dialog. Those files are renamed for the run so headless -p can start. * fix(ai-claude-code): skip project settings with --setting-sources Renaming .claude/settings.json dirtied a reused sandbox and could fail on Windows when the disabled file already existed. Pass --setting-sources user instead so headless -p ignores project settings without touching the repo. * fix(ai-claude-code): pass host Anthropic auth into the sandbox Claude printed "Not logged in" after spawn started working. Docker exec replaces the container env, so ANTHROPIC_API_KEY set at create time can vanish. Copy the host API key into the spawn env, keep PATH/HOME on Docker exec, and set HOME from USERPROFILE on Windows local-process so `claude login` still finds ~/.claude.json. * fix(ai-claude-code): do not use --bare (it ignores claude login) `--bare` skips stored OAuth credentials. Headless `-p` then prints "Not logged in · Please run /login" even when the host is logged in (claude-code#51047). Keep `--setting-sources user` so project settings do not block the run. On local-process, do not force ANTHROPIC_API_KEY over the host login. * fix(ai-claude-code): harvest StructuredOutput tool into chat.final Claude Code --json-schema forces a fake StructuredOutput tool. The UI showed "tool StructuredOutput (complete)" and never got structured-output.complete, so the report card stayed empty. Capture that tool input and emit the same complete event as result.structured_output. * fix(ai-claude-code): harvest streamed StructuredOutput JSON Claude streams StructuredOutput as input_json_delta, then may send an empty tool_use snapshot. That empty input wiped the captured object, so the report card never appeared. Keep the last useful object, parse streamed JSON, and fall back to JSON in the assistant text. * fix(ai): attach late structured-output.complete to the open assistant Harness adapters emit structured-output.start/complete with a fresh messageId after tool calls and prose. The client kept the existing assistant active, then looked up the new id and dropped the object. useChat().final stayed empty and the report card never rendered. Resolve start/complete against the open assistant message instead. * fix: address review comments and sync lockfile with main Parse JSON even when later prose has a brace. Validate report card fields. Label the example pickers. Add client useChat snippets. Drop the unused ~/.claude.json writer. Set IS_SANDBOX only on isolated sandboxes. Refresh the lockfile after merging main. * feat(ai-acp): honor outputSchema and add ACP repo-report example acpCompatible now parses the last assistant text as structured output, same as OpenCode and Grok Build. The React example picker includes ACP compatible (Grok). Docs show how to read messages[].parts, not only useChat().final. * ci: apply automated fixes * fix: emit harness structured output before RUN_FINISHED Hold RUN_FINISHED on ACP, Grok Build ACP, and OpenCode so the typed object lands on the same assistant turn. Reset Grok ACP text on each TEXT_MESSAGE_START. Preserve adapter RUN_ERROR on await chat({ outputSchema }). * fix(ai-codex): stream intermediate prose and parse last schema JSON Hold only the last agent_message when outputSchema is set. Flush non-JSON prose when the next message, tool, or reasoning item starts. Parse the last held message with parseJsonFromAssistantText so fenced JSON works. Parse failures use code structured-output-parse-failed. * fix: make harness auth a setting and stream Codex text Auth is now authMode host or api-key on the adapter. It is not inferred from the sandbox. Host login skips ACP authenticate and scrubs API keys so grok login can win. API key mode is for CI and runners. Codex now emits agent_message deltas from item.updated instead of holding all text until turn.completed. * docs: document harness authMode (host vs api-key) Add a sandbox auth guide and link it from harness, provider, and adapter pages. authMode is a caller setting. The sandbox type does not pick credentials. * fix: default harness authMode to api-key Most harnesses run in Docker or a cloud sandbox, so omit means api-key. Set authMode host only when the machine already has a CLI login. * fix: make grok ACP tests and auth docs pass CI Fake grok ACP agents advertise xai.api_key so the default authMode works. Auth snippets import the adapter factories so kiira can type-check them. --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
by Alem Tuzlak
A
Succeeded
fix/1128-persist-chat-run-usage
42101e04 Merge 9fa0e0b9ebc6e5a75eadfedabe0a8cee475c2632 into c63319e34a2ca2f1d56b90addf28784f7c3e13ad
by kolaworld
k
Previous
Next