@xdevops/issue-auto-finish 1.0.93 → 1.0.94
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/dist/{PtyRunner-XMWDMH3L.js → PtyRunner-6RSDKUMM.js} +2 -2
- package/dist/ai-runner/PlanFileResolver.d.ts +1 -0
- package/dist/ai-runner/PlanFileResolver.d.ts.map +1 -1
- package/dist/ai-runner/PtyRunner.d.ts.map +1 -1
- package/dist/{ai-runner-S2ATTGWX.js → ai-runner-45IRCBIR.js} +2 -2
- package/dist/{analyze-DAVYPBHK.js → analyze-7TY5DYBT.js} +2 -2
- package/dist/{braindump-A4R3A4QT.js → braindump-FLX6HEVB.js} +2 -2
- package/dist/{chunk-HD6V7KPE.js → chunk-36G3DPO3.js} +80 -40
- package/dist/chunk-36G3DPO3.js.map +1 -0
- package/dist/{chunk-BPVRMZU4.js → chunk-4JI5AJEA.js} +9 -9
- package/dist/{chunk-OPWP73PW.js → chunk-MTXTSSBH.js} +2 -2
- package/dist/{chunk-2XACBKPB.js → chunk-RR65A7J4.js} +2 -2
- package/dist/{chunk-SNSEW7DS.js → chunk-ZDY5NCP3.js} +1 -1
- package/dist/cli.js +5 -5
- package/dist/hooks/HookInjector.d.ts +6 -0
- package/dist/hooks/HookInjector.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-OD7CLRWK.js → init-O7XJLCP3.js} +2 -2
- package/dist/lib.js +2 -2
- package/dist/{restart-JVVOYC6C.js → restart-4LNDGOOU.js} +2 -2
- package/dist/run.js +4 -4
- package/dist/{start-INU24RRG.js → start-Z4ODDTJ5.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-HD6V7KPE.js.map +0 -1
- /package/dist/{PtyRunner-XMWDMH3L.js.map → PtyRunner-6RSDKUMM.js.map} +0 -0
- /package/dist/{ai-runner-S2ATTGWX.js.map → ai-runner-45IRCBIR.js.map} +0 -0
- /package/dist/{analyze-DAVYPBHK.js.map → analyze-7TY5DYBT.js.map} +0 -0
- /package/dist/{braindump-A4R3A4QT.js.map → braindump-FLX6HEVB.js.map} +0 -0
- /package/dist/{chunk-BPVRMZU4.js.map → chunk-4JI5AJEA.js.map} +0 -0
- /package/dist/{chunk-OPWP73PW.js.map → chunk-MTXTSSBH.js.map} +0 -0
- /package/dist/{chunk-2XACBKPB.js.map → chunk-RR65A7J4.js.map} +0 -0
- /package/dist/{chunk-SNSEW7DS.js.map → chunk-ZDY5NCP3.js.map} +0 -0
- /package/dist/{init-OD7CLRWK.js.map → init-O7XJLCP3.js.map} +0 -0
- /package/dist/{restart-JVVOYC6C.js.map → restart-4LNDGOOU.js.map} +0 -0
- /package/dist/{start-INU24RRG.js.map → start-Z4ODDTJ5.js.map} +0 -0
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
isTuiNoise,
|
|
13
13
|
parseInteractiveDialog,
|
|
14
14
|
stripAnsi
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-36G3DPO3.js";
|
|
16
16
|
import "./chunk-TFEPHOVE.js";
|
|
17
17
|
import "./chunk-G7QI5WDI.js";
|
|
18
18
|
import "./chunk-2RWGZPNF.js";
|
|
@@ -32,4 +32,4 @@ export {
|
|
|
32
32
|
parseInteractiveDialog,
|
|
33
33
|
stripAnsi
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=PtyRunner-
|
|
35
|
+
//# sourceMappingURL=PtyRunner-6RSDKUMM.js.map
|
|
@@ -41,6 +41,7 @@ export declare class PlanFileResolver {
|
|
|
41
41
|
static buildContentHint(issueIid: number, issueTitle?: string): string;
|
|
42
42
|
private listFiles;
|
|
43
43
|
private findNewFiles;
|
|
44
|
+
private isMetadataFile;
|
|
44
45
|
/**
|
|
45
46
|
* Fallback: if no new files found (rare case — plan might have overwritten
|
|
46
47
|
* an existing file), find the most recently modified file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanFileResolver.d.ts","sourceRoot":"","sources":["../../src/ai-runner/PlanFileResolver.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"PlanFileResolver.d.ts","sourceRoot":"","sources":["../../src/ai-runner/PlanFileResolver.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAaD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,WAAW,CAAkC;gBAEzC,QAAQ,CAAC,EAAE,MAAM;IAI7B,0FAA0F;IAC1F,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAKrD,2EAA2E;IAC3E,kBAAkB,IAAI,IAAI;IAQ1B;;;;OAIG;IACH,qBAAqB,IAAI,OAAO;IAShC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAuCtD;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAMtE,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IAKtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;CActB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PtyRunner.d.ts","sourceRoot":"","sources":["../../src/ai-runner/PtyRunner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PtyRunner.d.ts","sourceRoot":"","sources":["../../src/ai-runner/PtyRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import "./chunk-MSL7ROVK.js";
|
|
|
2
2
|
import {
|
|
3
3
|
PlanFileResolver,
|
|
4
4
|
PtyRunner
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-36G3DPO3.js";
|
|
6
6
|
import {
|
|
7
7
|
SdkRunner
|
|
8
8
|
} from "./chunk-R32Q3RGK.js";
|
|
@@ -54,4 +54,4 @@ export {
|
|
|
54
54
|
usesDeterministicPlanCopy,
|
|
55
55
|
validateRunnerRegistry
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=ai-runner-
|
|
57
|
+
//# sourceMappingURL=ai-runner-45IRCBIR.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./chunk-MSL7ROVK.js";
|
|
2
|
-
import "./chunk-
|
|
2
|
+
import "./chunk-36G3DPO3.js";
|
|
3
3
|
import "./chunk-R32Q3RGK.js";
|
|
4
4
|
import {
|
|
5
5
|
analyze
|
|
@@ -77,4 +77,4 @@ async function analyzeCommand(opts) {
|
|
|
77
77
|
export {
|
|
78
78
|
analyzeCommand
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=analyze-
|
|
80
|
+
//# sourceMappingURL=analyze-7TY5DYBT.js.map
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
GitOperations
|
|
16
16
|
} from "./chunk-GPZX4DSY.js";
|
|
17
17
|
import "./chunk-MSL7ROVK.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-36G3DPO3.js";
|
|
19
19
|
import "./chunk-R32Q3RGK.js";
|
|
20
20
|
import "./chunk-ACVOOHAR.js";
|
|
21
21
|
import "./chunk-B7TVVODN.js";
|
|
@@ -209,4 +209,4 @@ ${bold("\u786E\u8BA4\u6267\u884C\uFF1F")} (${green("y")}=\u786E\u8BA4 / ${red("q
|
|
|
209
209
|
export {
|
|
210
210
|
braindumpCommand
|
|
211
211
|
};
|
|
212
|
-
//# sourceMappingURL=braindump-
|
|
212
|
+
//# sourceMappingURL=braindump-FLX6HEVB.js.map
|
|
@@ -24,6 +24,9 @@ var PLAN_DIRS = {
|
|
|
24
24
|
"claude-internal": path.join(os.homedir(), ".claude-internal", "plans"),
|
|
25
25
|
"codebuddy": path.join(os.homedir(), ".codebuddy", "plans")
|
|
26
26
|
};
|
|
27
|
+
var PLAN_METADATA_PATTERNS = [
|
|
28
|
+
/^00-plan-status\.md$/
|
|
29
|
+
];
|
|
27
30
|
var PlanFileResolver = class _PlanFileResolver {
|
|
28
31
|
plansDir;
|
|
29
32
|
beforeFiles = /* @__PURE__ */ new Map();
|
|
@@ -82,6 +85,7 @@ var PlanFileResolver = class _PlanFileResolver {
|
|
|
82
85
|
});
|
|
83
86
|
return this.fallbackByMtime(afterFiles, contentHint);
|
|
84
87
|
}
|
|
88
|
+
candidates.sort((a, b) => b.mtime - a.mtime);
|
|
85
89
|
if (candidates.length === 1) {
|
|
86
90
|
return this.readCandidate(candidates[0].path, candidates[0].mtime);
|
|
87
91
|
}
|
|
@@ -89,7 +93,6 @@ var PlanFileResolver = class _PlanFileResolver {
|
|
|
89
93
|
const matched = this.matchByContent(candidates, contentHint);
|
|
90
94
|
if (matched) return matched;
|
|
91
95
|
}
|
|
92
|
-
candidates.sort((a, b) => b.mtime - a.mtime);
|
|
93
96
|
logger2.info("Multiple new plan files found, using most recent", {
|
|
94
97
|
count: candidates.length,
|
|
95
98
|
selected: path.basename(candidates[0].path)
|
|
@@ -128,12 +131,16 @@ var PlanFileResolver = class _PlanFileResolver {
|
|
|
128
131
|
findNewFiles(afterFiles) {
|
|
129
132
|
const candidates = [];
|
|
130
133
|
for (const [filePath, mtime] of afterFiles) {
|
|
131
|
-
if (!this.beforeFiles.has(filePath)) {
|
|
134
|
+
if (!this.beforeFiles.has(filePath) && !this.isMetadataFile(filePath)) {
|
|
132
135
|
candidates.push({ path: filePath, mtime });
|
|
133
136
|
}
|
|
134
137
|
}
|
|
135
138
|
return candidates;
|
|
136
139
|
}
|
|
140
|
+
isMetadataFile(filePath) {
|
|
141
|
+
const basename = path.basename(filePath);
|
|
142
|
+
return PLAN_METADATA_PATTERNS.some((pattern) => pattern.test(basename));
|
|
143
|
+
}
|
|
137
144
|
/**
|
|
138
145
|
* Fallback: if no new files found (rare case — plan might have overwritten
|
|
139
146
|
* an existing file), find the most recently modified file.
|
|
@@ -164,21 +171,27 @@ var PlanFileResolver = class _PlanFileResolver {
|
|
|
164
171
|
return this.readCandidate(newestPath, newestMtime);
|
|
165
172
|
}
|
|
166
173
|
matchByContent(candidates, contentHint) {
|
|
174
|
+
const matches = [];
|
|
167
175
|
for (const candidate of candidates) {
|
|
168
176
|
try {
|
|
169
177
|
const content = fs.readFileSync(candidate.path, "utf-8");
|
|
170
178
|
if (this.contentMatches(content, contentHint)) {
|
|
171
|
-
|
|
172
|
-
file: path.basename(candidate.path),
|
|
173
|
-
hint: contentHint.slice(0, 50)
|
|
174
|
-
});
|
|
175
|
-
return { sourcePath: candidate.path, content };
|
|
179
|
+
matches.push({ sourcePath: candidate.path, content });
|
|
176
180
|
}
|
|
177
181
|
} catch {
|
|
178
182
|
continue;
|
|
179
183
|
}
|
|
180
184
|
}
|
|
181
|
-
return null;
|
|
185
|
+
if (matches.length === 0) return null;
|
|
186
|
+
matches.sort((a, b) => b.content.length - a.content.length);
|
|
187
|
+
const best = matches[0];
|
|
188
|
+
logger2.info("Plan file matched by content", {
|
|
189
|
+
file: path.basename(best.sourcePath),
|
|
190
|
+
hint: contentHint.slice(0, 50),
|
|
191
|
+
matchCount: matches.length,
|
|
192
|
+
size: best.content.length
|
|
193
|
+
});
|
|
194
|
+
return best;
|
|
182
195
|
}
|
|
183
196
|
contentMatches(content, hint) {
|
|
184
197
|
const parts = hint.split("|");
|
|
@@ -497,7 +510,7 @@ var HookInjector = class {
|
|
|
497
510
|
{ name: "compact-restore.sh", content: buildCompactRestoreScript(eventsFile, contextFile) },
|
|
498
511
|
{ name: "post-tool-use.sh", content: buildPostToolUseScript(eventsFile, manifestFile, expected) },
|
|
499
512
|
{ name: "post-artifact.sh", content: buildPostArtifactScript(manifestFile, expected) },
|
|
500
|
-
{ name: "exit-plan-mode.sh", content: buildExitPlanModeScript(eventsFile) },
|
|
513
|
+
{ name: "exit-plan-mode.sh", content: buildExitPlanModeScript(eventsFile, ctx.planDir, ctx.phaseExpectedArtifacts?.[0] ?? ctx.expectedArtifacts[0]) },
|
|
501
514
|
{ name: "permission.sh", content: buildPermissionScript(eventsFile) },
|
|
502
515
|
{ name: "protect-files.sh", content: buildProtectFilesScript(eventsFile, ctx.phaseName, ctx.planDir) },
|
|
503
516
|
{ name: "stop.sh", content: buildStopScript(eventsFile, ctx.planDir, phaseExpected) },
|
|
@@ -752,11 +765,23 @@ fi
|
|
|
752
765
|
exit 0
|
|
753
766
|
`;
|
|
754
767
|
}
|
|
755
|
-
function buildExitPlanModeScript(eventsFile) {
|
|
768
|
+
function buildExitPlanModeScript(eventsFile, planDir, planArtifact) {
|
|
756
769
|
return `#!/bin/bash
|
|
757
770
|
set -euo pipefail
|
|
758
771
|
INPUT=$(cat)
|
|
759
772
|
|
|
773
|
+
PLAN_DIR=${quote(planDir)}
|
|
774
|
+
PLAN_ARTIFACT=${quote(planArtifact ?? "01-plan.md")}
|
|
775
|
+
|
|
776
|
+
PLAN_CONTENT=$(echo "$INPUT" | jq -r '.tool_input.plan // empty')
|
|
777
|
+
if [ -n "$PLAN_CONTENT" ]; then
|
|
778
|
+
mkdir -p "$PLAN_DIR"
|
|
779
|
+
printf '%s' "$PLAN_CONTENT" > "$PLAN_DIR/$PLAN_ARTIFACT"
|
|
780
|
+
BYTES=$(wc -c < "$PLAN_DIR/$PLAN_ARTIFACT")
|
|
781
|
+
printf '{"ts":"%s","event":"plan_captured","file":"%s","path":"%s/%s","bytes":%s}\\n' \\
|
|
782
|
+
"$(date -u +%FT%TZ)" "$PLAN_ARTIFACT" "$PLAN_DIR" "$PLAN_ARTIFACT" "$BYTES" >> ${quote(eventsFile)}
|
|
783
|
+
fi
|
|
784
|
+
|
|
760
785
|
printf '{"ts":"%s","event":"exit_plan_mode"}\\n' "$(date -u +%FT%TZ)" >> ${quote(eventsFile)}
|
|
761
786
|
|
|
762
787
|
echo '{"hookSpecificOutput":{"hookEventName":"PermissionRequest","decision":{"behavior":"allow"}}}'
|
|
@@ -1459,41 +1484,56 @@ var PtyRunner = class {
|
|
|
1459
1484
|
});
|
|
1460
1485
|
return this.buildRunResult(planResult, sessionId);
|
|
1461
1486
|
}
|
|
1462
|
-
logger6.info("Native plan mode: resolving plan file from CLI storage", { sessionId });
|
|
1463
|
-
const resolved = resolver.resolve(contentHint);
|
|
1464
|
-
if (!resolved) {
|
|
1465
|
-
logger6.error("Native plan mode: no plan file found in CLI storage", { sessionId, workDir });
|
|
1466
|
-
return {
|
|
1467
|
-
success: false,
|
|
1468
|
-
output: planResult.output,
|
|
1469
|
-
errorMessage: "Plan \u9636\u6BB5\u5B8C\u6210\u4F46\u672A\u5728 CLI \u8BA1\u5212\u76EE\u5F55\u4E2D\u627E\u5230\u8BA1\u5212\u6587\u4EF6",
|
|
1470
|
-
sessionId,
|
|
1471
|
-
exitCode: null
|
|
1472
|
-
};
|
|
1473
|
-
}
|
|
1474
1487
|
const artifactPaths = options.artifactPaths ?? [];
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
fs4.writeFileSync(targetPath, resolved.content, "utf-8");
|
|
1482
|
-
logger6.info("Plan file copied to artifact path", {
|
|
1483
|
-
source: path3.basename(resolved.sourcePath),
|
|
1484
|
-
target: targetPath,
|
|
1485
|
-
size: resolved.content.length
|
|
1486
|
-
});
|
|
1488
|
+
const MIN_PLAN_BYTES = 50;
|
|
1489
|
+
const hookHandled = artifactPaths.length > 0 && artifactPaths.every((p) => {
|
|
1490
|
+
try {
|
|
1491
|
+
return fs4.existsSync(p) && fs4.statSync(p).size >= MIN_PLAN_BYTES;
|
|
1492
|
+
} catch {
|
|
1493
|
+
return false;
|
|
1487
1494
|
}
|
|
1488
|
-
}
|
|
1489
|
-
|
|
1495
|
+
});
|
|
1496
|
+
if (hookHandled) {
|
|
1497
|
+
logger6.info("Native plan mode: plan captured by ExitPlanMode hook", {
|
|
1490
1498
|
sessionId,
|
|
1491
|
-
|
|
1499
|
+
artifactPaths
|
|
1492
1500
|
});
|
|
1501
|
+
} else {
|
|
1502
|
+
logger6.info("Native plan mode: resolving plan file from CLI storage (fallback)", { sessionId });
|
|
1503
|
+
const resolved = resolver.resolve(contentHint);
|
|
1504
|
+
if (!resolved) {
|
|
1505
|
+
logger6.error("Native plan mode: no plan file found in CLI storage", { sessionId, workDir });
|
|
1506
|
+
return {
|
|
1507
|
+
success: false,
|
|
1508
|
+
output: planResult.output,
|
|
1509
|
+
errorMessage: "Plan \u9636\u6BB5\u5B8C\u6210\u4F46\u672A\u5728 CLI \u8BA1\u5212\u76EE\u5F55\u4E2D\u627E\u5230\u8BA1\u5212\u6587\u4EF6",
|
|
1510
|
+
sessionId,
|
|
1511
|
+
exitCode: null
|
|
1512
|
+
};
|
|
1513
|
+
}
|
|
1514
|
+
if (artifactPaths.length > 0) {
|
|
1515
|
+
for (const targetPath of artifactPaths) {
|
|
1516
|
+
const targetDir = path3.dirname(targetPath);
|
|
1517
|
+
if (!fs4.existsSync(targetDir)) {
|
|
1518
|
+
fs4.mkdirSync(targetDir, { recursive: true });
|
|
1519
|
+
}
|
|
1520
|
+
fs4.writeFileSync(targetPath, resolved.content, "utf-8");
|
|
1521
|
+
logger6.info("Plan file copied to artifact path", {
|
|
1522
|
+
source: path3.basename(resolved.sourcePath),
|
|
1523
|
+
target: targetPath,
|
|
1524
|
+
size: resolved.content.length
|
|
1525
|
+
});
|
|
1526
|
+
}
|
|
1527
|
+
} else {
|
|
1528
|
+
logger6.warn("Native plan mode: no artifactPaths specified, plan file not copied", {
|
|
1529
|
+
sessionId,
|
|
1530
|
+
resolvedFile: resolved.sourcePath
|
|
1531
|
+
});
|
|
1532
|
+
}
|
|
1493
1533
|
}
|
|
1494
|
-
logger6.info("Native plan mode completed
|
|
1534
|
+
logger6.info("Native plan mode completed", {
|
|
1495
1535
|
sessionId,
|
|
1496
|
-
|
|
1536
|
+
hookHandled,
|
|
1497
1537
|
artifactsCopied: artifactPaths.length
|
|
1498
1538
|
});
|
|
1499
1539
|
return this.buildRunResult(planResult, sessionId);
|
|
@@ -1961,4 +2001,4 @@ export {
|
|
|
1961
2001
|
InputWaitController,
|
|
1962
2002
|
PtyRunner
|
|
1963
2003
|
};
|
|
1964
|
-
//# sourceMappingURL=chunk-
|
|
2004
|
+
//# sourceMappingURL=chunk-36G3DPO3.js.map
|