| 619 | } |
| 620 | |
| 621 | async function attachAgent(sdk: OpencodeClient) { |
| 622 | if (!args.agent) return undefined |
| 623 | const name = args.agent |
| 624 | |
| 625 | const modes = await sdk.app |
| 626 | .agents(undefined, { throwOnError: true }) |
| 627 | .then((x) => x.data ?? []) |
| 628 | .catch(() => undefined) |
| 629 | |
| 630 | if (!modes) { |
| 631 | UI.println( |
| 632 | UI.Style.TEXT_WARNING_BOLD + "!", |
| 633 | UI.Style.TEXT_NORMAL, |
| 634 | `failed to list agents from ${args.attach}. Falling back to default agent`, |
| 635 | ) |
| 636 | return undefined |
| 637 | } |
| 638 | |
| 639 | const agent = modes.find((a) => a.name === name) |
| 640 | if (!agent) { |
| 641 | UI.println( |
| 642 | UI.Style.TEXT_WARNING_BOLD + "!", |
| 643 | UI.Style.TEXT_NORMAL, |
| 644 | `agent "${name}" not found. Falling back to default agent`, |
| 645 | ) |
| 646 | return undefined |
| 647 | } |
| 648 | |
| 649 | if (agent.mode === "subagent") { |
| 650 | UI.println( |
| 651 | UI.Style.TEXT_WARNING_BOLD + "!", |
| 652 | UI.Style.TEXT_NORMAL, |
| 653 | `agent "${name}" is a subagent, not a primary agent. Falling back to default agent`, |
| 654 | ) |
| 655 | return undefined |
| 656 | } |
| 657 | |
| 658 | return name |
| 659 | } |
| 660 | |
| 661 | async function pickAgent(sdk: OpencodeClient) { |
| 662 | if (!args.agent) return undefined |