(argv)
| 760 | } |
| 761 | |
| 762 | async function handleTask(argv) { |
| 763 | const { options, positionals } = parseCommandInput(argv, { |
| 764 | valueOptions: ["model", "effort", "cwd", "prompt-file"], |
| 765 | booleanOptions: ["json", "write", "resume-last", "resume", "fresh", "background"], |
| 766 | aliasMap: { |
| 767 | m: "model" |
| 768 | } |
| 769 | }); |
| 770 | |
| 771 | const cwd = resolveCommandCwd(options); |
| 772 | const workspaceRoot = resolveCommandWorkspace(options); |
| 773 | const model = normalizeRequestedModel(options.model); |
| 774 | const effort = normalizeReasoningEffort(options.effort); |
| 775 | const prompt = readTaskPrompt(cwd, options, positionals); |
| 776 | |
| 777 | const resumeLast = Boolean(options["resume-last"] || options.resume); |
| 778 | const fresh = Boolean(options.fresh); |
| 779 | if (resumeLast && fresh) { |
| 780 | throw new Error("Choose either --resume/--resume-last or --fresh."); |
| 781 | } |
| 782 | const write = Boolean(options.write); |
| 783 | const taskMetadata = buildTaskRunMetadata({ |
| 784 | prompt, |
| 785 | resumeLast |
| 786 | }); |
| 787 | |
| 788 | if (options.background) { |
| 789 | ensureCodexAvailable(cwd); |
| 790 | requireTaskRequest(prompt, resumeLast); |
| 791 | |
| 792 | const job = buildTaskJob(workspaceRoot, taskMetadata, write); |
| 793 | const request = buildTaskRequest({ |
| 794 | cwd, |
| 795 | model, |
| 796 | effort, |
| 797 | prompt, |
| 798 | write, |
| 799 | resumeLast, |
| 800 | jobId: job.id |
| 801 | }); |
| 802 | const { payload } = enqueueBackgroundTask(cwd, job, request); |
| 803 | outputCommandResult(payload, renderQueuedTaskLaunch(payload), options.json); |
| 804 | return; |
| 805 | } |
| 806 | |
| 807 | const job = buildTaskJob(workspaceRoot, taskMetadata, write); |
| 808 | await runForegroundCommand( |
| 809 | job, |
| 810 | (progress) => |
| 811 | executeTaskRun({ |
| 812 | cwd, |
| 813 | model, |
| 814 | effort, |
| 815 | prompt, |
| 816 | write, |
| 817 | resumeLast, |
| 818 | jobId: job.id, |
| 819 | onProgress: progress |
no test coverage detected