claude-task-worker 0.1.0 → 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 (47) hide show
  1. package/README.md +6 -2
  2. package/dist/index.js +26 -2
  3. package/package.json +1 -1
  4. package/dist/commands/init.d.ts +0 -1
  5. package/dist/commands/init.js +0 -84
  6. package/dist/commands/init.js.map +0 -1
  7. package/dist/gh.d.ts +0 -47
  8. package/dist/gh.js +0 -113
  9. package/dist/gh.js.map +0 -1
  10. package/dist/git.d.ts +0 -1
  11. package/dist/git.js +0 -14
  12. package/dist/git.js.map +0 -1
  13. package/dist/index.d.ts +0 -2
  14. package/dist/index.js.map +0 -1
  15. package/dist/process-manager.d.ts +0 -8
  16. package/dist/process-manager.js +0 -218
  17. package/dist/process-manager.js.map +0 -1
  18. package/dist/random-name.d.ts +0 -1
  19. package/dist/random-name.js +0 -59
  20. package/dist/random-name.js.map +0 -1
  21. package/dist/slack.d.ts +0 -5
  22. package/dist/slack.js +0 -125
  23. package/dist/slack.js.map +0 -1
  24. package/dist/usage.d.ts +0 -2
  25. package/dist/usage.js +0 -52
  26. package/dist/usage.js.map +0 -1
  27. package/dist/workers/create-issue.d.ts +0 -1
  28. package/dist/workers/create-issue.js +0 -55
  29. package/dist/workers/create-issue.js.map +0 -1
  30. package/dist/workers/exec-issue.d.ts +0 -1
  31. package/dist/workers/exec-issue.js +0 -50
  32. package/dist/workers/exec-issue.js.map +0 -1
  33. package/dist/workers/fix-review-point.d.ts +0 -1
  34. package/dist/workers/fix-review-point.js +0 -62
  35. package/dist/workers/fix-review-point.js.map +0 -1
  36. package/dist/workers/triage-issues.d.ts +0 -3
  37. package/dist/workers/triage-issues.js +0 -54
  38. package/dist/workers/triage-issues.js.map +0 -1
  39. package/dist/workers/triage-prs.d.ts +0 -3
  40. package/dist/workers/triage-prs.js +0 -56
  41. package/dist/workers/triage-prs.js.map +0 -1
  42. package/dist/workers/update-issue.d.ts +0 -1
  43. package/dist/workers/update-issue.js +0 -61
  44. package/dist/workers/update-issue.js.map +0 -1
  45. package/dist/worktree.d.ts +0 -2
  46. package/dist/worktree.js +0 -34
  47. package/dist/worktree.js.map +0 -1
