@anthropologies/claudestory 0.1.24 → 0.1.26
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 +21 -10
- package/dist/mcp.js +18 -7
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -6392,7 +6392,7 @@ var init_plan_review = __esm({
|
|
|
6392
6392
|
}
|
|
6393
6393
|
const reviewsForWrite = isReject ? { ...ctx.state.reviews, plan: [] } : { ...ctx.state.reviews, plan: planReviews };
|
|
6394
6394
|
ctx.writeState({
|
|
6395
|
-
reviews:
|
|
6395
|
+
reviews: reviewsForWrite
|
|
6396
6396
|
});
|
|
6397
6397
|
ctx.appendEvent("plan_review", {
|
|
6398
6398
|
round: roundNum,
|
|
@@ -7136,6 +7136,7 @@ var init_finalize = __esm({
|
|
|
7136
7136
|
};
|
|
7137
7137
|
}
|
|
7138
7138
|
}
|
|
7139
|
+
ctx.writeState({ finalizeCheckpoint: "precommit_passed" });
|
|
7139
7140
|
return this.handleCommit(ctx, { ...report, commitHash: headResult.data.hash });
|
|
7140
7141
|
}
|
|
7141
7142
|
return { action: "retry", instruction: 'No files are staged. Stage your changes and call me again with completedAction: "files_staged".' };
|
|
@@ -7199,6 +7200,16 @@ var init_finalize = __esm({
|
|
|
7199
7200
|
}
|
|
7200
7201
|
}
|
|
7201
7202
|
}
|
|
7203
|
+
const ticketId = ctx.state.ticket?.id;
|
|
7204
|
+
if (ticketId) {
|
|
7205
|
+
const ticketPath = `.story/tickets/${ticketId}.json`;
|
|
7206
|
+
if (!stagedResult.data.includes(ticketPath)) {
|
|
7207
|
+
return {
|
|
7208
|
+
action: "retry",
|
|
7209
|
+
instruction: `Pre-commit hooks may have modified the staged set. Ticket file ${ticketPath} is no longer staged. Run \`git add ${ticketPath}\` and call me again with completedAction: "files_staged".`
|
|
7210
|
+
};
|
|
7211
|
+
}
|
|
7212
|
+
}
|
|
7202
7213
|
ctx.writeState({ finalizeCheckpoint: "precommit_passed" });
|
|
7203
7214
|
return {
|
|
7204
7215
|
action: "retry",
|
|
@@ -7768,7 +7779,7 @@ async function handleStart(root, args) {
|
|
|
7768
7779
|
return guideError(new Error(
|
|
7769
7780
|
`Stale compacted session ${existing.state.sessionId} found (prepared ${Math.round((Date.now() - preparedAt) / 6e4)} minutes ago, never resumed). SessionStart hook is no longer prompting for this session.
|
|
7770
7781
|
- To resume anyway: call action "resume" with sessionId "${existing.state.sessionId}"
|
|
7771
|
-
- To abandon and start fresh: run "claudestory session
|
|
7782
|
+
- To abandon and start fresh: run "claudestory session stop ${existing.state.sessionId}"`
|
|
7772
7783
|
));
|
|
7773
7784
|
}
|
|
7774
7785
|
return guideError(new Error(
|
|
@@ -7789,7 +7800,7 @@ async function handleStart(root, args) {
|
|
|
7789
7800
|
return guideError(new Error(
|
|
7790
7801
|
`${resumable.stale ? "Stale c" : "C"}ompacted session ${sid} found (prepared ${Math.round((Date.now() - preparedAt) / 6e4)} minutes ago, lease expired but not resumed).
|
|
7791
7802
|
- To resume: call action "resume" with sessionId "${sid}"
|
|
7792
|
-
- To abandon: run "claudestory session
|
|
7803
|
+
- To abandon: run "claudestory session stop ${sid}"`
|
|
7793
7804
|
));
|
|
7794
7805
|
}
|
|
7795
7806
|
}
|
|
@@ -8308,7 +8319,7 @@ async function handleReport(root, args) {
|
|
|
8308
8319
|
const report = args.report;
|
|
8309
8320
|
if (state.compactPending && currentState !== "COMPACT") {
|
|
8310
8321
|
return guideError(new Error(
|
|
8311
|
-
`Session has pending compaction in inconsistent state (${currentState}). Call action: "resume" or run "claudestory session
|
|
8322
|
+
`Session has pending compaction in inconsistent state (${currentState}). Call action: "resume" or run "claudestory session stop ${args.sessionId}".`
|
|
8312
8323
|
));
|
|
8313
8324
|
}
|
|
8314
8325
|
const recipe = resolveRecipeFromState(state);
|
|
@@ -8337,7 +8348,7 @@ async function handleResume(root, args) {
|
|
|
8337
8348
|
const resumeState = info.state.preCompactState;
|
|
8338
8349
|
if (!resumeState || !WORKFLOW_STATES.includes(resumeState)) {
|
|
8339
8350
|
return guideError(new Error(
|
|
8340
|
-
`Session ${args.sessionId} has invalid preCompactState: ${resumeState}. Run "claudestory session
|
|
8351
|
+
`Session ${args.sessionId} has invalid preCompactState: ${resumeState}. Run "claudestory session stop ${args.sessionId}" to terminate.`
|
|
8341
8352
|
));
|
|
8342
8353
|
}
|
|
8343
8354
|
const headResult = await gitHead(root);
|
|
@@ -8354,7 +8365,7 @@ async function handleResume(root, args) {
|
|
|
8354
8365
|
data: { reason: "cannot_validate_head", expectedHead: expectedHead ?? null, gitAvailable: headResult.ok }
|
|
8355
8366
|
});
|
|
8356
8367
|
return guideError(new Error(
|
|
8357
|
-
`Cannot validate git state for session ${args.sessionId}. Check git status and try "resume" again, or run "claudestory session
|
|
8368
|
+
`Cannot validate git state for session ${args.sessionId}. Check git status and try "resume" again, or run "claudestory session stop ${args.sessionId}" to end the session.`
|
|
8358
8369
|
));
|
|
8359
8370
|
}
|
|
8360
8371
|
if (expectedHead && headResult.data.hash !== expectedHead) {
|
|
@@ -10090,7 +10101,7 @@ var init_mcp = __esm({
|
|
|
10090
10101
|
init_init();
|
|
10091
10102
|
ENV_VAR2 = "CLAUDESTORY_PROJECT_ROOT";
|
|
10092
10103
|
CONFIG_PATH2 = ".story/config.json";
|
|
10093
|
-
version = "0.1.
|
|
10104
|
+
version = "0.1.26";
|
|
10094
10105
|
main().catch((err) => {
|
|
10095
10106
|
process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}
|
|
10096
10107
|
`);
|
|
@@ -13254,7 +13265,7 @@ function registerSessionCommand(yargs) {
|
|
|
13254
13265
|
await handleSessionResumePrompt2();
|
|
13255
13266
|
}
|
|
13256
13267
|
).command(
|
|
13257
|
-
"clear-compact",
|
|
13268
|
+
"clear-compact [sessionId]",
|
|
13258
13269
|
"Clear stale compact marker (admin)",
|
|
13259
13270
|
(y2) => y2.positional("sessionId", {
|
|
13260
13271
|
type: "string",
|
|
@@ -13279,7 +13290,7 @@ function registerSessionCommand(yargs) {
|
|
|
13279
13290
|
}
|
|
13280
13291
|
}
|
|
13281
13292
|
).command(
|
|
13282
|
-
"stop",
|
|
13293
|
+
"stop [sessionId]",
|
|
13283
13294
|
"Stop an active session (admin)",
|
|
13284
13295
|
(y2) => y2.positional("sessionId", {
|
|
13285
13296
|
type: "string",
|
|
@@ -13368,7 +13379,7 @@ async function runCli() {
|
|
|
13368
13379
|
registerConfigCommand: registerConfigCommand2,
|
|
13369
13380
|
registerSessionCommand: registerSessionCommand2
|
|
13370
13381
|
} = await Promise.resolve().then(() => (init_register(), register_exports));
|
|
13371
|
-
const version2 = "0.1.
|
|
13382
|
+
const version2 = "0.1.26";
|
|
13372
13383
|
class HandledError extends Error {
|
|
13373
13384
|
constructor() {
|
|
13374
13385
|
super("HANDLED_ERROR");
|
package/dist/mcp.js
CHANGED
|
@@ -5955,7 +5955,7 @@ var PlanReviewStage = class {
|
|
|
5955
5955
|
}
|
|
5956
5956
|
const reviewsForWrite = isReject ? { ...ctx.state.reviews, plan: [] } : { ...ctx.state.reviews, plan: planReviews };
|
|
5957
5957
|
ctx.writeState({
|
|
5958
|
-
reviews:
|
|
5958
|
+
reviews: reviewsForWrite
|
|
5959
5959
|
});
|
|
5960
5960
|
ctx.appendEvent("plan_review", {
|
|
5961
5961
|
round: roundNum,
|
|
@@ -6658,6 +6658,7 @@ var FinalizeStage = class {
|
|
|
6658
6658
|
};
|
|
6659
6659
|
}
|
|
6660
6660
|
}
|
|
6661
|
+
ctx.writeState({ finalizeCheckpoint: "precommit_passed" });
|
|
6661
6662
|
return this.handleCommit(ctx, { ...report, commitHash: headResult.data.hash });
|
|
6662
6663
|
}
|
|
6663
6664
|
return { action: "retry", instruction: 'No files are staged. Stage your changes and call me again with completedAction: "files_staged".' };
|
|
@@ -6721,6 +6722,16 @@ var FinalizeStage = class {
|
|
|
6721
6722
|
}
|
|
6722
6723
|
}
|
|
6723
6724
|
}
|
|
6725
|
+
const ticketId = ctx.state.ticket?.id;
|
|
6726
|
+
if (ticketId) {
|
|
6727
|
+
const ticketPath = `.story/tickets/${ticketId}.json`;
|
|
6728
|
+
if (!stagedResult.data.includes(ticketPath)) {
|
|
6729
|
+
return {
|
|
6730
|
+
action: "retry",
|
|
6731
|
+
instruction: `Pre-commit hooks may have modified the staged set. Ticket file ${ticketPath} is no longer staged. Run \`git add ${ticketPath}\` and call me again with completedAction: "files_staged".`
|
|
6732
|
+
};
|
|
6733
|
+
}
|
|
6734
|
+
}
|
|
6724
6735
|
ctx.writeState({ finalizeCheckpoint: "precommit_passed" });
|
|
6725
6736
|
return {
|
|
6726
6737
|
action: "retry",
|
|
@@ -7257,7 +7268,7 @@ async function handleStart(root, args) {
|
|
|
7257
7268
|
return guideError(new Error(
|
|
7258
7269
|
`Stale compacted session ${existing.state.sessionId} found (prepared ${Math.round((Date.now() - preparedAt) / 6e4)} minutes ago, never resumed). SessionStart hook is no longer prompting for this session.
|
|
7259
7270
|
- To resume anyway: call action "resume" with sessionId "${existing.state.sessionId}"
|
|
7260
|
-
- To abandon and start fresh: run "claudestory session
|
|
7271
|
+
- To abandon and start fresh: run "claudestory session stop ${existing.state.sessionId}"`
|
|
7261
7272
|
));
|
|
7262
7273
|
}
|
|
7263
7274
|
return guideError(new Error(
|
|
@@ -7278,7 +7289,7 @@ async function handleStart(root, args) {
|
|
|
7278
7289
|
return guideError(new Error(
|
|
7279
7290
|
`${resumable.stale ? "Stale c" : "C"}ompacted session ${sid} found (prepared ${Math.round((Date.now() - preparedAt) / 6e4)} minutes ago, lease expired but not resumed).
|
|
7280
7291
|
- To resume: call action "resume" with sessionId "${sid}"
|
|
7281
|
-
- To abandon: run "claudestory session
|
|
7292
|
+
- To abandon: run "claudestory session stop ${sid}"`
|
|
7282
7293
|
));
|
|
7283
7294
|
}
|
|
7284
7295
|
}
|
|
@@ -7798,7 +7809,7 @@ async function handleReport(root, args) {
|
|
|
7798
7809
|
const report = args.report;
|
|
7799
7810
|
if (state.compactPending && currentState !== "COMPACT") {
|
|
7800
7811
|
return guideError(new Error(
|
|
7801
|
-
`Session has pending compaction in inconsistent state (${currentState}). Call action: "resume" or run "claudestory session
|
|
7812
|
+
`Session has pending compaction in inconsistent state (${currentState}). Call action: "resume" or run "claudestory session stop ${args.sessionId}".`
|
|
7802
7813
|
));
|
|
7803
7814
|
}
|
|
7804
7815
|
const recipe = resolveRecipeFromState(state);
|
|
@@ -7827,7 +7838,7 @@ async function handleResume(root, args) {
|
|
|
7827
7838
|
const resumeState = info.state.preCompactState;
|
|
7828
7839
|
if (!resumeState || !WORKFLOW_STATES.includes(resumeState)) {
|
|
7829
7840
|
return guideError(new Error(
|
|
7830
|
-
`Session ${args.sessionId} has invalid preCompactState: ${resumeState}. Run "claudestory session
|
|
7841
|
+
`Session ${args.sessionId} has invalid preCompactState: ${resumeState}. Run "claudestory session stop ${args.sessionId}" to terminate.`
|
|
7831
7842
|
));
|
|
7832
7843
|
}
|
|
7833
7844
|
const headResult = await gitHead(root);
|
|
@@ -7844,7 +7855,7 @@ async function handleResume(root, args) {
|
|
|
7844
7855
|
data: { reason: "cannot_validate_head", expectedHead: expectedHead ?? null, gitAvailable: headResult.ok }
|
|
7845
7856
|
});
|
|
7846
7857
|
return guideError(new Error(
|
|
7847
|
-
`Cannot validate git state for session ${args.sessionId}. Check git status and try "resume" again, or run "claudestory session
|
|
7858
|
+
`Cannot validate git state for session ${args.sessionId}. Check git status and try "resume" again, or run "claudestory session stop ${args.sessionId}" to end the session.`
|
|
7848
7859
|
));
|
|
7849
7860
|
}
|
|
7850
7861
|
if (expectedHead && headResult.data.hash !== expectedHead) {
|
|
@@ -9255,7 +9266,7 @@ async function ensureGitignoreEntries(gitignorePath, entries) {
|
|
|
9255
9266
|
// src/mcp/index.ts
|
|
9256
9267
|
var ENV_VAR2 = "CLAUDESTORY_PROJECT_ROOT";
|
|
9257
9268
|
var CONFIG_PATH2 = ".story/config.json";
|
|
9258
|
-
var version = "0.1.
|
|
9269
|
+
var version = "0.1.26";
|
|
9259
9270
|
function tryDiscoverRoot() {
|
|
9260
9271
|
const envRoot = process.env[ENV_VAR2];
|
|
9261
9272
|
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.26",
|
|
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": [
|