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.
- package/README.md +6 -2
- package/dist/index.js +26 -2
- package/package.json +1 -1
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/init.js +0 -84
- package/dist/commands/init.js.map +0 -1
- package/dist/gh.d.ts +0 -47
- package/dist/gh.js +0 -113
- package/dist/gh.js.map +0 -1
- package/dist/git.d.ts +0 -1
- package/dist/git.js +0 -14
- package/dist/git.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/process-manager.d.ts +0 -8
- package/dist/process-manager.js +0 -218
- package/dist/process-manager.js.map +0 -1
- package/dist/random-name.d.ts +0 -1
- package/dist/random-name.js +0 -59
- package/dist/random-name.js.map +0 -1
- package/dist/slack.d.ts +0 -5
- package/dist/slack.js +0 -125
- package/dist/slack.js.map +0 -1
- package/dist/usage.d.ts +0 -2
- package/dist/usage.js +0 -52
- package/dist/usage.js.map +0 -1
- package/dist/workers/create-issue.d.ts +0 -1
- package/dist/workers/create-issue.js +0 -55
- package/dist/workers/create-issue.js.map +0 -1
- package/dist/workers/exec-issue.d.ts +0 -1
- package/dist/workers/exec-issue.js +0 -50
- package/dist/workers/exec-issue.js.map +0 -1
- package/dist/workers/fix-review-point.d.ts +0 -1
- package/dist/workers/fix-review-point.js +0 -62
- package/dist/workers/fix-review-point.js.map +0 -1
- package/dist/workers/triage-issues.d.ts +0 -3
- package/dist/workers/triage-issues.js +0 -54
- package/dist/workers/triage-issues.js.map +0 -1
- package/dist/workers/triage-prs.d.ts +0 -3
- package/dist/workers/triage-prs.js +0 -56
- package/dist/workers/triage-prs.js.map +0 -1
- package/dist/workers/update-issue.d.ts +0 -1
- package/dist/workers/update-issue.js +0 -61
- package/dist/workers/update-issue.js.map +0 -1
- package/dist/worktree.d.ts +0 -2
- package/dist/worktree.js +0 -34
- package/dist/worktree.js.map +0 -1
package/README.md
CHANGED
|
@@ -146,7 +146,8 @@ claude-task-worker init --force # 既存ファイルを強制上書き
|
|
|
146
146
|
| `cc-need-human-check` | 人間の確認が必要なマーク(付与中はIssueワーカーの処理対象から除外される) |
|
|
147
147
|
| `cc-issue-created` | `/claude-task-worker:create-issue` 由来のIssueマーク(triage-created-issue のトリガー条件) |
|
|
148
148
|
| `cc-pr-created` | PR作成完了マーク |
|
|
149
|
-
| `cc-epic-issue` |
|
|
149
|
+
| `cc-epic-issue` | エピックマーク(Issueではサブ全Closeで `epic-issue` ワーカー起動、PRではリリースゲート対象を示すマーク) |
|
|
150
|
+
| `cc-release-ready` | エピックPRがリリース可能(マージ問題なし)と判定されたマーク。実際のマージ(リリース)は人間が実施 |
|
|
150
151
|
|
|
151
152
|
作成されるファイル:
|
|
152
153
|
|
|
@@ -234,6 +235,8 @@ claude-task-worker yolo --epic 100 --epic 200 --label priority-high
|
|
|
234
235
|
|
|
235
236
|
- `cc-fix-onetime` が付いているPRは除外
|
|
236
237
|
- `cc-resolve-conflict` が付いているPRは除外
|
|
238
|
+
- `cc-release-ready` が付いているPRは除外(リリースゲート判定済みのため再トリアージしない)
|
|
239
|
+
- マージ可能と判定した際、`cc-epic-issue` が付いたエピックPRはマージせず `cc-release-ready` ラベルを付与する(リリースのためのマージは人間の判断に委ねる)。通常PRは従来どおりマージする
|
|
237
240
|
|
|
238
241
|
### resolve-conflict
|
|
239
242
|
|
|
@@ -254,7 +257,8 @@ claude-task-worker yolo --epic 100 --epic 200 --label priority-high
|
|
|
254
257
|
|
|
255
258
|
- `cc-pr-created` が付いているIssueは除外
|
|
256
259
|
- サブIssueが存在しない、または1つでも未Closeのものがあればスキップ
|
|
257
|
-
-
|
|
260
|
+
- 完了後、親Issueに `cc-pr-created` ラベルを付与
|
|
261
|
+
- 完了後、作成されたエピックPR(`cc-epic-<親Issue番号>` ブランチ)に `cc-epic-issue` と `cc-triage-scope` ラベルを付与し、triage-pr のリリースゲート判定に引き継ぐ
|
|
258
262
|
|
|
259
263
|
### all
|
|
260
264
|
|
package/dist/index.js
CHANGED
|
@@ -90,6 +90,22 @@ async function listIssuesByNumbers(assignee, labels, excludeLabels, numbers) {
|
|
|
90
90
|
}
|
|
91
91
|
return results;
|
|
92
92
|
}
|
|
93
|
+
async function findOpenPrNumberByHeadRef(headRefName) {
|
|
94
|
+
const output = await execGh([
|
|
95
|
+
"pr",
|
|
96
|
+
"list",
|
|
97
|
+
"--state",
|
|
98
|
+
"open",
|
|
99
|
+
"--head",
|
|
100
|
+
headRefName,
|
|
101
|
+
"--json",
|
|
102
|
+
"number",
|
|
103
|
+
"--limit",
|
|
104
|
+
"1"
|
|
105
|
+
]);
|
|
106
|
+
const prs = JSON.parse(output);
|
|
107
|
+
return prs.length > 0 ? prs[0].number : null;
|
|
108
|
+
}
|
|
93
109
|
async function getIssueSubIssuesSummary(issueNumber) {
|
|
94
110
|
const output = await execGh(["issue", "view", String(issueNumber), "--json", "subIssuesSummary"]);
|
|
95
111
|
const parsed = JSON.parse(output);
|
|
@@ -1450,7 +1466,7 @@ var triagePrWorker = createPrPollingWorker({
|
|
|
1450
1466
|
name: "triage-pr",
|
|
1451
1467
|
command: "/claude-task-worker:triage-pr",
|
|
1452
1468
|
triggerLabel: "cc-triage-scope",
|
|
1453
|
-
excludeLabels: ["cc-fix-onetime", "cc-resolve-conflict"]
|
|
1469
|
+
excludeLabels: ["cc-fix-onetime", "cc-resolve-conflict", "cc-release-ready"]
|
|
1454
1470
|
});
|
|
1455
1471
|
|
|
1456
1472
|
// src/workers/resolve-conflict.ts
|
|
@@ -1487,6 +1503,13 @@ var epicIssueWorker = (opts = {}) => createIssuePollingWorker({
|
|
|
1487
1503
|
},
|
|
1488
1504
|
onCompleted: async (issueNumber) => {
|
|
1489
1505
|
await addLabel("issue", issueNumber, "cc-pr-created");
|
|
1506
|
+
const prNumber = await findOpenPrNumberByHeadRef(`cc-epic-${issueNumber}`);
|
|
1507
|
+
if (prNumber === null) {
|
|
1508
|
+
console.error(`[epic-issue] Epic PR for branch cc-epic-${issueNumber} not found; skip labeling`);
|
|
1509
|
+
return;
|
|
1510
|
+
}
|
|
1511
|
+
await addLabel("pr", prNumber, "cc-epic-issue");
|
|
1512
|
+
await addLabel("pr", prNumber, "cc-triage-scope");
|
|
1490
1513
|
}
|
|
1491
1514
|
})();
|
|
1492
1515
|
|
|
@@ -1503,7 +1526,8 @@ var LABELS = [
|
|
|
1503
1526
|
{ name: "cc-pr-created", color: "006b75" },
|
|
1504
1527
|
{ name: "cc-triage-scope", color: "c5def5" },
|
|
1505
1528
|
{ name: "cc-resolve-conflict", color: "fbca04" },
|
|
1506
|
-
{ name: "cc-epic-issue", color: "8b5cf6" }
|
|
1529
|
+
{ name: "cc-epic-issue", color: "8b5cf6" },
|
|
1530
|
+
{ name: "cc-release-ready", color: "2da44e" }
|
|
1507
1531
|
];
|
|
1508
1532
|
var ISSUE_TEMPLATE = `name: "[claude-task-worker] Issue\u4F5C\u6210\u4F9D\u983C"
|
|
1509
1533
|
description: claude-task-worker\u3067GitHub Issue\u3092\u4F5C\u6210\u3059\u308B
|
package/package.json
CHANGED
package/dist/commands/init.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function init(): Promise<void>;
|
package/dist/commands/init.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { mkdir, writeFile, access } from "node:fs/promises";
|
|
2
|
-
import { createLabel } from "../gh.js";
|
|
3
|
-
const LABELS = [
|
|
4
|
-
{ name: "cc-create-issue", color: "0075ca" },
|
|
5
|
-
{ name: "cc-update-issue", color: "e4e669" },
|
|
6
|
-
{ name: "cc-exec-issue", color: "7057ff" },
|
|
7
|
-
{ name: "cc-fix-onetime", color: "d93f0b" },
|
|
8
|
-
{ name: "cc-fix-repeat", color: "b60205" },
|
|
9
|
-
{ name: "cc-in-progress", color: "0e8a16" },
|
|
10
|
-
{ name: "cc-issue-created", color: "f9a825" },
|
|
11
|
-
{ name: "cc-pr-created", color: "006b75" },
|
|
12
|
-
{ name: "cc-triage-scope", color: "c5def5" },
|
|
13
|
-
];
|
|
14
|
-
const ISSUE_TEMPLATE = `name: "[claude-task-worker] Issue作成依頼"
|
|
15
|
-
description: claude-task-workerでGitHub Issueを作成する
|
|
16
|
-
title: "[claude-task-worker] Issue作成依頼"
|
|
17
|
-
labels:
|
|
18
|
-
- cc-create-issue
|
|
19
|
-
body:
|
|
20
|
-
- type: textarea
|
|
21
|
-
id: request
|
|
22
|
-
attributes:
|
|
23
|
-
label: 依頼内容
|
|
24
|
-
description: 作成してほしいIssueの内容を記述してください
|
|
25
|
-
validations:
|
|
26
|
-
required: true
|
|
27
|
-
`;
|
|
28
|
-
const ASSIGN_CREATOR_WORKFLOW = `name: Assign creator on cc-create-issue
|
|
29
|
-
|
|
30
|
-
on:
|
|
31
|
-
issues:
|
|
32
|
-
types: [opened]
|
|
33
|
-
|
|
34
|
-
jobs:
|
|
35
|
-
assign:
|
|
36
|
-
if: contains(github.event.issue.labels.*.name, 'cc-create-issue')
|
|
37
|
-
runs-on: ubuntu-latest
|
|
38
|
-
permissions:
|
|
39
|
-
issues: write
|
|
40
|
-
steps:
|
|
41
|
-
- uses: actions/github-script@v7
|
|
42
|
-
with:
|
|
43
|
-
script: |
|
|
44
|
-
await github.rest.issues.addAssignees({
|
|
45
|
-
owner: context.repo.owner,
|
|
46
|
-
repo: context.repo.repo,
|
|
47
|
-
issue_number: context.issue.number,
|
|
48
|
-
assignees: [context.payload.issue.user.login]
|
|
49
|
-
});
|
|
50
|
-
`;
|
|
51
|
-
async function createFileIfNotExists(path, content) {
|
|
52
|
-
try {
|
|
53
|
-
await access(path);
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
await writeFile(path, content, "utf-8");
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export async function init() {
|
|
62
|
-
console.log("[init] Creating labels...");
|
|
63
|
-
for (const label of LABELS) {
|
|
64
|
-
const ok = await createLabel(label.name, label.color, true);
|
|
65
|
-
if (ok) {
|
|
66
|
-
console.log(`[init] Ensured label: ${label.name}`);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
console.log(`[init] Failed to create label: ${label.name}`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
console.log("[init] Creating issue template...");
|
|
73
|
-
await mkdir(".github/ISSUE_TEMPLATE", { recursive: true });
|
|
74
|
-
const templatePath = ".github/ISSUE_TEMPLATE/cc-create-issue.yml";
|
|
75
|
-
const templateCreated = await createFileIfNotExists(templatePath, ISSUE_TEMPLATE);
|
|
76
|
-
console.log(templateCreated ? `[init] Created: ${templatePath}` : `[init] Already exists: ${templatePath}`);
|
|
77
|
-
console.log("[init] Creating GitHub Actions workflow...");
|
|
78
|
-
await mkdir(".github/workflows", { recursive: true });
|
|
79
|
-
const workflowPath = ".github/workflows/assign-creator-on-cc-create-issue.yml";
|
|
80
|
-
const workflowCreated = await createFileIfNotExists(workflowPath, ASSIGN_CREATOR_WORKFLOW);
|
|
81
|
-
console.log(workflowCreated ? `[init] Created: ${workflowPath}` : `[init] Already exists: ${workflowPath}`);
|
|
82
|
-
console.log("[init] Done.");
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/gh.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
interface Issue {
|
|
2
|
-
number: number;
|
|
3
|
-
title: string;
|
|
4
|
-
labels: {
|
|
5
|
-
name: string;
|
|
6
|
-
}[];
|
|
7
|
-
body: string;
|
|
8
|
-
state: string;
|
|
9
|
-
}
|
|
10
|
-
interface PullRequest {
|
|
11
|
-
number: number;
|
|
12
|
-
headRefName: string;
|
|
13
|
-
labels: {
|
|
14
|
-
name: string;
|
|
15
|
-
}[];
|
|
16
|
-
title: string;
|
|
17
|
-
}
|
|
18
|
-
interface RepoInfo {
|
|
19
|
-
owner: string;
|
|
20
|
-
name: string;
|
|
21
|
-
defaultBranch: string;
|
|
22
|
-
}
|
|
23
|
-
export declare function getCurrentUser(): Promise<string>;
|
|
24
|
-
export declare function getRepoInfo(): Promise<RepoInfo>;
|
|
25
|
-
export declare function listIssues(assignee: string, label: string): Promise<Issue[]>;
|
|
26
|
-
export declare function listAllIssues(assignee: string): Promise<Issue[]>;
|
|
27
|
-
interface StatusCheck {
|
|
28
|
-
__typename: string;
|
|
29
|
-
status?: string;
|
|
30
|
-
state?: string;
|
|
31
|
-
}
|
|
32
|
-
interface PullRequestWithChecks extends PullRequest {
|
|
33
|
-
statusCheckRollup: StatusCheck[];
|
|
34
|
-
}
|
|
35
|
-
export declare function isCICompleted(checks: StatusCheck[]): boolean;
|
|
36
|
-
export declare function listPullRequestsWithChecks(assignee?: string, options?: {
|
|
37
|
-
triageScope?: boolean;
|
|
38
|
-
}): Promise<PullRequestWithChecks[]>;
|
|
39
|
-
export declare function addLabel(type: "issue" | "pr", number: number, label: string): Promise<void>;
|
|
40
|
-
export declare function removeLabel(type: "issue" | "pr", number: number, label: string): Promise<void>;
|
|
41
|
-
export declare function getLastIssueComment(issueNumber: number): Promise<{
|
|
42
|
-
author: string;
|
|
43
|
-
body: string;
|
|
44
|
-
} | null>;
|
|
45
|
-
export declare function commentOnIssue(issueNumber: number, body: string): Promise<void>;
|
|
46
|
-
export declare function createLabel(name: string, color?: string, force?: boolean): Promise<boolean>;
|
|
47
|
-
export {};
|
package/dist/gh.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
|
-
function execGh(args) {
|
|
3
|
-
return new Promise((resolve, reject) => {
|
|
4
|
-
execFile("gh", args, (error, stdout, stderr) => {
|
|
5
|
-
if (error) {
|
|
6
|
-
reject(new Error(`gh ${args.join(" ")} failed: ${stderr || error.message}`));
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
resolve(stdout.trim());
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
export async function getCurrentUser() {
|
|
14
|
-
return execGh(["api", "user", "--jq", ".login"]);
|
|
15
|
-
}
|
|
16
|
-
export async function getRepoInfo() {
|
|
17
|
-
const output = await execGh(["repo", "view", "--json", "owner,name,defaultBranchRef"]);
|
|
18
|
-
const parsed = JSON.parse(output);
|
|
19
|
-
return { owner: parsed.owner.login, name: parsed.name, defaultBranch: parsed.defaultBranchRef.name };
|
|
20
|
-
}
|
|
21
|
-
export async function listIssues(assignee, label) {
|
|
22
|
-
const output = await execGh([
|
|
23
|
-
"issue", "list",
|
|
24
|
-
"--assignee", assignee,
|
|
25
|
-
"--label", label,
|
|
26
|
-
"--json", "number,title,labels",
|
|
27
|
-
"--limit", "100",
|
|
28
|
-
]);
|
|
29
|
-
return JSON.parse(output);
|
|
30
|
-
}
|
|
31
|
-
export async function listAllIssues(assignee) {
|
|
32
|
-
const output = await execGh([
|
|
33
|
-
"issue", "list",
|
|
34
|
-
"--assignee", assignee,
|
|
35
|
-
"--label", "cc-triage-scope",
|
|
36
|
-
"--search", "sort:created-asc",
|
|
37
|
-
"--json", "number,title,labels",
|
|
38
|
-
"--limit", "5",
|
|
39
|
-
]);
|
|
40
|
-
return JSON.parse(output);
|
|
41
|
-
}
|
|
42
|
-
export function isCICompleted(checks) {
|
|
43
|
-
if (checks.length === 0)
|
|
44
|
-
return true;
|
|
45
|
-
return checks.every(check => {
|
|
46
|
-
if (check.__typename === "CheckRun") {
|
|
47
|
-
return check.status === "COMPLETED";
|
|
48
|
-
}
|
|
49
|
-
return check.state !== "PENDING";
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
export async function listPullRequestsWithChecks(assignee, options) {
|
|
53
|
-
const args = [
|
|
54
|
-
"pr", "list",
|
|
55
|
-
"--json", "number,headRefName,labels,title,statusCheckRollup",
|
|
56
|
-
"--limit", "100",
|
|
57
|
-
];
|
|
58
|
-
if (options?.triageScope) {
|
|
59
|
-
args.push("--label", "cc-triage-scope");
|
|
60
|
-
}
|
|
61
|
-
if (assignee) {
|
|
62
|
-
args.push("--assignee", assignee);
|
|
63
|
-
}
|
|
64
|
-
const output = await execGh(args);
|
|
65
|
-
return JSON.parse(output);
|
|
66
|
-
}
|
|
67
|
-
async function withRetry(fn, maxRetries = 3, delayMs = 1000) {
|
|
68
|
-
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
69
|
-
try {
|
|
70
|
-
return await fn();
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
if (attempt === maxRetries)
|
|
74
|
-
throw err;
|
|
75
|
-
console.error(`[gh] Attempt ${attempt}/${maxRetries} failed, retrying in ${delayMs}ms...`);
|
|
76
|
-
await new Promise(resolve => setTimeout(resolve, delayMs));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
throw new Error("unreachable");
|
|
80
|
-
}
|
|
81
|
-
export async function addLabel(type, number, label) {
|
|
82
|
-
await withRetry(() => execGh([type, "edit", String(number), "--add-label", label]));
|
|
83
|
-
}
|
|
84
|
-
export async function removeLabel(type, number, label) {
|
|
85
|
-
await withRetry(() => execGh([type, "edit", String(number), "--remove-label", label]));
|
|
86
|
-
}
|
|
87
|
-
export async function getLastIssueComment(issueNumber) {
|
|
88
|
-
const output = await execGh(["issue", "view", String(issueNumber), "--json", "comments"]);
|
|
89
|
-
const parsed = JSON.parse(output);
|
|
90
|
-
const comments = parsed.comments ?? [];
|
|
91
|
-
if (comments.length === 0)
|
|
92
|
-
return null;
|
|
93
|
-
const last = comments[comments.length - 1];
|
|
94
|
-
return { author: last.author.login, body: last.body };
|
|
95
|
-
}
|
|
96
|
-
export async function commentOnIssue(issueNumber, body) {
|
|
97
|
-
await execGh(["issue", "comment", String(issueNumber), "--body", body]);
|
|
98
|
-
}
|
|
99
|
-
export async function createLabel(name, color, force) {
|
|
100
|
-
try {
|
|
101
|
-
const args = ["label", "create", name];
|
|
102
|
-
if (color)
|
|
103
|
-
args.push("--color", color);
|
|
104
|
-
if (force)
|
|
105
|
-
args.push("--force");
|
|
106
|
-
await execGh(args);
|
|
107
|
-
return true;
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=gh.js.map
|
package/dist/gh.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gh.js","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function syncDefaultBranch(branch: string): void;
|
package/dist/git.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { execSync } from "node:child_process";
|
|
2
|
-
let running = false;
|
|
3
|
-
export function syncDefaultBranch(branch) {
|
|
4
|
-
if (running)
|
|
5
|
-
return;
|
|
6
|
-
running = true;
|
|
7
|
-
try {
|
|
8
|
-
execSync(`git worktree prune && git checkout ${branch} && git add -A && git reset --hard && git pull origin ${branch}`, { stdio: "pipe" });
|
|
9
|
-
}
|
|
10
|
-
finally {
|
|
11
|
-
running = false;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,OAAO;QAAE,OAAO;IACpB,OAAO,GAAG,IAAI,CAAC;IACf,IAAI,CAAC;QACH,QAAQ,CAAC,sCAAsC,MAAM,yDAAyD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7I,CAAC;YAAS,CAAC;QACT,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
DELETED
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare function setShuttingDown(): void;
|
|
2
|
-
export declare function isShuttingDown(): boolean;
|
|
3
|
-
export declare function isRunning(id: number): boolean;
|
|
4
|
-
export declare function isWorkerRunning(workerName: string): boolean;
|
|
5
|
-
export declare function isWorkerAtCapacity(workerName: string): boolean;
|
|
6
|
-
export declare function run(command: string, args: string[], id: number, title: string, workerName: string, path?: string, onComplete?: (status: "completed" | "failed", output: string) => void): void;
|
|
7
|
-
export declare function waitForAllProcesses(): Promise<void>;
|
|
8
|
-
export declare function shutdown(): void;
|
package/dist/process-manager.js
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import { spawn, ChildProcess } from "node:child_process";
|
|
2
|
-
const childProcesses = new Map();
|
|
3
|
-
function getDisplayWidth(str) {
|
|
4
|
-
let width = 0;
|
|
5
|
-
for (const char of str) {
|
|
6
|
-
const code = char.codePointAt(0);
|
|
7
|
-
if ((code >= 0x1100 && code <= 0x115f) ||
|
|
8
|
-
(code >= 0x2e80 && code <= 0x303e) ||
|
|
9
|
-
(code >= 0x3040 && code <= 0x33bf) ||
|
|
10
|
-
(code >= 0x3400 && code <= 0x4dbf) ||
|
|
11
|
-
(code >= 0x4e00 && code <= 0xa4cf) ||
|
|
12
|
-
(code >= 0xac00 && code <= 0xd7af) ||
|
|
13
|
-
(code >= 0xf900 && code <= 0xfaff) ||
|
|
14
|
-
(code >= 0xfe30 && code <= 0xfe6f) ||
|
|
15
|
-
(code >= 0xff01 && code <= 0xff60) ||
|
|
16
|
-
(code >= 0xffe0 && code <= 0xffe6) ||
|
|
17
|
-
(code >= 0x20000 && code <= 0x2fffd) ||
|
|
18
|
-
(code >= 0x30000 && code <= 0x3fffd)) {
|
|
19
|
-
width += 2;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
width += 1;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return width;
|
|
26
|
-
}
|
|
27
|
-
function truncateToWidth(str, maxWidth) {
|
|
28
|
-
let width = 0;
|
|
29
|
-
let i = 0;
|
|
30
|
-
const chars = [...str];
|
|
31
|
-
while (i < chars.length) {
|
|
32
|
-
const charWidth = getDisplayWidth(chars[i]);
|
|
33
|
-
if (width + charWidth > maxWidth - 3) {
|
|
34
|
-
return chars.slice(0, i).join("") + "...";
|
|
35
|
-
}
|
|
36
|
-
width += charWidth;
|
|
37
|
-
i++;
|
|
38
|
-
}
|
|
39
|
-
return str;
|
|
40
|
-
}
|
|
41
|
-
function padToWidth(str, targetWidth) {
|
|
42
|
-
const currentWidth = getDisplayWidth(str);
|
|
43
|
-
const padding = targetWidth - currentWidth;
|
|
44
|
-
return padding > 0 ? str + " ".repeat(padding) : str;
|
|
45
|
-
}
|
|
46
|
-
const tasks = new Map();
|
|
47
|
-
let shuttingDown = false;
|
|
48
|
-
export function setShuttingDown() {
|
|
49
|
-
shuttingDown = true;
|
|
50
|
-
}
|
|
51
|
-
export function isShuttingDown() {
|
|
52
|
-
return shuttingDown;
|
|
53
|
-
}
|
|
54
|
-
export function isRunning(id) {
|
|
55
|
-
const task = tasks.get(id);
|
|
56
|
-
return task?.status === "running";
|
|
57
|
-
}
|
|
58
|
-
const MAX_CONCURRENT_TASKS_PER_WORKER = 4;
|
|
59
|
-
export function isWorkerRunning(workerName) {
|
|
60
|
-
for (const task of tasks.values()) {
|
|
61
|
-
if (task.workerName === workerName && task.status === "running") {
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
export function isWorkerAtCapacity(workerName) {
|
|
68
|
-
let count = 0;
|
|
69
|
-
for (const task of tasks.values()) {
|
|
70
|
-
if (task.workerName === workerName && task.status === "running") {
|
|
71
|
-
count++;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return count >= MAX_CONCURRENT_TASKS_PER_WORKER;
|
|
75
|
-
}
|
|
76
|
-
function formatDuration(start, end = new Date()) {
|
|
77
|
-
const diffMs = end.getTime() - start.getTime();
|
|
78
|
-
const totalSeconds = Math.floor(diffMs / 1000);
|
|
79
|
-
const minutes = Math.floor(totalSeconds / 60);
|
|
80
|
-
const seconds = totalSeconds % 60;
|
|
81
|
-
return `${minutes}m ${String(seconds).padStart(2, "0")}s`;
|
|
82
|
-
}
|
|
83
|
-
function formatTime(date) {
|
|
84
|
-
const h = String(date.getHours()).padStart(2, "0");
|
|
85
|
-
const m = String(date.getMinutes()).padStart(2, "0");
|
|
86
|
-
const s = String(date.getSeconds()).padStart(2, "0");
|
|
87
|
-
return `${h}:${m}:${s}`;
|
|
88
|
-
}
|
|
89
|
-
function renderTable() {
|
|
90
|
-
const entries = [...tasks.values()];
|
|
91
|
-
if (entries.length === 0)
|
|
92
|
-
return;
|
|
93
|
-
const runningTasks = entries.filter((t) => t.status === "running");
|
|
94
|
-
const finishedTasks = entries.filter((t) => t.status !== "running");
|
|
95
|
-
const maxTitleWidth = 40;
|
|
96
|
-
const maxPathWidth = 40;
|
|
97
|
-
const allRows = [
|
|
98
|
-
...runningTasks.map((t) => ({
|
|
99
|
-
id: `#${t.id}`,
|
|
100
|
-
title: getDisplayWidth(t.title) > maxTitleWidth ? truncateToWidth(t.title, maxTitleWidth) : t.title,
|
|
101
|
-
worker: t.workerName,
|
|
102
|
-
path: t.path ? (t.path.length > maxPathWidth ? truncateToWidth(t.path, maxPathWidth) : t.path) : "",
|
|
103
|
-
status: t.status,
|
|
104
|
-
time: formatTime(t.startedAt),
|
|
105
|
-
duration: formatDuration(t.startedAt),
|
|
106
|
-
})),
|
|
107
|
-
...finishedTasks.map((t) => ({
|
|
108
|
-
id: `#${t.id}`,
|
|
109
|
-
title: getDisplayWidth(t.title) > maxTitleWidth ? truncateToWidth(t.title, maxTitleWidth) : t.title,
|
|
110
|
-
worker: t.workerName,
|
|
111
|
-
path: t.path ? (t.path.length > maxPathWidth ? truncateToWidth(t.path, maxPathWidth) : t.path) : "",
|
|
112
|
-
status: t.status,
|
|
113
|
-
time: formatTime(t.finishedAt ?? t.startedAt),
|
|
114
|
-
duration: formatDuration(t.startedAt, t.finishedAt),
|
|
115
|
-
})),
|
|
116
|
-
];
|
|
117
|
-
const hasPath = allRows.some((r) => r.path !== "");
|
|
118
|
-
const colWidths = {
|
|
119
|
-
id: Math.max(3, ...allRows.map((r) => r.id.length)),
|
|
120
|
-
title: Math.max(5, ...allRows.map((r) => getDisplayWidth(r.title))),
|
|
121
|
-
worker: Math.max(6, ...allRows.map((r) => r.worker.length)),
|
|
122
|
-
...(hasPath ? { path: Math.max(8, ...allRows.map((r) => r.path.length)) } : {}),
|
|
123
|
-
status: Math.max(6, ...allRows.map((r) => r.status.length)),
|
|
124
|
-
time: Math.max(4, ...allRows.map((r) => r.time.length)),
|
|
125
|
-
duration: Math.max(8, ...allRows.map((r) => r.duration.length)),
|
|
126
|
-
};
|
|
127
|
-
const pad = (s, w, useDisplayWidth = false) => useDisplayWidth ? padToWidth(s, w) : s + " ".repeat(w - s.length);
|
|
128
|
-
const cols = hasPath
|
|
129
|
-
? [colWidths.id, colWidths.title, colWidths.worker, colWidths.path, colWidths.status, colWidths.time, colWidths.duration]
|
|
130
|
-
: [colWidths.id, colWidths.title, colWidths.worker, colWidths.status, colWidths.time, colWidths.duration];
|
|
131
|
-
const line = (l, m, r, f) => `${l}${cols.map((w) => f.repeat(w + 2)).join(m)}${r}`;
|
|
132
|
-
const row = (id, title, worker, path, status, time, duration) => hasPath
|
|
133
|
-
? `│ ${pad(id, colWidths.id)} │ ${pad(title, colWidths.title, true)} │ ${pad(worker, colWidths.worker)} │ ${pad(path, colWidths.path)} │ ${pad(status, colWidths.status)} │ ${pad(time, colWidths.time)} │ ${pad(duration, colWidths.duration)} │`
|
|
134
|
-
: `│ ${pad(id, colWidths.id)} │ ${pad(title, colWidths.title, true)} │ ${pad(worker, colWidths.worker)} │ ${pad(status, colWidths.status)} │ ${pad(time, colWidths.time)} │ ${pad(duration, colWidths.duration)} │`;
|
|
135
|
-
const lines = [];
|
|
136
|
-
lines.push(line("┌", "┬", "┐", "─"));
|
|
137
|
-
lines.push(row("#", "Title", "Worker", "Worktree", "Status", "Time", "Duration"));
|
|
138
|
-
lines.push(line("├", "┼", "┤", "─"));
|
|
139
|
-
for (const r of allRows.filter((r) => r.status === "running")) {
|
|
140
|
-
lines.push(row(r.id, r.title, r.worker, r.path, r.status, r.time, r.duration));
|
|
141
|
-
}
|
|
142
|
-
if (runningTasks.length > 0 && finishedTasks.length > 0) {
|
|
143
|
-
lines.push(line("├", "┼", "┤", "─"));
|
|
144
|
-
}
|
|
145
|
-
for (const r of allRows.filter((r) => r.status !== "running")) {
|
|
146
|
-
lines.push(row(r.id, r.title, r.worker, r.path, r.status, r.time, r.duration));
|
|
147
|
-
}
|
|
148
|
-
lines.push(line("└", "┴", "┘", "─"));
|
|
149
|
-
console.clear();
|
|
150
|
-
console.log(lines.join("\n"));
|
|
151
|
-
}
|
|
152
|
-
let renderInterval;
|
|
153
|
-
function ensureRenderInterval() {
|
|
154
|
-
if (renderInterval)
|
|
155
|
-
return;
|
|
156
|
-
renderInterval = setInterval(renderTable, 1000);
|
|
157
|
-
renderInterval.unref();
|
|
158
|
-
}
|
|
159
|
-
export function run(command, args, id, title, workerName, path, onComplete) {
|
|
160
|
-
tasks.set(id, {
|
|
161
|
-
id,
|
|
162
|
-
title,
|
|
163
|
-
status: "running",
|
|
164
|
-
workerName,
|
|
165
|
-
path,
|
|
166
|
-
startedAt: new Date(),
|
|
167
|
-
});
|
|
168
|
-
ensureRenderInterval();
|
|
169
|
-
renderTable();
|
|
170
|
-
const child = spawn(command, args, { stdio: ["ignore", "pipe", "inherit"], detached: true });
|
|
171
|
-
childProcesses.set(id, child);
|
|
172
|
-
const outputChunks = [];
|
|
173
|
-
child.stdout?.on("data", (chunk) => {
|
|
174
|
-
outputChunks.push(chunk);
|
|
175
|
-
});
|
|
176
|
-
child.on("close", (code) => {
|
|
177
|
-
childProcesses.delete(id);
|
|
178
|
-
const task = tasks.get(id);
|
|
179
|
-
if (task) {
|
|
180
|
-
task.status = code === 0 ? "completed" : "failed";
|
|
181
|
-
task.finishedAt = new Date();
|
|
182
|
-
}
|
|
183
|
-
renderTable();
|
|
184
|
-
const output = Buffer.concat(outputChunks).toString("utf-8");
|
|
185
|
-
onComplete?.(code === 0 ? "completed" : "failed", output);
|
|
186
|
-
});
|
|
187
|
-
child.on("error", (err) => {
|
|
188
|
-
childProcesses.delete(id);
|
|
189
|
-
const task = tasks.get(id);
|
|
190
|
-
if (task) {
|
|
191
|
-
task.status = "failed";
|
|
192
|
-
task.finishedAt = new Date();
|
|
193
|
-
}
|
|
194
|
-
console.error(`[worker] failed to spawn process for #${id}: ${err.message}`);
|
|
195
|
-
renderTable();
|
|
196
|
-
onComplete?.("failed", err.message);
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
export function waitForAllProcesses() {
|
|
200
|
-
return new Promise((resolve) => {
|
|
201
|
-
const check = () => {
|
|
202
|
-
if (childProcesses.size === 0) {
|
|
203
|
-
resolve();
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
setTimeout(check, 500);
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
check();
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
export function shutdown() {
|
|
213
|
-
for (const [id, child] of childProcesses) {
|
|
214
|
-
child.kill("SIGTERM");
|
|
215
|
-
childProcesses.delete(id);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
//# sourceMappingURL=process-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/random-name.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function generateWorktreeName(): string;
|