@action-llama/action-llama 0.1.4 → 0.2.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.
Files changed (126) hide show
  1. package/README.md +63 -59
  2. package/dist/agents/container-entry.js +36 -9
  3. package/dist/agents/container-entry.js.map +1 -1
  4. package/dist/agents/prompt.d.ts.map +1 -1
  5. package/dist/agents/prompt.js +17 -6
  6. package/dist/agents/prompt.js.map +1 -1
  7. package/dist/cli/commands/new.d.ts.map +1 -1
  8. package/dist/cli/commands/new.js +5 -25
  9. package/dist/cli/commands/new.js.map +1 -1
  10. package/dist/cli/commands/{agent/add.d.ts → setup.d.ts} +1 -2
  11. package/dist/cli/commands/setup.d.ts.map +1 -0
  12. package/dist/cli/commands/setup.js +60 -0
  13. package/dist/cli/commands/setup.js.map +1 -0
  14. package/dist/cli/commands/start.d.ts.map +1 -1
  15. package/dist/cli/commands/start.js +3 -0
  16. package/dist/cli/commands/start.js.map +1 -1
  17. package/dist/cli/commands/status.d.ts.map +1 -1
  18. package/dist/cli/commands/status.js +1 -37
  19. package/dist/cli/commands/status.js.map +1 -1
  20. package/dist/cli/main.js +6 -9
  21. package/dist/cli/main.js.map +1 -1
  22. package/dist/credentials/builtins/anthropic-key.d.ts +4 -0
  23. package/dist/credentials/builtins/anthropic-key.d.ts.map +1 -0
  24. package/dist/credentials/builtins/anthropic-key.js +69 -0
  25. package/dist/credentials/builtins/anthropic-key.js.map +1 -0
  26. package/dist/credentials/builtins/github-token.d.ts +4 -0
  27. package/dist/credentials/builtins/github-token.d.ts.map +1 -0
  28. package/dist/credentials/builtins/github-token.js +19 -0
  29. package/dist/credentials/builtins/github-token.js.map +1 -0
  30. package/dist/credentials/builtins/github-webhook-secret.d.ts +4 -0
  31. package/dist/credentials/builtins/github-webhook-secret.d.ts.map +1 -0
  32. package/dist/credentials/builtins/github-webhook-secret.js +12 -0
  33. package/dist/credentials/builtins/github-webhook-secret.js.map +1 -0
  34. package/dist/credentials/builtins/id-rsa.d.ts +4 -0
  35. package/dist/credentials/builtins/id-rsa.d.ts.map +1 -0
  36. package/dist/credentials/builtins/id-rsa.js +67 -0
  37. package/dist/credentials/builtins/id-rsa.js.map +1 -0
  38. package/dist/credentials/builtins/index.d.ts +3 -0
  39. package/dist/credentials/builtins/index.d.ts.map +1 -0
  40. package/dist/credentials/builtins/index.js +15 -0
  41. package/dist/credentials/builtins/index.js.map +1 -0
  42. package/dist/credentials/builtins/sentry-client-secret.d.ts +4 -0
  43. package/dist/credentials/builtins/sentry-client-secret.d.ts.map +1 -0
  44. package/dist/credentials/builtins/sentry-client-secret.js +12 -0
  45. package/dist/credentials/builtins/sentry-client-secret.js.map +1 -0
  46. package/dist/credentials/builtins/sentry-token.d.ts +4 -0
  47. package/dist/credentials/builtins/sentry-token.d.ts.map +1 -0
  48. package/dist/credentials/builtins/sentry-token.js +72 -0
  49. package/dist/credentials/builtins/sentry-token.js.map +1 -0
  50. package/dist/credentials/prompter.d.ts +14 -0
  51. package/dist/credentials/prompter.d.ts.map +1 -0
  52. package/dist/credentials/prompter.js +65 -0
  53. package/dist/credentials/prompter.js.map +1 -0
  54. package/dist/credentials/registry.d.ts +16 -0
  55. package/dist/credentials/registry.d.ts.map +1 -0
  56. package/dist/credentials/registry.js +25 -0
  57. package/dist/credentials/registry.js.map +1 -0
  58. package/dist/credentials/schema.d.ts +23 -0
  59. package/dist/credentials/schema.d.ts.map +1 -0
  60. package/dist/credentials/schema.js +6 -0
  61. package/dist/credentials/schema.js.map +1 -0
  62. package/dist/scheduler/index.d.ts.map +1 -1
  63. package/dist/scheduler/index.js +14 -4
  64. package/dist/scheduler/index.js.map +1 -1
  65. package/dist/setup/prompts.d.ts +1 -43
  66. package/dist/setup/prompts.d.ts.map +1 -1
  67. package/dist/setup/prompts.js +43 -605
  68. package/dist/setup/prompts.js.map +1 -1
  69. package/dist/setup/scaffold.d.ts +1 -2
  70. package/dist/setup/scaffold.d.ts.map +1 -1
  71. package/dist/setup/scaffold.js +62 -29
  72. package/dist/setup/scaffold.js.map +1 -1
  73. package/dist/shared/config.d.ts +1 -2
  74. package/dist/shared/config.d.ts.map +1 -1
  75. package/dist/shared/config.js +16 -6
  76. package/dist/shared/config.js.map +1 -1
  77. package/dist/shared/credentials.d.ts +2 -0
  78. package/dist/shared/credentials.d.ts.map +1 -1
  79. package/dist/shared/credentials.js +17 -0
  80. package/dist/shared/credentials.js.map +1 -1
  81. package/dist/shared/paths.d.ts +0 -1
  82. package/dist/shared/paths.d.ts.map +1 -1
  83. package/dist/shared/paths.js +0 -3
  84. package/dist/shared/paths.js.map +1 -1
  85. package/dist/webhooks/definitions/github.d.ts +3 -0
  86. package/dist/webhooks/definitions/github.d.ts.map +1 -0
  87. package/dist/webhooks/definitions/github.js +38 -0
  88. package/dist/webhooks/definitions/github.js.map +1 -0
  89. package/dist/webhooks/definitions/registry.d.ts +4 -0
  90. package/dist/webhooks/definitions/registry.d.ts.map +1 -0
  91. package/dist/webhooks/definitions/registry.js +14 -0
  92. package/dist/webhooks/definitions/registry.js.map +1 -0
  93. package/dist/webhooks/definitions/schema.d.ts +19 -0
  94. package/dist/webhooks/definitions/schema.d.ts.map +1 -0
  95. package/dist/webhooks/definitions/schema.js +2 -0
  96. package/dist/webhooks/definitions/schema.js.map +1 -0
  97. package/dist/webhooks/definitions/sentry.d.ts +3 -0
  98. package/dist/webhooks/definitions/sentry.d.ts.map +1 -0
  99. package/dist/webhooks/definitions/sentry.js +22 -0
  100. package/dist/webhooks/definitions/sentry.js.map +1 -0
  101. package/dist/webhooks/providers/sentry.d.ts +9 -0
  102. package/dist/webhooks/providers/sentry.d.ts.map +1 -0
  103. package/dist/webhooks/providers/sentry.js +108 -0
  104. package/dist/webhooks/providers/sentry.js.map +1 -0
  105. package/dist/webhooks/registry.js +2 -2
  106. package/dist/webhooks/registry.js.map +1 -1
  107. package/dist/webhooks/types.d.ts +5 -1
  108. package/dist/webhooks/types.d.ts.map +1 -1
  109. package/package.json +4 -3
  110. package/dist/agents/definitions/dev/AGENTS.md +0 -44
  111. package/dist/agents/definitions/dev/config-definition.json +0 -39
  112. package/dist/agents/definitions/devops/AGENTS.md +0 -33
  113. package/dist/agents/definitions/devops/config-definition.json +0 -37
  114. package/dist/agents/definitions/loader.d.ts +0 -18
  115. package/dist/agents/definitions/loader.d.ts.map +0 -1
  116. package/dist/agents/definitions/loader.js +0 -59
  117. package/dist/agents/definitions/loader.js.map +0 -1
  118. package/dist/agents/definitions/reviewer/AGENTS.md +0 -37
  119. package/dist/agents/definitions/reviewer/config-definition.json +0 -24
  120. package/dist/agents/definitions/schema.d.ts +0 -38
  121. package/dist/agents/definitions/schema.d.ts.map +0 -1
  122. package/dist/agents/definitions/schema.js +0 -97
  123. package/dist/agents/definitions/schema.js.map +0 -1
  124. package/dist/cli/commands/agent/add.d.ts.map +0 -1
  125. package/dist/cli/commands/agent/add.js +0 -86
  126. package/dist/cli/commands/agent/add.js.map +0 -1
