@paperclipai_dld/plugin-github 2026.319.0-canary.4

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 (48) hide show
  1. package/LICENSE +21 -0
  2. package/dist/constants.d.ts +38 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +30 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/github-types.d.ts +86 -0
  7. package/dist/github-types.d.ts.map +1 -0
  8. package/dist/github-types.js +6 -0
  9. package/dist/github-types.js.map +1 -0
  10. package/dist/github.d.ts +55 -0
  11. package/dist/github.d.ts.map +1 -0
  12. package/dist/github.js +80 -0
  13. package/dist/github.js.map +1 -0
  14. package/dist/index.d.ts +7 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +6 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/manifest.d.ts +4 -0
  19. package/dist/manifest.d.ts.map +1 -0
  20. package/dist/manifest.js +96 -0
  21. package/dist/manifest.js.map +1 -0
  22. package/dist/sync.d.ts +44 -0
  23. package/dist/sync.d.ts.map +1 -0
  24. package/dist/sync.js +107 -0
  25. package/dist/sync.js.map +1 -0
  26. package/dist/tools.d.ts +9 -0
  27. package/dist/tools.d.ts.map +1 -0
  28. package/dist/tools.js +141 -0
  29. package/dist/tools.js.map +1 -0
  30. package/dist/verify-signature.d.ts +10 -0
  31. package/dist/verify-signature.d.ts.map +1 -0
  32. package/dist/verify-signature.js +21 -0
  33. package/dist/verify-signature.js.map +1 -0
  34. package/dist/worker.d.ts +3 -0
  35. package/dist/worker.d.ts.map +1 -0
  36. package/dist/worker.js +368 -0
  37. package/dist/worker.js.map +1 -0
  38. package/package.json +29 -0
  39. package/src/constants.ts +48 -0
  40. package/src/github-types.ts +61 -0
  41. package/src/github.ts +152 -0
  42. package/src/index.ts +6 -0
  43. package/src/manifest.ts +105 -0
  44. package/src/sync.ts +193 -0
  45. package/src/tools.ts +172 -0
  46. package/src/verify-signature.ts +26 -0
  47. package/src/worker.ts +488 -0
  48. package/tsconfig.json +9 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent tools for GitHub issue search, link, and unlink.
