paperclip-github-plugin 0.3.4 → 0.3.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 CHANGED
@@ -21,7 +21,7 @@ With this plugin, you can:
21
21
  - configure mappings and import defaults per Paperclip company
22
22
  - run sync manually or on a schedule
23
23
  - triage open pull requests from mapped Paperclip projects in a hosted queue
24
- - give Paperclip agents native GitHub tools for issues, pull requests, CI, and review threads
24
+ - give Paperclip agents native GitHub tools for issues, pull requests, CI, review threads, and org-level projects
25
25
 
26
26
  ## What you get in Paperclip
27
27
 
@@ -53,7 +53,7 @@ GitHub tokens and sync cadence are shared at the plugin instance level, while re
53
53
 
54
54
  ### Project binding that respects existing work
55
55
 
56
- If a company already has a Paperclip project bound to a GitHub repository workspace, the settings UI can reuse that project instead of creating a duplicate. New mappings can also create and bind a Paperclip project automatically.
56
+ If a company already has a Paperclip project bound to a GitHub repository workspace, the settings UI can reuse that project instead of creating a duplicate. New mappings can also create and bind a Paperclip project automatically, and those newly created projects opt into isolated issue checkouts.
57
57
 
58
58
  ### Status sync with delivery context
59
59
 
@@ -67,7 +67,7 @@ Paperclip issue linkage on the queue prefers the GitHub issue that the pull requ
67
67
 
68
68
  ### Agent workflows built in
69
69
 
70
- 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, and request reviewers without leaving the Paperclip plugin surface.
70
+ 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, list org-level GitHub Projects, and associate pull requests with those projects without leaving the Paperclip plugin surface.
71
71
 
72
72
  ## Requirements
73
73
 
@@ -128,6 +128,7 @@ When the local Paperclip API is available, the plugin also syncs labels by name,
128
128
 
129
129
  | GitHub condition | Paperclip status |
130
130
  | --- | --- |
131
+ | Open issue with no linked pull request, created by a repository maintainer | `todo` on first import |
131
132
  | Open issue with no linked pull request | Configured default status, which defaults to `backlog` |
132
133
  | Open issue with a linked pull request and unfinished CI | `in_progress` |
133
134
  | Open issue with failing CI or unresolved review threads | `todo` |
@@ -137,6 +138,7 @@ When the local Paperclip API is available, the plugin also syncs labels by name,
137
138
 
138
139
  Additional behavior:
139
140
 
141
+ - Open issues with no linked pull request that are created by a verified repository maintainer/admin bypass the default imported status and start in `todo`.
140
142
  - Open imported issues that are already in `backlog` stay in `backlog` until someone changes them in Paperclip.
141
143
  - If an imported issue is `done` or `cancelled` and GitHub shows it open again with no linked pull request, sync moves it to `todo` so agents can pick it up again.
142
144
  - Trusted new GitHub comments from the original issue author or a verified maintainer/admin can move an open imported issue back to `todo`.
@@ -175,6 +177,7 @@ The plugin exposes GitHub workflow tools to Paperclip agents, including:
175
177
  - issue reads, comment reads, comment writes, and metadata updates
176
178
  - pull request creation, reads, updates, changed-file inspection, and CI-check inspection
177
179
  - review-thread reads, replies, resolve and unresolve actions, and reviewer requests
180
+ - organization-level GitHub Project listing and pull-request-to-project association
178
181
 
179
182
  When an agent posts a GitHub comment or review-thread reply through the plugin, the message includes a footer disclosing that it was created by a Paperclip AI agent and which model was used.
180
183
 
package/dist/manifest.js CHANGED
@@ -6,6 +6,10 @@ var repositoryProperty = {
6
6
  type: "string",
7
7
  description: "GitHub repository as owner/repo or https://github.com/owner/repo. Omit when the current Paperclip project has exactly one mapped repository."
8
8
  };
9
+ var organizationProperty = {
10
+ type: "string",
11
+ description: "GitHub organization login that owns the Projects."
12
+ };
9
13
  var paperclipIssueIdProperty = {
10
14
  type: "string",
11
15
  description: "Paperclip issue id used to infer the linked GitHub issue and repository when available."
@@ -20,6 +24,15 @@ var pullRequestNumberProperty = {
20
24
  minimum: 1,
21
25
  description: "GitHub pull request number."
22
26
  };
27
+ var projectIdProperty = {
28
+ type: "string",
29
+ description: "GitHub ProjectV2 node id. You can use the id returned by list_organization_projects."
30
+ };
31
+ var projectNumberProperty = {
32
+ type: "integer",
33
+ minimum: 1,
34
+ description: "GitHub organization project number. Requires organization when projectId is not provided."
35
+ };
23
36
  var llmModelProperty = {
24
37
  type: "string",
25
38
  description: "Exact LLM name used to draft the comment. Required so the plugin can append the mandatory AI-authorship footer."
@@ -44,6 +57,16 @@ var pullRequestTargetSchema = {
44
57
  }
45
58
  ]
46
59
  };
