Skip to content

fix(cli): round 4 — kits load under node, base URLs on ai v4, cross-copy errors, usable templates, eval/dev accuracy, slimmer image - #613

Merged
LinuxDevil merged 11 commits into
mainfrom
ccr-0ae7820c-cbv21k-cli-4
Oct 12, 2026
Merged

LinuxDevil merged 11 commits into
mainfrom
ccr-0ae7820c-cbv21k-cli-4

Conversation

@LinuxDevil

Copy link
Copy Markdown
Owner

Round-4 audit fixes, CLI and packaging area.

Fixes

  • inbox-triage kit: relative imports carry .ts, so the kit loads in chat, dev, acp, mcp and doctor. A new registry test loads every kit in a plain node process.
  • ai v4 base URLs: OPENAI_BASE_URL and ANTHROPIC_BASE_URL are honored when no baseURL is set. The doctor output and docs/providers.md are corrected.
  • Cross-copy errors: PropagatingToolError, McpToolError and WorkspaceError are recognized across the ESM and CJS copies, so a tool that throws "stop, do not retry" no longer runs twice.
  • Templates:
    • The yarn scaffold includes vite.
    • The minimal and tools templates default-export their agent options and ship tsup and a build script, so every lousho command and lousho build --target=node-server|docker works on them.
    • --target=cloudflare-worker gives a clear error for .ts agent files.
  • lousho eval: a case that times out is reported as failed in the table, JSON and JUnit, with no extra vitest row.
  • lousho dev: an edited helper file is actually re-evaluated on reload. Editor temp files no longer show in the log.
  • Error messages:
    • A missing .ts extension names the exact import to write.
    • On Node older than 22.19 the error states the version requirement.
    • Messages name the right command.
    • help <cmd> shows that command's help.
    • Every command has full --help text.
    • Bad arguments exit 2 consistently.
  • Docker image: installs only what the bundled server needs. It now has a HEALTHCHECK, and .dockerignore covers .env* and *.tgz.
  • Tarball: the dead CJS CLI files (dist/cli/*.js) are no longer shipped.

Behavior changes

All are listed in CHANGELOG "Unreleased" and docs/upgrading.md.

  • lousho eval exits 1 when no case ran.
  • lousho mcp --port or --host without --http is a usage error.
  • The generated build package.json no longer lists @lousho/build-ai-agent.

Testing

Locally: tsc, typecheck, lint, build, api:check, test:types, snippets, llms, coverage (5777 tests), create-lousho-agent tests and pack-smoke pass.

  • docs:ratchet passed whenever typedoc ran to completion.
  • fallow flagged a function in OpenRouterProvider.ts, which this PR doesn't touch; CI will show whether that also fails on main.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n


Generated by Claude Code

@LinuxDevil
LinuxDevil force-pushed the ccr-0ae7820c-cbv21k-cli-4 branch from 817dd13 to a0db550 Compare October 12, 2026 16:12
claude and others added 10 commits October 12, 2026 19:44
…vider packages

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
…stanceof across SDK copies

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
…r docker image

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
…nd exit-code fixes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
…ing notes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
…mplexity limit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
…sumed tool calls

The resumed-tool race added in #618 duplicated generateStep's abortable();
both now share it, with an optional grace period for the tool path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
A 200 ms timeout could fire before a cold runner started the run, so the
cancel matched nothing and the run was never aborted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
@LinuxDevil
LinuxDevil force-pushed the ccr-0ae7820c-cbv21k-cli-4 branch from a0604d9 to 0aad27f Compare October 12, 2026 16:51
…nners

vi.waitFor's 1 s default failed on a CI runner whose suite took 300 s,
before the server had started the run. The late-cancel test's runs now
last long enough for the cancel to land first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BG6n8mwoFq1jmay9zCPS6n
@LinuxDevil
LinuxDevil merged commit 06aaff6 into main Oct 12, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants