From 507eb7584d1ad9395db2f4564e35aa2e9be0a1ca Mon Sep 17 00:00:00 2001 From: mikael-lovqvists-claude-agent Date: Sat, 7 Mar 2026 21:12:05 +0000 Subject: [PATCH] Fix ccc-queue triggering client main() on import Move resolve_queue_item into conduit.mjs factory and have ccc-queue import from there instead of index.mjs, which auto-executes main(). Co-Authored-By: Claude Sonnet 4.6 --- bin/ccc-queue.mjs | 7 ++++--- client/conduit.mjs | 12 ++++++++++-- client/index.mjs | 17 +---------------- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/bin/ccc-queue.mjs b/bin/ccc-queue.mjs index 951166a..cdf58ff 100755 --- a/bin/ccc-queue.mjs +++ b/bin/ccc-queue.mjs @@ -1,11 +1,12 @@ #!/usr/bin/env node import blessed from 'blessed'; import { load_client_config } from '../client/config.mjs'; -import { get_queue, resolve_queue_item } from '../client/index.mjs'; +import { create_conduit_client } from '../client/conduit.mjs'; const POLL_INTERVAL = 2000; const { username, secret } = load_client_config(process.argv); +const client = create_conduit_client(username, secret); const screen = blessed.screen({ smartCSR: true, @@ -118,7 +119,7 @@ function render_list() { async function refresh() { try { - items = await get_queue(username, secret); + items = await client.get_queue(); render_list(); set_status(`Last refresh: ${new Date().toLocaleTimeString()}`); } catch (err) { @@ -135,7 +136,7 @@ async function decide(decision) { } set_status(`Sending ${decision} for ${item.id.slice(0, 8)}…`); try { - await resolve_queue_item(item.id, decision, username, secret); + await client.resolve_queue_item(item.id, decision); await refresh(); } catch (err) { set_status(`Failed: ${err.message}`, true); diff --git a/client/conduit.mjs b/client/conduit.mjs index 2c1e010..63e0954 100644 --- a/client/conduit.mjs +++ b/client/conduit.mjs @@ -26,10 +26,18 @@ export function create_conduit_client(username, secret) { async function get_queue() { const res = await fetch(`${BASE_URL}/queue`, { - headers: auth_headers(""), + headers: auth_headers(''), }); return res.json(); } - return { call_action, list_actions, get_queue }; + async function resolve_queue_item(id, decision) { + const res = await fetch(`${BASE_URL}/queue/${id}/${decision}`, { + method: 'POST', + headers: auth_headers(''), + }); + return res.json(); + } + + return { call_action, list_actions, get_queue, resolve_queue_item }; } diff --git a/client/index.mjs b/client/index.mjs index 9882f1e..8a6b64b 100644 --- a/client/index.mjs +++ b/client/index.mjs @@ -9,7 +9,7 @@ import { load_client_config, get_remaining } from './config.mjs'; const BASE_URL = process.env.CONDUIT_URL || 'http://localhost:3015'; -export async function call_action(payload, username, secret) { +async function call_action(payload, username, secret) { const body_string = JSON.stringify(payload); const res = await fetch(`${BASE_URL}/action`, { method: 'POST', @@ -20,21 +20,6 @@ export async function call_action(payload, username, secret) { return { status: res.status, body }; } -export async function get_queue(username, secret) { - const res = await fetch(`${BASE_URL}/queue`, { - headers: sign_request(secret, username, ''), - }); - return res.json(); -} - -export async function resolve_queue_item(id, decision, username, secret) { - const res = await fetch(`${BASE_URL}/queue/${id}/${decision}`, { - method: 'POST', - headers: sign_request(secret, username, ''), - }); - return res.json(); -} - async function main() { const { username, secret } = load_client_config(process.argv); const remaining = get_remaining(process.argv);