made extension tmux-only, replaced cmux.ts with tmux.ts (~1368 -> 354 lines)

Removed the cmux, zellij, and wezterm backends, the MuxBackend type, the
PI_SUBAGENT_MUX override, and dead exports (renameCurrentTab, renameWorkspace,
sendEscape, isFishShell, exitStatusVar). The ten-function surface API used by
index.ts is unchanged. Integration harness and tests are tmux-only; README and
package.json now state tmux-only with a fork note pointing multi-multiplexer
users at the upstream project.
This commit is contained in:
Amos
2026-08-20 18:48:14 +03:00
parent 865648c4f1
commit 9cbc5b4878
9 changed files with 421 additions and 1848 deletions
+5 -11
View File
@@ -2,14 +2,13 @@
* Integration tests for the full subagent lifecycle.
*
* These tests spawn REAL pi sessions with REAL LLM calls (haiku by default).
* Each test creates a mux surface, runs pi with a task that uses the subagent
* Each test creates a tmux pane, runs pi with a task that uses the subagent
* tool, and verifies the outcome via marker files and screen output.
*
* Costs: ~$0.01-0.05 per test run (haiku).
* Duration: ~30-90s per test.
*
* Run inside a supported multiplexer:
* cmux bash -c 'npm run test:integration'
* Run inside tmux:
* tmux new 'npm run test:integration'
*
* Configuration:
@@ -21,8 +20,6 @@ import assert from "node:assert/strict";
import { existsSync, readFileSync, unlinkSync } from "node:fs";
import {
getAvailableBackends,
setBackend,
restoreBackend,
createTestEnv,
cleanupTestEnv,
createTrackedSurface,
@@ -40,23 +37,20 @@ import {
const backends = getAvailableBackends();
if (backends.length === 0) {
console.log("⚠️ No mux backend available — skipping subagent lifecycle integration tests");
console.log(" Run inside cmux or tmux to enable these tests.");
console.log("⚠️ tmux is not available — skipping subagent lifecycle integration tests");
console.log(" Run inside tmux to enable these tests.");
}
for (const backend of backends) {
describe(`subagent-lifecycle [${backend}]`, { timeout: PI_TIMEOUT * 3 }, () => {
let prevMux: string | undefined;
let env: TestEnv;
before(() => {
prevMux = setBackend(backend);
env = createTestEnv(backend);
env = createTestEnv();
});
after(() => {
cleanupTestEnv(env);
restoreBackend(prevMux);
});
// ── Basic spawn + completion ──