@slope-dev/slope 1.57.1 → 1.57.3

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 (67) hide show
  1. package/dist/cli/commands/auto-card.d.ts.map +1 -1
  2. package/dist/cli/commands/auto-card.js +27 -1
  3. package/dist/cli/commands/auto-card.js.map +1 -1
  4. package/dist/cli/commands/pr.d.ts +2 -0
  5. package/dist/cli/commands/pr.d.ts.map +1 -1
  6. package/dist/cli/commands/pr.js +21 -0
  7. package/dist/cli/commands/pr.js.map +1 -1
  8. package/dist/cli/commands/review-state.d.ts.map +1 -1
  9. package/dist/cli/commands/review-state.js +7 -1
  10. package/dist/cli/commands/review-state.js.map +1 -1
  11. package/dist/cli/commands/session.d.ts.map +1 -1
  12. package/dist/cli/commands/session.js +28 -0
  13. package/dist/cli/commands/session.js.map +1 -1
  14. package/dist/cli/commands/worktree.js +1 -1
  15. package/dist/cli/guards/docs.js +1 -1
  16. package/dist/cli/guards/docs.js.map +1 -1
  17. package/dist/cli/guards/hazard.d.ts.map +1 -1
  18. package/dist/cli/guards/hazard.js +7 -2
  19. package/dist/cli/guards/hazard.js.map +1 -1
  20. package/dist/cli/guards/phase-boundary.d.ts.map +1 -1
  21. package/dist/cli/guards/phase-boundary.js +111 -11
  22. package/dist/cli/guards/phase-boundary.js.map +1 -1
  23. package/dist/cli/guards/sprint-completion.d.ts.map +1 -1
  24. package/dist/cli/guards/sprint-completion.js +32 -4
  25. package/dist/cli/guards/sprint-completion.js.map +1 -1
  26. package/dist/cli/guards/worktree-check.d.ts.map +1 -1
  27. package/dist/cli/guards/worktree-check.js +209 -6
  28. package/dist/cli/guards/worktree-check.js.map +1 -1
  29. package/dist/cli/guards/worktree-reuse.d.ts.map +1 -1
  30. package/dist/cli/guards/worktree-reuse.js +39 -11
  31. package/dist/cli/guards/worktree-reuse.js.map +1 -1
  32. package/dist/cli/index.js +2 -1
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/pr-closeout.d.ts +38 -0
  35. package/dist/cli/pr-closeout.d.ts.map +1 -0
  36. package/dist/cli/pr-closeout.js +197 -0
  37. package/dist/cli/pr-closeout.js.map +1 -0
  38. package/dist/cli/registry.d.ts.map +1 -1
  39. package/dist/cli/registry.js +9 -1
  40. package/dist/cli/registry.js.map +1 -1
  41. package/dist/core/config.d.ts +2 -0
  42. package/dist/core/config.d.ts.map +1 -1
  43. package/dist/core/config.js.map +1 -1
  44. package/dist/core/index.d.ts +1 -1
  45. package/dist/core/index.d.ts.map +1 -1
  46. package/dist/core/roadmap.d.ts +7 -0
  47. package/dist/core/roadmap.d.ts.map +1 -1
  48. package/dist/core/roadmap.js +42 -8
  49. package/dist/core/roadmap.js.map +1 -1
  50. package/dist/core/store.d.ts +2 -0
  51. package/dist/core/store.d.ts.map +1 -1
  52. package/dist/core/store.js.map +1 -1
  53. package/dist/mcp/index.test.js +7 -0
  54. package/dist/mcp/index.test.js.map +1 -1
  55. package/dist/mcp/registry.d.ts +1 -1
  56. package/dist/mcp/registry.d.ts.map +1 -1
  57. package/dist/mcp/registry.js +1 -1
  58. package/dist/store/index.d.ts +2 -1
  59. package/dist/store/index.d.ts.map +1 -1
  60. package/dist/store/index.js +26 -0
  61. package/dist/store/index.js.map +1 -1
  62. package/dist/store-pg/index.d.ts +2 -1
  63. package/dist/store-pg/index.d.ts.map +1 -1
  64. package/dist/store-pg/index.js +36 -0
  65. package/dist/store-pg/index.js.map +1 -1
  66. package/package.json +1 -1
  67. package/templates/codex/plugins/slope/.codex-plugin/plugin.json +1 -1
