Files
Fabio Pliger 789ea42c97 test(kilo): make CLI test harness self-sufficient without the interactive build
A clean checkout no longer needs a manual `bun run build:tui` for
`packages/kilo-cli`'s `bun run test` to pass: the live interactive/TUI proofs
skip with a named reason instead of hard-asserting, silently returning, or
crashing ENOENT.

- `test/fixture.ts` gains `interactiveArtifactDir()`, `interactiveBun()`,
  `interactiveKilo2()`, and `interactiveSkipReason()` (resolved from
  `KILO_CLI_INTERACTIVE_DIR`, default `dist/interactive`) plus a one-time
  banner naming `bun run build:tui`.
- Fourteen gated proofs (28 tests) now use `test.skipIf(!binary)`; the two
  `console.warn`+`return` silent skips and three hard existence asserts are
  gone.
- New `test/interactive-artifact-registry.test.ts` fails the default run when
  the gated set drifts from the registry.
- New package-only `test:interactive` script verifies the runtime and
  delegates to the unchanged `script/test.ts`, failing loudly when absent.

The interactive runtime cannot be a mandatory default: `build-tui.ts` copies a
Bun >= 1.4 runtime and builds a large portable bundle plus the ACP bridge, is
platform-sensitive, and throws on Windows. CI runs the package `test` script
directly (no `@kilocode/cli#test` turbo task), so the proofs skip there and run
developer-local via `bun run build:tui` then `bun run test:interactive`.
2026-09-25 20:03:47 -05:00

50 lines
1.6 KiB
JSON

{
"name": "@kilocode/cli",
"version": "0.0.0-internal",
"private": true,
"type": "module",
"engines": {
"bun": ">=1.4.0"
},
"scripts": {
"dev": "bun --no-env-file script/dev.ts",
"dev:headless": "bun run --no-env-file src/index.ts",
"tui": "bun --no-env-file --preload @opentui/solid/preload src/tui-preview.ts",
"build": "bun run script/build.ts",
"build:tui": "bun run script/build-tui.ts",
"build:acp": "bun run script/build-acp.ts",
"test": "bun run script/test.ts",
"test:interactive": "bun run script/test-interactive.ts",
"test:coexistence": "bun run script/coexistence.ts",
"typecheck": "tsgo --noEmit"
},
"dependencies": {
"@effect/platform-node": "catalog:",
"@kilocode/gateway": "workspace:*",
"@kilocode/client": "workspace:*",
"@kilocode/indexing": "workspace:*",
"@kilocode/kilo-memory": "workspace:*",
"@opencode-ai/ai": "workspace:*",
"@opencode-ai/client": "workspace:*",
"@opencode-ai/core": "workspace:*",
"@opencode-ai/plugin": "workspace:*",
"@opencode-ai/protocol": "workspace:*",
"@opencode-ai/schema": "workspace:*",
"@opencode-ai/server": "workspace:*",
"@opencode-ai/tui": "workspace:*",
"@opencode-ai/util": "workspace:*",
"@opentui/core": "catalog:",
"@opentui/solid": "catalog:",
"effect": "catalog:",
"jsonc-parser": "3.3.1",
"solid-js": "catalog:",
"zod": "catalog:"
},
"devDependencies": {
"@opencode-ai/pty": "0.1.13",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:"
}
}