@generacy-ai/generacy-plugin-github-issues 0.0.0-preview-20260304013206

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 (94) hide show
  1. package/LICENSE +191 -0
  2. package/dist/auth/auth-factory.d.ts +44 -0
  3. package/dist/auth/auth-factory.d.ts.map +1 -0
  4. package/dist/auth/auth-factory.js +85 -0
  5. package/dist/auth/auth-factory.js.map +1 -0
  6. package/dist/auth/env.d.ts +32 -0
  7. package/dist/auth/env.d.ts.map +1 -0
  8. package/dist/auth/env.js +88 -0
  9. package/dist/auth/env.js.map +1 -0
  10. package/dist/auth/github-app.d.ts +69 -0
  11. package/dist/auth/github-app.d.ts.map +1 -0
  12. package/dist/auth/github-app.js +191 -0
  13. package/dist/auth/github-app.js.map +1 -0
  14. package/dist/auth/index.d.ts +10 -0
  15. package/dist/auth/index.d.ts.map +1 -0
  16. package/dist/auth/index.js +10 -0
  17. package/dist/auth/index.js.map +1 -0
  18. package/dist/auth/token-cache.d.ts +70 -0
  19. package/dist/auth/token-cache.d.ts.map +1 -0
  20. package/dist/auth/token-cache.js +112 -0
  21. package/dist/auth/token-cache.js.map +1 -0
  22. package/dist/auth/types.d.ts +119 -0
  23. package/dist/auth/types.d.ts.map +1 -0
  24. package/dist/auth/types.js +27 -0
  25. package/dist/auth/types.js.map +1 -0
  26. package/dist/client.d.ts +101 -0
  27. package/dist/client.d.ts.map +1 -0
  28. package/dist/client.js +197 -0
  29. package/dist/client.js.map +1 -0
  30. package/dist/index.d.ts +15 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +20 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/operations/comments.d.ts +46 -0
  35. package/dist/operations/comments.d.ts.map +1 -0
  36. package/dist/operations/comments.js +127 -0
  37. package/dist/operations/comments.js.map +1 -0
  38. package/dist/operations/issues.d.ts +46 -0
  39. package/dist/operations/issues.d.ts.map +1 -0
  40. package/dist/operations/issues.js +188 -0
  41. package/dist/operations/issues.js.map +1 -0
  42. package/dist/operations/labels.d.ts +46 -0
  43. package/dist/operations/labels.d.ts.map +1 -0
  44. package/dist/operations/labels.js +132 -0
  45. package/dist/operations/labels.js.map +1 -0
  46. package/dist/operations/pull-requests.d.ts +41 -0
  47. package/dist/operations/pull-requests.d.ts.map +1 -0
  48. package/dist/operations/pull-requests.js +162 -0
  49. package/dist/operations/pull-requests.js.map +1 -0
  50. package/dist/plugin.d.ts +181 -0
  51. package/dist/plugin.d.ts.map +1 -0
  52. package/dist/plugin.js +324 -0
  53. package/dist/plugin.js.map +1 -0
  54. package/dist/types/config.d.ts +126 -0
  55. package/dist/types/config.d.ts.map +1 -0
  56. package/dist/types/config.js +22 -0
  57. package/dist/types/config.js.map +1 -0
  58. package/dist/types/events.d.ts +72 -0
  59. package/dist/types/events.d.ts.map +1 -0
  60. package/dist/types/events.js +2 -0
  61. package/dist/types/events.js.map +1 -0
  62. package/dist/types/index.d.ts +7 -0
  63. package/dist/types/index.d.ts.map +1 -0
  64. package/dist/types/index.js +3 -0
  65. package/dist/types/index.js.map +1 -0
  66. package/dist/types/issues.d.ts +178 -0
  67. package/dist/types/issues.d.ts.map +1 -0
  68. package/dist/types/issues.js +29 -0
  69. package/dist/types/issues.js.map +1 -0
  70. package/dist/types/responses.d.ts +61 -0
  71. package/dist/types/responses.d.ts.map +1 -0
  72. package/dist/types/responses.js +5 -0
  73. package/dist/types/responses.js.map +1 -0
  74. package/dist/utils/errors.d.ts +69 -0
  75. package/dist/utils/errors.d.ts.map +1 -0
  76. package/dist/utils/errors.js +123 -0
  77. package/dist/utils/errors.js.map +1 -0
  78. package/dist/utils/validation.d.ts +33 -0
  79. package/dist/utils/validation.d.ts.map +1 -0
  80. package/dist/utils/validation.js +69 -0
  81. package/dist/utils/validation.js.map +1 -0
  82. package/dist/webhooks/handler.d.ts +66 -0
  83. package/dist/webhooks/handler.d.ts.map +1 -0
  84. package/dist/webhooks/handler.js +176 -0
  85. package/dist/webhooks/handler.js.map +1 -0
  86. package/dist/webhooks/parser.d.ts +36 -0
  87. package/dist/webhooks/parser.d.ts.map +1 -0
  88. package/dist/webhooks/parser.js +220 -0
  89. package/dist/webhooks/parser.js.map +1 -0
  90. package/dist/webhooks/triggers.d.ts +25 -0
  91. package/dist/webhooks/triggers.d.ts.map +1 -0
  92. package/dist/webhooks/triggers.js +119 -0
  93. package/dist/webhooks/triggers.js.map +1 -0
  94. package/package.json +62 -0