@@ -0,0 +1,108 @@
1
+ import { createHmac, timingSafeEqual } from "crypto";
2
+ const MAX_TEXT_LENGTH = 4000;
3
+ function truncate(text, max = MAX_TEXT_LENGTH) {
4
+ if (!text)
5
+ return undefined;
6
+ return text.length > max ? text.slice(0, max) + "..." : text;
7
+ }
8
+ export class SentryWebhookProvider {
9
+ source = "sentry";
10
+ validateRequest(headers, rawBody, secret) {
11
+ // If no secret configured, skip validation
12
+ if (!secret)
13
+ return true;
14
+ const signature = headers["sentry-hook-signature"];
15
+ if (!signature)
16
+ return false;
17
+ const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
18
+ if (signature.length !== expected.length)
19
+ return false;
20
+ return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
21
+ }
22
+ parseEvent(headers, body) {
23
+ const resource = headers["sentry-hook-resource"];
24
+ if (!resource)
25
+ return null;
26
+ const base = {
27
+ source: "sentry",
28
+ event: resource,
29
+ action: body.action,
30
+ sender: body.actor?.name || body.actor?.type || "unknown",
31
+ timestamp: new Date().toISOString(),
32
+ };
33
+ return this.extractContext(resource, body, base);
34
+ }
35
+ extractContext(resource, body, base) {
36
+ switch (resource) {
37
+ case "event_alert": {
38
+ const data = body.data || {};
39
+ const event = data.event || {};
40
+ return {
41
+ ...base,
42
+ repo: data.triggered_rule || "",
43
+ title: truncate(event.title),
44
+ url: event.web_url,
45
+ body: truncate(event.message),
46
+ };
47
+ }
48
+ case "metric_alert": {
49
+ const data = body.data || {};
50
+ const alert = data.metric_alert || {};
51
+ return {
52
+ ...base,
53
+ repo: alert.organization?.slug || "",
54
+ title: truncate(alert.title),
55
+ url: alert.web_url,
56
+ };
57
+ }
58
+ case "issue": {
59
+ const data = body.data || {};
60
+ const issue = data.issue || {};
61
+ return {
62
+ ...base,
63
+ repo: issue.project?.slug || "",
64
+ title: truncate(issue.title),
65
+ url: issue.web_url,
66
+ assignee: issue.assignedTo?.name,
67
+ };
68
+ }
69
+ case "error": {
70
+ const data = body.data || {};
71
+ const error = data.error || {};
72
+ return {
73
+ ...base,
74
+ repo: error.project?.slug || "",
75
+ title: truncate(error.title),
76
+ url: error.web_url,
77
+ body: truncate(error.message),
78
+ };
79
+ }
80
+ case "comment": {
81
+ const data = body.data || {};
82
+ const comment = data.comment || {};
83
+ const issue = data.issue || {};
84
+ return {
85
+ ...base,
86
+ repo: issue.project?.slug || "",
87
+ title: truncate(issue.title),
88
+ url: issue.web_url,
89
+ comment: truncate(comment.text),
90
+ };
91
+ }
92
+ default:
93
+ return {
94
+ ...base,
95
+ repo: "",
96
+ title: body.action || resource,
97
+ };
98
+ }
99
+ }
100
+ matchesFilter(context, filter) {
101
+ const f = filter;
102
+ if (f.resources?.length && !f.resources.includes(context.event)) {
103
+ return false;
104
+ }
105
+ return true;
106
+ }
107
+ }
108
+ //# sourceMappingURL=sentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../src/webhooks/providers/sentry.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ export class WebhookRegistry {
24
24
  }
