paperclip-github-plugin 0.2.3 → 0.3.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.
- package/README.md +13 -1
- package/dist/manifest.js +18 -1
- package/dist/ui/index.js +30791 -3457
- package/dist/ui/index.js.map +4 -4
- package/dist/worker.js +3648 -246
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -20,6 +20,7 @@ With this plugin, you can:
|
|
|
20
20
|
- keep descriptions, labels, and status aligned with GitHub over time
|
|
21
21
|
- configure mappings and import defaults per Paperclip company
|
|
22
22
|
- run sync manually or on a schedule
|
|
23
|
+
- triage open pull requests from mapped Paperclip projects in a hosted queue
|
|
23
24
|
- give Paperclip agents native GitHub tools for issues, pull requests, CI, and review threads
|
|
24
25
|
|
|
25
26
|
## What you get in Paperclip
|
|
@@ -29,6 +30,7 @@ The plugin adds a full in-host workflow instead of a one-off import script:
|
|
|
29
30
|
- a hosted settings page for GitHub auth, repository mappings, company defaults, and sync controls
|
|
30
31
|
- a dashboard widget that shows readiness, sync status, and last-run results
|
|
31
32
|
- saved sync diagnostics that let operators inspect the latest per-issue failures, raw errors, and suggested next steps
|
|
33
|
+
- a project sidebar item that opens a live project-scoped Pull Requests page for the mapped repository and can show the open PR count through a lightweight badge read
|
|
32
34
|
- manual sync actions from global, project, and issue toolbar surfaces
|
|
33
35
|
- a GitHub detail tab on synced Paperclip issues
|
|
34
36
|
- GitHub link annotations on sync-generated status transition comments when the host supports comment annotations
|
|
@@ -57,6 +59,12 @@ If a company already has a Paperclip project bound to a GitHub repository worksp
|
|
|
57
59
|
|
|
58
60
|
The plugin does more than mirror issue text. It looks at linked pull requests, CI, review threads, and trusted new GitHub comments so imported Paperclip issues can reflect where the work actually is.
|
|
59
61
|
|
|
62
|
+
### Project pull request command center
|
|
63
|
+
|
|
64
|
+
Each mapped project can expose a **Pull Requests** entry in the sidebar that opens a live GitHub queue page for that repository. The sidebar badge uses a lightweight total-count read, while the queue keeps the default view fast by loading only the current 10-row page, uses a repo-wide metrics read for the summary cards, reuses that cached metrics scan to keep filtered views fast by fetching only the visible filtered rows, keeps repo-scoped count, metrics, and per-PR review/check insight caches warm for repeat visits, lets operators explicitly bust those caches with Refresh when they want a live reread, shows total, mergeable, reviewable, and failing cards that filter the table, includes an **Up to date** column that distinguishes current branches, clean update candidates, conflict cases, and unknown freshness when GitHub cannot confirm the comparison, shows the PR target branch with a highlighted default-branch badge, keeps the list sorted by most recently updated first, paginates larger repositories, keeps a compact bottom detail pane with markdown-and-HTML-rendered conversation plus an inline comment composer, supports deterministic **Update branch** actions for clean behind-base pull requests, adds Copilot quick actions that post `@copilot` requests for **Fix CI**, **Rebase**, and **Address review feedback**, requests Copilot through GitHub’s native reviewer flow for **Review**, keeps the existing comment, review, re-run CI, merge, and close actions, hides any pull request action whose required GitHub permission is not verified for the saved token, and opens linked Paperclip issues in a plugin-provided right drawer so operators can stay on the queue page.
|
|
65
|
+
|
|
66
|
+
Paperclip issue linkage on the queue prefers the GitHub issue that the pull request closes, so imported GitHub issues and delivery work stay connected in the same project view. If a pull request has no closing-issue-backed link yet, the queue falls back to the Paperclip issue created directly from that pull request and updates the table immediately when that create action returns.
|
|
67
|
+
|
|
60
68
|
### Agent workflows built in
|
|
61
69
|
|
|
62
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.
|
|
@@ -98,12 +106,13 @@ npx paperclipai plugin install --local "$PWD"
|
|
|
98
106
|
3. If the deployment requires authenticated Paperclip board access, connect it from the same settings page and complete the approval flow.
|
|
99
107
|
4. Add one or more repository mappings for the current company.
|
|
100
108
|
5. For each mapping, either choose an existing GitHub-linked Paperclip project or enter the project name that should receive synced issues.
|
|
101
|
-
6. Optionally configure company-wide defaults for imported issues, including the default assignee, the default Paperclip status, and ignored GitHub usernames.
|
|
109
|
+
6. Optionally configure company-wide defaults for imported issues, including the default assignee, the default Paperclip status, and ignored GitHub usernames. Bot aliases such as `renovate[bot]` are matched when you save `renovate`.
|
|
102
110
|
7. Choose the automatic sync interval in minutes.
|
|
103
111
|
8. Save the settings and run the first manual sync.
|
|
104
112
|
9. Repeat inside other companies if they need their own mappings, defaults, or board access.
|
|
105
113
|
|
|
106
114
|
Repository input accepts either `owner/repo` or `https://github.com/owner/repo`.
|
|
115
|
+
When a token is saved, the settings page audits the mapped repositories for the permissions needed by pull request actions and warns when permissions are missing or GitHub cannot verify them yet.
|
|
107
116
|
|
|
108
117
|
## Synchronization behavior
|
|
109
118
|
|
|
@@ -173,6 +182,8 @@ When an agent posts a GitHub comment or review-thread reply through the plugin,
|
|
|
173
182
|
- If the worker reaches an authenticated HTML page instead of the Paperclip API JSON responses it expects, connect Paperclip board access for that company or set `PAPERCLIP_API_URL` to a worker-accessible Paperclip API origin.
|
|
174
183
|
- If a sync run finishes with partial failures, open the saved troubleshooting panel in GitHub Sync to inspect the repository, issue number, raw error, and suggested fix for each recorded failure.
|
|
175
184
|
- If sync says the Paperclip API URL is not trusted, reopen the plugin from the current Paperclip host so the settings UI can refresh the saved origin, or set `PAPERCLIP_API_URL` for the worker.
|
|
185
|
+
- If a pull request comment or review action is rejected, read the full toast message. Fine-grained GitHub tokens need write access to that repository, and GitHub requires a review summary when requesting changes.
|
|
186
|
+
- If a GitHub-linked project does not show the **Pull requests** sidebar entry, reopen the plugin settings and re-save the mapping. The project pull request surfaces also recover older mappings when saved ids are missing, and they can fall back to the active project's bound GitHub repository when the project already has a GitHub workspace configured.
|
|
176
187
|
- If GitHub rate limiting is hit, the plugin pauses sync until the reported reset time instead of retrying pointlessly.
|
|
177
188
|
- If a manual sync takes longer than the host action window, it continues in the background and updates the UI when it finishes or when a cancellation request stops it.
|
|
178
189
|
|
|
@@ -205,6 +216,7 @@ If you want the seeded `CEO` agent used in manual verification to opt into Codex
|
|
|
205
216
|
- The published version is derived from the GitHub release tag rather than the committed `package.json` version.
|
|
206
217
|
- Tags may be either `1.2.3` or `v1.2.3`; the workflow normalizes both to `1.2.3`.
|
|
207
218
|
- During release, the package version is stamped from the tag before build and publish, and the built plugin manifest uses that same resolved version.
|
|
219
|
+
- After a successful publish, the workflow also commits that resolved version back into the checked-in `package.json` on the release target branch so the repository metadata stays in sync with npm.
|
|
208
220
|
- The workflow is intended for npm trusted publishing through GitHub Actions OIDC, so no long-lived `NPM_TOKEN` secret is required when trusted publishing is configured correctly.
|
|
209
221
|
|
|
210
222
|
## License
|
package/dist/manifest.js
CHANGED
|
@@ -435,7 +435,7 @@ var require2 = createRequire(import.meta.url);
|
|
|
435
435
|
var packageJson = require2("../package.json");
|
|
436
436
|
var DASHBOARD_WIDGET_CAPABILITY = "ui.dashboardWidget.register";
|
|
437
437
|
var SCHEDULE_TICK_CRON = "* * * * *";
|
|
438
|
-
var MANIFEST_VERSION = "0.
|
|
438
|
+
var MANIFEST_VERSION = "0.3.0"?.trim() || typeof packageJson.version === "string" && packageJson.version.trim() || process.env.npm_package_version?.trim() || "0.0.0-dev";
|
|
439
439
|
var manifest = {
|
|
440
440
|
id: "paperclip-github-plugin",
|
|
441
441
|
apiVersion: 1,
|
|
@@ -445,6 +445,7 @@ var manifest = {
|
|
|
445
445
|
author: "\xC1lvaro S\xE1nchez-Mariscal",
|
|
446
446
|
categories: ["connector", "ui"],
|
|
447
447
|
capabilities: [
|
|
448
|
+
"ui.sidebar.register",
|
|
448
449
|
"ui.page.register",
|
|
449
450
|
DASHBOARD_WIDGET_CAPABILITY,
|
|
450
451
|
"ui.detailTab.register",
|
|
@@ -453,6 +454,7 @@ var manifest = {
|
|
|
453
454
|
"plugin.state.read",
|
|
454
455
|
"plugin.state.write",
|
|
455
456
|
"instance.settings.register",
|
|
457
|
+
"projects.read",
|
|
456
458
|
"issues.read",
|
|
457
459
|
"issues.create",
|
|
458
460
|
"issues.update",
|
|
@@ -499,6 +501,21 @@ var manifest = {
|
|
|
499
501
|
},
|
|
500
502
|
ui: {
|
|
501
503
|
slots: [
|
|
504
|
+
{
|
|
505
|
+
type: "page",
|
|
506
|
+
id: "paperclip-github-plugin-project-pull-requests-page",
|
|
507
|
+
displayName: "Pull Requests",
|
|
508
|
+
exportName: "GitHubSyncProjectPullRequestsPage",
|
|
509
|
+
routePath: "github-pull-requests"
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
type: "projectSidebarItem",
|
|
513
|
+
id: "paperclip-github-plugin-project-pull-requests-sidebar-item",
|
|
514
|
+
displayName: "Pull Requests",
|
|
515
|
+
exportName: "GitHubSyncProjectPullRequestsSidebarItem",
|
|
516
|
+
entityTypes: ["project"],
|
|
517
|
+
order: 40
|
|
518
|
+
},
|
|
502
519
|
{
|
|
503
520
|
type: "dashboardWidget",
|
|
504
521
|
id: "paperclip-github-plugin-dashboard-widget",
|