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 <noreply@anthropic.com>
This commit is contained in:
2026-03-07 21:12:05 +00:00
parent ca7ae930cc
commit 507eb7584d
3 changed files with 15 additions and 21 deletions

View File

@@ -1,11 +1,12 @@
#!/usr/bin/env node #!/usr/bin/env node
import blessed from 'blessed'; import blessed from 'blessed';
import { load_client_config } from '../client/config.mjs'; 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 POLL_INTERVAL = 2000;
const { username, secret } = load_client_config(process.argv); const { username, secret } = load_client_config(process.argv);
const client = create_conduit_client(username, secret);
const screen = blessed.screen({ const screen = blessed.screen({
smartCSR: true, smartCSR: true,
@@ -118,7 +119,7 @@ function render_list() {
async function refresh() { async function refresh() {
try { try {
items = await get_queue(username, secret); items = await client.get_queue();
render_list(); render_list();
set_status(`Last refresh: ${new Date().toLocaleTimeString()}`); set_status(`Last refresh: ${new Date().toLocaleTimeString()}`);
} catch (err) { } catch (err) {
@@ -135,7 +136,7 @@ async function decide(decision) {
} }
set_status(`Sending ${decision} for ${item.id.slice(0, 8)}`); set_status(`Sending ${decision} for ${item.id.slice(0, 8)}`);
try { try {
await resolve_queue_item(item.id, decision, username, secret); await client.resolve_queue_item(item.id, decision);
await refresh(); await refresh();
} catch (err) { } catch (err) {
set_status(`Failed: ${err.message}`, true); set_status(`Failed: ${err.message}`, true);

View File

@@ -26,10 +26,18 @@ export function create_conduit_client(username, secret) {
async function get_queue() { async function get_queue() {
const res = await fetch(`${BASE_URL}/queue`, { const res = await fetch(`${BASE_URL}/queue`, {
headers: auth_headers(""), headers: auth_headers(''),
}); });
return res.json(); 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 };
} }

View File

@@ -9,7 +9,7 @@ import { load_client_config, get_remaining } from './config.mjs';
const BASE_URL = process.env.CONDUIT_URL || 'http://localhost:3015'; 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 body_string = JSON.stringify(payload);
const res = await fetch(`${BASE_URL}/action`, { const res = await fetch(`${BASE_URL}/action`, {
method: 'POST', method: 'POST',
@@ -20,21 +20,6 @@ export async function call_action(payload, username, secret) {
return { status: res.status, body }; 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() { async function main() {
const { username, secret } = load_client_config(process.argv); const { username, secret } = load_client_config(process.argv);
const remaining = get_remaining(process.argv); const remaining = get_remaining(process.argv);