25
25
  // Validate request signature
26
26
  if (!provider.validateRequest(headers, rawBody, secret)) {
27
- this.logger.warn({ source, hasSecret: !!secret, hasSignatureHeader: !!headers["x-hub-signature-256"] }, "webhook signature validation failed");
27
+ this.logger.warn({ source, hasSecret: !!secret }, "webhook signature validation failed");
28
28
  return { ok: false, matched: 0, skipped: 0, errors: ["signature validation failed"] };
29
29
  }
30
30
  // Parse the event — handle both JSON and form-encoded payloads
@@ -50,7 +50,7 @@ export class WebhookRegistry {
50
50
  }
51
51
  const context = provider.parseEvent(headers, body);
52
52
  if (!context) {
53
- this.logger.warn({ source, event: headers["x-github-event"], hasRepo: !!body.repository?.full_name }, "webhook event could not be parsed (parseEvent returned null)");
53
+ this.logger.warn({ source }, "webhook event could not be parsed (parseEvent returned null)");
54
54
  return { ok: true, matched: 0, skipped: 0 };
55
55
  }
56
56
  this.logger.debug({ source, event: context.event, action: context.action, repo: context.repo, sender: context.sender }, "webhook event parsed");
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/webhooks/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/webhooks/registry.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,11 @@ export interface GitHubWebhookFilter {
25
25
  author?: string;
26
26
  branches?: string[];
27
27
  }