@@ -1,59 +0,0 @@
1
- import { randomInt } from "node:crypto";
2
- const ADJECTIVES = [
3
- "brave", "calm", "dark", "eager", "fair",
4
- "gentle", "happy", "keen", "lively", "noble",
5
- "proud", "quiet", "rapid", "sharp", "swift",
6
- "tender", "vivid", "warm", "bold", "bright",
7
- "clever", "daring", "fierce", "grand", "humble",
8
- "jovial", "kind", "lucky", "mighty", "neat",
9
- "agile", "amber", "breezy", "crisp", "deep",
10
- "dusty", "elfin", "frosty", "golden", "hardy",
11
- "icy", "joyful", "lean", "misty", "nimble",
12
- "open", "peppy", "radiant", "serene", "tidy",
13
- "upbeat", "valiant", "wiry", "zesty", "ancient",
14
- "brisk", "crispy", "deft", "earnest", "fleet",
15
- "airy", "ardent", "astute", "azure", "balmy",
16
- "blithe", "buoyant", "candid", "cheery", "coastal",
17
- "dashing", "dazzling", "devoted", "dynamic", "edgy",
18
- "elegant", "enduring", "exotic", "fabled", "faithful",
19
- "famous", "fearless", "flawless", "fluent", "focused",
20
- "forceful", "forged", "frank", "fresh", "frugal",
21
- "gallant", "gifted", "glowing", "graceful", "grounded",
22
- "honest", "hopeful", "ideal", "immense", "intact",
23
- "intrepid", "ironclad", "ivory", "keen", "knowing",
24
- "lavish", "level", "lithe", "lofty", "loyal",
25
- "luminous", "majestic", "mellow", "mindful", "modern",
26
- ];
27
- const NOUNS = [
28
- "falcon", "river", "cedar", "flame", "stone",
29
- "breeze", "coral", "delta", "frost", "grove",
30
- "harbor", "iris", "jade", "lark", "maple",
31
- "orbit", "pearl", "ridge", "spark", "tide",
32
- "vale", "wolf", "apex", "bloom", "crest",
33
- "dawn", "ember", "flint", "hawk", "sage",
34
- "arrow", "basin", "cliff", "dune", "echo",
35
- "fern", "gale", "helm", "isle", "jungle",
36
- "kite", "lance", "marsh", "nova", "oak",
37
- "pine", "quill", "reef", "shore", "thorn",
38
- "umber", "veil", "wave", "xenon", "yew",
39
- "zenith", "acorn", "birch", "comet", "dew",
40
- "abyss", "anchor", "anvil", "arc", "ash",
41
- "atlas", "aurora", "axe", "bay", "beacon",
42
- "blade", "bolt", "brook", "bud", "burl",
43
- "cairn", "canopy", "cape", "cavern", "chain",
44
- "chalk", "chasm", "chord", "chrome", "citrus",
45
- "claw", "cloud", "cobalt", "creek", "crown",
46
- "crystal", "current", "cypress", "depot", "depth",
47
- "drift", "dusk", "dust", "eddy", "elm",
48
- "epoch", "ether", "field", "fin", "fjord",
49
- "foam", "forge", "fossil", "geyser", "glacier",
50
- "glow", "granite", "heath", "heron", "hollow",
51
- ];
52
- function pick(list) {
53
- return list[randomInt(list.length)];
54
- }
55
- export function generateWorktreeName() {
56
- const suffix = String(randomInt(10000)).padStart(4, "0");
57
- return `${pick(ADJECTIVES)}-${pick(NOUNS)}-${suffix}`;
58
- }
59
- //# sourceMappingURL=random-name.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"random-name.js","sourceRoot":"","sources":["../src/random-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IACxC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC3C,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IAC3C,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAC/C,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;IAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;IAC7C,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ;IAC1C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAC5C,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS;IAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IAC7C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;IAC5C,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS;IAClD,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM;IACnD,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU;IACrD,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS;IACrD,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IAChD,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;IACtD,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IACjD,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS;IAClD,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC5C,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;CACtD,CAAC;AAEF,MAAM,KAAK,GAAG;IACZ,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC5C,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC5C,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;IAC1C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACxC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IACzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IACxC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;IACvC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;IACvC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;IAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ;IACzC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAC7C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;IAC3C,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;IACjD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;IACtC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;IACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS;IAC9C,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;CAC9C,CAAC;AAEF,SAAS,IAAI,CAAC,IAAc;IAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;AACxD,CAAC"}
package/dist/slack.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export declare function send(payload: Record<string, unknown>): Promise<void>;
2
- export declare function buildTokenLimitText(): Promise<string>;
3
- export declare function notifyTaskCompleted(workerName: string, repoName: string, id: number, title: string, url: string): Promise<void>;
4
- export declare function notifyTaskFailed(workerName: string, repoName: string, id: number, title: string, url: string, output?: string): Promise<void>;
5
- export declare function notifyError(workerName: string, repoName: string, error: unknown): Promise<void>;
package/dist/slack.js DELETED
@@ -1,125 +0,0 @@
1
- import { exec } from "node:child_process";
2
- import { readFileSync, writeFileSync } from "node:fs";
3
- import { promisify } from "node:util";
4
- const execAsync = promisify(exec);
5
- const WEBHOOK_URL = process.env.CLAUDE_TASK_WORKER_SLACK_WEBHOOK_URL;
6
- const USAGE_CACHE_PATH = "/tmp/claude-usage-cache.json";
7
- const USAGE_CACHE_TTL_SECONDS = 360;
8
- export async function send(payload) {
9
- if (!WEBHOOK_URL)
10
- return;
11
- try {
12
- await fetch(WEBHOOK_URL, {
13
- method: "POST",
14
- headers: { "Content-Type": "application/json" },
15
- body: JSON.stringify(payload),
16
- });
17
- }
18
- catch (err) {
19
- console.error(`[slack] Failed to send notification: ${err}`);
20
- }
21
- }
22
- async function getOAuthToken() {
23
- const { stdout } = await execAsync('security find-generic-password -s "Claude Code-credentials" -w');
24
- const credentials = JSON.parse(stdout.trim());
25
- return credentials.claudeAiOauth?.accessToken ?? credentials.oauth_token ?? credentials.access_token ?? credentials;
26
- }
27
- function readUsageCache() {
28
- try {
29
- const raw = readFileSync(USAGE_CACHE_PATH, "utf-8");
30
- const cached = JSON.parse(raw);
31
- if (Date.now() - cached.timestamp < USAGE_CACHE_TTL_SECONDS * 1000) {
32
- return cached.data;
33
- }
34
- }
35
- catch {
36
- }
37
- return null;
38
- }
39
- function writeUsageCache(data) {
40
- try {
41
- writeFileSync(USAGE_CACHE_PATH, JSON.stringify({ timestamp: Date.now(), data }));
42
- }
43
- catch {
44
- }
45
- }
46
- async function fetchUsageInfo() {
47
- const cached = readUsageCache();
48
- if (cached)
49
- return cached;
50
- try {
51
- const token = await getOAuthToken();
52
- const res = await fetch("https://api.anthropic.com/api/oauth/usage", {
53
- headers: {
54
- Authorization: `Bearer ${token}`,
55
- "anthropic-beta": "oauth-2025-04-20",
56
- },
57
- });
58
- if (!res.ok) {
59
- console.error(`[slack] Usage API returned ${res.status}`);
60
- return null;
61
- }
62
- const body = await res.json();
63
- const data = {
64
- fiveHourUtilization: body.five_hour.utilization,
65
- fiveHourResetsAt: body.five_hour.resets_at,
66
- sevenDayUtilization: body.seven_day.utilization,
67
- sevenDayResetsAt: body.seven_day.resets_at,
68
- };
69
- writeUsageCache(data);
70
- return data;
71
- }
72
- catch (err) {
73
- console.error(`[slack] Failed to fetch usage info: ${err}`);
74
- return null;
75
- }
76
- }
77
- function utilizationEmoji(value) {
78
- if (value < 50)
79
- return "🟢";
80
- if (value < 80)
81
- return "🟡";
82
- return "🔴";
83
- }
84
- function formatResetTimeJST(isoString) {
85
- const date = new Date(isoString);
86
- return date.toLocaleString("ja-JP", {
87
- timeZone: "Asia/Tokyo",
88
- month: "numeric",
89
- day: "numeric",
90
- hour: "numeric",
91
- minute: "2-digit",
92
- });
93
- }
94
- export async function buildTokenLimitText() {
95
- const usage = await fetchUsageInfo();
96
- if (!usage)
97
- return "";
98
- const fiveH = usage.fiveHourUtilization.toFixed(1);
99
- const sevenD = usage.sevenDayUtilization.toFixed(1);
100
- const emoji = utilizationEmoji(Math.max(usage.fiveHourUtilization, usage.sevenDayUtilization));
101
- const fiveHReset = formatResetTimeJST(usage.fiveHourResetsAt);
102
- const sevenDReset = formatResetTimeJST(usage.sevenDayResetsAt);
103
- return ` | ${emoji} 5h: ${fiveH}% (reset: ${fiveHReset}) / 7d: ${sevenD}% (reset: ${sevenDReset})`;
104
- }
105
- export async function notifyTaskCompleted(workerName, repoName, id, title, url) {
106
- const tokenText = await buildTokenLimitText();
107
- await send({
108
- text: `✅ [${workerName}] ${repoName} | Task completed: <${url}|#${id} ${title}>${tokenText}`,
109
- });
110
- }
111
- export async function notifyTaskFailed(workerName, repoName, id, title, url, output) {
112
- const tokenText = await buildTokenLimitText();
113
- const truncatedOutput = output && output.length > 1000 ? `…${output.slice(-1000)}` : output;
114
- const outputBlock = truncatedOutput ? `\n\`\`\`${truncatedOutput}\`\`\`` : "";
115
- await send({
116
- text: `❌ [${workerName}] ${repoName} | Task failed: <${url}|#${id} ${title}>${tokenText}${outputBlock}`,
117
- });
118
- }
119
- export async function notifyError(workerName, repoName, error) {
120
- const message = error instanceof Error ? error.message : String(error);
121
- await send({
122
- text: `🚨 [${workerName}] ${repoName} | Error: ${message}`,
123
- });
124
- }
125
- //# sourceMappingURL=slack.js.map
package/dist/slack.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
package/dist/usage.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function formatUsageMetrics(usage: Record<string, unknown>): string;
2
- export declare function fetchUsageMetrics(): Promise<Record<string, unknown> | null>;
package/dist/usage.js DELETED
@@ -1,52 +0,0 @@
1
- const USAGE_API_URL = process.env.CLAUDE_TASK_WORKER_USASE_API_URL;
2
- const PERIOD_LABELS = {
3
- five_hour: "5h",
4
- seven_day: "7d",
5
- seven_day_oauth_apps: "7d (OAuth Apps)",
6
- seven_day_opus: "7d (Opus)",
7
- seven_day_sonnet: "7d (Sonnet)",
8
- seven_day_cowork: "7d (Cowork)",
9
- extra_usage: "Extra",
10
- };
11
- function utilizationBar(utilization) {
12
- const filled = Math.round(utilization / 10);
13
- return "█".repeat(filled) + "░".repeat(10 - filled);
14
- }
15
- function formatResetAt(isoString) {
16
- const date = new Date(isoString);
17
- const jst = new Date(date.getTime() + 9 * 60 * 60 * 1000);
18
- const m = String(jst.getUTCMonth() + 1).padStart(2, "0");
19
- const d = String(jst.getUTCDate()).padStart(2, "0");
20
- const h = String(jst.getUTCHours()).padStart(2, "0");
21
- const min = String(jst.getUTCMinutes()).padStart(2, "0");
22
- return `${m}/${d} ${h}:${min} JST`;
23
- }
24
- export function formatUsageMetrics(usage) {
25
- const lines = [];
26
- for (const [key, value] of Object.entries(usage)) {
27
- if (!value || typeof value !== "object")
28
- continue;
29
- const period = value;
30
- if (typeof period.utilization !== "number")
31
- continue;
32
- const label = PERIOD_LABELS[key] ?? key;
33
- const bar = utilizationBar(period.utilization);
34
- const reset = formatResetAt(period.resets_at);
35
- lines.push(`• *${label}:* ${period.utilization}% \`${bar}\` (resets: ${reset})`);
36
- }
37
- return lines.length > 0 ? lines.join("\n") : "No active usage periods";
38
- }
39
- export async function fetchUsageMetrics() {
40
- if (!USAGE_API_URL)
41
- return null;
42
- try {
43
- const response = await fetch(USAGE_API_URL);
44
- if (!response.ok)
45
- return null;
46
- return (await response.json());
47
- }
48
- catch {
49
- return null;
50
- }
51
- }
52
- //# sourceMappingURL=usage.js.map
package/dist/usage.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function createIssueWorker(): Promise<void>;
@@ -1,55 +0,0 @@
1
- import { getCurrentUser, getRepoInfo, listIssues, removeLabel, addLabel } from "../gh.js";
2
- import { syncDefaultBranch } from "../git.js";
3
- import { isRunning, isWorkerAtCapacity, isShuttingDown, run } from "../process-manager.js";
4
- import { generateWorktreeName } from "../random-name.js";
5
- import { notifyTaskCompleted, notifyTaskFailed, notifyError } from "../slack.js";
6
- import { removeWorktree } from "../worktree.js";
7
- const POLLING_INTERVAL_MS = 30 * 1000;
8
- export async function createIssueWorker() {
9
- const { owner, name, defaultBranch } = await getRepoInfo();
10
- const user = await getCurrentUser();
11
- console.log(`[create-issue] Polling issues every 30 seconds for ${owner}/${name} (assignee: ${user})`);
12
- const tick = async () => {
13
- if (isShuttingDown())
14
- return;
15
- try {
16
- const issues = await listIssues(user, "cc-create-issue");
17
- for (const issue of issues) {
18
- if (issue.labels.some(l => l.name === "cc-in-progress"))
19
- continue;
20
- if (isRunning(issue.number))
21
- continue;
22
- if (isWorkerAtCapacity("create-issue"))
23
- break;
24
- await addLabel("issue", issue.number, "cc-in-progress");
25
- const issueUrl = `https://github.com/${owner}/${name}/issues/${issue.number}`;
26
- const worktreeId = generateWorktreeName();
27
- syncDefaultBranch(defaultBranch);
28
- run("claude", ["--dangerously-skip-permissions", "-p", `/base-tools:create-issue #${issue.number}`, "--worktree", worktreeId], issue.number, issue.title, "create-issue", worktreeId, async (status, output) => {
29
- await removeWorktree(worktreeId);
30
- try {
31
- await removeLabel("issue", issue.number, "cc-create-issue");
32
- await removeLabel("issue", issue.number, "cc-in-progress");
33
- await addLabel("issue", issue.number, "cc-issue-created");
34
- }
35
- catch (err) {
36
- console.error(`[create-issue] Failed to cleanup labels for issue #${issue.number}: ${err}`);
37
- }
38
- if (status === "completed") {
39
- await notifyTaskCompleted("create-issue", name, issue.number, issue.title, issueUrl);
40
- }
41
- else {
42
- await notifyTaskFailed("create-issue", name, issue.number, issue.title, issueUrl, output);
43
- }
44
- });
45
- }
46
- }
47
- catch (err) {
48
- console.error(`[create-issue] tick error: ${err}`);
49
- await notifyError("create-issue", name, err);
50
- }
51
- };
52
- await tick();
53
- setInterval(tick, POLLING_INTERVAL_MS);
54
- }
55
- //# sourceMappingURL=create-issue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-issue.js","sourceRoot":"","sources":["../../src/workers/create-issue.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function execIssueWorker(): Promise<void>;
@@ -1,50 +0,0 @@
1
- import { getCurrentUser, getRepoInfo, listIssues, removeLabel, addLabel } from "../gh.js";
2
- import { syncDefaultBranch } from "../git.js";
3
- import { isRunning, isWorkerAtCapacity, isShuttingDown, run } from "../process-manager.js";
4
- import { generateWorktreeName } from "../random-name.js";
5
- import { notifyTaskCompleted, notifyTaskFailed, notifyError } from "../slack.js";
6
- import { removeWorktree } from "../worktree.js";
7
- const POLLING_INTERVAL_MS = 30 * 1000;
8
- export async function execIssueWorker() {
9
- const { owner, name, defaultBranch } = await getRepoInfo();
10
- const user = await getCurrentUser();
11
- console.log(`[exec-issue] Polling issues every 30 seconds for ${owner}/${name} (assignee: ${user})`);
12
- const tick = async () => {
13
- if (isShuttingDown())
14
- return;
15
- try {
16
- const issues = await listIssues(user, "cc-exec-issue");
17
- for (const issue of issues) {
18
- if (issue.labels.some(l => l.name === "cc-in-progress"))
19
- continue;
20
- if (isRunning(issue.number))
21
- continue;
22
- if (isWorkerAtCapacity("exec-issue"))
23
- break;
24
- const issueUrl = `https://github.com/${owner}/${name}/issues/${issue.number}`;
25
- const worktreeId = generateWorktreeName();
26
- await addLabel("issue", issue.number, "cc-in-progress");
27
- syncDefaultBranch(defaultBranch);
28
- run("claude", ["--dangerously-skip-permissions", "-p", `/base-tools:exec-issue ${issue.number} --triage-scope`, "--worktree", worktreeId], issue.number, issue.title, "exec-issue", worktreeId, async (status, output) => {
29
- if (status === "completed") {
30
- await addLabel("issue", issue.number, "cc-pr-created");
31
- await notifyTaskCompleted("exec-issue", name, issue.number, issue.title, issueUrl);
32
- }
33
- else {
34
- await notifyTaskFailed("exec-issue", name, issue.number, issue.title, issueUrl, output);
35
- }
36
- await removeLabel("issue", issue.number, "cc-exec-issue");
37
- await removeLabel("issue", issue.number, "cc-in-progress");
38
- await removeWorktree(worktreeId);
39
- });
40
- }
41
- }
42
- catch (err) {
43
- console.error(`[exec-issue] tick error: ${err}`);
44
- await notifyError("exec-issue", name, err);
45
- }
46
- };
47
- await tick();
48
- setInterval(tick, POLLING_INTERVAL_MS);
49
- }
50
- //# sourceMappingURL=exec-issue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec-issue.js","sourceRoot":"","sources":["../../src/workers/exec-issue.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function fixReviewPointWorker(): Promise<void>;
@@ -1,62 +0,0 @@
1
- import { getCurrentUser, getRepoInfo, listPullRequestsWithChecks, isCICompleted, addLabel, removeLabel } from "../gh.js";
2
- import { syncDefaultBranch } from "../git.js";
3
- import { isRunning, isWorkerAtCapacity, isWorkerRunning, isShuttingDown, run } from "../process-manager.js";
4
- import { generateWorktreeName } from "../random-name.js";
5
- import { notifyTaskCompleted, notifyTaskFailed, notifyError } from "../slack.js";
6
- import { removeWorktree } from "../worktree.js";
7
- const POLLING_INTERVAL_MS = 30 * 1000;
8
- const LABEL_FIX_ONETIME = "cc-fix-onetime";
9
- const LABEL_FIX_REPEAT = "cc-fix-repeat";
10
- const LABEL_IN_PROGRESS = "cc-in-progress";
11
- export async function fixReviewPointWorker() {
12
- const { owner, name, defaultBranch } = await getRepoInfo();
13
- const user = await getCurrentUser();
14
- console.log(`[fix-review-point] Polling PRs every 30 seconds for ${owner}/${name} (assignee: ${user})`);
15
- const tick = async () => {
16
- if (isShuttingDown())
17
- return;
18
- try {
19
- if (isWorkerRunning("triage-prs"))
20
- return;
21
- const prs = await listPullRequestsWithChecks(user);
22
- const candidates = prs.filter((pr) => {
23
- const labels = pr.labels.map((l) => l.name);
24
- if (labels.includes(LABEL_IN_PROGRESS))
25
- return false;
26
- if (!isCICompleted(pr.statusCheckRollup))
27
- return false;
28
- return labels.includes(LABEL_FIX_ONETIME) || labels.includes(LABEL_FIX_REPEAT);
29
- });
30
- for (const pr of candidates) {
31
- if (isRunning(pr.number))
32
- continue;
33
- if (isWorkerAtCapacity("fix-review-point"))
34
- break;
35
- const isOnetime = pr.labels.some((l) => l.name === LABEL_FIX_ONETIME);
36
- const prUrl = `https://github.com/${owner}/${name}/pull/${pr.number}`;
37
- const worktreeId = generateWorktreeName();
38
- await addLabel("pr", pr.number, LABEL_IN_PROGRESS);
39
- syncDefaultBranch(defaultBranch);
40
- run("claude", ["--dangerously-skip-permissions", "-p", `/base-tools:fix-review-point ${pr.headRefName}`, "--worktree", worktreeId], pr.number, `PR #${pr.number} (${pr.headRefName})`, "fix-review-point", worktreeId, async (status, output) => {
41
- await removeWorktree(worktreeId);
42
- if (isOnetime)
43
- await removeLabel("pr", pr.number, LABEL_FIX_ONETIME);
44
- await removeLabel("pr", pr.number, LABEL_IN_PROGRESS);
45
- if (status === "completed") {
46
- await notifyTaskCompleted("fix-review-point", name, pr.number, pr.title, prUrl);
47
- }
48
- else {
49
- await notifyTaskFailed("fix-review-point", name, pr.number, pr.title, prUrl, output);
50
- }
51
- });
52
- }
53
- }
54
- catch (err) {
55
- console.error(`[fix-review-point] tick error: ${err}`);
56
- await notifyError("fix-review-point", name, err);
57
- }
58
- };
59
- await tick();
60
- setInterval(tick, POLLING_INTERVAL_MS);
61
- }
62
- //# sourceMappingURL=fix-review-point.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fix-review-point.js","sourceRoot":"","sources":["../../src/workers/fix-review-point.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function triageIssuesWorker(options?: {
2
- waitForFirstRun?: boolean;
3
- }): Promise<void>;
@@ -1,54 +0,0 @@
1
- import { getCurrentUser, getRepoInfo, listAllIssues } from "../gh.js";
2
- import { syncDefaultBranch } from "../git.js";
3
- import { isRunning, isShuttingDown, run } from "../process-manager.js";
4
- import { notifyTaskCompleted, notifyTaskFailed, notifyError } from "../slack.js";
5
- const POLLING_INTERVAL_MS = 5 * 60 * 1000;
6
- const TASK_ID = -1;
7
- export async function triageIssuesWorker(options) {
8
- const assignee = await getCurrentUser();
9
- const { owner, name, defaultBranch } = await getRepoInfo();
10
- console.log(`[triage-issues] Polling issues every 5 minutes for ${name}`);
11
- let firstRunResolve;
12
- const firstRunPromise = options?.waitForFirstRun
13
- ? new Promise(resolve => { firstRunResolve = resolve; })
14
- : undefined;
15
- const tick = async () => {
16
- if (isShuttingDown())
17
- return;
18
- try {
19
- if (isRunning(TASK_ID))
20
- return;
21
- const issues = await listAllIssues(assignee);
22
- const EXCLUDE_LABELS = ["cc-create-issue", "cc-update-issue", "cc-exec-issue", "cc-pr-created"];
23
- const candidates = issues.filter(issue => !issue.labels.some(l => EXCLUDE_LABELS.includes(l.name)));
24
- if (candidates.length === 0) {
25
- firstRunResolve?.();
26
- firstRunResolve = undefined;
27
- return;
28
- }
29
- const repoUrl = `https://github.com/${owner}/${name}`;
30
- syncDefaultBranch(defaultBranch);
31
- run("claude", ["--dangerously-skip-permissions", "-p", "/base-tools:triage-issues"], TASK_ID, "Triage Issues", "triage-issues", undefined, async (status, output) => {
32
- if (status === "completed") {
33
- await notifyTaskCompleted("triage-issues", name, TASK_ID, "Triage Issues", repoUrl);
34
- }
35
- else {
36
- await notifyTaskFailed("triage-issues", name, TASK_ID, "Triage Issues", repoUrl, output);
37
- }
38
- firstRunResolve?.();
39
- firstRunResolve = undefined;
40
- });
41
- }
42
- catch (err) {
43
- console.error(`[triage-issues] tick error: ${err}`);
44
- await notifyError("triage-issues", name, err);
45
- firstRunResolve?.();
46
- firstRunResolve = undefined;
47
- }
48
- };
49
- await tick();
50
- setInterval(tick, POLLING_INTERVAL_MS);
51
- if (firstRunPromise)
52
- await firstRunPromise;
53
- }
54
- //# sourceMappingURL=triage-issues.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"triage-issues.js","sourceRoot":"","sources":["../../src/workers/triage-issues.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function triagePrsWorker(options?: {
2
- waitForFirstRun?: boolean;
3
- }): Promise<void>;
@@ -1,56 +0,0 @@
1
- import { getCurrentUser, getRepoInfo, listPullRequestsWithChecks, isCICompleted } from "../gh.js";
2
- import { syncDefaultBranch } from "../git.js";
3
- import { isRunning, isShuttingDown, run } from "../process-manager.js";
4
- import { notifyTaskCompleted, notifyTaskFailed, notifyError } from "../slack.js";
5
- import { removeAllAgentWorktrees } from "../worktree.js";
6
- const POLLING_INTERVAL_MS = 5 * 60 * 1000;
7
- const TASK_ID = -2;
8
- export async function triagePrsWorker(options) {
9
- const { owner, name, defaultBranch } = await getRepoInfo();
10
- const user = await getCurrentUser();
11
- console.log(`[triage-prs] Polling PRs every 5 minutes for ${name} (assignee: ${user})`);
12
- let firstRunResolve;
13
- const firstRunPromise = options?.waitForFirstRun
14
- ? new Promise(resolve => { firstRunResolve = resolve; })
15
- : undefined;
16
- const tick = async () => {
17
- if (isShuttingDown())
18
- return;
19
- try {
20
- if (isRunning(TASK_ID))
21
- return;
22
- const prs = await listPullRequestsWithChecks(user, { triageScope: true });
23
- const candidates = prs.filter(pr => !pr.labels.some(l => l.name === "cc-fix-onetime") &&
24
- isCICompleted(pr.statusCheckRollup));
25
- if (candidates.length === 0) {
26
- firstRunResolve?.();
27
- firstRunResolve = undefined;
28
- return;
29
- }
30
- const repoUrl = `https://github.com/${owner}/${name}`;
31
- syncDefaultBranch(defaultBranch);
32
- run("claude", ["--dangerously-skip-permissions", "-p", "/base-tools:triage-prs"], TASK_ID, "Triage PRs", "triage-prs", undefined, async (status, output) => {
33
- await removeAllAgentWorktrees();
34
- if (status === "completed") {
35
- await notifyTaskCompleted("triage-prs", name, TASK_ID, "Triage PRs", repoUrl);
36
- }
37
- else {
38
- await notifyTaskFailed("triage-prs", name, TASK_ID, "Triage PRs", repoUrl, output);
39
- }
40
- firstRunResolve?.();
41
- firstRunResolve = undefined;
42
- });
43
- }
44
- catch (err) {
45
- console.error(`[triage-prs] tick error: ${err}`);
46
- await notifyError("triage-prs", name, err);
47
- firstRunResolve?.();
48
- firstRunResolve = undefined;
49
- }
50
- };
51
- await tick();
52
- setInterval(tick, POLLING_INTERVAL_MS);
53
- if (firstRunPromise)
54
- await firstRunPromise;
55
- }
56
- //# sourceMappingURL=triage-prs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"triage-prs.js","sourceRoot":"","sources":["../../src/workers/triage-prs.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function updateIssueWorker(): Promise<void>;