60
+ var organizationProjectTargetSchema = {
61
+ anyOf: [
62
+ {
63
+ required: ["projectId"]
64
+ },
65
+ {
66
+ required: ["organization", "projectNumber"]
67
+ }
68
+ ]
69
+ };
47
70
  var GITHUB_AGENT_TOOLS = [
48
71
  {
49
72
  name: "search_repository_items",
@@ -427,6 +450,51 @@ var GITHUB_AGENT_TOOLS = [
427
450
  }
428
451
  ]
429
452
  }
453
+ },
454
+ {
455
+ name: "list_organization_projects",
456
+ displayName: "List Organization Projects",
457
+ description: "List GitHub organization-level Projects so an agent can choose where to associate pull requests.",
458
+ parametersSchema: {
459
+ type: "object",
460
+ additionalProperties: false,
461
+ required: ["organization"],
462
+ properties: {
463
+ organization: organizationProperty,
464
+ includeClosed: {
465
+ type: "boolean",
466
+ description: "Include closed Projects in the results. Defaults to false."
467
+ },
468
+ query: {
469
+ type: "string",
470
+ description: "Optional free-text filter matched against project titles and descriptions after loading the organization projects."
471
+ },
472
+ limit: {
473
+ type: "integer",
474
+ minimum: 1,
475
+ maximum: 100,
476
+ description: "Maximum number of projects to return."
477
+ }
478
+ }
479
+ }
480
+ },
481
+ {
482
+ name: "add_pull_request_to_project",
483
+ displayName: "Add Pull Request To Project",
484
+ description: "Associate a GitHub pull request with an organization-level GitHub Project.",
485
+ parametersSchema: {
486
+ type: "object",
487
+ additionalProperties: false,
488
+ allOf: [pullRequestTargetSchema, organizationProjectTargetSchema],
489
+ properties: {
490
+ repository: repositoryProperty,
491
+ pullRequestNumber: pullRequestNumberProperty,
492
+ paperclipIssueId: paperclipIssueIdProperty,
493
+ projectId: projectIdProperty,
494
+ organization: organizationProperty,
495
+ projectNumber: projectNumberProperty
496
+ }
497
+ }
430
498
  }
431
499
  ];
432
500
 
@@ -435,7 +503,7 @@ var require2 = createRequire(import.meta.url);
435
503
  var packageJson = require2("../package.json");
436
504
  var DASHBOARD_WIDGET_CAPABILITY = "ui.dashboardWidget.register";
437
505
  var SCHEDULE_TICK_CRON = "* * * * *";
438
- var MANIFEST_VERSION = "0.3.4"?.trim() || typeof packageJson.version === "string" && packageJson.version.trim() || process.env.npm_package_version?.trim() || "0.0.0-dev";
506
+ var MANIFEST_VERSION = "0.3.5"?.trim() || typeof packageJson.version === "string" && packageJson.version.trim() || process.env.npm_package_version?.trim() || "0.0.0-dev";
439
507
  var manifest = {
440
508
  id: "paperclip-github-plugin",
441
509
  apiVersion: 1,
package/dist/ui/index.js CHANGED
@@ -27558,7 +27558,10 @@ async function resolveOrCreateProject(companyId, projectName) {
27558
27558
  method: "POST",
27559
27559
  body: JSON.stringify({
27560
27560
  name: projectName.trim(),
27561
- status: "planned"
27561
+ status: "planned",
27562
+ executionWorkspacePolicy: {
27563
+ enabled: true
27564
+ }
27562
27565
  })
27563
27566
  });
27564
27567
  }
@@ -33119,6 +33122,7 @@ export {
33119
33122
  GitHubSyncProjectPullRequestsPage,
33120
33123
  GitHubSyncProjectPullRequestsSidebarItem,
33121
33124
  GitHubSyncSettingsPage,
33122
- index_default as default
33125
+ index_default as default,
33126
+ resolveOrCreateProject
33123
33127
  };
33124
33128
  //# sourceMappingURL=index.js.map