28
- export type WebhookFilter = GitHubWebhookFilter;
28
+ export interface SentryWebhookFilter {
29
+ source: "sentry";
30
+ resources?: string[];
31
+ }
32
+ export type WebhookFilter = GitHubWebhookFilter | SentryWebhookFilter;
29
33
  export interface WebhookTriggerConfig {
30
34
  filters: WebhookFilter[];
31
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAIhD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAID,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,cAAc,GAAG,IAAI,CAAC;IAC1F,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;CACxE;AAID,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAID,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAItE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAID,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,cAAc,GAAG,IAAI,CAAC;IAC1F,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;CACxE;AAID,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAID,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@action-llama/action-llama",
3
- "version": "0.1.4",
3
+ "version": "0.2.0",
4
4
  "description": "Automated development agents triggered by cron or webhooks. BYOM — bring your own model.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -36,7 +36,7 @@
36
36
  ],
37
37
  "scripts": {
38
38
  "build": "tsc -p tsconfig.build.json && chmod +x dist/cli/main.js && npm run build:assets",
39
- "build:assets": "mkdir -p dist/agents/definitions/{dev,reviewer,devops} && cp src/agents/definitions/dev/AGENTS.md src/agents/definitions/dev/config-definition.json dist/agents/definitions/dev/ && cp src/agents/definitions/reviewer/AGENTS.md src/agents/definitions/reviewer/config-definition.json dist/agents/definitions/reviewer/ && cp src/agents/definitions/devops/AGENTS.md src/agents/definitions/devops/config-definition.json dist/agents/definitions/devops/",
39
+ "build:assets": "echo 'No assets to copy'",
40
40
  "clean": "rm -rf dist",
41
41
  "prebuild": "npm run clean",
42
42
  "prepublishOnly": "npm run build && npm test",
@@ -55,7 +55,8 @@
55
55
  "ink": "^6.8.0",
56
56
  "pino": "^10.3.1",
57
57
  "pino-pretty": "^13.1.3",
58
- "react": "^19.2.4"
58
+ "react": "^19.2.4",
59
+ "smol-toml": "^1.6.0"
59
60
  },
