#!/usr/bin/env node import { execFile } from 'node:child_process'; import { promisify } from 'node:util'; const execFileAsync = promisify(execFile); function parseArgs(argv) { const out = {}; for (let i = 0; i < argv.length; i += 1) { const token = argv[i]; if (!token.startsWith('--')) continue; const key = token.slice(2); const next = argv[i + 1]; if (!next || next.startsWith('--')) { out[key] = 'true'; continue; } out[key] = next; i += 1; } return out; } function required(args, key) { const value = args[key]; if (!value || !String(value).trim()) { throw new Error(`missing_required_arg: --${key}`); } return String(value).trim(); } async function main() { const args = parseArgs(process.argv.slice(2)); const action = { action: 'sin.github.issue.comment.as_app', agentSlug: required(args, 'agent'), repo: required(args, 'repo'), issueNumber: Number(required(args, 'issue-number')), installationId: Number(required(args, 'installation-id')), body: required(args, 'body'), }; if (!Number.isFinite(action.issueNumber) || !Number.isFinite(action.installationId)) { throw new Error('invalid_numeric_args: --issue-number and --installation-id must be numbers'); } const { stdout } = await execFileAsync('node', ['dist/src/cli.js', 'run-action', JSON.stringify(action)], { cwd: process.cwd(), }); process.stdout.write(stdout); } main().catch((error) => { console.error(error instanceof Error ? error.message : String(error)); process.exit(1); });