@anthropologies/claudestory 0.1.40 → 0.1.41

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/cli.js CHANGED
@@ -5855,7 +5855,8 @@ var init_state_machine = __esm({
5855
5855
  // start does INIT + LOAD_CONTEXT internally
5856
5856
  LOAD_CONTEXT: ["PICK_TICKET"],
5857
5857
  // internal (never seen by Claude)
5858
- PICK_TICKET: ["PLAN", "ISSUE_FIX", "SESSION_END"],
5858
+ PICK_TICKET: ["PLAN", "ISSUE_FIX", "COMPLETE", "SESSION_END"],
5859
+ // COMPLETE for ISS-075 (nothing left to do)
5859
5860
  PLAN: ["PLAN_REVIEW"],
5860
5861
  PLAN_REVIEW: ["IMPLEMENT", "WRITE_TESTS", "PLAN", "PLAN_REVIEW", "SESSION_END"],
5861
5862
  // approve → IMPLEMENT/WRITE_TESTS, reject → PLAN, stay for next round; SESSION_END for tiered exit
@@ -6444,6 +6445,9 @@ var init_pick_ticket = __esm({
6444
6445
  }
6445
6446
  const topCandidate = candidates.kind === "found" ? candidates.candidates[0] : null;
6446
6447
  const hasIssues = highIssues.length > 0;
6448
+ if (!topCandidate && candidates.kind !== "found" && !hasIssues) {
6449
+ return { action: "goto", target: "COMPLETE" };
6450
+ }
6447
6451
  return {
6448
6452
  instruction: [
6449
6453
  "# Pick a Ticket or Issue",
@@ -6730,7 +6734,7 @@ var init_plan_review = __esm({
6730
6734
  const risk = ctx.state.ticket?.risk ?? "low";
6731
6735
  const minRounds = requiredRounds(risk);
6732
6736
  const hasCriticalOrMajor = findings.some(
6733
- (f) => f.severity === "critical" || f.severity === "major"
6737
+ (f) => (f.severity === "critical" || f.severity === "major") && f.disposition !== "addressed" && f.disposition !== "deferred"
6734
6738
  );
6735
6739
  if (verdict === "approve" && hasCriticalOrMajor) {
6736
6740
  return { action: "retry", instruction: "Contradictory review payload: verdict is 'approve' but critical/major findings are present. Re-run the review or correct the verdict." };
@@ -7178,7 +7182,7 @@ var init_code_review = __esm({
7178
7182
  const risk = ctx.state.ticket?.realizedRisk ?? ctx.state.ticket?.risk ?? "low";
7179
7183
  const minRounds = requiredRounds(risk);
7180
7184
  const hasCriticalOrMajor = findings.some(
7181
- (f) => f.severity === "critical" || f.severity === "major"
7185
+ (f) => (f.severity === "critical" || f.severity === "major") && f.disposition !== "addressed" && f.disposition !== "deferred"
7182
7186
  );
7183
7187
  const planRedirect = findings.some((f) => f.recommendedNextState === "PLAN");
7184
7188
  if (verdict === "approve" && hasCriticalOrMajor) {
@@ -10876,7 +10880,7 @@ var init_mcp = __esm({
10876
10880
  init_init();
10877
10881
  ENV_VAR2 = "CLAUDESTORY_PROJECT_ROOT";
10878
10882
  CONFIG_PATH2 = ".story/config.json";
10879
- version = "0.1.40";
10883
+ version = "0.1.41";
10880
10884
  main().catch((err) => {
10881
10885
  process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}
10882
10886
  `);
@@ -14300,7 +14304,7 @@ async function runCli() {
14300
14304
  registerSessionCommand: registerSessionCommand2,
14301
14305
  registerRepairCommand: registerRepairCommand2
14302
14306
  } = await Promise.resolve().then(() => (init_register(), register_exports));
14303
- const version2 = "0.1.40";
14307
+ const version2 = "0.1.41";
14304
14308
  class HandledError extends Error {
14305
14309
  constructor() {
14306
14310
  super("HANDLED_ERROR");
package/dist/mcp.js CHANGED
@@ -5453,7 +5453,8 @@ var TRANSITIONS = {
5453
5453
  // start does INIT + LOAD_CONTEXT internally
5454
5454
  LOAD_CONTEXT: ["PICK_TICKET"],
5455
5455
  // internal (never seen by Claude)
5456
- PICK_TICKET: ["PLAN", "ISSUE_FIX", "SESSION_END"],
5456
+ PICK_TICKET: ["PLAN", "ISSUE_FIX", "COMPLETE", "SESSION_END"],
5457
+ // COMPLETE for ISS-075 (nothing left to do)
5457
5458
  PLAN: ["PLAN_REVIEW"],
5458
5459
  PLAN_REVIEW: ["IMPLEMENT", "WRITE_TESTS", "PLAN", "PLAN_REVIEW", "SESSION_END"],
5459
5460
  // approve → IMPLEMENT/WRITE_TESTS, reject → PLAN, stay for next round; SESSION_END for tiered exit
@@ -6013,6 +6014,9 @@ var PickTicketStage = class {
6013
6014
  }
6014
6015
  const topCandidate = candidates.kind === "found" ? candidates.candidates[0] : null;
6015
6016
  const hasIssues = highIssues.length > 0;
6017
+ if (!topCandidate && candidates.kind !== "found" && !hasIssues) {
6018
+ return { action: "goto", target: "COMPLETE" };
6019
+ }
6016
6020
  return {
6017
6021
  instruction: [
6018
6022
  "# Pick a Ticket or Issue",
@@ -6285,7 +6289,7 @@ var PlanReviewStage = class {
6285
6289
  const risk = ctx.state.ticket?.risk ?? "low";
6286
6290
  const minRounds = requiredRounds(risk);
6287
6291
  const hasCriticalOrMajor = findings.some(
6288
- (f) => f.severity === "critical" || f.severity === "major"
6292
+ (f) => (f.severity === "critical" || f.severity === "major") && f.disposition !== "addressed" && f.disposition !== "deferred"
6289
6293
  );
6290
6294
  if (verdict === "approve" && hasCriticalOrMajor) {
6291
6295
  return { action: "retry", instruction: "Contradictory review payload: verdict is 'approve' but critical/major findings are present. Re-run the review or correct the verdict." };
@@ -6706,7 +6710,7 @@ var CodeReviewStage = class {
6706
6710
  const risk = ctx.state.ticket?.realizedRisk ?? ctx.state.ticket?.risk ?? "low";
6707
6711
  const minRounds = requiredRounds(risk);
6708
6712
  const hasCriticalOrMajor = findings.some(
6709
- (f) => f.severity === "critical" || f.severity === "major"
6713
+ (f) => (f.severity === "critical" || f.severity === "major") && f.disposition !== "addressed" && f.disposition !== "deferred"
6710
6714
  );
6711
6715
  const planRedirect = findings.some((f) => f.recommendedNextState === "PLAN");
6712
6716
  if (verdict === "approve" && hasCriticalOrMajor) {
@@ -10012,7 +10016,7 @@ async function ensureGitignoreEntries(gitignorePath, entries) {
10012
10016
  // src/mcp/index.ts
10013
10017
  var ENV_VAR2 = "CLAUDESTORY_PROJECT_ROOT";
10014
10018
  var CONFIG_PATH2 = ".story/config.json";
10015
- var version = "0.1.40";
10019
+ var version = "0.1.41";
10016
10020
  function tryDiscoverRoot() {
10017
10021
  const envRoot = process.env[ENV_VAR2];
10018
10022
  if (envRoot) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anthropologies/claudestory",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Cross-session context persistence for AI coding projects. Tracks tickets, issues, roadmap, and handovers so every session builds on the last.",
6
6
  "keywords": [