@jwilger/pi-development-system 0.25.0 → 0.26.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jwilger/pi-development-system",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "A pi extension package representing a seasoned approach to software development using a full AI SDLC.",
5
5
  "keywords": [
6
6
  "pi-package"
@@ -14,7 +14,9 @@ const ciLabel = (state: DevsysState): string | undefined => {
14
14
  };
15
15
 
16
16
  const activeReview = (state: DevsysState): string | undefined => {
17
- const review = state.activeSlice === undefined ? undefined : reviewOf(state, state.activeSlice);
17
+ // Without an active slice (before /devsys-start exists) show the most recent review instead of nothing.
18
+ const review =
19
+ state.activeSlice === undefined ? state.reviews?.at(-1) : reviewOf(state, state.activeSlice);
18
20
  return review === undefined ? undefined : reviewLabel(review);
19
21
  };
20
22
 
@@ -42,6 +42,10 @@ export async function snapshotDiff(
42
42
  // diff.mnemonicPrefix / diff.noprefix change the `a/` `b/` header prefixes the file keys are cut from.
43
43
  "--src-prefix=a/",
44
44
  "--dst-prefix=b/",
45
+ // Every changed path gets a `diff --git` section: no submodule log summaries, no textconv that
46
+ // can hide an edit whose converted text is unchanged.
47
+ "--submodule=short",
48
+ "--no-textconv",
45
49
  ];
46
50
  const [diff, stat, others] = await Promise.all([
47
51
  exec("git", [...plain, "--full-index", "--no-renames", range], { cwd, timeout: 15_000 }),
@@ -127,6 +127,14 @@ export function createReviewStartTool(
127
127
  );
128
128
  }
129
129
 
130
+ if (action === "fix-findings") {
131
+ return reply(
132
+ `${reviewLabel(review)}. Round ${review.rounds.length} of ${slice} has blocking or should-fix findings and the diff has not changed since: fix them first, then start again. ` +
133
+ "Re-running the review on unchanged code does not clear a finding. If a finding is wrong, record a `review.unsatisfied` departure with the evidence (devsys_record_departure).",
134
+ true,
135
+ );
136
+ }
137
+
130
138
  const round = review.rounds.length + 1;
131
139
  const resolved = resolveSlot(
132
140
  config.value.models,