@@ -115,7 +115,7 @@ export const GUARD_DOCS = {
115
115
  'worktree-check': {
116
116
  purpose: 'Blocks concurrent sessions from operating in the same directory without worktree isolation. Prevents file conflicts between agents.',
117
117
  triggers: 'PreToolUse on Read, Glob, Grep, Edit, Write, Bash. Fires on most tool calls.',
118
- behavior: 'Block — if another session is active in the same directory, denies the tool call and requires `EnterWorktree` for isolation.',
118
+ behavior: 'Block — if another session is active in the same directory, denies the tool call and points agents to `slope worktree start`, which defaults to `.slope/worktrees/` outside Claude Code\'s protected `.claude/` tree.',
119
119
  configuration: 'Disable: add "worktree-check" to guidance.disabled.',
120
120
  level: 'full',
121
121
  },
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/cli/guards/docs.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAehF,MAAM,CAAC,MAAM,UAAU,GAA6B;IAClD,OAAO,EAAE;QACP,OAAO,EAAE,gKAAgK;QACzK,QAAQ,EAAE,qFAAqF;QAC/F,QAAQ,EAAE,oJAAoJ;QAC9J,aAAa,EAAE,0HAA0H;QACzI,KAAK,EAAE,MAAM;KACd;IACD,MAAM,EAAE;QACN,OAAO,EAAE,8HAA8H;QACvI,QAAQ,EAAE,4EAA4E;QACtF,QAAQ,EAAE,6NAA6N;QACvO,aAAa,EAAE,gJAAgJ;QAC/J,KAAK,EAAE,MAAM;KACd;IACD,cAAc,EAAE;QACd,OAAO,EAAE,kGAAkG;QAC3G,QAAQ,EAAE,wEAAwE;QAClF,QAAQ,EAAE,uHAAuH;QACjI,aAAa,EAAE,+HAA+H;QAC9I,KAAK,EAAE,MAAM;KACd;IACD,aAAa,EAAE;QACb,OAAO,EAAE,wHAAwH;QACjI,QAAQ,EAAE,yEAAyE;QACnF,QAAQ,EAAE,6IAA6I;QACvJ,aAAa,EAAE,wGAAwG;QACvH,KAAK,EAAE,MAAM;KACd;IACD,UAAU,EAAE;QACV,OAAO,EAAE,6IAA6I;QACtJ,QAAQ,EAAE,2EAA2E;QACrF,QAAQ,EAAE,6GAA6G;QACvH,aAAa,EAAE,2IAA2I;QAC1J,KAAK,EAAE,MAAM;KACd;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,wGAAwG;QACjH,QAAQ,EAAE,+CAA+C;QACzD,QAAQ,EAAE,kIAAkI;QAC5I,aAAa,EAAE,iDAAiD;QAChE,KAAK,EAAE,MAAM;KACd;IACD,eAAe,EAAE;QACf,OAAO,EAAE,0IAA0I;QACnJ,QAAQ,EAAE,gEAAgE;QAC1E,QAAQ,EAAE,oHAAoH;QAC9H,aAAa,EAAE,yGAAyG;QACxH,KAAK,EAAE,MAAM;KACd;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,qHAAqH;QAC9H,QAAQ,EAAE,6FAA6F;QACvG,QAAQ,EAAE,uGAAuG;QACjH,aAAa,EAAE,iJAAiJ;QAChK,KAAK,EAAE,MAAM;KACd;IACD,eAAe,EAAE;QACf,OAAO,EAAE,iGAAiG;QAC1G,QAAQ,EAAE,4EAA4E;QACtF,QAAQ,EAAE,yHAAyH;QACnI,aAAa,EAAE,2HAA2H;QAC1I,KAAK,EAAE,MAAM;KACd;IACD,aAAa,EAAE;QACb,OAAO,EAAE,6GAA6G;QACtH,QAAQ,EAAE,qGAAqG;QAC/G,QAAQ,EAAE,+HAA+H;QACzI,aAAa,EAAE,kDAAkD;QACjE,KAAK,EAAE,MAAM;KACd;IACD,eAAe,EAAE;QACf,OAAO,EAAE,qGAAqG;QAC9G,QAAQ,EAAE,+FAA+F;QACzG,QAAQ,EAAE,uIAAuI;QACjJ,aAAa,EAAE,oDAAoD;QACnE,KAAK,EAAE,MAAM;KACd;IACD,aAAa,EAAE;QACb,OAAO,EAAE,qGAAqG;QAC9G,QAAQ,EAAE,mFAAmF;QAC7F,QAAQ,EAAE,wHAAwH;QAClI,aAAa,EAAE,6FAA6F;QAC5G,KAAK,EAAE,MAAM;KACd;IACD,aAAa,EAAE;QACb,OAAO,EAAE,iGAAiG;QAC1G,QAAQ,EAAE,+CAA+C;QACzD,QAAQ,EAAE,uHAAuH;QACjI,aAAa,EAAE,kDAAkD;QACjE,KAAK,EAAE,MAAM;KACd;IACD,WAAW,EAAE;QACX,OAAO,EAAE,wFAAwF;QACjG,QAAQ,EAAE,yFAAyF;QACnG,QAAQ,EAAE,2NAA2N;QACrO,aAAa,EAAE,gDAAgD;QAC/D,KAAK,EAAE,MAAM;KACd;IACD,UAAU,EAAE;QACV,OAAO,EAAE,+GAA+G;QACxH,QAAQ,EAAE,wDAAwD;QAClE,QAAQ,EAAE,gGAAgG;QAC1G,aAAa,EAAE,iDAAiD;QAChE,KAAK,EAAE,MAAM;KACd;IACD,sBAAsB,EAAE;QACtB,OAAO,EAAE,mGAAmG;QAC5G,QAAQ,EAAE,+GAA+G;QACzH,QAAQ,EAAE,iHAAiH;QAC3H,aAAa,EAAE,0KAA0K;QACzL,KAAK,EAAE,MAAM;KACd;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,qIAAqI;QAC9I,QAAQ,EAAE,8EAA8E;QACxF,QAAQ,EAAE,8HAA8H;QACxI,aAAa,EAAE,qDAAqD;QACpE,KAAK,EAAE,MAAM;KACd;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,qLAAqL;QAC9L,QAAQ,EAAE,gGAAgG;QAC1G,QAAQ,EAAE,iMAAiM;QAC3M,aAAa,EAAE,yNAAyN;QACxO,KAAK,EAAE,MAAM;KACd;IACD,mBAAmB,EAAE;QACnB,OAAO,EAAE,kIAAkI;QAC3I,QAAQ,EAAE,sHAAsH;QAChI,QAAQ,EAAE,yHAAyH;QACnI,aAAa,EAAE,uHAAuH;QACtI,KAAK,EAAE,MAAM;KACd;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,0HAA0H;QACnI,QAAQ,EAAE,+GAA+G;QACzH,QAAQ,EAAE,oHAAoH;QAC9H,aAAa,EAAE,qDAAqD;QACpE,KAAK,EAAE,MAAM;KACd;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,mCAAmC;IACnC,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,6CAA6C;QAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACvE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE7C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,GAAa;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/cli/guards/docs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hazard.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/hazard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAwDlE;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA4ErF"}
1
+ {"version":3,"file":"hazard.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/hazard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAwDlE;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAkFrF"}
@@ -103,10 +103,15 @@ export async function hazardGuard(input, cwd) {
103
103
  if (allWarnings.length === 0)
104
104
  continue;
105
105
  const fullContext = formatHazardContext(area, allWarnings);
106
- // Session dedup: if this exact context was already injected, return compressed reference
106
+ // Duplicate hazard payloads add transcript noise on Edit/Write; record the
107
+ // dedup metric but do not inject another context block.
107
108
  const dedup = dedupGuardContext(cwd, input.session_id, 'hazard', fullContext);
108
- if (dedup)
109
+ if (dedup) {
110
+ if (dedup.startsWith('SLOPE hazard: (same as prior warning')) {
111
+ return { metricReason: 'deduped' };
112
+ }
109
113
  return { context: dedup, metricReason: 'deduped' };
114
+ }
110
115
  return { context: fullContext, metricReason: 'matched' };
111
116
  }
112
117
  return { metricReason: issues || scorecardSourceAvailable ? 'no-match' : 'state-unavailable' };
@@ -1 +1 @@
1
- {"version":3,"file":"hazard.js","sourceRoot":"","sources":["../../../src/cli/guards/hazard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAe5E,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAC7C,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AACrD,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEvF,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,KAAkB;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QACvC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC,CAAC,+DAA+D,CAAC,CAAC;AAC7E,CAAC;AAED,2DAA2D;AAC3D,SAAS,UAAU,CAAC,KAAkB,EAAE,aAAqB;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;IACvC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,SAAS,GAAG,MAAM,CACxD;KACF,CAAC;AACJ,CAAC;AAED,uDAAuD;AAEvD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAgB,EAAE,GAAW;IAC7D,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;IAEhE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;IAEhD,4BAA4B;IAC5B,IAAI,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAEzC,IAAI,MAAM,GAA4B,IAAI,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,uCAAuC,CAAC,CAAC;IAEnD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,aAAa,IAAI,sBAAsB,CAAC;IAC/E,IAAI,gBAAgB,GAA2B,IAAI,CAAC;IACpD,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,MAAM,oBAAoB,GAAG,GAAoB,EAAE;QACjD,IAAI,gBAAgB;YAAE,OAAO,gBAAgB,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/C,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACrF,wBAAwB,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB,GAAG,EAAE,CAAC;YACtB,wBAAwB,GAAG,KAAK,CAAC;QACnC,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,gEAAgE;QAChE,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;YAC1C,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAE3D,mEAAmE;QACnE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QAElF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACtC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC3D,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,uDAAuD;QACvD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAqB;gBAC9B,IAAI;gBACJ,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC3D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEvC,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE3D,yFAAyF;QACzF,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9E,IAAI,KAAK;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QAE9D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,wBAAwB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;AACjG,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAgB,EAAE,GAAW;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,WAAW,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,oBAAoB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY;YAAE,SAAS;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACtD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,MAA+B;IACzE,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,aAAa,GAAgD,EAAE,CAAC;IAEtE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAChD,4CAA4C;QAC5C,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3F,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;YACpD,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,MAAM,UAAU,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3I,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAC1D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,UAA2B;IACzE,MAAM,QAAQ,GAA4C,EAAE,CAAC;IAE7D,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,IAAK,EAAqC,CAAC,MAAM,IAAI,CAAC,CAAC;QAEtF,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YAClC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACxC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC;oBAAE,SAAS;gBAC/C,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM;oBACN,IAAI,EAAE,cAAc,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,MAAM,MAAM,GAAG;iBAC7E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,EAAE,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,OAAO,QAAQ,KAAK,QAAQ;gBAC/C,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,MAAM,CAAE,QAAoC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,CAAC;gBAAE,SAAS;YAClF,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM;gBACN,IAAI,EAAE,sBAAsB,YAAY,MAAM,MAAM,GAAG;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,SAAiB,EACjB,OAA6C,EAAE;IAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,QAAQ,GAAG,SAAS;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;SAC7D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjF,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,WAAqB;IAC9D,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACnD,MAAM,MAAM,GAAG,kBAAkB,IAAI,KAAK,WAAW,CAAC,MAAM,SAAS,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC3H,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,QAAQ,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,uCAAuC,IAAI,aAAa,CAAC,CAAC;IACtG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"hazard.js","sourceRoot":"","sources":["../../../src/cli/guards/hazard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"phase-boundary.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/phase-boundary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAU9E;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmF5F"}
1
+ {"version":3,"file":"phase-boundary.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/phase-boundary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAc,MAAM,qBAAqB,CAAC;AAU9E;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAwF5F"}
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { loadConfig, parseRoadmap } from '../../core/index.js';
3
+ import { castRoadmapStructure, loadConfig, parseRoadmap } from '../../core/index.js';
4
4
  import { isPhaseComplete, pendingPhaseGates } from '../phase-cleanup.js';
5
5
  /** Extract phase number from name like "Phase 7 — Helmsman 3D". Falls back to array index + 1. */
6
6
  function extractPhaseNumber(name, index) {
@@ -13,13 +13,15 @@ function extractPhaseNumber(name, index) {
13
13
  */
14
14
  export async function phaseBoundaryGuard(input, cwd) {
15
15
  const command = input.tool_input?.command ?? '';
16
- // Match sprint-start, sprint-run, or claim commands
17
- if (!/\bslope\s+(sprint\s+(start|run)|claim)\b/.test(command))
16
+ const slopeArgs = extractRelevantSlopeArgs(command);
17
+ // Match actual slope sprint-start, sprint-run, or claim invocations.
18
+ if (!slopeArgs)
18
19
  return {};
19
20
  // Parse target sprint number from command args
20
- const sprintMatch = command.match(/--sprint[=\s]+(\d+)/i) ??
21
- command.match(/\bS(\d+)\b/i) ??
22
- command.match(/--target[=\s]+S?(\d+)/i);
21
+ const argText = slopeArgs.join(' ');
22
+ const sprintMatch = argText.match(/--sprint[=\s]+(\d+)/i) ??
23
+ argText.match(/\bS(\d+)\b/i) ??
24
+ argText.match(/--target[=\s]+S?(\d+)/i);
23
25
  // If we can't determine the target sprint, allow (don't block blindly)
24
26
  if (!sprintMatch)
25
27
  return {};
@@ -33,16 +35,18 @@ export async function phaseBoundaryGuard(input, cwd) {
33
35
  return {};
34
36
  const raw = JSON.parse(readFileSync(roadmapPath, 'utf8'));
35
37
  const result = parseRoadmap(raw);
36
- roadmap = result.roadmap;
38
+ roadmap = result.roadmap ?? castRoadmapStructure(raw);
37
39
  }
38
40
  catch {
39
41
  return {
40
- decision: 'deny',
41
- blockReason: 'SLOPE phase-boundary: Cannot determine phase — roadmap unreadable. Run `slope roadmap validate`.',
42
+ context: 'SLOPE phase-boundary: Cannot determine phase because the roadmap is unreadable. Allowing command; run `slope roadmap validate`.',
43
+ };
44
+ }
45
+ if (!roadmap || !roadmap.phases) {
46
+ return {
47
+ context: 'SLOPE phase-boundary: Cannot determine phase because the roadmap is structurally invalid. Allowing command; run `slope roadmap validate`.',
42
48
  };
43
49
  }
44
- if (!roadmap || !roadmap.phases)
45
- return {};
46
50
  // Build phase-to-number mapping (RoadmapPhase has name + sprints[], no id)
47
51
  const phaseNumbers = roadmap.phases.map((p, i) => extractPhaseNumber(p.name, i));
48
52
  // Find which phase the target sprint belongs to
@@ -90,4 +94,100 @@ export async function phaseBoundaryGuard(input, cwd) {
90
94
  suggestion,
91
95
  };
92
96
  }
97
+ function extractRelevantSlopeArgs(command) {
98
+ for (const segment of splitShellSegments(command)) {
99
+ const words = tokenizeShellWords(segment);
100
+ const slopeIndex = findSlopeExecutableIndex(words);
101
+ if (slopeIndex < 0)
102
+ continue;
103
+ const args = words.slice(slopeIndex + 1);
104
+ if (args[0] === 'sprint' && (args[1] === 'start' || args[1] === 'run'))
105
+ return args;
106
+ if (args[0] === 'claim')
107
+ return args;
108
+ }
109
+ return null;
110
+ }
111
+ function splitShellSegments(command) {
112
+ const segments = [];
113
+ let current = '';
114
+ let quote = null;
115
+ for (let i = 0; i < command.length; i++) {
116
+ const char = command[i];
117
+ if (char === '\\' && quote !== "'") {
118
+ current += char;
119
+ if (i + 1 < command.length)
120
+ current += command[++i];
121
+ continue;
122
+ }
123
+ if ((char === '"' || char === "'") && (!quote || quote === char)) {
124
+ quote = quote ? null : char;
125
+ current += char;
126
+ continue;
127
+ }
128
+ if (!quote && (char === ';' || char === '\n' || char === '&' || char === '|')) {
129
+ if (current.trim())
130
+ segments.push(current.trim());
131
+ current = '';
132
+ if ((char === '&' && command[i + 1] === '&') || (char === '|' && command[i + 1] === '|'))
133
+ i++;
134
+ continue;
135
+ }
136
+ current += char;
137
+ }
138
+ if (current.trim())
139
+ segments.push(current.trim());
140
+ return segments;
141
+ }
142
+ function tokenizeShellWords(segment) {
143
+ const words = [];
144
+ let current = '';
145
+ let quote = null;
146
+ for (let i = 0; i < segment.length; i++) {
147
+ const char = segment[i];
148
+ if (char === '\\' && quote !== "'") {
149
+ if (i + 1 < segment.length)
150
+ current += segment[++i];
151
+ continue;
152
+ }
153
+ if ((char === '"' || char === "'") && (!quote || quote === char)) {
154
+ quote = quote ? null : char;
155
+ continue;
156
+ }
157
+ if (!quote && /\s/.test(char)) {
158
+ if (current) {
159
+ words.push(current);
160
+ current = '';
161
+ }
162
+ continue;
163
+ }
164
+ current += char;
165
+ }
166
+ if (current)
167
+ words.push(current);
168
+ return words;
169
+ }
170
+ function findSlopeExecutableIndex(words) {
171
+ let i = 0;
172
+ if (words[i] === 'env')
173
+ i++;
174
+ while (isEnvAssignment(words[i]))
175
+ i++;
176
+ if (words[i] === 'command')
177
+ i++;
178
+ if (words[i] === 'slope')
179
+ return i;
180
+ if ((words[i] === 'npx' || words[i] === 'bunx') && words[i + 1] === 'slope')
181
+ return i + 1;
182
+ if (['pnpm', 'npm', 'yarn', 'bun'].includes(words[i])) {
183
+ if (words[i + 1] === 'exec' && words[i + 2] === 'slope')
184
+ return i + 2;
185
+ if (words[i + 1] === 'slope')
186
+ return i + 1;
187
+ }
188
+ return -1;
189
+ }
190
+ function isEnvAssignment(word) {
191
+ return !!word && /^[A-Za-z_][A-Za-z0-9_]*=/.test(word);
192
+ }
93
193
  //# sourceMappingURL=phase-boundary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase-boundary.js","sourceRoot":"","sources":["../../../src/cli/guards/phase-boundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,kGAAkG;AAClG,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAa;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAgB,EAAE,GAAW;IACpE,MAAM,OAAO,GAAI,KAAK,CAAC,UAAU,EAAE,OAAkB,IAAI,EAAE,CAAC;IAE5D,oDAAoD;IACpD,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzE,+CAA+C;IAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAE1C,uEAAuE;IACvE,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,0CAA0C;IAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,kGAAkG;SAChH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAE3C,2EAA2E;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjF,gDAAgD;IAChD,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACjG,cAAc,GAAG,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,cAAc,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC,CAAC,kCAAkC;IACrE,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,CAAC,2CAA2C;IAEhF,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IACpD,4EAA4E;IAC5E,sGAAsG;IACtG,MAAM,YAAY,GAAG,cAAc,GAAG,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAEhD,8CAA8C;IAC9C,IAAI,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IAElD,4DAA4D;IAC5D,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAErD,MAAM,UAAU,GAAe;QAC7B,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,SAAS,YAAY,uEAAuE,YAAY,WAAW,cAAc,IAAI;QAC9I,OAAO,EAAE;YACP,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH;gBACE,EAAE,EAAE,UAAU;gBACd,KAAK,EAAE,uCAAuC;gBAC9C,OAAO,EAAE,wBAAwB,YAAY,EAAE;aAChD;SACF;QACD,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,UAAU;KACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"phase-boundary.js","sourceRoot":"","sources":["../../../src/cli/guards/phase-boundary.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sprint-completion.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/sprint-completion.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlE;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAgB/F"}
1
+ {"version":3,"file":"sprint-completion.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/sprint-completion.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlE;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAgB/F"}
@@ -2,6 +2,7 @@ import { execSync } from 'node:child_process';
2
2
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import { loadConfig } from '../config.js';
5
+ import { loadPrReviewState } from '../pr-review-state.js';
5
6
  import { loadSprintState, mutateSprintState, updateGate, isSprintComplete, pendingGates } from '../sprint-state.js';
6
7
  /**
7
8
  * Sprint-completion guard: enforces post-implementation gates.
@@ -205,10 +206,37 @@ function handleReviewCompletion(input, cwd) {
205
206
  const state = loadSprintState(cwd);
206
207
  if (!state)
207
208
  return {};
208
- if (state.gates.review_md)
209
- return {}; // Already marked
210
- updateGate(cwd, 'review_md', true);
211
- return { context: 'SLOPE: Review generated — gate marked complete.' };
209
+ if (!state.gates.review_md)
210
+ updateGate(cwd, 'review_md', true);
211
+ const lines = [state.gates.review_md
212
+ ? 'SLOPE: Review generated — gate was already complete.'
213
+ : 'SLOPE: Review generated — gate marked complete.'];
214
+ const prReviewWarning = missingPrReviewWarning(cwd, state.sprint);
215
+ if (prReviewWarning)
216
+ lines.push('', prReviewWarning);
217
+ return { context: lines.join('\n') };
218
+ }
219
+ function missingPrReviewWarning(cwd, sprint) {
220
+ const branch = currentBranch(cwd);
221
+ const reviews = loadPrReviewState(cwd).reviews;
222
+ const matching = reviews.filter(review => review.sprint === sprint
223
+ || (branch && review.branch === branch));
224
+ if (matching.some(review => review.status === 'reviewed'))
225
+ return null;
226
+ const pending = matching.find(review => review.status === 'pending');
227
+ const target = pending ? `PR #${pending.pr}` : 'the current branch PR';
228
+ return [
229
+ 'SLOPE PR closeout: sprint retrospective review is not PR implementation review.',
230
+ `Run \`slope pr status --sprint=${sprint}\` and \`slope pr review${pending ? ` --pr=${pending.pr}` : ''} --sprint=${sprint}\` before presenting ${target} as ready.`,
231
+ ].join(' ');
232
+ }
233
+ function currentBranch(cwd) {
234
+ try {
235
+ return execSync('git branch --show-current', { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim() || undefined;
236
+ }
237
+ catch {
238
+ return undefined;
239
+ }
212
240
  }
213
241
  /** Detect `slope auto-card` completion → suggest validate next. */
214
242
  function handleAutoCardCompletion(input, cwd) {
@@ -1 +1 @@
1
- {"version":3,"file":"sprint-completion.js","sourceRoot":"","sources":["../../../src/cli/guards/sprint-completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sprint-completion.js","sourceRoot":"","sources":["../../../src/cli/guards/sprint-completion.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-check.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/worktree-check.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAgBlE,oDAAoD;AACpD,wBAAgB,uBAAuB,CAAC,SAAS,SAAK,GAAG,IAAI,CAK5D;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAgG5F"}
1
+ {"version":3,"file":"worktree-check.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/worktree-check.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAgBlE,oDAAoD;AACpD,wBAAgB,uBAAuB,CAAC,SAAS,SAAK,GAAG,IAAI,CAK5D;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmG5F"}
@@ -1,6 +1,6 @@
1
1
  import { execFileSync } from 'node:child_process';
2
2
  import { existsSync, writeFileSync, mkdirSync, unlinkSync } from 'node:fs';
3
- import { join } from 'node:path';
3
+ import { join, resolve } from 'node:path';
4
4
  import { tmpdir } from 'node:os';
5
5
  import { createHash } from 'node:crypto';
6
6
  import { STALE_SESSION_THRESHOLD_MS } from '../../core/constants.js';
@@ -55,8 +55,10 @@ export async function worktreeCheckGuard(input, cwd) {
55
55
  return {};
56
56
  }
57
57
  // If git-common-dir is not '.git', we're in a worktree (already isolated)
58
- if (gitCommonDir !== '.git')
58
+ if (gitCommonDir !== '.git') {
59
+ await reconcileWorktreeSession(input, cwd, sessionId);
59
60
  return {};
61
+ }
60
62
  // Get current branch for session registration
61
63
  let branch;
62
64
  try {
@@ -115,7 +117,7 @@ export async function worktreeCheckGuard(input, cwd) {
115
117
  // Do NOT write sentinel — denied sessions should re-check next invocation
116
118
  return {
117
119
  decision: 'deny',
118
- blockReason: `BLOCKED: Another session is active in this directory:\n${sessionList}\n\nYou MUST use \`EnterWorktree\` to create an isolated working copy before proceeding. If this harness does not expose EnterWorktree, run \`slope worktree start --branch=<branch> --role=secondary --ide=<ide>\` from the primary checkout. Do not attempt implementation work until you are in a worktree.`,
120
+ blockReason: `BLOCKED: Another session is active in this directory:\n${sessionList}\n\nCreate an isolated working copy before proceeding:\n slope worktree start --branch=<branch> --role=secondary --ide=<ide>\n\nSLOPE worktrees default to .slope/worktrees/<branch>, outside Claude Code's protected .claude/ tree. Avoid Claude Code's native .claude/worktrees/ default because ordinary source edits there can trigger self-configuration permission prompts. If the listed session is stale, run \`slope session list\` and then \`slope session end --session-id=<id>\`. Do not attempt implementation work until you are in a worktree.`,
119
121
  };
120
122
  }
121
123
  // No conflict — write sentinel so we don't re-check this session
@@ -137,9 +139,124 @@ function isWorktreeRecoveryInput(input) {
137
139
  if (input.tool_name === 'EnterWorktree')
138
140
  return true;
139
141
  const command = extractCommandText(input);
140
- return command === 'EnterWorktree'
141
- || /^git\s+worktree\s+add(?:\s|$)/.test(command)
142
- || /^git\s+-C\s+(?:"[^"]+"|'[^']+'|\S+)\s+worktree\s+add(?:\s|$)/.test(command);
142
+ if (command === 'EnterWorktree')
143
+ return true;
144
+ const segments = splitShellSegments(command);
145
+ if (segments.length !== 1)
146
+ return false;
147
+ const words = tokenizeShellWords(segments[0]);
148
+ return isGitWorktreeAdd(words) || isSlopeRecoveryCommand(words);
149
+ }
150
+ function isGitWorktreeAdd(words) {
151
+ const start = skipCommandPrefix(words, 0);
152
+ if (words[start] !== 'git')
153
+ return false;
154
+ if (words[start + 1] === 'worktree' && words[start + 2] === 'add')
155
+ return true;
156
+ return words[start + 1] === '-C'
157
+ && !!words[start + 2]
158
+ && words[start + 3] === 'worktree'
159
+ && words[start + 4] === 'add';
160
+ }
161
+ function isSlopeRecoveryCommand(words) {
162
+ const slopeIndex = findSlopeExecutableIndex(words);
163
+ if (slopeIndex < 0)
164
+ return false;
165
+ const args = words.slice(slopeIndex + 1);
166
+ if (args[0] === 'worktree' && args[1] === 'start')
167
+ return true;
168
+ if (args[0] !== 'session')
169
+ return false;
170
+ return args[1] === 'end'
171
+ || args[1] === 'list'
172
+ || args[1] === 'prune'
173
+ || args[1] === 'dashboard';
174
+ }
175
+ function splitShellSegments(command) {
176
+ const segments = [];
177
+ let current = '';
178
+ let quote = null;
179
+ for (let i = 0; i < command.length; i++) {
180
+ const char = command[i];
181
+ if (char === '\\' && quote !== "'") {
182
+ current += char;
183
+ if (i + 1 < command.length)
184
+ current += command[++i];
185
+ continue;
186
+ }
187
+ if ((char === '"' || char === "'") && (!quote || quote === char)) {
188
+ quote = quote ? null : char;
189
+ current += char;
190
+ continue;
191
+ }
192
+ if (!quote && (char === ';' || char === '\n' || char === '&' || char === '|')) {
193
+ if (current.trim())
194
+ segments.push(current.trim());
195
+ current = '';
196
+ if ((char === '&' && command[i + 1] === '&') || (char === '|' && command[i + 1] === '|'))
197
+ i++;
198
+ continue;
199
+ }
200
+ current += char;
201
+ }
202
+ if (current.trim())
203
+ segments.push(current.trim());
204
+ return segments;
205
+ }
206
+ function tokenizeShellWords(segment) {
207
+ const words = [];
208
+ let current = '';
209
+ let quote = null;
210
+ for (let i = 0; i < segment.length; i++) {
211
+ const char = segment[i];
212
+ if (char === '\\' && quote !== "'") {
213
+ if (i + 1 < segment.length)
214
+ current += segment[++i];
215
+ continue;
216
+ }
217
+ if ((char === '"' || char === "'") && (!quote || quote === char)) {
218
+ quote = quote ? null : char;
219
+ continue;
220
+ }
221
+ if (!quote && /\s/.test(char)) {
222
+ if (current) {
223
+ words.push(current);
224
+ current = '';
225
+ }
226
+ continue;
227
+ }
228
+ current += char;
229
+ }
230
+ if (current)
231
+ words.push(current);
232
+ return words;
233
+ }
234
+ function findSlopeExecutableIndex(words) {
235
+ const i = skipCommandPrefix(words, 0);
236
+ if (words[i] === 'slope')
237
+ return i;
238
+ if ((words[i] === 'npx' || words[i] === 'bunx') && words[i + 1] === 'slope')
239
+ return i + 1;
240
+ if (['pnpm', 'npm', 'yarn', 'bun'].includes(words[i])) {
241
+ if (words[i + 1] === 'exec' && words[i + 2] === 'slope')
242
+ return i + 2;
243
+ if (words[i + 1] === 'slope')
244
+ return i + 1;
245
+ }
246
+ return -1;
247
+ }
248
+ function skipCommandPrefix(words, start) {
249
+ let i = start;
250
+ if (words[i] === 'env')
251
+ i++;
252
+ while (isEnvAssignment(words[i]))
253
+ i++;
254
+ if (words[i] === 'command')
255
+ i++;
256
+ return i;
257
+ }
258
+ function isEnvAssignment(word) {
259
+ return !!word && /^[A-Za-z_][A-Za-z0-9_]*=/.test(word);
143
260
  }
144
261
  function gitRevParse(cwd, ...args) {
145
262
  return execFileSync('git', ['rev-parse', ...args], {
@@ -148,6 +265,92 @@ function gitRevParse(cwd, ...args) {
148
265
  stdio: ['ignore', 'pipe', 'ignore'],
149
266
  }).trim();
150
267
  }
268
+ async function reconcileWorktreeSession(input, cwd, sessionId) {
269
+ let store;
270
+ try {
271
+ const stateCwd = resolveSlopeStateCwd(cwd);
272
+ if (!stateCwd)
273
+ return;
274
+ store = await resolveStore(stateCwd);
275
+ const worktreePath = gitRevParse(cwd, '--show-toplevel');
276
+ const branch = safeGitRevParse(cwd, '--abbrev-ref', 'HEAD') ?? 'unknown';
277
+ try {
278
+ await store.updateSession(sessionId, {
279
+ role: 'secondary',
280
+ branch,
281
+ worktree_path: worktreePath,
282
+ });
283
+ }
284
+ catch (err) {
285
+ if (err instanceof SlopeStoreError && err.code === 'NOT_FOUND') {
286
+ await store.registerSession({
287
+ session_id: sessionId,
288
+ role: 'secondary',
289
+ ide: resolveIde(input),
290
+ branch,
291
+ worktree_path: worktreePath,
292
+ });
293
+ }
294
+ else {
295
+ throw err;
296
+ }
297
+ }
298
+ }
299
+ catch {
300
+ // Worktree sessions are already isolated; reconciliation is best-effort.
301
+ }
302
+ finally {
303
+ try {
304
+ store?.close();
305
+ }
306
+ catch { /* ignore */ }
307
+ }
308
+ }
309
+ function resolveSlopeStateCwd(cwd) {
310
+ if (existsSync(join(cwd, '.slope', 'config.json')))
311
+ return cwd;
312
+ for (const worktree of listGitWorktrees(cwd)) {
313
+ if (resolve(worktree) === resolve(cwd))
314
+ continue;
315
+ if (existsSync(join(worktree, '.slope', 'config.json')))
316
+ return worktree;
317
+ }
318
+ return undefined;
319
+ }
320
+ function listGitWorktrees(cwd) {
321
+ try {
322
+ const raw = execFileSync('git', ['worktree', 'list', '--porcelain'], {
323
+ cwd,
324
+ encoding: 'utf8',
325
+ stdio: ['ignore', 'pipe', 'ignore'],
326
+ });
327
+ return raw
328
+ .split('\n')
329
+ .filter(line => line.startsWith('worktree '))
330
+ .map(line => line.slice('worktree '.length).trim())
331
+ .filter(Boolean);
332
+ }
333
+ catch {
334
+ return [];
335
+ }
336
+ }
337
+ function safeGitRevParse(cwd, ...args) {
338
+ try {
339
+ return gitRevParse(cwd, ...args);
340
+ }
341
+ catch {
342
+ return undefined;
343
+ }
344
+ }
345
+ function resolveIde(input) {
346
+ const metadata = input.tool_input ?? {};
347
+ for (const key of ['ide', 'agent', 'harness']) {
348
+ const value = metadata[key];
349
+ if (typeof value === 'string' && value.trim())
350
+ return value.trim();
351
+ }
352
+ return process.env.SLOPE_IDE || 'unknown';
353
+ }
151
354
  function resolveSessionId(input, cwd) {
152
355
  const explicit = typeof input.session_id === 'string' ? input.session_id.trim() : '';
153
356
  if (explicit)