@paretools/github 0.7.0

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 (58) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +11 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/formatters.d.ts +99 -0
  7. package/dist/lib/formatters.d.ts.map +1 -0
  8. package/dist/lib/formatters.js +205 -0
  9. package/dist/lib/formatters.js.map +1 -0
  10. package/dist/lib/gh-runner.d.ts +3 -0
  11. package/dist/lib/gh-runner.d.ts.map +1 -0
  12. package/dist/lib/gh-runner.js +5 -0
  13. package/dist/lib/gh-runner.js.map +1 -0
  14. package/dist/lib/parsers.d.ts +38 -0
  15. package/dist/lib/parsers.d.ts.map +1 -0
  16. package/dist/lib/parsers.js +137 -0
  17. package/dist/lib/parsers.js.map +1 -0
  18. package/dist/schemas/index.d.ts +146 -0
  19. package/dist/schemas/index.d.ts.map +1 -0
  20. package/dist/schemas/index.js +110 -0
  21. package/dist/schemas/index.js.map +1 -0
  22. package/dist/tools/index.d.ts +3 -0
  23. package/dist/tools/index.d.ts.map +1 -0
  24. package/dist/tools/index.js +29 -0
  25. package/dist/tools/index.js.map +1 -0
  26. package/dist/tools/issue-create.d.ts +3 -0
  27. package/dist/tools/issue-create.d.ts.map +1 -0
  28. package/dist/tools/issue-create.js +48 -0
  29. package/dist/tools/issue-create.js.map +1 -0
  30. package/dist/tools/issue-list.d.ts +3 -0
  31. package/dist/tools/issue-list.d.ts.map +1 -0
  32. package/dist/tools/issue-list.js +62 -0
  33. package/dist/tools/issue-list.js.map +1 -0
  34. package/dist/tools/issue-view.d.ts +3 -0
  35. package/dist/tools/issue-view.d.ts.map +1 -0
  36. package/dist/tools/issue-view.js +37 -0
  37. package/dist/tools/issue-view.js.map +1 -0
  38. package/dist/tools/pr-create.d.ts +3 -0
  39. package/dist/tools/pr-create.d.ts.map +1 -0
  40. package/dist/tools/pr-create.js +54 -0
  41. package/dist/tools/pr-create.js.map +1 -0
  42. package/dist/tools/pr-list.d.ts +3 -0
  43. package/dist/tools/pr-list.d.ts.map +1 -0
  44. package/dist/tools/pr-list.js +62 -0
  45. package/dist/tools/pr-list.js.map +1 -0
  46. package/dist/tools/pr-view.d.ts +3 -0
  47. package/dist/tools/pr-view.d.ts.map +1 -0
  48. package/dist/tools/pr-view.js +37 -0
  49. package/dist/tools/pr-view.js.map +1 -0
  50. package/dist/tools/run-list.d.ts +3 -0
  51. package/dist/tools/run-list.d.ts.map +1 -0
  52. package/dist/tools/run-list.js +56 -0
  53. package/dist/tools/run-list.js.map +1 -0
  54. package/dist/tools/run-view.d.ts +3 -0
  55. package/dist/tools/run-view.d.ts.map +1 -0
  56. package/dist/tools/run-view.js +37 -0
  57. package/dist/tools/run-view.js.map +1 -0
  58. package/package.json +68 -0