@@ -0,0 +1,119 @@
1
+ import { isIssuesEvent, isIssueCommentEvent, } from './parser.js';
2
+ /**
3
+ * Default resume patterns
4
+ */
5
+ const DEFAULT_RESUME_PATTERNS = [
6
+ /@agent\s+continue/i,
7
+ /@autodev\s+continue/i,
8
+ /\/continue/i,
9
+ ];
10
+ /**
11
+ * Create a no-action result
12
+ */
13
+ function noAction(reason) {
14
+ return { type: 'no_action', reason };
15
+ }
16
+ /**
17
+ * Create a queue-for-processing action
18
+ */
19
+ function queueForProcessing(issueNumber, priority = 'normal') {
20
+ return { type: 'queue_for_processing', issueNumber, priority };
21
+ }
22
+ /**
23
+ * Create a start-workflow action
24
+ */
25
+ function startWorkflow(issueNumber, workflowType) {
26
+ return { type: 'start_workflow', issueNumber, workflowType };
27
+ }
28
+ /**
29
+ * Create a resume-workflow action
30
+ */
31
+ function resumeWorkflow(issueNumber, triggeredBy) {
32
+ return { type: 'resume_workflow', issueNumber, triggeredBy };
33
+ }
34
+ /**
35
+ * Evaluate an issues event for workflow triggers
36
+ */
37
+ function evaluateIssuesEvent(payload, config) {
38
+ const { action, issue, assignee, label } = payload;
39
+ const { agentAccount, triggerLabels = [] } = config;
40
+ // Check for agent assignment
41
+ if (action === 'assigned' && agentAccount) {
42
+ if (assignee?.login === agentAccount) {
43
+ return queueForProcessing(issue.number, 'normal');
44
+ }
45
+ }
46
+ // Check for trigger label
47
+ if (action === 'labeled' && label) {
48
+ if (triggerLabels.includes(label.name)) {
49
+ return startWorkflow(issue.number);
50
+ }
51
+ }
52
+ // Check for ready label (common pattern)
53
+ if (action === 'labeled' && label) {
54
+ if (label.name === 'autodev:ready' || label.name === 'ready') {
55
+ return startWorkflow(issue.number);
56
+ }
57
+ }
58
+ // Issue opened - could be a signal to start work
59
+ if (action === 'opened') {
60
+ // Check if already assigned to agent
61
+ if (agentAccount && issue.assignees.some((a) => a.login === agentAccount)) {
62
+ return queueForProcessing(issue.number, 'normal');
63
+ }
64
+ // Check if has trigger label
65
+ for (const triggerLabel of triggerLabels) {
66
+ if (issue.labels.some((l) => l.name === triggerLabel)) {
67
+ return startWorkflow(issue.number);
68
+ }
69
+ }
70
+ }
71
+ return noAction(`No trigger matched for issues.${action}`);
72
+ }
73
+ /**
74
+ * Evaluate an issue_comment event for workflow triggers
75
+ */
76
+ function evaluateIssueCommentEvent(payload, config) {
77
+ const { action, issue, comment } = payload;
78
+ const { resumePatterns = DEFAULT_RESUME_PATTERNS } = config;
79
+ // Only process new comments
80
+ if (action !== 'created') {
81
+ return noAction(`Comment action '${action}' does not trigger workflows`);
82
+ }
83
+ // Check for resume patterns in comment body
84
+ for (const pattern of resumePatterns) {
85
+ if (pattern.test(comment.body)) {
86
+ return resumeWorkflow(issue.number, 'comment');
87
+ }
88
+ }
89
+ return noAction('No resume pattern matched in comment');
90
+ }
91
+ /**
92
+ * Evaluate a webhook event against trigger configuration
93
+ */
94
+ export function evaluateTriggers(event, config) {
95
+ if (isIssuesEvent(event)) {
96
+ return evaluateIssuesEvent(event.payload, config);
97
+ }
98
+ if (isIssueCommentEvent(event)) {
99
+ return evaluateIssueCommentEvent(event.payload, config);
100
+ }
101
+ // Pull request events don't directly trigger workflows in this implementation
102
+ return noAction('Pull request events do not trigger workflows');
103
+ }
104
+ /**
105
+ * Check if an action requires workflow processing
106
+ */
107
+ export function requiresProcessing(action) {
108
+ return action.type !== 'no_action';
109
+ }
110
+ /**
111
+ * Get the issue number from a workflow action
112
+ */
113
+ export function getActionIssueNumber(action) {
114
+ if (action.type === 'no_action') {
115
+ return null;
116
+ }
117
+ return action.issueNumber;
118
+ }
119
+ //# sourceMappingURL=triggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggers.js","sourceRoot":"","sources":["../../src/webhooks/triggers.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@generacy-ai/generacy-plugin-github-issues",
3
+ "version": "0.0.0-preview-20260304013206",
4
+ "description": "GitHub Issues integration plugin for Generacy",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "keywords": [
18
+ "generacy",
19
+ "github",
20
+ "issues",
21
+ "plugin",
22
+ "automation"
23
+ ],
24
+ "author": "Generacy AI",
25
+ "license": "Apache-2.0",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/generacy-ai/generacy.git",
29
+ "directory": "packages/github-issues"
30
+ },
31
+ "engines": {
32
+ "node": ">=20.0.0"
33
+ },
34
+ "dependencies": {
35
+ "@generacy-ai/latency": "^0.1.0",
36
+ "@generacy-ai/latency-plugin-issue-tracker": "^0.1.0",
37
+ "@octokit/auth-app": "^7.1.1",
38
+ "@octokit/rest": "^21.0.2",
39
+ "@octokit/webhooks": "^13.4.1",
40
+ "@octokit/types": "^13.6.2",
41
+ "zod": "^3.23.8"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^22.10.2",
45
+ "typescript": "^5.7.2",
46
+ "vitest": "^3.2.4"
47
+ },
48
+ "peerDependencies": {},
49
+ "peerDependenciesMeta": {},
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "scripts": {
54
+ "build": "tsc",
55
+ "test": "vitest run",
56
+ "test:watch": "vitest",
57
+ "test:coverage": "vitest run --coverage",
58
+ "lint": "eslint src",
59
+ "typecheck": "tsc --noEmit",
60
+ "clean": "rm -rf dist"
61
+ }
62
+ }