@opentabs-dev/opentabs-plugin-github 0.0.76 → 0.0.77

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 (142) hide show
  1. package/README.md +75 -129
  2. package/dist/adapter.iife.js +1149 -663
  3. package/dist/adapter.iife.js.map +4 -4
  4. package/dist/github-api.d.ts +16 -10
  5. package/dist/github-api.d.ts.map +1 -1
  6. package/dist/github-api.js +314 -112
  7. package/dist/github-api.js.map +1 -1
  8. package/dist/tools/add-reaction.d.ts +5 -9
  9. package/dist/tools/add-reaction.d.ts.map +1 -1
  10. package/dist/tools/add-reaction.js +29 -31
  11. package/dist/tools/add-reaction.js.map +1 -1
  12. package/dist/tools/compare-commits.d.ts +2 -8
  13. package/dist/tools/compare-commits.d.ts.map +1 -1
  14. package/dist/tools/compare-commits.js +32 -34
  15. package/dist/tools/compare-commits.js.map +1 -1
  16. package/dist/tools/create-comment.d.ts +1 -8
  17. package/dist/tools/create-comment.d.ts.map +1 -1
  18. package/dist/tools/create-comment.js +21 -5
  19. package/dist/tools/create-comment.js.map +1 -1
  20. package/dist/tools/create-issue.d.ts +0 -2
  21. package/dist/tools/create-issue.d.ts.map +1 -1
  22. package/dist/tools/create-issue.js +32 -15
  23. package/dist/tools/create-issue.js.map +1 -1
  24. package/dist/tools/create-label.d.ts.map +1 -1
  25. package/dist/tools/create-label.js +20 -12
  26. package/dist/tools/create-label.js.map +1 -1
  27. package/dist/tools/create-or-update-file.d.ts +1 -4
  28. package/dist/tools/create-or-update-file.d.ts.map +1 -1
  29. package/dist/tools/create-or-update-file.js +23 -23
  30. package/dist/tools/create-or-update-file.js.map +1 -1
  31. package/dist/tools/create-pull-request.d.ts.map +1 -1
  32. package/dist/tools/create-pull-request.js +37 -16
  33. package/dist/tools/create-pull-request.js.map +1 -1
  34. package/dist/tools/create-release.d.ts.map +1 -1
  35. package/dist/tools/create-release.js +29 -19
  36. package/dist/tools/create-release.js.map +1 -1
  37. package/dist/tools/create-repo.d.ts.map +1 -1
  38. package/dist/tools/create-repo.js +33 -18
  39. package/dist/tools/create-repo.js.map +1 -1
  40. package/dist/tools/delete-file.d.ts +1 -6
  41. package/dist/tools/delete-file.d.ts.map +1 -1
  42. package/dist/tools/delete-file.js +8 -25
  43. package/dist/tools/delete-file.js.map +1 -1
  44. package/dist/tools/get-file-content.d.ts.map +1 -1
  45. package/dist/tools/get-file-content.js +5 -9
  46. package/dist/tools/get-file-content.js.map +1 -1
  47. package/dist/tools/get-issue.d.ts.map +1 -1
  48. package/dist/tools/get-issue.js +25 -4
  49. package/dist/tools/get-issue.js.map +1 -1
  50. package/dist/tools/get-pull-request-diff.d.ts.map +1 -1
  51. package/dist/tools/get-pull-request-diff.js +19 -5
  52. package/dist/tools/get-pull-request-diff.js.map +1 -1
  53. package/dist/tools/get-pull-request.d.ts.map +1 -1
  54. package/dist/tools/get-pull-request.js +32 -3
  55. package/dist/tools/get-pull-request.js.map +1 -1
  56. package/dist/tools/get-repo.d.ts.map +1 -1
  57. package/dist/tools/get-repo.js +21 -4
  58. package/dist/tools/get-repo.js.map +1 -1
  59. package/dist/tools/get-user-profile.d.ts.map +1 -1
  60. package/dist/tools/get-user-profile.js +15 -2
  61. package/dist/tools/get-user-profile.js.map +1 -1
  62. package/dist/tools/get-workflow-run.d.ts.map +1 -1
  63. package/dist/tools/get-workflow-run.js +28 -5
  64. package/dist/tools/get-workflow-run.js.map +1 -1
  65. package/dist/tools/list-branches.d.ts +0 -2
  66. package/dist/tools/list-branches.d.ts.map +1 -1
  67. package/dist/tools/list-branches.js +3 -9
  68. package/dist/tools/list-branches.js.map +1 -1
  69. package/dist/tools/list-comments.d.ts +0 -2
  70. package/dist/tools/list-comments.d.ts.map +1 -1
  71. package/dist/tools/list-comments.js +33 -10
  72. package/dist/tools/list-comments.js.map +1 -1
  73. package/dist/tools/list-commits.d.ts +0 -2
  74. package/dist/tools/list-commits.d.ts.map +1 -1
  75. package/dist/tools/list-commits.js +8 -13
  76. package/dist/tools/list-commits.js.map +1 -1
  77. package/dist/tools/list-issues.d.ts +2 -2
  78. package/dist/tools/list-issues.d.ts.map +1 -1
  79. package/dist/tools/list-issues.js +43 -16
  80. package/dist/tools/list-issues.js.map +1 -1
  81. package/dist/tools/list-labels.d.ts +0 -2
  82. package/dist/tools/list-labels.d.ts.map +1 -1
  83. package/dist/tools/list-labels.js +18 -10
  84. package/dist/tools/list-labels.js.map +1 -1
  85. package/dist/tools/list-notifications.d.ts +1 -6
  86. package/dist/tools/list-notifications.d.ts.map +1 -1
  87. package/dist/tools/list-notifications.js +30 -23
  88. package/dist/tools/list-notifications.js.map +1 -1
  89. package/dist/tools/list-org-members.d.ts +0 -3
  90. package/dist/tools/list-org-members.d.ts.map +1 -1
  91. package/dist/tools/list-org-members.js +24 -18
  92. package/dist/tools/list-org-members.js.map +1 -1
  93. package/dist/tools/list-pull-request-files.d.ts +0 -3
  94. package/dist/tools/list-pull-request-files.d.ts.map +1 -1
  95. package/dist/tools/list-pull-request-files.js +6 -28
  96. package/dist/tools/list-pull-request-files.js.map +1 -1
  97. package/dist/tools/list-pull-requests.d.ts +2 -4
  98. package/dist/tools/list-pull-requests.d.ts.map +1 -1
  99. package/dist/tools/list-pull-requests.js +34 -18
  100. package/dist/tools/list-pull-requests.js.map +1 -1
  101. package/dist/tools/list-releases.d.ts +0 -2
  102. package/dist/tools/list-releases.d.ts.map +1 -1
  103. package/dist/tools/list-releases.js +37 -10
  104. package/dist/tools/list-releases.js.map +1 -1
  105. package/dist/tools/list-repos.d.ts +0 -7
  106. package/dist/tools/list-repos.d.ts.map +1 -1
  107. package/dist/tools/list-repos.js +18 -23
  108. package/dist/tools/list-repos.js.map +1 -1
  109. package/dist/tools/list-workflow-runs.d.ts +0 -21
  110. package/dist/tools/list-workflow-runs.d.ts.map +1 -1
  111. package/dist/tools/list-workflow-runs.js +32 -43
  112. package/dist/tools/list-workflow-runs.js.map +1 -1
  113. package/dist/tools/merge-pull-request.d.ts +1 -3
  114. package/dist/tools/merge-pull-request.d.ts.map +1 -1
  115. package/dist/tools/merge-pull-request.js +11 -15
  116. package/dist/tools/merge-pull-request.js.map +1 -1
  117. package/dist/tools/request-pull-request-review.d.ts +1 -21
  118. package/dist/tools/request-pull-request-review.d.ts.map +1 -1
  119. package/dist/tools/request-pull-request-review.js +17 -10
  120. package/dist/tools/request-pull-request-review.js.map +1 -1
  121. package/dist/tools/schemas.d.ts +130 -38
  122. package/dist/tools/schemas.d.ts.map +1 -1
  123. package/dist/tools/schemas.js +140 -52
  124. package/dist/tools/schemas.js.map +1 -1
  125. package/dist/tools/search-issues.d.ts +0 -13
  126. package/dist/tools/search-issues.d.ts.map +1 -1
  127. package/dist/tools/search-issues.js +23 -17
  128. package/dist/tools/search-issues.js.map +1 -1
  129. package/dist/tools/search-repos.d.ts +0 -10
  130. package/dist/tools/search-repos.d.ts.map +1 -1
  131. package/dist/tools/search-repos.js +7 -12
  132. package/dist/tools/search-repos.js.map +1 -1
  133. package/dist/tools/update-issue.d.ts +2 -18
  134. package/dist/tools/update-issue.d.ts.map +1 -1
  135. package/dist/tools/update-issue.js +19 -16
  136. package/dist/tools/update-issue.js.map +1 -1
  137. package/dist/tools/update-pull-request.d.ts +2 -24
  138. package/dist/tools/update-pull-request.d.ts.map +1 -1
  139. package/dist/tools/update-pull-request.js +28 -20
  140. package/dist/tools/update-pull-request.js.map +1 -1
  141. package/dist/tools.json +70 -747
  142. package/package.json +10 -4
