(args: Args)
| 15686 | } |
| 15687 | |
| 15688 | function planCommand(args: Args): void { |
| 15689 | repoFromArgs(args); |
| 15690 | const itemsDir = resolve(stringArg(args.items_dir, defaultItemsDir())); |
| 15691 | const batchSize = numberArg(args.batch_size, DEFAULT_PLAN_BATCH_SIZE); |
| 15692 | const maxPages = numberArg(args.max_pages, 250); |
| 15693 | const shardCount = numberArg(args.shard_count, DEFAULT_PLAN_SHARD_COUNT); |
| 15694 | const minimumActiveShards = numberArg(args.min_active_shards, 0); |
| 15695 | const minimumBackfillReviewAgeMs = |
| 15696 | numberArg(args.min_backfill_review_age_minutes, DEFAULT_BACKFILL_REVIEW_AGE_MINUTES) * |
| 15697 | 60 * |
| 15698 | 1000; |
| 15699 | const itemNumbers = itemNumbersArg(args.item_numbers, args.item_number); |
| 15700 | const hasItemNumbersInput = typeof args.item_numbers === "string" && args.item_numbers.trim(); |
| 15701 | const hotIntake = boolArg(args.hot_intake); |
| 15702 | const model = stringArg(args.codex_model, DEFAULT_CODEX_MODEL); |
| 15703 | const reasoningEffort = stringArg(args.codex_reasoning_effort, DEFAULT_REASONING_EFFORT); |
| 15704 | const sandboxMode = stringArg(args.codex_sandbox, "read-only"); |
| 15705 | const serviceTier = stringArg(args.codex_service_tier, DEFAULT_SERVICE_TIER); |
| 15706 | const reviewPolicy = reviewPolicyHash({ model, reasoningEffort, sandboxMode, serviceTier }); |
| 15707 | const planOptions: Parameters<typeof planCandidates>[0] = { |
| 15708 | batchSize, |
| 15709 | maxPages, |
| 15710 | shardCount, |
| 15711 | itemsDir, |
| 15712 | reviewPolicy, |
| 15713 | minimumActiveShards, |
| 15714 | minimumBackfillReviewAgeMs, |
| 15715 | }; |
| 15716 | if (hasItemNumbersInput || itemNumbers.length > 0) planOptions.itemNumbers = itemNumbers; |
| 15717 | if (hotIntake) planOptions.hotIntake = true; |
| 15718 | const plan = planCandidates(planOptions); |
| 15719 | console.log( |
| 15720 | JSON.stringify( |
| 15721 | { |
| 15722 | ...plan, |
| 15723 | reviewPolicy, |
| 15724 | matrix: plan.shards.map((shard) => ({ |
| 15725 | shard: shard.shard, |
| 15726 | item_numbers: shard.itemNumbers.join(",") || "none", |
| 15727 | })), |
| 15728 | }, |
| 15729 | null, |
| 15730 | 2, |
| 15731 | ), |
| 15732 | ); |
| 15733 | } |
| 15734 | |
| 15735 | function reviewCommand(args: Args): void { |
| 15736 | const profile = repoFromArgs(args); |
no test coverage detected