@anthropologies/claudestory 0.1.31 → 0.1.32

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.
Files changed (3) hide show
  1. package/dist/cli.js +23 -4
  2. package/dist/mcp.js +22 -3
  3. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -7158,6 +7158,19 @@ var init_finalize = __esm({
7158
7158
  };
7159
7159
  }
7160
7160
  async handleStage(ctx, report) {
7161
+ const checkpoint = ctx.state.finalizeCheckpoint;
7162
+ if (checkpoint === "staged" || checkpoint === "staged_override") {
7163
+ return {
7164
+ action: "retry",
7165
+ instruction: [
7166
+ "Files staged. Now run pre-commit checks.",
7167
+ "",
7168
+ 'Run any pre-commit hooks or linting, then call me with completedAction: "precommit_passed".',
7169
+ 'If pre-commit fails, fix the issues, re-stage, and call me with completedAction: "files_staged" again.'
7170
+ ].join("\n"),
7171
+ reminders: ["Verify staged set is intact after pre-commit hooks."]
7172
+ };
7173
+ }
7161
7174
  const stagedResult = await gitDiffCachedNames(ctx.root);
7162
7175
  if (!stagedResult.ok || stagedResult.data.length === 0) {
7163
7176
  const headResult = await gitHead(ctx.root);
@@ -7182,7 +7195,10 @@ var init_finalize = __esm({
7182
7195
  const baselineUntracked = ctx.state.git.baseline?.untrackedPaths ?? [];
7183
7196
  let overlapOverridden = false;
7184
7197
  if (baselineUntracked.length > 0) {
7185
- const overlap = stagedResult.data.filter((f) => baselineUntracked.includes(f));
7198
+ const sessionTicketPath = ctx.state.ticket?.id ? `.story/tickets/${ctx.state.ticket.id}.json` : null;
7199
+ const overlap = stagedResult.data.filter(
7200
+ (f) => baselineUntracked.includes(f) && f !== sessionTicketPath
7201
+ );
7186
7202
  if (overlap.length > 0) {
7187
7203
  if (report.overrideOverlap) {
7188
7204
  overlapOverridden = true;
@@ -7231,7 +7247,10 @@ var init_finalize = __esm({
7231
7247
  if (checkpoint !== "staged_override") {
7232
7248
  const baselineUntracked = ctx.state.git.baseline?.untrackedPaths ?? [];
7233
7249
  if (baselineUntracked.length > 0) {
7234
- const overlap = stagedResult.data.filter((f) => baselineUntracked.includes(f));
7250
+ const sessionTicketPath = ctx.state.ticket?.id ? `.story/tickets/${ctx.state.ticket.id}.json` : null;
7251
+ const overlap = stagedResult.data.filter(
7252
+ (f) => baselineUntracked.includes(f) && f !== sessionTicketPath
7253
+ );
7235
7254
  if (overlap.length > 0) {
7236
7255
  ctx.writeState({ finalizeCheckpoint: null });
7237
7256
  return { action: "retry", instruction: `Pre-commit hooks staged pre-existing untracked files: ${overlap.join(", ")}. Unstage them and re-stage, then call with completedAction: "files_staged".` };
@@ -10239,7 +10258,7 @@ var init_mcp = __esm({
10239
10258
  init_init();
10240
10259
  ENV_VAR2 = "CLAUDESTORY_PROJECT_ROOT";
10241
10260
  CONFIG_PATH2 = ".story/config.json";
10242
- version = "0.1.31";
10261
+ version = "0.1.32";
10243
10262
  main().catch((err) => {
10244
10263
  process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}
10245
10264
  `);
@@ -13523,7 +13542,7 @@ async function runCli() {
13523
13542
  registerConfigCommand: registerConfigCommand2,
13524
13543
  registerSessionCommand: registerSessionCommand2
13525
13544
  } = await Promise.resolve().then(() => (init_register(), register_exports));
13526
- const version2 = "0.1.31";
13545
+ const version2 = "0.1.32";
13527
13546
  class HandledError extends Error {
13528
13547
  constructor() {
13529
13548
  super("HANDLED_ERROR");
package/dist/mcp.js CHANGED
@@ -6678,6 +6678,19 @@ var FinalizeStage = class {
6678
6678
  };
6679
6679
  }
6680
6680
  async handleStage(ctx, report) {
6681
+ const checkpoint = ctx.state.finalizeCheckpoint;
6682
+ if (checkpoint === "staged" || checkpoint === "staged_override") {
6683
+ return {
6684
+ action: "retry",
6685
+ instruction: [
6686
+ "Files staged. Now run pre-commit checks.",
6687
+ "",
6688
+ 'Run any pre-commit hooks or linting, then call me with completedAction: "precommit_passed".',
6689
+ 'If pre-commit fails, fix the issues, re-stage, and call me with completedAction: "files_staged" again.'
6690
+ ].join("\n"),
6691
+ reminders: ["Verify staged set is intact after pre-commit hooks."]
6692
+ };
6693
+ }
6681
6694
  const stagedResult = await gitDiffCachedNames(ctx.root);
6682
6695
  if (!stagedResult.ok || stagedResult.data.length === 0) {
6683
6696
  const headResult = await gitHead(ctx.root);
@@ -6702,7 +6715,10 @@ var FinalizeStage = class {
6702
6715
  const baselineUntracked = ctx.state.git.baseline?.untrackedPaths ?? [];
6703
6716
  let overlapOverridden = false;
6704
6717
  if (baselineUntracked.length > 0) {
6705
- const overlap = stagedResult.data.filter((f) => baselineUntracked.includes(f));
6718
+ const sessionTicketPath = ctx.state.ticket?.id ? `.story/tickets/${ctx.state.ticket.id}.json` : null;
6719
+ const overlap = stagedResult.data.filter(
6720
+ (f) => baselineUntracked.includes(f) && f !== sessionTicketPath
6721
+ );
6706
6722
  if (overlap.length > 0) {
6707
6723
  if (report.overrideOverlap) {
6708
6724
  overlapOverridden = true;
@@ -6751,7 +6767,10 @@ var FinalizeStage = class {
6751
6767
  if (checkpoint !== "staged_override") {
6752
6768
  const baselineUntracked = ctx.state.git.baseline?.untrackedPaths ?? [];
6753
6769
  if (baselineUntracked.length > 0) {
6754
- const overlap = stagedResult.data.filter((f) => baselineUntracked.includes(f));
6770
+ const sessionTicketPath = ctx.state.ticket?.id ? `.story/tickets/${ctx.state.ticket.id}.json` : null;
6771
+ const overlap = stagedResult.data.filter(
6772
+ (f) => baselineUntracked.includes(f) && f !== sessionTicketPath
6773
+ );
6755
6774
  if (overlap.length > 0) {
6756
6775
  ctx.writeState({ finalizeCheckpoint: null });
6757
6776
  return { action: "retry", instruction: `Pre-commit hooks staged pre-existing untracked files: ${overlap.join(", ")}. Unstage them and re-stage, then call with completedAction: "files_staged".` };
@@ -9395,7 +9414,7 @@ async function ensureGitignoreEntries(gitignorePath, entries) {
9395
9414
  // src/mcp/index.ts
9396
9415
  var ENV_VAR2 = "CLAUDESTORY_PROJECT_ROOT";
9397
9416
  var CONFIG_PATH2 = ".story/config.json";
9398
- var version = "0.1.31";
9417
+ var version = "0.1.32";
9399
9418
  function tryDiscoverRoot() {
9400
9419
  const envRoot = process.env[ENV_VAR2];
9401
9420
  if (envRoot) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anthropologies/claudestory",
3
- "version": "0.1.31",
3
+ "version": "0.1.32",
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": [