@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
@@ -60,19 +60,19 @@ const resolveEnv = (envOption: Option.Option<string>) =>
60
60
  const sqlCommand = Command.make(
61
61
  "sql",
62
62
  {
63
- env: Flag.optional(Flag.string("env")).pipe(
63
+ env: Flag.optional(Flag.String("env")).pipe(
64
64
  Flag.withDescription(
65
65
  "Target database environment name (e.g. local, test, prod). Falls back to defaultEnvironment in config.",
66
66
  ),
67
67
  ),
68
- sql: Flag.string("sql").pipe(Flag.withDescription("SQL query to execute")),
69
- limit: Flag.optional(Flag.integer("limit")).pipe(
68
+ sql: Flag.String("sql").pipe(Flag.withDescription("SQL query to execute")),
69
+ limit: Flag.optional(Flag.Int("limit")).pipe(
70
70
  Flag.withDescription(
71
71
  "Max rows to return (default 50). Use 0 for no cap. Prefer a SQL LIMIT for large tables.",
72
72
  ),
73
73
  ),
74
74
  format: formatOption,
75
- profile: Flag.optional(Flag.string("profile")).pipe(
75
+ profile: Flag.optional(Flag.String("profile")).pipe(
76
76
  Flag.withDescription("Database profile name from agent-tools.json5 (if multiple configured)"),
77
77
  ),
78
78
  },
@@ -88,22 +88,22 @@ const sqlCommand = Command.make(
88
88
  const schemaCommand = Command.make(
89
89
  "schema",
90
90
  {
91
- env: Flag.optional(Flag.string("env")).pipe(
91
+ env: Flag.optional(Flag.String("env")).pipe(
92
92
  Flag.withDescription(
93
93
  "Target database environment name (e.g. local, test, prod). Falls back to defaultEnvironment in config.",
94
94
  ),
95
95
  ),
96
- mode: Flag.choice("mode", ["tables", "columns", "full", "relationships"]).pipe(
96
+ mode: Flag.Literals("mode", ["tables", "columns", "full", "relationships"]).pipe(
97
97
  Flag.withDescription(
98
98
  "Schema introspection mode: tables (list all), columns (show columns for --table), full (all tables with columns), relationships (foreign keys)",
99
99
  ),
100
100
  ),
101
- table: Flag.string("table").pipe(
101
+ table: Flag.String("table").pipe(
102
102
  Flag.withDescription("Table name (required for --mode columns)"),
103
103
  Flag.optional,
104
104
  ),
105
105
  format: formatOption,
106
- profile: Flag.optional(Flag.string("profile")).pipe(
106
+ profile: Flag.optional(Flag.String("profile")).pipe(
107
107
  Flag.withDescription("Database profile name from agent-tools.json5 (if multiple configured)"),
108
108
  ),
109
109
  },
@@ -124,7 +124,7 @@ const envsCommand = Command.make(
124
124
  "envs",
125
125
  {
126
126
  format: formatOption,
127
- profile: Flag.optional(Flag.string("profile")).pipe(
127
+ profile: Flag.optional(Flag.String("profile")).pipe(
128
128
  Flag.withDescription("Database profile name from agent-tools.json5 (if multiple configured)"),
129
129
  ),
130
130
  },
@@ -179,16 +179,16 @@ const makeDiagnosticCommand = (name: string, description: string, sql: string) =
179
179
  Command.make(
180
180
  name,
181
181
  {
182
- env: Flag.optional(Flag.string("env")).pipe(
182
+ env: Flag.optional(Flag.String("env")).pipe(
183
183
  Flag.withDescription(
184
184
  "Target database environment name (e.g. local, test, prod). Falls back to defaultEnvironment in config.",
185
185
  ),
186
186
  ),
187
- limit: Flag.optional(Flag.integer("limit")).pipe(
187
+ limit: Flag.optional(Flag.Int("limit")).pipe(
188
188
  Flag.withDescription("Max rows to return (default 50). Use 0 for no cap."),
189
189
  ),
190
190
  format: formatOption,
191
- profile: Flag.optional(Flag.string("profile")).pipe(
191
+ profile: Flag.optional(Flag.String("profile")).pipe(
192
192
  Flag.withDescription(
193
193
  "Database profile name from agent-tools.json5 (if multiple configured)",
194
194
  ),
@@ -63,14 +63,14 @@ export const renameBranch = Effect.fn("branch.renameBranch")(function* (opts: {
63
63
  export const branchRenameCommand = Command.make(
64
64
  "rename",
65
65
  {
66
- confirm: Flag.boolean("confirm").pipe(
66
+ confirm: Flag.Boolean("confirm").pipe(
67
67
  Flag.withDescription("Actually rename (without this flag, only shows dry-run)"),
68
68
  Flag.withDefault(false),
69
69
  ),
70
70
  format: formatOption,
71
- newName: Flag.string("new-name").pipe(Flag.withDescription("New branch name")),
72
- oldName: Flag.string("old-name").pipe(Flag.withDescription("Current branch name to rename")),
73
- repo: Flag.string("repo").pipe(
71
+ newName: Flag.String("new-name").pipe(Flag.withDescription("New branch name")),
72
+ oldName: Flag.String("old-name").pipe(Flag.withDescription("Current branch name to rename")),
73
+ repo: Flag.String("repo").pipe(
74
74
  Flag.withDescription("Target repository (owner/name). Defaults to current repo"),
75
75
  Flag.optional,
76
76
  ),
@@ -402,11 +402,11 @@ export const gistListCommand = Command.make(
402
402
  "list",
403
403
  {
404
404
  format: formatOption,
405
- limit: Flag.integer("limit").pipe(
405
+ limit: Flag.Int("limit").pipe(
406
406
  Flag.withDescription("Maximum number of gists to return"),
407
407
  Flag.withDefault(10),
408
408
  ),
409
- visibility: Flag.choice("visibility", ["public", "secret"]).pipe(
409
+ visibility: Flag.Literals("visibility", ["public", "secret"]).pipe(
410
410
  Flag.withDescription("Filter by visibility: public or secret"),
411
411
  Flag.optional,
412
412
  ),
@@ -424,13 +424,13 @@ export const gistListCommand = Command.make(
424
424
  export const gistViewCommand = Command.make(
425
425
  "view",
426
426
  {
427
- filename: Flag.string("filename").pipe(
427
+ filename: Flag.String("filename").pipe(
428
428
  Flag.withDescription("Return only this file from the gist"),
429
429
  Flag.optional,
430
430
  ),
431
431
  format: formatOption,
432
- id: Flag.string("id").pipe(Flag.withDescription("Gist id or URL")),
433
- metadataOnly: Flag.boolean("metadata-only").pipe(
432
+ id: Flag.String("id").pipe(Flag.withDescription("Gist id or URL")),
433
+ metadataOnly: Flag.Boolean("metadata-only").pipe(
434
434
  Flag.withDescription("Omit file contents"),
435
435
  Flag.withDefault(false),
436
436
  ),
@@ -450,27 +450,27 @@ export const gistViewCommand = Command.make(
450
450
  export const gistCreateCommand = Command.make(
451
451
  "create",
452
452
  {
453
- body: Flag.string("body").pipe(
453
+ body: Flag.String("body").pipe(
454
454
  Flag.withDescription("Inline gist content (requires --filename)"),
455
455
  Flag.optional,
456
456
  ),
457
- bodyFile: Flag.string("body-file").pipe(
457
+ bodyFile: Flag.String("body-file").pipe(
458
458
  Flag.withDescription(
459
459
  "Read gist content from a file path or '-' for stdin (requires --filename)",
460
460
  ),
461
461
  Flag.optional,
462
462
  ),
463
- desc: Flag.string("desc").pipe(Flag.withDescription("Gist description"), Flag.optional),
464
- filename: Flag.string("filename").pipe(
463
+ desc: Flag.String("desc").pipe(Flag.withDescription("Gist description"), Flag.optional),
464
+ filename: Flag.String("filename").pipe(
465
465
  Flag.withDescription("File name used for --body/--body-file content"),
466
466
  Flag.optional,
467
467
  ),
468
- files: Flag.string("files").pipe(
468
+ files: Flag.String("files").pipe(
469
469
  Flag.withDescription("Comma-separated paths of existing files to upload"),
470
470
  Flag.optional,
471
471
  ),
472
472
  format: formatOption,
473
- public: Flag.boolean("public").pipe(
473
+ public: Flag.Boolean("public").pipe(
474
474
  Flag.withDescription("Publish as a public gist (gists are secret by default)"),
475
475
  Flag.withDefault(false),
476
476
  ),
@@ -526,26 +526,26 @@ export const gistCreateCommand = Command.make(
526
526
  export const gistEditCommand = Command.make(
527
527
  "edit",
528
528
  {
529
- add: Flag.string("add").pipe(
529
+ add: Flag.String("add").pipe(
530
530
  Flag.withDescription("Path of a new file to add to the gist"),
531
531
  Flag.optional,
532
532
  ),
533
- body: Flag.string("body").pipe(
533
+ body: Flag.String("body").pipe(
534
534
  Flag.withDescription("Replacement content for --filename"),
535
535
  Flag.optional,
536
536
  ),
537
- bodyFile: Flag.string("body-file").pipe(
537
+ bodyFile: Flag.String("body-file").pipe(
538
538
  Flag.withDescription("Read replacement content from a file path or '-' for stdin"),
539
539
  Flag.optional,
540
540
  ),
541
- desc: Flag.string("desc").pipe(Flag.withDescription("New gist description"), Flag.optional),
542
- filename: Flag.string("filename").pipe(
541
+ desc: Flag.String("desc").pipe(Flag.withDescription("New gist description"), Flag.optional),
542
+ filename: Flag.String("filename").pipe(
543
543
  Flag.withDescription("Gist file to replace with --body/--body-file"),
544
544
  Flag.optional,
545
545
  ),
546
546
  format: formatOption,
547
- id: Flag.string("id").pipe(Flag.withDescription("Gist id or URL")),
548
- remove: Flag.string("remove").pipe(
547
+ id: Flag.String("id").pipe(Flag.withDescription("Gist id or URL")),
548
+ remove: Flag.String("remove").pipe(
549
549
  Flag.withDescription("File name to remove from the gist"),
550
550
  Flag.optional,
551
551
  ),
@@ -609,12 +609,12 @@ export const gistEditCommand = Command.make(
609
609
  export const gistDeleteCommand = Command.make(
610
610
  "delete",
611
611
  {
612
- confirm: Flag.boolean("confirm").pipe(
612
+ confirm: Flag.Boolean("confirm").pipe(
613
613
  Flag.withDescription("Actually delete the gist (without this flag, only shows dry-run)"),
614
614
  Flag.withDefault(false),
615
615
  ),
616
616
  format: formatOption,
617
- id: Flag.string("id").pipe(Flag.withDescription("Gist id or URL")),
617
+ id: Flag.String("id").pipe(Flag.withDescription("Gist id or URL")),
618
618
  },
619
619
  ({ confirm, format, id }) =>
620
620
  Effect.gen(function* () {
@@ -20,7 +20,7 @@ import {
20
20
  } from "./core";
21
21
  import { GitHubService } from "#gh/service";
22
22
 
23
- const repoOption = Flag.string("repo").pipe(
23
+ const repoOption = Flag.String("repo").pipe(
24
24
  Flag.withDescription("Target repository profile name or owner/name"),
25
25
  Flag.optional,
26
26
  );
@@ -35,16 +35,16 @@ export const issueListCommand = Command.make(
35
35
  "list",
36
36
  {
37
37
  format: formatOption,
38
- labels: Flag.string("labels").pipe(
38
+ labels: Flag.String("labels").pipe(
39
39
  Flag.withDescription("Filter by label (comma-separated)"),
40
40
  Flag.optional,
41
41
  ),
42
- limit: Flag.integer("limit").pipe(
42
+ limit: Flag.Int("limit").pipe(
43
43
  Flag.withDescription("Maximum number of issues to return"),
44
44
  Flag.withDefault(30),
45
45
  ),
46
46
  repo: repoOption,
47
- state: Flag.choice("state", ["open", "closed", "all"]).pipe(
47
+ state: Flag.Literals("state", ["open", "closed", "all"]).pipe(
48
48
  Flag.withDescription("Filter by state: open, closed, all"),
49
49
  Flag.withDefault("open"),
50
50
  ),
@@ -67,7 +67,7 @@ export const issueViewCommand = Command.make(
67
67
  "view",
68
68
  {
69
69
  format: formatOption,
70
- issue: Flag.integer("issue").pipe(Flag.withDescription("Issue number")),
70
+ issue: Flag.Int("issue").pipe(Flag.withDescription("Issue number")),
71
71
  repo: repoOption,
72
72
  },
73
73
  ({ format, issue, repo }) =>
@@ -87,18 +87,18 @@ export const issueViewCommand = Command.make(
87
87
  export const issueCommentsCommand = Command.make(
88
88
  "comments",
89
89
  {
90
- author: Flag.string("author").pipe(
90
+ author: Flag.String("author").pipe(
91
91
  Flag.withDescription("Filter by author login substring"),
92
92
  Flag.optional,
93
93
  ),
94
- bodyContains: Flag.string("body-contains").pipe(
94
+ bodyContains: Flag.String("body-contains").pipe(
95
95
  Flag.withDescription("Filter comments by body substring"),
96
96
  Flag.optional,
97
97
  ),
98
98
  format: formatOption,
99
- issue: Flag.integer("issue").pipe(Flag.withDescription("Issue number")),
99
+ issue: Flag.Int("issue").pipe(Flag.withDescription("Issue number")),
100
100
  repo: repoOption,
101
- since: Flag.string("since").pipe(
101
+ since: Flag.String("since").pipe(
102
102
  Flag.withDescription("ISO timestamp to filter comments created after"),
103
103
  Flag.optional,
104
104
  ),
@@ -121,18 +121,18 @@ export const issueCommentsCommand = Command.make(
121
121
  export const issueCloseCommand = Command.make(
122
122
  "close",
123
123
  {
124
- comment: Flag.string("comment").pipe(
124
+ comment: Flag.String("comment").pipe(
125
125
  Flag.withDescription("Comment to add when closing"),
126
126
  Flag.optional,
127
127
  ),
128
- commentFile: Flag.string("comment-file").pipe(
128
+ commentFile: Flag.String("comment-file").pipe(
129
129
  Flag.withDescription("Read close comment from a file path or '-' for stdin"),
130
130
  Flag.optional,
131
131
  ),
132
132
  format: formatOption,
133
- issue: Flag.integer("issue").pipe(Flag.withDescription("Issue number to close")),
133
+ issue: Flag.Int("issue").pipe(Flag.withDescription("Issue number to close")),
134
134
  repo: repoOption,
135
- reason: Flag.choice("reason", ["completed", "not planned"]).pipe(
135
+ reason: Flag.Literals("reason", ["completed", "not planned"]).pipe(
136
136
  Flag.withDescription("Close reason: completed, not planned"),
137
137
  Flag.withDefault("completed"),
138
138
  ),
@@ -163,16 +163,16 @@ export const issueCloseCommand = Command.make(
163
163
  export const issueReopenCommand = Command.make(
164
164
  "reopen",
165
165
  {
166
- comment: Flag.string("comment").pipe(
166
+ comment: Flag.String("comment").pipe(
167
167
  Flag.withDescription("Comment to add when reopening"),
168
168
  Flag.optional,
169
169
  ),
170
- commentFile: Flag.string("comment-file").pipe(
170
+ commentFile: Flag.String("comment-file").pipe(
171
171
  Flag.withDescription("Read reopen comment from a file path or '-' for stdin"),
172
172
  Flag.optional,
173
173
  ),
174
174
  format: formatOption,
175
- issue: Flag.integer("issue").pipe(Flag.withDescription("Issue number to reopen")),
175
+ issue: Flag.Int("issue").pipe(Flag.withDescription("Issue number to reopen")),
176
176
  repo: repoOption,
177
177
  },
178
178
  ({ comment, commentFile, format, issue, repo }) =>
@@ -200,26 +200,26 @@ export const issueReopenCommand = Command.make(
200
200
  export const issueCreateCommand = Command.make(
201
201
  "create",
202
202
  {
203
- assignee: Flag.string("assignee").pipe(
203
+ assignee: Flag.String("assignee").pipe(
204
204
  Flag.withDescription("Assignee login (comma-separated for multiple)"),
205
205
  Flag.optional,
206
206
  ),
207
- body: Flag.string("body").pipe(Flag.withDescription("Issue body"), Flag.optional),
208
- bodyFile: Flag.string("body-file").pipe(
207
+ body: Flag.String("body").pipe(Flag.withDescription("Issue body"), Flag.optional),
208
+ bodyFile: Flag.String("body-file").pipe(
209
209
  Flag.withDescription("Read issue body from a file path or '-' for stdin"),
210
210
  Flag.optional,
211
211
  ),
212
- bodyStdin: Flag.boolean("body-stdin").pipe(
212
+ bodyStdin: Flag.Boolean("body-stdin").pipe(
213
213
  Flag.withDescription("Read issue body from stdin"),
214
214
  Flag.withDefault(false),
215
215
  ),
216
216
  format: formatOption,
217
- labels: Flag.string("labels").pipe(
217
+ labels: Flag.String("labels").pipe(
218
218
  Flag.withDescription("Labels to apply (comma-separated)"),
219
219
  Flag.optional,
220
220
  ),
221
221
  repo: repoOption,
222
- title: Flag.string("title").pipe(Flag.withDescription("Issue title")),
222
+ title: Flag.String("title").pipe(Flag.withDescription("Issue title")),
223
223
  },
224
224
  ({ assignee, body, bodyFile, bodyStdin, format, labels, repo, title }) =>
225
225
  withRepo(
@@ -251,13 +251,13 @@ export const issueCreateCommand = Command.make(
251
251
  export const issueCommentCommand = Command.make(
252
252
  "comment",
253
253
  {
254
- body: Flag.string("body").pipe(Flag.withDescription("Comment body text"), Flag.optional),
255
- bodyFile: Flag.string("body-file").pipe(
254
+ body: Flag.String("body").pipe(Flag.withDescription("Comment body text"), Flag.optional),
255
+ bodyFile: Flag.String("body-file").pipe(
256
256
  Flag.withDescription("Read comment body from a file path or '-' for stdin"),
257
257
  Flag.optional,
258
258
  ),
259
259
  format: formatOption,
260
- issue: Flag.integer("issue").pipe(Flag.withDescription("Issue number to comment on")),
260
+ issue: Flag.Int("issue").pipe(Flag.withDescription("Issue number to comment on")),
261
261
  repo: repoOption,
262
262
  },
263
263
  ({ body, bodyFile, format, issue, repo }) =>
@@ -282,31 +282,31 @@ export const issueCommentCommand = Command.make(
282
282
  export const issueEditCommand = Command.make(
283
283
  "edit",
284
284
  {
285
- addAssignee: Flag.string("add-assignee").pipe(
285
+ addAssignee: Flag.String("add-assignee").pipe(
286
286
  Flag.withDescription("Add assignee login (comma-separated for multiple)"),
287
287
  Flag.optional,
288
288
  ),
289
- addLabels: Flag.string("add-labels").pipe(
289
+ addLabels: Flag.String("add-labels").pipe(
290
290
  Flag.withDescription("Add labels (comma-separated)"),
291
291
  Flag.optional,
292
292
  ),
293
- body: Flag.string("body").pipe(Flag.withDescription("New issue body"), Flag.optional),
294
- bodyFile: Flag.string("body-file").pipe(
293
+ body: Flag.String("body").pipe(Flag.withDescription("New issue body"), Flag.optional),
294
+ bodyFile: Flag.String("body-file").pipe(
295
295
  Flag.withDescription("Read issue body from a file path or '-' for stdin"),
296
296
  Flag.optional,
297
297
  ),
298
298
  format: formatOption,
299
- issue: Flag.integer("issue").pipe(Flag.withDescription("Issue number to edit")),
299
+ issue: Flag.Int("issue").pipe(Flag.withDescription("Issue number to edit")),
300
300
  repo: repoOption,
301
- removeAssignee: Flag.string("remove-assignee").pipe(
301
+ removeAssignee: Flag.String("remove-assignee").pipe(
302
302
  Flag.withDescription("Remove assignee login (comma-separated for multiple)"),
303
303
  Flag.optional,
304
304
  ),
305
- removeLabels: Flag.string("remove-labels").pipe(
305
+ removeLabels: Flag.String("remove-labels").pipe(
306
306
  Flag.withDescription("Remove labels (comma-separated)"),
307
307
  Flag.optional,
308
308
  ),
309
- title: Flag.string("title").pipe(Flag.withDescription("New issue title"), Flag.optional),
309
+ title: Flag.String("title").pipe(Flag.withDescription("New issue title"), Flag.optional),
310
310
  },
311
311
  ({
312
312
  addAssignee,
@@ -9,7 +9,7 @@ import { fetchReviewTriage } from "#gh/pr/commands";
9
9
 
10
10
  import { fetchIssueComments } from "./core";
11
11
 
12
- const repoOption = Flag.string("repo").pipe(
12
+ const repoOption = Flag.String("repo").pipe(
13
13
  Flag.withDescription("Target repository profile name or owner/name"),
14
14
  Flag.optional,
15
15
  );
@@ -258,9 +258,9 @@ export const issueTriageCommand = Command.make(
258
258
  "triage",
259
259
  {
260
260
  format: formatOption,
261
- issue: Flag.integer("issue").pipe(Flag.withDescription("Issue number")),
261
+ issue: Flag.Int("issue").pipe(Flag.withDescription("Issue number")),
262
262
  repo: repoOption,
263
- verbosity: Flag.choice("verbosity", ["compact", "full"] as const).pipe(
263
+ verbosity: Flag.Literals("verbosity", ["compact", "full"] as const).pipe(
264
264
  Flag.withDescription("Output detail level: compact or full"),
265
265
  Flag.withDefault("compact"),
266
266
  ),
@@ -281,8 +281,8 @@ export const issueSnapshotBatchCommand = Command.make(
281
281
  "snapshot-batch",
282
282
  {
283
283
  format: formatOption,
284
- issues: Flag.string("issues").pipe(Flag.withDescription("Comma-separated issue numbers")),
285
- owner: Flag.string("owner").pipe(
284
+ issues: Flag.String("issues").pipe(Flag.withDescription("Comma-separated issue numbers")),
285
+ owner: Flag.String("owner").pipe(
286
286
  Flag.withDescription("Automation owner login used to mark eligible issues"),
287
287
  Flag.optional,
288
288
  ),