Spaces:
Sleeping
Sleeping
| 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); | |
| }); | |