@@ -1,50 +1,48 @@
1
- import { defineTool, ToolError } from '@opentabs-dev/plugin-sdk';
1
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
2
2
  import { z } from 'zod';
3
- import { api } from '../github-api.js';
3
+ import { getMutationId, graphql } from '../github-api.js';
4
+ // Map from user-friendly names to GitHub GraphQL ReactionContent enum values
5
+ const REACTION_MAP = {
6
+ '+1': 'THUMBS_UP',
7
+ '-1': 'THUMBS_DOWN',
8
+ laugh: 'LAUGH',
9
+ confused: 'CONFUSED',
10
+ heart: 'HEART',
11
+ hooray: 'HOORAY',
12
+ rocket: 'ROCKET',
13
+ eyes: 'EYES',
14
+ };
4
15
  export const addReaction = defineTool({
5
16
  name: 'add_reaction',
6
17
  displayName: 'Add Reaction',
7
- description: 'Add a reaction to an issue, pull request, or comment.',
18
+ description: 'Add a reaction to an issue, pull request, or comment. Requires the node ID of the subject (e.g., from get_issue or get_pull_request).',
8
19
  summary: 'Add a reaction to an issue or comment',
9
20
  icon: 'smile-plus',
10
21
  group: 'Reactions',
11
22
  input: z.object({
12
- owner: z.string().min(1).describe('Repository owner (user or org)'),
13
- repo: z.string().min(1).describe('Repository name'),
23
+ subject_id: z
24
+ .string()
25
+ .min(1)
26
+ .describe('Node ID of the issue, PR, or comment to react to (e.g., "I_kwDOBPD3oc7y2-NQ", "IC_kwDOBPD3oc7xkPTu")'),
14
27
  content: z
15
28
  .enum(['+1', '-1', 'laugh', 'confused', 'heart', 'hooray', 'rocket', 'eyes'])
16
29
  .describe('Reaction emoji name'),
17
- issue_number: z
18
- .number()
19
- .int()
20
- .min(1)
21
- .optional()
22
- .describe('Issue or PR number — provide this OR comment_id, not both'),
23
- comment_id: z.number().int().min(1).optional().describe('Comment ID — provide this OR issue_number, not both'),
24
30
  }),
25
31
  output: z.object({
26
- id: z.number().describe('Reaction ID'),
27
- content: z.string().describe('Reaction emoji name'),
32
+ success: z.boolean().describe('Whether the reaction was added'),
28
33
  }),
29
34
  handle: async (params) => {
30
- let endpoint;
31
- if (params.comment_id) {
32
- endpoint = `/repos/${params.owner}/${params.repo}/issues/comments/${params.comment_id}/reactions`;
33
- }
34
- else if (params.issue_number) {
35
- endpoint = `/repos/${params.owner}/${params.repo}/issues/${params.issue_number}/reactions`;
36
- }
37
- else {
38
- throw ToolError.validation('Either issue_number or comment_id must be provided');
39
- }
40
- const data = await api(endpoint, {
41
- method: 'POST',
42
- body: { content: params.content },
35
+ const reactionContent = REACTION_MAP[params.content];
36
+ if (!reactionContent)
37
+ throw ToolError.validation(`Unknown reaction: ${params.content}`);
38
+ const mutationId = await getMutationId('addReactionMutation');
39
+ await graphql(mutationId, {
40
+ input: {
41
+ subjectId: params.subject_id,
42
+ content: reactionContent,
43
+ },
43
44
  });
44
- return {
45
- id: data.id ?? 0,
46
- content: data.content ?? '',
47
- };
45
+ return { success: true };
48
46
  },
49
47
  });
50
48
  //# sourceMappingURL=add-reaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-reaction.js","sourceRoot":"","sources":["../../src/tools/add-reaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,uDAAuD;IACpE,OAAO,EAAE,uCAAuC;IAChD,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,OAAO,EAAE,CAAC;aACP,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC5E,QAAQ,CAAC,qBAAqB,CAAC;QAClC,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;KAC/G,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KACpD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,IAAI,QAAgB,CAAC;QACrB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,QAAQ,GAAG,UAAU,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,UAAU,YAAY,CAAC;QACpG,CAAC;aAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/B,QAAQ,GAAG,UAAU,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,YAAY,YAAY,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,UAAU,CAAC,oDAAoD,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAoC,QAAQ,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;SAClC,CAAC,CAAC;QACH,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SAC5B,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"add-reaction.js","sourceRoot":"","sources":["../../src/tools/add-reaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE1D,6EAA6E;AAC7E,MAAM,YAAY,GAA2B;IAC3C,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EACT,uIAAuI;IACzI,OAAO,EAAE,uCAAuC;IAChD,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,sGAAsG,CAAC;QACnH,OAAO,EAAE,CAAC;aACP,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC5E,QAAQ,CAAC,qBAAqB,CAAC;KACnC,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAChE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe;YAAE,MAAM,SAAS,CAAC,UAAU,CAAC,qBAAqB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAExF,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC,UAAU,EAAE;YACxB,KAAK,EAAE;gBACL,SAAS,EAAE,MAAM,CAAC,UAAU;gBAC5B,OAAO,EAAE,eAAe;aACzB;SACF,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -4,19 +4,13 @@ export declare const compareCommits: import("@opentabs-dev/plugin-sdk").ToolDefi
4
4
  repo: z.ZodString;
5
5
  basehead: z.ZodString;
6
6
  }, z.core.$strip>, z.ZodObject<{
7
- status: z.ZodString;
8
- ahead_by: z.ZodNumber;
9
- behind_by: z.ZodNumber;
10
- total_commits: z.ZodNumber;
11
7
  files: z.ZodArray<z.ZodObject<{
12
8
  filename: z.ZodString;
13
9
  status: z.ZodString;
14
10
  additions: z.ZodNumber;
15
11
  deletions: z.ZodNumber;
12
+ changes: z.ZodNumber;
16
13
  }, z.core.$strip>>;
17
- commits: z.ZodArray<z.ZodObject<{
18
- sha: z.ZodString;
19
- message: z.ZodString;
20
- }, z.core.$strip>>;
14
+ total_files: z.ZodNumber;
21
15
  }, z.core.$strip>>;
22
16
  //# sourceMappingURL=compare-commits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare-commits.d.ts","sourceRoot":"","sources":["../../src/tools/compare-commits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoCxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;kBA2CzB,CAAC"}
1
+ {"version":3,"file":"compare-commits.d.ts","sourceRoot":"","sources":["../../src/tools/compare-commits.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;kBAoDzB,CAAC"}
@@ -1,16 +1,8 @@
1
+ import { ToolError, fetchText } from '@opentabs-dev/plugin-sdk';
1
2
  import { defineTool } from '@opentabs-dev/plugin-sdk';
2
3
  import { z } from 'zod';
3
- import { api } from '../github-api.js';
4
- const compareFileSchema = z.object({
5
- filename: z.string().describe('File path'),
6
- status: z.string().describe('File status: added, removed, modified, renamed, copied, changed, unchanged'),
7
- additions: z.number().describe('Number of lines added'),
8
- deletions: z.number().describe('Number of lines deleted'),
9
- });
10
- const compareCommitSchema = z.object({
11
- sha: z.string().describe('Full commit SHA'),
12
- message: z.string().describe('Commit message'),
13
- });
4
+ import { isAuthenticated, pageEmbeddedData } from '../github-api.js';
5
+ import { fileDiffSchema, mapFileDiff } from './schemas.js';
14
6
  export const compareCommits = defineTool({
15
7
  name: 'compare_commits',
16
8
  displayName: 'Compare Commits',
@@ -27,31 +19,37 @@ export const compareCommits = defineTool({
27
19
  .describe('Base and head to compare in "base...head" format (e.g., "main...feature-branch")'),
28
20
  }),
29
21
  output: z.object({
30
- status: z.string().describe('Comparison status: ahead, behind, diverged, or identical'),
31
- ahead_by: z.number().describe('Number of commits head is ahead of base'),
32
- behind_by: z.number().describe('Number of commits head is behind base'),
33
- total_commits: z.number().describe('Total number of commits in the comparison'),
34
- files: z.array(compareFileSchema).describe('List of changed files'),
35
- commits: z.array(compareCommitSchema).describe('List of commits'),
22
+ files: z.array(fileDiffSchema).describe('List of changed files'),
23
+ total_files: z.number().describe('Total number of files changed'),
36
24
  }),
37
25
  handle: async (params) => {
38
- const data = await api(`/repos/${params.owner}/${params.repo}/compare/${params.basehead}`);
39
- return {
40
- status: data.status ?? '',
41
- ahead_by: data.ahead_by ?? 0,
42
- behind_by: data.behind_by ?? 0,
43
- total_commits: data.total_commits ?? 0,
44
- files: (data.files ?? []).map(f => ({
45
- filename: f.filename ?? '',
46
- status: f.status ?? '',
47
- additions: f.additions ?? 0,
48
- deletions: f.deletions ?? 0,
49
- })),
50
- commits: (data.commits ?? []).map(c => ({
51
- sha: c.sha ?? '',
52
- message: c.commit?.message ?? '',
53
- })),
54
- };
26
+ if (!isAuthenticated())
27
+ throw ToolError.auth('Not authenticated — please log in to GitHub.');
28
+ // The compare page with embedded data has file diff summaries
29
+ try {
30
+ const data = await pageEmbeddedData(`/${params.owner}/${params.repo}/compare/${params.basehead}`);
31
+ const summaries = data.pullRequestsChangesRoute?.diffSummaries ?? [];
32
+ return {
33
+ files: summaries.map(mapFileDiff),
34
+ total_files: summaries.length,
35
+ };
36
+ }
37
+ catch {
38
+ // Compare page might not have embedded data. Parse the HTML instead.
39
+ const html = await fetchText(`/${params.owner}/${params.repo}/compare/${params.basehead}`, {
40
+ headers: { 'X-Requested-With': 'XMLHttpRequest' },
41
+ });
42
+ const doc = new DOMParser().parseFromString(html, 'text/html');
43
+ const fileEls = doc.querySelectorAll('.file-info a, [data-path]');
44
+ const files = [...fileEls].map(el => ({
45
+ filename: el.getAttribute('data-path') ?? el.textContent?.trim() ?? '',
46
+ status: 'modified',
47
+ additions: 0,
48
+ deletions: 0,
49
+ changes: 0,
50
+ }));
51
+ return { files, total_files: files.length };
52
+ }
55
53
  },
56
54
  });
57
55
  //# sourceMappingURL=compare-commits.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare-commits.js","sourceRoot":"","sources":["../../src/tools/compare-commits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-commits.js","sourceRoot":"","sources":["../../src/tools/compare-commits.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,6 @@ export declare const createComment: import("@opentabs-dev/plugin-sdk").ToolDefin
5
5
  issue_number: z.ZodNumber;
6
6
  body: z.ZodString;
7
7
  }, z.core.$strip>, z.ZodObject<{
8
- comment: z.ZodObject<{
9
- id: z.ZodNumber;
10
- body: z.ZodString;
11
- user_login: z.ZodString;
12
- html_url: z.ZodString;
13
- created_at: z.ZodString;
14
- updated_at: z.ZodString;
15
- }, z.core.$strip>;
8
+ success: z.ZodBoolean;
16
9
  }, z.core.$strip>>;
17
10
  //# sourceMappingURL=create-comment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-comment.d.ts","sourceRoot":"","sources":["../../src/tools/create-comment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;kBAuBxB,CAAC"}
1
+ {"version":3,"file":"create-comment.d.ts","sourceRoot":"","sources":["../../src/tools/create-comment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;;;kBAuCxB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { defineTool } from '@opentabs-dev/plugin-sdk';
2
2
  import { z } from 'zod';
3
- import { api } from '../github-api.js';
4
- import { commentSchema, mapComment } from './schemas.js';
3
+ import { submitPageForm } from '../github-api.js';
5
4
  export const createComment = defineTool({
6
5
  name: 'create_comment',
7
6
  displayName: 'Create Comment',
@@ -16,11 +15,28 @@ export const createComment = defineTool({
16
15
  body: z.string().min(1).describe('Comment body in Markdown'),
17
16
  }),
18
17
  output: z.object({
19
- comment: commentSchema.describe('The created comment'),
18
+ success: z.boolean().describe('Whether the comment was created successfully'),
20
19
  }),
21
20
  handle: async (params) => {
22
- const data = await api(`/repos/${params.owner}/${params.repo}/issues/${params.issue_number}/comments`, { method: 'POST', body: { body: params.body } });
23
- return { comment: mapComment(data) };
21
+ // Determine if this is a PR or issue by trying the PR URL first
22
+ const prPath = `/${params.owner}/${params.repo}/pull/${params.issue_number}`;
23
+ const issuePath = `/${params.owner}/${params.repo}/issues/${params.issue_number}`;
24
+ // Try PR page first, fall back to issue page
25
+ let pagePath;
26
+ try {
27
+ await submitPageForm(prPath, 'form.js-new-comment-form', {
28
+ 'comment[body]': params.body,
29
+ });
30
+ return { success: true };
31
+ }
32
+ catch {
33
+ // If PR page doesn't have the form, try issue page
34
+ pagePath = issuePath;
35
+ }
36
+ await submitPageForm(pagePath, 'form.js-new-comment-form', {
37
+ 'comment[body]': params.body,
38
+ });
39
+ return { success: true };
24
40
  },
25
41
  });
26
42
  //# sourceMappingURL=create-comment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-comment.js","sourceRoot":"","sources":["../../src/tools/create-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,4CAA4C;IACzD,OAAO,EAAE,2CAA2C;IACpD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC9E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KACvD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,UAAU,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,YAAY,WAAW,EAC9E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAChD,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"create-comment.js","sourceRoot":"","sources":["../../src/tools/create-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,4CAA4C;IACzD,OAAO,EAAE,2CAA2C;IACpD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC9E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KAC9E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,gEAAgE;QAChE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,YAAY,EAAE,CAAC;QAC7E,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,YAAY,EAAE,CAAC;QAElF,6CAA6C;QAC7C,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,MAAM,EAAE,0BAA0B,EAAE;gBACvD,eAAe,EAAE,MAAM,CAAC,IAAI;aAC7B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;YACnD,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC;QAED,MAAM,cAAc,CAAC,QAAQ,EAAE,0BAA0B,EAAE;YACzD,eAAe,EAAE,MAAM,CAAC,IAAI;SAC7B,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -4,8 +4,6 @@ export declare const createIssue: import("@opentabs-dev/plugin-sdk").ToolDefinit
4
4
  repo: z.ZodString;
5
5
  title: z.ZodString;
6
6
  body: z.ZodOptional<z.ZodString>;
7
- labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
- assignees: z.ZodOptional<z.ZodArray<z.ZodString>>;
9
7
  }, z.core.$strip>, z.ZodObject<{
10
8
  issue: z.ZodObject<{
11
9
  number: z.ZodNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"create-issue.d.ts","sourceRoot":"","sources":["../../src/tools/create-issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;kBA8BtB,CAAC"}
1
+ {"version":3,"file":"create-issue.d.ts","sourceRoot":"","sources":["../../src/tools/create-issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;kBAqDtB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { defineTool } from '@opentabs-dev/plugin-sdk';
2
2
  import { z } from 'zod';
3
- import { api } from '../github-api.js';
4
- import { issueSchema, mapIssue } from './schemas.js';
3
+ import { getMutationId, graphql, turboData } from '../github-api.js';
4
+ import { issueSchema } from './schemas.js';
5
5
  export const createIssue = defineTool({
6
6
  name: 'create_issue',
7
7
  displayName: 'Create Issue',
@@ -14,25 +14,42 @@ export const createIssue = defineTool({
14
14
  repo: z.string().min(1).describe('Repository name'),
15
15
  title: z.string().min(1).describe('Issue title'),
16
16
  body: z.string().optional().describe('Issue body in Markdown'),
17
- labels: z.array(z.string()).optional().describe('Label names to apply'),
18
- assignees: z.array(z.string()).optional().describe('Logins of users to assign'),
19
17
  }),
20
18
  output: z.object({
21
19
  issue: issueSchema.describe('The created issue'),
22
20
  }),
23
21
  handle: async (params) => {
24
- const body = { title: params.title };
25
- if (params.body !== undefined)
26
- body.body = params.body;
27
- if (params.labels !== undefined)
28
- body.labels = params.labels;
29
- if (params.assignees !== undefined)
30
- body.assignees = params.assignees;
31
- const data = await api(`/repos/${params.owner}/${params.repo}/issues`, {
32
- method: 'POST',
33
- body,
22
+ // Discover the repository's GraphQL node ID via the issues page embedded data
23
+ const { data: repoData } = await turboData(`/${params.owner}/${params.repo}/issues`, { q: 'is:issue is:open' });
24
+ const repoId = repoData?.repository?.id;
25
+ if (!repoId)
26
+ throw new Error('Could not determine repository ID');
27
+ const mutationId = await getMutationId('createIssueMutation');
28
+ const result = await graphql(mutationId, {
29
+ input: {
30
+ repositoryId: repoId,
31
+ title: params.title,
32
+ body: params.body ?? '',
33
+ },
34
34
  });
35
- return { issue: mapIssue(data) };
35
+ const issue = result.createIssue?.issue;
36
+ return {
37
+ issue: {
38
+ number: issue?.number ?? 0,
39
+ title: issue?.title ?? params.title,
40
+ state: 'open',
41
+ body: params.body ?? '',
42
+ html_url: issue?.url ?? `https://github.com/${params.owner}/${params.repo}/issues/${issue?.number ?? 0}`,
43
+ user_login: '',
44
+ labels: [],
45
+ assignees: [],
46
+ comments: 0,
47
+ created_at: new Date().toISOString(),
48
+ updated_at: new Date().toISOString(),
49
+ closed_at: '',
50
+ is_pull_request: false,
51
+ },
52
+ };
36
53
  },
37
54
  });
38
55
  //# sourceMappingURL=create-issue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-issue.js","sourceRoot":"","sources":["../../src/tools/create-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,qCAAqC;IAClD,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAC9D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACvE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAChF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7D,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAEtE,MAAM,IAAI,GAAG,MAAM,GAAG,CAA0B,UAAU,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,SAAS,EAAE;YAC9F,MAAM,EAAE,MAAM;YACd,IAAI;SACL,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"create-issue.js","sourceRoot":"","sources":["../../src/tools/create-issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAY3C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,qCAAqC;IAClD,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KAC/D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,8EAA8E;QAC9E,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CACxC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,SAAS,EACxC,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAC1B,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAoB,UAAU,EAAE;YAC1D,KAAK,EAAE;gBACL,YAAY,EAAE,MAAM;gBACpB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;aACxB;SACF,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC;QACxC,OAAO;YACL,KAAK,EAAE;gBACL,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;gBAC1B,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;gBACnC,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,sBAAsB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,WAAW,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE;gBACxG,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,CAAC;gBACX,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,SAAS,EAAE,EAAE;gBACb,eAAe,EAAE,KAAK;aACvB;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-label.d.ts","sourceRoot":"","sources":["../../src/tools/create-label.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;kBA8BtB,CAAC"}
1
+ {"version":3,"file":"create-label.d.ts","sourceRoot":"","sources":["../../src/tools/create-label.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;kBA2CtB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { defineTool } from '@opentabs-dev/plugin-sdk';
2
2
  import { z } from 'zod';
3
- import { api } from '../github-api.js';
4
- import { labelSchema, mapLabel } from './schemas.js';
3
+ import { getMutationId, graphql, turboData } from '../github-api.js';
4
+ import { labelSchema } from './schemas.js';
5
5
  export const createLabel = defineTool({
6
6
  name: 'create_label',
7
7
  displayName: 'Create Label',
@@ -20,18 +20,26 @@ export const createLabel = defineTool({
20
20
  label: labelSchema.describe('The created label'),
21
21
  }),
22
22
  handle: async (params) => {
23
- const body = {
23
+ // Get repository node ID
24
+ const { data: repoData } = await turboData(`/${params.owner}/${params.repo}/issues`, { q: 'is:issue is:open' });
25
+ const repoId = repoData?.repository?.id;
26
+ if (!repoId)
27
+ throw new Error('Could not determine repository ID');
28
+ const mutationId = await getMutationId('createRepositoryLabelMutation');
29
+ await graphql(mutationId, {
30
+ repositoryId: repoId,
24
31
  name: params.name,
25
- };
26
- if (params.color !== undefined)
27
- body.color = params.color;
28
- if (params.description !== undefined)
29
- body.description = params.description;
30
- const data = await api(`/repos/${params.owner}/${params.repo}/labels`, {
31
- method: 'POST',
32
- body,
32
+ color: params.color ?? 'ededed',
33
+ description: params.description ?? '',
33
34
  });
34
- return { label: mapLabel(data) };
35
+ return {
36
+ label: {
37
+ id: 0,
38
+ name: params.name,
39
+ color: params.color ?? 'ededed',
40
+ description: params.description ?? '',
41
+ },
42
+ };
35
43
  },
36
44
  });
37
45
  //# sourceMappingURL=create-label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-label.js","sourceRoot":"","sources":["../../src/tools/create-label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAiB,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,qCAAqC;IAClD,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;QAC9F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1D,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAE5E,MAAM,IAAI,GAAG,MAAM,GAAG,CAAW,UAAU,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,SAAS,EAAE;YAC/E,MAAM,EAAE,MAAM;YACd,IAAI;SACL,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"create-label.js","sourceRoot":"","sources":["../../src/tools/create-label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,qCAAqC;IAClD,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;QAC9F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,yBAAyB;QACzB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CACxC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,SAAS,EACxC,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAC1B,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,+BAA+B,CAAC,CAAC;QACxE,MAAM,OAAO,CAAC,UAAU,EAAE;YACxB,YAAY,EAAE,MAAM;YACpB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;SACtC,CAAC,CAAC;QAEH,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ;gBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;aACtC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -6,10 +6,7 @@ export declare const createOrUpdateFile: import("@opentabs-dev/plugin-sdk").Tool
6
6
  content: z.ZodString;
7
7
  message: z.ZodString;
8
8
  branch: z.ZodOptional<z.ZodString>;
9
- sha: z.ZodOptional<z.ZodString>;
10
9
  }, z.core.$strip>, z.ZodObject<{
11
- sha: z.ZodString;
12
- commit_sha: z.ZodString;
13
- html_url: z.ZodString;
10
+ success: z.ZodBoolean;
14
11
  }, z.core.$strip>>;
15
12
  //# sourceMappingURL=create-or-update-file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-or-update-file.d.ts","sourceRoot":"","sources":["../../src/tools/create-or-update-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;kBA6C7B,CAAC"}
1
+ {"version":3,"file":"create-or-update-file.d.ts","sourceRoot":"","sources":["../../src/tools/create-or-update-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB;;;;;;;;;kBA+C7B,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { defineTool } from '@opentabs-dev/plugin-sdk';
2
2
  import { z } from 'zod';
3
- import { api } from '../github-api.js';
3
+ import { submitPageForm } from '../github-api.js';
4
4
  export const createOrUpdateFile = defineTool({
5
5
  name: 'create_or_update_file',
6
6
  displayName: 'Create or Update File',
7
- description: 'Create or update a file in a repository. To update an existing file, provide the current file SHA (obtainable from the contents API). Commits directly to the specified branch.',
7
+ description: 'Create or update a file in a repository. Commits directly to the specified branch.',
8
8
  summary: 'Create or update a file in a repository',
9
9
  icon: 'file-edit',
10
10
  group: 'Repositories',
@@ -12,35 +12,35 @@ export const createOrUpdateFile = defineTool({
12
12
  owner: z.string().min(1).describe('Repository owner (user or org)'),
13
13
  repo: z.string().min(1).describe('Repository name'),
14
14
  path: z.string().min(1).describe('File path relative to repository root'),
15
- content: z.string().min(1).describe('File content as a UTF-8 string (will be base64-encoded automatically)'),
15
+ content: z.string().min(1).describe('File content as a UTF-8 string'),
16
16
  message: z.string().min(1).describe('Commit message'),
17
17
  branch: z.string().optional().describe('Branch to commit to (defaults to the default branch)'),
18
- sha: z.string().optional().describe('SHA of the file being replaced — required when updating an existing file'),
19
18
  }),
20
19
  output: z.object({
21
- sha: z.string().describe('SHA of the created/updated file blob'),
22
- commit_sha: z.string().describe('SHA of the commit'),
23
- html_url: z.string().describe('URL to the file on GitHub'),
20
+ success: z.boolean().describe('Whether the file was created/updated'),
24
21
  }),
25
22
  handle: async (params) => {
26
- const body = {
23
+ const branch = params.branch ?? 'main';
24
+ // GitHub's file editor page has a form for creating/updating files.
25
+ // For new files: /:owner/:repo/new/:branch
26
+ // For existing files: /:owner/:repo/edit/:branch/:path
27
+ const fields = {
28
+ value: params.content,
27
29
  message: params.message,
28
- content: btoa(unescape(encodeURIComponent(params.content))),
29
- };
30
- if (params.branch)
31
- body.branch = params.branch;
32
- if (params.sha)
33
- body.sha = params.sha;
34
- const encodedPath = params.path.split('/').map(encodeURIComponent).join('/');
35
- const data = await api(`/repos/${params.owner}/${params.repo}/contents/${encodedPath}`, {
36
- method: 'PUT',
37
- body,
38
- });
39
- return {
40
- sha: data.content?.sha ?? '',
41
- commit_sha: data.commit?.sha ?? '',
42
- html_url: data.content?.html_url ?? '',
30
+ placeholder_message: params.message,
31
+ 'commit-choice': 'direct',
32
+ target_branch: branch,
33
+ quick_pull: '',
34
+ filename: params.path.split('/').pop() ?? '',
43
35
  };
36
+ // Try the edit path first (for existing files), fall back to new path
37
+ try {
38
+ await submitPageForm(`/${params.owner}/${params.repo}/edit/${branch}/${params.path}`, 'form.js-blob-form', fields);
39
+ }
40
+ catch {
41
+ await submitPageForm(`/${params.owner}/${params.repo}/new/${branch}`, 'form.js-blob-form', fields);
42
+ }
43
+ return { success: true };
44
44
  },
45
45
  });
46
46
  //# sourceMappingURL=create-or-update-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-or-update-file.js","sourceRoot":"","sources":["../../src/tools/create-or-update-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC3C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EACT,iLAAiL;IACnL,OAAO,EAAE,yCAAyC;IAClD,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC;QAC5G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QAC9F,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;KAChH,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAChE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAC3D,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAA4B;YACpC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SAC5D,CAAC;QACF,IAAI,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/C,IAAI,MAAM,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAEtC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,MAAM,GAAG,CAGnB,UAAU,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,aAAa,WAAW,EAAE,EAAE;YAClE,MAAM,EAAE,KAAK;YACb,IAAI;SACL,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE;YAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE;YAClC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE;SACvC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"create-or-update-file.js","sourceRoot":"","sources":["../../src/tools/create-or-update-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC3C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,oFAAoF;IACjG,OAAO,EAAE,yCAAyC;IAClD,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;KAC/F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACtE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;QAEvC,oEAAoE;QACpE,2CAA2C;QAC3C,uDAAuD;QACvD,MAAM,MAAM,GAA2B;YACrC,KAAK,EAAE,MAAM,CAAC,OAAO;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,mBAAmB,EAAE,MAAM,CAAC,OAAO;YACnC,eAAe,EAAE,QAAQ;YACzB,aAAa,EAAE,MAAM;YACrB,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;SAC7C,CAAC;QAEF,sEAAsE;QACtE,IAAI,CAAC;YACH,MAAM,cAAc,CAClB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,EAC/D,mBAAmB,EACnB,MAAM,CACP,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,cAAc,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,QAAQ,MAAM,EAAE,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACrG,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-pull-request.d.ts","sourceRoot":"","sources":["../../src/tools/create-pull-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkC5B,CAAC"}
1
+ {"version":3,"file":"create-pull-request.d.ts","sourceRoot":"","sources":["../../src/tools/create-pull-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4D5B,CAAC"}