paperclip-github-plugin 0.4.4 → 0.4.5
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.
- package/README.md +3 -3
- package/dist/manifest.js +23 -15
- package/dist/worker.js +59 -28
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -71,7 +71,7 @@ Paperclip issue linkage on the queue prefers the GitHub issue that the pull requ
|
|
|
71
71
|
|
|
72
72
|
### Agent workflows built in
|
|
73
73
|
|
|
74
|
-
Paperclip agents can search GitHub for duplicates, read and update issues, post comments, create pull requests, inspect changed files and CI, reply to review threads, resolve or unresolve threads, request reviewers,
|
|
74
|
+
Paperclip agents can search GitHub for duplicates, read and update issues, post comments, create pull requests, inspect changed files and CI, reply to review threads, resolve or unresolve threads, request reviewers, search org-level GitHub Projects, and associate pull requests with those projects without leaving the Paperclip plugin surface.
|
|
75
75
|
|
|
76
76
|
## Requirements
|
|
77
77
|
|
|
@@ -185,9 +185,9 @@ The plugin exposes GitHub workflow tools to Paperclip agents, including:
|
|
|
185
185
|
- issue reads, comment reads, comment writes, and metadata updates
|
|
186
186
|
- pull request creation, reads, updates, changed-file inspection, and CI-check inspection
|
|
187
187
|
- review-thread reads, replies, resolve and unresolve actions, and reviewer requests
|
|
188
|
-
- organization-level GitHub Project listing and pull-request-to-project association
|
|
188
|
+
- organization-level GitHub Project search/listing and pull-request-to-project association
|
|
189
189
|
|
|
190
|
-
When an agent
|
|
190
|
+
When an agent sends GitHub body content through the plugin, including issue bodies, pull request descriptions, comments, and review-thread replies, the plugin adds a GitHub-flavored Markdown footer with a horizontal rule and compact heading that discloses AI authorship. If the tool caller supplies `llmModel`, the footer also includes the model name, for example `###### ✨ This comment was AI-generated using gpt-5.4`.
|
|
191
191
|
|
|
192
192
|
Current host caveat: on authenticated Paperclip deployments, the Paperclip host currently guards `GET /api/plugins/tools` and `POST /api/plugins/tools/execute` with board authentication before dispatching to any plugin worker. If an agent run does not have board access for the target company, GitHub Sync tool discovery and execution fail with `403 {"error":"Board access required"}` before this plugin's worker code runs.
|
|
193
193
|
|
package/dist/manifest.js
CHANGED
|
@@ -35,7 +35,7 @@ var projectNumberProperty = {
|
|
|
35
35
|
};
|
|
36
36
|
var llmModelProperty = {
|
|
37
37
|
type: "string",
|
|
38
|
-
description: "Exact LLM name used to draft the
|
|
38
|
+
description: "Exact LLM name used to draft the GitHub content. When provided, the plugin includes it in the mandatory AI-authorship footer."
|
|
39
39
|
};
|
|
40
40
|
var issueTargetSchema = {
|
|
41
41
|
anyOf: [
|
|
@@ -149,7 +149,7 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
149
149
|
{
|
|
150
150
|
name: "update_issue",
|
|
151
151
|
displayName: "Update Issue",
|
|
152
|
-
description: "Update GitHub issue fields such as title, body, state, labels, assignees, or milestone.",
|
|
152
|
+
description: "Update GitHub issue fields such as title, body, state, labels, assignees, or milestone. When a non-empty body is provided, the plugin appends an AI-authorship footer and includes llmModel when supplied.",
|
|
153
153
|
parametersSchema: {
|
|
154
154
|
type: "object",
|
|
155
155
|
additionalProperties: false,
|
|
@@ -162,8 +162,10 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
162
162
|
type: "string"
|
|
163
163
|
},
|
|
164
164
|
body: {
|
|
165
|
-
type: "string"
|
|
165
|
+
type: "string",
|
|
166
|
+
description: "Optional human-facing issue description body. If provided, it must remain non-empty after trimming and removing any existing AI footer."
|
|
166
167
|
},
|
|
168
|
+
llmModel: llmModelProperty,
|
|
167
169
|
state: {
|
|
168
170
|
type: "string",
|
|
169
171
|
enum: ["open", "closed"]
|
|
@@ -215,11 +217,11 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
215
217
|
{
|
|
216
218
|
name: "add_issue_comment",
|
|
217
219
|
displayName: "Add Issue Comment",
|
|
218
|
-
description: "Post a comment on a GitHub issue or pull request. Provide only the human-facing message body;
|
|
220
|
+
description: "Post a comment on a GitHub issue or pull request. Provide only the human-facing message body; it must remain non-empty after trimming and removing any existing AI footer. The plugin appends the required AI-authorship footer and includes llmModel when supplied.",
|
|
219
221
|
parametersSchema: {
|
|
220
222
|
type: "object",
|
|
221
223
|
additionalProperties: false,
|
|
222
|
-
required: ["body"
|
|
224
|
+
required: ["body"],
|
|
223
225
|
...issueTargetSchema,
|
|
224
226
|
properties: {
|
|
225
227
|
repository: repositoryProperty,
|
|
@@ -227,7 +229,8 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
227
229
|
paperclipIssueId: paperclipIssueIdProperty,
|
|
228
230
|
body: {
|
|
229
231
|
type: "string",
|
|
230
|
-
|
|
232
|
+
minLength: 1,
|
|
233
|
+
description: "Human-facing comment body without the AI footer. It must remain non-empty after trimming and removing any existing AI footer."
|
|
231
234
|
},
|
|
232
235
|
llmModel: llmModelProperty
|
|
233
236
|
}
|
|
@@ -236,7 +239,7 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
236
239
|
{
|
|
237
240
|
name: "create_pull_request",
|
|
238
241
|
displayName: "Create Pull Request",
|
|
239
|
-
description: "Open a GitHub pull request once the implementation branch is pushed.",
|
|
242
|
+
description: "Open a GitHub pull request once the implementation branch is pushed. When a non-empty body is provided, the plugin appends an AI-authorship footer and includes llmModel when supplied.",
|
|
240
243
|
parametersSchema: {
|
|
241
244
|
type: "object",
|
|
242
245
|
additionalProperties: false,
|
|
@@ -255,8 +258,10 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
255
258
|
type: "string"
|
|
256
259
|
},
|
|
257
260
|
body: {
|
|
258
|
-
type: "string"
|
|
261
|
+
type: "string",
|
|
262
|
+
description: "Optional human-facing pull request description. If provided, it must remain non-empty after trimming and removing any existing AI footer."
|
|
259
263
|
},
|
|
264
|
+
llmModel: llmModelProperty,
|
|
260
265
|
draft: {
|
|
261
266
|
type: "boolean"
|
|
262
267
|
}
|
|
@@ -281,7 +286,7 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
281
286
|
{
|
|
282
287
|
name: "update_pull_request",
|
|
283
288
|
displayName: "Update Pull Request",
|
|
284
|
-
description: "Edit pull request title, body, base branch, open or close it, or convert between draft and ready for review.",
|
|
289
|
+
description: "Edit pull request title, body, base branch, open or close it, or convert between draft and ready for review. When a non-empty body is provided, the plugin appends an AI-authorship footer and includes llmModel when supplied.",
|
|
285
290
|
parametersSchema: {
|
|
286
291
|
type: "object",
|
|
287
292
|
additionalProperties: false,
|
|
@@ -294,8 +299,10 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
294
299
|
type: "string"
|
|
295
300
|
},
|
|
296
301
|
body: {
|
|
297
|
-
type: "string"
|
|
302
|
+
type: "string",
|
|
303
|
+
description: "Optional human-facing pull request description. If provided, it must remain non-empty after trimming and removing any existing AI footer."
|
|
298
304
|
},
|
|
305
|
+
llmModel: llmModelProperty,
|
|
299
306
|
base: {
|
|
300
307
|
type: "string"
|
|
301
308
|
},
|
|
@@ -358,11 +365,11 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
358
365
|
{
|
|
359
366
|
name: "reply_to_review_thread",
|
|
360
367
|
displayName: "Reply To Review Thread",
|
|
361
|
-
description: "Reply to an existing pull request review thread. Provide only the human-facing body;
|
|
368
|
+
description: "Reply to an existing pull request review thread. Provide only the human-facing body; the plugin appends the required AI-authorship footer and includes llmModel when supplied.",
|
|
362
369
|
parametersSchema: {
|
|
363
370
|
type: "object",
|
|
364
371
|
additionalProperties: false,
|
|
365
|
-
required: ["threadId", "body"
|
|
372
|
+
required: ["threadId", "body"],
|
|
366
373
|
properties: {
|
|
367
374
|
threadId: {
|
|
368
375
|
type: "string",
|
|
@@ -370,7 +377,8 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
370
377
|
},
|
|
371
378
|
body: {
|
|
372
379
|
type: "string",
|
|
373
|
-
|
|
380
|
+
minLength: 1,
|
|
381
|
+
description: "Human-facing reply body without the AI footer. It must remain non-empty after trimming and removing any existing AI footer."
|
|
374
382
|
},
|
|
375
383
|
llmModel: llmModelProperty
|
|
376
384
|
}
|
|
@@ -454,7 +462,7 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
454
462
|
{
|
|
455
463
|
name: "list_organization_projects",
|
|
456
464
|
displayName: "List Organization Projects",
|
|
457
|
-
description: "
|
|
465
|
+
description: "Search or list GitHub organization-level Projects so an agent can choose where to associate pull requests.",
|
|
458
466
|
parametersSchema: {
|
|
459
467
|
type: "object",
|
|
460
468
|
additionalProperties: false,
|
|
@@ -503,7 +511,7 @@ var require2 = createRequire(import.meta.url);
|
|
|
503
511
|
var packageJson = require2("../package.json");
|
|
504
512
|
var DASHBOARD_WIDGET_CAPABILITY = "ui.dashboardWidget.register";
|
|
505
513
|
var SCHEDULE_TICK_CRON = "* * * * *";
|
|
506
|
-
var MANIFEST_VERSION = "0.4.
|
|
514
|
+
var MANIFEST_VERSION = "0.4.5"?.trim() || typeof packageJson.version === "string" && packageJson.version.trim() || process.env.npm_package_version?.trim() || "0.0.0-dev";
|
|
507
515
|
var manifest = {
|
|
508
516
|
id: "paperclip-github-plugin",
|
|
509
517
|
apiVersion: 1,
|
package/dist/worker.js
CHANGED
|
@@ -44,7 +44,7 @@ var projectNumberProperty = {
|
|
|
44
44
|
};
|
|
45
45
|
var llmModelProperty = {
|
|
46
46
|
type: "string",
|
|
47
|
-
description: "Exact LLM name used to draft the
|
|
47
|
+
description: "Exact LLM name used to draft the GitHub content. When provided, the plugin includes it in the mandatory AI-authorship footer."
|
|
48
48
|
};
|
|
49
49
|
var issueTargetSchema = {
|
|
50
50
|
anyOf: [
|
|
@@ -158,7 +158,7 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
158
158
|
{
|
|
159
159
|
name: "update_issue",
|
|
160
160
|
displayName: "Update Issue",
|
|
161
|
-
description: "Update GitHub issue fields such as title, body, state, labels, assignees, or milestone.",
|
|
161
|
+
description: "Update GitHub issue fields such as title, body, state, labels, assignees, or milestone. When a non-empty body is provided, the plugin appends an AI-authorship footer and includes llmModel when supplied.",
|
|
162
162
|
parametersSchema: {
|
|
163
163
|
type: "object",
|
|
164
164
|
additionalProperties: false,
|
|
@@ -171,8 +171,10 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
171
171
|
type: "string"
|
|
172
172
|
},
|
|
173
173
|
body: {
|
|
174
|
-
type: "string"
|
|
174
|
+
type: "string",
|
|
175
|
+
description: "Optional human-facing issue description body. If provided, it must remain non-empty after trimming and removing any existing AI footer."
|
|
175
176
|
},
|
|
177
|
+
llmModel: llmModelProperty,
|
|
176
178
|
state: {
|
|
177
179
|
type: "string",
|
|
178
180
|
enum: ["open", "closed"]
|
|
@@ -224,11 +226,11 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
224
226
|
{
|
|
225
227
|
name: "add_issue_comment",
|
|
226
228
|
displayName: "Add Issue Comment",
|
|
227
|
-
description: "Post a comment on a GitHub issue or pull request. Provide only the human-facing message body;
|
|
229
|
+
description: "Post a comment on a GitHub issue or pull request. Provide only the human-facing message body; it must remain non-empty after trimming and removing any existing AI footer. The plugin appends the required AI-authorship footer and includes llmModel when supplied.",
|
|
228
230
|
parametersSchema: {
|
|
229
231
|
type: "object",
|
|
230
232
|
additionalProperties: false,
|
|
231
|
-
required: ["body"
|
|
233
|
+
required: ["body"],
|
|
232
234
|
...issueTargetSchema,
|
|
233
235
|
properties: {
|
|
234
236
|
repository: repositoryProperty,
|
|
@@ -236,7 +238,8 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
236
238
|
paperclipIssueId: paperclipIssueIdProperty,
|
|
237
239
|
body: {
|
|
238
240
|
type: "string",
|
|
239
|
-
|
|
241
|
+
minLength: 1,
|
|
242
|
+
description: "Human-facing comment body without the AI footer. It must remain non-empty after trimming and removing any existing AI footer."
|
|
240
243
|
},
|
|
241
244
|
llmModel: llmModelProperty
|
|
242
245
|
}
|
|
@@ -245,7 +248,7 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
245
248
|
{
|
|
246
249
|
name: "create_pull_request",
|
|
247
250
|
displayName: "Create Pull Request",
|
|
248
|
-
description: "Open a GitHub pull request once the implementation branch is pushed.",
|
|
251
|
+
description: "Open a GitHub pull request once the implementation branch is pushed. When a non-empty body is provided, the plugin appends an AI-authorship footer and includes llmModel when supplied.",
|
|
249
252
|
parametersSchema: {
|
|
250
253
|
type: "object",
|
|
251
254
|
additionalProperties: false,
|
|
@@ -264,8 +267,10 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
264
267
|
type: "string"
|
|
265
268
|
},
|
|
266
269
|
body: {
|
|
267
|
-
type: "string"
|
|
270
|
+
type: "string",
|
|
271
|
+
description: "Optional human-facing pull request description. If provided, it must remain non-empty after trimming and removing any existing AI footer."
|
|
268
272
|
},
|
|
273
|
+
llmModel: llmModelProperty,
|
|
269
274
|
draft: {
|
|
270
275
|
type: "boolean"
|
|
271
276
|
}
|
|
@@ -290,7 +295,7 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
290
295
|
{
|
|
291
296
|
name: "update_pull_request",
|
|
292
297
|
displayName: "Update Pull Request",
|
|
293
|
-
description: "Edit pull request title, body, base branch, open or close it, or convert between draft and ready for review.",
|
|
298
|
+
description: "Edit pull request title, body, base branch, open or close it, or convert between draft and ready for review. When a non-empty body is provided, the plugin appends an AI-authorship footer and includes llmModel when supplied.",
|
|
294
299
|
parametersSchema: {
|
|
295
300
|
type: "object",
|
|
296
301
|
additionalProperties: false,
|
|
@@ -303,8 +308,10 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
303
308
|
type: "string"
|
|
304
309
|
},
|
|
305
310
|
body: {
|
|
306
|
-
type: "string"
|
|
311
|
+
type: "string",
|
|
312
|
+
description: "Optional human-facing pull request description. If provided, it must remain non-empty after trimming and removing any existing AI footer."
|
|
307
313
|
},
|
|
314
|
+
llmModel: llmModelProperty,
|
|
308
315
|
base: {
|
|
309
316
|
type: "string"
|
|
310
317
|
},
|
|
@@ -367,11 +374,11 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
367
374
|
{
|
|
368
375
|
name: "reply_to_review_thread",
|
|
369
376
|
displayName: "Reply To Review Thread",
|
|
370
|
-
description: "Reply to an existing pull request review thread. Provide only the human-facing body;
|
|
377
|
+
description: "Reply to an existing pull request review thread. Provide only the human-facing body; the plugin appends the required AI-authorship footer and includes llmModel when supplied.",
|
|
371
378
|
parametersSchema: {
|
|
372
379
|
type: "object",
|
|
373
380
|
additionalProperties: false,
|
|
374
|
-
required: ["threadId", "body"
|
|
381
|
+
required: ["threadId", "body"],
|
|
375
382
|
properties: {
|
|
376
383
|
threadId: {
|
|
377
384
|
type: "string",
|
|
@@ -379,7 +386,8 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
379
386
|
},
|
|
380
387
|
body: {
|
|
381
388
|
type: "string",
|
|
382
|
-
|
|
389
|
+
minLength: 1,
|
|
390
|
+
description: "Human-facing reply body without the AI footer. It must remain non-empty after trimming and removing any existing AI footer."
|
|
383
391
|
},
|
|
384
392
|
llmModel: llmModelProperty
|
|
385
393
|
}
|
|
@@ -463,7 +471,7 @@ var GITHUB_AGENT_TOOLS = [
|
|
|
463
471
|
{
|
|
464
472
|
name: "list_organization_projects",
|
|
465
473
|
displayName: "List Organization Projects",
|
|
466
|
-
description: "
|
|
474
|
+
description: "Search or list GitHub organization-level Projects so an agent can choose where to associate pull requests.",
|
|
467
475
|
parametersSchema: {
|
|
468
476
|
type: "object",
|
|
469
477
|
additionalProperties: false,
|
|
@@ -629,7 +637,9 @@ var IMPORTED_ISSUE_WAKE_REASON = "GitHub Sync imported an assigned issue that is
|
|
|
629
637
|
var ISSUE_LINK_ENTITY_TYPE = "paperclip-github-plugin.issue-link";
|
|
630
638
|
var PULL_REQUEST_LINK_ENTITY_TYPE = "paperclip-github-plugin.pull-request-link";
|
|
631
639
|
var COMMENT_ANNOTATION_ENTITY_TYPE = "paperclip-github-plugin.comment-annotation";
|
|
632
|
-
var
|
|
640
|
+
var AI_AUTHORED_FOOTER_MARKDOWN_PREFIX = "###### \u2728 This ";
|
|
641
|
+
var AI_AUTHORED_LEGACY_FOOTER_PATTERN = /\n\n---\nCreated by a Paperclip AI agent(?: using [^\n]+)?\.\s*$/;
|
|
642
|
+
var AI_AUTHORED_MARKDOWN_FOOTER_PATTERN = /\n\n---\n###### ✨ This (?:comment|issue description|pull request description) was AI-generated(?: using [^\n]+)?\s*$/;
|
|
633
643
|
var HIDDEN_GITHUB_IMPORT_MARKER_PREFIX = "<!-- paperclip-github-plugin-imported-from: ";
|
|
634
644
|
var HIDDEN_GITHUB_IMPORT_MARKER_SUFFIX = " -->";
|
|
635
645
|
var EMPTY_GITHUB_ISSUE_DESCRIPTION_PLACEHOLDER = "_No description provided on GitHub._";
|
|
@@ -7183,22 +7193,36 @@ async function getGitHubPullRequestProjectItems(octokit, repository, pullRequest
|
|
|
7183
7193
|
projectItems
|
|
7184
7194
|
};
|
|
7185
7195
|
}
|
|
7186
|
-
function
|
|
7196
|
+
function stripAiAuthorshipFooter(body) {
|
|
7197
|
+
let strippedBody = body;
|
|
7198
|
+
while (true) {
|
|
7199
|
+
const nextBody = strippedBody.replace(AI_AUTHORED_LEGACY_FOOTER_PATTERN, "").replace(AI_AUTHORED_MARKDOWN_FOOTER_PATTERN, "");
|
|
7200
|
+
if (nextBody === strippedBody) {
|
|
7201
|
+
return strippedBody;
|
|
7202
|
+
}
|
|
7203
|
+
strippedBody = nextBody;
|
|
7204
|
+
}
|
|
7205
|
+
}
|
|
7206
|
+
function formatAiAuthorshipFooter(subject, llmModel) {
|
|
7207
|
+
const trimmedModel = llmModel?.trim();
|
|
7187
7208
|
return `
|
|
7188
7209
|
|
|
7189
7210
|
---
|
|
7190
|
-
${
|
|
7211
|
+
${AI_AUTHORED_FOOTER_MARKDOWN_PREFIX}${subject} was AI-generated${trimmedModel ? ` using ${trimmedModel}` : ""}`;
|
|
7191
7212
|
}
|
|
7192
|
-
function appendAiAuthorshipFooter(body, llmModel) {
|
|
7193
|
-
const trimmedBody = body.trim();
|
|
7213
|
+
function appendAiAuthorshipFooter(body, subject, llmModel) {
|
|
7214
|
+
const trimmedBody = stripAiAuthorshipFooter(body).trim();
|
|
7194
7215
|
if (!trimmedBody) {
|
|
7195
7216
|
throw new Error("Comment body cannot be empty.");
|
|
7196
7217
|
}
|
|
7197
|
-
|
|
7198
|
-
|
|
7199
|
-
|
|
7218
|
+
return `${trimmedBody}${formatAiAuthorshipFooter(subject, llmModel)}`;
|
|
7219
|
+
}
|
|
7220
|
+
function appendOptionalAiAuthorshipFooter(body, subject, llmModel) {
|
|
7221
|
+
const trimmedBody = stripAiAuthorshipFooter(body).trim();
|
|
7222
|
+
if (!trimmedBody) {
|
|
7223
|
+
return void 0;
|
|
7200
7224
|
}
|
|
7201
|
-
return `${trimmedBody}${formatAiAuthorshipFooter(
|
|
7225
|
+
return `${trimmedBody}${formatAiAuthorshipFooter(subject, llmModel)}`;
|
|
7202
7226
|
}
|
|
7203
7227
|
async function listAllGitHubIssueComments(octokit, repository, issueNumber) {
|
|
7204
7228
|
const comments = [];
|
|
@@ -10262,7 +10286,8 @@ function registerGitHubAgentTools(ctx) {
|
|
|
10262
10286
|
removeValues: normalizeToolStringArray(input.removeAssignees)
|
|
10263
10287
|
});
|
|
10264
10288
|
const title = Object.prototype.hasOwnProperty.call(input, "title") && typeof input.title === "string" ? input.title : void 0;
|
|
10265
|
-
const
|
|
10289
|
+
const llmModel = normalizeOptionalToolString(input.llmModel);
|
|
10290
|
+
const body = Object.prototype.hasOwnProperty.call(input, "body") && typeof input.body === "string" ? appendOptionalAiAuthorshipFooter(input.body, "issue description", llmModel) : void 0;
|
|
10266
10291
|
const state = input.state === "open" || input.state === "closed" ? input.state : void 0;
|
|
10267
10292
|
const milestoneNumber = Object.prototype.hasOwnProperty.call(input, "milestoneNumber") ? input.milestoneNumber === null ? null : normalizeToolPositiveInteger(input.milestoneNumber) : void 0;
|
|
10268
10293
|
const hasChanges = title !== void 0 || body !== void 0 || state !== void 0 || Object.prototype.hasOwnProperty.call(input, "milestoneNumber") || normalizeToolStringArray(input.setLabels).length > 0 || normalizeToolStringArray(input.addLabels).length > 0 || normalizeToolStringArray(input.removeLabels).length > 0 || normalizeToolStringArray(input.setAssignees).length > 0 || normalizeToolStringArray(input.addAssignees).length > 0 || normalizeToolStringArray(input.removeAssignees).length > 0;
|
|
@@ -10312,7 +10337,7 @@ function registerGitHubAgentTools(ctx) {
|
|
|
10312
10337
|
const input = getToolInputRecord(params);
|
|
10313
10338
|
const target = await resolveGitHubIssueToolTarget(ctx, runCtx, input);
|
|
10314
10339
|
const octokit = await createGitHubToolOctokit(ctx, runCtx.companyId);
|
|
10315
|
-
const body = appendAiAuthorshipFooter(String(input.body ?? ""), normalizeOptionalToolString(input.llmModel)
|
|
10340
|
+
const body = appendAiAuthorshipFooter(String(input.body ?? ""), "comment", normalizeOptionalToolString(input.llmModel));
|
|
10316
10341
|
const response = await octokit.rest.issues.createComment({
|
|
10317
10342
|
owner: target.repository.owner,
|
|
10318
10343
|
repo: target.repository.repo,
|
|
@@ -10350,6 +10375,11 @@ function registerGitHubAgentTools(ctx) {
|
|
|
10350
10375
|
if (!head || !base || !title) {
|
|
10351
10376
|
throw new Error("head, base, and title are required.");
|
|
10352
10377
|
}
|
|
10378
|
+
const body = typeof input.body === "string" ? appendOptionalAiAuthorshipFooter(
|
|
10379
|
+
input.body,
|
|
10380
|
+
"pull request description",
|
|
10381
|
+
normalizeOptionalToolString(input.llmModel)
|
|
10382
|
+
) : void 0;
|
|
10353
10383
|
const octokit = await createGitHubToolOctokit(ctx, runCtx.companyId);
|
|
10354
10384
|
const response = await octokit.rest.pulls.create({
|
|
10355
10385
|
owner: repository.owner,
|
|
@@ -10357,7 +10387,7 @@ function registerGitHubAgentTools(ctx) {
|
|
|
10357
10387
|
head,
|
|
10358
10388
|
base,
|
|
10359
10389
|
title,
|
|
10360
|
-
...
|
|
10390
|
+
...body !== void 0 ? { body } : {},
|
|
10361
10391
|
...typeof input.draft === "boolean" ? { draft: input.draft } : {},
|
|
10362
10392
|
headers: {
|
|
10363
10393
|
"X-GitHub-Api-Version": GITHUB_API_VERSION
|
|
@@ -10445,7 +10475,8 @@ function registerGitHubAgentTools(ctx) {
|
|
|
10445
10475
|
}
|
|
10446
10476
|
});
|
|
10447
10477
|
const title = Object.prototype.hasOwnProperty.call(input, "title") && typeof input.title === "string" ? input.title : void 0;
|
|
10448
|
-
const
|
|
10478
|
+
const llmModel = normalizeOptionalToolString(input.llmModel);
|
|
10479
|
+
const body = Object.prototype.hasOwnProperty.call(input, "body") && typeof input.body === "string" ? appendOptionalAiAuthorshipFooter(input.body, "pull request description", llmModel) : void 0;
|
|
10449
10480
|
const base = normalizeOptionalToolString(input.base);
|
|
10450
10481
|
const state = input.state === "open" || input.state === "closed" ? input.state : void 0;
|
|
10451
10482
|
const isDraft = typeof input.isDraft === "boolean" ? input.isDraft : void 0;
|
|
@@ -10637,7 +10668,7 @@ function registerGitHubAgentTools(ctx) {
|
|
|
10637
10668
|
if (!threadId) {
|
|
10638
10669
|
throw new Error("threadId is required.");
|
|
10639
10670
|
}
|
|
10640
|
-
const body = appendAiAuthorshipFooter(String(input.body ?? ""), normalizeOptionalToolString(input.llmModel)
|
|
10671
|
+
const body = appendAiAuthorshipFooter(String(input.body ?? ""), "comment", normalizeOptionalToolString(input.llmModel));
|
|
10641
10672
|
const octokit = await createGitHubToolOctokit(ctx, runCtx.companyId);
|
|
10642
10673
|
const response = await octokit.graphql(
|
|
10643
10674
|
GITHUB_ADD_PULL_REQUEST_REVIEW_THREAD_REPLY_MUTATION,
|