// =============================================================================
// Sub-agent orchestration tool registrations. Logic lives in ./agent-api.ts.
// =============================================================================

import { registerTool } from './registry';
import * as api from './agent-api';

function runnerUrl(): string {
    return process.env.AGENT_RUNNER_URL || 'http://localhost:3333';
}

registerTool({
    name: 'spawn_agent',
    description: 'Dispatch a sub-agent job to run in the background. Returns a job ID. Use this to delegate specialized work to Coder, PM, or Marketing agents.',
    parameters: {
        type: 'object',
        properties: {
            agent: { type: 'string', description: '"Coder", "PM", or "Marketing"' },
            task: { type: 'string', description: 'Detailed task description for the agent' },
            repo: { type: 'string', description: 'Gitea repo in "owner/name" format the agent should work on' }
        },
        required: ['agent', 'task', 'repo']
    },
    async handler(args, _ctx) {
        return api.spawnAgent(
            { runnerUrl: runnerUrl() },
            { agent: String(args.agent), task: String(args.task), repo: String(args.repo) },
        );
    }
});

registerTool({
    name: 'get_job_status',
    description: 'Check the status of a previously spawned agent job by job ID.',
    parameters: {
        type: 'object',
        properties: {
            job_id: { type: 'string', description: 'Job ID returned by spawn_agent' }
        },
        required: ['job_id']
    },
    async handler(args, _ctx) {
        return api.getJobStatus({ runnerUrl: runnerUrl() }, String(args.job_id));
    }
});
