openplanr 1.2.7 → 1.2.8
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 +34 -1
- package/dist/ai/prompts/prompt-builder.d.ts +48 -0
- package/dist/ai/prompts/prompt-builder.d.ts.map +1 -1
- package/dist/ai/prompts/prompt-builder.js +57 -1
- package/dist/ai/prompts/prompt-builder.js.map +1 -1
- package/dist/ai/prompts/system-prompts.d.ts +23 -0
- package/dist/ai/prompts/system-prompts.d.ts.map +1 -1
- package/dist/ai/prompts/system-prompts.js +98 -0
- package/dist/ai/prompts/system-prompts.js.map +1 -1
- package/dist/ai/schemas/ai-response-schemas.d.ts +68 -0
- package/dist/ai/schemas/ai-response-schemas.d.ts.map +1 -1
- package/dist/ai/schemas/ai-response-schemas.js +81 -0
- package/dist/ai/schemas/ai-response-schemas.js.map +1 -1
- package/dist/ai/types.d.ts +2 -0
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -1
- package/dist/cli/commands/revise.d.ts +23 -0
- package/dist/cli/commands/revise.d.ts.map +1 -0
- package/dist/cli/commands/revise.js +502 -0
- package/dist/cli/commands/revise.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/models/types.d.ts +120 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/services/atomic-write-service.d.ts +41 -0
- package/dist/services/atomic-write-service.d.ts.map +1 -0
- package/dist/services/atomic-write-service.js +87 -0
- package/dist/services/atomic-write-service.js.map +1 -0
- package/dist/services/audit-log-service.d.ts +50 -0
- package/dist/services/audit-log-service.d.ts.map +1 -0
- package/dist/services/audit-log-service.js +213 -0
- package/dist/services/audit-log-service.js.map +1 -0
- package/dist/services/cascade-service.d.ts +62 -0
- package/dist/services/cascade-service.d.ts.map +1 -0
- package/dist/services/cascade-service.js +189 -0
- package/dist/services/cascade-service.js.map +1 -0
- package/dist/services/diff-service.d.ts +18 -0
- package/dist/services/diff-service.d.ts.map +1 -0
- package/dist/services/diff-service.js +35 -0
- package/dist/services/diff-service.js.map +1 -0
- package/dist/services/evidence-verifier.d.ts +71 -0
- package/dist/services/evidence-verifier.d.ts.map +1 -0
- package/dist/services/evidence-verifier.js +171 -0
- package/dist/services/evidence-verifier.js.map +1 -0
- package/dist/services/git-service.d.ts +60 -0
- package/dist/services/git-service.d.ts.map +1 -0
- package/dist/services/git-service.js +137 -0
- package/dist/services/git-service.js.map +1 -0
- package/dist/services/graph-integrity.d.ts +36 -0
- package/dist/services/graph-integrity.d.ts.map +1 -0
- package/dist/services/graph-integrity.js +54 -0
- package/dist/services/graph-integrity.js.map +1 -0
- package/dist/services/prompt-service.d.ts +18 -0
- package/dist/services/prompt-service.d.ts.map +1 -1
- package/dist/services/prompt-service.js +47 -0
- package/dist/services/prompt-service.js.map +1 -1
- package/dist/services/revise-cache-service.d.ts +46 -0
- package/dist/services/revise-cache-service.d.ts.map +1 -0
- package/dist/services/revise-cache-service.js +88 -0
- package/dist/services/revise-cache-service.js.map +1 -0
- package/dist/services/revise-service.d.ts +108 -0
- package/dist/services/revise-service.d.ts.map +1 -0
- package/dist/services/revise-service.js +249 -0
- package/dist/services/revise-service.js.map +1 -0
- package/dist/services/template-sections.d.ts +28 -0
- package/dist/services/template-sections.d.ts.map +1 -0
- package/dist/services/template-sections.js +55 -0
- package/dist/services/template-sections.js.map +1 -0
- package/dist/utils/diff.d.ts +26 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +143 -0
- package/dist/utils/diff.js.map +1 -0
- package/package.json +1 -1
package/dist/ai/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+BH,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE,IAAI;IACZ,uEAAuE;IACvE,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,IAAI;IACd,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+BH,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE,IAAI;IACZ,uEAAuE;IACvE,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,IAAI;IACd,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,gGAAgG;IAChG,MAAM,EAAE,KAAK;CACL,CAAC;AAyBX,MAAM,CAAC,MAAM,cAAc,GAAmC;IAC5D,SAAS,EAAE,0BAA0B;IACrC,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,UAAU;CACV,CAAC;AAEX,uGAAuG;AACvG,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,gBAAgB;CAChB,CAAC;AAEX,qDAAqD;AACrD,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC7D,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACR,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `planr revise` command (EPIC-003, FEAT-010 → FEAT-012).
|
|
3
|
+
*
|
|
4
|
+
* Runs the revise safety pipeline for a single artifact or a cascade:
|
|
5
|
+
*
|
|
6
|
+
* 1. **Clean-tree gate** (FEAT-011 §2.0) — unless --allow-dirty.
|
|
7
|
+
* 2. **Agent decision** (FEAT-010) — per artifact.
|
|
8
|
+
* 3. **Evidence verification** (FEAT-011 §1.0) — unverifiable evidence
|
|
9
|
+
* is dropped; revise → flag demotion when nothing survives.
|
|
10
|
+
* 4. **Diff preview + confirmation** (FEAT-011 §4.0 + §5.0) — per artifact.
|
|
11
|
+
* 5. **Atomic write + audit log** (FEAT-011 §3.0 + §6.0).
|
|
12
|
+
*
|
|
13
|
+
* In `--cascade` mode, the cascade service (FEAT-012) drives the pipeline
|
|
14
|
+
* top-down (epic → features → stories → tasks). Children always see the
|
|
15
|
+
* *revised* parent because they are loaded fresh from disk between steps.
|
|
16
|
+
* `[q]uit` and SIGINT stop the cascade gracefully — already-applied
|
|
17
|
+
* artifacts stay applied, audit entries flush immediately.
|
|
18
|
+
*
|
|
19
|
+
* FEAT-013 (--all + post-flight rollback) layers on top of this command.
|
|
20
|
+
*/
|
|
21
|
+
import type { Command } from 'commander';
|
|
22
|
+
export declare function registerReviseCommand(program: Command): void;
|
|
23
|
+
//# sourceMappingURL=revise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revise.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/revise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAmOrD"}
|
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `planr revise` command (EPIC-003, FEAT-010 → FEAT-012).
|
|
3
|
+
*
|
|
4
|
+
* Runs the revise safety pipeline for a single artifact or a cascade:
|
|
5
|
+
*
|
|
6
|
+
* 1. **Clean-tree gate** (FEAT-011 §2.0) — unless --allow-dirty.
|
|
7
|
+
* 2. **Agent decision** (FEAT-010) — per artifact.
|
|
8
|
+
* 3. **Evidence verification** (FEAT-011 §1.0) — unverifiable evidence
|
|
9
|
+
* is dropped; revise → flag demotion when nothing survives.
|
|
10
|
+
* 4. **Diff preview + confirmation** (FEAT-011 §4.0 + §5.0) — per artifact.
|
|
11
|
+
* 5. **Atomic write + audit log** (FEAT-011 §3.0 + §6.0).
|
|
12
|
+
*
|
|
13
|
+
* In `--cascade` mode, the cascade service (FEAT-012) drives the pipeline
|
|
14
|
+
* top-down (epic → features → stories → tasks). Children always see the
|
|
15
|
+
* *revised* parent because they are loaded fresh from disk between steps.
|
|
16
|
+
* `[q]uit` and SIGINT stop the cascade gracefully — already-applied
|
|
17
|
+
* artifacts stay applied, audit entries flush immediately.
|
|
18
|
+
*
|
|
19
|
+
* FEAT-013 (--all + post-flight rollback) layers on top of this command.
|
|
20
|
+
*/
|
|
21
|
+
import path from 'node:path';
|
|
22
|
+
import chalk from 'chalk';
|
|
23
|
+
import { getAIProvider, isAIConfigured } from '../../services/ai-service.js';
|
|
24
|
+
import { findArtifactTypeById, listArtifacts, readArtifactRaw, } from '../../services/artifact-service.js';
|
|
25
|
+
import { createAuditLogWriter } from '../../services/audit-log-service.js';
|
|
26
|
+
import { buildCascadeOrder, executeCascade } from '../../services/cascade-service.js';
|
|
27
|
+
import { loadConfig } from '../../services/config-service.js';
|
|
28
|
+
import { renderDiff } from '../../services/diff-service.js';
|
|
29
|
+
import { verifyDecision } from '../../services/evidence-verifier.js';
|
|
30
|
+
import { checkCleanTree, checkoutPaths } from '../../services/git-service.js';
|
|
31
|
+
import { checkGraphIntegrity } from '../../services/graph-integrity.js';
|
|
32
|
+
import { confirmBulkRevise, promptReviseConfirm, promptText, } from '../../services/prompt-service.js';
|
|
33
|
+
import { hashArtifactContent, loadCache, recordOutcome, saveCache, shouldSkipArtifact, } from '../../services/revise-cache-service.js';
|
|
34
|
+
import { applyDecision, ReviseArtifactNotFoundError, reviseArtifact, } from '../../services/revise-service.js';
|
|
35
|
+
import { display, logger } from '../../utils/logger.js';
|
|
36
|
+
const WRITABLE_SCOPES = ['prose', 'references', 'paths', 'all'];
|
|
37
|
+
const AUDIT_FORMATS = ['md', 'json'];
|
|
38
|
+
const DEFAULT_MAX_WRITES_PER_RUN = 50;
|
|
39
|
+
export function registerReviseCommand(program) {
|
|
40
|
+
program
|
|
41
|
+
.command('revise')
|
|
42
|
+
.description('AI-driven revision of planning artifacts against codebase reality (FEAT-010 → FEAT-012: single or cascade)')
|
|
43
|
+
.argument('[artifactId]', 'artifact ID (e.g., EPIC-001, FEAT-002, US-003, TASK-004). Omit and pass --all to revise every epic in the project.')
|
|
44
|
+
.option('--dry-run', 'do not write files; still emit an audit log with would-apply entries', false)
|
|
45
|
+
.option('--yes', 'skip per-artifact confirmation menu (still requires typed-YES in TTY)', false)
|
|
46
|
+
.option('--allow-dirty', 'run even with uncommitted changes (post-flight rollback cannot restore them)', false)
|
|
47
|
+
.option('--cascade', 'revise this artifact and its descendants top-down (epic → features → stories → tasks)', false)
|
|
48
|
+
.option('--no-cascade', 'explicitly disable cascade (overrides --cascade)')
|
|
49
|
+
.option('--all', 'revise every epic in the project top-down; mutually exclusive with artifactId', false)
|
|
50
|
+
.option('--max-writes-per-run <n>', `hard cap on writes performed in one run; exceeding this aborts with partial audit log (default: ${DEFAULT_MAX_WRITES_PER_RUN})`, (v) => parseInt(v, 10), DEFAULT_MAX_WRITES_PER_RUN)
|
|
51
|
+
.option('--scope-to <scope>', `which parts of the artifact the agent may modify: ${WRITABLE_SCOPES.join(', ')}`, 'all')
|
|
52
|
+
.option('--no-code-context', 'skip codebase context assembly (fast mode)')
|
|
53
|
+
.option('--no-sibling-context', 'skip immediate-sibling context gathering')
|
|
54
|
+
.option('--audit <path>', 'override the default audit log path')
|
|
55
|
+
.option('--audit-format <format>', `audit log format: ${AUDIT_FORMATS.join(', ')}`, 'md')
|
|
56
|
+
.action(async (artifactId, opts) => {
|
|
57
|
+
const projectDir = program.opts().projectDir;
|
|
58
|
+
const config = await loadConfig(projectDir);
|
|
59
|
+
// Mutually-exclusive: --all vs explicit artifact id.
|
|
60
|
+
if (opts.all && artifactId) {
|
|
61
|
+
logger.error('Cannot combine --all with an explicit artifact id. Pass one or the other.');
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
if (!opts.all && !artifactId) {
|
|
65
|
+
logger.error('Missing required artifact id. Pass an id (e.g. EPIC-001) or use --all to revise every epic.');
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
if (!isAIConfigured(config)) {
|
|
69
|
+
logger.error('AI not configured. Run `planr config set-provider` to enable AI.');
|
|
70
|
+
logger.dim('Unlike refine, revise has no deterministic-only fallback — it must call an AI provider.');
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
if (!WRITABLE_SCOPES.includes(opts.scopeTo)) {
|
|
74
|
+
logger.error(`Invalid --scope-to: "${opts.scopeTo}". Expected one of: ${WRITABLE_SCOPES.join(', ')}`);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
if (!AUDIT_FORMATS.includes(opts.auditFormat)) {
|
|
78
|
+
logger.error(`Invalid --audit-format: "${opts.auditFormat}". Expected one of: ${AUDIT_FORMATS.join(', ')}`);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
if (!Number.isFinite(opts.maxWritesPerRun) || opts.maxWritesPerRun < 1) {
|
|
82
|
+
logger.error(`Invalid --max-writes-per-run: must be a positive integer.`);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
const rootType = artifactId ? findArtifactTypeById(artifactId) : undefined;
|
|
86
|
+
if (artifactId && !rootType) {
|
|
87
|
+
logger.error(`Cannot determine artifact type from ID: ${artifactId}`);
|
|
88
|
+
logger.dim('Expected format: EPIC-001, FEAT-001, US-001, TASK-001');
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
const writableScope = opts.scopeTo;
|
|
92
|
+
const auditFormat = opts.auditFormat;
|
|
93
|
+
// --- Layer 1: clean-tree gate --------------------------------------
|
|
94
|
+
const treeCheck = await checkCleanTree(projectDir, { allowDirty: opts.allowDirty });
|
|
95
|
+
if (!treeCheck.ok) {
|
|
96
|
+
logger.error(treeCheck.message);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
if (treeCheck.status.kind !== 'clean') {
|
|
100
|
+
logger.warn(treeCheck.message);
|
|
101
|
+
}
|
|
102
|
+
// --- Bulk confirmation: typed-YES in TTY, flag-only in CI ----------
|
|
103
|
+
if (opts.yes && !opts.dryRun) {
|
|
104
|
+
const summary = await buildBulkConfirmationSummary(artifactId, opts, projectDir, config);
|
|
105
|
+
const confirmed = await confirmBulkRevise(summary);
|
|
106
|
+
if (!confirmed) {
|
|
107
|
+
logger.dim('Confirmation declined — exiting without changes.');
|
|
108
|
+
process.exit(0);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const scope = opts.all ? 'all' : artifactId;
|
|
112
|
+
const writer = createAuditLogWriter({
|
|
113
|
+
projectDir,
|
|
114
|
+
scope,
|
|
115
|
+
cascade: opts.cascade || opts.all,
|
|
116
|
+
dryRun: opts.dryRun,
|
|
117
|
+
format: auditFormat,
|
|
118
|
+
overridePath: opts.audit,
|
|
119
|
+
});
|
|
120
|
+
logger.dim(`Audit log: ${writer.path}`);
|
|
121
|
+
// SIGINT guard: if the user Ctrl+Cs during a diff preview prompt (or at
|
|
122
|
+
// any other point before the run completes), close the audit log with
|
|
123
|
+
// an `interrupted: sigint` footer so the on-disk record is consistent.
|
|
124
|
+
// Installed once; removed in the finally block below.
|
|
125
|
+
let sigintFired = false;
|
|
126
|
+
const onSigint = () => {
|
|
127
|
+
if (sigintFired)
|
|
128
|
+
return; // defend against repeated signals
|
|
129
|
+
sigintFired = true;
|
|
130
|
+
try {
|
|
131
|
+
writer.close({ interrupted: { reason: 'sigint', atArtifactId: scope } });
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// best-effort — process is exiting regardless
|
|
135
|
+
}
|
|
136
|
+
logger.warn('\nSIGINT received — audit log closed. Exiting.');
|
|
137
|
+
// 128 + signal number (SIGINT = 2) is the shell convention for signal exits.
|
|
138
|
+
process.exit(130);
|
|
139
|
+
};
|
|
140
|
+
process.once('SIGINT', onSigint);
|
|
141
|
+
logger.heading(`Revise ${scope}${opts.cascade || opts.all ? ' (cascade)' : ''} (${opts.dryRun ? 'dry-run' : 'apply'})`);
|
|
142
|
+
const preFlightHeadPaths = await collectCandidateArtifactPaths(projectDir, config);
|
|
143
|
+
try {
|
|
144
|
+
const provider = await getAIProvider(config);
|
|
145
|
+
if (opts.all) {
|
|
146
|
+
await runAll(projectDir, config, provider, opts, writableScope, writer);
|
|
147
|
+
}
|
|
148
|
+
else if (opts.cascade) {
|
|
149
|
+
await runCascade(projectDir, config, provider, rootType, artifactId, opts, writableScope, writer);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
await runSingle(projectDir, config, provider, artifactId, opts, writableScope, writer);
|
|
153
|
+
}
|
|
154
|
+
// --- Post-flight graph integrity + rollback (FEAT-013 §3.0 + §4.0)
|
|
155
|
+
if (!opts.dryRun) {
|
|
156
|
+
const report = await checkGraphIntegrity(projectDir, config);
|
|
157
|
+
if (!report.ok) {
|
|
158
|
+
logger.error(`Post-flight graph integrity broken: ${report.issues.length} broken parent/child link(s).`);
|
|
159
|
+
for (const issue of report.issues) {
|
|
160
|
+
logger.dim(` · ${issue.childType} ${issue.childId} → ${issue.parentField}=${issue.parentId} (${issue.reason})`);
|
|
161
|
+
}
|
|
162
|
+
if (opts.allowDirty) {
|
|
163
|
+
logger.warn('Rollback disabled (--allow-dirty was passed; pre-run state may not match git HEAD).');
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
logger.warn('Triggering post-flight rollback via `git checkout`…');
|
|
167
|
+
await checkoutPaths(projectDir, preFlightHeadPaths);
|
|
168
|
+
logger.info(`Rolled back ${preFlightHeadPaths.length} artifact path(s) to HEAD.`);
|
|
169
|
+
}
|
|
170
|
+
process.exitCode = 1;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
logger.dim('Post-flight graph integrity: ok.');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
writer.close();
|
|
179
|
+
if (err instanceof ReviseArtifactNotFoundError) {
|
|
180
|
+
logger.error(err.message);
|
|
181
|
+
logger.dim('Expected format: EPIC-001, FEAT-001, US-001, TASK-001');
|
|
182
|
+
process.exit(1);
|
|
183
|
+
}
|
|
184
|
+
const { AIError } = await import('../../ai/errors.js');
|
|
185
|
+
if (err instanceof AIError) {
|
|
186
|
+
logger.error(err.userMessage);
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
throw err;
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
// Always detach the SIGINT listener — normal completion shouldn't
|
|
193
|
+
// leave a process-level handler bound to this run's writer.
|
|
194
|
+
process.removeListener('SIGINT', onSigint);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
// Single-artifact path
|
|
200
|
+
// ---------------------------------------------------------------------------
|
|
201
|
+
async function runSingle(projectDir, config, provider, artifactId, opts, writableScope, writer) {
|
|
202
|
+
const backupDir = defaultBackupDir(projectDir, artifactId);
|
|
203
|
+
const result = await processOneArtifact(projectDir, config, provider, artifactId, opts, writableScope, writer, backupDir, undefined);
|
|
204
|
+
writer.close({
|
|
205
|
+
tokenUsage: result.usage,
|
|
206
|
+
interrupted: result.quit ? { reason: 'q', atArtifactId: artifactId } : undefined,
|
|
207
|
+
});
|
|
208
|
+
renderFinalOutcome(result, artifactId);
|
|
209
|
+
}
|
|
210
|
+
// ---------------------------------------------------------------------------
|
|
211
|
+
// --- All-epics path (FEAT-013 §1.0)
|
|
212
|
+
// ---------------------------------------------------------------------------
|
|
213
|
+
async function runAll(projectDir, config, provider, opts, writableScope, writer) {
|
|
214
|
+
const epics = await listArtifacts(projectDir, config, 'epic');
|
|
215
|
+
if (epics.length === 0) {
|
|
216
|
+
logger.warn('No epics found in the project — nothing to revise.');
|
|
217
|
+
writer.close();
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
logger.dim(`--all scope: ${epics.length} epic(s) found.`);
|
|
221
|
+
let totalWrites = 0;
|
|
222
|
+
let cacheSkips = 0;
|
|
223
|
+
const aggregateUsage = { inputTokens: 0, outputTokens: 0 };
|
|
224
|
+
let cache = loadCache(projectDir);
|
|
225
|
+
for (const epic of epics) {
|
|
226
|
+
if (totalWrites >= opts.maxWritesPerRun) {
|
|
227
|
+
logger.warn(`Hit --max-writes-per-run=${opts.maxWritesPerRun}; stopping --all run early to cap blast radius.`);
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
logger.info(`\n→ Cascading ${epic.id}`);
|
|
231
|
+
const plan = await buildCascadeOrder(projectDir, config, 'epic', epic.id);
|
|
232
|
+
const backupDir = defaultBackupDir(projectDir, epic.id);
|
|
233
|
+
const cascadeResult = await executeCascade({
|
|
234
|
+
plan,
|
|
235
|
+
onProgress: (p) => {
|
|
236
|
+
logger.dim(` [${p.completed + 1}/${p.total}] ${p.currentLevelLabel}: ${p.currentArtifactId}${p.etaSeconds != null ? ` · ~${p.etaSeconds}s left` : ''}`);
|
|
237
|
+
},
|
|
238
|
+
processor: async ({ artifactId, levelLabel }) => {
|
|
239
|
+
if (totalWrites >= opts.maxWritesPerRun)
|
|
240
|
+
return { continue: false, stopReason: 'q' };
|
|
241
|
+
// Cache lookup: if this artifact's raw content is unchanged since a
|
|
242
|
+
// prior 'skipped-by-agent' run, skip the AI call entirely.
|
|
243
|
+
const artifactType = findArtifactTypeById(artifactId);
|
|
244
|
+
if (artifactType) {
|
|
245
|
+
const raw = await readArtifactRaw(projectDir, config, artifactType, artifactId);
|
|
246
|
+
if (raw) {
|
|
247
|
+
const artifactHash = hashArtifactContent(raw);
|
|
248
|
+
if (shouldSkipArtifact(cache, artifactId, artifactHash, undefined)) {
|
|
249
|
+
cacheSkips++;
|
|
250
|
+
logger.dim(` [cache] ${artifactId} unchanged since last clean revise — skip.`);
|
|
251
|
+
return { continue: true };
|
|
252
|
+
}
|
|
253
|
+
const out = await processOneArtifact(projectDir, config, provider, artifactId, opts, writableScope, writer, backupDir, levelLabel);
|
|
254
|
+
aggregateUsage.inputTokens += out.usage.inputTokens;
|
|
255
|
+
aggregateUsage.outputTokens += out.usage.outputTokens;
|
|
256
|
+
if (out.wrote)
|
|
257
|
+
totalWrites++;
|
|
258
|
+
// Record outcome (cache is updated in-memory; flushed at end of --all).
|
|
259
|
+
if (out.outcome === 'skipped-by-agent' ||
|
|
260
|
+
out.outcome === 'applied' ||
|
|
261
|
+
out.outcome === 'would-apply' ||
|
|
262
|
+
out.outcome === 'flagged') {
|
|
263
|
+
cache = recordOutcome(cache, artifactId, artifactHash, undefined, out.outcome);
|
|
264
|
+
}
|
|
265
|
+
if (out.quit)
|
|
266
|
+
return { continue: false, stopReason: 'q' };
|
|
267
|
+
return { continue: true };
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// Fallback: artifact unresolvable — process without cache touching.
|
|
271
|
+
const out = await processOneArtifact(projectDir, config, provider, artifactId, opts, writableScope, writer, backupDir, levelLabel);
|
|
272
|
+
aggregateUsage.inputTokens += out.usage.inputTokens;
|
|
273
|
+
aggregateUsage.outputTokens += out.usage.outputTokens;
|
|
274
|
+
if (out.wrote)
|
|
275
|
+
totalWrites++;
|
|
276
|
+
if (out.quit)
|
|
277
|
+
return { continue: false, stopReason: 'q' };
|
|
278
|
+
return { continue: true };
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
if (cascadeResult.interrupted) {
|
|
282
|
+
writer.close({
|
|
283
|
+
tokenUsage: aggregateUsage,
|
|
284
|
+
interrupted: {
|
|
285
|
+
reason: cascadeResult.interrupted.reason,
|
|
286
|
+
atArtifactId: cascadeResult.interrupted.atArtifactId,
|
|
287
|
+
},
|
|
288
|
+
});
|
|
289
|
+
logger.warn(`Stopped inside ${epic.id} (reason: ${cascadeResult.interrupted.reason}).`);
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
writer.close({ tokenUsage: aggregateUsage });
|
|
294
|
+
await saveCache(projectDir, cache);
|
|
295
|
+
logger.info(`\n--all complete: ${totalWrites} write(s) across ${epics.length} epic(s). Cache hits: ${cacheSkips}.`);
|
|
296
|
+
logger.dim(`Tokens: ${aggregateUsage.inputTokens.toLocaleString()} in → ${aggregateUsage.outputTokens.toLocaleString()} out`);
|
|
297
|
+
}
|
|
298
|
+
// ---------------------------------------------------------------------------
|
|
299
|
+
// Cascade path
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
async function runCascade(projectDir, config, provider, rootType, rootId, opts, writableScope, writer) {
|
|
302
|
+
const plan = await buildCascadeOrder(projectDir, config, rootType, rootId);
|
|
303
|
+
logger.dim(`Cascade plan: ${plan.levels
|
|
304
|
+
.filter((l) => l.artifactIds.length > 0)
|
|
305
|
+
.map((l) => `${l.label}=${l.artifactIds.length}`)
|
|
306
|
+
.join(', ')} · total=${plan.orderedIds.length}`);
|
|
307
|
+
const backupDir = defaultBackupDir(projectDir, rootId);
|
|
308
|
+
const aggregateUsage = { inputTokens: 0, outputTokens: 0 };
|
|
309
|
+
const result = await executeCascade({
|
|
310
|
+
plan,
|
|
311
|
+
onProgress: (p) => {
|
|
312
|
+
logger.dim(`[${p.completed + 1}/${p.total}] ${p.currentLevelLabel}: ${p.currentArtifactId}${p.etaSeconds != null ? ` · ~${p.etaSeconds}s left` : ''}`);
|
|
313
|
+
},
|
|
314
|
+
processor: async ({ artifactId, levelLabel }) => {
|
|
315
|
+
const out = await processOneArtifact(projectDir, config, provider, artifactId, opts, writableScope, writer, backupDir, levelLabel);
|
|
316
|
+
aggregateUsage.inputTokens += out.usage.inputTokens;
|
|
317
|
+
aggregateUsage.outputTokens += out.usage.outputTokens;
|
|
318
|
+
if (out.quit)
|
|
319
|
+
return { continue: false, stopReason: 'q' };
|
|
320
|
+
return { continue: true };
|
|
321
|
+
},
|
|
322
|
+
});
|
|
323
|
+
writer.close({
|
|
324
|
+
tokenUsage: aggregateUsage,
|
|
325
|
+
interrupted: result.interrupted
|
|
326
|
+
? { reason: result.interrupted.reason, atArtifactId: result.interrupted.atArtifactId }
|
|
327
|
+
: undefined,
|
|
328
|
+
});
|
|
329
|
+
logger.info(`\nCascade complete: ${result.completed}/${result.total} artifacts processed${result.interrupted ? ` (interrupted: ${result.interrupted.reason})` : ''}`);
|
|
330
|
+
logger.dim(`Tokens: ${aggregateUsage.inputTokens.toLocaleString()} in → ${aggregateUsage.outputTokens.toLocaleString()} out`);
|
|
331
|
+
if (result.interrupted?.reason === 'agent_error') {
|
|
332
|
+
process.exit(1);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
async function processOneArtifact(projectDir, config, provider, artifactId, opts, writableScope, writer, backupDir, cascadeLevel) {
|
|
336
|
+
const result = await reviseArtifact(projectDir, config, provider, artifactId, {
|
|
337
|
+
dryRun: true,
|
|
338
|
+
writableScope,
|
|
339
|
+
noCodeContext: !opts.codeContext,
|
|
340
|
+
noSiblingContext: !opts.siblingContext,
|
|
341
|
+
});
|
|
342
|
+
const verified = await verifyDecision(result.decision, result.verifierContext);
|
|
343
|
+
if (verified.dropped.length > 0) {
|
|
344
|
+
logger.warn(`${artifactId}: dropped ${verified.dropped.length} unverifiable evidence citation(s) — see audit log.`);
|
|
345
|
+
}
|
|
346
|
+
if (verified.demoted) {
|
|
347
|
+
logger.warn(`${artifactId}: decision demoted "revise" → "flag" (unverifiable evidence).`);
|
|
348
|
+
}
|
|
349
|
+
renderDecision(verified.decision, result.originalContent);
|
|
350
|
+
const finalDecision = await confirmAndMaybeEditRationale(verified.decision, result.originalContent, opts);
|
|
351
|
+
const applyResult = await applyDecision({
|
|
352
|
+
artifactPath: result.artifactPath,
|
|
353
|
+
originalContent: result.originalContent,
|
|
354
|
+
decision: finalDecision,
|
|
355
|
+
backupDir,
|
|
356
|
+
audit: writer,
|
|
357
|
+
dryRun: opts.dryRun || finalDecision.__userSkipped === true,
|
|
358
|
+
cascadeLevel,
|
|
359
|
+
});
|
|
360
|
+
return {
|
|
361
|
+
outcome: applyResult.outcome,
|
|
362
|
+
wrote: applyResult.wrote,
|
|
363
|
+
quit: finalDecision.__userQuit === true,
|
|
364
|
+
usage: result.usage,
|
|
365
|
+
artifactPath: result.artifactPath,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
async function confirmAndMaybeEditRationale(decision, originalContent, opts) {
|
|
369
|
+
if (decision.action !== 'revise')
|
|
370
|
+
return decision;
|
|
371
|
+
if (opts.dryRun)
|
|
372
|
+
return decision;
|
|
373
|
+
if (opts.yes)
|
|
374
|
+
return decision;
|
|
375
|
+
let current = { ...decision };
|
|
376
|
+
for (;;) {
|
|
377
|
+
const action = await promptReviseConfirm(current.artifactId);
|
|
378
|
+
switch (action) {
|
|
379
|
+
case 'apply':
|
|
380
|
+
return current;
|
|
381
|
+
case 'skip':
|
|
382
|
+
return { ...current, __userSkipped: true };
|
|
383
|
+
case 'quit':
|
|
384
|
+
return { ...current, __userSkipped: true, __userQuit: true };
|
|
385
|
+
case 'diff-again':
|
|
386
|
+
renderDecision(current, originalContent);
|
|
387
|
+
continue;
|
|
388
|
+
case 'edit-rationale': {
|
|
389
|
+
const edited = await promptText('New rationale (recorded in the audit log):', current.rationale);
|
|
390
|
+
current = { ...current, rationale: edited };
|
|
391
|
+
continue;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
function renderDecision(decision, originalContent) {
|
|
397
|
+
display.separator(60);
|
|
398
|
+
const actionColor = decision.action === 'revise'
|
|
399
|
+
? chalk.yellow
|
|
400
|
+
: decision.action === 'flag'
|
|
401
|
+
? chalk.magenta
|
|
402
|
+
: chalk.green;
|
|
403
|
+
display.heading(` Action: ${actionColor(decision.action.toUpperCase())}`);
|
|
404
|
+
display.line(` Artifact: ${decision.artifactId}`);
|
|
405
|
+
display.line(` Rationale: ${decision.rationale}`);
|
|
406
|
+
if (decision.evidence.length > 0) {
|
|
407
|
+
display.line('');
|
|
408
|
+
display.heading(' Evidence:');
|
|
409
|
+
for (const ev of decision.evidence) {
|
|
410
|
+
const quote = ev.quote
|
|
411
|
+
? ` — "${ev.quote.slice(0, 80)}${ev.quote.length > 80 ? '…' : ''}"`
|
|
412
|
+
: '';
|
|
413
|
+
display.line(` • [${ev.type}] ${ev.ref}${quote}`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
if (decision.ambiguous.length > 0) {
|
|
417
|
+
display.line('');
|
|
418
|
+
display.heading(' Ambiguous (human decision required):');
|
|
419
|
+
for (const amb of decision.ambiguous) {
|
|
420
|
+
display.line(` • §${amb.section}: ${amb.reason}`);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
if (decision.action === 'revise' && decision.revisedMarkdown) {
|
|
424
|
+
display.line('');
|
|
425
|
+
display.heading(' Proposed diff:');
|
|
426
|
+
const diff = renderDiff(originalContent, decision.revisedMarkdown, {
|
|
427
|
+
oldLabel: `${decision.artifactId} (before)`,
|
|
428
|
+
newLabel: `${decision.artifactId} (proposed)`,
|
|
429
|
+
});
|
|
430
|
+
display.line(diff
|
|
431
|
+
.split('\n')
|
|
432
|
+
.map((l) => ` ${l}`)
|
|
433
|
+
.join('\n'));
|
|
434
|
+
}
|
|
435
|
+
display.separator(60);
|
|
436
|
+
}
|
|
437
|
+
function renderFinalOutcome(result, artifactId) {
|
|
438
|
+
const badge = result.outcome === 'applied'
|
|
439
|
+
? chalk.green('applied')
|
|
440
|
+
: result.outcome === 'would-apply'
|
|
441
|
+
? chalk.yellow('would-apply')
|
|
442
|
+
: result.outcome === 'flagged'
|
|
443
|
+
? chalk.magenta('flagged')
|
|
444
|
+
: chalk.dim(result.outcome);
|
|
445
|
+
logger.info(`\nOutcome: ${badge}`);
|
|
446
|
+
if (result.wrote) {
|
|
447
|
+
logger.dim(`\nWrote ${result.artifactPath}\nSuggested commit: git commit -am "chore(plan): revise ${artifactId} against codebase"`);
|
|
448
|
+
}
|
|
449
|
+
if (result.usage.inputTokens > 0) {
|
|
450
|
+
logger.dim(`Tokens: ${result.usage.inputTokens.toLocaleString()} in → ${result.usage.outputTokens.toLocaleString()} out`);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
function defaultBackupDir(projectDir, scope) {
|
|
454
|
+
const d = new Date();
|
|
455
|
+
const stamp = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
|
|
456
|
+
return path.join(projectDir, '.planr', 'reports', `revise-${scope}-${stamp}`, 'backup');
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Build the blast-radius summary for the typed-YES prompt. For `--all`,
|
|
460
|
+
* lists every epic (not just a count) so the user sees exact scope. For
|
|
461
|
+
* single scope, a shorter summary suffices.
|
|
462
|
+
*/
|
|
463
|
+
async function buildBulkConfirmationSummary(artifactId, opts, projectDir, config) {
|
|
464
|
+
if (opts.all) {
|
|
465
|
+
const epics = await listArtifacts(projectDir, config, 'epic');
|
|
466
|
+
const list = epics.map((e) => ` - ${e.id}`).join('\n');
|
|
467
|
+
return `About to revise EVERY epic and its descendants in ${projectDir}. Affected epics (${epics.length}):\n${list}\n\nWrites are atomic with sidecar backups; max writes per run: ${opts.maxWritesPerRun}.`;
|
|
468
|
+
}
|
|
469
|
+
if (opts.cascade) {
|
|
470
|
+
return `About to revise ${artifactId} AND its descendants (top-down cascade) in ${projectDir}. Writes are atomic with sidecar backups.`;
|
|
471
|
+
}
|
|
472
|
+
return `About to revise ${artifactId} in ${projectDir}. Writes are atomic with sidecar backups.`;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Collect every artifact-file path under the four managed directories so
|
|
476
|
+
* the post-flight rollback has a bounded set to restore with `git checkout`.
|
|
477
|
+
* Intentionally wider than "paths we will write" — if revise touched a file
|
|
478
|
+
* unexpectedly, rollback still catches it.
|
|
479
|
+
*/
|
|
480
|
+
async function collectCandidateArtifactPaths(projectDir, config) {
|
|
481
|
+
const types = ['epic', 'feature', 'story', 'task'];
|
|
482
|
+
const rel = [];
|
|
483
|
+
for (const t of types) {
|
|
484
|
+
const listing = await listArtifacts(projectDir, config, t);
|
|
485
|
+
for (const entry of listing) {
|
|
486
|
+
rel.push(`${config.outputPaths.agile}/${pluralDir(t)}/${entry.filename}`);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
return rel;
|
|
490
|
+
}
|
|
491
|
+
function pluralDir(t) {
|
|
492
|
+
if (t === 'story')
|
|
493
|
+
return 'stories';
|
|
494
|
+
if (t === 'epic')
|
|
495
|
+
return 'epics';
|
|
496
|
+
if (t === 'feature')
|
|
497
|
+
return 'features';
|
|
498
|
+
if (t === 'task')
|
|
499
|
+
return 'tasks';
|
|
500
|
+
return `${t}s`;
|
|
501
|
+
}
|
|
502
|
+
//# sourceMappingURL=revise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revise.js","sourceRoot":"","sources":["../../../src/cli/commands/revise.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import { registerQuickCommand } from './commands/quick.js';
|
|
|
20
20
|
import { registerRefineCommand } from './commands/refine.js';
|
|
21
21
|
import { registerReportCommand } from './commands/report.js';
|
|
22
22
|
import { registerReportLinterCommand } from './commands/report-linter.js';
|
|
23
|
+
import { registerReviseCommand } from './commands/revise.js';
|
|
23
24
|
import { registerRulesCommand } from './commands/rules.js';
|
|
24
25
|
import { registerSearchCommand } from './commands/search.js';
|
|
25
26
|
import { registerSprintCommand } from './commands/sprint.js';
|
|
@@ -73,6 +74,7 @@ registerRulesCommand(program);
|
|
|
73
74
|
registerStatusCommand(program);
|
|
74
75
|
registerConfigCommand(program);
|
|
75
76
|
registerRefineCommand(program);
|
|
77
|
+
registerReviseCommand(program);
|
|
76
78
|
registerEstimateCommand(program);
|
|
77
79
|
registerExportCommand(program);
|
|
78
80
|
registerReportCommand(program);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|