@anthropologies/claudestory 0.1.47 → 0.1.48

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
@@ -8358,7 +8358,7 @@ function getInstalledVersion() {
8358
8358
  }
8359
8359
  }
8360
8360
  function getRunningVersion() {
8361
- return "0.1.47";
8361
+ return "0.1.48";
8362
8362
  }
8363
8363
  var init_version_check = __esm({
8364
8364
  "src/autonomous/version-check.ts"() {
@@ -10923,7 +10923,7 @@ var init_mcp = __esm({
10923
10923
  init_init();
10924
10924
  ENV_VAR2 = "CLAUDESTORY_PROJECT_ROOT";
10925
10925
  CONFIG_PATH2 = ".story/config.json";
10926
- version = "0.1.47";
10926
+ version = "0.1.48";
10927
10927
  main().catch((err) => {
10928
10928
  process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}
10929
10929
  `);
@@ -14354,7 +14354,7 @@ async function runCli() {
14354
14354
  registerSessionCommand: registerSessionCommand2,
14355
14355
  registerRepairCommand: registerRepairCommand2
14356
14356
  } = await Promise.resolve().then(() => (init_register(), register_exports));
14357
- const version2 = "0.1.47";
14357
+ const version2 = "0.1.48";
14358
14358
  class HandledError extends Error {
14359
14359
  constructor() {
14360
14360
  super("HANDLED_ERROR");
package/dist/mcp.js CHANGED
@@ -7816,7 +7816,7 @@ function getInstalledVersion() {
7816
7816
  }
7817
7817
  }
7818
7818
  function getRunningVersion() {
7819
- return "0.1.47";
7819
+ return "0.1.48";
7820
7820
  }
7821
7821
 
7822
7822
  // src/autonomous/guide.ts
@@ -10055,7 +10055,7 @@ async function ensureGitignoreEntries(gitignorePath, entries) {
10055
10055
  // src/mcp/index.ts
10056
10056
  var ENV_VAR2 = "CLAUDESTORY_PROJECT_ROOT";
10057
10057
  var CONFIG_PATH2 = ".story/config.json";
10058
- var version = "0.1.47";
10058
+ var version = "0.1.48";
10059
10059
  function tryDiscoverRoot() {
10060
10060
  const envRoot = process.env[ENV_VAR2];
10061
10061
  if (envRoot) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anthropologies/claudestory",
3
- "version": "0.1.47",
3
+ "version": "0.1.48",
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": [
@@ -358,67 +358,69 @@ Before asking for approval, briefly explain what they're looking at:
358
358
 
359
359
  "**How this works:** Phases are milestones in your project's development. They track progress from setup to shipping. Tickets are specific work items within each phase. After setup, typing `/story` at the start of any Claude Code session loads this context automatically. Claude will know your project's state, what was done last session, and what to work on next."
360
360
 
361
- Then use `AskUserQuestion` for approval:
362
- - question: "How does this proposal look?"
363
- - header: "Proposal"
361
+ Then use ONE `AskUserQuestion` that combines approval and refinement depth (do not ask two separate questions):
362
+ - question: "How should I proceed with this proposal?"
363
+ - header: "Proceed"
364
364
  - options:
365
- - "Looks good" -- approve and continue
366
- - "Adjust phases" -- iterate on phase structure
367
- - "Adjust tickets" -- iterate on ticket details
368
- - "Start over" -- re-analyze from scratch
365
+ - "Refine + get a second opinion (Recommended)" -- I'll add descriptions, dependencies, and sizing, then have an independent reviewer check my work before creating anything
366
+ - "Refine tickets" -- I'll add descriptions, figure out dependencies, and flag oversized tickets
367
+ - "Create as-is" -- create tickets now as shown
368
+ - "Adjust first" -- I want to change phases or tickets before proceeding
369
+ - (Other always available for free-text feedback)
369
370
 
370
- Re-show this `AskUserQuestion` after adjustments. Loop until "Looks good."
371
+ If "Adjust first": ask what they want to change, iterate, then re-show this same AskUserQuestion. Loop until they pick a create/refine option.
371
372
 
372
- #### 1d2. Refinement and Review
373
+ If "Create as-is" and no brief exists: warn "Note: tickets will have titles only -- you can add descriptions later." Then proceed to **1e. Execute on Approval**.
373
374
 
374
- After the user approves the proposal structure, use `AskUserQuestion` for refinement depth:
375
- - question: "Want me to refine these before creating?"
376
- - header: "Depth"
377
- - options:
378
- - "Yes, refine + get a second opinion (Recommended)" -- I'll refine, then have an independent reviewer check my work
379
- - "Yes, refine them" -- I'll add descriptions, figure out dependencies, and flag oversized tickets
380
- - "Create as-is" -- create tickets now with just titles
381
-
382
- If "Create as-is" and no brief exists: warn "Note: tickets will have titles only -- you can add descriptions later."
383
-
384
- **If "Refine tickets" or "Refine + review":**
385
-
386
- Refine the proposal. If a brief/PRD was found in step 1b, use those structured notes. If no brief exists (e.g., the user came through step 1c interview), infer descriptions from the interview answers and propose standard dependencies based on the tech stack.
375
+ #### 1d2. Refinement and Review (internal -- user does not see intermediate steps)
387
376
 
388
- **Descriptions:** Extract specs from the brief into ticket descriptions -- entity fields, acceptance criteria, API contracts, business rules. If no brief, write descriptions based on the user's interview answers and common patterns for the chosen stack. Cap each description at 3-4 sentences. Keep them actionable, not exhaustive. The goal is "enough to implement without re-reading the brief."
377
+ **This section runs silently.** The user already chose their depth. Do the work, then present the final result ONCE.
389
378
 
390
- **Dependencies:** Infer `blockedBy` relationships from phase ordering and domain logic:
391
- - Schema/migration tickets block CRUD API tickets
392
- - Auth tickets block protected route tickets
393
- - CRUD/model tickets block business logic that depends on them
394
- - API tickets block UI tickets that consume them
379
+ If a brief/PRD was found in step 1b, use those structured notes. If no brief exists (e.g., the user came through step 1c interview), infer descriptions from the interview answers and propose standard dependencies based on the tech stack.
395
380
 
396
- **Sizing check:** Flag tickets that cover more than one major concern:
397
- - Mentions 3+ distinct entities in one ticket
398
- - Covers both API implementation and UI in one ticket
399
- - Handles 3+ distinct models, modes, or billing types in one ticket
400
- - Offer to split flagged tickets into sub-tasks
381
+ **What refinement does (internally):**
382
+ - Extract specs from the brief into ticket descriptions (3-4 sentences each, actionable)
383
+ - Infer `blockedBy` from phase ordering and domain logic (schema before CRUD, auth before protected routes, CRUD before business logic, API before UI)
384
+ - Flag and split oversized tickets (3+ entities, API+UI in one ticket, 3+ models)
385
+ - Cross-reference brief entities against tickets, add missing ones
386
+ - Detect core differentiator -- decompose if single ticket
387
+ - Surface undecided tech choices
401
388
 
402
- **Missing entity detection:** Cross-reference entities and concepts mentioned in the brief against the proposed ticket list. Flag entities that appear in the brief but have no corresponding ticket. Common misses: user profile/settings, notification system, seed data, admin/config screens.
389
+ **If "Refine + review":** After refinement, also run an independent review:
390
+ - If `review_plan` MCP tool is available, use it. Otherwise spawn an independent Claude agent. If neither available, skip with a note.
391
+ - Maximum 2 review rounds.
392
+ - Incorporate all findings into the proposal. The user sees the final result, not the review process.
403
393
 
404
- **Core differentiator detection:** Identify the ticket(s) covering what the brief emphasizes most (the main value proposition). If the core differentiator is a single ticket, flag it for decomposition -- it likely needs 3-4 sub-tickets.
394
+ **Present the final result ONCE.** Do NOT show every ticket with its description. Show a compact summary of what changed:
405
395
 
406
- **Undecided tech choices:** Surface technology decisions mentioned in the brief as "X or Y" that haven't been resolved. Present them as explicit decisions to make before implementation starts (e.g., "ORM: Drizzle or Prisma -- decide before T-002").
407
-
408
- After refinement, present the updated proposal showing what changed: added descriptions, new blockedBy links, split tickets, newly created tickets for missing entities, and flagged decisions. Wait for the user to approve the refined proposal before continuing.
396
+ ```
397
+ Refinement complete. Here's what changed:
409
398
 
410
- **If "Refine + review":**
399
+ - Added descriptions to 14 tickets
400
+ - Added 8 dependency links (blockedBy chains)
401
+ - No tickets flagged for splitting (all well-scoped)
402
+ - [If review ran] Independent review: approved with 2 suggestions incorporated
403
+ - [brief summary of each suggestion]
411
404
 
412
- After refinement, run an independent review of the full proposal (phases, tickets, descriptions, dependencies):
405
+ Updated proposal:
413
406
 
414
- **Backend selection:** Use the same review backend selection as autonomous mode -- if the `review_plan` MCP tool is available, use it (pass the full proposal as the plan document); otherwise spawn an independent Claude agent with the brief + proposal and ask it to audit for gaps, sizing issues, missing dependencies, and architectural concerns. If neither is available, skip review with a note.
407
+ [Show the same phase + ticket table as before, but now with a "Deps" column]
415
408
 
416
- **Review cap:** Maximum 2 review rounds for setup proposals.
409
+ | Ticket | Title | Phase | Deps |
410
+ |--------|--------------------------|------------|-----------|
411
+ | T-001 | Project setup | foundation | -- |
412
+ | T-002 | Database schema design | foundation | T-001 |
413
+ | T-006 | Auth setup | foundation | T-001 |
414
+ | ... | ... | ... | ... |
415
+ ```
417
416
 
418
- **After review findings come back:**
419
- - Present ALL findings to the user as a summary diff: added tickets, changed descriptions, new dependencies, files to be generated.
420
- - User approves the final version before any execution. Do not auto-incorporate findings.
421
- - If the user requests changes based on findings, update the proposal and optionally re-review.
417
+ Then use `AskUserQuestion`:
418
+ - question: "Ready to create?"
419
+ - header: "Create"
420
+ - options:
421
+ - "Create everything (Recommended)"
422
+ - "Let me adjust first" -- iterate, then re-ask
423
+ - "Show me the full details" -- expand all ticket descriptions (for users who want to inspect)
422
424
 
423
425
  #### 1e. Execute on Approval
424
426