diff --git a/CODEX_MCP_MISMATCH_REPORT.md b/CODEX_MCP_MISMATCH_REPORT.md deleted file mode 100644 index d0346b8f2..000000000 --- a/CODEX_MCP_MISMATCH_REPORT.md +++ /dev/null @@ -1,53 +0,0 @@ -# Codex MCP CLI / Model / Permission Mismatches - -## Environment -- Codex CLI: codex-cli 0.77.0 -- MCP command: `codex mcp-server` (selected by `getCodexMcpCommand` for 0.77.0) -- Test runner: `npm run test --workspace=@paseo/server -- src/server/agent/providers/codex-mcp-agent.test.ts` - -## Model mismatch (runtime info test) -- Test: `reports runtime info with provider, session, model, and mode` -- Config: provider=codex-mcp, modeId=full-access, model=gpt-4.1 -- Expected: assistant replies `READY`, runtime info returns non-empty model/sessionId. -- Observed: - - Codex CLI error: `http 400 Bad Request: The 'gpt-4.1' model is not supported when using Codex with a ChatGPT account.` - - Test fails: `expected '' to contain 'ready'`. -- Notes: - - CLI refuses the model at session start, so the run returns empty text and no runtime info. - -## Permission elicitation mismatch (on-request) -- Test: `requests permission and resolves approval when allowed` -- Config: provider=codex-mcp, modeId=full-access, approvalPolicy=on-request -- Expected: `permission_requested` emitted, test captures permission request; `permission_resolved` after approving. -- Observed: - - No permission request captured (`expected null not to be null`). -- Notes: - - Suggests Codex CLI did not emit elicitation events despite approval-policy=on-request. - -## Permission ordering mismatch (read-only/untrusted) -- Test: `requires permission before commands in read-only (untrusted) mode` -- Config: provider=codex-mcp, modeId=read-only (approvalPolicy=untrusted, sandbox=read-only) -- Expected: permission request appears before command timeline items. -- Observed: - - No permission request captured (`expected null not to be null`). -- Notes: - - Either CLI ignores approval-policy/sandbox or the event stream does not surface elicitation for MCP. - -## Follow-up categories -- Model gating: choose a supported default model for ChatGPT accounts or skip runtime info test unless model available. -- Approval-policy/elicitation: confirm Codex CLI semantics for `approval-policy=on-request` and `untrusted` via MCP, and adjust tests or provider accordingly. - -# Codex MCP Type/Quality Review - -## High-signal follow-up tasks -- Reduce `unknown`/`Record` casts in `codex-mcp-agent.ts` by defining typed event payloads for `codex/event` and thread item shapes. -- Replace ad-hoc `as` casts in timeline mapping with type guards (e.g., `isCommandExecutionEvent`, `isThreadItem`) and narrow types before access. -- Type `pendingPermissions` and `pendingPermissionHandlers` with stricter interfaces; remove `message` usage from `AgentPermissionResponse` or widen the union if needed. -- Introduce a typed wrapper for MCP client notifications so `raw` payloads are decoded once instead of casting per-event. -- Add a single source of truth for timeline item ids/call ids to avoid fallback to `unknown` data. - -## Suggested task buckets -- Typecheck fixes for `AgentPermissionResponse` handling and unused locals. -- Event-shape typing and narrowing (MCP + thread/item types). -- Cleanup of `any`/`unknown` casts and `Record` usage. -- Test adjustments for model availability and permission semantics. diff --git a/CODEX_SDK_BINARY_INVESTIGATION.md b/CODEX_SDK_BINARY_INVESTIGATION.md deleted file mode 100644 index 5ff2f9fb6..000000000 --- a/CODEX_SDK_BINARY_INVESTIGATION.md +++ /dev/null @@ -1,299 +0,0 @@ -# Codex SDK Binary Investigation Report - -**Date:** 2025-12-20 -**SDK Version:** @openai/codex-sdk@0.76.0 -**Status:** ✅ System binary usage is fully supported - ---- - -## Executive Summary - -The `@openai/codex-sdk` library **DOES support using a system-installed Codex binary** instead of the embedded one. This is accomplished via the `codexPathOverride` configuration option in the `CodexOptions` interface. - ---- - -## How the SDK Currently Locates the Codex Binary - -### Default Behavior (Embedded Binary) - -When no override is provided, the SDK uses the `findCodexPath()` function to locate the embedded binary: - -**Source:** `dist/index.js:278-330` - -```typescript -function findCodexPath() { - const { platform, arch } = process; - let targetTriple = null; - - // Determines platform-specific binary path - // e.g., "aarch64-apple-darwin" for Apple Silicon Macs - - const vendorRoot = path2.join(scriptDirName, "..", "vendor"); - const archRoot = path2.join(vendorRoot, targetTriple); - const codexBinaryName = process.platform === "win32" ? "codex.exe" : "codex"; - const binaryPath = path2.join(archRoot, "codex", codexBinaryName); - return binaryPath; -} -``` - -### Binary Location Structure - -The SDK ships with pre-compiled binaries in the `vendor/` directory: - -``` -node_modules/@openai/codex-sdk/ -├── vendor/ -│ ├── aarch64-apple-darwin/codex/codex (40MB - Apple Silicon) -│ ├── x86_64-apple-darwin/codex/codex (Intel Mac) -│ ├── aarch64-unknown-linux-musl/codex/codex (ARM Linux) -│ ├── x86_64-unknown-linux-musl/codex/codex (x86_64 Linux) -│ ├── aarch64-pc-windows-msvc/codex/codex.exe (ARM Windows) -│ └── x86_64-pc-windows-msvc/codex/codex.exe (x86_64 Windows) -``` - ---- - -## Configuration Options Available - -### `codexPathOverride` Option - -**Type Definition:** `dist/index.d.ts:209-218` - -```typescript -type CodexOptions = { - codexPathOverride?: string; // ← THIS IS THE KEY OPTION - baseUrl?: string; - apiKey?: string; - env?: Record; -}; -``` - -**Implementation:** `dist/index.js:336-338` - -```typescript -constructor(options = {}) { - this.exec = new CodexExec(options.codexPathOverride, options.env); - this.options = options; -} -``` - -**How it works:** `dist/index.js:145-147` - -```typescript -constructor(executablePath = null, env) { - this.executablePath = executablePath || findCodexPath(); - this.envOverride = env; -} -``` - -The `codexPathOverride` is passed as `executablePath`. If provided, it bypasses the `findCodexPath()` function entirely. - ---- - -## How to Use a System Codex Binary - -### Method 1: Direct Path Specification - -```typescript -import { Codex } from '@openai/codex-sdk'; - -const codex = new Codex({ - codexPathOverride: '/Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex' -}); -``` - -### Method 2: Dynamic PATH Resolution - -```typescript -import { Codex } from '@openai/codex-sdk'; -import { execSync } from 'child_process'; - -const systemCodexPath = execSync('which codex', { encoding: 'utf8' }).trim(); - -const codex = new Codex({ - codexPathOverride: systemCodexPath -}); -``` - -### Method 3: Environment Variable Based (Custom Implementation) - -```typescript -import { Codex } from '@openai/codex-sdk'; - -const codex = new Codex({ - codexPathOverride: process.env.CODEX_BINARY_PATH || undefined -}); -``` - -**Note:** The SDK does NOT have a built-in environment variable for this purpose. The `CODEX_BINARY_PATH` above is a custom convention you'd need to implement in your application. - ---- - -## Verification Test Results - -### Test Configuration - -- **System Codex:** `/Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex` -- **Embedded Codex:** `node_modules/@openai/codex-sdk/vendor/aarch64-apple-darwin/codex/codex` -- **Versions:** Both are `codex-cli 0.76.0` - -### Test Results - -```bash -$ node test-codex-path-override.mjs -Testing codexPathOverride option... - -Test 1: Using default embedded binary -✓ Created Codex instance with default settings - -Test 2: Using system binary via codexPathOverride -✓ Created Codex instance with codexPathOverride - -Test 3: Using which codex result -System codex location: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex -✓ Created Codex instance with system codex from PATH - -✅ All tests passed! -``` - ---- - -## Benefits of Using System Codex - -### 1. **Version Control** -- Update codex independently via package manager (npm, brew, asdf, etc.) -- No need to wait for SDK release to get latest codex features -- Easier to test beta/development versions - -### 2. **Disk Space Savings** -- Embedded binary: ~40MB per architecture -- In a monorepo with multiple node_modules: Saves 40MB × number of installations -- System binary: Single installation regardless of projects - -### 3. **Consistency** -- Same codex version across all tools and SDKs -- Easier debugging when CLI and SDK use identical binaries -- Simplified version management - -### 4. **Development Workflow** -- Test local codex builds without reinstalling SDK -- Point to custom-compiled binaries for debugging -- A/B test different codex versions easily - ---- - -## Potential Considerations - -### 1. **Version Compatibility** -- SDK expects specific codex CLI behavior -- Using mismatched versions might cause issues -- SDK is at v0.76.0, ensure system codex matches or is compatible - -### 2. **PATH Availability** -- System binary must be accessible when Node.js process runs -- Consider environment differences (development vs production) -- Absolute paths are safer than relying on PATH resolution - -### 3. **No Fallback** -- If codexPathOverride points to invalid/missing binary, execution will fail -- SDK doesn't automatically fall back to embedded binary -- Implement error handling if using dynamic resolution - ---- - -## Environment Variables (Built-in) - -The SDK does NOT provide a built-in environment variable for binary path override, but it does use these: - -### Used by SDK - -1. **`CODEX_INTERNAL_ORIGINATOR_OVERRIDE`** (Internal) - - Source: `dist/index.js:140-141` - - Set to `"codex_sdk_ts"` to identify SDK usage - - Not for user configuration - -2. **`OPENAI_BASE_URL`** (Configurable) - - Override via `CodexOptions.baseUrl` - - Also injectable via env - -3. **`CODEX_API_KEY`** (Configurable) - - Override via `CodexOptions.apiKey` - - Also injectable via env - -### NOT Provided - -- ❌ `CODEX_BINARY_PATH` - Not a built-in feature -- ❌ `CODEX_PATH` - Not a built-in feature -- ❌ Auto-discovery via system PATH - Not implemented - ---- - -## Recommended Implementation Pattern - -For maximum flexibility, consider this pattern: - -```typescript -import { Codex } from '@openai/codex-sdk'; -import { execSync } from 'child_process'; -import { existsSync } from 'fs'; - -function createCodexInstance(options = {}) { - // Priority order: - // 1. Explicit override in options - // 2. Environment variable - // 3. System PATH - // 4. Embedded binary (SDK default) - - let codexPath = options.codexPathOverride; - - if (!codexPath && process.env.CODEX_BINARY_PATH) { - codexPath = process.env.CODEX_BINARY_PATH; - } - - if (!codexPath) { - try { - codexPath = execSync('which codex', { encoding: 'utf8' }).trim(); - if (!existsSync(codexPath)) { - codexPath = undefined; - } - } catch { - // Fall back to embedded binary - codexPath = undefined; - } - } - - return new Codex({ - ...options, - codexPathOverride: codexPath - }); -} - -// Usage -const codex = createCodexInstance(); -``` - ---- - -## Summary - -| Question | Answer | -|----------|--------| -| **Can SDK use system codex?** | ✅ Yes, via `codexPathOverride` | -| **Is configuration option available?** | ✅ Yes, in `CodexOptions` interface | -| **Built-in env variable support?** | ❌ No, must implement custom logic | -| **Automatic PATH resolution?** | ❌ No, must provide explicit path | -| **Fallback to embedded?** | ❌ No, fails if override is invalid | -| **Version tested** | 0.76.0 (both system and embedded) | - ---- - -## Conclusion - -The `@openai/codex-sdk` library provides full support for using a system-installed Codex binary through the `codexPathOverride` configuration option. This feature is well-designed and allows developers to choose between the convenience of embedded binaries and the flexibility of system-managed installations. - -To use a system binary: -1. Install codex globally (via npm, brew, asdf, etc.) -2. Pass the path via `codexPathOverride` when instantiating `Codex` -3. Optionally implement PATH resolution logic for automatic discovery - -The embedded binary remains the default, ensuring the SDK works out-of-the-box without requiring system-wide codex installation. diff --git a/MODEL_FETCHING_REPORT.md b/MODEL_FETCHING_REPORT.md deleted file mode 100644 index ffbd9b2a7..000000000 --- a/MODEL_FETCHING_REPORT.md +++ /dev/null @@ -1,87 +0,0 @@ -# Model Fetching Investigation Report - -## Summary - -Investigated the model fetching system to determine what models are actually available for both Claude and Codex agents. - -## Code Location - -The model fetching logic is located in: -- **File**: `packages/server/src/server/agent/model-catalog.ts` (lines 22-101) -- **Main Function**: `fetchProviderModelCatalog(provider, options)` -- **Claude Function**: `fetchClaudeModelCatalog(options)` (lines 35-66) -- **Codex Function**: `fetchCodexModelCatalog()` (lines 68-101) - -## How It Works - -### Claude Model Fetching -- Uses the Claude Agent SDK's `query.supportedModels()` method -- Creates a query instance with the given `cwd` (working directory) -- Returns models from the SDK with their display names and descriptions - -### Codex Model Fetching -- Spawns the Codex binary (`codex app-server`) as a subprocess -- Communicates via JSON-RPC protocol -- Sends `initialize` followed by `model/list` requests -- Returns models with metadata including reasoning efforts - -## Actual Models Returned - -### Claude Models (3 total) - -1. **Default (recommended)** (`default`) - - Description: "Sonnet 4.5 · Smartest model for daily use" - - Is Default: false - -2. **Opus** (`opus`) - - Description: "Legacy: Opus 4.1 · Reaches usage limits faster" - - Is Default: false - -3. **Haiku** (`haiku`) - - Description: "Haiku 4.5 · Fastest model for simple tasks" - - Is Default: false - -### Codex Models (3 total) - -1. **gpt-5.1-codex** (`gpt-5.1-codex`) ⭐ DEFAULT - - Description: "Optimized for codex." - - Is Default: true - - Model: gpt-5.1-codex - - Default Reasoning Effort: medium - -2. **gpt-5.1-codex-mini** (`gpt-5.1-codex-mini`) - - Description: "Optimized for codex. Cheaper, faster, but less capable." - - Is Default: false - - Model: gpt-5.1-codex-mini - - Default Reasoning Effort: medium - -3. **gpt-5.1** (`gpt-5.1`) - - Description: "Broad world knowledge with strong general reasoning." - - Is Default: false - - Model: gpt-5.1 - - Default Reasoning Effort: medium - -## Key Observations - -1. **Claude models**: The model IDs returned are simplified (`default`, `opus`, `haiku`) rather than full model identifiers like `claude-sonnet-4-5-20250929`. - -2. **Codex models**: All three models are available and properly marked with `isDefault` flag on `gpt-5.1-codex`. - -3. **No Sonnet variant**: Interestingly, Claude returns a "default" model (which is Sonnet 4.5 based on the description) but doesn't expose a model ID called "sonnet" - only "default", "opus", and "haiku". - -4. **Model resolution**: The `model-resolver.ts` file uses these catalogs to find the default model when none is specified, preferring models marked with `isDefault: true`. - -## Testing Method - -Created and ran a test script (`test-models.ts`) that directly imports and calls: -- `fetchClaudeModelCatalog()` -- `fetchCodexModelCatalog()` - -Executed with: `npx tsx test-models.ts` - -## Related Files - -- `src/server/agent/model-catalog.ts` - Model fetching implementation -- `src/server/agent/model-resolver.ts` - Default model resolution -- `src/server/agent/model-catalog.e2e.test.ts` - End-to-end tests -- `src/server/session.ts:1589` - Usage in session handling (list_provider_models_response) diff --git a/REPORT-claude-credentials-failure.md b/REPORT-claude-credentials-failure.md deleted file mode 100644 index 4acdb7e7e..000000000 --- a/REPORT-claude-credentials-failure.md +++ /dev/null @@ -1,20 +0,0 @@ -# Claude test failures: real root cause - -## Finding -The Claude E2E tests were not failing due to missing credentials in general; they were failing because the tests overwrite `CLAUDE_CONFIG_DIR` with a fresh temp directory and do **not** carry forward Claude's credential store. This removes the SDK's `.credentials.json` file when the SDK is running in plaintext storage mode (common in CI), so the SDK cannot load OAuth/API credentials even though the user has valid credentials in the default config directory. - -## Evidence -- The Claude agent SDK stores credentials in a file named `.credentials.json` under its config directory: - - `node_modules/@anthropic-ai/claude-agent-sdk/cli.js` shows the plaintext credential store path as `join(storageDir, ".credentials.json")`. -- The tests set `process.env.CLAUDE_CONFIG_DIR` to a temp dir in: - - `packages/server/src/server/agent/providers/claude-agent.test.ts` (via `useTempClaudeConfigDir`) - - `packages/server/src/server/agent/agent-mcp.e2e.test.ts` -- The temp config dir is populated with settings only, so the SDK can't find `.credentials.json` after the override. - -## Fix summary -- Copy `.credentials.json` from the original config directory (explicit `CLAUDE_CONFIG_DIR` or `~/.claude`) into the temp config dir used by tests. -- Remove the hardcoded env-var-only credential precheck so tests fail with the *real* SDK error if credentials are genuinely absent. - -## Files updated -- `packages/server/src/server/agent/providers/claude-agent.test.ts` -- `packages/server/src/server/agent/agent-mcp.e2e.test.ts` diff --git a/REPORT-claude-permission-tests.md b/REPORT-claude-permission-tests.md deleted file mode 100644 index ba0f7da7e..000000000 --- a/REPORT-claude-permission-tests.md +++ /dev/null @@ -1,118 +0,0 @@ -# Investigation: Claude Provider Permissions in Daemon E2E Tests - -## Root Cause - -The Claude permission tests in `daemon.e2e.test.ts` don't work because they read the **user's real `~/.claude/settings.json`** which has `Bash(rm:*)` in the `allow` list. This causes `rm` commands to execute without requesting permission. - -### Why Direct Tests Work (`claude-agent.test.ts`) - -The direct tests use `useTempClaudeConfigDir()` at `packages/server/src/server/agent/providers/claude-agent.test.ts:57-87`: - -```typescript -function useTempClaudeConfigDir(): () => void { - const previousConfigDir = process.env.CLAUDE_CONFIG_DIR; - const sourceConfigDir = previousConfigDir ?? path.join(os.homedir(), ".claude"); - const configDir = mkdtempSync(path.join(os.tmpdir(), "claude-config-")); - const settings = { - permissions: { - allow: [], - deny: [], - ask: ["Bash(rm:*)"], // <-- Forces rm to request permission - additionalDirectories: [], - }, - sandbox: { enabled: true, autoAllowBashIfSandboxed: false }, - }; - writeFileSync(path.join(configDir, "settings.json"), settingsText, "utf8"); - writeFileSync(path.join(configDir, "settings.local.json"), settingsText, "utf8"); - copyClaudeCredentials(sourceConfigDir, configDir); - process.env.CLAUDE_CONFIG_DIR = configDir; // <-- SDK reads from this - return () => { /* cleanup */ }; -} -``` - -This: -1. Creates a temporary config directory with custom `settings.json` -2. Sets `CLAUDE_CONFIG_DIR` environment variable to point to it -3. Includes `ask: ["Bash(rm:*)"]` so `rm` commands request permission -4. The test's `beforeAll()` calls this before any tests run - -### Why Daemon E2E Tests Fail - -The daemon tests at `packages/server/src/server/daemon.e2e.test.ts:910-1094`: -1. Start a daemon server via `createTestPaseoDaemon()` -2. The daemon runs in-process (not a separate process) -3. No temp config directory is set up -4. The Claude SDK uses `settingSources: ["user", "project"]` (line 665 of `claude-agent.ts`) -5. SDK reads `~/.claude/settings.json` which has `allow: ["Bash(rm:*)"]` -6. `rm` commands auto-execute without permission prompt - -### Evidence - -User's `~/.claude/settings.json`: -```json -{ - "permissions": { - "allow": [ - "Bash(rm:*)", // <-- This allows rm without permission - ... - ], - ... - } -} -``` - -## Solution Options - -### Option 1: Use `CLAUDE_CONFIG_DIR` in Daemon Tests (Recommended) - -Modify `createDaemonTestContext()` or add a new function for permission tests: - -```typescript -function useTempClaudeConfigDir(): () => void { - // Same implementation as claude-agent.test.ts - // Set CLAUDE_CONFIG_DIR before test starts -} - -// In permission test beforeAll: -beforeAll(() => { - restoreConfigDir = useTempClaudeConfigDir(); -}); -afterAll(() => { - restoreConfigDir?.(); -}); -``` - -Since the daemon runs in-process, `process.env.CLAUDE_CONFIG_DIR` should work. - -### Option 2: Use SDK's `allowedTools` Override - -The Claude SDK has an `allowedTools` option that auto-allows specific tools. We could potentially use a combination of SDK options to override filesystem settings. - -However, the SDK docs say `settingSources: []` (empty) creates "SDK isolation mode" where no filesystem settings are loaded. We could: -1. Set `settingSources: []` to ignore user settings -2. Provide explicit permission rules via SDK options - -This would require changes to how `claude-agent.ts` configures the SDK. - -### Option 3: Skip Tests When User Settings Conflict (Not Recommended) - -Could detect if user has `Bash(rm:*)` in allow list and skip tests. This is fragile and doesn't actually test the permission flow. - -## Recommended Fix - -**Option 1** is simplest and most consistent with how `claude-agent.test.ts` already works: - -1. Create a shared `useTempClaudeConfigDir()` utility in test-utils -2. Use it in the Claude permission tests in daemon.e2e.test.ts -3. Ensure the temp config has `ask: ["Bash(rm:*)"]` to force permission requests - -The daemon runs in the same process, so setting `CLAUDE_CONFIG_DIR` before creating agents should work. - -## Files Analyzed - -- `packages/server/src/server/agent/providers/claude-agent.test.ts:57-87` - temp config setup -- `packages/server/src/server/agent/providers/claude-agent.ts:651-670` - SDK options including `settingSources` -- `packages/server/src/server/daemon.e2e.test.ts:903-1094` - skipped permission tests -- `packages/server/src/server/test-utils/paseo-daemon.ts` - daemon creation (no config override) -- `node_modules/@anthropic-ai/claude-agent-sdk/entrypoints/agentSdkTypes.d.ts:983-991` - `settingSources` docs -- `~/.claude/settings.json` - user's actual settings with `allow: ["Bash(rm:*)"]` diff --git a/REPORT-claude-streaming-regression.md b/REPORT-claude-streaming-regression.md deleted file mode 100644 index 38cc3690f..000000000 --- a/REPORT-claude-streaming-regression.md +++ /dev/null @@ -1,202 +0,0 @@ -# Claude Streaming Regression Investigation - -## Status: ROOT CAUSE IDENTIFIED - -## Problem -Claude agent text is garbled/corrupted during streaming, with words cut off and merged incorrectly (e.g., "a" + "check error" instead of "a" + "type" + "check error"). This bug **ONLY appears in long-running agents** during the 2nd+ conversation turn, not during initial agent creation. - -## Investigation Timeline - -### Phase 1: App-Side Analysis (Passed) -- Added debug logging to React Native state management -- Verified Zustand state updates are correct -- Confirmed FlatList rendering is correct -- **Conclusion**: Bug is NOT in the app layer - -### Phase 2: Server-Side Streaming Analysis (Passed) -- Added E2E test to verify server sends clean chunks during new agent creation -- Test passes - server correctly forwards all text_delta chunks from Claude SDK -- **Conclusion**: Bug is NOT in baseline streaming code - -### Phase 3: Long-Running Agent Analysis (IDENTIFIED ROOT CAUSE) -- Realized the E2E test only tested NEW agents, not long-running scenarios with multiple turns -- Examined `claude-agent.ts` state management across multiple `stream()` invocations -- **ROOT CAUSE FOUND** in `claude-agent.ts` - -## Root Cause - -### Location -`packages/server/src/server/agent/providers/claude-agent.ts` - -### The Bug: Race Condition with Shared State Flags - -**File**: `packages/server/src/server/agent/providers/claude-agent.ts` - -**Critical Lines**: 480-482 (fire-and-forget call) - -```typescript -// Line 452-503: stream() method -async *stream( - prompt: AgentPromptInput, - _options?: AgentRunOptions -): AsyncGenerator { - const sdkMessage = this.toSdkUserMessage(prompt); - const queue = new Pushable(); - this.eventQueue = queue; - // ... - - // BUG: forwardPromptEvents is not awaited! - // This is a fire-and-forget call that allows race conditions - this.forwardPromptEvents(sdkMessage, queue).catch((error) => { - console.error("[ClaudeAgentSession] Unexpected error in forwardPromptEvents:", error); - }); - - // Immediately starts consuming from queue while forwardPromptEvents - // is still running asynchronously - try { - for await (const event of queue) { - yield event; - if (event.type === "turn_completed" || event.type === "turn_failed") { - finishedNaturally = true; - break; - } - } - } finally { - // ... - } -} -``` - -### The Mechanism: Shared State Across Turns - -In a long-running agent with multiple turns: - -1. **Turn 1**: User sends message - - `stream()` called, creates generator instance 1 - - `forwardPromptEvents()` async method starts running (not awaited) - - Flags `streamedAssistantTextThisTurn` and `streamedReasoningThisTurn` reset to false (line 769-770) - - Stream events arrive, set flags to true - - Final "assistant" message arrives, uses flag to suppress duplicate (line 824) - -2. **Turn 2** (while Turn 1 is still processing): User sends another message - - `stream()` called AGAIN, creates generator instance 2 - - Both generator instances share the **SAME ClaudeAgentSession object** with **SAME instance variables** - - `forwardPromptEvents()` for Turn 2 resets the flags (line 769-770) - - BUT if Turn 1's `forwardPromptEvents()` is still running, its stream_events are STILL coming in - - The flag changes are now SHARED between both stream operations - -### The Garbled Text Result - -When flags get mixed up between concurrent `forwardPromptEvents()` calls: - -1. Turn 2's `forwardPromptEvents()` resets `streamedAssistantTextThisTurn = false` (line 769) -2. Turn 1 is still streaming text_deltas and setting `streamedAssistantTextThisTurn = true` (line 1138) -3. When Turn 1's final "assistant" message arrives, it checks the flag (line 824) -4. The flag value is UNCERTAIN - it depends on which operation modified it last -5. If suppression logic fails, text from different chunks could be: - - Partially suppressed (causing words to be cut off) - - Duplicated (causing merging) - - Out of order - -## Affected Code Sections - -### 1. The Fire-and-Forget Call (Line 480-482) -```typescript -this.forwardPromptEvents(sdkMessage, queue).catch((error) => { - console.error("[ClaudeAgentSession] Unexpected error in forwardPromptEvents:", error); -}); -``` - -**Problem**: No await. The async function runs in the background while the queue iteration starts immediately. - -### 2. Shared Flags (Lines 368-369) -```typescript -private streamedAssistantTextThisTurn = false; -private streamedReasoningThisTurn = false; -``` - -**Problem**: These are instance variables shared across ALL calls to `stream()` on the same session object. - -### 3. Flag Usage in Suppression Logic (Lines 823-826) -```typescript -case "assistant": { - const timelineItems = this.mapBlocksToTimeline(message.message.content, { - suppressAssistantText: this.streamedAssistantTextThisTurn, // Uses shared flag! - suppressReasoning: this.streamedReasoningThisTurn, // Uses shared flag! - }); -``` - -**Problem**: Reads the shared flag value without synchronization. - -### 4. Flag Mutation During Streaming (Lines 1138, 1149) -```typescript -if (context === "live") { - this.streamedAssistantTextThisTurn = true; // Mutates shared flag -} -// ... -if (context === "live") { - this.streamedReasoningThisTurn = true; // Mutates shared flag -} -``` - -**Problem**: Mutates shared state without coordination between concurrent operations. - -## Why This Wasn't Caught by Tests - -The E2E test in commit `e587547` creates a NEW Claude agent and sends messages sequentially to the SAME agent. While messages are sent back-to-back, the test waits for each response to complete (the `runPrompt()` calls don't overlap). - -In the actual app during stress testing or rapid input, multiple `stream()` calls could overlap, causing the race condition. - -## Proposed Fix - -**Move the streaming flags from instance variables to local variables scoped to each `stream()` invocation.** - -Replace instance variables: -```typescript -// REMOVE THESE -private streamedAssistantTextThisTurn = false; -private streamedReasoningThisTurn = false; -``` - -Add as parameters to `forwardPromptEvents()` and pass them through the call chain: -```typescript -async *stream(...) { - // Local variables scoped to THIS invocation - let streamedAssistantTextThisTurn = false; - let streamedReasoningThisTurn = false; - - // Pass to forwardPromptEvents - this.forwardPromptEvents(sdkMessage, queue, { - streamedAssistantTextThisTurn, - streamedReasoningThisTurn, - }).catch(...); -} - -private async forwardPromptEvents( - message: SDKUserMessage, - queue: Pushable, - flags: { streamedAssistantTextThisTurn: boolean; streamedReasoningThisTurn: boolean } -) { - flags.streamedAssistantTextThisTurn = false; // Reset only this operation's flags - flags.streamedReasoningThisTurn = false; - // ... rest of implementation -} -``` - -This ensures each `stream()` invocation has its own isolated flags that can't interfere with concurrent operations. - -## Verification Needed - -Before this fix is applied: -1. Write a test that reproduces the race condition (overlapping `stream()` calls) -2. Verify the fix prevents the race condition -3. Run existing E2E tests to ensure no regressions - -## Summary - -The bug is a **classic race condition** caused by: -1. Non-awaited async function call (fire-and-forget) -2. Shared mutable state (instance variables) -3. Multiple concurrent consumers of that state (overlapping `stream()` calls) - -This is a threading/concurrency issue, not a text encoding or protocol problem. The fix is to isolate state per operation rather than sharing it at the instance level. diff --git a/REPORT-codex-history-bug.md b/REPORT-codex-history-bug.md deleted file mode 100644 index 1adb81c9f..000000000 --- a/REPORT-codex-history-bug.md +++ /dev/null @@ -1,14 +0,0 @@ -# Codex history missing after daemon restart - -## Root cause -- Codex MCP history loader only searched a single session root derived from `CODEX_SESSION_DIR` (or metadata), then stopped. -- In practice the Codex CLI still writes rollouts under the default `~/.codex/sessions` even when a custom session dir is present in metadata, so the lookup could miss the real rollout file after a daemon restart. -- When the lookup fails, `loadPersistedHistoryFromDisk()` returns an empty timeline, so `streamHistory()` yields nothing and the UI shows an empty conversation. - -## Fix -- Prefer a persisted rollout path if present, but fall back to scanning the default Codex sessions directory when the preferred root has no rollout file. -- Allow history lookup to use `conversationId` when `sessionId` is missing so resume still works. -- Persist `codexSessionDir` so future resumes can try the same root first, but always fall back to the default root if it does not contain the rollout file. - -## Files touched -- `packages/server/src/server/agent/providers/codex-mcp-agent.ts` diff --git a/REPORT-codex-image-attachment-test.md b/REPORT-codex-image-attachment-test.md deleted file mode 100644 index 37c589da2..000000000 --- a/REPORT-codex-image-attachment-test.md +++ /dev/null @@ -1,27 +0,0 @@ -# Codex Image Attachment Test (Playwright MCP) - -## Summary -- Image upload via the new agent screen succeeded and Codex identified the color as red. -- The Codex prompt still appears to contain base64 image data rather than a temp file path. -- `/tmp/paseo-attachments` was not created during the request. - -## Steps -1. Opened `http://localhost:8081/agent/new` with Codex selected, working dir set to `/Users/moboudra/dev/voice-dev`. -2. Clicked the attachment icon in the composer and uploaded `/tmp/red.png`. -3. Sent message: `what color is this image?`. -4. Observed agent response and timeline. - -## Evidence -- UI console logs showed image attachments included in create-agent request: - - `handleSendMessage - selectedImages: 1` - - `createAgent called with images: 1` - - `createAgent message has images: true 1` -- Agent response: - - `The image is solid red (#ff0000).` -- Timeline showed a tool command containing inline base64 data: - - `/bin/zsh -lc python - <<'PY' ... b='iVBORw0K...' ...` -- Temp directory not created: - - `ls -la /tmp/paseo-attachments` → `No such file or directory`. - -## Implication -The Codex prompt still includes base64 data (or an equivalent inline payload) rather than referencing a temp file path, so the recent fix to write attachments under `/tmp/paseo-attachments` does not appear to be taking effect. diff --git a/REPORT-codex-mcp-claude-parity.md b/REPORT-codex-mcp-claude-parity.md deleted file mode 100644 index d9eb684ff..000000000 --- a/REPORT-codex-mcp-claude-parity.md +++ /dev/null @@ -1,30 +0,0 @@ -# Codex MCP vs Claude Provider Parity Audit - -Scope: `packages/server/src/server/agent/providers/claude-agent.ts` vs `packages/server/src/server/agent/providers/codex-mcp-agent.ts`. - -## Summary (gaps to close) -- Dynamic modes: Claude supports runtime mode changes with validation; Codex MCP marks `supportsDynamicModes: false` and only updates local config (no server-side mode validation or negotiation). -- Persistence: Claude persists sessions on disk and supports discovery/listing; Codex MCP stores history only in-memory (per-process) and does not implement `listPersistedAgents`. -- MCP server configuration: Claude merges default + user-specified MCP servers; Codex MCP does not pass `mcpServers` config through to the Codex MCP tool. -- Permission context: Claude permission requests carry tool metadata and optional updates; Codex MCP permission mapping is command-only (no file change metadata or generalized tool permissions). - -## Capability Parity Checklist - -| Area | Claude provider (evidence) | Codex MCP provider (evidence) | Parity status | -| --- | --- | --- | --- | -| Streaming events (assistant text, reasoning) | `mapBlocksToTimeline` handles text and reasoning chunks, including delta variants (`packages/server/src/server/agent/providers/claude-agent.ts:992`-`1039`). | MCP events map `agent_message`, `agent_reasoning(_delta)` into timeline items (`packages/server/src/server/agent/providers/codex-mcp-agent.ts:1048`-`1109`). | **Mostly parity** (both stream text + reasoning). -| Tool invocation streaming | Handles tool use + tool result variants (`tool_use`, `mcp_tool_use`, `server_tool_use`, `tool_result`, `web_search_tool_result`, etc.) into tool_call timeline items (`packages/server/src/server/agent/providers/claude-agent.ts:1042`-`1056`). | Handles `exec_command_*`, `patch_apply_*`, `item.*` with `command_execution`, `file_change`, `mcp_tool_call`, `web_search`, `todo_list` mapping (`packages/server/src/server/agent/providers/codex-mcp-agent.ts:1120`-`1535`). | **Partial parity** (Codex MCP maps fewer tool/result variants; no explicit handling for text editor or web fetch tool results). -| Session persistence/resume | Loads persisted history from `~/.claude/projects` and exposes `listPersistedAgents` (`packages/server/src/server/agent/providers/claude-agent.ts:202`-`222`, `930`-`970`). | Uses in-memory `SESSION_HISTORY` and stores conversation IDs in metadata only (`packages/server/src/server/agent/providers/codex-mcp-agent.ts:110`, `363`-`376`, `647`-`679`). No `listPersistedAgents` implementation. | **Gap** (Codex MCP persistence is process-local, not discoverable). -| Abort/interrupt handling | Calls `query.interrupt()` and handles aborts on permission requests (`packages/server/src/server/agent/providers/claude-agent.ts:390`-`685`, `850`-`862`). | Cancels via `AbortController`, emits `turn_failed` on interrupt, no explicit MCP interrupt call (`packages/server/src/server/agent/providers/codex-mcp-agent.ts:494`-`534`, `723`-`878`). | **Parity with caveat** (both expose `interrupt`, Codex MCP relies on aborting the tool call). -| Runtime info reporting | Captures model/mode/session IDs via SDK init and caches (`packages/server/src/server/agent/providers/claude-agent.ts:260`-`332`, `751`-`757`). | Captures model/mode/session ID from responses and events (`packages/server/src/server/agent/providers/codex-mcp-agent.ts:560`-`620`, `880`-`1034`). | **Parity**. -| Mode switching | Validates mode IDs and sets `permissionMode` in SDK options (`packages/server/src/server/agent/providers/claude-agent.ts:269`-`279`, `540`-`545`). | `supportsDynamicModes: false`; `setMode` just mutates local config and current mode (`packages/server/src/server/agent/providers/codex-mcp-agent.ts:61`-`67`, `588`-`606`). | **Gap** (no validated or negotiated mode changes). -| MCP server support | Always sets agent-control + Playwright MCP servers; merges user `mcpServers` (`packages/server/src/server/agent/providers/claude-agent.ts:557`-`585`). | No use of `config.mcpServers`; only passes `config.extra?.codex` (`packages/server/src/server/agent/providers/codex-mcp-agent.ts:238`-`258`). | **Gap** (no MCP server configuration parity). -| Permission flow | Permission requests via SDK `canUseTool`, supports updates and handles resolution events (`packages/server/src/server/agent/providers/claude-agent.ts:540`-`545`, `783`-`841`). | Uses MCP `ElicitRequest` and builds command-only permission requests (`packages/server/src/server/agent/providers/codex-mcp-agent.ts:398`-`419`, `1552`-`1590`). | **Partial parity** (command-only context; no file-change tool permissions). -| listPersistedAgents | Implemented (reads filesystem) (`packages/server/src/server/agent/providers/claude-agent.ts:202`-`222`). | Not implemented in Codex MCP client. | **Gap**. - -## Notes / Recommendations -1. If parity is required, Codex MCP should either implement `listPersistedAgents` and on-disk history storage or downgrade its `supportsSessionPersistence` flag to avoid misleading clients. -2. Codex MCP should accept `mcpServers` in `AgentSessionConfig` and pass through to the Codex tool arguments (similar to Claude merge behavior). -3. Dynamic mode parity requires either: (a) `supportsDynamicModes: true` with validation + server-side mode switching; or (b) documented limitation in UI. -4. Permission requests should include file-change context (path/kind) when applicable, not only command fields. - diff --git a/REPORT-codex-mcp-go-live-audit.md b/REPORT-codex-mcp-go-live-audit.md deleted file mode 100644 index 2dced79bb..000000000 --- a/REPORT-codex-mcp-go-live-audit.md +++ /dev/null @@ -1,38 +0,0 @@ -# Codex MCP go-live audit - -## Verdict -Not ready to ship Codex MCP as the default `codex` provider. - -## Evidence (tests) -- Command: `npm run test --workspace=@paseo/server 2>&1 | tee test-output-live-audit.txt` -- Result: test run did not complete; interrupted after extended stall while running Claude tests. -- Failures and skips observed before interrupt: - - `src/server/agent/providers/codex-agent.test.ts`: - - 1 failed: `hydrates persisted shell_command tool calls with completed status` -> `expected undefined to be truthy` - - 1 skipped: `emits permission requests and resolves them when approvals are handled (awaiting Codex support)` - - `src/server/agent/providers/codex-mcp-agent.test.ts`: - - Failed: `maps thread/item events for file changes, MCP tools, web search, and todo lists` -> `expected false to be true` - - Failed: `captures tool call inputs/outputs for commands, file changes, file reads, MCP tools, and web search` -> `Test timed out in 240000ms` - - Failed: `emits an error timeline item for failed MCP turns` -> `expected 0 to be greater than 0` - - Failed: `persists session metadata and resumes with history` -> multiple assertions (missing metadata, tool outputs, and conversation id mismatch) -- Additional errors seen during run: - - `codex_api::endpoint::responses` network errors for `https://chatgpt.com/backend-api/codex/responses` (timestamped in output) - - Repeated `ClaudeAgentSDK` watcher errors (e.g., `UNKNOWN: unknown error, watch '/var/folders/.../vscode-git-*.sock'`) while running `claude-agent.test.ts` - -## Evidence (typecheck) -- Command: `npm run typecheck --workspace=@paseo/server` -- Result: failed with: - - `src/server/agent/agent-projections.ts(198,3): error TS2322: Type '{}' is not assignable to type 'JsonValue | undefined'.` - - `src/server/agent/providers/claude-agent.ts(343,5): error TS2322: Type 'AgentSessionConfig' is not assignable to type 'ClaudeAgentConfig'.` - -## Parity gaps vs Claude provider -- Tool call timeline mapping parity not met: thread/item events and tool call inputs/outputs fail (Codex MCP tests failing/timeouts). -- Error timeline parity not met: missing error timeline item for failed MCP turns. -- Persistence/resume parity not met: missing or unstable conversation metadata and tool outputs. -- Claude baseline not validated: `claude-agent.test.ts` did not complete due to repeated SDK watch errors; cannot confirm baseline parity. - -## Workarounds/hacks check -- `rg -n "queuePermissionGatedEvent|ensurePermissionRequestFromEvent|pendingToolEvents|exec_approval_request|modelRejected" packages/server/src/server/agent/providers/codex-mcp-agent.ts` returned no matches. - -## Conclusion -Blocking failures in Codex MCP tests, typecheck errors, and incomplete Claude baseline verification mean we cannot ship Codex MCP as the default provider yet. diff --git a/REPORT-codex-mcp-refactor-review.md b/REPORT-codex-mcp-refactor-review.md deleted file mode 100644 index eb9b91033..000000000 --- a/REPORT-codex-mcp-refactor-review.md +++ /dev/null @@ -1,23 +0,0 @@ -# Codex MCP refactor review - -Scope: -- packages/server/src/server/agent/providers/codex-mcp-agent.ts -- packages/server/src/server/agent/providers/codex-mcp-agent.test.ts -- packages/server/src/server/agent/agent-sdk-types.ts - -Findings - -1) Multi-key normalization remains in Codex MCP schemas (still “guessing” across multiple key names). -- Evidence: - - Session identifiers normalize conversation id from multiple keys in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:265-282`. - - Read file items accept `path`, `file_path`, and `filePath` and merge output content from multiple fields in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:605-650`. - - MCP tool calls normalize `server`/`tool` across many alternative keys in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:654-717`. - - Permission params normalize `call_id`/`codex_call_id`/`codex_event_id` and `command`/`codex_command`, `cwd`/`codex_cwd` in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:939-980`. - -2) Related type definitions still use `Record`. -- Evidence: - - `packages/server/src/server/agent/agent-sdk-types.ts:17`, `:34`, `:94`, `:103`, `:105`, `:111`, `:132`, `:167`, `:170`. - -Notes -- No `as` casts or `??` fallbacks were found in `packages/server/src/server/agent/providers/codex-mcp-agent.ts` or `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts`. -- No `Record` usage remains in the Codex MCP provider or its tests. diff --git a/REPORT-codex-mcp-test-hang.md b/REPORT-codex-mcp-test-hang.md deleted file mode 100644 index 5085cb26e..000000000 --- a/REPORT-codex-mcp-test-hang.md +++ /dev/null @@ -1,23 +0,0 @@ -# Codex MCP test hang investigation - -## Test that appeared stuck -- `CodexMcpAgentClient (MCP integration) > maps thread/item events for file changes, MCP tools, web search, and todo lists` -- Wait loop: `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:577` (`for await (const event of session.stream(prompt))` until `turn_completed`/`turn_failed`) - -## What was actually happening -- The test was slow (40s+) because the Codex MCP server performed multiple tool call cycles before completing the turn. -- The run ultimately failed (not a true deadlock) because the MCP tool call timeline item never appeared, so `rawItemTypes.has("mcp_tool_call")` stayed false. - -## Root cause -- Codex MCP server emits `mcp_tool_call_begin` and `mcp_tool_call_end` events with tool invocation + result payloads. -- `codex-mcp-agent.ts` handled raw_response_item tool calls but ignored `mcp_tool_call_*` events, so MCP tool calls were never mapped to timeline items when those events were the only reliable signal. - -## Evidence -- Observed event shapes from Codex MCP: - - `mcp_tool_call_begin` with `call_id` and `invocation` (server/tool/arguments) - - `mcp_tool_call_end` with `result.Ok.structuredContent` -- When mapping those events to tool_call timeline items, the test passed. - -## Fix -- Add schemas + handlers for `mcp_tool_call_begin`/`mcp_tool_call_end` in `packages/server/src/server/agent/providers/codex-mcp-agent.ts`. -- Emit `tool_call` timeline items for running/completed MCP tool calls and surface structured tool output. diff --git a/REPORT-codex-mcp-thread-item-mapping.md b/REPORT-codex-mcp-thread-item-mapping.md deleted file mode 100644 index 2d142f66d..000000000 --- a/REPORT-codex-mcp-thread-item-mapping.md +++ /dev/null @@ -1,52 +0,0 @@ -# Codex MCP thread/item mapping investigation - -## Summary -- Updated provider parsing for raw_response_item variants (web_search_call, function_call, custom_tool_call), normalized tool names (mcp__server__tool), and parsed JSON string tool arguments. -- Added MCP test server setup to reliably resolve SDK imports (createRequire with repo root package.json) and added a todo_list tool to the test MCP server. -- Added test-side fallback parsing for raw_response_item wrapper shapes plus fallback to timeline items for missing item types. - -## Current failure -Test: `CodexMcpAgentClient (MCP integration) > maps thread/item events for file changes, MCP tools, web search, and todo lists` - -Latest failure output: -``` -FAIL src/server/agent/providers/codex-mcp-agent.test.ts > CodexMcpAgentClient (MCP integration) > maps thread/item events for file changes, MCP tools, web search, and todo lists -AssertionError: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - -❯ src/server/agent/providers/codex-mcp-agent.test.ts:640:51 - 638| expect(sawItemEvent).toBe(true); - 639| expect(rawItemTypes.has("file_change")).toBe(true); - 640| expect(rawItemTypes.has("mcp_tool_call")).toBe(true); - 641| expect(rawItemTypes.has("web_search")).toBe(true); - 642| expect(rawItemTypes.has("todo_list")).toBe(true); -``` - -## Evidence collected -- Direct MCP debug run shows Codex emits raw_response_item types: - - `web_search_call` - - `function_call` with `name: "mcp__test__todo_list"` and JSON string `arguments` - - `function_call` with `name: "mcp__test__echo"` - - `custom_tool_call` with `name: "apply_patch"` - -This indicates tool-call items are emitted, but the test still fails to observe `mcp_tool_call` in `rawItemTypes` despite fallback parsing. - -## Hypotheses -1) Provider is not emitting provider_event for raw_response_item in the test run (or raw_response_item is wrapped differently than parseProviderEvent handles). -2) Timeline items for MCP tools are still not emitted, so fallback `rawItemTypes` population never sees `mcp_tool_call`. - -## Attempts -- Added `RawWebSearchCallSchema`, normalized tool names, and JSON parsing of tool `arguments` in `packages/server/src/server/agent/providers/codex-mcp-agent.ts`. -- Added direct raw_response_item handling in `CodexMcpAgentSession.handleMcpEvent` to emit item.completed and process thread items before normalizeEvent. -- Expanded test-side parsing of raw_response_item (and nested wrapper `data`) in `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts`. -- Added test MCP server todo_list tool and ensure SDK imports resolve via createRequire. - -## Next steps -- Add temporary logging around `handleMcpEvent` to confirm whether raw_response_item events (function_call) are arriving in the test run and whether `mapRawResponseItemToThreadItem` returns `mcp_tool_call`. -- If provider receives raw_response_item, trace why `ThreadItemEventSchema.parse` drops it (invalid item shape?) -- If provider does not receive raw_response_item, inspect MCP event wrapping shape in `codex/event` notifications during the test run (compare with direct MCP client debug script). diff --git a/REPORT-codex-mcp-tool-call-coverage.md b/REPORT-codex-mcp-tool-call-coverage.md deleted file mode 100644 index 59010c376..000000000 --- a/REPORT-codex-mcp-tool-call-coverage.md +++ /dev/null @@ -1,48 +0,0 @@ -# Codex MCP Tool Call Coverage E2E Failures - -## Test Command - -`npm run test --workspace=@paseo/server -- codex-mcp-agent.test.ts -t "captures tool call inputs/outputs"` - -## Failing Assertions - -Test: `CodexMcpAgentClient (MCP integration) > captures tool call inputs/outputs for commands, file changes, file reads, MCP tools, and web search` - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:532` - - `fileChangeCalls.some((item) => stringifyUnknown(item.output).includes("tool-create.txt"))` - - Output does not contain the file path; indicates `file_change` tool output is missing file metadata. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:535` - - `const readCall = toolCalls.find((item) => item.tool === "read_file")` - - No `read_file` tool call captured. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:536` - - `stringifyUnknown(readCall?.input)` did not include `tool-create.txt`. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:537` - - `stringifyUnknown(readCall?.output)` did not include `beta`. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:542` - - `const mcpCall = toolCalls.find((item) => item.server === "test" && item.tool === "echo")` - - No MCP tool call captured. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:543` - - `stringifyUnknown(mcpCall?.input)` did not include `mcp-ok`. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:544` - - `stringifyUnknown(mcpCall?.output)` did not include `mcp-ok`. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:549` - - `const webSearchCall = toolCalls.find((item) => item.server === "web_search" && item.tool === "web_search")` - - No web search tool call captured. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:550` - - `stringifyUnknown(webSearchCall?.input)` did not include `OpenAI Codex MCP`. - -- `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:551` - - `webSearchCall?.output` was undefined; web search results not captured. - -## Hypotheses - -- The Codex MCP provider may not be emitting `tool_call` timeline items for `read_file`, MCP tool calls, and `web_search` in this scenario, or the model is not executing the requested tools despite explicit prompts. -- File change timeline output appears to omit file metadata (e.g., `{ files: [{ path, kind }] }`), so the apply_patch completion output is not surfaced in timeline items. diff --git a/REPORT-daemon-client-design.md b/REPORT-daemon-client-design.md deleted file mode 100644 index 0a3ff3c81..000000000 --- a/REPORT-daemon-client-design.md +++ /dev/null @@ -1,716 +0,0 @@ -# DaemonClient Design Report - -## Objective - -Design a `DaemonClient` class that enables full E2E testing of the Paseo daemon WITHOUT Playwright. Test the daemon directly via WebSocket, ensure API correctness, and UI correctness follows. - ---- - -## Architectural Approaches - -### Approach 1: Simple WebSocket Wrapper (Recommended) - -**Description**: A thin, typed wrapper around WebSocket that directly mirrors the daemon's message protocol. - -```typescript -// packages/server/src/server/test-utils/daemon-client.ts - -import WebSocket from "ws"; -import { z } from "zod"; -import type { - SessionInboundMessage, - SessionOutboundMessage, - AgentSnapshotPayload, - AgentStreamEventPayload, - AgentPermissionRequest, - AgentPermissionResponse, -} from "../messages.js"; - -export interface DaemonClientConfig { - url: string; // ws://localhost:6767/ws - authHeader?: string; -} - -export type AgentEventHandler = (event: { - type: "state" | "stream" | "permission_request" | "permission_resolved"; - agentId: string; - payload: unknown; -}) => void; - -export class DaemonClient { - private ws: WebSocket | null = null; - private pendingRequests: Map = new Map(); - private eventHandlers: Set = new Set(); - - constructor(private config: DaemonClientConfig) {} - - // --- Connection --- - async connect(): Promise; - async close(): Promise; - - // --- Agent Lifecycle --- - async createAgent(config: CreateAgentConfig): Promise; - async deleteAgent(agentId: string): Promise; - async listAgents(): Promise; - async listPersistedAgents(): Promise; - - // --- Agent Interaction --- - async sendMessage(agentId: string, text: string, options?: SendMessageOptions): Promise; - async cancelAgent(agentId: string): Promise; - async setAgentMode(agentId: string, modeId: string): Promise; - - // --- Permissions --- - async respondToPermission(agentId: string, requestId: string, response: AgentPermissionResponse): Promise; - - // --- Streaming --- - waitForAgentIdle(agentId: string, options?: { timeout?: number }): Promise; - waitForPermission(agentId: string, options?: { timeout?: number }): Promise; - - // --- Event Subscription --- - on(handler: AgentEventHandler): () => void; - - // --- Raw Message Access --- - send(message: SessionInboundMessage): Promise; - receive(): AsyncIterable; -} -``` - -**Pros**: -- Simple, direct mapping to WebSocket protocol -- Full control over message timing and ordering -- Easy to debug - messages are visible -- No abstraction leaks -- Uses existing Zod schemas for type safety - -**Cons**: -- Tests must handle async event streams manually -- No automatic retry/reconnect logic - -**Files to create/modify**: -- `packages/server/src/server/test-utils/daemon-client.ts` (new) -- `packages/server/src/server/test-utils/index.ts` (export) - -**Scope**: ~300-400 lines of code - ---- - -### Approach 2: Reactive Event Store - -**Description**: A more opinionated client that maintains reactive state, similar to how the UI works. - -```typescript -export class DaemonClient { - // Reactive stores (like Zustand) - agents: Map; - timelines: Map; - permissions: Map; - - // Subscribe to state changes - subscribe(selector: (state) => T, callback: (value: T) => void): () => void; - - // Wait for state conditions - waitUntil(selector: (state) => T, predicate: (value: T) => boolean): Promise; -} -``` - -**Pros**: -- More declarative tests: `await client.waitUntil(s => s.agents.get(id)?.status, s => s === "idle")` -- Automatic state management -- Timeline history automatically tracked - -**Cons**: -- More complex implementation -- State management adds overhead -- Harder to test low-level protocol edge cases -- Abstracts away message ordering which may hide bugs - -**Files to create/modify**: -- `packages/server/src/server/test-utils/daemon-client.ts` (new, larger) -- Potentially need state management library - -**Scope**: ~600-800 lines of code - ---- - -### Approach 3: Hybrid - Simple Core + Helper Methods - -**Description**: Simple WebSocket wrapper (Approach 1) with optional convenience helpers. - -```typescript -export class DaemonClient { - // Core: direct WebSocket wrapper (Approach 1) - // ... - - // Convenience: high-level test helpers - async createAgentAndWaitIdle(config, initialPrompt?): Promise<{ agent, timeline }>; - async sendMessageAndWaitIdle(agentId, text): Promise<{ timeline }>; - async approvePermissionAndWaitIdle(agentId, requestId): Promise; - - // Timeline helpers - getToolCalls(agentId): AgentTimelineItem[]; - getLastMessage(agentId): string | null; - hasError(agentId): boolean; -} -``` - -**Pros**: -- Best of both: simple core, convenient helpers -- Helpers can be added incrementally -- Core stays testable and debuggable -- Helpers reduce test boilerplate - -**Cons**: -- Helpers need maintenance as API evolves -- Risk of helpers hiding protocol bugs - -**Scope**: ~500-600 lines of code - ---- - -## Recommendation: Approach 1 (Simple WebSocket Wrapper) - -**Rationale**: -1. **Matches the existing pattern** - The existing E2E tests (`agent-mcp.e2e.test.ts`) use direct MCP client calls. A WebSocket client should be similarly direct. - -2. **Protocol transparency** - E2E tests should verify the actual protocol, not an abstracted version. A simple wrapper exposes the real messages. - -3. **Debuggability** - When tests fail, you can see exactly what messages were sent/received. Abstractions hide this. - -4. **Incremental** - Can add convenience methods later (Approach 3) if needed. - -5. **Low maintenance** - Simple code means less to maintain as the daemon evolves. - ---- - -## Implementation Design (Approach 1) - -### Core Types - -```typescript -// packages/server/src/server/test-utils/daemon-client.ts - -import WebSocket from "ws"; -import { nanoid } from "nanoid"; -import { z } from "zod"; -import type { - SessionInboundMessage, - SessionOutboundMessage, - AgentSnapshotPayload, - AgentStreamEventPayload, - AgentPermissionResponse, -} from "../messages.js"; - -export interface DaemonClientConfig { - url: string; - authHeader?: string; -} - -export interface CreateAgentOptions { - provider: "claude" | "codex"; - cwd: string; - title?: string; - model?: string; - modeId?: string; - initialPrompt?: string; - mcpServers?: Record; -} - -export interface SendMessageOptions { - messageId?: string; - images?: Array<{ data: string; mimeType: string }>; -} - -export type DaemonEvent = - | { type: "agent_state"; agentId: string; payload: AgentSnapshotPayload } - | { type: "agent_stream"; agentId: string; event: AgentStreamEventPayload; timestamp: string } - | { type: "session_state"; agents: AgentSnapshotPayload[] } - | { type: "status"; payload: { status: string } } - | { type: "error"; message: string }; -``` - -### Class Implementation - -```typescript -export class DaemonClient { - private ws: WebSocket | null = null; - private messageQueue: SessionOutboundMessage[] = []; - private eventListeners: Set<(event: DaemonEvent) => void> = new Set(); - private connectPromise: { resolve: () => void; reject: (e: Error) => void } | null = null; - - constructor(private config: DaemonClientConfig) {} - - // ============================================================================ - // Connection - // ============================================================================ - - async connect(): Promise { - return new Promise((resolve, reject) => { - this.ws = new WebSocket(this.config.url, { - headers: this.config.authHeader - ? { Authorization: this.config.authHeader } - : undefined, - }); - - this.ws.on("open", () => { - this.connectPromise = null; - resolve(); - }); - - this.ws.on("error", (err) => { - this.connectPromise?.reject(err); - this.connectPromise = null; - }); - - this.ws.on("message", (data) => { - const msg = JSON.parse(data.toString()); - if (msg.type === "pong") return; - if (msg.type === "session") { - this.handleSessionMessage(msg.message); - } - }); - - this.connectPromise = { resolve, reject }; - }); - } - - async close(): Promise { - if (this.ws) { - this.ws.close(); - this.ws = null; - } - } - - // ============================================================================ - // Agent Lifecycle - // ============================================================================ - - async createAgent(options: CreateAgentOptions): Promise { - const requestId = nanoid(); - this.send({ - type: "create_agent_request", - requestId, - config: { - provider: options.provider, - cwd: options.cwd, - title: options.title, - model: options.model, - modeId: options.modeId, - mcpServers: options.mcpServers, - }, - initialPrompt: options.initialPrompt, - }); - - // Wait for agent_state response - return this.waitFor((msg) => { - if (msg.type === "agent_state") { - return msg.payload; - } - return null; - }); - } - - async deleteAgent(agentId: string): Promise { - this.send({ type: "delete_agent_request", agentId }); - await this.waitFor((msg) => { - if (msg.type === "agent_deleted" && msg.payload.agentId === agentId) { - return true; - } - return null; - }); - } - - async listAgents(): Promise { - // Trigger session_state by connecting or sending ping - // session_state is sent on connection - return this.waitFor((msg) => { - if (msg.type === "session_state") { - return msg.payload.agents; - } - return null; - }); - } - - // ============================================================================ - // Agent Interaction - // ============================================================================ - - async sendMessage(agentId: string, text: string, options?: SendMessageOptions): Promise { - this.send({ - type: "send_agent_message", - agentId, - text, - messageId: options?.messageId, - images: options?.images, - }); - } - - async cancelAgent(agentId: string): Promise { - this.send({ type: "cancel_agent_request", agentId }); - } - - async setAgentMode(agentId: string, modeId: string): Promise { - this.send({ type: "set_agent_mode", agentId, modeId }); - } - - // ============================================================================ - // Permissions - // ============================================================================ - - async respondToPermission( - agentId: string, - requestId: string, - response: AgentPermissionResponse - ): Promise { - this.send({ - type: "agent_permission_response", - agentId, - requestId, - response, - }); - } - - // ============================================================================ - // Waiting / Streaming - // ============================================================================ - - async waitForAgentIdle(agentId: string, timeout = 60000): Promise { - return this.waitFor((msg) => { - if (msg.type === "agent_state" && msg.payload.id === agentId) { - if (msg.payload.status === "idle" || msg.payload.status === "error") { - return msg.payload; - } - } - return null; - }, timeout); - } - - async waitForPermission(agentId: string, timeout = 30000): Promise { - return this.waitFor((msg) => { - if (msg.type === "agent_permission_request" && msg.payload.agentId === agentId) { - return msg.payload.request; - } - if (msg.type === "agent_stream" && msg.payload.agentId === agentId) { - if (msg.payload.event.type === "permission_requested") { - return msg.payload.event.request; - } - } - return null; - }, timeout); - } - - // ============================================================================ - // Event Subscription - // ============================================================================ - - on(handler: (event: DaemonEvent) => void): () => void { - this.eventListeners.add(handler); - return () => this.eventListeners.delete(handler); - } - - // ============================================================================ - // Internals - // ============================================================================ - - private send(message: SessionInboundMessage): void { - this.ws?.send(JSON.stringify({ type: "session", message })); - } - - private handleSessionMessage(msg: SessionOutboundMessage): void { - this.messageQueue.push(msg); - - // Notify event listeners - const event = this.toEvent(msg); - if (event) { - for (const handler of this.eventListeners) { - handler(event); - } - } - } - - private toEvent(msg: SessionOutboundMessage): DaemonEvent | null { - switch (msg.type) { - case "agent_state": - return { type: "agent_state", agentId: msg.payload.id, payload: msg.payload }; - case "agent_stream": - return { type: "agent_stream", agentId: msg.payload.agentId, event: msg.payload.event, timestamp: msg.payload.timestamp }; - case "session_state": - return { type: "session_state", agents: msg.payload.agents }; - case "status": - return { type: "status", payload: msg.payload }; - default: - return null; - } - } - - private async waitFor( - predicate: (msg: SessionOutboundMessage) => T | null, - timeout = 30000 - ): Promise { - const start = Date.now(); - - // Check queued messages first - for (const msg of this.messageQueue) { - const result = predicate(msg); - if (result !== null) return result; - } - - // Wait for new messages - return new Promise((resolve, reject) => { - const check = (msg: SessionOutboundMessage) => { - const result = predicate(msg); - if (result !== null) { - resolve(result); - return true; - } - return false; - }; - - const handler = (data: WebSocket.Data) => { - const msg = JSON.parse(data.toString()); - if (msg.type === "session" && check(msg.message)) { - this.ws?.off("message", handler); - clearTimeout(timer); - } - }; - - const timer = setTimeout(() => { - this.ws?.off("message", handler); - reject(new Error(`Timeout waiting for message (${timeout}ms)`)); - }, timeout); - - this.ws?.on("message", handler); - }); - } -} -``` - ---- - -## Test Infrastructure - -### Test Setup - -```typescript -// packages/server/src/server/test-utils/daemon-test-context.ts - -import { createTestPaseoDaemon, type TestPaseoDaemon } from "./paseo-daemon.js"; -import { DaemonClient } from "./daemon-client.js"; - -export interface DaemonTestContext { - daemon: TestPaseoDaemon; - client: DaemonClient; - cleanup: () => Promise; -} - -export async function createDaemonTestContext(): Promise { - const daemon = await createTestPaseoDaemon(); - const client = new DaemonClient({ - url: `ws://127.0.0.1:${daemon.port}/ws`, - authHeader: daemon.agentMcpAuthHeader, - }); - await client.connect(); - - return { - daemon, - client, - cleanup: async () => { - await client.close(); - await daemon.close(); - }, - }; -} -``` - ---- - -## Example E2E Tests - -### Basic Flow - -```typescript -// packages/server/src/server/daemon.e2e.test.ts - -import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { createDaemonTestContext, type DaemonTestContext } from "./test-utils/daemon-test-context.js"; - -describe("daemon E2E", () => { - let ctx: DaemonTestContext; - - beforeEach(async () => { - ctx = await createDaemonTestContext(); - }); - - afterEach(async () => { - await ctx.cleanup(); - }); - - test("creates agent and receives response", async () => { - const agent = await ctx.client.createAgent({ - provider: "codex", - cwd: "/tmp", - title: "Test Agent", - }); - - expect(agent.id).toBeTruthy(); - expect(agent.provider).toBe("codex"); - expect(agent.status).toBe("idle"); - - await ctx.client.sendMessage(agent.id, "Say hello"); - - const finalState = await ctx.client.waitForAgentIdle(agent.id); - expect(finalState.status).toBe("idle"); - }); - - test("permission flow: approve", async () => { - const agent = await ctx.client.createAgent({ - provider: "claude", - cwd: "/tmp", - }); - - await ctx.client.sendMessage(agent.id, "Run: rm -f test.txt"); - - const permission = await ctx.client.waitForPermission(agent.id); - expect(permission.name).toContain("Bash"); - - await ctx.client.respondToPermission(agent.id, permission.id, { - behavior: "allow", - }); - - const finalState = await ctx.client.waitForAgentIdle(agent.id); - expect(finalState.status).toBe("idle"); - }); - - test("permission flow: deny", async () => { - const agent = await ctx.client.createAgent({ - provider: "claude", - cwd: "/tmp", - }); - - await ctx.client.sendMessage(agent.id, "Run: rm -f test.txt"); - - const permission = await ctx.client.waitForPermission(agent.id); - await ctx.client.respondToPermission(agent.id, permission.id, { - behavior: "deny", - message: "Not allowed", - }); - - const finalState = await ctx.client.waitForAgentIdle(agent.id); - expect(finalState.status).toBe("idle"); - }); - - test("agent persistence and resume", async () => { - const agent = await ctx.client.createAgent({ - provider: "codex", - cwd: "/tmp", - title: "Persistent Agent", - }); - - await ctx.client.sendMessage(agent.id, "Remember: the password is 12345"); - await ctx.client.waitForAgentIdle(agent.id); - - // Delete active agent (keeps persistence) - await ctx.client.deleteAgent(agent.id); - - // List persisted agents - const persisted = await ctx.client.listPersistedAgents(); - const found = persisted.find((p) => p.title === "Persistent Agent"); - expect(found).toBeTruthy(); - - // Resume - const resumed = await ctx.client.resumeAgent(found!.persistence!); - expect(resumed.id).toBeTruthy(); - }); - - test("multi-agent: agent A launches agent B", async () => { - const agentA = await ctx.client.createAgent({ - provider: "claude", - cwd: "/tmp", - title: "Parent Agent", - mcpServers: { - "agent-control": { - url: `http://127.0.0.1:${ctx.daemon.port}/mcp/agents`, - headers: { Authorization: ctx.daemon.agentMcpAuthHeader }, - }, - }, - }); - - await ctx.client.sendMessage( - agentA.id, - "Create a new Codex agent titled 'Child Agent' and have it say hello" - ); - - // Wait for parent to finish (which includes child creation) - await ctx.client.waitForAgentIdle(agentA.id); - - // Verify child agent was created - const agents = await ctx.client.listAgents(); - const child = agents.find((a) => a.title === "Child Agent"); - expect(child).toBeTruthy(); - expect(child!.provider).toBe("codex"); - }); -}); -``` - ---- - -## Files Summary - -| File | Action | Description | -|------|--------|-------------| -| `packages/server/src/server/test-utils/daemon-client.ts` | Create | DaemonClient class (~300 lines) | -| `packages/server/src/server/test-utils/daemon-test-context.ts` | Create | Test setup helpers (~50 lines) | -| `packages/server/src/server/test-utils/index.ts` | Modify | Export new utilities | -| `packages/server/src/server/daemon.e2e.test.ts` | Create | E2E test suite (~200 lines) | - ---- - -## Scope Estimate - -- **DaemonClient implementation**: ~300-400 lines -- **Test context helpers**: ~50 lines -- **Example E2E tests**: ~200 lines -- **Total**: ~550-650 lines of new code - ---- - -## Migration Path - -1. **Phase 1**: Implement DaemonClient with core methods (connect, createAgent, sendMessage, waitForIdle) -2. **Phase 2**: Add permission methods (respondToPermission, waitForPermission) -3. **Phase 3**: Add persistence methods (listPersistedAgents, resumeAgent) -4. **Phase 4**: Add advanced features (event streaming, multi-agent tests) -5. **Phase 5**: Migrate existing E2E tests to use DaemonClient (optional) - -Each phase is independently shippable and testable. - ---- - -## Alternatives Considered - -### Use MCP Client Instead - -The existing `agent-mcp.e2e.test.ts` uses the MCP protocol to control agents. However: -- MCP is for agent-to-agent communication -- WebSocket is for client-to-daemon communication -- Testing WebSocket directly verifies the actual UI protocol -- MCP tests are complementary, not replacements - -### Use HTTP API Only - -The daemon has some HTTP endpoints, but: -- Agent streaming requires WebSocket -- Permission flow requires WebSocket -- Real-time state updates require WebSocket -- HTTP is only for health checks and static files - ---- - -## Recommendation - -Proceed with **Approach 1 (Simple WebSocket Wrapper)** for these reasons: - -1. Lowest complexity, easiest to maintain -2. Full protocol transparency for debugging -3. Matches existing test patterns in the codebase -4. Can add convenience helpers later if needed -5. Estimated 2-3 hours to implement core functionality diff --git a/REPORT-daemon-e2e-audit.md b/REPORT-daemon-e2e-audit.md deleted file mode 100644 index 7afd9aa4c..000000000 --- a/REPORT-daemon-e2e-audit.md +++ /dev/null @@ -1,222 +0,0 @@ -# Daemon E2E Test Coverage Audit - -**Date**: 2025-12-25 -**Test File**: `packages/server/src/server/daemon.e2e.test.ts` - -## Test Run Summary - -``` -5 passed, 2 skipped in 40.8s -``` - -All active tests pass. The 2 skipped tests are Claude permission flow tests (documented issue with Claude SDK behavior in daemon context). - ---- - -## Current Test Coverage - -### Test: `creates agent and receives response` -- **Provider**: Codex -- **Coverage**: - - `createAgent()` → creates agent, returns `AgentSnapshotPayload` - - `sendMessage()` → sends text message to agent - - `waitForAgentIdle()` → waits for agent to complete - - Verifies `agent_state` message with `status: "idle"` - - Verifies `agent_stream` events: `turn_started`, `turn_completed`, `timeline` (assistant_message) - -### Test: `permission flow: Codex > approves permission and executes command` -- **Provider**: Codex -- **Coverage**: - - `waitForPermission()` → receives `permission_requested` event - - `respondToPermission()` → sends `allow` response - - Verifies `permission_resolved` event with `behavior: "allow"` - - Verifies timeline has `tool_call` with `status: "granted"` - - Verifies file system side-effect (file created) - -### Test: `permission flow: Codex > denies permission and prevents execution` -- **Provider**: Codex -- **Coverage**: - - `waitForPermission()` → receives `permission_requested` event - - `respondToPermission()` → sends `deny` response with message - - Verifies `permission_resolved` event with `behavior: "deny"` - - Verifies timeline has `tool_call` with `status: "denied"` - - Verifies file system side-effect (file NOT created) - -### Test: `persistence flow > persists and resumes Codex agent` -- **Provider**: Codex -- **Coverage**: - - Agent creation and messaging - - `deleteAgent()` → deletes active agent - - Verifies `agent_deleted` event - - `resumeAgent(handle)` → resumes from persistence handle - - Verifies resumed agent can receive messages - - Verifies conversation context preserved - -### Test: `multi-agent orchestration > parent agent creates child via agent-control MCP` -- **Provider**: Codex (parent and child) -- **Coverage**: - - Parent agent uses `agent-control` MCP to call `create_agent` - - Verifies tool call in timeline: `tool: "create_agent"`, `server: "agent-control"` - - Verifies both parent and child visible in `agent_state` messages - - Verifies child agent ID extracted from tool output - -### Skipped: `permission flow: Claude > approves/denies permission` -- **Reason**: Claude SDK doesn't request permissions in daemon context -- **Note**: Direct `claude-agent.test.ts` permission tests pass; issue is daemon-specific - ---- - -## DaemonClient API Coverage - -| Method | Tested | Notes | -|--------|--------|-------| -| `connect()` | ✅ | Used in beforeEach via `createDaemonTestContext()` | -| `close()` | ✅ | Used in afterEach via `cleanup()` | -| `createAgent()` | ✅ | All tests | -| `deleteAgent()` | ✅ | Persistence test | -| `listAgents()` | ❌ | Not explicitly tested | -| `listPersistedAgents()` | ❌ | Not tested (Codex doesn't implement it) | -| `resumeAgent()` | ✅ | Persistence test | -| `sendMessage()` | ✅ | All tests | -| `cancelAgent()` | ❌ | Not tested | -| `setAgentMode()` | ❌ | Not tested | -| `respondToPermission()` | ✅ | Permission tests | -| `waitForAgentIdle()` | ✅ | All tests | -| `waitForPermission()` | ✅ | Permission tests | -| `on()` (event subscription) | ❌ | Not tested directly | -| `getMessageQueue()` | ✅ | Used for assertions | -| `clearMessageQueue()` | ✅ | Used to isolate test phases | - ---- - -## Message Protocol Coverage - -### Inbound Messages (Client → Daemon) - -| Message Type | Tested | -|--------------|--------| -| `create_agent_request` | ✅ | -| `delete_agent_request` | ✅ | -| `send_agent_message` | ✅ | -| `agent_permission_response` | ✅ | -| `resume_agent_request` | ✅ | -| `cancel_agent_request` | ❌ | -| `set_agent_mode` | ❌ | -| `list_persisted_agents_request` | ❌ | -| `refresh_agent_request` | ❌ | -| `initialize_agent_request` | ❌ | -| `git_diff_request` | ❌ | -| `file_explorer_request` | ❌ | -| `git_repo_info_request` | ❌ | -| `clear_agent_attention` | ❌ | -| `list_provider_models_request` | ❌ | - -### Outbound Messages (Daemon → Client) - -| Message Type | Tested | -|--------------|--------| -| `agent_state` | ✅ | -| `agent_stream` | ✅ (partial - timeline, turn events, permissions) | -| `session_state` | ❌ (received but not explicitly verified) | -| `agent_deleted` | ✅ | -| `agent_permission_request` | ✅ | -| `agent_permission_resolved` | ✅ | -| `list_persisted_agents_response` | ❌ | -| `status` | ❌ | -| `activity_log` | ❌ | -| `assistant_chunk` | ❌ | -| `audio_output` | ❌ (realtime mode) | -| `transcription_result` | ❌ (realtime mode) | -| `artifact` | ❌ | -| `conversation_loaded` | ❌ | -| `git_diff_response` | ❌ | -| `file_explorer_response` | ❌ | -| `git_repo_info_response` | ❌ | -| `list_provider_models_response` | ❌ | - ---- - -## Agent Provider Coverage - -| Provider | Basic Flow | Permissions | Persistence | Multi-agent | -|----------|------------|-------------|-------------|-------------| -| Codex | ✅ | ✅ | ✅ | ✅ | -| Claude | ❌ | ⏸️ (skipped) | ❌ | ❌ | - ---- - -## Coverage Gaps & Recommendations - -### Priority 1: High Value / Low Effort - -1. **`cancelAgent()` test** - - Cancel an agent mid-execution - - Verify agent stops and reaches idle/error state - - Currently untested DaemonClient method - -2. **`setAgentMode()` test** - - Create agent in one mode, switch to another - - Verify mode change reflected in agent state - - Currently untested DaemonClient method - -3. **`listAgents()` test** - - Connect client, call listAgents() - - Verify session_state returns current agents - - Currently the method exists but is never called in tests - -### Priority 2: Provider Parity - -4. **Claude basic flow test** - - Currently no passing Claude tests - - Add simple "creates agent and receives response" for Claude - - Investigate why Claude permissions behave differently in daemon - -5. **Claude persistence test** - - Resume Claude agent from persistence handle - - Verify conversation context preserved - -### Priority 3: Edge Cases - -6. **Error handling test** - - Agent encounters error during execution - - Verify error state, `lastError` field populated - - Verify recovery (can send new message after error) - -7. **Connection handling test** - - Reconnect after disconnect - - Multiple simultaneous clients - - Rate limiting/timeout behavior - -8. **Message ordering test** - - Send multiple messages rapidly - - Verify ordering preserved - - Verify no race conditions - -### Priority 4: Feature Coverage (Lower Priority) - -9. **Image attachment test** - - `sendMessage()` with images option - - Requires multimodal agent support - -10. **Git integration tests** - - `git_diff_request/response` - - `git_repo_info_request/response` - - Requires git repository setup - -11. **File explorer tests** - - `file_explorer_request/response` - - Navigate filesystem via daemon - ---- - -## Summary - -**Current coverage**: Core happy-path scenarios for Codex agents (create, message, permission, persistence, multi-agent). - -**Gaps**: -- No Claude provider tests pass (permissions issue) -- Several DaemonClient methods untested (`cancelAgent`, `setAgentMode`, `listAgents`) -- No error/edge case testing -- No tests for auxiliary features (git, file explorer, models) - -**Recommendation**: Focus on Priority 1 & 2 items before expanding to edge cases. The Claude permission investigation should be a separate task as it involves SDK behavior analysis. diff --git a/REPORT-daemon-test-coverage.md b/REPORT-daemon-test-coverage.md deleted file mode 100644 index 9ada111fc..000000000 --- a/REPORT-daemon-test-coverage.md +++ /dev/null @@ -1,18 +0,0 @@ -# Daemon Test Coverage Review (Iterations 3-9) - -## Scope -- Iteration 3: Claude import filtering -- Iteration 4: Codex import list population -- Iteration 5: Import agent host selector (UI) -- Iteration 6: Gallery timeout error handling (UI) -- Iteration 7: Gallery loader race (UI) -- Iteration 8: Path auto-linking normalization (UI) -- Iteration 9: Git diff host label removal (UI) - -## Findings -- Iteration 3 already includes daemon E2E coverage in `packages/server/src/server/daemon.e2e.test.ts` for filtering internal Warmup messages. No additional daemon tests needed. -- Iteration 4 already includes daemon E2E coverage in `packages/server/src/server/daemon.e2e.test.ts` for Codex import list population. No additional daemon tests needed. -- Iterations 5-9 are client-only UI/UX changes; daemon-level E2E coverage is not applicable. - -## Recommended Plan Updates -- None. No missing daemon-level tests identified. diff --git a/REPORT-e2e-rerun.md b/REPORT-e2e-rerun.md deleted file mode 100644 index 48324605e..000000000 --- a/REPORT-e2e-rerun.md +++ /dev/null @@ -1,28 +0,0 @@ -# E2E Rerun Findings (full server tests) - -## Command 1: Full suite -- Command: `npm run test --workspace=@paseo/server` -- Result: suite did not complete; multiple failures + skip; run interrupted after ~202s while stuck in `codex-mcp-agent.test.ts` at 3/13. - -### Observed failures/skips -- `packages/server/src/server/agent/providers/codex-agent.test.ts`: - - Failing test: "hydrates persisted shell_command tool calls with completed status" - - Error: `expected undefined to be truthy` - - Likely assertion line: `packages/server/src/server/agent/providers/codex-agent.test.ts:498` (`expect(commandEntry).toBeTruthy()`) -- Skipped test: - - `packages/server/src/server/agent/providers/codex-agent.test.ts`: - - "emits permission requests and resolves them when approvals are handled (awaiting Codex support)" - -### Hang/interrupt details -- Run was interrupted manually after ~202s with the suite still at: - - `src/server/agent/providers/codex-mcp-agent.test.ts` 3/13 tests -- No stack trace emitted before the interrupt. - -## Command 2: Verbose codex-mcp run (diagnostic) -- Command: `npx vitest run packages/server/src/server/agent/providers/codex-mcp-agent.test.ts --reporter verbose` -- Result: interrupted after ~61s; test file reached 6/13 with failure count increasing (4 failed by time of interrupt). -- Last active tests before interrupt: - - "captures tool call inputs/outputs for commands, file changes, file reads, MCP tools, and web search" (test 3/13) - - "emits an error timeline item for failed MCP turns" (test 4/13) - - "persists session metadata and resumes with history" (test 5/13) -- No failure stack traces emitted before interruption. diff --git a/REPORT-garbled-text-bug.md b/REPORT-garbled-text-bug.md deleted file mode 100644 index 39f3ccf80..000000000 --- a/REPORT-garbled-text-bug.md +++ /dev/null @@ -1,70 +0,0 @@ -# Report: Claude Assistant Text Garbled Bug Investigation - -**Date**: 2025-12-25 -**Task**: BUG (App-side): Claude assistant text garbled in React Native app rendering - -## Summary - -After extensive investigation with debug logging in `appendAssistantMessage` and Playwright MCP testing, I've identified that the bug appears to be caused by **incomplete/corrupted text chunks being sent from the server**, not a client-side race condition. - -## Evidence - -### Debug Logging Added -- Added comprehensive logging to `appendAssistantMessage` in `packages/app/src/types/stream.ts:216-254` -- Logs capture: input text, normalized chunk, hasContent flag, state length, and append operations - -### Observed Garbled Text Pattern -From console logs during live agent streaming: - -``` -[appendAssistantMessage] input=" agent" → NEW_MESSAGE (stateLen: 49→50) -[appendAssistantMessage] input=" a" → APPEND: " agent" + " a" = " agent a" (stateLen: 50) -[appendAssistantMessage] input="check error. Let me" → APPEND: " agent a" + "check error. Let me" = " agent acheck error. Let me" -``` - -**Key Observation**: The text "type" is missing between " a" and "check error" - it should have been "a **type**check error" but became "acheck error". - -### Snapshot Hydration Works Correctly -When the agent_stream_snapshot is loaded, hydration works correctly: -``` -[appendAssistantMessage] input="Foun" chunk="Foun" → NEW_MESSAGE -[appendAssistantMessage] input="d the" → APPEND: "Foun" + "d the" = "Found the" -[appendAssistantMessage] input=" "" → APPEND: "Found the" + " "" = "Found the "" -...continues correctly... -``` - -## Analysis - -1. **Client-side state management is correct**: The `appendAssistantMessage` function correctly appends chunks to the last assistant_message item. - -2. **Zustand updates work correctly**: Sequential updates via `setAgentStreamState` with functional updaters correctly receive previous state. - -3. **The server is sending incomplete chunks**: The WebSocket log shows the server sending " a" then "check error. Let me" with no "type" in between. - -4. **E2E test passes because it tests fresh agents**: The E2E test (`daemon.e2e.test.ts:1760-1881`) creates a new agent and watches live streams. It doesn't test the specific edge case causing this bug. - -## Root Cause Hypothesis - -The most likely causes are: - -1. **Server-side buffering/chunking issue with Claude API**: The server may be incorrectly splitting Claude's streaming response, causing partial tokens to be lost. - -2. **WebSocket message fragmentation**: Messages might be getting truncated or corrupted during transmission. - -3. **Timeline event deduplication on server**: Some events might be filtered incorrectly. - -## Recommended Next Steps - -1. Add server-side logging in the Claude agent provider (`packages/server/src/server/agent/providers/`) to capture exact chunks received from Claude API before sending to clients. - -2. Compare server-side received chunks vs client-side received chunks to identify where corruption occurs. - -3. Check if there's any message coalescing or deduplication logic on the server that might be dropping chunks. - -## Files Modified -- `packages/app/src/types/stream.ts:216-254` - Added debug logging to `appendAssistantMessage` - -## Files That May Need Investigation -- `packages/server/src/server/agent/providers/claude-agent.ts` - Claude agent streaming implementation -- `packages/server/src/server/agent/agent-manager.ts` - Timeline event handling -- WebSocket message handling code diff --git a/REPORT-image-attachment-investigation.md b/REPORT-image-attachment-investigation.md deleted file mode 100644 index 79a4d3b6e..000000000 --- a/REPORT-image-attachment-investigation.md +++ /dev/null @@ -1,164 +0,0 @@ -# Image Attachment Flow Investigation Report - -**Date**: 2025-12-29 -**Task**: Test image attachment flow via Playwright MCP - -## Summary - -Image attachments are **NOT WORKING** for any platform (web, iOS, Android) due to multiple issues in the implementation pipeline. - -## Issues Found - -### Issue 1: Agent Creation Does Not Support Images (By Design) - -**Location**: `packages/app/src/app/agent/new.tsx:576-580` - -```typescript -// TODO: Images in initial agent creation are not yet supported by the server API. -// For now we log a warning. Images can be sent after agent creation via sendAgentMessage. -if (images && images.length > 0) { - console.warn("[DraftAgentScreen] Image attachments on agent creation not yet supported"); -} -``` - -**Impact**: Images selected on the new agent screen are silently dropped when creating an agent. - -**Evidence**: Console warning logged during Playwright test when attaching an image and creating an agent. - ---- - -### Issue 2: Web Platform Cannot Base64 Encode Images - -**Location**: `packages/app/src/contexts/session-context.tsx:1307-1331` - -```typescript -const data = await FileSystem.readAsStringAsync(uri, { - encoding: "base64", -}); -``` - -**Error**: -``` -[ERROR] [Session] Failed to convert image: Error: Method readAsStringAsync imported from "expo-file-system"... -``` - -**Impact**: On web, `expo-file-system.readAsStringAsync` is not available/deprecated, causing image base64 encoding to fail silently. The message is sent without the image data. - -**Evidence**: Console error logged when trying to send an image attachment to an existing agent on web. - ---- - -### Issue 3: Server Does Not Pass Image Bytes to LLM - -**Location**: `packages/server/src/server/session.ts:316-334` - -```typescript -private buildAgentPrompt( - text: string, - images?: Array<{ data: string; mimeType: string }> -): AgentPromptInput { - const normalized = text?.trim() ?? ""; - if (!images || images.length === 0) { - return normalized; - } - - const attachmentSummary = images - .map((image, index) => { - const sizeKb = Math.round((image.data.length * 0.75) / 1024); - return `Attachment ${index + 1}: ${image.mimeType}, ~${sizeKb}KB base64`; - }) - .join("\n"); - - const base = normalized.length > 0 ? normalized : "User shared image attachment(s)."; - return `${base}\n\n[Image attachments]\n${attachmentSummary}\n(Actual image bytes omitted; request a screenshot or file if needed.)`; -} -``` - -**Impact**: Even if images were successfully uploaded to the server, they are NOT sent to the LLM. Instead, a text summary is created that says "(Actual image bytes omitted)". - -**Evidence**: Agent responses consistently state "I don't see any image attached to your message" even when images are selected in the UI. - ---- - -## Test Results - -### Test 1: Claude Agent - Image on Creation -- **Action**: Attached red.png, asked "what color is this image?" -- **Result**: FAILED - Image silently dropped, agent asked for image path -- **Console**: `[WARNING] [DraftAgentScreen] Image attachments on agent creation not yet supported` - -### Test 2: Claude Agent - Image on Existing Agent (Web) -- **Action**: Attached red.png to existing agent, asked "what color is the attached image?" -- **Result**: FAILED - Base64 encoding failed on web platform -- **Console**: `[ERROR] [Session] Failed to convert image: Error: Method readAsStringAsync imported from "expo-file-system"...` - -### Test 3: Codex Agent -- **Not Tested**: Would fail for same reasons as Claude - ---- - -## Image Flow Architecture - -``` -UI (file picker) - ↓ -Image selected → shown as thumbnail ✅ - ↓ -[Agent Creation Path] - → Warning logged, image dropped ❌ - -[Existing Agent Path] - → FileSystem.readAsStringAsync(uri, {encoding: 'base64'}) - → FAILS on web ❌ - → May work on native (not tested) - ↓ -WebSocket → send_agent_message with images array - ↓ -Server → buildAgentPrompt() - → Creates TEXT SUMMARY only ❌ - → Actual bytes NOT passed to LLM - ↓ -LLM receives: "what color is this image?\n\n[Image attachments]\nAttachment 1: image/png, ~1KB base64\n(Actual image bytes omitted)" - → Agent cannot see image ❌ -``` - ---- - -## Required Fixes - -### Fix 1: Implement Image Support for Agent Creation -- Extend `create_agent_request` server API to accept images -- Pass images from UI through to the initial prompt - -### Fix 2: Fix Web Platform Base64 Encoding -- Replace `expo-file-system.readAsStringAsync` with web-compatible alternative -- Use `FileReader.readAsDataURL()` or similar for web platform -- Or use a cross-platform library that works on all Expo platforms - -### Fix 3: Pass Actual Image Bytes to LLM -- Modify `buildAgentPrompt` to return image content blocks, not just text -- Update agent providers (Claude, Codex) to handle multimodal prompts -- For Claude: Use content blocks with `type: "image"` and base64 data -- For Codex: Check if/how OpenAI API handles image inputs - ---- - -## Recommended Task Additions - -```markdown -- [ ] **Fix 1**: Add image support to agent creation API - - Extend `create_agent_request` to accept images array - - Pass images to `handleSendAgentMessage` after agent creation - - Remove warning in `new.tsx` once implemented - -- [ ] **Fix 2**: Fix web platform image base64 encoding - - Replace `FileSystem.readAsStringAsync` with cross-platform solution - - Use blob URL + fetch or FileReader API for web - - Test on web, iOS, and Android - -- [ ] **Fix 3**: Implement multimodal prompt building on server - - Modify `buildAgentPrompt` to return structured content with images - - Update `AgentPromptInput` type to support content blocks - - Implement Claude-specific image content blocks - - Implement Codex/OpenAI image handling -``` diff --git a/REPORT-mcp-jsonrpc-permission-callid.md b/REPORT-mcp-jsonrpc-permission-callid.md deleted file mode 100644 index 3d404e50e..000000000 --- a/REPORT-mcp-jsonrpc-permission-callid.md +++ /dev/null @@ -1,20 +0,0 @@ -# MCP JSONRPC permission call_id error - -## Summary -- Observed JSONRPC error during `npm run test --workspace=@paseo/server`: - - `permission call_id provided multiple times (codex_call_id, codex_mcp_tool_call_id, codex_event_id)` -- Error originates from the Codex MCP elicitation request handler in `packages/server/src/server/agent/providers/codex-mcp-agent.ts`. - -## Root Cause -- `PermissionParamsSchema` used an exclusive resolver for `call_id`, rejecting payloads that include multiple call-id aliases. -- The Codex MCP server sends permission params with multiple call-id fields at once and they are **not identical**: - - Example from `scripts/codex-mcp-elicitation-test.ts` (on-request): `codex_call_id = "call_..."`, `codex_mcp_tool_call_id = "2"`, `codex_event_id = "2"`. - - The exclusive resolver raised a Zod error, surfaced as the MCP JSONRPC error in tests. - -## Fix -- Added `resolvePreferredString` to select the canonical permission call id in a priority order. -- Updated `PermissionParamsSchema` to prefer `codex_call_id` when present, falling back to `codex_mcp_tool_call_id`, `codex_event_id`, then `call_id`. - -## Files -- `packages/server/src/server/agent/providers/codex-mcp-agent.ts` -- `REPORT-mcp-jsonrpc-permission-callid.md` diff --git a/REPORT-new-agent-page-deep-comparison.md b/REPORT-new-agent-page-deep-comparison.md deleted file mode 100644 index 525681091..000000000 --- a/REPORT-new-agent-page-deep-comparison.md +++ /dev/null @@ -1,203 +0,0 @@ -# Deep Comparison: New Agent Page vs Old Modal - -**Date**: 2025-12-25 -**Files Compared**: -- New: `packages/app/src/app/agent/new.tsx` (600 lines) -- Old: `packages/app/src/components/create-agent-modal.tsx` (~2700 lines) -- Reference: `packages/app/src/app/agent/[serverId]/[agentId].tsx` (1152 lines) - -## Executive Summary - -The new agent page (`/agent/new`) has addressed the critical bugs identified in the previous review. The remaining gaps are mostly **feature parity** issues (Git options) rather than bugs. The input area styling matches the agent screen well. - ---- - -## 1. Loading State ✅ FIXED - -**New Page** (`new.tsx:122-123, 228-229, 248-252, 291, 296-300`): -- Has `isLoading` state variable -- Prevents double-submit with `if (isLoading) { return; }` -- Sets `setIsLoading(true)` before creation, `setIsLoading(false)` on completion/failure - -**Old Modal** (`create-agent-modal.tsx:456, 1338, 1368, 1554, 1577, 2015-2024`): -- Same pattern with `isLoading` state -- Shows `` and "Creating..." text when loading -- Disables button when `createDisabled` (includes `isLoading`) - -**Gap**: The new page does NOT show a visual loading indicator. The button still says "send" and has no disabled styling. - -### Fix Task Required -``` -- [ ] **FIX (App)**: New agent page - add visual loading indicator during creation - - `new.tsx`: Currently has `isLoading` state but no visual feedback - - Add ActivityIndicator or "Creating..." text like old modal (`create-agent-modal.tsx:2015-2024`) - - Disable the submit button visually when `isLoading` is true -``` - ---- - -## 2. Input Area Styling ✅ MATCHES - -**Visual Comparison**: Both screens use the same `AgentInputArea` component. - -**New Page** (`new.tsx:468-472`): -```tsx - -``` - -**Agent Screen** (`[agentId].tsx:687-688`): -```tsx - -``` - -**Playwright Verification**: Screenshots show identical input area styling: -- Same gray rounded input box -- Same button layout (attachment, mic, realtime) -- Same spacing and padding - -**Result**: No fix needed - styling matches. - ---- - -## 3. Git Options ❌ MISSING (~200 lines) - -The old modal has a complete Git configuration section that is entirely absent from the new page. - -**Old Modal Features** (`create-agent-modal.tsx:1936-1993`): -1. **Base branch dropdown** - Select which branch to base work on -2. **Create new branch toggle** - Checkbox + branch name input -3. **Create worktree toggle** - Checkbox + worktree slug input -4. **Git validation errors** - Shows blocking errors (`gitBlockingError`) -5. **Dirty directory warnings** - Warns about uncommitted changes -6. **Non-git directory detection** - Disables git options gracefully - -**Git State Variables** (`create-agent-modal.tsx:448-454`): -```tsx -const [baseBranch, setBaseBranch] = useState(""); -const [createNewBranch, setCreateNewBranch] = useState(false); -const [branchName, setBranchName] = useState(""); -const [createWorktree, setCreateWorktree] = useState(false); -const [worktreeSlug, setWorktreeSlug] = useState(""); -``` - -**Git Validation Logic** (`create-agent-modal.tsx:1653-1707`): -- Validates branch name format -- Validates worktree slug format -- Checks for uncommitted changes + checkout intent -- Returns blocking error or null - -**New Page**: Has NONE of these. The `createAgent` call only includes: -```tsx -const config: AgentSessionConfig = { - provider: selectedProvider, - cwd: trimmedPath, - ...(modeId ? { modeId } : {}), - ...(trimmedModel ? { model: trimmedModel } : {}), -}; -``` - -### Fix Task Required -``` -- [ ] **FEATURE (App)**: New agent page - add Git Options Section - - Port `GitOptionsSection` component usage from old modal - - Add state: baseBranch, createNewBranch, branchName, createWorktree, worktreeSlug - - Add git repo info request hook (already exists in old modal) - - Add gitBlockingError validation - - Pass git options to createAgent call - - Reference: create-agent-modal.tsx:1936-1993 (UI), 1653-1707 (validation), 1388-1401 (createAgent call) - - Estimated: ~200 lines of code -``` - ---- - -## 4. Error Handling ✅ FIXED - -**New Page** (`new.tsx:122, 213-234, 289-292, 461-464`): -- Has `errorMessage` state -- Validates: working directory, prompt, host selection, connection -- Shows creation failure errors from server -- Displays error in styled container - -**Comparison to Old Modal**: -| Check | Old Modal | New Page | -|-------|-----------|----------| -| Working dir empty | ✅ | ✅ | -| Prompt empty | ✅ | ✅ | -| No host selected | ✅ | ✅ | -| Host offline | ✅ | ✅ (line 233) | -| Creation failed | ✅ | ✅ (line 289-292) | -| Git validation | ✅ | ❌ (no git options) | - -**Result**: Error handling is complete for current features. Git errors will come with Git feature. - ---- - -## 5. Visual Parity ✅ GOOD - -**Playwright Screenshots Analysis**: - -| Element | New Page | Agent Screen | Match? | -|---------|----------|--------------|--------| -| Header | "New Agent" title + back arrow | Agent title + back arrow + menu | ✅ Similar | -| Config rows | Card style with chevron | N/A (agent screen has no config) | ✅ Appropriate | -| Input area | Gray rounded box | Gray rounded box | ✅ Identical | -| Button row | Attachment, mic, realtime | Same + status bar | ✅ Matches | -| Error display | Red background container | N/A | ✅ Styled | - -**Minor Styling Notes**: -- New page config rows use card styling that looks clean -- Input placeholder "Message agent..." is consistent -- Colors match the theme - ---- - -## 6. Dead Code ✅ ALREADY FIXED - -Per the previous review task completion, the dead `CreateAgentModal` code in `home-footer.tsx` has been cleaned up: -- `showCreateModal` state (line 25) - REMOVED -- `` component (lines 206-209) - REMOVED - ---- - -## Summary of Required Fix Tasks - -### P1 - Should Fix Soon -``` -- [ ] **FIX (App)**: New agent page - add visual loading indicator during creation - Location: new.tsx - Issue: Has isLoading state but no visual feedback (button doesn't show loading, no spinner) - Fix: Add ActivityIndicator when isLoading, change button text to "Creating...", disable button visually - Effort: ~20 lines -``` - -### P2 - Feature Parity -``` -- [ ] **FEATURE (App)**: New agent page - add Git Options Section - Location: new.tsx - Issue: Missing base branch, new branch, worktree options from old modal - Fix: Port GitOptionsSection and related state/validation from create-agent-modal.tsx - Effort: ~200 lines - Reference: create-agent-modal.tsx:1388-1401, 1653-1707, 1936-1993 -``` - -### Already Completed (Previous Task) -- [x] Fix image attachments (early return removed) -- [x] Fix creation failure display (error shown to user) -- [x] Add error/loading states -- [x] Remove dead CreateAgentModal code - ---- - -## Files Reference - -| File | Lines | Purpose | -|------|-------|---------| -| `new.tsx` | 600 | New agent page | -| `create-agent-modal.tsx` | 2700 | Old modal (reference for git options) | -| `[agentId].tsx` | 1152 | Agent screen (reference for styling) | -| `agent-input-area.tsx` | 1287 | Shared input component | -| `agent-form-dropdowns.tsx` | - | Shared dropdown components | diff --git a/REPORT-new-agent-page-review.md b/REPORT-new-agent-page-review.md deleted file mode 100644 index e273de501..000000000 --- a/REPORT-new-agent-page-review.md +++ /dev/null @@ -1,223 +0,0 @@ -# Review Report: New Agent Page (`/agent/new`) Feature Gap Analysis - -**Date**: 2025-12-25 -**Reviewer**: Agent -**Files Reviewed**: -- `packages/app/src/app/agent/new.tsx` (560 lines) - New agent creation page -- `packages/app/src/components/create-agent-modal.tsx` (~2700 lines) - Old modal with full features -- `packages/app/src/components/home-footer.tsx` - Entry points for agent creation - ---- - -## Executive Summary - -The new `/agent/new` page is a **partial implementation** that handles basic agent creation but is missing **critical features** from the old modal. The old modal code is still in the codebase but **unused** (dead code). This review identifies all gaps and provides implementation recommendations. - ---- - -## Current State - -### Entry Points -| Button | Action | Status | -|--------|--------|--------| -| "New Agent" | `router.push("/agent/new")` | Uses new page (incomplete) | -| "Import" | `setShowImportModal(true)` | Uses old modal (works) | -| Dead code: `CreateAgentModal` | `showCreateModal` never set to `true` | Unused | - -### What Works in New Page -1. **Host selection** - Dropdown with connection states -2. **Provider selection** - `AssistantDropdown` with provider definitions -3. **Mode selection** - `PermissionsDropdown` with mode options -4. **Model selection** - `ModelDropdown` with loading/error states -5. **Working directory** - `WorkingDirectoryDropdown` with suggestions -6. **Agent creation** - Basic `createAgent()` call with config -7. **Navigation** - Redirects to `/agent/[serverId]/[agentId]` on success - ---- - -## Missing Features (Critical) - -### 1. Git Options Section -**Location in old modal**: `create-agent-modal.tsx:1936-1993` and `GitOptionsSection` component at line 2398-2565 - -**Features missing**: -- Base branch selection dropdown (fetches branches from repo) -- "Create new branch" toggle + branch name input with auto-slug -- "Create worktree" toggle + worktree slug input -- Git validation errors display -- Dirty working directory warning -- Non-git directory detection and handling - -**Impact**: Users cannot create agents on feature branches or worktrees - a core workflow. - -**Implementation Effort**: HIGH (~200 lines of state + UI + validation logic) - ---- - -### 2. Image Attachments -**Location in old modal**: Uses `useImageAttachmentPicker` hook, but the new page **already has this** via `AgentInputArea`! - -**Current new page behavior** (`new.tsx:216-218`): -```typescript -if (images && images.length > 0) { - return; // Silently returns without creating agent! -} -``` - -**Fix required**: Remove the early return and include images in the `createAgent()` call: -```typescript -const config: AgentSessionConfig = { - provider: selectedProvider, - cwd: trimmedPath, - images, // Add this - // ... -}; -``` - -**Impact**: CRITICAL - Users cannot create agents with image attachments. - -**Implementation Effort**: LOW (5 lines to fix) - ---- - -### 3. Error Message Display -**Location in old modal**: `errorMessage` state + `setErrorMessage()` calls + display in UI - -**Current new page behavior**: -- No `errorMessage` state -- No error display to user -- Errors like "Working directory is required" are not shown - -**Fix required**: Add `errorMessage` state and display it in the UI. - -**Implementation Effort**: LOW (~20 lines) - ---- - -### 4. Loading State During Creation -**Location in old modal**: `isLoading` state + `setIsLoading(true)` before create + button spinner - -**Current new page behavior**: -- No `isLoading` state -- Button doesn't disable during creation -- No spinner/loading indicator - -**Fix required**: Add `isLoading` state, disable button, show spinner. - -**Implementation Effort**: LOW (~15 lines) - ---- - -### 5. Daemon Availability Error Handling -**Location in old modal**: `daemonAvailabilityError` + display when daemon offline - -**Current new page behavior**: -- Checks `selectedServerId` exists before calling `createAgent` -- Does NOT show error when daemon is offline -- Silent failures possible - -**Fix required**: Add offline detection and display friendly error message. - -**Implementation Effort**: LOW (~20 lines) - ---- - -### 6. Creation Failure Handling -**Location in old modal**: Listens for `agent_create_failed` status and displays `payload.error` - -**Current new page behavior** (`new.tsx:269-271`): -```typescript -if (payload.status === "agent_create_failed") { - pendingRequestIdRef.current = null; - return; // Does nothing! User sees no error. -} -``` - -**Fix required**: Add `setErrorMessage(payload.error)` to show the failure reason. - -**Implementation Effort**: LOW (2 lines) - ---- - -### 7. Dictation Support -**Location in old modal**: Full `useDictation` integration with: -- `handleDictationStart/Cancel/Confirm` handlers -- `PromptDictationControls` component -- `DictationStatusNotice` for retry/error toasts -- Audio debug notices - -**Current new page behavior**: -- `AgentInputArea` already has dictation support built-in! -- No additional work needed if `AgentInputArea` is correctly configured - -**Verification needed**: Check if `AgentInputArea` dictation works for draft agent creation. - -**Impact**: Likely already works via `AgentInputArea` - needs testing. - ---- - -### 8. Import Flow -**Location in old modal**: `flow: "create" | "import"` prop, import list, resume logic - -**Current state**: -- Import button already uses `ImportAgentModal` (old modal with `flow="import"`) -- This is **intentional separation** - import stays in modal - -**No action needed**: Import flow is separate and working. - ---- - -## Dead Code to Remove - -After completing the new page, the following can be deleted from `home-footer.tsx`: - -```typescript -// Line 25 - unused state -const [showCreateModal, setShowCreateModal] = useState(false); - -// Lines 206-209 - unused modal - setShowCreateModal(false)} -/> -``` - -Additionally, if `CreateAgentModal` is no longer used anywhere after this: -- Consider removing the `isVisible` wrapper logic -- Or rename to `AgentFlowModal` since it's only used for Import - ---- - -## Implementation Priority - -| Priority | Feature | Effort | Impact | -|----------|---------|--------|--------| -| P0 | Fix image attachments (remove early return) | 5 lines | CRITICAL | -| P0 | Add creation failure error display | 2 lines | HIGH | -| P0 | Add error message state + display | 20 lines | HIGH | -| P1 | Add loading state + button disable | 15 lines | MEDIUM | -| P1 | Add daemon offline error handling | 20 lines | MEDIUM | -| P2 | Git Options Section | ~200 lines | HIGH (workflow) | -| P2 | Verify dictation works | Testing | LOW | - -**Recommendation**: Complete P0/P1 items first (~60 lines), then tackle Git Options as a separate task. - ---- - -## Verification Steps - -After implementation: -1. **Image test**: Attach image, create agent - should include image in request -2. **Error test**: Enter empty working directory - should show error message -3. **Loading test**: Create agent - button should show spinner, be disabled -4. **Offline test**: Disconnect daemon - should show "host offline" message -5. **Failure test**: Create with invalid path - should show server error -6. **Git test**: Select base branch, create new branch, create worktree - ---- - -## Conclusion - -The new `/agent/new` page needs ~60 lines of fixes for critical functionality (P0/P1), plus ~200 lines for Git options (P2). The `AgentInputArea` component already provides dictation and image picker, so those features just need proper wiring. - -Dead code cleanup should happen after feature parity is achieved. diff --git a/REPORT-refactor-validation-test-audit.md b/REPORT-refactor-validation-test-audit.md deleted file mode 100644 index 22c3b9fd5..000000000 --- a/REPORT-refactor-validation-test-audit.md +++ /dev/null @@ -1,147 +0,0 @@ -# Refactor Validation and Test Suite Audit - -Date: 2025-12-25 - -## Part 1: Refactor Quality Checks - -Command: - -``` -rg -n "as \{|as Record|Record" packages/server/src/server/agent/ -``` - -Matches found (exact file:line): - -- packages/server/src/server/agent/agent-mcp.e2e.test.ts:13 -- packages/server/src/server/agent/agent-mcp.e2e.test.ts:14 -- packages/server/src/server/agent/agent-mcp.e2e.test.ts:18 -- packages/server/src/server/agent/agent-mcp.e2e.test.ts:62 -- packages/server/src/server/agent/agent-mcp.e2e.test.ts:71 -- packages/server/src/server/agent/model-catalog.ts:180 -- packages/server/src/server/agent/activity-curator.ts:72 -- packages/server/src/server/agent/activity-curator.ts:73 -- packages/server/src/server/agent/activity-curator.ts:85 -- packages/server/src/server/agent/activity-curator.ts:86 -- packages/server/src/server/agent/agent-projections.ts:186 -- packages/server/src/server/agent/agent-projections.ts:187 -- packages/server/src/server/agent/stt-openai.ts:127 -- packages/server/src/server/agent/providers/claude-agent.test.ts:99 -- packages/server/src/server/agent/providers/claude-agent.test.ts:109 -- packages/server/src/server/agent/providers/claude-agent.test.ts:110 -- packages/server/src/server/agent/providers/claude-agent.test.ts:456 -- packages/server/src/server/agent/providers/claude-agent.test.ts:463 -- packages/server/src/server/agent/providers/claude-agent.test.ts:1279 -- packages/server/src/server/agent/providers/claude-agent.ts:159 -- packages/server/src/server/agent/providers/claude-agent.ts:164 -- packages/server/src/server/agent/providers/claude-agent.ts:784 -- packages/server/src/server/agent/providers/claude-agent.ts:785 -- packages/server/src/server/agent/providers/claude-agent.ts:874 -- packages/server/src/server/agent/providers/claude-agent.ts:1120 -- packages/server/src/server/agent/providers/claude-agent.ts:1138 -- packages/server/src/server/agent/providers/claude-agent.ts:1162 -- packages/server/src/server/agent/providers/claude-agent.ts:1163 -- packages/server/src/server/agent/providers/claude-agent.ts:1249 -- packages/server/src/server/agent/providers/claude-agent.ts:1343 -- packages/server/src/server/agent/providers/claude-agent.ts:1347 -- packages/server/src/server/agent/providers/claude-agent.ts:1350 -- packages/server/src/server/agent/providers/claude-agent.ts:1364 -- packages/server/src/server/agent/providers/claude-agent.ts:1375 -- packages/server/src/server/agent/providers/claude-agent.ts:1392 -- packages/server/src/server/agent/providers/codex-agent.test.ts:190 -- packages/server/src/server/agent/providers/codex-agent.test.ts:337 -- packages/server/src/server/agent/providers/codex-agent.test.ts:980 -- packages/server/src/server/agent/providers/codex-agent.test.ts:1043 -- packages/server/src/server/agent/providers/codex-agent.test.ts:1054 -- packages/server/src/server/agent/providers/codex-agent.test.ts:1065 -- packages/server/src/server/agent/providers/codex-agent.ts:136 -- packages/server/src/server/agent/providers/codex-agent.ts:143 -- packages/server/src/server/agent/providers/codex-agent.ts:167 -- packages/server/src/server/agent/providers/codex-agent.ts:234 -- packages/server/src/server/agent/providers/codex-agent.ts:250 -- packages/server/src/server/agent/providers/codex-agent.ts:886 -- packages/server/src/server/agent/providers/codex-agent.ts:1092 -- packages/server/src/server/agent/providers/codex-agent.ts:1093 -- packages/server/src/server/agent/providers/codex-agent.ts:1171 -- packages/server/src/server/agent/providers/codex-agent.ts:1237 -- packages/server/src/server/agent/providers/codex-agent.ts:1244 -- packages/server/src/server/agent/providers/codex-agent.ts:1452 -- packages/server/src/server/agent/providers/codex-agent.ts:1454 -- packages/server/src/server/agent/providers/codex-agent.ts:1456 -- packages/server/src/server/agent/providers/codex-agent.ts:1481 -- packages/server/src/server/agent/providers/codex-agent.ts:1483 -- packages/server/src/server/agent/providers/codex-agent.ts:1495 -- packages/server/src/server/agent/providers/codex-agent.ts:1503 -- packages/server/src/server/agent/providers/codex-agent.ts:1794 -- packages/server/src/server/agent/providers/codex-agent.ts:1963 -- packages/server/src/server/agent/providers/codex-agent.ts:2045 -- packages/server/src/server/agent/providers/codex-agent.ts:2053 -- packages/server/src/server/agent/providers/codex-agent.ts:2143 -- packages/server/src/server/agent/providers/codex-agent.ts:2155 -- packages/server/src/server/agent/providers/codex-agent.ts:2156 -- packages/server/src/server/agent/providers/codex-agent.ts:2204 -- packages/server/src/server/agent/providers/codex-agent.ts:2222 -- packages/server/src/server/agent/providers/codex-agent.ts:2233 -- packages/server/src/server/agent/providers/codex-agent.ts:2238 -- packages/server/src/server/agent/providers/codex-agent.ts:2239 - -Command: - -``` -rg -n "\?\?" packages/server/src/server/agent/providers/codex-mcp-agent.ts -``` - -Result: no matches. - -Zod schema coverage check: -- `CodexEventSchema` is a union of typed event schemas in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:1401`. -- Additional schema definitions exist for thread items, command exec, patch apply, read file, MCP tool call, web search, todos, and errors. -- No unparsed event handling found outside the schema boundary in this file (based on scan of schema definitions and event parsing). - -## Part 2: Test Run (Full Suite) - -Command: - -``` -npm run test --workspace=@paseo/server 2>&1 | tee test-output.txt -``` - -Outcome: test run did not complete. After Codex SDK tests, an MCP server error was emitted and the run stalled; interrupted manually. - -Failure and skip observed before interruption: -- Failed: `CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status` (expected undefined to be truthy). -- Skipped: `CodexAgentClient (SDK integration) > emits permission requests and resolves them when approvals are handled (awaiting Codex support)`. - -Error emitted during run: - -``` -2025-12-25T03:41:54.472453Z ERROR codex_mcp_server::message_processor: <- error: JSONRPCError { error: JSONRPCErrorError { code: -32603, data: None, message: "[\n {\n \"code\": \"custom\",\n \"message\": \"permission call_id provided multiple times (codex_call_id, codex_mcp_tool_call_id, codex_event_id)\",\n \"path\": []\n }\n]" }, id: Integer(0), jsonrpc: "2.0" } -``` - -Grepping for skips/todo: - -``` -grep -E "skip|Skip|SKIP|todo|TODO" test-output.txt -``` - -Result: -- `src/server/agent/providers/codex-agent.test.ts (15 tests | 1 failed | 1 skipped)` - -## Part 3: Test Results - -- Full suite did not finish due to the MCP server error above; remaining tests did not run. -- At least 1 failure and 1 skip occurred before interruption. - -## Part 4: Typecheck - -Command: - -``` -npm run typecheck --workspace=@paseo/server -``` - -Errors: -- `packages/server/src/server/agent/providers/codex-mcp-agent.ts:348:6` TS6196: `PatchChangeDetails` declared but never used. -- `packages/server/src/server/agent/providers/codex-mcp-agent.ts:1674:19` TS2339: `model` does not exist on type `{ prompt: string; cwd: string; "approval-policy": string; sandbox: string; config: AgentMetadata | undefined; }`. -- `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2945:7` TS2322: `AgentProvider` is not assignable to type `"codex-mcp"`. -- `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2959:11` TS2322: type `{ provider: AgentProvider; ...; agentControlMcp?: unknown }` is not assignable to `AgentSessionConfig` because `agentControlMcp` is `unknown`. -- `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2970:7` TS2322: `AgentProvider` is not assignable to type `"codex-mcp"`. diff --git a/REPORT-test-audit.md b/REPORT-test-audit.md deleted file mode 100644 index 22adc178a..000000000 --- a/REPORT-test-audit.md +++ /dev/null @@ -1,145 +0,0 @@ -# Codex MCP Test Audit Report - -**Date**: 2025-12-25 - -## Test Results Summary - -``` -codex-mcp-agent.test.ts: 13 tests - ALL PASSED -codex-agent.test.ts: 15 tests - 1 failed, 1 skipped (deprecated SDK provider) -claude-agent.test.ts: All passed -agent-mcp.e2e.test.ts: 1 test - passed -``` - -## WORKAROUNDS FOUND - -### 1. `codex-mcp-agent.test.ts:797-805` - read_file assertion skip - -**Code:** -```typescript -// NOTE: Codex MCP does not expose a separate read_file tool. -// Reading files is done via shell commands (cat/head/tail) instead. -// The test prompt asks for read_file but Codex uses cat internally. -const readCall = toolCalls.find((item) => item.tool === "read_file"); -// Skip assertion - Codex doesn't have a read_file tool -if (readCall) { - expect.soft(stringifyUnknown(readCall.input)).toContain("tool-create.txt"); - expect.soft(stringifyUnknown(readCall.output)).toContain("beta"); -} -``` - -**Claim**: "Codex MCP does not expose a separate read_file tool" - -**VERIFICATION RESULT**: **FALSE - WORKAROUND IS HIDING A BUG** - -Codex DOES expose file read information. Running `scripts/codex-file-read-debug.ts` shows: - -```json -{ - "type": "exec_command_begin", - "call_id": "call_1s8E3mD8vvA2A9NXZR9gzQYH", - "command": ["/bin/zsh", "-lc", "cat /tmp/codex-debug-test-file.txt"], - "parsed_cmd": [{ - "type": "read", - "cmd": "cat /tmp/codex-debug-test-file.txt", - "name": "codex-debug-test-file.txt", - "path": "/tmp/codex-debug-test-file.txt" - }] -} -``` - -**Root cause**: The `codex-mcp-agent.ts` provider is not detecting `parsed_cmd.type === "read"` on exec_command events and mapping them to `read_file` timeline items. - -**Required fix**: Detect `exec_command_begin/end` events where `parsed_cmd[].type === "read"` and emit a `read_file` timeline item with: -- `tool: "read_file"` -- `input: { path: parsed_cmd[].path }` -- `output: { content: stdout from exec_command_end }` - ---- - -### 2. `codex-mcp-agent.test.ts:819-821` - web_search output assertion removed - -**Code:** -```typescript -// NOTE: Codex MCP web_search does not return search results in the event. -// The search happens internally but results are not exposed via MCP events. -// Only verify that the search was performed (input contains query). -``` - -**Claim**: "Codex MCP web_search does not return search results in the event" - -**VERIFICATION RESULT**: **FALSE - WORKAROUND IS HIDING A BUG** - -Codex DOES return web search results. Running `scripts/codex-websearch-debug.ts` shows: - -```json -{ - "type": "mcp_tool_call_end", - "call_id": "call_aTQ9yQJ7BpMkKjDe524GoRFJ", - "invocation": { - "server": "firecrawl", - "tool": "firecrawl_search", - "arguments": {"query": "Anthropic Claude information", "limit": 5} - }, - "result": { - "Ok": { - "content": [{"text": "{\"web\": [{\"url\": \"...\", \"title\": \"...\", \"description\": \"...\"}]}"}] - } - } -} -``` - -**Root cause**: The `codex-mcp-agent.ts` provider is not extracting `result.Ok.content` from `mcp_tool_call_end` events and mapping it to the timeline item output. - -**Required fix**: Extract `result.Ok.content[].text` from `mcp_tool_call_end` and include it in the `web_search` timeline item output. - ---- - -### 3. `codex-agent.test.ts` - Permission test skipped - -**Code:** -```typescript -↓ CodexAgentClient (SDK integration) > emits permission requests and resolves them when approvals are handled (awaiting Codex support) -``` - -**Status**: Skipped - -**Reason**: The Codex SDK provider is DEPRECATED and replaced by the MCP provider. The SDK's `codex exec` command does not emit permission events. This is a known limitation of the SDK that was the reason for building the MCP provider. - -**Recommendation**: Mark this test as deprecated, not skipped. Add a comment explaining the SDK is deprecated. - ---- - -## Test Coverage Gaps - -1. **No test for file read content capture**: The test asks Codex to read a file but doesn't verify that the file content appears in the timeline. - -2. **No test for web search results**: The test asks Codex to search but doesn't verify search results appear in timeline output. - -3. **Deprecated SDK test failure**: The persisted shell_command hydration test fails in the deprecated SDK provider. This is expected since the SDK is deprecated. - ---- - -## Recommendations - -### Critical Fixes Required - -1. **`codex-mcp-agent.ts` lines ~1900-2000**: Add handler for `exec_command_begin/end` with `parsed_cmd.type === "read"` to emit `read_file` timeline items. - -2. **`codex-mcp-agent.ts` lines ~1700-1800**: Extract `result.Ok.content` from `mcp_tool_call_end` events and include in timeline item output. - -3. **`codex-mcp-agent.test.ts` lines 797-821**: Remove the `if (readCall)` workaround and the `// NOTE:` comments. The assertions should be unconditional once the provider is fixed. - -### Test Improvements - -1. Add explicit test case: "emits read_file timeline items when Codex reads files via cat" -2. Add explicit test case: "emits web_search results in timeline output" -3. Mark deprecated SDK tests clearly instead of skipping - ---- - -## Evidence Files - -- `scripts/codex-file-read-debug.ts` - Proves file read events are exposed -- `scripts/codex-websearch-debug.ts` - Proves web search results are exposed -- `test-audit.txt` - Full test run output diff --git a/REPORT-typecheck-code-quality.md b/REPORT-typecheck-code-quality.md deleted file mode 100644 index 6a240596d..000000000 --- a/REPORT-typecheck-code-quality.md +++ /dev/null @@ -1,25 +0,0 @@ -# Typecheck + Code Quality Review - -## Typecheck -- Command: `npm run typecheck` -- Result: Success (server and app workspaces ran without errors). - -## Scope Reviewed -- `packages/app/src/app/agent/new.tsx` -- `packages/app/src/hooks/use-agent-form-state.ts` -- `packages/app/src/components/create-agent-modal.tsx` -- `packages/app/src/contexts/session-context.tsx` -- `packages/app/src/components/agent-stream-view.tsx` -- `packages/app/src/app/git-diff.tsx` -- `packages/server/src/server/agent/providers/claude-agent.ts` -- `packages/server/src/server/agent/providers/codex-mcp-agent.ts` -- `packages/server/src/server/daemon.e2e.test.ts` - -## Findings -1. URL params in `packages/app/src/app/agent/new.tsx` are cast to `AgentProvider` without validation. - - `resolvedProvider` is a string from `useLocalSearchParams`, then forced via `as AgentProvider` when building `initialValues`. - - Risk: invalid provider values (deep links, manual edits) bypass type checks and may put the form into an inconsistent state. - - Suggested fix: validate `resolvedProvider` against `providerDefinitions` (or a known provider list) before assigning, and drop invalid values. - -## Notes -- No new `any` usage introduced in the reviewed sections beyond existing patterns. diff --git a/dummy.txt b/dummy.txt deleted file mode 100644 index ce0136250..000000000 --- a/dummy.txt +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/mcp-smoke.txt b/mcp-smoke.txt deleted file mode 100644 index 9766475a4..000000000 --- a/mcp-smoke.txt +++ /dev/null @@ -1 +0,0 @@ -ok diff --git a/mcp-test-server.mjs b/mcp-test-server.mjs deleted file mode 100644 index b659ab563..000000000 --- a/mcp-test-server.mjs +++ /dev/null @@ -1,67 +0,0 @@ -import { createServer } from 'node:http'; -import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; -import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; -import { z } from 'zod'; - -const mcpServer = new McpServer({ name: 'test', version: '0.0.1' }); - -mcpServer.registerTool( - 'fast_tool', - { - title: 'Fast tool', - description: 'Returns immediately', - inputSchema: {}, - outputSchema: { - echo: z.string() - } - }, - async () => { - console.log('[server] fast_tool handler invoked'); - return { - content: [], - structuredContent: { echo: 'hello' } - }; - } -); - -mcpServer.registerTool( - 'slow_tool', - { - title: 'Slow tool', - description: 'Waits before responding', - inputSchema: { - waitMs: z.number() - }, - outputSchema: { - ok: z.boolean() - } - }, - async ({ waitMs }) => { - console.log('[server] slow_tool handler invoked'); - await new Promise(resolve => setTimeout(resolve, waitMs)); - console.log('[server] slow_tool resolving'); - return { - content: [], - structuredContent: { ok: true } - }; - } -); - -const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: () => 'test-session' }); -await mcpServer.connect(transport); - -const HOST = '127.0.0.1'; -const PORT = 6768; - -const server = createServer(async (req, res) => { - if (req.url !== '/mcp') { - res.statusCode = 404; - res.end('not found'); - return; - } - await transport.handleRequest(req, res); -}); - -server.listen(PORT, HOST, () => { - console.log(`Test MCP server listening on http://${HOST}:${PORT}`); -}); diff --git a/packages/app/src/components/file-explorer-pane.tsx b/packages/app/src/components/file-explorer-pane.tsx index 8d7690c94..be434114c 100644 --- a/packages/app/src/components/file-explorer-pane.tsx +++ b/packages/app/src/components/file-explorer-pane.tsx @@ -49,6 +49,7 @@ import { useExplorerSidebarStore, type SortOption, } from "@/stores/explorer-sidebar-store"; +import { formatTimeAgo } from "@/utils/time"; const MAX_CONCURRENT_THUMBNAILS = 2; const THUMBNAIL_TIMEOUT_MS = 15000; @@ -706,8 +707,7 @@ export function FileExplorerPane({ {item.name} - {item.kind.toUpperCase()} · {formatFileSize({ size: item.size })} ·{" "} - {formatModifiedTime({ value: item.modifiedAt })} + {formatFileSize({ size: item.size })} · {formatTimeAgo(new Date(item.modifiedAt))} @@ -827,9 +827,19 @@ export function FileExplorerPane({ {error ? ( {error} - - Retry - + + + Retry + + {activePath !== "." && ( + requestDirectoryListing?.(agentId, ".")} + > + Go to workspace + + )} + ) : showInitialListLoading ? ( @@ -1066,14 +1076,6 @@ function formatEta(seconds: number): string { return `${mins}m ${secs}s`; } -function formatModifiedTime({ value }: { value: string }): string { - const date = new Date(value); - if (Number.isNaN(date.getTime())) { - return value; - } - return date.toLocaleString(); -} - type EntryDisplayKind = "directory" | "image" | "text" | "other"; const IMAGE_EXTENSIONS = new Set([ @@ -1375,6 +1377,10 @@ const styles = StyleSheet.create((theme) => ({ fontSize: theme.fontSize.base, textAlign: "center", }, + errorActions: { + flexDirection: "row", + gap: theme.spacing[2], + }, retryButton: { borderRadius: theme.borderRadius.full, borderWidth: theme.borderWidth[1], @@ -1387,6 +1393,18 @@ const styles = StyleSheet.create((theme) => ({ fontSize: theme.fontSize.sm, fontWeight: theme.fontWeight.semibold, }, + goToWorkspaceButton: { + borderRadius: theme.borderRadius.full, + borderWidth: theme.borderWidth[1], + borderColor: theme.colors.border, + paddingHorizontal: theme.spacing[3], + paddingVertical: theme.spacing[1], + }, + goToWorkspaceButtonText: { + color: theme.colors.mutedForeground, + fontSize: theme.fontSize.sm, + fontWeight: theme.fontWeight.semibold, + }, emptyText: { color: theme.colors.mutedForeground, fontSize: theme.fontSize.base, diff --git a/plan.md b/plan.md deleted file mode 100644 index d63970db2..000000000 --- a/plan.md +++ /dev/null @@ -1,204 +0,0 @@ -# Plan - -## Context - -Improvements to the new agent screen in the app. - -## Agent Assignment - -- **Default**: All tasks are done by Codex -- **Testing tasks**: Use `agent=claude` for Playwright MCP testing - -## Tasks - -- [x] **Iteration 1**: Remember the last used config in the new agent screen. - - - Restore the previous behavior where the config was persisted. - - When user creates an agent, save the selected config (provider, model, mode, working directory, host). - - On next visit to new agent screen, pre-populate with last used config. - - **Done (2025-12-28 23:35)**: WHAT: `packages/app/src/app/agent/new.tsx:77-592` now builds initial values only from provided params and persists form preferences on create; `packages/app/src/hooks/use-agent-form-state.ts:309-356` adds explicit persistence helper. RESULT: new agent screen rehydrates last-used config and saves selections on create. EVIDENCE: Not run (not requested). - -- [x] **Iteration 2**: Show the selected permissions mode in the agent selector trigger. - - - The agent selector dropdown trigger currently shows provider and model (e.g., "Claude · auto"). - - It should also display the selected permissions mode (e.g., "Claude · auto · Plan"). - - Update the trigger label to include the mode. - - **Done (2025-12-28 23:37)**: WHAT: `packages/app/src/app/agent/new.tsx:634-643` adds computed labels for provider/mode and `packages/app/src/app/agent/new.tsx:729` appends the permissions mode in the agent trigger value. RESULT: agent selector trigger now shows provider, model, and permissions mode. EVIDENCE: Not run (not requested). - -- [x] agent=claude **Test 1**: Test config persistence via Playwright MCP. - - - Navigate to new agent screen at `http://localhost:8081/agent/new`. - - Select a non-default config (e.g., Codex provider, specific model, Plan mode). - - Create an agent. - - Navigate back to new agent screen. - - Verify the previously selected config is pre-populated. - - If not working, add a fix task with debugging feedback. - - **Done (2025-12-28 23:53)**: WHAT: Tested via Playwright MCP at `http://localhost:8081/agent/new`. RESULT: Config persistence working correctly. EVIDENCE: (1) Navigated to new agent screen, (2) Selected Codex provider, gpt-5.1-codex-max model, Full Access mode, (3) Created agent with "hello test" message, agent ID `16354a01-377b-42a5-bf85-b01bbc4c8adc`, (4) Navigated back to `/agent/new`, (5) Verified trigger label shows "Codex · gpt-5.1-codex-max · Full Access" - all settings persisted correctly. - -- [x] agent=claude **Test 2**: Test permissions mode display in agent selector via Playwright MCP. - - - Navigate to new agent screen at `http://localhost:8081/agent/new`. - - Open the agent selector dropdown. - - Select a specific mode (e.g., "Plan"). - - Verify the trigger label shows provider, model, AND mode (e.g., "Claude · auto · Plan"). - - If not working, add a fix task with debugging feedback. - - **Done (2025-12-28 23:57)**: WHAT: Tested via Playwright MCP at `http://localhost:8081/agent/new`. RESULT: Permissions mode display working correctly. EVIDENCE: (1) Navigated to new agent screen, (2) Initial trigger showed "Codex · gpt-5.1-codex-max · Full Access" (persisted from Test 1), (3) Opened agent selector dropdown, (4) Selected "Read Only" → trigger updated to "Codex · gpt-5.1-codex-max · Read Only", (5) Selected "Auto" → trigger updated to "Codex · gpt-5.1-codex-max · Auto", (6) Switched to Claude provider → trigger updated to "Claude · auto · Always Ask", (7) Selected "Plan Mode" → trigger updated to "Claude · auto · Plan Mode". All mode changes correctly reflected in the trigger label. - -- [x] **Iteration 3**: Filter out internal messages when importing Claude agents. - - - When importing Claude agents, internal messages like "Warmup" are shown. - - These should be filtered out from the imported history. - - Add daemon-level E2E test to verify filtering. - - **Done (2025-12-28 23:48)**: WHAT: `packages/server/src/server/agent/providers/claude-agent.ts:1876-1887` skips sidechain history entries when parsing persisted Claude sessions; `packages/server/src/server/daemon.e2e.test.ts:2532-2594` adds a daemon E2E that seeds Warmup history and asserts it is not imported. RESULT: Claude import list ignores internal Warmup messages and surfaces real user history. EVIDENCE: Not run (not requested). - -- [x] **Iteration 4**: Fix Codex import screen showing nothing. - - - Codex import screen currently displays no content. - - Investigate and fix the issue. - - Add daemon-level E2E test to verify import works correctly. - - **Done (2025-12-28 23:58)**: WHAT: `packages/server/src/server/agent/providers/codex-mcp-agent.ts:4133-4476` adds Codex persisted session listing from rollout files plus JSON/JSONL timeline parsing and session metadata extraction; `packages/server/src/server/daemon.e2e.test.ts:2597-2662` adds Codex persisted agent import E2E coverage. RESULT: Codex import list now populates from on-disk rollouts with timeline previews and is covered by a daemon E2E. EVIDENCE: Not run (not requested). - -- [x] **Iteration 5**: Add host selector to import agent screen. - - - When importing an agent, user should be able to choose which host to import to. - - Use the same UI pattern as the new agent screen: host selector in the header. - - Reference the new agent screen implementation for consistency. - - **Done (2025-12-29 00:05)**: WHAT: `packages/app/src/components/create-agent-modal.tsx:172-2193` adds a host dropdown key, renders the header host badge in the import flow, and adds a host selection sheet; `packages/app/src/components/create-agent-modal.tsx:2718-2751` adds host badge/header action styles. RESULT: import agent modal now lets users pick the target host from the header selector. EVIDENCE: Not run (not requested). - -- [x] **Iteration 6**: Fix gallery 15s timeout causing full-screen error crash. - - - When navigating using the gallery, sometimes a full-screen error appears about a 15s timeout. - - This appears to be an image loading timeout. - - The page was showing the directory fine before the crash - this is terrible UX. - - Fix: Don't crash the page on image timeout. Instead, leave the image in a "loading" state forever or show a placeholder. - - Image timeouts should never crash the entire view. - - **Done (2025-12-29 00:01)**: WHAT: `packages/app/src/contexts/session-context.tsx:1550-1584` stops updating `lastError` during file preview requests so thumbnail timeouts no longer trigger the full-screen error state. RESULT: gallery image timeouts no longer replace the directory view; thumbnails remain in loading state. EVIDENCE: Not run (not requested). - -- [x] **Iteration 7**: Fix spurious loader showing at top of gallery even when directory has loaded. - - - Sometimes the loader at the top of the gallery keeps showing even when the directory content has clearly loaded. - - Investigate the loading state management and fix the race condition. - - **Done (2025-12-29 00:10)**: WHAT: `packages/app/src/contexts/session-context.tsx:1588-1645` routes back-navigation directory listings through the request helper and clears `pendingRequest`/`isLoading` on response. RESULT: gallery header loader no longer sticks after navigating back to cached directories. EVIDENCE: Not run (not requested). - -- [x] **Iteration 8**: Review and fix file/directory auto-linking logic. - - - Sometimes the agent outputs an absolute path that leads to the cwd but the link doesn't work. - - It appears the linking logic only accepts relative paths. - - Review the path detection and linking logic. - - Fix to handle both absolute and relative paths correctly. - - **Done (2025-12-29 00:15)**: WHAT: `packages/app/src/components/agent-stream-view.tsx:118` now normalizes inline paths using the agent cwd; `packages/app/src/components/agent-stream-view.tsx:455` adds path normalization helpers to convert absolute paths within the cwd to relative form before file explorer navigation. RESULT: absolute paths pointing at the agent cwd resolve to the correct directory/file in the explorer. EVIDENCE: Not run (not requested). - -- [x] **Iteration 9**: Remove host label from git diff screen. - - - The host label is shown on the git diff screen but it's not relevant there. - - Remove it from the UI. - - **Done (2025-12-29 00:16)**: WHAT: `packages/app/src/app/git-diff.tsx:81-210` removes the Host label from the git diff header and error state; `packages/app/src/app/git-diff.tsx:253-307` drops the unused `metaText` style. RESULT: git diff screen no longer shows the host label. EVIDENCE: Not run (not requested). - -- [x] **Checkpoint**: Run typecheck and review code quality. - - - Run `npm run typecheck` and fix any errors. - - Review all code changes made in this plan (Iterations 1-9). - - Look for brittle TypeScript: `as` casts, `any` types, weakly typed code. - - Ensure proper type inference and type safety. - - Add fix tasks for any issues found. - - **Done (2025-12-29 00:18)**: WHAT: `plan.md:97` marked this checkpoint complete; `plan.md:106` added follow-up fix task for URL-param validation; `REPORT-typecheck-code-quality.md:1` documented typecheck + code-quality findings. RESULT: typecheck passed; identified URL-param cast risk and created fix task. EVIDENCE: `npm run typecheck` (workspace typecheck completed with exit code 0). - -- [x] **Fix**: Validate URL-derived provider/mode/model on new agent screen. - - - Guard `useLocalSearchParams` values in `packages/app/src/app/agent/new.tsx`. - - Only accept provider/mode/model values that exist in current definitions/options. - - Drop invalid values instead of casting to `AgentProvider`. - - **Done (2025-12-29 00:22)**: WHAT: `packages/app/src/app/agent/new.tsx:37-157` adds provider/mode validation helpers, filters URL params, and applies model params only when available models include them. RESULT: URL-derived provider/mode/model values are validated and invalid inputs are ignored. EVIDENCE: Not run (not requested). - -- [x] **Checkpoint**: Review daemon test coverage for fixes in this plan. - - - Review all fixes made in this plan (Iterations 3-9). - - Determine which fixes need daemon-level E2E tests. - - No mocks, simple tests only. - - E2E when possible but no browser tests. - - Add any missing test tasks to the plan. - - **Done (2025-02-10 08:56)**: WHAT: `REPORT-daemon-test-coverage.md:1` documents daemon test coverage review for Iterations 3-9. RESULT: No missing daemon-level E2E tests identified; no new tasks required. EVIDENCE: Review documented in report. - -- [x] agent=claude **Investigation**: Test image attachment flow via Playwright MCP. - - - Use Playwright MCP to test image uploads at `http://localhost:8081`. - - Create a solid color image using ImageMagick (e.g., `convert -size 100x100 xc:red /tmp/red.png`). - - Upload the image as an attachment to an agent. - - Test with Claude agent: ask "what color is this image?" - verify it responds correctly. - - Test with Codex agent: same test - verify it responds correctly. - - Investigate how images are being added: - - Are we uploading images to the server then passing the path in the prompt? - - Or are we base64 encoding and sending inline? - - Trace the flow from UI upload to agent prompt. - - Document findings in the plan. - - If broken, add fix tasks with debugging details. - - **Done (2025-12-29 09:13)**: WHAT: Tested image attachments via Playwright MCP; traced code in `packages/app/src/app/agent/new.tsx:576-580`, `packages/app/src/contexts/session-context.tsx:1307-1331`, `packages/server/src/server/session.ts:316-334`. RESULT: Image attachments are BROKEN - three issues found: (1) Agent creation silently drops images with console warning, (2) Web platform fails to base64 encode images due to `expo-file-system.readAsStringAsync` not working, (3) Server `buildAgentPrompt` only creates text summary, never passes actual image bytes to LLM. EVIDENCE: Console logs `[WARNING] [DraftAgentScreen] Image attachments on agent creation not yet supported` and `[ERROR] [Session] Failed to convert image: Error: Method readAsStringAsync imported from "expo-file-system"...`; agent responses consistently state "I don't see any image attached". Full report in `REPORT-image-attachment-investigation.md`. - -- [x] **Fix**: Add image support to agent creation API - - Extend `create_agent_request` to accept images array - - Pass images to `handleSendAgentMessage` after agent creation - - Remove warning in `new.tsx:576-580` once implemented - - **Done (2025-12-29 09:07)**: WHAT: `packages/server/src/server/messages.ts:363-373` adds optional `images` to `create_agent_request`; `packages/server/src/server/session.ts:1268-1311` forwards images into `handleSendAgentMessage`; `packages/app/src/contexts/session-context.tsx:1287-1459` encodes image attachments and includes them in create-agent websocket payloads; `packages/app/src/stores/session-store.ts:175-206` updates createAgent type to accept images/async; `packages/app/src/app/agent/new.tsx:560-606` forwards images to createAgent and removes the warning. RESULT: agent creation requests now carry image attachments through to the initial prompt path. EVIDENCE: Not run (not requested). - -- [x] **Fix**: Fix web platform image base64 encoding - - Replace `FileSystem.readAsStringAsync` in `session-context.tsx:1312` with cross-platform solution - - Use blob URL + fetch or FileReader API for web - - Test on web, iOS, and Android - - **Done (2025-12-29 09:09)**: WHAT: `packages/app/src/contexts/session-context.tsx:1288-1334` adds web-specific image base64 conversion using fetch + FileReader (including data URI handling) and keeps native `FileSystem.readAsStringAsync` for non-web. RESULT: web image attachments are encoded without relying on `expo-file-system` web support. EVIDENCE: Not run (not requested). - -- [x] **Fix**: Implement multimodal prompt building on server - - Modify `buildAgentPrompt` in `session.ts:316-334` to return structured content with images - - Update `AgentPromptInput` type to support content blocks - - Implement Claude-specific image content blocks - - Implement Codex/OpenAI image handling - - **Done (2025-12-29 09:14)**: WHAT: `packages/server/src/server/agent/agent-sdk-types.ts:39-43` adds `AgentPromptContentBlock` and extends `AgentPromptInput` to include image blocks; `packages/server/src/server/session.ts:317-333` now builds prompt blocks with text + image data; `packages/server/src/server/agent/providers/claude-agent.ts:790-820` maps prompt blocks to Claude SDK image/text content; `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2313-2328` renders image blocks as data URLs in prompt text. RESULT: server prompts now carry image data for Claude and include image payloads for Codex/OpenAI flows instead of a text-only summary. EVIDENCE: Not run (not requested). - -- [x] agent=claude **Retest**: Verify image attachment fixes via Playwright MCP. - - - Create a solid color image using ImageMagick (e.g., `convert -size 100x100 xc:red /tmp/red.png`). - - Navigate to `http://localhost:8081/agent/new`. - - Upload the red image and ask "what color is this image?". - - Test with Claude agent: verify it correctly identifies the color as red. - - Test with Codex agent: verify it correctly identifies the color as red. - - If still broken, add fix tasks with debugging details. - - **Done (2025-12-29 02:53)**: WHAT: Tested via Playwright MCP with `/tmp/red.png` (100x100 solid red image). RESULT: Both agents correctly identify the image as red. EVIDENCE: (1) Claude responded "The image is **red** - a bright, pure red color (appears to be full red with RGB values around 255, 0, 0)." (2) Codex decoded the base64 image via Python/PIL and responded "Solid red (#FF0000)." Server logs confirm image blocks are passed correctly: `[ClaudeAgentSession] Block 1: image, mimeType=image/png, dataLength=428`. NOTE: Codex works but embeds full base64 in context - needs fix below. - -- [x] **Fix**: Codex image attachments - save to temp file instead of base64 in prompt. - - - Current implementation in `codex-mcp-agent.ts:2313-2328` embeds base64 data URL in prompt text via `toPromptText()`. - - This stuffs the entire image into the LLM context (e.g., 1MB image = 1.3MB base64 in prompt). - - The user message UI shows original text, but the actual prompt to Codex contains the embedded base64. - - Fix: Write image to temp file (e.g., `/tmp/paseo-attachments/{uuid}.png`). - - Pass file path in prompt text (e.g., "User attached image: /tmp/paseo-attachments/abc123.png"). - - Codex can then use its Read tool to view the image without bloating context. - - **Done (2025-12-29 10:12)**: WHAT: `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2314-2363` adds temp file helpers and writes image attachments under `/tmp/paseo-attachments` before emitting prompt text; `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2884` now awaits async prompt building. RESULT: Codex prompts reference temp file paths instead of base64 data URLs, avoiding context bloat. EVIDENCE: Not run (not requested). - -- [x] **Test**: Verify Codex image attachment fix via Playwright MCP. - - - Upload a test image to Codex agent and ask "what color is this image?". - - Verify Codex correctly identifies the color. - - Check server logs or agent timeline to confirm: - 1. Prompt contains a file path (e.g., `/tmp/paseo-attachments/{uuid}.png`) NOT base64 data. - 2. Codex accesses the file via Read tool or Bash (e.g., `cat`, Python script with file path). - - Verify the temp file exists in `/tmp/paseo-attachments/` during the request. - - Confirm no base64 data URL appears in the prompt text sent to Codex MCP. - - **Done (2025-02-10 09:26)**: WHAT: `REPORT-codex-image-attachment-test.md:1` documents Playwright MCP results; `plan.md:176` marked this test complete and added a follow-up fix task. RESULT: Codex correctly identified the color but still received base64 in the prompt; `/tmp/paseo-attachments` was not created. EVIDENCE: UI timeline showed a tool command embedding base64 data, response was "The image is solid red (#ff0000).", and `ls -la /tmp/paseo-attachments` returned "No such file or directory"; full details in `REPORT-codex-image-attachment-test.md`. - -- [x] **Fix**: Codex image attachment prompt still embeds base64. - - - Reproduce with a new Codex agent and image attachment from `http://localhost:8081/agent/new`. - - Confirm server prompt includes base64 data URL instead of `/tmp/paseo-attachments/{uuid}.png`. - - Ensure temp files are created under `/tmp/paseo-attachments` and prompt only references the file path. - - Add a lightweight regression test or log assertion if possible. - - **Done (2025-12-29 10:34)**: WHAT: `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2333-2412` now normalizes inline data URLs, writes attachments under `/tmp/paseo-attachments`, and replaces embedded base64 in prompt strings/blocks with temp file paths (plus a log when replacements occur). RESULT: Codex prompt text no longer carries inline base64 data URLs and uses temp file references instead. EVIDENCE: Not run (not requested). - -- [x] **Fix**: Migrate expo-file-system to new API for React Native image encoding. - - - Error in RN: `Method readAsStringAsync imported from "expo-file-system" is deprecated`. - - The error occurs at `packages/app/src/contexts/session-context.tsx:1332` when encoding images on native platforms. - - Current code uses `FileSystem.readAsStringAsync(uri, { encoding: "base64" })` which is deprecated. - - Search the web for Expo's new filesystem API using `File` and `Directory` classes. - - Check the Expo documentation for the recommended migration path. - - Update `encodeImages` function to use the new API for native platforms while keeping web handling unchanged. - - Test image attachments on iOS/Android after the fix. - - **Done (2025-12-29 10:50)**: WHAT: `packages/app/src/contexts/session-context.tsx:22` swaps the import to `File` from the new expo-file-system API; `packages/app/src/contexts/session-context.tsx:1332-1333` uses `new File(uri).base64()` instead of `readAsStringAsync` for native image encoding. RESULT: Native image encoding no longer relies on deprecated `readAsStringAsync`. EVIDENCE: Not run (iOS/Android testing not requested). diff --git a/screenshot-keyboard.png b/screenshot-keyboard.png deleted file mode 100644 index 5cac1cd28..000000000 Binary files a/screenshot-keyboard.png and /dev/null differ diff --git a/screenshot-now.png b/screenshot-now.png deleted file mode 100644 index a915ce328..000000000 Binary files a/screenshot-now.png and /dev/null differ diff --git a/screenshot-test.png b/screenshot-test.png deleted file mode 100644 index b0eef5768..000000000 Binary files a/screenshot-test.png and /dev/null differ diff --git a/screenshot-test2.png b/screenshot-test2.png deleted file mode 100644 index 9283ff06d..000000000 Binary files a/screenshot-test2.png and /dev/null differ diff --git a/screenshot-with-keyboard.png b/screenshot-with-keyboard.png deleted file mode 100644 index f4c55248d..000000000 Binary files a/screenshot-with-keyboard.png and /dev/null differ diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index ea7650496..000000000 Binary files a/screenshot.png and /dev/null differ diff --git a/screenshot_before.png b/screenshot_before.png deleted file mode 100644 index b74b55aab..000000000 Binary files a/screenshot_before.png and /dev/null differ diff --git a/test-audit.txt b/test-audit.txt deleted file mode 100644 index 546a729d9..000000000 --- a/test-audit.txt +++ /dev/null @@ -1,3226 +0,0 @@ - -> @paseo/server@0.1.0 test -> vitest run - - - RUN v3.2.4 /Users/moboudra/dev/voice-dev/packages/server - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > responds with text -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > responds with text -[CodexAgentTest] Running single-turn acknowledgment test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits tool or command events when writing a file -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits tool or command events when writing a file -[CodexAgentTest] Streaming file creation activity - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries -[CodexAgentTest] Streaming Codex run for tool call hydration test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls -[CodexAgentTest] Streaming Codex run for tool call id uniqueness test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status -[CodexAgentTest] Recording Codex command activity for persistence hydration test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > supports multiple turns within the same session -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > supports multiple turns within the same session -[CodexAgentTest] Running multi-turn continuity test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > can change modes mid-session -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > can change modes mid-session -[CodexAgentTest] Testing mode transitions inside a single session - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Recording initial turn before persistence - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Resuming session from persistence handle - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Replayed 5 history events: [ - { - "type": "thread_started" - }, - { - "type": "timeline", - "timelineType": "user_message" - }, - { - "type": "timeline", - "timelineType": "reasoning" - }, - { - "type": "timeline", - "timelineType": "reasoning" - }, - { - "type": "timeline", - "timelineType": "assistant_message" - } -] - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes -[CodexAgentTest] Launching sleep command interrupt test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates user messages from persisted history -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP URL: http://127.0.0.1:60651/mcp/agents - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP initialize request received - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP session initialized: e2cb96b0-53f5-4a46-a23d-8ae9045af264 - - ❯ src/server/agent/providers/codex-agent.test.ts (15 tests | 1 failed | 1 skipped) 97745ms - ✓ CodexAgentClient (SDK integration) > responds with text 6451ms - ✓ CodexAgentClient (SDK integration) > emits tool or command events when writing a file 12920ms - ✓ CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries 13202ms - ✓ CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls 12851ms - × CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status 6863ms - → expected undefined to be truthy - ✓ CodexAgentClient (SDK integration) > supports multiple turns within the same session 10065ms - ✓ CodexAgentClient (SDK integration) > can change modes mid-session 8463ms - ✓ CodexAgentClient (SDK integration) > resumes a session using a persistence handle 8748ms - ✓ CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes 6349ms - ↓ CodexAgentClient (SDK integration) > emits permission requests and resolves them when approvals are handled (awaiting Codex support) - ✓ CodexAgentClient (SDK integration) > hydrates user messages from persisted history 5706ms - ✓ CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex 6123ms - ✓ isSyntheticRolloutUserMessage > flags AGENTS instruction payloads 0ms - ✓ isSyntheticRolloutUserMessage > flags environment context payloads 0ms - ✓ isSyntheticRolloutUserMessage > allows real user prompts 0ms - ✓ src/server/agent/providers/codex-mcp-agent.test.ts (13 tests) 147933ms - ✓ CodexMcpAgentClient (MCP integration) > responds with text 4125ms - ✓ CodexMcpAgentClient (MCP integration) > maps MCP stream events into timeline items with stable call ids 11517ms - ✓ CodexMcpAgentClient (MCP integration) > maps thread/item events for file changes, MCP tools, web search, and todo lists 17220ms - ✓ CodexMcpAgentClient (MCP integration) > captures tool call inputs/outputs for commands, file changes, file reads, MCP tools, and web search 51619ms - ✓ CodexMcpAgentClient (MCP integration) > emits an error timeline item for failed MCP turns 6014ms - ✓ CodexMcpAgentClient (MCP integration) > persists session metadata and resumes with history 8245ms - ✓ CodexMcpAgentClient (MCP integration) > reports runtime info with provider, session, model, and mode 4726ms - ✓ CodexMcpAgentClient (MCP integration) > requests permission and resolves approval when allowed 7089ms - ✓ CodexMcpAgentClient (MCP integration) > requires permission in read-only (on-request) mode 10372ms - ✓ CodexMcpAgentClient (MCP integration) > denies permission requests and reports resolution 7454ms - ✓ CodexMcpAgentClient (MCP integration) > aborts when permission responses request an interrupt 5208ms - ✓ CodexMcpAgentClient (MCP integration) > interrupts a long-running command via abort 3795ms - ✓ CodexMcpAgentClient (MCP integration) > interrupts long-running commands within 1s and leaves a clean session 10547ms - ✓ src/server/terminal-mcp/terminal-manager.test.ts (26 tests) 40555ms - ✓ TerminalManager - Command Execution > executeCommand > should handle commands with pipes and operators 679ms - ✓ TerminalManager - Command Execution > executeCommand > should capture non-zero exit codes 710ms - ✓ TerminalManager - Command Execution > executeCommand > should launch interactive command (Python REPL) 1330ms - ✓ TerminalManager - Command Execution > executeCommand > should handle command with working directory 690ms - ✓ TerminalManager - Command Execution > executeCommand > should handle long-running command with timeout 707ms - ✓ TerminalManager - Command Execution > listCommands > should list all commands including dead ones 2322ms - ✓ TerminalManager - Command Execution > listCommands > should preserve command and working directory info for dead commands 1208ms - ✓ TerminalManager - Command Execution > captureCommand > should capture output from running command 1348ms - ✓ TerminalManager - Command Execution > sendTextToCommand > should send text to running Python REPL 4461ms - ✓ TerminalManager - Command Execution > sendTextToCommand > should handle multiple sequential inputs to REPL 6041ms - ✓ TerminalManager - Command Execution > sendKeysToCommand > should send Ctrl-C to interrupt running command 2228ms - ✓ TerminalManager - Command Execution > sendKeysToCommand > should send Enter key to REPL 2839ms - ✓ TerminalManager - Command Execution > sendKeysToCommand > should repeat key press multiple times 4000ms - ✓ TerminalManager - Command Execution > killCommand > should kill running command 975ms - ✓ TerminalManager - Command Execution > killCommand > should kill finished command (cleanup) 522ms - ✓ TerminalManager - Command Execution > Complex workflows > should handle Node.js REPL workflow 5195ms - ✓ TerminalManager - Command Execution > Complex workflows > should handle command that produces streaming output 421ms - ✓ TerminalManager - Command Execution > Complex workflows > should handle command with stderr output 708ms - ✓ TerminalManager - Command Execution > Edge cases > should handle empty command output 713ms - ✓ TerminalManager - Command Execution > Edge cases > should handle command with tilde in directory 717ms - ✓ TerminalManager - Command Execution > Edge cases > should handle very long output 705ms - ✓ TerminalManager - Command Execution > Edge cases > should handle special characters in command 701ms - ✓ TerminalManager - Command Execution > Edge cases > should handle command with quotes 711ms -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -✓ Agent registry loaded (0 records); agents will initialize on demand -✓ Agent MCP server mounted at /mcp/agents -✓ WebSocket server initialized on /ws - -stderr | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -⚠ OPENAI_API_KEY not set - LLM, STT, and TTS features will not work - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[Agent MCP] Session initialized: 6ec53dc0-7358-49d2-823e-c8a851056934 - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[Agent MCP] Session initialized: cb75b46a-53a6-4320-bbd3-df23260604ec - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - - ✓ src/server/agent/agent-mcp.e2e.test.ts (1 test) 15659ms - ✓ agent MCP end-to-end > creates a Claude agent and writes a file 15658ms -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > supports multi-turn conversations -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > resumes a persisted session -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > updates session modes -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > handles plan mode approval flow -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - - ❯ src/server/agent/providers/claude-agent.test.ts (17 tests | 2 failed) 205405ms - ✓ ClaudeAgentClient (SDK integration) > responds with text 5759ms - ✓ ClaudeAgentClient (SDK integration) > streams reasoning chunks 14563ms - ✓ ClaudeAgentClient (SDK integration) > emits a single assistant message in the hydrated stream 5892ms - ✓ ClaudeAgentClient (SDK integration) > shows the command inside pending tool calls 9721ms - ✓ ClaudeAgentClient (SDK integration) > tracks permission + tool lifecycle when editing a file 13289ms - ✓ ClaudeAgentClient (SDK integration) > permission flow parity - allows command after approval 12469ms - ✓ ClaudeAgentClient (SDK integration) > permission flow parity - denies command execution 12424ms - ✓ ClaudeAgentClient (SDK integration) > permission flow parity - aborts on interrupt response 6343ms - ✓ ClaudeAgentClient (SDK integration) > interrupts a long-running bash command before it finishes 6614ms - ✓ ClaudeAgentClient (SDK integration) > supports multi-turn conversations 9140ms - ✓ ClaudeAgentClient (SDK integration) > resumes a persisted session 13313ms - ✓ ClaudeAgentClient (SDK integration) > updates session modes 5636ms - ✓ ClaudeAgentClient (SDK integration) > handles plan mode approval flow 40182ms - × ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream 32162ms - → expected false to be true // Object.is equality - × ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history 17880ms - → expected false to be true // Object.is equality - ✓ convertClaudeHistoryEntry > maps user tool results to timeline items 1ms - ✓ convertClaudeHistoryEntry > returns user messages when no tool blocks exist 0ms - ✓ src/server/agent/model-catalog.e2e.test.ts (2 tests) 1074ms - ✓ provider model catalogs > Claude catalog exposes Sonnet and Haiku variants 688ms - ✓ provider model catalogs > Codex catalog exposes gpt-5.1-codex 385ms -stdout | src/server/bootstrap.smoke.test.ts > paseo daemon bootstrap > starts and serves health endpoint -✓ Agent registry loaded (0 records); agents will initialize on demand -✓ Agent MCP server mounted at /mcp/agents -✓ WebSocket server initialized on /ws - -stderr | src/server/bootstrap.smoke.test.ts > paseo daemon bootstrap > starts and serves health endpoint -⚠ OPENAI_API_KEY not set - LLM, STT, and TTS features will not work - - ✓ src/server/bootstrap.smoke.test.ts (1 test) 5ms -stderr | src/server/agent/agent-registry.test.ts > AgentRegistry > recovers from trailing garbage in agents.json -[AgentRegistry] Recovered corrupted agents.json payload; rewrote sanitized copy - - ✓ src/server/agent/agent-registry.test.ts (7 tests) 7ms - ✓ src/server/agent/agent-manager.test.ts (4 tests) 5ms - ✓ src/server/agent/mcp-server.test.ts (2 tests) 3ms - ✓ src/server/agent/agent-projections.test.ts (9 tests) 2ms -stderr | src/server/agent/model-resolver.test.ts > resolveAgentModel > returns undefined when the catalog lookup fails -[AgentModelResolver] Failed to resolve default model for codex: Error: boom - at /Users/moboudra/dev/voice-dev/packages/server/src/server/agent/model-resolver.test.ts:55:35 - at file:///Users/moboudra/dev/voice-dev/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11 - at file:///Users/moboudra/dev/voice-dev/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26 - at file:///Users/moboudra/dev/voice-dev/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20 - at new Promise () - at runWithTimeout (file:///Users/moboudra/dev/voice-dev/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10) - at runTest (file:///Users/moboudra/dev/voice-dev/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12) - at runSuite (file:///Users/moboudra/dev/voice-dev/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8) - at runSuite (file:///Users/moboudra/dev/voice-dev/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8) - at runFiles (file:///Users/moboudra/dev/voice-dev/node_modules/@vitest/runner/dist/chunk-hooks.js:1787:3) - - ✓ src/server/agent/model-resolver.test.ts (4 tests) 2ms - ✓ src/server/agent/providers/codex-agent.unit.test.ts (1 test) 1ms - ✓ src/server/agent/wait-for-agent-tracker.test.ts (2 tests) 1ms - ✓ src/server/persistence-hooks.test.ts (1 test) 0ms - ✓ src/server/agent/providers/claude-agent.history.test.ts (3 tests) 0ms - -⎯⎯⎯⎯⎯⎯⎯ Failed Tests 3 ⎯⎯⎯⎯⎯⎯⎯ - - FAIL src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates persisted tool call results into the UI stream -AssertionError: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ src/server/agent/providers/claude-agent.test.ts:968:56 - 966| - 967| const historyPaths = getClaudeHistoryPaths(cwd, sessionId!); - 968| expect(await waitForHistoryFile(historyPaths)).toBe(true); - | ^ - 969| - 970| const resumed = await client.resumeSession(handle!, { cwd }); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/3]⎯ - - FAIL src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > hydrates user messages from persisted history -AssertionError: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ src/server/agent/providers/claude-agent.test.ts:1069:56 - 1067| - 1068| const historyPaths = getClaudeHistoryPaths(cwd, sessionId!); - 1069| expect(await waitForHistoryFile(historyPaths)).toBe(true); - | ^ - 1070| - 1071| const resumed = await client.resumeSession(handle!, { cwd }); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/3]⎯ - - FAIL src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status -AssertionError: expected undefined to be truthy - -- Expected: -true - -+ Received: -undefined - - ❯ src/server/agent/providers/codex-agent.test.ts:498:30 - 496| isAgentToolCallItem(item) && item.payload.data.server === … - 497| ); - 498| expect(commandEntry).toBeTruthy(); - | ^ - 499| if (commandEntry) { - 500| expect(commandEntry.payload.data.status).toBe("completed"); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/3]⎯ - - - Test Files 2 failed | 14 passed (16) - Tests 3 failed | 104 passed | 1 skipped (108) - Start at 14:40:44 - Duration 509.26s (transform 358ms, setup 0ms, collect 742ms, tests 508.39s, environment 0ms, prepare 35ms) - -npm error Lifecycle script `test` failed with error: -npm error code 1 -npm error path /Users/moboudra/dev/voice-dev/packages/server -npm error workspace @paseo/server@0.1.0 -npm error location /Users/moboudra/dev/voice-dev/packages/server -npm error command failed -npm error command sh -c vitest run diff --git a/test-codex-path-override.mjs b/test-codex-path-override.mjs deleted file mode 100644 index c8761334a..000000000 --- a/test-codex-path-override.mjs +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env node - -import { Codex } from '@openai/codex-sdk'; - -console.log('Testing codexPathOverride option...\n'); - -// Test 1: Default (embedded binary) -console.log('Test 1: Using default embedded binary'); -const defaultCodex = new Codex(); -console.log('✓ Created Codex instance with default settings'); - -// Test 2: System binary via codexPathOverride -console.log('\nTest 2: Using system binary via codexPathOverride'); -const systemCodex = new Codex({ - codexPathOverride: '/Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex' -}); -console.log('✓ Created Codex instance with codexPathOverride'); - -// Test 3: Using which codex -console.log('\nTest 3: Using which codex result'); -import { execSync } from 'child_process'; -const whichCodex = execSync('which codex', { encoding: 'utf8' }).trim(); -console.log('System codex location:', whichCodex); - -const whichCodexInstance = new Codex({ - codexPathOverride: whichCodex -}); -console.log('✓ Created Codex instance with system codex from PATH'); - -console.log('\n✅ All tests passed! codexPathOverride option is available and working.'); -console.log('\nConclusion: You can use the system-installed codex by passing:'); -console.log(' new Codex({ codexPathOverride: "/path/to/system/codex" })'); diff --git a/test-codex.txt b/test-codex.txt deleted file mode 100644 index 9766475a4..000000000 --- a/test-codex.txt +++ /dev/null @@ -1 +0,0 @@ -ok diff --git a/test-list-persisted.ts b/test-list-persisted.ts deleted file mode 100644 index 80cd3223c..000000000 --- a/test-list-persisted.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ClaudeAgentClient } from "./packages/server/src/server/agent/providers/claude-agent.js"; - -async function main() { - const client = new ClaudeAgentClient(); - const results = await client.listPersistedAgents({ limit: 30 }); - console.log("Total results:", results.length); - console.log("Results:"); - for (const r of results) { - console.log(` - ${r.sessionId.slice(0,8)} | ${r.cwd} | ${r.title?.slice(0,30)}`); - } - const target = results.find(r => r.sessionId.includes("0fea55e9")); - if (target) { - console.log("\nFound target session:", target.sessionId); - } else { - console.log("\nTarget session 0fea55e9 NOT FOUND in results"); - } -} -main().catch(console.error); diff --git a/test-models.mjs b/test-models.mjs deleted file mode 100644 index 54e34ed03..000000000 --- a/test-models.mjs +++ /dev/null @@ -1,36 +0,0 @@ -import { - fetchClaudeModelCatalog, - fetchCodexModelCatalog, -} from "./packages/server/dist/server/agent/model-catalog.js"; - -console.log("=== Testing Claude Model Catalog ===\n"); -try { - const claudeModels = await fetchClaudeModelCatalog(); - console.log(`Found ${claudeModels.length} Claude models:\n`); - claudeModels.forEach((model, idx) => { - console.log(`${idx + 1}. ${model.label} (${model.id})`); - console.log(` Description: ${model.description || "N/A"}`); - console.log(` Is Default: ${model.isDefault || false}`); - console.log(""); - }); -} catch (error) { - console.error("Error fetching Claude models:", error.message); -} - -console.log("\n=== Testing Codex Model Catalog ===\n"); -try { - const codexModels = await fetchCodexModelCatalog(); - console.log(`Found ${codexModels.length} Codex models:\n`); - codexModels.forEach((model, idx) => { - console.log(`${idx + 1}. ${model.label} (${model.id})`); - console.log(` Description: ${model.description || "N/A"}`); - console.log(` Is Default: ${model.isDefault || false}`); - if (model.metadata) { - console.log(` Model: ${model.metadata.model || "N/A"}`); - console.log(` Default Reasoning Effort: ${model.metadata.defaultReasoningEffort || "N/A"}`); - } - console.log(""); - }); -} catch (error) { - console.error("Error fetching Codex models:", error.message); -} diff --git a/test-models.ts b/test-models.ts deleted file mode 100644 index 46b37e6bb..000000000 --- a/test-models.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { - fetchClaudeModelCatalog, - fetchCodexModelCatalog, -} from "./packages/server/src/server/agent/model-catalog.js"; - -async function main() { - console.log("=== Testing Claude Model Catalog ===\n"); - try { - const claudeModels = await fetchClaudeModelCatalog(); - console.log(`Found ${claudeModels.length} Claude models:\n`); - claudeModels.forEach((model, idx) => { - console.log(`${idx + 1}. ${model.label} (${model.id})`); - console.log(` Description: ${model.description || "N/A"}`); - console.log(` Is Default: ${model.isDefault || false}`); - console.log(""); - }); - } catch (error: any) { - console.error("Error fetching Claude models:", error.message); - } - - console.log("\n=== Testing Codex Model Catalog ===\n"); - try { - const codexModels = await fetchCodexModelCatalog(); - console.log(`Found ${codexModels.length} Codex models:\n`); - codexModels.forEach((model, idx) => { - console.log(`${idx + 1}. ${model.label} (${model.id})`); - console.log(` Description: ${model.description || "N/A"}`); - console.log(` Is Default: ${model.isDefault || false}`); - if (model.metadata) { - console.log(` Model: ${model.metadata.model || "N/A"}`); - console.log(` Default Reasoning Effort: ${model.metadata.defaultReasoningEffort || "N/A"}`); - } - console.log(""); - }); - } catch (error: any) { - console.error("Error fetching Codex models:", error.message); - } -} - -main(); diff --git a/test-output-live-audit.txt b/test-output-live-audit.txt deleted file mode 100644 index 2683cd59c..000000000 --- a/test-output-live-audit.txt +++ /dev/null @@ -1,551 +0,0 @@ - -> @paseo/server@0.1.0 test -> vitest run - - - RUN v3.2.4 /Users/moboudra/dev/voice-dev/packages/server - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > responds with text -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > responds with text -[CodexAgentTest] Running single-turn acknowledgment test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits tool or command events when writing a file -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits tool or command events when writing a file -[CodexAgentTest] Streaming file creation activity - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries -[CodexAgentTest] Streaming Codex run for tool call hydration test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls -[CodexAgentTest] Streaming Codex run for tool call id uniqueness test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status -[CodexAgentTest] Recording Codex command activity for persistence hydration test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > supports multiple turns within the same session -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > supports multiple turns within the same session -[CodexAgentTest] Running multi-turn continuity test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > can change modes mid-session -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > can change modes mid-session -[CodexAgentTest] Testing mode transitions inside a single session - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Recording initial turn before persistence - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Resuming session from persistence handle - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Replayed 5 history events: [ - { - "type": "thread_started" - }, - { - "type": "timeline", - "timelineType": "user_message" - }, - { - "type": "timeline", - "timelineType": "reasoning" - }, - { - "type": "timeline", - "timelineType": "reasoning" - }, - { - "type": "timeline", - "timelineType": "assistant_message" - } -] - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes -[CodexAgentTest] Launching sleep command interrupt test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates user messages from persisted history -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP URL: http://127.0.0.1:54409/mcp/agents - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP initialize request received - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP session initialized: 5e7d706c-d114-4f64-8337-fe45c964a5f9 - - ❯ src/server/agent/providers/codex-agent.test.ts (15 tests | 1 failed | 1 skipped) 105959ms - ✓ CodexAgentClient (SDK integration) > responds with text 5709ms - ✓ CodexAgentClient (SDK integration) > emits tool or command events when writing a file 9081ms - ✓ CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries 10032ms - ✓ CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls 15694ms - × CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status 6959ms - → expected undefined to be truthy - ✓ CodexAgentClient (SDK integration) > supports multiple turns within the same session 10973ms - ✓ CodexAgentClient (SDK integration) > can change modes mid-session 10779ms - ✓ CodexAgentClient (SDK integration) > resumes a session using a persistence handle 10577ms - ✓ CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes 9946ms - ↓ CodexAgentClient (SDK integration) > emits permission requests and resolves them when approvals are handled (awaiting Codex support) - ✓ CodexAgentClient (SDK integration) > hydrates user messages from persisted history 4712ms - ✓ CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex 11493ms - ✓ isSyntheticRolloutUserMessage > flags AGENTS instruction payloads 0ms - ✓ isSyntheticRolloutUserMessage > flags environment context payloads 0ms - ✓ isSyntheticRolloutUserMessage > allows real user prompts 0ms - ✓ src/server/terminal-mcp/terminal-manager.test.ts (26 tests) 35641ms - ✓ TerminalManager - Command Execution > executeCommand > should launch interactive command (Python REPL) 1341ms - ✓ TerminalManager - Command Execution > executeCommand > should handle long-running command with timeout 726ms - ✓ TerminalManager - Command Execution > listCommands > should list all commands including dead ones 1911ms - ✓ TerminalManager - Command Execution > listCommands > should preserve command and working directory info for dead commands 767ms - ✓ TerminalManager - Command Execution > captureCommand > should capture output from running command 1392ms - ✓ TerminalManager - Command Execution > sendTextToCommand > should send text to running Python REPL 4445ms - ✓ TerminalManager - Command Execution > sendTextToCommand > should handle multiple sequential inputs to REPL 6025ms - ✓ TerminalManager - Command Execution > sendKeysToCommand > should send Ctrl-C to interrupt running command 2258ms - ✓ TerminalManager - Command Execution > sendKeysToCommand > should send Enter key to REPL 2800ms - ✓ TerminalManager - Command Execution > sendKeysToCommand > should repeat key press multiple times 3983ms - ✓ TerminalManager - Command Execution > killCommand > should kill running command 1150ms - ✓ TerminalManager - Command Execution > killCommand > should kill finished command (cleanup) 709ms - ✓ TerminalManager - Command Execution > Complex workflows > should handle Node.js REPL workflow 5205ms - ✓ TerminalManager - Command Execution > Complex workflows > should handle command that produces streaming output 480ms -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -✓ Agent registry loaded (0 records); agents will initialize on demand -✓ Agent MCP server mounted at /mcp/agents -✓ WebSocket server initialized on /ws - -stderr | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -⚠ OPENAI_API_KEY not set - LLM, STT, and TTS features will not work - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[Agent MCP] Session initialized: 21609a0d-b79c-4e4e-a59a-38d454cc2ff7 - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[Agent MCP] Session initialized: f6375c3f-755f-4e84-9a48-f535aa2d7cca - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stdout | src/server/agent/agent-mcp.e2e.test.ts > agent MCP end-to-end > creates a Claude agent and writes a file -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - - ✓ src/server/agent/agent-mcp.e2e.test.ts (1 test) 22477ms - ✓ agent MCP end-to-end > creates a Claude agent and writes a file 22477ms -2025-12-25T04:36:56.608364Z ERROR codex_api::endpoint::responses: error=network error: error sending request for url (https://chatgpt.com/backend-api/codex/responses) -2025-12-25T04:36:59.798507Z ERROR codex_api::endpoint::responses: error=network error: error sending request for url (https://chatgpt.com/backend-api/codex/responses) - ❯ src/server/agent/providers/codex-mcp-agent.test.ts (13 tests | 4 failed) 595659ms - ✓ CodexMcpAgentClient (MCP integration) > responds with text 4205ms - ✓ CodexMcpAgentClient (MCP integration) > maps MCP stream events into timeline items with stable call ids 7159ms - × CodexMcpAgentClient (MCP integration) > maps thread/item events for file changes, MCP tools, web search, and todo lists 18908ms - → expected false to be true // Object.is equality - × CodexMcpAgentClient (MCP integration) > captures tool call inputs/outputs for commands, file changes, file reads, MCP tools, and web search 240004ms - → Test timed out in 240000ms. -If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". - × CodexMcpAgentClient (MCP integration) > emits an error timeline item for failed MCP turns 166763ms - → expected 0 to be greater than 0 - × CodexMcpAgentClient (MCP integration) > persists session metadata and resumes with history 106915ms - → expected undefined to be truthy - → expected '' to contain 'tool-create.txt' - → expected '' to contain 'beta' - → expected undefined to be truthy - → expected '' to contain 'mcp-ok' - → expected '' to contain 'mcp-ok' - → expected undefined to be truthy - → expected '' to contain 'OpenAI Codex MCP' - → expected undefined to be truthy - → expected '019b53d3-64bf-72b0-b2bd-4f4a0722e278' to be '019b53d2-1daf-7ae0-abf2-8e583c0d053a' // Object.is equality - ✓ CodexMcpAgentClient (MCP integration) > reports runtime info with provider, session, model, and mode 13451ms - ✓ CodexMcpAgentClient (MCP integration) > requests permission and resolves approval when allowed 6237ms - ✓ CodexMcpAgentClient (MCP integration) > requires permission in read-only (on-request) mode 6811ms - ✓ CodexMcpAgentClient (MCP integration) > denies permission requests and reports resolution 5681ms - ✓ CodexMcpAgentClient (MCP integration) > aborts when permission responses request an interrupt 5512ms - ✓ CodexMcpAgentClient (MCP integration) > interrupts a long-running command via abort 4181ms - ✓ CodexMcpAgentClient (MCP integration) > interrupts long-running commands within 1s and leaves a clean session 9830ms -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > responds with text -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-031a99337c.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-2331ec2982.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-37c472a283.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-53a2d31a25.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-6f624fe23b.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-879e30e255.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-8d55c10d2f.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a1c92d40ff.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-a599c55717.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-d2b2e6619a.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-db8c90ddaf.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-e89a24e216.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f3046a8a6e.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stderr | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSDK] This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: -Error: UNKNOWN: unknown error, watch '/var/folders/xl/kkk9drfd3ms_t8x7rmy4z6900000gn/T/vscode-git-f460adcbda.sock' - at FSWatcher. (node:internal/fs/watchers:254:19) - at watch (node:fs:2549:36) - at UFB (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6516) - at Y23 (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:11679) - at mi1._watchWithNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:6997) - at mi1._handleFile (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:7723) - at mi1._addToNodeFs (file:///Users/moboudra/dev/voice-dev/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:448:10731) - -stdout | src/server/agent/providers/claude-agent.test.ts > ClaudeAgentClient (SDK integration) > streams reasoning chunks -[ClaudeAgentSession] Captured model from SDK init: claude-sonnet-4-5-20250929 - diff --git a/test-output.txt b/test-output.txt deleted file mode 100644 index 9ddb66d7c..000000000 --- a/test-output.txt +++ /dev/null @@ -1,120 +0,0 @@ - -> @paseo/server@0.1.0 test -> vitest run - - - RUN v3.2.4 /Users/moboudra/dev/voice-dev/packages/server - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > responds with text -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > responds with text -[CodexAgentTest] Running single-turn acknowledgment test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits tool or command events when writing a file -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits tool or command events when writing a file -[CodexAgentTest] Streaming file creation activity - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries -[CodexAgentTest] Streaming Codex run for tool call hydration test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls -[CodexAgentTest] Streaming Codex run for tool call id uniqueness test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status -[CodexAgentTest] Recording Codex command activity for persistence hydration test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > supports multiple turns within the same session -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > supports multiple turns within the same session -[CodexAgentTest] Running multi-turn continuity test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > can change modes mid-session -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > can change modes mid-session -[CodexAgentTest] Testing mode transitions inside a single session - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Recording initial turn before persistence - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Resuming session from persistence handle - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > resumes a session using a persistence handle -[CodexAgentTest] Replayed 5 history events: [ - { - "type": "thread_started" - }, - { - "type": "timeline", - "timelineType": "user_message" - }, - { - "type": "timeline", - "timelineType": "reasoning" - }, - { - "type": "timeline", - "timelineType": "reasoning" - }, - { - "type": "timeline", - "timelineType": "assistant_message" - } -] - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes -[CodexAgentTest] Launching sleep command interrupt test - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > hydrates user messages from persisted history -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[Codex] Using system binary: /Users/moboudra/.asdf/installs/nodejs/22.20.0/bin/codex - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP URL: http://127.0.0.1:55941/mcp/agents - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP initialize request received - -stdout | src/server/agent/providers/codex-agent.test.ts > CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex -[CodexAgentTest] Agent MCP session initialized: 505d0432-d831-4bcf-a84a-c059da7f36dc - - ❯ src/server/agent/providers/codex-agent.test.ts (15 tests | 1 failed | 1 skipped) 89040ms - ✓ CodexAgentClient (SDK integration) > responds with text 5549ms - ✓ CodexAgentClient (SDK integration) > emits tool or command events when writing a file 6100ms - ✓ CodexAgentClient (SDK integration) > emits Codex tool calls that hydrate into specific UI entries 9843ms - ✓ CodexAgentClient (SDK integration) > emits distinct non-empty call ids for sequential Codex tool calls 15965ms - × CodexAgentClient (SDK integration) > hydrates persisted shell_command tool calls with completed status 10031ms - → expected undefined to be truthy - ✓ CodexAgentClient (SDK integration) > supports multiple turns within the same session 9747ms - ✓ CodexAgentClient (SDK integration) > can change modes mid-session 8538ms - ✓ CodexAgentClient (SDK integration) > resumes a session using a persistence handle 6728ms - ✓ CodexAgentClient (SDK integration) > interrupts a long-running shell command before it completes 4617ms - ↓ CodexAgentClient (SDK integration) > emits permission requests and resolves them when approvals are handled (awaiting Codex support) - ✓ CodexAgentClient (SDK integration) > hydrates user messages from persisted history 4661ms - ✓ CodexAgentClient (SDK integration) > sees agent-control MCP tools (list_agents) via codex 7258ms - ✓ isSyntheticRolloutUserMessage > flags AGENTS instruction payloads 0ms - ✓ isSyntheticRolloutUserMessage > flags environment context payloads 0ms - ✓ isSyntheticRolloutUserMessage > allows real user prompts 0ms -2025-12-25T03:41:54.472453Z ERROR codex_mcp_server::message_processor: <- error: JSONRPCError { error: JSONRPCErrorError { code: -32603, data: None, message: "[\n {\n \"code\": \"custom\",\n \"message\": \"permission call_id provided multiple times (codex_call_id, codex_mcp_tool_call_id, codex_event_id)\",\n \"path\": []\n }\n]" }, id: Integer(0), jsonrpc: "2.0" } diff --git a/tool-call-display-investigation.md b/tool-call-display-investigation.md deleted file mode 100644 index 89403e56b..000000000 --- a/tool-call-display-investigation.md +++ /dev/null @@ -1,172 +0,0 @@ -# Tool Call Display Investigation Report - -## Summary - -Investigation into why tool call inputs and outputs are not displaying properly in the Claude agent UI. - -## Findings - -### Visual Evidence - -I captured screenshots comparing standard tools vs MCP tools: - -1. **Standard Tool (Grep) - Expanded View** (`standard-tool-grep-expanded.png`): - - ✅ Shows "Result" section with full output data - - ✅ Output displays correctly as JSON: `{ "result": { "output": "Found 9 files..." } }` - -2. **MCP Tool (mcp__agent-control__list_agents) - Expanded View** (`mcp-tool-list-agents-expanded.png`): - - ✅ Shows "Result" section with full output data - - ✅ Output displays correctly with agent data: `{ "result": { "output": "{\"agents\":[...]" } }` - -### Key Discovery - -**Both standard tools AND MCP tools ARE displaying their output correctly!** - -The output data is being passed through the pipeline successfully from server → client → UI. - -## Root Cause: Missing Input Data for MCP/Server Tools - -### Location - -File: `packages/server/src/server/agent/providers/claude-agent.ts` - -### The Bug (Line 1253-1258) - -```typescript -private upsertToolUseEntry(block: ClaudeContentChunk): ToolUseCacheEntry | null { - // ... setup code ... - - if (block.type === "tool_use") { // ← BUG: Only checks for standard tools - const input = this.normalizeToolInput(block.input); - if (input) { - this.applyToolInput(existing, input); - } - } - - this.toolUseCache.set(id, existing); - return existing; -} -``` - -### Why This Is a Problem - -1. **Tool Types in the Codebase**: - - Standard tools: `block.type === "tool_use"` - - MCP tools: `block.type === "mcp_tool_use"` - - Server tools: `block.type === "server_tool_use"` - -2. **What Happens**: - - When a tool call starts (line 1003-1008), the code handles ALL three types - - But `upsertToolUseEntry` only captures input for `"tool_use"` type - - MCP and server tools skip the input capture logic entirely - - `existing.input` remains `undefined` - -3. **Impact on Display**: - - When `handleToolUseStart` is called (line 1044), it uses: - ```typescript - input: entry.input ?? this.normalizeToolInput(block.input) - ``` - - Since `entry.input` is undefined for MCP tools, it falls back to `block.input` - - However, by this point the input may not be properly normalized - -### Evidence from Code - -**Tool type handling (lines 1003-1008)**: -```typescript -case "tool_use": -case "server_tool_use": -case "mcp_tool_use": { - this.handleToolUseStart(block, items); // Handles all three types - break; -} -``` - -**Input capture logic (lines 1253-1258)** - ONLY handles `"tool_use"`: -```typescript -if (block.type === "tool_use") { - const input = this.normalizeToolInput(block.input); - if (input) { - this.applyToolInput(existing, input); - } -} -``` - -## What IS Working - -- ✅ **Output display**: Both standard and MCP tools show their output correctly -- ✅ **Tool call buttons**: All tool calls appear in the timeline -- ✅ **Tool names**: Correctly labeled (e.g., "Grep", "mcp__agent-control__list_agents") -- ✅ **Status indicators**: Success/failure states display properly - -## What Is NOT Working - -- ❌ **Input parameters for MCP tools**: Not captured in `upsertToolUseEntry` -- ❌ **Input parameters for server tools**: Not captured in `upsertToolUseEntry` - -## Recommended Fix - -Update `upsertToolUseEntry` to handle all tool types: - -```typescript -if (block.type === "tool_use" || block.type === "mcp_tool_use" || block.type === "server_tool_use") { - const input = this.normalizeToolInput(block.input); - if (input) { - this.applyToolInput(existing, input); - } -} -``` - -## Testing Methodology - -1. Created a test agent that invoked multiple tool types: - - Standard tools: Read, Write, Edit, Bash, Glob, Grep - - MCP tools: mcp__agent-control__list_agents, mcp__agent-control__create_agent - -2. Used Playwright MCP to navigate the UI and expand tool calls - -3. Captured screenshots of expanded views showing: - - Standard tool (Grep) with full Result display - - MCP tool (list_agents) with full Result display - -4. Verified both show output correctly but suspected input issue based on code analysis - -## Files Involved - -- `packages/server/src/server/agent/providers/claude-agent.ts` - Server-side tool processing -- `packages/app/src/components/message.tsx` - UI rendering (line 1282+) -- `packages/app/src/types/agent-activity.ts` - Data models -- `packages/app/src/utils/tool-call-parsers.ts` - Tool call parsing logic - -## Conclusion - -The investigation confirms that: -1. Output data IS being displayed correctly for all tool types -2. The input capture bug at line 1253 in claude-agent.ts prevents MCP and server tool inputs from being stored -3. A simple fix to check for all three tool types will resolve the input display issue - -The UI rendering components are working correctly - they just need the input data to be properly provided by the server. - -## Fix Applied - -The fix has been implemented at line 1253 in `claude-agent.ts`: - -```typescript -// BEFORE: -if (block.type === "tool_use") { - -// AFTER: -if (block.type === "tool_use" || block.type === "mcp_tool_use" || block.type === "server_tool_use") { -``` - -## Verification Required - -To verify the fix works: - -1. **Restart the server** - The voice-dev tmux session needs to be restarted for TypeScript changes to take effect -2. **Test MCP tools** - Create a new agent and invoke MCP tools like `mcp__agent-control__list_agents` -3. **Check Input display** - Expand the MCP tool calls in the UI and verify that: - - Input parameters are now visible (not just undefined) - - The Input section shows properly formatted data -4. **Compare** - Take before/after screenshots showing input data now appears - -The output was already working (as proven by screenshots), so the verification should focus on confirming that **input parameters** now display for MCP and server tools.