@danmoisan/drm-copilot-mcp 1.0.15 → 1.0.16

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danmoisan/drm-copilot-mcp",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "Stdio MCP server exposing drm-copilot repo-automation tools.",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -77,10 +77,19 @@ chain; the PreToolUse hook `.claude/hooks/enforce-epic-invocation-origin.ps1` de
77
77
 
78
78
  ## Prepared-Epic Execution (epic-planner Handoff)
79
79
 
80
- When the epic was prepared by `epic-planner` (the integration branch already exists and
81
- `docs/features/epics/<epic-slug>/epic-kickoff.md` is present), each child feature folder already
82
- contains its issue, research, `spec.md`, `user-story.md`, an approved atomic plan, and a
83
- recorded preflight clearance. In that case:
80
+ When the epic was prepared by `epic-planner`, the integration branch
81
+ `epic/<epic-slug>-integration` already exists and carries the committed kickoff artifact and
82
+ every prepared child feature folder. Because `epic-plan` commits those outputs to the integration
83
+ branch (worked in a separate integration worktree), do not assume they are present in the invoking
84
+ worktree: establish their presence by fetching and reading from the integration branch rather than
85
+ gating on a local checkout. Run `git fetch origin epic/<epic-slug>-integration`, then read
86
+ `docs/features/epics/<epic-slug>/epic-kickoff.md` from that ref — for example
87
+ `git show origin/epic/<epic-slug>-integration:docs/features/epics/<epic-slug>/epic-kickoff.md`, or
88
+ test existence with
89
+ `git cat-file -e epic/<epic-slug>-integration:docs/features/epics/<epic-slug>/epic-kickoff.md` —
90
+ without checking the integration branch out into the invoking worktree. Once the integration branch
91
+ is fetched, each child feature folder on it already contains its issue, research, `spec.md`,
92
+ `user-story.md`, an approved atomic plan, and a recorded preflight clearance. In that case:
84
93
 
85
94
  1. Do not recreate the integration branch; fetch and reuse it.
86
95
  2. Each child `Agent(orchestrator)` delegation prompt cites the child's committed `plan-path`
@@ -18,10 +18,28 @@ $ARGUMENTS
18
18
 
19
19
  1. Resolve the epic home. A bare slug resolves to `docs/features/epics/<epic-slug>/`; a path
20
20
  argument resolves to its containing epic folder.
21
- 2. Read the committed kickoff artifact at `docs/features/epics/<epic-slug>/epic-kickoff.md`.
22
- - If the file does not exist, STOP without delegating anything and report that the epic has
23
- no committed kickoff artifact: the user must run `/epic-plan` first (or, for an epic that
24
- was authored manually, invoke `/epic-orchestrate <epic-manifest-path>` directly).
21
+ 2. Resolve the committed kickoff artifact `docs/features/epics/<epic-slug>/epic-kickoff.md`. It
22
+ may exist only on the epic integration branch: `epic-plan` commits it to
23
+ `epic/<epic-slug>-integration` (worked in a separate integration worktree), so the worktree
24
+ that invokes `/epic-run` is not guaranteed to have it checked out. Discover it across both
25
+ locations before concluding it is missing:
26
+ - Attempt `git fetch origin epic/<epic-slug>-integration`. A failure because the remote
27
+ branch does not exist is the genuine "epic not planned" case; tolerate it and continue to
28
+ the local check rather than treating the fetch failure as fatal.
29
+ - Treat the artifact as present when EITHER the plain local path exists in the invoking
30
+ worktree, OR it exists on the fetched integration ref, tested with
31
+ `git cat-file -e epic/<epic-slug>-integration:docs/features/epics/<epic-slug>/epic-kickoff.md`
32
+ (equivalently `origin/epic/<epic-slug>-integration:<path>`).
33
+ - When the artifact is present only on the integration ref, read its content with
34
+ `git show <ref>:<path>`. That is sufficient to extract the `## Invocation Prompt` text
35
+ needed to proceed; do NOT check the integration branch out into the invoking worktree — the
36
+ session worktree must never be checked out onto the integration branch (worktree-isolation
37
+ convention).
38
+ - STOP without delegating anything only when the artifact is absent BOTH locally and on the
39
+ fetched integration branch (the branch does not exist, or exists but lacks the file). In
40
+ that case report that the epic has no committed kickoff artifact: the user must run
41
+ `/epic-plan` first (or, for an epic that was authored manually, invoke
42
+ `/epic-orchestrate <epic-manifest-path>` directly).
25
43
  3. Execute the kickoff artifact's `## Invocation Prompt` section as the epic objective, applying
26
44
  the `epic-orchestrate` skill procedure and the `## Prepared-Epic Execution (epic-planner
27
45
  Handoff)` section of `.claude/agents/epic-orchestrator.md`: reuse the existing integration
@@ -2,7 +2,7 @@ default_permissions = ":danger-full-access"
2
2
 
3
3
  [mcp_servers.drm-copilot]
4
4
  command = "npx"
5
- args = ["-y", "@danmoisan/drm-copilot-mcp@1.0.15"]
5
+ args = ["-y", "@danmoisan/drm-copilot-mcp@1.0.16"]
6
6
  required = true
7
7
  enabled_tools = [
8
8
  "collect_commit_context",