issue-flow 0.10.0 → 0.11.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/dist/{analyze-UZYJAWAP.js → analyze-7B5TORNK.js} +13 -8
- package/dist/analyze-7B5TORNK.js.map +1 -0
- package/dist/apply-WUJHDD7A.js +788 -0
- package/dist/apply-WUJHDD7A.js.map +1 -0
- package/dist/{chunk-UUY4PCWW.js → chunk-3BOHTH4V.js} +2 -2
- package/dist/chunk-3D4A4B46.js +2 -0
- package/dist/{policy-NP4ZAVF6.js → chunk-47VIN33V.js} +82 -112
- package/dist/chunk-47VIN33V.js.map +1 -0
- package/dist/{chunk-67ZO5ROQ.js → chunk-6N7LZZ5U.js} +19 -13
- package/dist/chunk-6N7LZZ5U.js.map +1 -0
- package/dist/{chunk-S67Q4I2O.js → chunk-AAY6KM7N.js} +6 -3
- package/dist/chunk-AAY6KM7N.js.map +1 -0
- package/dist/{chunk-652DJBCN.js → chunk-GANSDJV7.js} +4 -4
- package/dist/{chunk-V5OHFSW4.js → chunk-HC2MT7BX.js} +23 -3
- package/dist/chunk-HC2MT7BX.js.map +1 -0
- package/dist/chunk-HQYXVIH6.js +110 -0
- package/dist/chunk-HQYXVIH6.js.map +1 -0
- package/dist/{chunk-2LNQL4XH.js → chunk-JW7WLSZ6.js} +15 -11
- package/dist/chunk-JW7WLSZ6.js.map +1 -0
- package/dist/{chunk-VOKNTBOO.js → chunk-LVKQ2AKT.js} +3 -3
- package/dist/{chunk-EWA3OGCM.js → chunk-MKD2D7WE.js} +12 -8
- package/dist/chunk-MKD2D7WE.js.map +1 -0
- package/dist/{chunk-UH4KAJBJ.js → chunk-MSPUB635.js} +15 -11
- package/dist/chunk-MSPUB635.js.map +1 -0
- package/dist/chunk-OBLVLIUS.js +285 -0
- package/dist/chunk-OBLVLIUS.js.map +1 -0
- package/dist/{chunk-MXTGCD5C.js → chunk-PL6CNMVS.js} +2 -2
- package/dist/chunk-RKTEV6EG.js +246 -0
- package/dist/chunk-RKTEV6EG.js.map +1 -0
- package/dist/{chunk-SP7DD4ID.js → chunk-UBIQXCVE.js} +15 -11
- package/dist/chunk-UBIQXCVE.js.map +1 -0
- package/dist/{chunk-2Z7OEZZT.js → chunk-VCKX262Z.js} +12 -8
- package/dist/chunk-VCKX262Z.js.map +1 -0
- package/dist/{chunk-VYFKOUUR.js → chunk-VQ5VN7DF.js} +9 -5
- package/dist/chunk-VQ5VN7DF.js.map +1 -0
- package/dist/cli.js +26 -22
- package/dist/cli.js.map +1 -1
- package/dist/{config-YCF3HIKR.js → config-4THHOXNN.js} +3 -3
- package/dist/execute-5OEKLM5X.js +15 -0
- package/dist/{generate-TW6QKSW5.js → generate-6RA2MFJB.js} +99 -12
- package/dist/generate-6RA2MFJB.js.map +1 -0
- package/dist/init-PRMOTQ7N.js +9 -0
- package/dist/plan-KENR6MJ3.js +17 -0
- package/dist/policy-XQW5NUIE.js +117 -0
- package/dist/policy-XQW5NUIE.js.map +1 -0
- package/dist/pr-KDGKG4BP.js +21 -0
- package/dist/pr-review-CAMAB7KO.js +17 -0
- package/dist/prd-V3MWDIHK.js +17 -0
- package/dist/review-7LN47SAN.js +15 -0
- package/dist/review-7LN47SAN.js.map +1 -0
- package/dist/{run-DIBC3YKX.js → run-H75MD5BQ.js} +26 -25
- package/dist/{run-DIBC3YKX.js.map → run-H75MD5BQ.js.map} +1 -1
- package/dist/{web-O2FVOYZW.js → web-ANQQTTRD.js} +5 -5
- package/package.json +1 -1
- package/prompts/analyze.md +24 -0
- package/prompts/execute.md +29 -1
- package/prompts/generate.md +61 -7
- package/prompts/plan.md +24 -1
- package/prompts/pr-review.md +65 -4
- package/prompts/pr.md +37 -3
- package/prompts/prd.md +17 -0
- package/prompts/review.md +40 -0
- package/dist/analyze-UZYJAWAP.js.map +0 -1
- package/dist/chunk-2LNQL4XH.js.map +0 -1
- package/dist/chunk-2Z7OEZZT.js.map +0 -1
- package/dist/chunk-67ZO5ROQ.js.map +0 -1
- package/dist/chunk-EWA3OGCM.js.map +0 -1
- package/dist/chunk-EZMOEBLU.js +0 -135
- package/dist/chunk-EZMOEBLU.js.map +0 -1
- package/dist/chunk-PPLIXZI5.js +0 -101
- package/dist/chunk-PPLIXZI5.js.map +0 -1
- package/dist/chunk-S67Q4I2O.js.map +0 -1
- package/dist/chunk-SLHZPB3C.js +0 -50
- package/dist/chunk-SLHZPB3C.js.map +0 -1
- package/dist/chunk-SP7DD4ID.js.map +0 -1
- package/dist/chunk-UH4KAJBJ.js.map +0 -1
- package/dist/chunk-V5OHFSW4.js.map +0 -1
- package/dist/chunk-VYFKOUUR.js.map +0 -1
- package/dist/execute-QYXA225W.js +0 -14
- package/dist/generate-TW6QKSW5.js.map +0 -1
- package/dist/init-G57UXKDG.js +0 -9
- package/dist/plan-YJLGBYBQ.js +0 -16
- package/dist/policy-NP4ZAVF6.js.map +0 -1
- package/dist/pr-V5H65MRW.js +0 -20
- package/dist/pr-review-RCMXKXVP.js +0 -16
- package/dist/prd-3XR5KYJS.js +0 -16
- package/dist/review-ZZG3CSUO.js +0 -14
- /package/dist/{chunk-UUY4PCWW.js.map → chunk-3BOHTH4V.js.map} +0 -0
- /package/dist/{config-YCF3HIKR.js.map → chunk-3D4A4B46.js.map} +0 -0
- /package/dist/{chunk-652DJBCN.js.map → chunk-GANSDJV7.js.map} +0 -0
- /package/dist/{chunk-VOKNTBOO.js.map → chunk-LVKQ2AKT.js.map} +0 -0
- /package/dist/{chunk-MXTGCD5C.js.map → chunk-PL6CNMVS.js.map} +0 -0
- /package/dist/{execute-QYXA225W.js.map → config-4THHOXNN.js.map} +0 -0
- /package/dist/{init-G57UXKDG.js.map → execute-5OEKLM5X.js.map} +0 -0
- /package/dist/{plan-YJLGBYBQ.js.map → init-PRMOTQ7N.js.map} +0 -0
- /package/dist/{pr-V5H65MRW.js.map → plan-KENR6MJ3.js.map} +0 -0
- /package/dist/{pr-review-RCMXKXVP.js.map → pr-KDGKG4BP.js.map} +0 -0
- /package/dist/{prd-3XR5KYJS.js.map → pr-review-CAMAB7KO.js.map} +0 -0
- /package/dist/{review-ZZG3CSUO.js.map → prd-V3MWDIHK.js.map} +0 -0
- /package/dist/{web-O2FVOYZW.js.map → web-ANQQTTRD.js.map} +0 -0
- /package/web/{CLAUDE.md → AGENTS.md} +0 -0
|
@@ -2,20 +2,22 @@
|
|
|
2
2
|
import {
|
|
3
3
|
issuePlaceholders,
|
|
4
4
|
resolveCommandIssue
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-AAY6KM7N.js";
|
|
6
6
|
import {
|
|
7
7
|
runHeadless
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PL6CNMVS.js";
|
|
9
9
|
import {
|
|
10
|
-
publishPhaseMetrics
|
|
11
|
-
|
|
10
|
+
publishPhaseMetrics,
|
|
11
|
+
resolvePolicyPlaceholders
|
|
12
|
+
} from "./chunk-OBLVLIUS.js";
|
|
12
13
|
import {
|
|
13
14
|
applyPlaceholders,
|
|
14
15
|
loadPrompt
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-HQYXVIH6.js";
|
|
17
|
+
import "./chunk-47VIN33V.js";
|
|
16
18
|
import {
|
|
17
19
|
resolveIssuePaths
|
|
18
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-VQ5VN7DF.js";
|
|
19
21
|
import {
|
|
20
22
|
getGlobalTimeout,
|
|
21
23
|
loadTaskPlan,
|
|
@@ -23,7 +25,7 @@ import {
|
|
|
23
25
|
printInfo,
|
|
24
26
|
printSuccess,
|
|
25
27
|
saveTaskPlan
|
|
26
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-HC2MT7BX.js";
|
|
27
29
|
|
|
28
30
|
// src/commands/analyze.ts
|
|
29
31
|
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
@@ -38,6 +40,9 @@ async function runAnalyze(issue, resolvedIssue) {
|
|
|
38
40
|
await mkdir(paths.issueDir, { recursive: true });
|
|
39
41
|
const template = await loadPrompt("analyze");
|
|
40
42
|
const prompt = applyPlaceholders(template, {
|
|
43
|
+
// The repository's own conventions. Empty when it declares none, which is
|
|
44
|
+
// what keeps the rendered prompt identical to the pre-policy one.
|
|
45
|
+
...await resolvePolicyPlaceholders(),
|
|
41
46
|
__ISSUE_NUMBER__: issueNumber,
|
|
42
47
|
__ANALYSIS_PATH__: analysisPath,
|
|
43
48
|
// Last: the Issue content is substituted in but never scanned again, so a
|
|
@@ -84,4 +89,4 @@ async function runAnalyze(issue, resolvedIssue) {
|
|
|
84
89
|
export {
|
|
85
90
|
runAnalyze
|
|
86
91
|
};
|
|
87
|
-
//# sourceMappingURL=analyze-
|
|
92
|
+
//# sourceMappingURL=analyze-7B5TORNK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/analyze.ts"],"sourcesContent":["import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { runHeadless } from '../core/headless.js';\nimport { applyPlaceholders, loadPrompt } from '../core/prompt-resolver.js';\nimport { publishPhaseMetrics } from '../core/session-metrics.js';\nimport { loadTaskPlan, saveTaskPlan } from '../core/state-manager.js';\nimport { getGlobalTimeout } from '../core/verbose.js';\nimport { issuePlaceholders, resolveCommandIssue } from '../issues/context.js';\nimport type { ResolvedIssue } from '../issues/types.js';\nimport { resolvePolicyPlaceholders } from '../policy/placeholders.js';\nimport { resolveIssuePaths } from '../storage/resolve.js';\nimport { printError, printInfo, printSuccess } from '../ui/logger.js';\n\nexport async function runAnalyze(issue: string, resolvedIssue?: ResolvedIssue): Promise<number> {\n const issueNumber = issue.replace(/^#/, '');\n const paths = await resolveIssuePaths(issueNumber);\n const analysisPath = paths.analysisFile;\n\n const resolution = await resolveCommandIssue(issueNumber, resolvedIssue);\n if (!resolution.ok) {\n return resolution.code;\n }\n\n await mkdir(paths.issueDir, { recursive: true });\n\n const template = await loadPrompt('analyze');\n const prompt = applyPlaceholders(template, {\n // The repository's own conventions. Empty when it declares none, which is\n // what keeps the rendered prompt identical to the pre-policy one.\n ...(await resolvePolicyPlaceholders()),\n __ISSUE_NUMBER__: issueNumber,\n __ANALYSIS_PATH__: analysisPath,\n // Last: the Issue content is substituted in but never scanned again, so a\n // body that happens to contain a placeholder is left untouched.\n ...issuePlaceholders(resolution.resolved),\n });\n\n const startedAtMs = Date.now();\n const result = await runHeadless({\n prompt,\n maxTurns: 30,\n timeout: getGlobalTimeout() ?? 300_000,\n // json (not text) so the CLI reports usage: the envelope's `result` field\n // carries the same assistant text this phase already consumed.\n outputFormat: 'json',\n allowedTools: ['Bash', 'Read', 'Glob', 'Grep', 'Write'],\n addDirs: [paths.issueDir],\n statusMessage: `Analyzing issue #${issueNumber}...`,\n });\n // Before the success check: the tokens were spent either way.\n publishPhaseMetrics('analyze', result.cost, startedAtMs);\n\n if (!result.success) {\n printError(`Analysis failed: ${result.error}`);\n return 1;\n }\n\n // Verify the file was created\n try {\n const content = await readFile(analysisPath, 'utf-8');\n if (content.length < 10) {\n printError('Analysis file was created but appears empty');\n return 1;\n }\n } catch {\n // File wasn't created by headless — save the result as analysis\n printInfo('Headless did not create analysis file; saving output directly');\n await writeFile(analysisPath, result.result, 'utf-8');\n }\n\n // Update pipeline state\n const tasksPath = paths.tasksFile;\n try {\n const plan = await loadTaskPlan(tasksPath);\n plan.pipeline.analyzeCompleted = true;\n await saveTaskPlan(tasksPath, plan);\n } catch {\n // tasks.json may not exist yet — that's OK for standalone analyze\n }\n\n printSuccess(`Analysis saved to ${analysisPath}`);\n return 0;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,OAAO,UAAU,iBAAiB;AAY3C,eAAsB,WAAW,OAAe,eAAgD;AAC9F,QAAM,cAAc,MAAM,QAAQ,MAAM,EAAE;AAC1C,QAAM,QAAQ,MAAM,kBAAkB,WAAW;AACjD,QAAM,eAAe,MAAM;AAE3B,QAAM,aAAa,MAAM,oBAAoB,aAAa,aAAa;AACvE,MAAI,CAAC,WAAW,IAAI;AAClB,WAAO,WAAW;AAAA,EACpB;AAEA,QAAM,MAAM,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAE/C,QAAM,WAAW,MAAM,WAAW,SAAS;AAC3C,QAAM,SAAS,kBAAkB,UAAU;AAAA;AAAA;AAAA,IAGzC,GAAI,MAAM,0BAA0B;AAAA,IACpC,kBAAkB;AAAA,IAClB,mBAAmB;AAAA;AAAA;AAAA,IAGnB,GAAG,kBAAkB,WAAW,QAAQ;AAAA,EAC1C,CAAC;AAED,QAAM,cAAc,KAAK,IAAI;AAC7B,QAAM,SAAS,MAAM,YAAY;AAAA,IAC/B;AAAA,IACA,UAAU;AAAA,IACV,SAAS,iBAAiB,KAAK;AAAA;AAAA;AAAA,IAG/B,cAAc;AAAA,IACd,cAAc,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,OAAO;AAAA,IACtD,SAAS,CAAC,MAAM,QAAQ;AAAA,IACxB,eAAe,oBAAoB,WAAW;AAAA,EAChD,CAAC;AAED,sBAAoB,WAAW,OAAO,MAAM,WAAW;AAEvD,MAAI,CAAC,OAAO,SAAS;AACnB,eAAW,oBAAoB,OAAO,KAAK,EAAE;AAC7C,WAAO;AAAA,EACT;AAGA,MAAI;AACF,UAAM,UAAU,MAAM,SAAS,cAAc,OAAO;AACpD,QAAI,QAAQ,SAAS,IAAI;AACvB,iBAAW,6CAA6C;AACxD,aAAO;AAAA,IACT;AAAA,EACF,QAAQ;AAEN,cAAU,+DAA+D;AACzE,UAAM,UAAU,cAAc,OAAO,QAAQ,OAAO;AAAA,EACtD;AAGA,QAAM,YAAY,MAAM;AACxB,MAAI;AACF,UAAM,OAAO,MAAM,aAAa,SAAS;AACzC,SAAK,SAAS,mBAAmB;AACjC,UAAM,aAAa,WAAW,IAAI;AAAA,EACpC,QAAQ;AAAA,EAER;AAEA,eAAa,qBAAqB,YAAY,EAAE;AAChD,SAAO;AACT;","names":[]}
|