60
61
  "devDependencies": {
61
62
  "@types/react": "^19.2.14",
@@ -1,44 +0,0 @@
1
- # Developer Agent
2
-
3
- You are a developer agent. Your job is to pick up GitHub issues and implement the requested changes.
4
-
5
- Your configuration is in the `<agent-config>` block at the start of your prompt.
6
- Use those values for repos, triggerLabel, and assignee.
7
-
8
- `GITHUB_TOKEN` is already set in your environment. Use `gh` CLI and `git` directly.
9
-
10
- **You MUST complete ALL steps below.** Do not stop after reading the issue — you must implement, commit, push, and open a PR.
11
-
12
- ## Workflow
13
-
14
- 1. **Find an issue** — run `gh issue list --repo <repo> --label <triggerLabel> --assignee <assignee> --state open --json number,title,body,comments,labels --limit 1`. If empty, respond `[SILENT]` and stop.
15
-
16
- 2. **Claim the issue** — run `gh issue edit <number> --repo <repo> --add-label in-progress` to mark it as claimed.
17
-
18
- 3. **Clone and branch** — run `git clone https://github.com/<repo>.git /workspace/repo && cd /workspace/repo && git checkout -b agent/<number>`.
19
-
20
- 4. **Understand the issue** — read the title, body, and comments. Note file paths, acceptance criteria, and linked issues.
21
-
22
- 5. **Read project conventions** — in the repo, read `AGENTS.md`, `CLAUDE.md`, `CONTRIBUTING.md`, and `README.md` if they exist. Follow any conventions found there.
23
-
24
- 6. **Implement changes** — work in the repo. Make the minimum necessary changes, follow existing patterns, and write or update tests if the project has a test suite.
25
-
26
- 7. **Validate** — run the project's test suite and linters (e.g., `npm test`). Fix failures before proceeding.
27
-
28
- 8. **Commit** — `git add -A && git commit -m "fix: <description> (closes #<number>)"`
29
-
30
- 9. **Push** — `git push -u origin agent/<number>`
31
-
32
- 10. **Create a PR** — run `gh pr create --repo <repo> --head agent/<number> --base main --title "<title>" --body "Closes #<number>\n\n<description>"`.
33
-
34
- 11. **Comment on the issue** — run `gh issue comment <number> --repo <repo> --body "PR created: <pr_url>"`.
35
-
36
- 12. **Mark done** — run `gh issue edit <number> --repo <repo> --remove-label in-progress --add-label agent-completed`.
37
-
38
- ## Rules
39
-
40
- - Work on exactly ONE issue per run
41
- - Never modify files outside the repo directory
42
- - **You MUST complete steps 8-12.** Do not stop early.
43
- - If tests fail after 2 attempts, create the PR anyway with a note about failing tests
44
- - If the issue is unclear, comment asking for clarification and stop
@@ -1,39 +0,0 @@
1
- {
2
- "name": "dev",
3
- "label": "Developer agent",
4
- "description": "Picks up issues, writes code, opens PRs",
5
- "credentials": {
6
- "required": ["anthropic-key", "github-token"],
7
- "optional": []
8
- },
9
- "webhooks": {
10
- "description": "Wake when an issue is labeled",
11
- "events": ["issues"],
12
- "actions": ["labeled"]
13
- },
14
- "prompts": {
15
- "webhook": "An issue was just assigned to you. Implement the changes described in the issue.",
16
- "schedule": "Poll GitHub for new issues with the trigger label and implement any found."
17
- },
18
- "defaultSchedule": "*/5 * * * *",
19
- "state": {
20
- "file": "active-issues.json",
21
- "initial": { "issues": {} }
22
- },
23
- "params": {
24
- "triggerLabel": {
25
- "type": "string",
26
- "description": "Issue label that triggers the agent",
27
- "default": "agent",
28
- "required": true,
29
- "webhookFilter": { "field": "labels", "wrap": "array" }
30
- },
31
- "assignee": {
32
- "type": "string",
33
- "description": "Assign triggered issues to which user",
34
- "default": "$githubUser",
35
- "required": true,
36
- "webhookFilter": { "field": "assignee" }
37
- }
38
- }
39
- }
@@ -1,33 +0,0 @@
1
- # DevOps Agent
2
-
3
- You are a DevOps monitoring agent. Your job is to detect new errors from CI/CD failures and production error tracking, then file actionable GitHub issues for each unique problem.
4
-
5
- Your configuration is in the `<agent-config>` block at the start of your prompt.
6
- Use those values for repos, sentryOrg, and sentryProjects.
7
-
8
- `GITHUB_TOKEN` is already set in your environment. Use `gh` CLI directly.
9
- If Sentry is configured, `SENTRY_AUTH_TOKEN` is set in your environment. Use `curl` for Sentry API requests.
10
-
11
- ## Workflow
12
-
13
- 1. **Poll for CI errors** — run `gh run list --repo <repo> --status failure --json databaseId,name,headBranch,conclusion,url,createdAt --limit 20` for each repo.
14
-
15
- 2. **Poll Sentry errors (if configured)** — run:
16
- ```
17
- curl -s -H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
18
- "https://sentry.io/api/0/projects/<sentryOrg>/<project>/issues/?query=is:unresolved&statsPeriod=24h"
19
- ```
20
-
21
- 3. **Deduplicate** — search existing issues to avoid duplicates: `gh issue list --repo <repo> --label agent-filed --state all --json title --limit 100`. Skip errors that already have matching issues.
22
-
23
- 4. **File GitHub issues** — for each new error, run `gh issue create --repo <repo>`:
24
- - **CI failures** — `--title "[CI Failure] <workflow> on <branch>" --body "<details>" --label ci-failure,agent-filed`
25
- - **Sentry errors** — `--title "[Sentry] <title>" --body "<details>" --label production-error,agent-filed`
26
-
27
- ## Rules
28
-
29
- - Always check deduplication before filing — never create duplicate issues
30
- - Include enough context for a developer to start investigating
31
- - For Sentry errors, include the permalink for full details
32
- - For CI failures, include the run URL for log access
33
- - Do not attempt to fix errors yourself — just file issues
@@ -1,37 +0,0 @@
1
- {
2
- "name": "devops",
3
- "label": "DevOps monitor",
4
- "description": "Detects errors, files issues",
5
- "credentials": {
6
- "required": ["anthropic-key", "github-token"],
7
- "optional": ["sentry-token"]
8
- },
9
- "webhooks": {
10
- "description": "Wake when a GitHub Actions workflow completes",
11
- "events": ["workflow_run"],
12
- "actions": ["completed"]
13
- },
14
- "prompts": {
15
- "webhook": "A workflow run just completed. Check for failures and file issues for any new errors found.",
16
- "schedule": "Poll for new errors from GitHub Actions failures and Sentry, file issues for any new ones found."
17
- },
18
- "defaultSchedule": "*/15 * * * *",
19
- "state": {
20
- "file": "known-errors.json",
21
- "initial": { "errors": {} }
22
- },
23
- "params": {
24
- "sentryOrg": {
25
- "type": "string",
26
- "description": "Sentry organization slug",
27
- "required": false,
28
- "credential": "sentry-token"
29
- },
30
- "sentryProjects": {
31
- "type": "string[]",
32
- "description": "Sentry project slugs to monitor",
33
- "required": false,
34
- "credential": "sentry-token"
35
- }
36
- }
37
- }
@@ -1,18 +0,0 @@
1
- import type { AgentDefinition } from "./schema.js";
2
- /**
3
- * Load a definition by built-in name or filesystem path.
4
- */
5
- export declare function loadDefinition(nameOrPath: string): AgentDefinition;
6
- /**
7
- * Load the AGENTS.md from a definition package.
8
- */
9
- export declare function loadDefinitionAgentsMd(nameOrPath: string): string;
10
- /**
11
- * List all built-in definitions.
12
- */
13
- export declare function listBuiltinDefinitions(): AgentDefinition[];
14
- /**
15
- * Check if a name corresponds to a built-in definition.
16
- */
17
- export declare function isBuiltinDefinition(nameOrPath: string): boolean;
18
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/agents/definitions/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAUnD;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAmBlE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAkBjE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CAE1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE/D"}
@@ -1,59 +0,0 @@
1
- import { readFileSync, existsSync } from "fs";
2
- import { resolve, dirname } from "path";
3
- import { fileURLToPath } from "url";
4
- import { validateDefinition } from "./schema.js";
5
- const __dirname = dirname(fileURLToPath(import.meta.url));
6
- const BUILTIN_NAMES = ["dev", "reviewer", "devops"];
7
- function builtinDir(name) {
8
- return resolve(__dirname, name);
9
- }
10
- /**
11
- * Load a definition by built-in name or filesystem path.
12
- */
13
- export function loadDefinition(nameOrPath) {
14
- let defDir;
15
- if (BUILTIN_NAMES.includes(nameOrPath)) {
16
- defDir = builtinDir(nameOrPath);
17
- }
18
- else {
19
- defDir = resolve(nameOrPath);
20
- }
21
- const jsonPath = resolve(defDir, "config-definition.json");
22
- if (!existsSync(jsonPath)) {
23
- throw new Error(`Agent definition not found at ${jsonPath}. ` +
24
- `Provide a built-in name (${BUILTIN_NAMES.join(", ")}) or a path to a definition directory.`);
25
- }
26
- const raw = JSON.parse(readFileSync(jsonPath, "utf-8"));
27
- return validateDefinition(raw);
28
- }
29
- /**
30
- * Load the AGENTS.md from a definition package.
31
- */
32
- export function loadDefinitionAgentsMd(nameOrPath) {
33
- let defDir;
34
- if (BUILTIN_NAMES.includes(nameOrPath)) {
35
- defDir = builtinDir(nameOrPath);
36
- }
37
- else {
38
- defDir = resolve(nameOrPath);
39
- }
40
- const mdPath = resolve(defDir, "AGENTS.md");
41
- if (!existsSync(mdPath)) {
42
- throw new Error(`No AGENTS.md found in definition at ${defDir}. ` +
43
- `Create an AGENTS.md in the definition directory.`);
44
- }
45
- return readFileSync(mdPath, "utf-8");
46
- }
47
- /**
48
- * List all built-in definitions.
49
- */
50
- export function listBuiltinDefinitions() {
51
- return BUILTIN_NAMES.map((name) => loadDefinition(name));
52
- }
53
- /**
54
- * Check if a name corresponds to a built-in definition.
55
- */
56
- export function isBuiltinDefinition(nameOrPath) {
57
- return BUILTIN_NAMES.includes(nameOrPath);
58
- }
59
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/agents/definitions/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAyB,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEpD,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,IAAI,MAAc,CAAC;IAEnB,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,iCAAiC,QAAQ,IAAI;YAC7C,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,IAAI,MAAc,CAAC;IAEnB,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,IAAI;YACjD,kDAAkD,CACnD,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,37 +0,0 @@
1
- # PR Reviewer Agent
2
-
3
- You are a code review agent. Your job is to review open pull requests, approve good ones, and request changes on problematic ones.
4
-
5
- Your configuration is in the `<agent-config>` block at the start of your prompt.
6
- Use those values for repos.
7
-
8
- `GITHUB_TOKEN` is already set in your environment. Use `gh` CLI directly.
9
-
10
- ## Workflow
11
-
12
- 1. **List open PRs** — run `gh pr list --repo <repo> --state open --json number,title,headRefName,headRefOid,statusCheckRollup` for each repo. If empty, respond `[SILENT]` and stop.
13
-
14
- 2. **Review each PR:**
15
-
16
- a. **Get the diff** — run `gh pr diff <number> --repo <repo>`.
17
-
18
- b. **Evaluate** — review for correctness, style, tests, security, and performance.
19
-
20
- c. **Check CI** — look at `statusCheckRollup` from step 1. Do NOT merge if CI is failing.
21
-
22
- d. **Submit review:**
23
- - **Good code + green CI** — `gh pr review <number> --repo <repo> --approve --body "<review>"`, then `gh pr merge <number> --repo <repo> --squash`
24
- - **Issues found** — `gh pr review <number> --repo <repo> --request-changes --body "<review>"`
25
- - **Good code + failing CI** — `gh pr review <number> --repo <repo> --comment --body "LGTM but CI must pass before merging."`
26
-
27
- ## Review Standards
28
-
29
- - **Specific** — point to exact lines or patterns
30
- - **Constructive** — suggest fixes, don't just point out problems
31
- - **Proportional** — don't block for minor style nits
32
- - **Thorough** — check edge cases, error handling, boundaries
33
-
34
- ## Rules
35
-
36
- - Review ALL open PRs in a single run, not just one
37
- - Never approve a PR with failing CI checks
@@ -1,24 +0,0 @@
1
- {
2
- "name": "reviewer",
3
- "label": "PR reviewer",
4
- "description": "Reviews and merges pull requests",
5
- "credentials": {
6
- "required": ["anthropic-key", "github-token"],
7
- "optional": []
8
- },
9
- "webhooks": {
10
- "description": "Wake when a PR is opened or updated",
11
- "events": ["pull_request"],
12
- "actions": ["opened", "synchronize"]
13
- },
14
- "prompts": {
15
- "webhook": "Review the pull request that just came in. Approve or request changes.",
16
- "schedule": "Poll GitHub for open PRs that need review, review them, and merge if appropriate."
17
- },
18
- "defaultSchedule": "*/5 * * * *",
19
- "state": {
20
- "file": "reviewed-prs.json",
21
- "initial": { "prs": {} }
22
- },
23
- "params": {}
24
- }
@@ -1,38 +0,0 @@
1
- export interface WebhookFilterMapping {
2
- field: string;
3
- wrap?: "array";
4
- }
5
- export interface ParamDefinition {
6
- type: "string" | "string[]";
7
- description: string;
8
- default?: string;
9
- required: boolean;
10
- webhookFilter?: WebhookFilterMapping;
11
- credential?: string;
12
- }
13
- export interface AgentDefinition {
14
- name: string;
15
- label: string;
16
- description: string;
17
- credentials: {
18
- required: string[];
19
- optional: string[];
20
- };
21
- webhooks: {
22
- description: string;
23
- events: string[];
24
- actions: string[];
25
- };
26
- prompts: {
27
- webhook: string;
28
- schedule: string;
29
- };
30
- defaultSchedule: string;
31
- state?: {
32
- file: string;
33
- initial: Record<string, unknown>;
34
- };
35
- params: Record<string, ParamDefinition>;
36
- }
37
- export declare function validateDefinition(json: unknown): AgentDefinition;
38
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/agents/definitions/schema.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACzC;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CA4DjE"}