Skip to content

Too Many Cooks v0.8.0

Choose a tag to compare

@github-actions github-actions released this 25 Mar 08:10
· 28 commits to main since this release
Add connection switcher, crash resilience, and VSIX cleanup (#6)

## TLDR
- VSIX connection switcher (local/cloud mode picker, MCP config
auto-generation, connection persistence)
- Server crash resilience (SIGTERM/SIGINT/uncaught handlers with
logging)
- Admin event stream exponential backoff
- Extracted delete-agent and send-message commands into own modules

## Brief Details
- **Connection switcher**: New `connectionManager.ts`,
`connectionTypes.ts`, `connectionPicker.ts`, `mcpConfigManager.ts` —
lets users choose between local SQLite and TMC Cloud backends; persists
last connection in globalState; auto-configures MCP server JSON for
Claude Code, Cursor, Cline, Codex
- **Server crash resilience**: `server.ts` now installs `SIGTERM`,
`SIGINT`, `uncaughtException`, `unhandledRejection` handlers that log
before exit — previously silent death
- **Admin event stream backoff**: `adminEventStream.ts` uses exponential
backoff (200ms → 30s cap) instead of fixed 200ms reconnect delay
- **StoreManager refactor**: Extracted helpers to
`storeManagerHelpers.ts`, added `deleteAllAgents`, `getAgentNames`
methods, new status bar connection-mode indicator
- **package.json**: Added `chooseConnection`, `deleteAllAgents` commands
and cloud settings (`connectionMode`, `cloudApiUrl`, `cloudWorkspaceId`,
`cloudTransport`, `configureAgents`)
- **Prisma**: Removed stale SQLite migration files (migration managed
elsewhere now)
- **extension.ts**: Refactored into `createProviders`,
`autoConnectOnActivation`, extracted commands; `.then()` → `async/await`

## How Do The Tests Prove This Works?
- **`test/server_crash_resilience_test.ts`**: Spawns a real server,
sends SIGTERM, asserts the log file AND stderr contain a shutdown
message — proves signal handlers exist and fire
- **`test/pure/connectionManager.test.ts`**: Tests local target
construction, cloud validation call shape, mode getter, disconnect
idempotency
- **`test/pure/connectionTypes.test.ts`**: Validates `ConnectionMode`
enum values, `LocalTarget`/`CloudTarget` type structure, default
transport values
- **`test/pure/connectionSwitcherCloud.test.ts`**: Tests cloud picker
flow (API URL + workspace ID + API key prompts), credential validation,
error paths, cancellation at each step
- **`test/pure/connectionSwitcherModeSwitch.test.ts`**: Tests mode
switching (local↔cloud), globalState persistence of last connection,
restore-on-activate flow
- **`test/pure/mcpConfigManager.test.ts`**: Tests MCP JSON generation
for all 4 agent types (Claude Code, Cursor, Cline, Codex), file
write/read, config detection
- **`test/pure/adminEventStreamBackoff.test.ts`**: Verifies exponential
backoff doubles on failure, resets on success, caps at 30s
- **`test/suite/connectionSwitcherLocal.test.ts`**: Integration test —
real VSCode API, picks local mode, connects to actual server, verifies
tree providers refresh
- **`test/suite/deleteAllAgents.test.ts`**: Integration test — registers
agents, deletes all, asserts empty agent list
- **`test/suite/reconnectAfterDisconnect.test.ts`**: Integration test —
connect, disconnect, reconnect cycle, verifies state restored
- **`test/suite/commands.test.ts`**: Updated to cover new command
registrations