3
+ *
4
+ * SDK fix applied: ctx.tools.register requires 3 args (name, declaration, fn).
5
+ * The original mvanhorn plugin used 2-arg form which no longer matches the SDK.
6
+ */
7
+ import type { PluginContext } from "@paperclipai_dld/plugin-sdk";
8
+ export declare function registerTools(ctx: PluginContext): void;
9
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAKjE,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CA+JtD"}
package/dist/tools.js ADDED
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Agent tools for GitHub issue search, link, and unlink.
3
+ *
4
+ * SDK fix applied: ctx.tools.register requires 3 args (name, declaration, fn).
5
+ * The original mvanhorn plugin used 2-arg form which no longer matches the SDK.
6
+ */
7
+ import { TOOL_NAMES } from "./constants.js";
8
+ import * as github from "./github.js";
9
+ import * as sync from "./sync.js";
10
+ export function registerTools(ctx) {
11
+ // -----------------------------------------------------------------------
12
+ // github_search_issues
13
+ // -----------------------------------------------------------------------
14
+ ctx.tools.register(TOOL_NAMES.searchIssues, {
15
+ displayName: "Search GitHub Issues",
16
+ description: "Search GitHub issues in a repository. Returns matching issue titles, states, URLs, and labels.",
17
+ parametersSchema: {
18
+ type: "object",
19
+ properties: {
20
+ query: { type: "string", description: "Search query string" },
21
+ repo: { type: "string", description: "Repository in owner/repo format (optional, uses default if configured)" },
22
+ },
23
+ required: ["query"],
24
+ },
25
+ }, async (params, runCtx) => {
26
+ const p = params;
27
+ const config = (await ctx.config.get());
28
+ const tokenRef = config.githubTokenRef;
29
+ if (!tokenRef)
30
+ return { error: "githubTokenRef not configured" };
31
+ const token = await ctx.secrets.resolve(tokenRef);
32
+ const defaultRepo = config.defaultRepo;
33
+ const repo = p.repo || defaultRepo || "";
34
+ if (!repo) {
35
+ return {
36
+ error: "No repository specified. Pass repo parameter or configure a default repository.",
37
+ };
38
+ }
39
+ try {
40
+ const results = await github.searchIssues(ctx.http.fetch.bind(ctx.http), token, repo, p.query);
41
+ return {
42
+ content: `Found ${results.total_count} issues`,
43
+ data: {
44
+ total_count: results.total_count,
45
+ issues: results.items.map((issue) => ({
46
+ number: issue.number,
47
+ title: issue.title,
48
+ state: issue.state,
49
+ url: issue.html_url,
50
+ labels: issue.labels.map((l) => l.name),
51
+ assignees: issue.assignees.map((a) => a.login),
52
+ updated_at: issue.updated_at,
53
+ })),
54
+ },
55
+ };
56
+ }
57
+ catch (err) {
58
+ return { error: String(err) };
59
+ }
60
+ });
61
+ // -----------------------------------------------------------------------
62
+ // github_link_issue
63
+ // -----------------------------------------------------------------------
64
+ ctx.tools.register(TOOL_NAMES.linkIssue, {
65
+ displayName: "Link GitHub Issue",
66
+ description: "Link a GitHub issue to the current Paperclip issue for bidirectional sync.",
67
+ parametersSchema: {
68
+ type: "object",
69
+ properties: {
70
+ ghIssueUrl: {
71
+ type: "string",
72
+ description: "GitHub issue URL, owner/repo#number, or #number (with a configured default repo)",
73
+ },
74
+ syncDirection: {
75
+ type: "string",
76
+ enum: ["bidirectional", "github-to-paperclip", "paperclip-to-github"],
77
+ description: "Sync direction (defaults to bidirectional)",
78
+ },
79
+ },
80
+ required: ["ghIssueUrl"],
81
+ },
82
+ }, async (params, runCtx) => {
83
+ const p = params;
84
+ const config = (await ctx.config.get());
85
+ const tokenRef = config.githubTokenRef;
86
+ if (!tokenRef)
87
+ return { error: "githubTokenRef not configured" };
88
+ const token = await ctx.secrets.resolve(tokenRef);
89
+ const defaultRepo = config.defaultRepo;
90
+ const ref = github.parseGitHubIssueRef(p.ghIssueUrl, defaultRepo);
91
+ if (!ref)
92
+ return { error: "Could not parse GitHub issue reference." };
93
+ const issueId = runCtx.projectId; // using projectId as proxy; real impl uses context issue
94
+ const companyId = runCtx.companyId;
95
+ if (!issueId || !companyId)
96
+ return { error: "No issue context available." };
97
+ try {
98
+ const ghIssue = await github.getIssue(ctx.http.fetch.bind(ctx.http), token, ref.owner, ref.repo, ref.number);
99
+ const syncDirection = p.syncDirection ?? "bidirectional";
100
+ const link = await sync.createLink(ctx, {
101
+ paperclipIssueId: issueId,
102
+ paperclipCompanyId: companyId,
103
+ ghOwner: ref.owner,
104
+ ghRepo: ref.repo,
105
+ ghNumber: ref.number,
106
+ ghHtmlUrl: ghIssue.html_url,
107
+ ghState: ghIssue.state,
108
+ syncDirection,
109
+ });
110
+ return {
111
+ content: `Linked to GitHub issue #${ref.number} in ${ref.owner}/${ref.repo}`,
112
+ data: { link },
113
+ };
114
+ }
115
+ catch (err) {
116
+ return { error: String(err) };
117
+ }
118
+ });
119
+ // -----------------------------------------------------------------------
120
+ // github_unlink_issue
121
+ // -----------------------------------------------------------------------
122
+ ctx.tools.register(TOOL_NAMES.unlinkIssue, {
123
+ displayName: "Unlink GitHub Issue",
124
+ description: "Remove the GitHub issue link from the current Paperclip issue.",
125
+ parametersSchema: {
126
+ type: "object",
127
+ properties: {},
128
+ },
129
+ }, async (_params, runCtx) => {
130
+ const issueId = runCtx.projectId;
131
+ const companyId = runCtx.companyId;
132
+ if (!issueId || !companyId)
133
+ return { error: "No issue context available." };
134
+ const existing = await sync.getLink(ctx, issueId);
135
+ if (!existing)
136
+ return { error: "No GitHub link found for this issue." };
137
+ await sync.deleteLink(ctx, issueId);
138
+ return { content: `Unlinked GitHub issue #${existing.ghNumber} from ${existing.ghOwner}/${existing.ghRepo}` };
139
+ });
140
+ }
141
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Verify GitHub webhook HMAC-SHA256 signature.
3
+ *
4
+ * @param rawBody The raw request body string (must match what GitHub signed).
5
+ * @param signature The value of the `x-hub-signature-256` header (`sha256=<hex>`).
6
+ * @param secret The shared webhook secret.
7
+ * @returns `true` if the signature is valid.
8
+ */
9
+ export declare function verifyGitHubSignature(rawBody: string, signature: string | undefined, secret: string): boolean;
10
+ //# sourceMappingURL=verify-signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../src/verify-signature.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAWT"}
@@ -0,0 +1,21 @@
1
+ import { createHmac, timingSafeEqual } from "node:crypto";
2
+ /**
3
+ * Verify GitHub webhook HMAC-SHA256 signature.
4
+ *
5
+ * @param rawBody The raw request body string (must match what GitHub signed).
6
+ * @param signature The value of the `x-hub-signature-256` header (`sha256=<hex>`).
7
+ * @param secret The shared webhook secret.
8
+ * @returns `true` if the signature is valid.
9
+ */
10
+ export function verifyGitHubSignature(rawBody, signature, secret) {
11
+ if (!signature || !secret)
12
+ return false;
13
+ const [algo, hex] = signature.split("=", 2);
14
+ if (algo !== "sha256" || !hex)
15
+ return false;
16
+ const expected = createHmac("sha256", secret).update(rawBody, "utf8").digest("hex");
17
+ if (expected.length !== hex.length)
18
+ return false;
19
+ return timingSafeEqual(Buffer.from(expected, "hex"), Buffer.from(hex, "hex"));
20
+ }
21
+ //# sourceMappingURL=verify-signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-signature.js","sourceRoot":"","sources":["../src/verify-signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,SAA6B,EAC7B,MAAc;IAEd,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAExC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5C,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEjD,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const plugin: import("@paperclipai_dld/plugin-sdk").PaperclipPlugin;
2
+ export default plugin;
3
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AA6ZA,QAAA,MAAM,MAAM,uDAuEV,CAAC;AAEH,eAAe,MAAM,CAAC"}
package/dist/worker.js ADDED
@@ -0,0 +1,368 @@
1
+ import { definePlugin, runWorker, } from "@paperclipai_dld/plugin-sdk";
2
+ import { DEFAULT_CONFIG, SUPPORTED_GITHUB_EVENTS, WEBHOOK_KEYS, } from "./constants.js";
3
+ import * as sync from "./sync.js";
4
+ import { registerTools } from "./tools.js";
5
+ import { verifyGitHubSignature } from "./verify-signature.js";
6
+ // ---------------------------------------------------------------------------
7
+ // Helpers
8
+ // ---------------------------------------------------------------------------
9
+ let ctx = null;
10
+ async function getConfig() {
11
+ if (!ctx)
12
+ throw new Error("Plugin not initialized");
13
+ const raw = (await ctx.config.get());
14
+ return { ...DEFAULT_CONFIG, ...raw };
15
+ }
16
+ /** Normalise header access — GitHub sends lowercase, SDK may preserve casing. */
17
+ function getHeader(headers, key) {
18
+ const lower = key.toLowerCase();
19
+ for (const [k, v] of Object.entries(headers)) {
20
+ if (k.toLowerCase() === lower)
21
+ return Array.isArray(v) ? v[0] : v;
22
+ }
23
+ return undefined;
24
+ }
25
+ /**
26
+ * Try to resolve a Paperclip agent from the Git committer email or login.
27
+ * This is a best-effort lookup — the agent list is searched for a name match.
28
+ */
29
+ async function resolveAgent(companyId, login, email) {
30
+ if (!ctx || (!login && !email))
31
+ return null;
32
+ try {
33
+ const agents = await ctx.agents.list({ companyId });
34
+ const needle = (login ?? email ?? "").toLowerCase();
35
+ return (agents.find((a) => a.name.toLowerCase() === needle ||
36
+ a.urlKey?.toLowerCase() === needle) ?? null);
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ /**
43
+ * Store the last processed delivery ID to avoid duplicate processing
44
+ * on retries from GitHub.
45
+ */
46
+ async function isDuplicate(deliveryId) {
47
+ if (!ctx)
48
+ return false;
49
+ try {
50
+ const last = (await ctx.state.get({
51
+ scopeKind: "instance",
52
+ stateKey: `last-delivery-${deliveryId}`,
53
+ }));
54
+ return last != null;
55
+ }
56
+ catch {
57
+ return false;
58
+ }
59
+ }
60
+ async function markDelivery(deliveryId) {
61
+ if (!ctx)
62
+ return;
63
+ try {
64
+ await ctx.state.set({ scopeKind: "instance", stateKey: `last-delivery-${deliveryId}` }, new Date().toISOString());
65
+ }
66
+ catch {
67
+ // best-effort
68
+ }
69
+ }
70
+ // ---------------------------------------------------------------------------
71
+ // Event handlers
72
+ // ---------------------------------------------------------------------------
73
+ async function handleWorkflowRun(payload) {
74
+ const run = payload.workflow_run;
75
+ if (payload.action !== "completed")
76
+ return;
77
+ if (run.conclusion !== "failure" && run.conclusion !== "timed_out")
78
+ return;
79
+ const config = await getConfig();
80
+ if (!config.companyId) {
81
+ ctx?.logger.warn("No companyId configured — skipping issue creation");
82
+ return;
83
+ }
84
+ const repo = payload.repository.full_name;
85
+ const commitAuthor = run.head_commit?.author;
86
+ const prNumbers = run.pull_requests.map((pr) => pr.number);
87
+ const agent = await resolveAgent(config.companyId, run.actor?.login, commitAuthor?.email);
88
+ const assigneeAgentId = agent?.id ?? (config.defaultAssigneeAgentId || undefined);
89
+ if (prNumbers.length > 0) {
90
+ const commented = await commentOnLinkedIssues(config.companyId, repo, prNumbers, run);
91
+ if (commented)
92
+ return;
93
+ }
94
+ const title = `CI failure: ${run.name} #${run.run_number} on ${repo}`;
95
+ const description = buildWorkflowRunDescription(payload);
96
+ ctx?.logger.info(`Creating issue: ${title}`);
97
+ await ctx.issues.create({
98
+ companyId: config.companyId,
99
+ goalId: config.goalId || undefined,
100
+ title,
101
+ description,
102
+ priority: "high",
103
+ assigneeAgentId,
104
+ });
105
+ if (assigneeAgentId) {
106
+ try {
107
+ await ctx.agents.invoke(assigneeAgentId, config.companyId, {
108
+ prompt: `CI failure on ${repo}: workflow "${run.name}" #${run.run_number} failed (${run.conclusion}). Details: ${run.html_url}`,
109
+ reason: "github-ci-failure",
110
+ });
111
+ }
112
+ catch {
113
+ ctx?.logger.warn(`Could not invoke agent ${assigneeAgentId}`);
114
+ }
115
+ }
116
+ }
117
+ async function handleCheckRun(payload) {
118
+ const check = payload.check_run;
119
+ if (payload.action !== "completed")
120
+ return;
121
+ if (check.conclusion !== "failure" && check.conclusion !== "timed_out")
122
+ return;
123
+ const config = await getConfig();
124
+ if (!config.companyId) {
125
+ ctx?.logger.warn("No companyId configured — skipping");
126
+ return;
127
+ }
128
+ const repo = payload.repository.full_name;
129
+ const prNumbers = check.check_suite?.pull_requests.map((pr) => pr.number) ?? [];
130
+ if (prNumbers.length > 0) {
131
+ const commented = await commentOnLinkedIssues(config.companyId, repo, prNumbers, check);
132
+ if (commented)
133
+ return;
134
+ }
135
+ const title = `PR gate failure: ${check.name} on ${repo}`;
136
+ const description = buildCheckRunDescription(payload);
137
+ ctx?.logger.info(`Creating issue: ${title}`);
138
+ const assigneeAgentId = config.defaultAssigneeAgentId || undefined;
139
+ await ctx.issues.create({
140
+ companyId: config.companyId,
141
+ goalId: config.goalId || undefined,
142
+ title,
143
+ description,
144
+ priority: "high",
145
+ assigneeAgentId,
146
+ });
147
+ if (assigneeAgentId) {
148
+ try {
149
+ await ctx.agents.invoke(assigneeAgentId, config.companyId, {
150
+ prompt: `PR gate failure on ${repo}: check "${check.name}" failed (${check.conclusion}). Details: ${check.html_url}`,
151
+ reason: "github-pr-gate-failure",
152
+ });
153
+ }
154
+ catch {
155
+ ctx?.logger.warn(`Could not invoke agent ${assigneeAgentId}`);
156
+ }
157
+ }
158
+ }
159
+ // ---------------------------------------------------------------------------
160
+ // PR-linked issue comment logic
161
+ // ---------------------------------------------------------------------------
162
+ async function commentOnLinkedIssues(companyId, repo, prNumbers, failureContext) {
163
+ if (!ctx)
164
+ return false;
165
+ const issues = await ctx.issues.list({
166
+ companyId,
167
+ status: "in_progress",
168
+ limit: 50,
169
+ });
170
+ let commented = false;
171
+ for (const issue of issues) {
172
+ const haystack = `${issue.title} ${issue.description ?? ""}`.toLowerCase();
173
+ const repoLower = repo.toLowerCase();
174
+ const matchesPR = prNumbers.some((n) => haystack.includes(`#${n}`) ||
175
+ haystack.includes(`pr ${n}`) ||
176
+ haystack.includes(`pull/${n}`));
177
+ const matchesRepo = haystack.includes(repoLower);
178
+ if (matchesPR || matchesRepo) {
179
+ const commentBody = buildFailureComment(repo, failureContext);
180
+ await ctx.issues.createComment(issue.id, commentBody, companyId);
181
+ commented = true;
182
+ ctx.logger.info(`Commented on issue ${issue.identifier ?? issue.id} about CI failure`);
183
+ if (issue.assigneeAgentId) {
184
+ try {
185
+ const name = "name" in failureContext ? failureContext.name : "CI check";
186
+ await ctx.agents.invoke(issue.assigneeAgentId, companyId, {
187
+ prompt: `CI/PR gate failure on ${repo}: "${name}" failed. See issue ${issue.identifier ?? issue.id} for details.`,
188
+ reason: "github-ci-failure-on-linked-issue",
189
+ });
190
+ }
191
+ catch {
192
+ ctx.logger.warn(`Could not invoke agent ${issue.assigneeAgentId}`);
193
+ }
194
+ }
195
+ }
196
+ }
197
+ return commented;
198
+ }
199
+ // ---------------------------------------------------------------------------
200
+ // Description builders
201
+ // ---------------------------------------------------------------------------
202
+ function buildWorkflowRunDescription(event) {
203
+ const run = event.workflow_run;
204
+ const repo = event.repository;
205
+ const commit = run.head_commit;
206
+ const lines = [
207
+ `## CI Failure: ${run.name}`,
208
+ "",
209
+ `| Field | Value |`,
210
+ `|-------|-------|`,
211
+ `| Repository | [${repo.full_name}](${repo.html_url}) |`,
212
+ `| Workflow | ${run.name} |`,
213
+ `| Run | [#${run.run_number}](${run.html_url}) (attempt ${run.run_attempt}) |`,
214
+ `| Branch | \`${run.head_branch}\` |`,
215
+ `| Conclusion | \`${run.conclusion}\` |`,
216
+ `| Commit | \`${run.head_sha.slice(0, 8)}\` |`,
217
+ ];
218
+ if (commit?.author) {
219
+ lines.push(`| Author | ${commit.author.name} (${commit.author.email}) |`);
220
+ }
221
+ if (run.actor) {
222
+ lines.push(`| Actor | ${run.actor.login} |`);
223
+ }
224
+ if (run.pull_requests.length > 0) {
225
+ const prLinks = run.pull_requests
226
+ .map((pr) => `[#${pr.number}](${repo.html_url}/pull/${pr.number})`)
227
+ .join(", ");
228
+ lines.push(`| Pull Requests | ${prLinks} |`);
229
+ }
230
+ if (commit?.message) {
231
+ lines.push("", "### Commit Message", "", `> ${commit.message.split("\n")[0]}`);
232
+ }
233
+ lines.push("", "---", `*Created by GitHub plugin*`);
234
+ return lines.join("\n");
235
+ }
236
+ function buildCheckRunDescription(event) {
237
+ const check = event.check_run;
238
+ const repo = event.repository;
239
+ const lines = [
240
+ `## PR Gate Failure: ${check.name}`,
241
+ "",
242
+ `| Field | Value |`,
243
+ `|-------|-------|`,
244
+ `| Repository | [${repo.full_name}](${repo.html_url}) |`,
245
+ `| Check | [${check.name}](${check.html_url}) |`,
246
+ `| Conclusion | \`${check.conclusion}\` |`,
247
+ `| Commit | \`${check.head_sha.slice(0, 8)}\` |`,
248
+ ];
249
+ if (check.app) {
250
+ lines.push(`| App | ${check.app.name} (\`${check.app.slug}\`) |`);
251
+ }
252
+ if (check.check_suite?.head_branch) {
253
+ lines.push(`| Branch | \`${check.check_suite.head_branch}\` |`);
254
+ }
255
+ const prNumbers = check.check_suite?.pull_requests ?? [];
256
+ if (prNumbers.length > 0) {
257
+ const prLinks = prNumbers
258
+ .map((pr) => `[#${pr.number}](${repo.html_url}/pull/${pr.number})`)
259
+ .join(", ");
260
+ lines.push(`| Pull Requests | ${prLinks} |`);
261
+ }
262
+ if (check.output.summary) {
263
+ lines.push("", "### Summary", "", check.output.summary);
264
+ }
265
+ lines.push("", "---", `*Created by GitHub plugin*`);
266
+ return lines.join("\n");
267
+ }
268
+ function buildFailureComment(repo, failureContext) {
269
+ const name = failureContext.name;
270
+ const conclusion = failureContext.conclusion;
271
+ const url = failureContext.html_url;
272
+ const sha = failureContext.head_sha.slice(0, 8);
273
+ return [
274
+ `## CI Failure Detected`,
275
+ "",
276
+ `**${name}** failed on \`${repo}\` at commit \`${sha}\`.`,
277
+ "",
278
+ `- Conclusion: \`${conclusion}\``,
279
+ `- Details: [View on GitHub](${url})`,
280
+ "",
281
+ `*Reported by GitHub plugin*`,
282
+ ].join("\n");
283
+ }
284
+ // ---------------------------------------------------------------------------
285
+ // GitHub issues event handler (Phase 2 — bidirectional sync)
286
+ // ---------------------------------------------------------------------------
287
+ async function handleIssueEvent(payload) {
288
+ if (!ctx)
289
+ return;
290
+ if (payload.action !== "closed" && payload.action !== "reopened")
291
+ return;
292
+ const [owner, repo] = payload.repository.full_name.split("/");
293
+ if (!owner || !repo)
294
+ return;
295
+ const link = await sync.getLinkByGitHub(ctx, owner, repo, payload.issue.number);
296
+ if (!link) {
297
+ ctx.logger.info(`No linked Paperclip issue for ${payload.repository.full_name}#${payload.issue.number}`);
298
+ return;
299
+ }
300
+ const ghState = payload.issue.state;
301
+ ctx.logger.info(`Syncing GitHub issue state (${ghState}) to Paperclip issue ${link.paperclipIssueId}`);
302
+ await sync.syncGitHubStateToPaperclip(ctx, link, ghState);
303
+ }
304
+ // ---------------------------------------------------------------------------
305
+ // Plugin definition
306
+ // ---------------------------------------------------------------------------
307
+ const plugin = definePlugin({
308
+ async setup(pluginCtx) {
309
+ ctx = pluginCtx;
310
+ registerTools(ctx);
311
+ ctx.logger.info("GitHub plugin initialized");
312
+ },
313
+ async onHealth() {
314
+ return { status: "ok", message: "GitHub plugin ready" };
315
+ },
316
+ async onWebhook(input) {
317
+ if (!ctx)
318
+ throw new Error("Plugin not initialized");
319
+ if (input.endpointKey !== WEBHOOK_KEYS.github) {
320
+ throw new Error(`Unsupported webhook endpoint "${input.endpointKey}"`);
321
+ }
322
+ const config = await getConfig();
323
+ const deliveryId = getHeader(input.headers, "x-github-delivery");
324
+ if (deliveryId && (await isDuplicate(deliveryId))) {
325
+ ctx.logger.info(`Skipping duplicate delivery ${deliveryId}`);
326
+ return;
327
+ }
328
+ if (!config.skipSignatureVerification) {
329
+ const signature = getHeader(input.headers, "x-hub-signature-256");
330
+ if (!config.webhookSecret) {
331
+ throw new Error("webhookSecret not configured — cannot verify GitHub signature. " +
332
+ "Set the webhook secret in plugin config or enable skipSignatureVerification for development.");
333
+ }
334
+ if (!verifyGitHubSignature(input.rawBody, signature, config.webhookSecret)) {
335
+ throw new Error("Invalid GitHub webhook signature");
336
+ }
337
+ }
338
+ const eventType = getHeader(input.headers, "x-github-event");
339
+ if (!eventType || !SUPPORTED_GITHUB_EVENTS.includes(eventType)) {
340
+ ctx.logger.info(`Ignoring unsupported event type: ${eventType}`);
341
+ return;
342
+ }
343
+ const payload = typeof input.parsedBody === "object" && input.parsedBody !== null
344
+ ? input.parsedBody
345
+ : JSON.parse(input.rawBody);
346
+ if (deliveryId)
347
+ await markDelivery(deliveryId);
348
+ switch (eventType) {
349
+ case "workflow_run":
350
+ await handleWorkflowRun(payload);
351
+ break;
352
+ case "check_run":
353
+ await handleCheckRun(payload);
354
+ break;
355
+ case "issues":
356
+ await handleIssueEvent(payload);
357
+ break;
358
+ }
359
+ ctx.logger.info(`Processed ${eventType} event`);
360
+ },
361
+ async onShutdown() {
362
+ ctx?.logger.info("GitHub plugin shutting down");
363
+ ctx = null;
364
+ },
365
+ });
366
+ export default plugin;
367
+ runWorker(plugin, import.meta.url);
368
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,GAGV,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,YAAY,GAGb,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAe9D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,IAAI,GAAG,GAAyB,IAAI,CAAC;AAErC,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAiB,CAAC;IACrD,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,GAAG,EAA4B,CAAC;AACjE,CAAC;AAED,iFAAiF;AACjF,SAAS,SAAS,CAChB,OAA0C,EAC1C,GAAW;IAEX,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CACzB,SAAiB,EACjB,KAAyB,EACzB,KAAyB;IAEzB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,OAAO,CACL,MAAM,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM;YAC/B,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,MAAM,CACrC,IAAI,IAAI,CACV,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,WAAW,CAAC,UAAkB;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAChC,SAAS,EAAE,UAAU;YACrB,QAAQ,EAAE,iBAAiB,UAAU,EAAE;SACxC,CAAC,CAAkB,CAAC;QACrB,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,UAAkB;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CACjB,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,UAAU,EAAE,EAAE,EAClE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACzB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,KAAK,UAAU,iBAAiB,CAAC,OAA+B;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAEjC,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO;IAC3C,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,WAAW;QAAE,OAAO;IAE3E,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;IAC1C,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAE3D,MAAM,KAAK,GAAG,MAAM,YAAY,CAC9B,MAAM,CAAC,SAAS,EAChB,GAAG,CAAC,KAAK,EAAE,KAAK,EAChB,YAAY,EAAE,KAAK,CACpB,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,SAAS,CAAC,CAAC;IAElF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACtF,IAAI,SAAS;YAAE,OAAO;IACxB,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,UAAU,OAAO,IAAI,EAAE,CAAC;IACtE,MAAM,WAAW,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAEzD,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;IAE7C,MAAM,GAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;QAClC,KAAK;QACL,WAAW;QACX,QAAQ,EAAE,MAAM;QAChB,eAAe;KAChB,CAAC,CAAC;IAEH,IAAI,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE;gBAC1D,MAAM,EAAE,iBAAiB,IAAI,eAAe,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,UAAU,YAAY,GAAG,CAAC,UAAU,eAAe,GAAG,CAAC,QAAQ,EAAE;gBAC/H,MAAM,EAAE,mBAAmB;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAA4B;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;IAEhC,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO;IAC3C,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW;QAAE,OAAO;IAE/E,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAEhF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxF,IAAI,SAAS;YAAE,OAAO;IACxB,CAAC;IAED,MAAM,KAAK,GAAG,oBAAoB,KAAK,CAAC,IAAI,OAAO,IAAI,EAAE,CAAC;IAC1D,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEtD,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;IAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,sBAAsB,IAAI,SAAS,CAAC;IAEnE,MAAM,GAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;QAClC,KAAK;QACL,WAAW;QACX,QAAQ,EAAE,MAAM;QAChB,eAAe;KAChB,CAAC,CAAC;IAEH,IAAI,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE;gBAC1D,MAAM,EAAE,sBAAsB,IAAI,YAAY,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,UAAU,eAAe,KAAK,CAAC,QAAQ,EAAE;gBACpH,MAAM,EAAE,wBAAwB;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,KAAK,UAAU,qBAAqB,CAClC,SAAiB,EACjB,IAAY,EACZ,SAAmB,EACnB,cAAyF;IAEzF,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACnC,SAAS;QACT,MAAM,EAAE,aAAa;QACrB,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CACjC,CAAC;QACF,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC9D,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YACjE,SAAS,GAAG,IAAI,CAAC;YAEjB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAEvF,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;oBACzE,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE;wBACxD,MAAM,EAAE,yBAAyB,IAAI,MAAM,IAAI,uBAAuB,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,eAAe;wBACjH,MAAM,EAAE,mCAAmC;qBAC5C,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,SAAS,2BAA2B,CAAC,KAA6B;IAChE,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC;IAE/B,MAAM,KAAK,GAAa;QACtB,kBAAkB,GAAG,CAAC,IAAI,EAAE;QAC5B,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,KAAK;QACxD,gBAAgB,GAAG,CAAC,IAAI,IAAI;QAC5B,aAAa,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,QAAQ,cAAc,GAAG,CAAC,WAAW,KAAK;QAC9E,gBAAgB,GAAG,CAAC,WAAW,MAAM;QACrC,oBAAoB,GAAG,CAAC,UAAU,MAAM;QACxC,gBAAgB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;KAC/C,CAAC;IAEF,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa;aAC9B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC;aAClE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,4BAA4B,CAAC,CAAC;IAEpD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA0B;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;IAE9B,MAAM,KAAK,GAAa;QACtB,uBAAuB,KAAK,CAAC,IAAI,EAAE;QACnC,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,KAAK;QACxD,cAAc,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,KAAK;QAChD,oBAAoB,KAAK,CAAC,UAAU,MAAM;QAC1C,gBAAgB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;KACjD,CAAC;IAEF,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,WAAW,CAAC,WAAW,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,aAAa,IAAI,EAAE,CAAC;IACzD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,SAAS;aACtB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC;aAClE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,4BAA4B,CAAC,CAAC;IAEpD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAY,EACZ,cAAyF;IAEzF,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IACjC,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAC7C,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC;IACpC,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhD,OAAO;QACL,wBAAwB;QACxB,EAAE;QACF,KAAK,IAAI,kBAAkB,IAAI,kBAAkB,GAAG,KAAK;QACzD,EAAE;QACF,mBAAmB,UAAU,IAAI;QACjC,+BAA+B,GAAG,GAAG;QACrC,EAAE;QACF,6BAA6B;KAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,KAAK,UAAU,gBAAgB,CAAC,OAAyB;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IAEzE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO;IAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,iCAAiC,OAAO,CAAC,UAAU,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CACxF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IACpC,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,+BAA+B,OAAO,wBAAwB,IAAI,CAAC,gBAAgB,EAAE,CACtF,CAAC;IAEF,MAAM,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,KAAK,CAAC,KAAK,CAAC,SAAS;QACnB,GAAG,GAAG,SAAS,CAAC;QAChB,aAAa,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAyB;QACvC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAEpD,IAAI,KAAK,CAAC,WAAW,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACjE,IAAI,UAAU,IAAI,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,iEAAiE;oBAC/D,8FAA8F,CACjG,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,SAAiC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GACX,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;YAC/D,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,UAAU;YAAE,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;QAE/C,QAAQ,SAAiC,EAAE,CAAC;YAC1C,KAAK,cAAc;gBACjB,MAAM,iBAAiB,CAAC,OAAiC,CAAC,CAAC;gBAC3D,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,cAAc,CAAC,OAA8B,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,gBAAgB,CAAC,OAA2B,CAAC,CAAC;gBACpD,MAAM;QACV,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,SAAS,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAChD,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;CACF,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC;AACtB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@paperclipai_dld/plugin-github",
3
+ "version": "2026.319.0-canary.4",
4
+ "description": "GitHub integration plugin for Paperclip — CI failure ingestion and issue sync",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": "./src/index.ts"
8
+ },
9
+ "paperclipPlugin": {
10
+ "manifest": "./dist/manifest.js",
11
+ "worker": "./dist/worker.js"
12
+ },
13
+ "dependencies": {
14
+ "@paperclipai_dld/plugin-sdk": "2026.319.0-canary.4",
15
+ "@paperclipai_dld/shared": "2026.319.0-canary.4"
16
+ },
17
+ "devDependencies": {
18
+ "@types/node": "^24.6.0",
19
+ "typescript": "^5.7.3",
20
+ "vitest": "^3.0.0"
21
+ },
22
+ "scripts": {
23
+ "prebuild": "node ../../../scripts/ensure-plugin-build-deps.mjs",
24
+ "build": "tsc",
25
+ "clean": "rm -rf dist",
26
+ "typecheck": "pnpm --filter @paperclipai_dld/plugin-sdk build && tsc --noEmit",
27
+ "test": "vitest run"
28
+ }
29
+ }