@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 +9 -5
- package/dist/mcp.js +8 -4
- package/package.json +1 -1
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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": [
|