diff --git a/package-lock.json b/package-lock.json index a9c32df..91b75a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -294,8 +294,7 @@ "optional": true, "os": [ "win32" - ], - "peer": true + ] }, "node_modules/@oxlint/darwin-arm64": { "version": "1.22.0", @@ -2096,10 +2095,10 @@ "aikido-npx": "bin/aikido-npx.js", "aikido-pip": "bin/aikido-pip.js", "aikido-pip3": "bin/aikido-pip3.js", - "aikido-python": "bin/aikido-python.js", - "aikido-python3": "bin/aikido-python3.js", "aikido-pnpm": "bin/aikido-pnpm.js", "aikido-pnpx": "bin/aikido-pnpx.js", + "aikido-python": "bin/aikido-python.js", + "aikido-python3": "bin/aikido-python3.js", "aikido-yarn": "bin/aikido-yarn.js", "safe-chain": "bin/safe-chain.js" }, diff --git a/test/e2e/agent-mode.e2e.spec.js b/test/e2e/agent-mode.e2e.spec.js index c260e6f..afcb29e 100644 --- a/test/e2e/agent-mode.e2e.spec.js +++ b/test/e2e/agent-mode.e2e.spec.js @@ -2,20 +2,24 @@ import { describe, it, before, after } from "node:test"; import assert from "node:assert"; import { spawn } from "node:child_process"; import { existsSync, readFileSync, unlinkSync } from "node:fs"; -import { join } from "node:path"; +import { join, dirname } from "node:path"; import { homedir } from "node:os"; +import { fileURLToPath } from "node:url"; import { parseShellOutput } from "./parseShellOutput.js"; +const __dirname = dirname(fileURLToPath(import.meta.url)); +const REPO_ROOT = join(__dirname, "../.."); + const SAFE_CHAIN_BIN = join( - process.cwd(), + REPO_ROOT, "packages/safe-chain/bin/safe-chain.js" ); const AIKIDO_NPM_BIN = join( - process.cwd(), + REPO_ROOT, "packages/safe-chain/bin/aikido-npm.js" ); const AIKIDO_PIP_BIN = join( - process.cwd(), + REPO_ROOT, "packages/safe-chain/bin/aikido-pip3.js" ); const PROXY_STATE_FILE = join(homedir(), ".safe-chain/proxy-state.json"); @@ -38,12 +42,15 @@ async function startAgentMode(args = []) { const onData = (data) => { output += data.toString(); + // Strip ANSI color codes for parsing + const strippedOutput = output.replace(/\x1b\[[0-9;]*m/g, ''); + // Look for port and pid - they might arrive in separate chunks - const portMatch = output.match(/Port:\s+(\d+)/); - const pidMatch = output.match(/PID:\s+(\d+)/); + const portMatch = strippedOutput.match(/Port:\s+(\d+)/); + const pidMatch = strippedOutput.match(/PID:\s+(\d+)/); // Also check for the success checkmark as confirmation - const hasSuccess = output.includes("Safe Chain proxy started successfully"); + const hasSuccess = strippedOutput.includes("Safe Chain proxy started successfully"); if (portMatch && pidMatch && hasSuccess && !hasResolved) { hasResolved = true;