@@ -0,0 +1,146 @@
1
+ import { z } from "zod";
2
+ /** Zod schema for a single status check on a PR. */
3
+ export declare const PrCheckSchema: z.ZodObject<{
4
+ name: z.ZodString;
5
+ status: z.ZodString;
6
+ conclusion: z.ZodNullable<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ /** Zod schema for structured pr-view output. */
9
+ export declare const PrViewResultSchema: z.ZodObject<{
10
+ number: z.ZodNumber;
11
+ state: z.ZodString;
12
+ title: z.ZodString;
13
+ body: z.ZodNullable<z.ZodString>;
14
+ mergeable: z.ZodString;
15
+ reviewDecision: z.ZodString;
16
+ checks: z.ZodArray<z.ZodObject<{
17
+ name: z.ZodString;
18
+ status: z.ZodString;
19
+ conclusion: z.ZodNullable<z.ZodString>;
20
+ }, z.core.$strip>>;
21
+ url: z.ZodString;
22
+ headBranch: z.ZodString;
23
+ baseBranch: z.ZodString;
24
+ additions: z.ZodNumber;
25
+ deletions: z.ZodNumber;
26
+ changedFiles: z.ZodNumber;
27
+ }, z.core.$strip>;
28
+ export type PrViewResult = z.infer<typeof PrViewResultSchema>;
29
+ /** Zod schema for a single PR in list output. */
30
+ export declare const PrListItemSchema: z.ZodObject<{
31
+ number: z.ZodNumber;
32
+ state: z.ZodString;
33
+ title: z.ZodString;
34
+ url: z.ZodString;
35
+ headBranch: z.ZodString;
36
+ author: z.ZodString;
37
+ }, z.core.$strip>;
38
+ /** Zod schema for structured pr-list output. */
39
+ export declare const PrListResultSchema: z.ZodObject<{
40
+ prs: z.ZodArray<z.ZodObject<{
41
+ number: z.ZodNumber;
42
+ state: z.ZodString;
43
+ title: z.ZodString;
44
+ url: z.ZodString;
45
+ headBranch: z.ZodString;
46
+ author: z.ZodString;
47
+ }, z.core.$strip>>;
48
+ total: z.ZodNumber;
49
+ }, z.core.$strip>;
50
+ export type PrListResult = z.infer<typeof PrListResultSchema>;
51
+ /** Zod schema for structured pr-create output. */
52
+ export declare const PrCreateResultSchema: z.ZodObject<{
53
+ number: z.ZodNumber;
54
+ url: z.ZodString;
55
+ }, z.core.$strip>;
56
+ export type PrCreateResult = z.infer<typeof PrCreateResultSchema>;
57
+ /** Zod schema for structured issue-view output. */
58
+ export declare const IssueViewResultSchema: z.ZodObject<{
59
+ number: z.ZodNumber;
60
+ state: z.ZodString;
61
+ title: z.ZodString;
62
+ body: z.ZodNullable<z.ZodString>;
63
+ labels: z.ZodArray<z.ZodString>;
64
+ assignees: z.ZodArray<z.ZodString>;
65
+ url: z.ZodString;
66
+ createdAt: z.ZodString;
67
+ }, z.core.$strip>;
68
+ export type IssueViewResult = z.infer<typeof IssueViewResultSchema>;
69
+ /** Zod schema for a single issue in list output. */
70
+ export declare const IssueListItemSchema: z.ZodObject<{
71
+ number: z.ZodNumber;
72
+ state: z.ZodString;
73
+ title: z.ZodString;
74
+ url: z.ZodString;
75
+ labels: z.ZodArray<z.ZodString>;
76
+ assignees: z.ZodArray<z.ZodString>;
77
+ }, z.core.$strip>;
78
+ /** Zod schema for structured issue-list output. */
79
+ export declare const IssueListResultSchema: z.ZodObject<{
80
+ issues: z.ZodArray<z.ZodObject<{
81
+ number: z.ZodNumber;
82
+ state: z.ZodString;
83
+ title: z.ZodString;
84
+ url: z.ZodString;
85
+ labels: z.ZodArray<z.ZodString>;
86
+ assignees: z.ZodArray<z.ZodString>;
87
+ }, z.core.$strip>>;
88
+ total: z.ZodNumber;
89
+ }, z.core.$strip>;
90
+ export type IssueListResult = z.infer<typeof IssueListResultSchema>;
91
+ /** Zod schema for structured issue-create output. */
92
+ export declare const IssueCreateResultSchema: z.ZodObject<{
93
+ number: z.ZodNumber;
94
+ url: z.ZodString;
95
+ }, z.core.$strip>;
96
+ export type IssueCreateResult = z.infer<typeof IssueCreateResultSchema>;
97
+ /** Zod schema for a single job in a workflow run. */
98
+ export declare const RunJobSchema: z.ZodObject<{
99
+ name: z.ZodString;
100
+ status: z.ZodString;
101
+ conclusion: z.ZodNullable<z.ZodString>;
102
+ }, z.core.$strip>;
103
+ /** Zod schema for structured run-view output. */
104
+ export declare const RunViewResultSchema: z.ZodObject<{
105
+ id: z.ZodNumber;
106
+ status: z.ZodString;
107
+ conclusion: z.ZodNullable<z.ZodString>;
108
+ name: z.ZodString;
109
+ workflowName: z.ZodString;
110
+ headBranch: z.ZodString;
111
+ jobs: z.ZodArray<z.ZodObject<{
112
+ name: z.ZodString;
113
+ status: z.ZodString;
114
+ conclusion: z.ZodNullable<z.ZodString>;
115
+ }, z.core.$strip>>;
116
+ url: z.ZodString;
117
+ createdAt: z.ZodString;
118
+ }, z.core.$strip>;
119
+ export type RunViewResult = z.infer<typeof RunViewResultSchema>;
120
+ /** Zod schema for a single run in list output. */
121
+ export declare const RunListItemSchema: z.ZodObject<{
122
+ id: z.ZodNumber;
123
+ status: z.ZodString;
124
+ conclusion: z.ZodNullable<z.ZodString>;
125
+ name: z.ZodString;
126
+ workflowName: z.ZodString;
127
+ headBranch: z.ZodString;
128
+ url: z.ZodString;
129
+ createdAt: z.ZodString;
130
+ }, z.core.$strip>;
131
+ /** Zod schema for structured run-list output. */
132
+ export declare const RunListResultSchema: z.ZodObject<{
133
+ runs: z.ZodArray<z.ZodObject<{
134
+ id: z.ZodNumber;
135
+ status: z.ZodString;
136
+ conclusion: z.ZodNullable<z.ZodString>;
137
+ name: z.ZodString;
138
+ workflowName: z.ZodString;
139
+ headBranch: z.ZodString;
140
+ url: z.ZodString;
141
+ createdAt: z.ZodString;
142
+ }, z.core.$strip>>;
143
+ total: z.ZodNumber;
144
+ }, z.core.$strip>;
145
+ export type RunListResult = z.infer<typeof RunListResultSchema>;
146
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,oDAAoD;AACpD,eAAO,MAAM,aAAa;;;;iBAIxB,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;iBAc7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,iDAAiD;AACjD,eAAO,MAAM,gBAAgB;;;;;;;iBAO3B,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAG7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,kDAAkD;AAClD,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,mDAAmD;AACnD,eAAO,MAAM,qBAAqB;;;;;;;;;iBAShC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,oDAAoD;AACpD,eAAO,MAAM,mBAAmB;;;;;;;iBAO9B,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAGhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,qDAAqD;AACrD,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,qDAAqD;AACrD,eAAO,MAAM,YAAY;;;;iBAIvB,CAAC;AAEH,iDAAiD;AACjD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAU9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,kDAAkD;AAClD,eAAO,MAAM,iBAAiB;;;;;;;;;iBAS5B,CAAC;AAEH,iDAAiD;AACjD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;iBAG9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { z } from "zod";
2
+ // ── PR schemas ───────────────────────────────────────────────────────
3
+ /** Zod schema for a single status check on a PR. */
4
+ export const PrCheckSchema = z.object({
5
+ name: z.string(),
6
+ status: z.string(),
7
+ conclusion: z.string().nullable(),
8
+ });
9
+ /** Zod schema for structured pr-view output. */
10
+ export const PrViewResultSchema = z.object({
11
+ number: z.number(),
12
+ state: z.string(),
13
+ title: z.string(),
14
+ body: z.string().nullable(),
15
+ mergeable: z.string(),
16
+ reviewDecision: z.string(),
17
+ checks: z.array(PrCheckSchema),
18
+ url: z.string(),
19
+ headBranch: z.string(),
20
+ baseBranch: z.string(),
21
+ additions: z.number(),
22
+ deletions: z.number(),
23
+ changedFiles: z.number(),
24
+ });
25
+ /** Zod schema for a single PR in list output. */
26
+ export const PrListItemSchema = z.object({
27
+ number: z.number(),
28
+ state: z.string(),
29
+ title: z.string(),
30
+ url: z.string(),
31
+ headBranch: z.string(),
32
+ author: z.string(),
33
+ });
34
+ /** Zod schema for structured pr-list output. */
35
+ export const PrListResultSchema = z.object({
36
+ prs: z.array(PrListItemSchema),
37
+ total: z.number(),
38
+ });
39
+ /** Zod schema for structured pr-create output. */
40
+ export const PrCreateResultSchema = z.object({
41
+ number: z.number(),
42
+ url: z.string(),
43
+ });
44
+ // ── Issue schemas ────────────────────────────────────────────────────
45
+ /** Zod schema for structured issue-view output. */
46
+ export const IssueViewResultSchema = z.object({
47
+ number: z.number(),
48
+ state: z.string(),
49
+ title: z.string(),
50
+ body: z.string().nullable(),
51
+ labels: z.array(z.string()),
52
+ assignees: z.array(z.string()),
53
+ url: z.string(),
54
+ createdAt: z.string(),
55
+ });
56
+ /** Zod schema for a single issue in list output. */
57
+ export const IssueListItemSchema = z.object({
58
+ number: z.number(),
59
+ state: z.string(),
60
+ title: z.string(),
61
+ url: z.string(),
62
+ labels: z.array(z.string()),
63
+ assignees: z.array(z.string()),
64
+ });
65
+ /** Zod schema for structured issue-list output. */
66
+ export const IssueListResultSchema = z.object({
67
+ issues: z.array(IssueListItemSchema),
68
+ total: z.number(),
69
+ });
70
+ /** Zod schema for structured issue-create output. */
71
+ export const IssueCreateResultSchema = z.object({
72
+ number: z.number(),
73
+ url: z.string(),
74
+ });
75
+ // ── Run schemas ──────────────────────────────────────────────────────
76
+ /** Zod schema for a single job in a workflow run. */
77
+ export const RunJobSchema = z.object({
78
+ name: z.string(),
79
+ status: z.string(),
80
+ conclusion: z.string().nullable(),
81
+ });
82
+ /** Zod schema for structured run-view output. */
83
+ export const RunViewResultSchema = z.object({
84
+ id: z.number(),
85
+ status: z.string(),
86
+ conclusion: z.string().nullable(),
87
+ name: z.string(),
88
+ workflowName: z.string(),
89
+ headBranch: z.string(),
90
+ jobs: z.array(RunJobSchema),
91
+ url: z.string(),
92
+ createdAt: z.string(),
93
+ });
94
+ /** Zod schema for a single run in list output. */
95
+ export const RunListItemSchema = z.object({
96
+ id: z.number(),
97
+ status: z.string(),
98
+ conclusion: z.string().nullable(),
99
+ name: z.string(),
100
+ workflowName: z.string(),
101
+ headBranch: z.string(),
102
+ url: z.string(),
103
+ createdAt: z.string(),
104
+ });
105
+ /** Zod schema for structured run-list output. */
106
+ export const RunListResultSchema = z.object({
107
+ runs: z.array(RunListItemSchema),
108
+ total: z.number(),
109
+ });
110
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wEAAwE;AAExE,oDAAoD;AACpD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAC9B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAIH,iDAAiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,kDAAkD;AAClD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAIH,wEAAwE;AAExE,mDAAmD;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH,oDAAoD;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,qDAAqD;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAIH,wEAAwE;AAExE,qDAAqD;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerAllTools(server: McpServer): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAUjD"}
@@ -0,0 +1,29 @@
1
+ import { shouldRegisterTool } from "@paretools/shared";
2
+ import { registerPrViewTool } from "./pr-view.js";
3
+ import { registerPrListTool } from "./pr-list.js";
4
+ import { registerPrCreateTool } from "./pr-create.js";
5
+ import { registerIssueViewTool } from "./issue-view.js";
6
+ import { registerIssueListTool } from "./issue-list.js";
7
+ import { registerIssueCreateTool } from "./issue-create.js";
8
+ import { registerRunViewTool } from "./run-view.js";
9
+ import { registerRunListTool } from "./run-list.js";
10
+ export function registerAllTools(server) {
11
+ const s = (name) => shouldRegisterTool("github", name);
12
+ if (s("pr-view"))
13
+ registerPrViewTool(server);
14
+ if (s("pr-list"))
15
+ registerPrListTool(server);
16
+ if (s("pr-create"))
17
+ registerPrCreateTool(server);
18
+ if (s("issue-view"))
19
+ registerIssueViewTool(server);
20
+ if (s("issue-list"))
21
+ registerIssueListTool(server);
22
+ if (s("issue-create"))
23
+ registerIssueCreateTool(server);
24
+ if (s("run-view"))
25
+ registerRunViewTool(server);
26
+ if (s("run-list"))
27
+ registerRunListTool(server);
28
+ }
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,CAAC,SAAS,CAAC;QAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,SAAS,CAAC;QAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,WAAW,CAAC;QAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,YAAY,CAAC;QAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,YAAY,CAAC;QAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,cAAc,CAAC;QAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,UAAU,CAAC;QAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,UAAU,CAAC;QAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerIssueCreateTool(server: McpServer): void;
3
+ //# sourceMappingURL=issue-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-create.d.ts","sourceRoot":"","sources":["../../src/tools/issue-create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,QAkDxD"}
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ import { dualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { ghCmd } from "../lib/gh-runner.js";
4
+ import { parseIssueCreate } from "../lib/parsers.js";
5
+ import { formatIssueCreate } from "../lib/formatters.js";
6
+ import { IssueCreateResultSchema } from "../schemas/index.js";
7
+ export function registerIssueCreateTool(server) {
8
+ server.registerTool("issue-create", {
9
+ title: "Issue Create",
10
+ description: "Creates a new issue. Returns structured data with issue number and URL. Use instead of running `gh issue create` in the terminal.",
11
+ inputSchema: {
12
+ title: z.string().max(INPUT_LIMITS.SHORT_STRING_MAX).describe("Issue title"),
13
+ body: z.string().max(INPUT_LIMITS.STRING_MAX).describe("Issue body/description"),
14
+ labels: z
15
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
16
+ .max(INPUT_LIMITS.ARRAY_MAX)
17
+ .optional()
18
+ .describe("Labels to apply"),
19
+ path: z
20
+ .string()
21
+ .max(INPUT_LIMITS.PATH_MAX)
22
+ .optional()
23
+ .describe("Repository path (default: cwd)"),
24
+ },
25
+ outputSchema: IssueCreateResultSchema,
26
+ }, async ({ title, body, labels, path }) => {
27
+ const cwd = path || process.cwd();
28
+ assertNoFlagInjection(title, "title");
29
+ if (labels) {
30
+ for (const label of labels) {
31
+ assertNoFlagInjection(label, "labels");
32
+ }
33
+ }
34
+ const args = ["issue", "create", "--title", title, "--body", body];
35
+ if (labels && labels.length > 0) {
36
+ for (const label of labels) {
37
+ args.push("--label", label);
38
+ }
39
+ }
40
+ const result = await ghCmd(args, cwd);
41
+ if (result.exitCode !== 0) {
42
+ throw new Error(`gh issue create failed: ${result.stderr}`);
43
+ }
44
+ const data = parseIssueCreate(result.stdout);
45
+ return dualOutput(data, formatIssueCreate);
46
+ });
47
+ }
48
+ //# sourceMappingURL=issue-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-create.js","sourceRoot":"","sources":["../../src/tools/issue-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,mIAAmI;QACrI,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC5E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAChF,MAAM,EAAE,CAAC;iBACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;iBACpD,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,EAAE;iBACV,QAAQ,CAAC,iBAAiB,CAAC;YAC9B,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;SAC9C;QACD,YAAY,EAAE,uBAAuB;KACtC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAElC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerIssueListTool(server: McpServer): void;
3
+ //# sourceMappingURL=issue-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-list.d.ts","sourceRoot":"","sources":["../../src/tools/issue-list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QAmEtD"}
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { ghCmd } from "../lib/gh-runner.js";
4
+ import { parseIssueList } from "../lib/parsers.js";
5
+ import { formatIssueList, compactIssueListMap, formatIssueListCompact } from "../lib/formatters.js";
6
+ import { IssueListResultSchema } from "../schemas/index.js";
7
+ const ISSUE_LIST_FIELDS = "number,state,title,url,labels,assignees";
8
+ export function registerIssueListTool(server) {
9
+ server.registerTool("issue-list", {
10
+ title: "Issue List",
11
+ description: "Lists issues with optional filters. Returns structured list with issue number, state, title, labels, and assignees. Use instead of running `gh issue list` in the terminal.",
12
+ inputSchema: {
13
+ state: z
14
+ .enum(["open", "closed", "all"])
15
+ .optional()
16
+ .default("open")
17
+ .describe("Filter by issue state (default: open)"),
18
+ limit: z
19
+ .number()
20
+ .optional()
21
+ .default(30)
22
+ .describe("Maximum number of issues to return (default: 30)"),
23
+ label: z.string().max(INPUT_LIMITS.SHORT_STRING_MAX).optional().describe("Filter by label"),
24
+ assignee: z
25
+ .string()
26
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
27
+ .optional()
28
+ .describe("Filter by assignee username"),
29
+ path: z
30
+ .string()
31
+ .max(INPUT_LIMITS.PATH_MAX)
32
+ .optional()
33
+ .describe("Repository path (default: cwd)"),
34
+ compact: z
35
+ .boolean()
36
+ .optional()
37
+ .default(true)
38
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
39
+ },
40
+ outputSchema: IssueListResultSchema,
41
+ }, async ({ state, limit, label, assignee, path, compact }) => {
42
+ const cwd = path || process.cwd();
43
+ if (label)
44
+ assertNoFlagInjection(label, "label");
45
+ if (assignee)
46
+ assertNoFlagInjection(assignee, "assignee");
47
+ const args = ["issue", "list", "--json", ISSUE_LIST_FIELDS, "--limit", String(limit)];
48
+ if (state)
49
+ args.push("--state", state);
50
+ if (label)
51
+ args.push("--label", label);
52
+ if (assignee)
53
+ args.push("--assignee", assignee);
54
+ const result = await ghCmd(args, cwd);
55
+ if (result.exitCode !== 0) {
56
+ throw new Error(`gh issue list failed: ${result.stderr}`);
57
+ }
58
+ const data = parseIssueList(result.stdout);
59
+ return compactDualOutput(data, result.stdout, formatIssueList, compactIssueListMap, formatIssueListCompact, compact === false);
60
+ });
61
+ }
62
+ //# sourceMappingURL=issue-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-list.js","sourceRoot":"","sources":["../../src/tools/issue-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerIssueViewTool(server: McpServer): void;
3
+ //# sourceMappingURL=issue-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-view.d.ts","sourceRoot":"","sources":["../../src/tools/issue-view.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QA6CtD"}
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, INPUT_LIMITS } from "@paretools/shared";
3
+ import { ghCmd } from "../lib/gh-runner.js";
4
+ import { parseIssueView } from "../lib/parsers.js";
5
+ import { formatIssueView, compactIssueViewMap, formatIssueViewCompact } from "../lib/formatters.js";
6
+ import { IssueViewResultSchema } from "../schemas/index.js";
7
+ const ISSUE_VIEW_FIELDS = "number,state,title,body,labels,assignees,url,createdAt";
8
+ export function registerIssueViewTool(server) {
9
+ server.registerTool("issue-view", {
10
+ title: "Issue View",
11
+ description: "Views an issue by number. Returns structured data with state, labels, assignees, and body. Use instead of running `gh issue view` in the terminal.",
12
+ inputSchema: {
13
+ number: z.number().describe("Issue number"),
14
+ path: z
15
+ .string()
16
+ .max(INPUT_LIMITS.PATH_MAX)
17
+ .optional()
18
+ .describe("Repository path (default: cwd)"),
19
+ compact: z
20
+ .boolean()
21
+ .optional()
22
+ .default(true)
23
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
24
+ },
25
+ outputSchema: IssueViewResultSchema,
26
+ }, async ({ number, path, compact }) => {
27
+ const cwd = path || process.cwd();
28
+ const args = ["issue", "view", String(number), "--json", ISSUE_VIEW_FIELDS];
29
+ const result = await ghCmd(args, cwd);
30
+ if (result.exitCode !== 0) {
31
+ throw new Error(`gh issue view failed: ${result.stderr}`);
32
+ }
33
+ const data = parseIssueView(result.stdout);
34
+ return compactDualOutput(data, result.stdout, formatIssueView, compactIssueViewMap, formatIssueViewCompact, compact === false);
35
+ });
36
+ }
37
+ //# sourceMappingURL=issue-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-view.js","sourceRoot":"","sources":["../../src/tools/issue-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,iBAAiB,GAAG,wDAAwD,CAAC;AAEnF,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,oJAAoJ;QACtJ,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC3C,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,qBAAqB;KACpC,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAElC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerPrCreateTool(server: McpServer): void;
3
+ //# sourceMappingURL=pr-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-create.d.ts","sourceRoot":"","sources":["../../src/tools/pr-create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAmDrD"}
@@ -0,0 +1,54 @@
1
+ import { z } from "zod";
2
+ import { dualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { ghCmd } from "../lib/gh-runner.js";
4
+ import { parsePrCreate } from "../lib/parsers.js";
5
+ import { formatPrCreate } from "../lib/formatters.js";
6
+ import { PrCreateResultSchema } from "../schemas/index.js";
7
+ export function registerPrCreateTool(server) {
8
+ server.registerTool("pr-create", {
9
+ title: "PR Create",
10
+ description: "Creates a new pull request. Returns structured data with PR number and URL. Use instead of running `gh pr create` in the terminal.",
11
+ inputSchema: {
12
+ title: z.string().max(INPUT_LIMITS.SHORT_STRING_MAX).describe("Pull request title"),
13
+ body: z.string().max(INPUT_LIMITS.STRING_MAX).describe("Pull request body/description"),
14
+ base: z
15
+ .string()
16
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
17
+ .optional()
18
+ .describe("Base branch (default: repo default branch)"),
19
+ head: z
20
+ .string()
21
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
22
+ .optional()
23
+ .describe("Head branch (default: current branch)"),
24
+ draft: z.boolean().optional().default(false).describe("Create as draft PR"),
25
+ path: z
26
+ .string()
27
+ .max(INPUT_LIMITS.PATH_MAX)
28
+ .optional()
29
+ .describe("Repository path (default: cwd)"),
30
+ },
31
+ outputSchema: PrCreateResultSchema,
32
+ }, async ({ title, body, base, head, draft, path }) => {
33
+ const cwd = path || process.cwd();
34
+ assertNoFlagInjection(title, "title");
35
+ if (base)
36
+ assertNoFlagInjection(base, "base");
37
+ if (head)
38
+ assertNoFlagInjection(head, "head");
39
+ const args = ["pr", "create", "--title", title, "--body", body];
40
+ if (base)
41
+ args.push("--base", base);
42
+ if (head)
43
+ args.push("--head", head);
44
+ if (draft)
45
+ args.push("--draft");
46
+ const result = await ghCmd(args, cwd);
47
+ if (result.exitCode !== 0) {
48
+ throw new Error(`gh pr create failed: ${result.stderr}`);
49
+ }
50
+ const data = parsePrCreate(result.stdout);
51
+ return dualOutput(data, formatPrCreate);
52
+ });
53
+ }
54
+ //# sourceMappingURL=pr-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-create.js","sourceRoot":"","sources":["../../src/tools/pr-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,oIAAoI;QACtI,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACnF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACvF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,EAAE;iBACV,QAAQ,CAAC,4CAA4C,CAAC;YACzD,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,EAAE;iBACV,QAAQ,CAAC,uCAAuC,CAAC;YACpD,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC3E,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;SAC9C;QACD,YAAY,EAAE,oBAAoB;KACnC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAElC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,IAAI;YAAE,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI;YAAE,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerPrListTool(server: McpServer): void;
3
+ //# sourceMappingURL=pr-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-list.d.ts","sourceRoot":"","sources":["../../src/tools/pr-list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,QAmEnD"}