@blogic-cz/agent-tools 1.4.2 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/az-tool/config.d.ts.map +1 -1
  2. package/dist/az-tool/profile.d.ts.map +1 -1
  3. package/dist/az-tool/service.d.ts +2 -2
  4. package/dist/azdo-tool/build.d.ts +8 -8
  5. package/dist/azdo-tool/config.d.ts.map +1 -1
  6. package/dist/azdo-tool/service.d.ts +2 -2
  7. package/dist/credential-guard/index.d.ts.map +1 -1
  8. package/dist/db-tool/schema.d.ts.map +1 -1
  9. package/dist/db-tool/service.d.ts +1 -1
  10. package/dist/db-tool/sql-client.d.ts.map +1 -1
  11. package/dist/gh-tool/api.d.ts.map +1 -1
  12. package/dist/gh-tool/config.d.ts.map +1 -1
  13. package/dist/gh-tool/gist.d.ts.map +1 -1
  14. package/dist/gh-tool/issue/commands.d.ts +1 -1
  15. package/dist/gh-tool/issue/triage.d.ts +1 -1
  16. package/dist/gh-tool/issue/triage.d.ts.map +1 -1
  17. package/dist/gh-tool/pr/commands.d.ts +10 -10
  18. package/dist/gh-tool/pr/commands.d.ts.map +1 -1
  19. package/dist/gh-tool/pr/core.d.ts +19 -19
  20. package/dist/gh-tool/pr/core.d.ts.map +1 -1
  21. package/dist/gh-tool/pr/stack.d.ts +13 -13
  22. package/dist/gh-tool/repo.d.ts +1 -1
  23. package/dist/gh-tool/service.d.ts +1 -1
  24. package/dist/gh-tool/text-input.d.ts.map +1 -1
  25. package/dist/gh-tool/workflow.d.ts +7 -7
  26. package/dist/gh-tool/workflow.d.ts.map +1 -1
  27. package/dist/k8s-tool/context.d.ts.map +1 -1
  28. package/dist/k8s-tool/security.d.ts.map +1 -1
  29. package/dist/k8s-tool/service.d.ts +2 -2
  30. package/dist/logs-tool/index.d.ts +1 -1
  31. package/dist/logs-tool/index.d.ts.map +1 -1
  32. package/dist/logs-tool/service.d.ts.map +1 -1
  33. package/dist/observability-tool/shared.d.ts.map +1 -1
  34. package/dist/session-tool/claude-code.d.ts.map +1 -1
  35. package/dist/session-tool/codex.d.ts +3 -1
  36. package/dist/session-tool/codex.d.ts.map +1 -1
  37. package/dist/session-tool/index.d.ts +1 -1
  38. package/dist/session-tool/index.d.ts.map +1 -1
  39. package/dist/session-tool/pi.d.ts.map +1 -1
  40. package/dist/session-tool/service.d.ts.map +1 -1
  41. package/dist/session-tool/summaries.d.ts.map +1 -1
  42. package/dist/session-tool/types.d.ts.map +1 -1
  43. package/dist/shared/audit.d.ts.map +1 -1
  44. package/dist/shared/azure-credentials.d.ts.map +1 -1
  45. package/dist/shared/binary-preflight.d.ts.map +1 -1
  46. package/dist/shared/cli.d.ts.map +1 -1
  47. package/dist/shared/error-renderer.d.ts.map +1 -1
  48. package/dist/shared/exec.d.ts.map +1 -1
  49. package/dist/shared/format.d.ts.map +1 -1
  50. package/dist/shared/path.d.ts.map +1 -1
  51. package/dist/shared/poll-until-resolved.d.ts.map +1 -1
  52. package/dist/shared/prerequisites/driver-commands.d.ts.map +1 -1
  53. package/dist/shared/prerequisites/errors.d.ts.map +1 -1
  54. package/dist/shared/prerequisites/guardian.d.ts.map +1 -1
  55. package/dist/shared/prerequisites/runtime.d.ts.map +1 -1
  56. package/dist/shared/prerequisites/store.d.ts.map +1 -1
  57. package/dist/shared/retry-transient.d.ts.map +1 -1
  58. package/dist/shared/schema-dump.d.ts.map +1 -1
  59. package/dist/shared/throttle.d.ts.map +1 -1
  60. package/package.json +13 -13
  61. package/src/audit-tool/index.ts +4 -4
  62. package/src/az-tool/index.ts +4 -4
  63. package/src/azdo-tool/index.ts +11 -11
  64. package/src/credential-guard/index.ts +54 -15
  65. package/src/db-tool/index.ts +12 -12
  66. package/src/gh-tool/branch.ts +4 -4
  67. package/src/gh-tool/gist.ts +20 -20
  68. package/src/gh-tool/issue/commands.ts +33 -33
  69. package/src/gh-tool/issue/triage.ts +5 -5
  70. package/src/gh-tool/pr/commands.ts +108 -112
  71. package/src/gh-tool/pr/core.ts +4 -6
  72. package/src/gh-tool/release.ts +30 -30
  73. package/src/gh-tool/repo.ts +7 -7
  74. package/src/gh-tool/workflow.ts +24 -24
  75. package/src/k8s-tool/index.ts +21 -21
  76. package/src/logs-tool/index.ts +7 -10
  77. package/src/logs-tool/transformers.ts +1 -1
  78. package/src/observability-tool/logs.ts +4 -4
  79. package/src/observability-tool/metrics.ts +4 -4
  80. package/src/observability-tool/shared.ts +2 -2
  81. package/src/observability-tool/trace.ts +10 -10
  82. package/src/session-tool/index.ts +8 -14
  83. package/src/shared/format.ts +1 -1
  84. package/src/shared/log-transform.ts +1 -1
