From 4517a0c4e005b7dc56524d01fdc69f50a917d3ae Mon Sep 17 00:00:00 2001 From: Jay Kumar Date: Sun, 19 Apr 2026 10:04:32 +0000 Subject: [PATCH] =?UTF-8?q?fix(agentapi):=20update=20tests=20and=20scripts?= =?UTF-8?q?=20for=20module=5Fdir=5Fname=20=E2=86=92=20module=5Fdirectory?= =?UTF-8?q?=20rename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace all stale $module_path references in main.sh with ${MODULE_DIRECTORY}. - Update main.test.ts: moduleDirName → moduleDirectory, pass module_directory instead of module_dir_name, fix shutdown test to use ARG_MODULE_DIRECTORY. - Remove start_script from agentapi.tftest.hcl (deleted variable). - Rename module_path → module_directory in testdata/agentapi-start.sh. --- .../modules/agentapi/agentapi.tftest.hcl | 1 - registry/coder/modules/agentapi/main.test.ts | 24 +++++++++---------- .../coder/modules/agentapi/scripts/main.sh | 12 +++++----- .../agentapi/testdata/agentapi-start.sh | 4 ++-- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/registry/coder/modules/agentapi/agentapi.tftest.hcl b/registry/coder/modules/agentapi/agentapi.tftest.hcl index 080ad208..0179d426 100644 --- a/registry/coder/modules/agentapi/agentapi.tftest.hcl +++ b/registry/coder/modules/agentapi/agentapi.tftest.hcl @@ -7,7 +7,6 @@ variables { web_app_slug = "test" cli_app_display_name = "Test CLI" cli_app_slug = "test-cli" - start_script = "echo test" } run "default_values" { diff --git a/registry/coder/modules/agentapi/main.test.ts b/registry/coder/modules/agentapi/main.test.ts index 07835851..d529f85a 100644 --- a/registry/coder/modules/agentapi/main.test.ts +++ b/registry/coder/modules/agentapi/main.test.ts @@ -44,7 +44,7 @@ interface SetupProps { moduleVariables?: Record; } -const moduleDirName = ".agentapi-module"; +const moduleDirectory = "/home/coder/.agentapi-module"; const setup = async (props?: SetupProps): Promise<{ id: string }> => { const projectDir = "/home/coder/project"; @@ -58,7 +58,7 @@ const setup = async (props?: SetupProps): Promise<{ id: string }> => { cli_app_display_name: "AgentAPI CLI", cli_app_slug: "agentapi-cli", agentapi_version: "latest", - module_dir_name: moduleDirName, + module_directory: moduleDirectory, folder: projectDir, ...props?.moduleVariables, }, @@ -78,11 +78,11 @@ const setup = async (props?: SetupProps): Promise<{ id: string }> => { await execContainer(id, [ "bash", "-c", - `mkdir -p /home/coder/${moduleDirName}/scripts`, + `mkdir -p ${moduleDirectory}/scripts`, ]); await writeExecutable({ containerId: id, - filePath: `/home/coder/${moduleDirName}/scripts/agentapi-start.sh`, + filePath: `${moduleDirectory}/scripts/agentapi-start.sh`, content: startScript, }); return { id }; @@ -295,10 +295,10 @@ describe("agentapi", async () => { "/home/coder/agentapi-mock.log", ); expect(mockLog).toContain( - `AGENTAPI_STATE_FILE: /home/coder/${moduleDirName}/agentapi-state.json`, + `AGENTAPI_STATE_FILE: ${moduleDirectory}/agentapi-state.json`, ); expect(mockLog).toContain( - `AGENTAPI_PID_FILE: /home/coder/${moduleDirName}/agentapi.pid`, + `AGENTAPI_PID_FILE: ${moduleDirectory}/agentapi.pid`, ); expect(mockLog).toContain("AGENTAPI_SAVE_STATE: true"); expect(mockLog).toContain("AGENTAPI_LOAD_STATE: true"); @@ -524,15 +524,15 @@ describe("agentapi", async () => { expect(result.stdout).toContain("Sending SIGTERM to AgentAPI"); }); - test("resolves default PID path from MODULE_DIR_NAME", async () => { + test("resolves default PID path from MODULE_DIRECTORY", async () => { const { id } = await setup({ moduleVariables: {}, skipAgentAPIMock: true, }); - // Start mock with PID file at the module_dir_name default location. - const defaultPidPath = `/home/coder/${moduleDirName}/agentapi.pid`; + // Start mock with PID file at the module_directory default location. + const defaultPidPath = `${moduleDirectory}/agentapi.pid`; await setupMocks(id, "normal", 204, defaultPidPath); - // Don't pass pidFilePath - let shutdown script compute it from MODULE_DIR_NAME. + // Don't pass pidFilePath - let shutdown script compute it from MODULE_DIRECTORY. const shutdownScript = await loadTestFile( import.meta.dir, "../scripts/agentapi-shutdown.sh", @@ -554,7 +554,7 @@ describe("agentapi", async () => { const result = await execContainer(id, [ "bash", "-c", - `ARG_TASK_ID=test-task ARG_AGENTAPI_PORT=3284 ARG_MODULE_DIR_NAME=${moduleDirName} ARG_ENABLE_STATE_PERSISTENCE=true ARG_LIB_SCRIPT_PATH=/tmp/agentapi-lib.sh CODER_AGENT_URL=http://localhost:18080 CODER_AGENT_TOKEN=test-token /tmp/shutdown.sh`, + `ARG_TASK_ID=test-task ARG_AGENTAPI_PORT=3284 ARG_MODULE_DIRECTORY=${moduleDirectory} ARG_ENABLE_STATE_PERSISTENCE=true ARG_LIB_SCRIPT_PATH=/tmp/agentapi-lib.sh CODER_AGENT_URL=http://localhost:18080 CODER_AGENT_TOKEN=test-token /tmp/shutdown.sh`, ]); expect(result.exitCode).toBe(0); @@ -568,7 +568,7 @@ describe("agentapi", async () => { skipAgentAPIMock: true, }); await setupMocks(id, "normal", 204); - // No pidFilePath and no MODULE_DIR_NAME, so no PID file can be resolved. + // No pidFilePath and no MODULE_DIRECTORY, so no PID file can be resolved. const result = await runShutdownScript(id, "test-task", "", "false"); expect(result.exitCode).toBe(0); diff --git a/registry/coder/modules/agentapi/scripts/main.sh b/registry/coder/modules/agentapi/scripts/main.sh index 0135ec0d..7e91732c 100644 --- a/registry/coder/modules/agentapi/scripts/main.sh +++ b/registry/coder/modules/agentapi/scripts/main.sh @@ -76,8 +76,8 @@ if ! command_exists agentapi; then exit 1 fi -echo -n "${WAIT_FOR_START_SCRIPT}" > "$module_path/scripts/agentapi-wait-for-start.sh" -chmod +x "$module_path/scripts/agentapi-wait-for-start.sh" +echo -n "${WAIT_FOR_START_SCRIPT}" > "${MODULE_DIRECTORY}/scripts/agentapi-wait-for-start.sh" +chmod +x "${MODULE_DIRECTORY}/scripts/agentapi-wait-for-start.sh" export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 @@ -88,18 +88,18 @@ export AGENTAPI_CHAT_BASE_PATH="${AGENTAPI_CHAT_BASE_PATH:-}" # Disable host header check since AgentAPI is proxied by Coder (which does its own validation) export AGENTAPI_ALLOWED_HOSTS="*" -export AGENTAPI_PID_FILE="${PID_FILE_PATH:-$module_path/agentapi.pid}" +export AGENTAPI_PID_FILE="${PID_FILE_PATH:-${MODULE_DIRECTORY}/agentapi.pid}" # Only set state env vars when persistence is enabled and the binary supports # it. State persistence requires agentapi >= v0.12.0. if [ "${ENABLE_STATE_PERSISTENCE}" = "true" ]; then actual_version=$(agentapi_version) if version_at_least 0.12.0 "$actual_version"; then - export AGENTAPI_STATE_FILE="${STATE_FILE_PATH:-$module_path/agentapi-state.json}" + export AGENTAPI_STATE_FILE="${STATE_FILE_PATH:-${MODULE_DIRECTORY}/agentapi-state.json}" export AGENTAPI_SAVE_STATE="true" export AGENTAPI_LOAD_STATE="true" else echo "Warning: State persistence requires agentapi >= v0.12.0 (current: ${actual_version:-unknown}), skipping." fi fi -nohup "$module_path/scripts/agentapi-start.sh" true "${AGENTAPI_PORT}" &> "$module_path/agentapi-start.log" & -"$module_path/scripts/agentapi-wait-for-start.sh" "${AGENTAPI_PORT}" +nohup "${MODULE_DIRECTORY}/scripts/agentapi-start.sh" true "${AGENTAPI_PORT}" &> "${MODULE_DIRECTORY}/agentapi-start.log" & +"${MODULE_DIRECTORY}/scripts/agentapi-wait-for-start.sh" "${AGENTAPI_PORT}" diff --git a/registry/coder/modules/agentapi/testdata/agentapi-start.sh b/registry/coder/modules/agentapi/testdata/agentapi-start.sh index 259eb0c9..01bfa8fc 100644 --- a/registry/coder/modules/agentapi/testdata/agentapi-start.sh +++ b/registry/coder/modules/agentapi/testdata/agentapi-start.sh @@ -5,8 +5,8 @@ set -o pipefail use_prompt=${1:-false} port=${2:-3284} -module_path="$HOME/.agentapi-module" -log_file_path="$module_path/agentapi.log" +module_directory="$HOME/.agentapi-module" +log_file_path="$module_directory/agentapi.log" echo "using prompt: $use_prompt" >> /home/coder/test-agentapi-start.log echo "using port: $port" >> /home/coder/test-agentapi-start.log