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:
@@ -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);
|
||||||
|
|||||||
@@ -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 };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user