@@ -70,7 +70,7 @@ import {
70
70
  // CLI Commands
71
71
  // ---------------------------------------------------------------------------
72
72
 
73
- const repoOption = Flag.string("repo").pipe(
73
+ const repoOption = Flag.String("repo").pipe(
74
74
  Flag.withDescription("Target repository profile name or owner/name"),
75
75
  Flag.optional,
76
76
  );
@@ -460,11 +460,11 @@ export const prViewCommand = Command.make(
460
460
  "view",
461
461
  {
462
462
  format: formatOption,
463
- pr: Flag.integer("pr").pipe(
463
+ pr: Flag.Int("pr").pipe(
464
464
  Flag.withDescription("PR number (default: current branch PR)"),
465
465
  Flag.optional,
466
466
  ),
467
- prs: Flag.string("prs").pipe(
467
+ prs: Flag.String("prs").pipe(
468
468
  Flag.withDescription("Comma-separated PR numbers to view in one call (overrides --pr)"),
469
469
  Flag.optional,
470
470
  ),
@@ -511,21 +511,21 @@ export const prListCommand = Command.make(
511
511
  "list",
512
512
  {
513
513
  format: formatOption,
514
- state: Flag.choice("state", ["open", "closed", "merged", "all"]).pipe(
514
+ state: Flag.Literals("state", ["open", "closed", "merged", "all"]).pipe(
515
515
  Flag.withDescription("Filter by state: open, closed, merged, all"),
516
516
  Flag.withDefault("open"),
517
517
  ),
518
- author: Flag.string("author").pipe(
518
+ author: Flag.String("author").pipe(
519
519
  Flag.withDescription("Filter by author login (use @me for yourself)"),
520
520
  Flag.optional,
521
521
  ),
522
- base: Flag.string("base").pipe(Flag.withDescription("Filter by base branch"), Flag.optional),
523
- head: Flag.string("head").pipe(Flag.withDescription("Filter by head branch"), Flag.optional),
524
- search: Flag.string("search").pipe(
522
+ base: Flag.String("base").pipe(Flag.withDescription("Filter by base branch"), Flag.optional),
523
+ head: Flag.String("head").pipe(Flag.withDescription("Filter by head branch"), Flag.optional),
524
+ search: Flag.String("search").pipe(
525
525
  Flag.withDescription("GitHub search query (e.g. 'review:required')"),
526
526
  Flag.optional,
527
527
  ),
528
- limit: Flag.integer("limit").pipe(
528
+ limit: Flag.Int("limit").pipe(
529
529
  Flag.withDescription("Maximum number of PRs to return"),
530
530
  Flag.withDefault(30),
531
531
  ),
@@ -556,11 +556,11 @@ export const prWaitMergeableCommand = Command.make(
556
556
  "wait-mergeable",
557
557
  {
558
558
  format: formatOption,
559
- pr: Flag.integer("pr").pipe(
559
+ pr: Flag.Int("pr").pipe(
560
560
  Flag.withDescription("PR number (default: current branch PR)"),
561
561
  Flag.optional,
562
562
  ),
563
- timeout: Flag.integer("timeout").pipe(
563
+ timeout: Flag.Int("timeout").pipe(
564
564
  Flag.withDescription(
565
565
  "Max seconds to wait for a definitive mergeable verdict (capped at 180)",
566
566
  ),
@@ -585,30 +585,30 @@ export const prWaitMergeableCommand = Command.make(
585
585
  export const prCreateCommand = Command.make(
586
586
  "create",
587
587
  {
588
- base: Flag.string("base").pipe(
588
+ base: Flag.String("base").pipe(
589
589
  Flag.withDescription("Base branch for the PR (default: repository default branch)"),
590
590
  Flag.optional,
591
591
  ),
592
- body: Flag.string("body").pipe(Flag.withDescription("PR body/description"), Flag.optional),
593
- bodyFile: Flag.string("body-file").pipe(
592
+ body: Flag.String("body").pipe(Flag.withDescription("PR body/description"), Flag.optional),
593
+ bodyFile: Flag.String("body-file").pipe(
594
594
  Flag.withDescription("Read PR body from a file path or '-' for stdin"),
595
595
  Flag.optional,
596
596
  ),
597
- bodyStdin: Flag.boolean("body-stdin").pipe(
597
+ bodyStdin: Flag.Boolean("body-stdin").pipe(
598
598
  Flag.withDescription("Read PR body from stdin"),
599
599
  Flag.withDefault(false),
600
600
  ),
601
- draft: Flag.boolean("draft").pipe(
601
+ draft: Flag.Boolean("draft").pipe(
602
602
  Flag.withDescription("Create as draft PR"),
603
603
  Flag.withDefault(false),
604
604
  ),
605
605
  format: formatOption,
606
- head: Flag.string("head").pipe(
606
+ head: Flag.String("head").pipe(
607
607
  Flag.withDescription("Source branch name (required in GitButler workspace mode)"),
608
608
  Flag.optional,
609
609
  ),
610
610
  repo: repoOption,
611
- title: Flag.string("title").pipe(Flag.withDescription("PR title")),
611
+ title: Flag.String("title").pipe(Flag.withDescription("PR title")),
612
612
  },
613
613
  ({ base, body, bodyFile, bodyStdin, draft, format, head, repo, title }) =>
614
614
  withRepo(
@@ -641,20 +641,20 @@ export const prCreateCommand = Command.make(
641
641
  export const prEditCommand = Command.make(
642
642
  "edit",
643
643
  {
644
- base: Flag.string("base").pipe(Flag.withDescription("New base branch"), Flag.optional),
645
- body: Flag.string("body").pipe(Flag.withDescription("New PR body/description"), Flag.optional),
646
- bodyFile: Flag.string("body-file").pipe(
644
+ base: Flag.String("base").pipe(Flag.withDescription("New base branch"), Flag.optional),
645
+ body: Flag.String("body").pipe(Flag.withDescription("New PR body/description"), Flag.optional),
646
+ bodyFile: Flag.String("body-file").pipe(
647
647
  Flag.withDescription("Read PR body from a file path or '-' for stdin"),
648
648
  Flag.optional,
649
649
  ),
650
- bodyStdin: Flag.boolean("body-stdin").pipe(
650
+ bodyStdin: Flag.Boolean("body-stdin").pipe(
651
651
  Flag.withDescription("Read PR body from stdin"),
652
652
  Flag.withDefault(false),
653
653
  ),
654
654
  format: formatOption,
655
- pr: Flag.integer("pr").pipe(Flag.withDescription("PR number to edit")),
655
+ pr: Flag.Int("pr").pipe(Flag.withDescription("PR number to edit")),
656
656
  repo: repoOption,
657
- title: Flag.string("title").pipe(Flag.withDescription("New PR title"), Flag.optional),
657
+ title: Flag.String("title").pipe(Flag.withDescription("New PR title"), Flag.optional),
658
658
  },
659
659
  ({ base, body, bodyFile, bodyStdin, format, pr, repo, title }) =>
660
660
  withRepo(
@@ -685,20 +685,20 @@ export const prEditCommand = Command.make(
685
685
  export const prCloseCommand = Command.make(
686
686
  "close",
687
687
  {
688
- comment: Flag.string("comment").pipe(
688
+ comment: Flag.String("comment").pipe(
689
689
  Flag.withDescription("Comment to add when closing"),
690
690
  Flag.optional,
691
691
  ),
692
- commentFile: Flag.string("comment-file").pipe(
692
+ commentFile: Flag.String("comment-file").pipe(
693
693
  Flag.withDescription("Read close comment from a file path or '-' for stdin"),
694
694
  Flag.optional,
695
695
  ),
696
- deleteBranch: Flag.boolean("delete-branch").pipe(
696
+ deleteBranch: Flag.Boolean("delete-branch").pipe(
697
697
  Flag.withDescription("Delete the branch after closing"),
698
698
  Flag.withDefault(false),
699
699
  ),
700
700
  format: formatOption,
701
- pr: Flag.integer("pr").pipe(Flag.withDescription("PR number to close")),
701
+ pr: Flag.Int("pr").pipe(Flag.withDescription("PR number to close")),
702
702
  repo: repoOption,
703
703
  },
704
704
  ({ comment, commentFile, deleteBranch, format, pr, repo }) =>
@@ -727,20 +727,20 @@ export const prCloseCommand = Command.make(
727
727
  export const prMergeCommand = Command.make(
728
728
  "merge",
729
729
  {
730
- confirm: Flag.boolean("confirm").pipe(
730
+ confirm: Flag.Boolean("confirm").pipe(
731
731
  Flag.withDescription("Actually merge (without this flag, only shows dry-run)"),
732
732
  Flag.withDefault(false),
733
733
  ),
734
- deleteBranch: Flag.boolean("delete-branch").pipe(
734
+ deleteBranch: Flag.Boolean("delete-branch").pipe(
735
735
  Flag.withDescription(
736
736
  "Delete the remote branch after merge (local/worktree cleanup is separate)",
737
737
  ),
738
738
  Flag.withDefault(DEFAULT_DELETE_BRANCH),
739
739
  ),
740
740
  format: formatOption,
741
- pr: Flag.integer("pr").pipe(Flag.withDescription("PR number to merge")),
741
+ pr: Flag.Int("pr").pipe(Flag.withDescription("PR number to merge")),
742
742
  repo: repoOption,
743
- strategy: Flag.choice("strategy", MERGE_STRATEGIES).pipe(
743
+ strategy: Flag.Literals("strategy", MERGE_STRATEGIES).pipe(
744
744
  Flag.withDescription("Merge strategy: squash, merge, or rebase"),
745
745
  Flag.withDefault(DEFAULT_MERGE_STRATEGY),
746
746
  ),
@@ -764,7 +764,7 @@ export const prReadyCommand = Command.make(
764
764
  "ready",
765
765
  {
766
766
  format: formatOption,
767
- pr: Flag.integer("pr").pipe(
767
+ pr: Flag.Int("pr").pipe(
768
768
  Flag.withDescription("PR number (default: current branch PR)"),
769
769
  Flag.optional,
770
770
  ),
@@ -787,21 +787,21 @@ export const prReadyCommand = Command.make(
787
787
  export const prChecksCommand = Command.make(
788
788
  "checks",
789
789
  {
790
- failFast: Flag.boolean("fail-fast").pipe(
790
+ failFast: Flag.Boolean("fail-fast").pipe(
791
791
  Flag.withDefault(true),
792
792
  Flag.withDescription("Stop watching on first failure (with --watch)"),
793
793
  ),
794
794
  format: formatOption,
795
- pr: Flag.integer("pr").pipe(
795
+ pr: Flag.Int("pr").pipe(
796
796
  Flag.withDescription("PR number (default: current branch PR)"),
797
797
  Flag.optional,
798
798
  ),
799
- prs: Flag.string("prs").pipe(
799
+ prs: Flag.String("prs").pipe(
800
800
  Flag.withDescription("Comma-separated PR numbers for a one-shot batch snapshot (no --watch)"),
801
801
  Flag.optional,
802
802
  ),
803
803
  repo: repoOption,
804
- timeout: Flag.integer("timeout").pipe(
804
+ timeout: Flag.Int("timeout").pipe(
805
805
  Flag.withDefault(CI_CHECK_WATCH_TIMEOUT_MS / 1000),
806
806
  Flag.withDescription("Timeout in seconds for watch mode (default: 600, minimum 1)"),
807
807
  Flag.filter(
@@ -809,7 +809,7 @@ export const prChecksCommand = Command.make(
809
809
  () => "--timeout must be at least 1 second",
810
810
  ),
811
811
  ),
812
- watch: Flag.boolean("watch").pipe(
812
+ watch: Flag.Boolean("watch").pipe(
813
813
  Flag.withDefault(false),
814
814
  Flag.withDescription("Watch until checks complete or timeout"),
815
815
  ),
@@ -859,12 +859,12 @@ export const prChecksFailedCommand = Command.make(
859
859
  "checks-failed",
860
860
  {
861
861
  format: formatOption,
862
- pr: Flag.integer("pr").pipe(
862
+ pr: Flag.Int("pr").pipe(
863
863
  Flag.withDescription("PR number (default: current branch PR)"),
864
864
  Flag.optional,
865
865
  ),
866
866
  repo: repoOption,
867
- withLogs: Flag.boolean("with-logs").pipe(
867
+ withLogs: Flag.Boolean("with-logs").pipe(
868
868
  Flag.withDescription(
869
869
  "Inline the failed-step logs for each failed check so no follow-up job-logs call is needed",
870
870
  ),
@@ -885,17 +885,17 @@ export const prChecksFailedCommand = Command.make(
885
885
  export const prWatchCommand = Command.make(
886
886
  "watch",
887
887
  {
888
- prs: Flag.string("prs").pipe(Flag.withDescription("Comma-separated PR numbers")),
889
- until: Flag.choice("until", ["terminal"]).pipe(Flag.withDefault("terminal")),
890
- format: Flag.choice("format", ["jsonl"]).pipe(Flag.withDefault("jsonl")),
891
- interval: Flag.integer("interval").pipe(
888
+ prs: Flag.String("prs").pipe(Flag.withDescription("Comma-separated PR numbers")),
889
+ until: Flag.Literals("until", ["terminal"]).pipe(Flag.withDefault("terminal")),
890
+ format: Flag.Literals("format", ["jsonl"]).pipe(Flag.withDefault("jsonl")),
891
+ interval: Flag.Int("interval").pipe(
892
892
  Flag.withDefault(5),
893
893
  Flag.filter(
894
894
  (n) => n >= 1 && n <= 60,
895
895
  () => "--interval must be 1..60 seconds",
896
896
  ),
897
897
  ),
898
- timeout: Flag.integer("timeout").pipe(
898
+ timeout: Flag.Int("timeout").pipe(
899
899
  Flag.withDefault(CI_CHECK_WATCH_TIMEOUT_MS / 1000),
900
900
  Flag.filter(
901
901
  (n) => n >= 1,
@@ -922,17 +922,17 @@ export const prRerunChecksCommand = Command.make(
922
922
  "rerun-checks",
923
923
  {
924
924
  format: formatOption,
925
- pr: Flag.integer("pr").pipe(
925
+ pr: Flag.Int("pr").pipe(
926
926
  Flag.withDescription("PR number (default: current branch PR)"),
927
927
  Flag.optional,
928
928
  ),
929
929
  repo: repoOption,
930
- failedOnly: Flag.boolean("failed-only").pipe(
930
+ failedOnly: Flag.Boolean("failed-only").pipe(
931
931
  Flag.withDefault(true),
932
932
  Flag.withDescription("Only rerun failed checks (default: true)"),
933
933
  ),
934
- watch: Flag.boolean("watch").pipe(Flag.withDefault(false)),
935
- timeout: Flag.integer("timeout").pipe(
934
+ watch: Flag.Boolean("watch").pipe(Flag.withDefault(false)),
935
+ timeout: Flag.Int("timeout").pipe(
936
936
  Flag.withDefault(60),
937
937
  Flag.filter(
938
938
  (n) => n >= 1,
@@ -960,18 +960,18 @@ export const prTriggerChecksCommand = Command.make(
960
960
  "trigger-checks",
961
961
  {
962
962
  field: Param.variadic(
963
- Param.string(Param.flagKind, "field").pipe(
963
+ Param.String(Param.flagKind, "field").pipe(
964
964
  Param.withAlias("f"),
965
965
  Param.withDescription("Workflow input as key=value; may be repeated"),
966
966
  ),
967
967
  ),
968
968
  format: formatOption,
969
- pr: Flag.integer("pr").pipe(
969
+ pr: Flag.Int("pr").pipe(
970
970
  Flag.withDescription("PR number (default: current branch PR)"),
971
971
  Flag.optional,
972
972
  ),
973
973
  repo: repoOption,
974
- workflow: Flag.string("workflow").pipe(
974
+ workflow: Flag.String("workflow").pipe(
975
975
  Flag.withDescription("workflow_dispatch workflow file to run against the PR head branch"),
976
976
  ),
977
977
  },
@@ -993,16 +993,16 @@ export const prThreadsCommand = Command.make(
993
993
  "threads",
994
994
  {
995
995
  format: formatOption,
996
- pr: Flag.integer("pr").pipe(
996
+ pr: Flag.Int("pr").pipe(
997
997
  Flag.withDescription("PR number (default: current branch PR)"),
998
998
  Flag.optional,
999
999
  ),
1000
1000
  repo: repoOption,
1001
- unresolvedOnly: Flag.boolean("unresolved-only").pipe(
1001
+ unresolvedOnly: Flag.Boolean("unresolved-only").pipe(
1002
1002
  Flag.withDescription("Only show unresolved threads"),
1003
1003
  Flag.withDefault(true),
1004
1004
  ),
1005
- visibleOpenOnly: Flag.boolean("visible-open-only").pipe(
1005
+ visibleOpenOnly: Flag.Boolean("visible-open-only").pipe(
1006
1006
  Flag.withDescription(
1007
1007
  "Show threads that still look open to humans: unresolved threads plus resolved threads with no reply",
1008
1008
  ),
@@ -1028,12 +1028,12 @@ export const prCommentsCommand = Command.make(
1028
1028
  "comments",
1029
1029
  {
1030
1030
  format: formatOption,
1031
- pr: Flag.integer("pr").pipe(
1031
+ pr: Flag.Int("pr").pipe(
1032
1032
  Flag.withDescription("PR number (default: current branch PR)"),
1033
1033
  Flag.optional,
1034
1034
  ),
1035
1035
  repo: repoOption,
1036
- since: Flag.string("since").pipe(
1036
+ since: Flag.String("since").pipe(
1037
1037
  Flag.withDescription("ISO timestamp to filter comments created after"),
1038
1038
  Flag.optional,
1039
1039
  ),
@@ -1054,7 +1054,7 @@ export const prLastHumanReviewerCommand = Command.make(
1054
1054
  "last-human-reviewer",
1055
1055
  {
1056
1056
  format: formatOption,
1057
- pr: Flag.integer("pr").pipe(
1057
+ pr: Flag.Int("pr").pipe(
1058
1058
  Flag.withDescription("PR number (default: current branch PR)"),
1059
1059
  Flag.optional,
1060
1060
  ),
@@ -1077,21 +1077,21 @@ export const prLastHumanReviewerCommand = Command.make(
1077
1077
  export const prReviewsCommand = Command.make(
1078
1078
  "reviews",
1079
1079
  {
1080
- author: Flag.string("author").pipe(
1080
+ author: Flag.String("author").pipe(
1081
1081
  Flag.withDescription("Filter by author login substring"),
1082
1082
  Flag.optional,
1083
1083
  ),
1084
- bodyContains: Flag.string("body-contains").pipe(
1084
+ bodyContains: Flag.String("body-contains").pipe(
1085
1085
  Flag.withDescription("Filter reviews by body substring"),
1086
1086
  Flag.optional,
1087
1087
  ),
1088
1088
  format: formatOption,
1089
- pr: Flag.integer("pr").pipe(
1089
+ pr: Flag.Int("pr").pipe(
1090
1090
  Flag.withDescription("PR number (default: current branch PR)"),
1091
1091
  Flag.optional,
1092
1092
  ),
1093
1093
  repo: repoOption,
1094
- state: Flag.string("state").pipe(
1094
+ state: Flag.String("state").pipe(
1095
1095
  Flag.withDescription(
1096
1096
  "Filter by review state (APPROVED, CHANGES_REQUESTED, COMMENTED, DISMISSED)",
1097
1097
  ),
@@ -1120,24 +1120,24 @@ export const prReviewsCommand = Command.make(
1120
1120
  export const prFeedbackCommand = Command.make(
1121
1121
  "feedback",
1122
1122
  {
1123
- excludeAuthors: Flag.string("exclude-authors").pipe(
1123
+ excludeAuthors: Flag.String("exclude-authors").pipe(
1124
1124
  Flag.withDescription(
1125
1125
  "Comma-separated author substrings to drop (e.g. github-actions,dependabot)",
1126
1126
  ),
1127
1127
  Flag.optional,
1128
1128
  ),
1129
1129
  format: formatOption,
1130
- only: Flag.choice("only", FEEDBACK_FILTERS).pipe(
1130
+ only: Flag.Literals("only", FEEDBACK_FILTERS).pipe(
1131
1131
  Flag.withDefault("all" as FeedbackFilter),
1132
1132
  Flag.withDescription(
1133
1133
  "all (default) | visible-open | needs-human-reply | current-head; narrowed filters drop issue comments",
1134
1134
  ),
1135
1135
  ),
1136
- pr: Flag.integer("pr").pipe(
1136
+ pr: Flag.Int("pr").pipe(
1137
1137
  Flag.withDescription("PR number (default: current branch PR)"),
1138
1138
  Flag.optional,
1139
1139
  ),
1140
- rawBodies: Flag.boolean("raw-bodies").pipe(
1140
+ rawBodies: Flag.Boolean("raw-bodies").pipe(
1141
1141
  Flag.withDefault(false),
1142
1142
  Flag.withDescription("Keep base64 report payloads in bodies instead of omitting them"),
1143
1143
  ),
@@ -1170,21 +1170,21 @@ export const prFeedbackCommand = Command.make(
1170
1170
  export const prIssueCommentsCommand = Command.make(
1171
1171
  "issue-comments",
1172
1172
  {
1173
- author: Flag.string("author").pipe(
1173
+ author: Flag.String("author").pipe(
1174
1174
  Flag.withDescription("Filter by author login substring"),
1175
1175
  Flag.optional,
1176
1176
  ),
1177
- bodyContains: Flag.string("body-contains").pipe(
1177
+ bodyContains: Flag.String("body-contains").pipe(
1178
1178
  Flag.withDescription("Filter comments by body substring"),
1179
1179
  Flag.optional,
1180
1180
  ),
1181
1181
  format: formatOption,
1182
- pr: Flag.integer("pr").pipe(
1182
+ pr: Flag.Int("pr").pipe(
1183
1183
  Flag.withDescription("PR number (default: current branch PR)"),
1184
1184
  Flag.optional,
1185
1185
  ),
1186
1186
  repo: repoOption,
1187
- since: Flag.string("since").pipe(
1187
+ since: Flag.String("since").pipe(
1188
1188
  Flag.withDescription("ISO timestamp to filter comments created after"),
1189
1189
  Flag.optional,
1190
1190
  ),
@@ -1212,16 +1212,16 @@ export const prIssueCommentsCommand = Command.make(
1212
1212
  export const prIssueCommentsLatestCommand = Command.make(
1213
1213
  "issue-comments-latest",
1214
1214
  {
1215
- author: Flag.string("author").pipe(
1215
+ author: Flag.String("author").pipe(
1216
1216
  Flag.withDescription("Filter by author login substring"),
1217
1217
  Flag.optional,
1218
1218
  ),
1219
- bodyContains: Flag.string("body-contains").pipe(
1219
+ bodyContains: Flag.String("body-contains").pipe(
1220
1220
  Flag.withDescription("Filter comments by body substring"),
1221
1221
  Flag.optional,
1222
1222
  ),
1223
1223
  format: formatOption,
1224
- pr: Flag.integer("pr").pipe(
1224
+ pr: Flag.Int("pr").pipe(
1225
1225
  Flag.withDescription("PR number (default: current branch PR)"),
1226
1226
  Flag.optional,
1227
1227
  ),
@@ -1244,16 +1244,16 @@ export const prIssueCommentsLatestCommand = Command.make(
1244
1244
  export const prCommentCommand = Command.make(
1245
1245
  "comment",
1246
1246
  {
1247
- body: Flag.string("body").pipe(
1247
+ body: Flag.String("body").pipe(
1248
1248
  Flag.withDescription("General PR comment body text"),
1249
1249
  Flag.optional,
1250
1250
  ),
1251
- bodyFile: Flag.string("body-file").pipe(
1251
+ bodyFile: Flag.String("body-file").pipe(
1252
1252
  Flag.withDescription("Read general PR comment body from a file path or '-' for stdin"),
1253
1253
  Flag.optional,
1254
1254
  ),
1255
1255
  format: formatOption,
1256
- pr: Flag.integer("pr").pipe(
1256
+ pr: Flag.Int("pr").pipe(
1257
1257
  Flag.withDescription("PR number (default: current branch PR)"),
1258
1258
  Flag.optional,
1259
1259
  ),
@@ -1282,7 +1282,7 @@ export const prDiscussionSummaryCommand = Command.make(
1282
1282
  "discussion-summary",
1283
1283
  {
1284
1284
  format: formatOption,
1285
- pr: Flag.integer("pr").pipe(
1285
+ pr: Flag.Int("pr").pipe(
1286
1286
  Flag.withDescription("PR number (default: current branch PR)"),
1287
1287
  Flag.optional,
1288
1288
  ),
@@ -1304,16 +1304,14 @@ export const prDiscussionSummaryCommand = Command.make(
1304
1304
  export const prReplyCommand = Command.make(
1305
1305
  "reply",
1306
1306
  {
1307
- body: Flag.string("body").pipe(Flag.withDescription("Reply body text"), Flag.optional),
1308
- bodyFile: Flag.string("body-file").pipe(
1307
+ body: Flag.String("body").pipe(Flag.withDescription("Reply body text"), Flag.optional),
1308
+ bodyFile: Flag.String("body-file").pipe(
1309
1309
  Flag.withDescription("Read reply body from a file path or '-' for stdin"),
1310
1310
  Flag.optional,
1311
1311
  ),
1312
- commentId: Flag.integer("comment-id").pipe(
1313
- Flag.withDescription("ID of the comment to reply to"),
1314
- ),
1312
+ commentId: Flag.Int("comment-id").pipe(Flag.withDescription("ID of the comment to reply to")),
1315
1313
  format: formatOption,
1316
- pr: Flag.integer("pr").pipe(
1314
+ pr: Flag.Int("pr").pipe(
1317
1315
  Flag.withDescription("PR number (default: current branch PR)"),
1318
1316
  Flag.optional,
1319
1317
  ),
@@ -1342,7 +1340,7 @@ export const prResolveCommand = Command.make(
1342
1340
  "resolve",
1343
1341
  {
1344
1342
  format: formatOption,
1345
- threadId: Flag.string("thread-id").pipe(
1343
+ threadId: Flag.String("thread-id").pipe(
1346
1344
  Flag.withDescription("GraphQL node ID of the thread to resolve"),
1347
1345
  ),
1348
1346
  repo: repoOption,
@@ -1357,12 +1355,12 @@ export const prResolveCommand = Command.make(
1357
1355
  ),
1358
1356
  ).pipe(Command.withDescription("Resolve a review thread via GraphQL"));
1359
1357
 
1360
- const reviewEventOption = Flag.choice("event", REVIEW_EVENTS).pipe(
1358
+ const reviewEventOption = Flag.Literals("event", REVIEW_EVENTS).pipe(
1361
1359
  Flag.withDescription("Review verdict: comment, approve, or request-changes"),
1362
1360
  Flag.withDefault(DEFAULT_REVIEW_EVENT),
1363
1361
  );
1364
1362
 
1365
- const reviewConfirmOption = Flag.boolean("confirm").pipe(
1363
+ const reviewConfirmOption = Flag.Boolean("confirm").pipe(
1366
1364
  Flag.withDescription("Required for --event approve and --event request-changes"),
1367
1365
  Flag.withDefault(false),
1368
1366
  );
@@ -1370,19 +1368,19 @@ const reviewConfirmOption = Flag.boolean("confirm").pipe(
1370
1368
  export const prReviewCommand = Command.make(
1371
1369
  "review",
1372
1370
  {
1373
- body: Flag.string("body").pipe(Flag.withDescription("Review body text"), Flag.optional),
1374
- bodyFile: Flag.string("body-file").pipe(
1371
+ body: Flag.String("body").pipe(Flag.withDescription("Review body text"), Flag.optional),
1372
+ bodyFile: Flag.String("body-file").pipe(
1375
1373
  Flag.withDescription("Read review body from a file path or '-' for stdin"),
1376
1374
  Flag.optional,
1377
1375
  ),
1378
- bodyStdin: Flag.boolean("body-stdin").pipe(
1376
+ bodyStdin: Flag.Boolean("body-stdin").pipe(
1379
1377
  Flag.withDescription("Read review body from stdin"),
1380
1378
  Flag.withDefault(false),
1381
1379
  ),
1382
1380
  confirm: reviewConfirmOption,
1383
1381
  event: reviewEventOption,
1384
1382
  format: formatOption,
1385
- pr: Flag.integer("pr").pipe(
1383
+ pr: Flag.Int("pr").pipe(
1386
1384
  Flag.withDescription("PR number (default: current branch PR)"),
1387
1385
  Flag.optional,
1388
1386
  ),
@@ -1422,23 +1420,23 @@ export const prReviewCommand = Command.make(
1422
1420
  export const prSubmitReviewCommand = Command.make(
1423
1421
  "submit-review",
1424
1422
  {
1425
- body: Flag.string("body").pipe(
1423
+ body: Flag.String("body").pipe(
1426
1424
  Flag.withDescription("Optional review body text when submitting"),
1427
1425
  Flag.optional,
1428
1426
  ),
1429
- bodyFile: Flag.string("body-file").pipe(
1427
+ bodyFile: Flag.String("body-file").pipe(
1430
1428
  Flag.withDescription("Read review body from a file path or '-' for stdin"),
1431
1429
  Flag.optional,
1432
1430
  ),
1433
1431
  confirm: reviewConfirmOption,
1434
1432
  event: reviewEventOption,
1435
1433
  format: formatOption,
1436
- pr: Flag.integer("pr").pipe(
1434
+ pr: Flag.Int("pr").pipe(
1437
1435
  Flag.withDescription("PR number (default: current branch PR)"),
1438
1436
  Flag.optional,
1439
1437
  ),
1440
1438
  repo: repoOption,
1441
- reviewId: Flag.string("review-id").pipe(
1439
+ reviewId: Flag.String("review-id").pipe(
1442
1440
  Flag.withDescription(
1443
1441
  "Pending review GraphQL ID (defaults to current user's pending review on PR)",
1444
1442
  ),
@@ -1502,13 +1500,13 @@ export const prReviewTriageCommand = Command.make(
1502
1500
  "review-triage",
1503
1501
  {
1504
1502
  format: formatOption,
1505
- omit: Flag.string("omit").pipe(
1503
+ omit: Flag.String("omit").pipe(
1506
1504
  Flag.withDescription(
1507
1505
  `Comma-separated sections to leave out (${OMITTABLE_TRIAGE_SECTIONS.join(", ")}) — use for cheap repeated snapshots; \`pr feedback\` owns the full inventory`,
1508
1506
  ),
1509
1507
  Flag.optional,
1510
1508
  ),
1511
- pr: Flag.integer("pr").pipe(
1509
+ pr: Flag.Int("pr").pipe(
1512
1510
  Flag.withDescription("PR number (default: current branch PR)"),
1513
1511
  Flag.optional,
1514
1512
  ),
@@ -1536,9 +1534,9 @@ export const prRequestReviewCommand = Command.make(
1536
1534
  "request-review",
1537
1535
  {
1538
1536
  format: formatOption,
1539
- pr: Flag.integer("pr").pipe(Flag.withDescription("Positive pull request number")),
1537
+ pr: Flag.Int("pr").pipe(Flag.withDescription("Positive pull request number")),
1540
1538
  repo: repoOption,
1541
- reviewers: Flag.string("reviewers").pipe(
1539
+ reviewers: Flag.String("reviewers").pipe(
1542
1540
  Flag.withDescription("Comma-separated GitHub user logins"),
1543
1541
  ),
1544
1542
  },
@@ -1555,7 +1553,7 @@ export const prReviewTriageBatchCommand = Command.make(
1555
1553
  "review-triage-batch",
1556
1554
  {
1557
1555
  format: formatOption,
1558
- prs: Flag.string("prs").pipe(Flag.withDescription("Comma-separated PR numbers")),
1556
+ prs: Flag.String("prs").pipe(Flag.withDescription("Comma-separated PR numbers")),
1559
1557
  repo: repoOption,
1560
1558
  },
1561
1559
  ({ format, prs, repo }) =>
@@ -1579,21 +1577,19 @@ export const prReviewTriageBatchCommand = Command.make(
1579
1577
  export const prReplyAndResolveCommand = Command.make(
1580
1578
  "reply-and-resolve",
1581
1579
  {
1582
- body: Flag.string("body").pipe(Flag.withDescription("Reply body text"), Flag.optional),
1583
- bodyFile: Flag.string("body-file").pipe(
1580
+ body: Flag.String("body").pipe(Flag.withDescription("Reply body text"), Flag.optional),
1581
+ bodyFile: Flag.String("body-file").pipe(
1584
1582
  Flag.withDescription("Read reply body from a file path or '-' for stdin"),
1585
1583
  Flag.optional,
1586
1584
  ),
1587
- commentId: Flag.integer("comment-id").pipe(
1588
- Flag.withDescription("ID of the comment to reply to"),
1589
- ),
1585
+ commentId: Flag.Int("comment-id").pipe(Flag.withDescription("ID of the comment to reply to")),
1590
1586
  format: formatOption,
1591
- pr: Flag.integer("pr").pipe(
1587
+ pr: Flag.Int("pr").pipe(
1592
1588
  Flag.withDescription("PR number (default: current branch PR)"),
1593
1589
  Flag.optional,
1594
1590
  ),
1595
1591
  repo: repoOption,
1596
- threadId: Flag.string("thread-id").pipe(
1592
+ threadId: Flag.String("thread-id").pipe(
1597
1593
  Flag.withDescription(
1598
1594
  "GraphQL node ID of the thread to resolve (inferred from comment when omitted)",
1599
1595
  ),
@@ -1632,7 +1628,7 @@ const prStackViewCommand = Command.make(
1632
1628
  "view",
1633
1629
  {
1634
1630
  format: formatOption,
1635
- pr: Flag.integer("pr").pipe(Flag.withDescription("PR number to read the stack of")),
1631
+ pr: Flag.Int("pr").pipe(Flag.withDescription("PR number to read the stack of")),
1636
1632
  repo: repoOption,
1637
1633
  },
1638
1634
  ({ format, pr, repo }) =>
@@ -1648,14 +1644,14 @@ const prStackViewCommand = Command.make(
1648
1644
  const prStackMergeCommand = Command.make(
1649
1645
  "merge",
1650
1646
  {
1651
- confirm: Flag.boolean("confirm").pipe(
1647
+ confirm: Flag.Boolean("confirm").pipe(
1652
1648
  Flag.withDescription("Actually merge (without this flag, only shows the ordered plan)"),
1653
1649
  Flag.withDefault(false),
1654
1650
  ),
1655
1651
  format: formatOption,
1656
- pr: Flag.integer("pr").pipe(Flag.withDescription("Any PR in the stack to merge")),
1652
+ pr: Flag.Int("pr").pipe(Flag.withDescription("Any PR in the stack to merge")),
1657
1653
  repo: repoOption,
1658
- strategy: Flag.choice("strategy", MERGE_STRATEGIES).pipe(
1654
+ strategy: Flag.Literals("strategy", MERGE_STRATEGIES).pipe(
1659
1655
  Flag.withDescription("Merge strategy: squash, merge, or rebase"),
1660
1656
  Flag.withDefault(DEFAULT_MERGE_STRATEGY),
1661
1657
  ),
@@ -1677,14 +1673,14 @@ const prStackMergeCommand = Command.make(
1677
1673
  const prStackUnstackCommand = Command.make(
1678
1674
  "unstack",
1679
1675
  {
1680
- confirm: Flag.boolean("confirm").pipe(
1676
+ confirm: Flag.Boolean("confirm").pipe(
1681
1677
  Flag.withDescription(
1682
1678
  "Actually unstack (without this flag, only shows what would be removed)",
1683
1679
  ),
1684
1680
  Flag.withDefault(false),
1685
1681
  ),
1686
1682
  format: formatOption,
1687
- pr: Flag.integer("pr").pipe(Flag.withDescription("Any PR in the stack to dissolve")),
1683
+ pr: Flag.Int("pr").pipe(Flag.withDescription("Any PR in the stack to dissolve")),
1688
1684
  repo: repoOption,
1689
1685
  },
1690
1686
  ({ confirm, format, pr, repo }) =>