@difflab/pi 0.7.0 → 0.7.1-rc.202609290811.4ccd593

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 (80) hide show
  1. package/README.md +23 -41
  2. package/agents/diffpi-copilot.md +2 -2
  3. package/agents/diffpi-orchestrator.md +8 -9
  4. package/agents/diffpi-plan-reviewer.md +25 -0
  5. package/agents/diffpi-planner.md +8 -11
  6. package/agents/diffpi-reviewer.md +6 -7
  7. package/agents/diffpi-tutor.md +2 -2
  8. package/agents/diffpi-worker.md +3 -9
  9. package/dist/cli/plan.d.ts +5 -4
  10. package/dist/cli/plan.d.ts.map +1 -1
  11. package/dist/cli.js +21 -6090
  12. package/dist/commands/dispatch.d.ts +4 -0
  13. package/dist/commands/dispatch.d.ts.map +1 -0
  14. package/dist/commands/index.d.ts +1 -3
  15. package/dist/commands/index.d.ts.map +1 -1
  16. package/dist/commands/plan.d.ts +1 -1
  17. package/dist/commands/plan.d.ts.map +1 -1
  18. package/dist/commands/review.d.ts +1 -1
  19. package/dist/commands/review.d.ts.map +1 -1
  20. package/dist/extensions/index.js +673 -7865
  21. package/dist/index.d.ts +2 -5
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +225 -6229
  24. package/dist/plan/verify.d.ts +15 -0
  25. package/dist/plan/verify.d.ts.map +1 -0
  26. package/dist/setup.d.ts.map +1 -1
  27. package/dist/tools/ci.d.ts +1 -1
  28. package/dist/tools/index.d.ts +2 -4
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +459 -7346
  31. package/dist/tools/plan.d.ts +3 -5
  32. package/dist/tools/plan.d.ts.map +1 -1
  33. package/package.json +2 -2
  34. package/skills/diffpi-setup/SKILL.md +1 -1
  35. package/skills/plan/SKILL.md +13 -9
  36. package/skills/plan/references/design-quality.md +17 -29
  37. package/skills/plan/references/workflows/annotate.md +8 -6
  38. package/skills/plan/references/workflows/finalize.md +13 -6
  39. package/skills/plan/references/workflows/go.md +29 -8
  40. package/skills/plan/references/workflows/help.md +19 -5
  41. package/skills/plan/references/workflows/init.md +26 -4
  42. package/skills/plan/references/workflows/inline-fallback.md +9 -0
  43. package/skills/plan/references/workflows/new.md +25 -6
  44. package/skills/plan/references/workflows/update.md +25 -6
  45. package/skills/plan/references/workflows/validate.md +31 -0
  46. package/skills/review/SKILL.md +15 -7
  47. package/skills/review/references/workflows/address.md +21 -9
  48. package/skills/review/references/workflows/auto.md +23 -16
  49. package/skills/review/references/workflows/complete.md +18 -5
  50. package/skills/review/references/workflows/edit.md +9 -5
  51. package/skills/review/references/workflows/foreground-fallback.md +7 -0
  52. package/skills/review/references/workflows/help.md +17 -29
  53. package/skills/review/references/workflows/merge.md +18 -4
  54. package/skills/review/references/workflows/new.md +15 -13
  55. package/skills/review/references/workflows/open.md +9 -1
  56. package/skills/review/references/workflows/publish.md +18 -6
  57. package/skills/review/references/workflows/status.md +8 -1
  58. package/templates/plan/PLAN.md +18 -11
  59. package/templates/plan/implementation.md +25 -14
  60. package/dist/commands/mode.d.ts +0 -5
  61. package/dist/commands/mode.d.ts.map +0 -1
  62. package/dist/modes.d.ts +0 -60
  63. package/dist/modes.d.ts.map +0 -1
  64. package/dist/plan/index.d.ts +0 -4
  65. package/dist/plan/index.d.ts.map +0 -1
  66. package/dist/plan/markdown.d.ts +0 -9
  67. package/dist/plan/markdown.d.ts.map +0 -1
  68. package/dist/plan/operations.d.ts +0 -43
  69. package/dist/plan/operations.d.ts.map +0 -1
  70. package/dist/plan/reviews.d.ts +0 -28
  71. package/dist/plan/reviews.d.ts.map +0 -1
  72. package/dist/plan/schema.d.ts +0 -249
  73. package/dist/plan/schema.d.ts.map +0 -1
  74. package/dist/plan/store.d.ts +0 -75
  75. package/dist/plan/store.d.ts.map +0 -1
  76. package/dist/plan/types.d.ts +0 -151
  77. package/dist/plan/types.d.ts.map +0 -1
  78. package/dist/tools/modes.d.ts +0 -4
  79. package/dist/tools/modes.d.ts.map +0 -1
  80. package/skills/mode/SKILL.md +0 -38
@@ -1,7 +1,20 @@
1
1
  # complete
2
2
 
3
- 1. Parse an optional PR/MR id or URL, `--local`, and exactly one remote action: `--approve`, `--reject`, or `--abandon`. The skill-owned `close` alias follows this workflow. Skill-owned `--bg` dispatch has already occurred; a background child must not redispatch or ask questions. If a remote action is missing in foreground mode, ask the user with `header: "Action"`; all question headers must be 16 characters or fewer. In background mode, stop with a blocker instead of guessing.
4
- 2. Call `review_context` first with the same target and `local: true` when `--local` is present, otherwise `local: false`.
5
- 3. With `--local`, call `review_complete` with `local: true`. It archives the reply overlay to `.diffpi/reviews/<session-slug>.md`, then deletes the exact persisted tuicr session. This is destructive and prevents its comments from appearing in future tuicr sessions.
6
- 4. Without `--local`, map `--approve`, `--reject`, or `--abandon` to the `review_complete` action `approve`, `reject`, or `abandon`. The tool applies the remote lifecycle action but does not merge.
7
- 5. Report the archive path or remote result. Do not call `review_merge`.
3
+ ## Parse arguments
4
+
5
+ Accept `complete [target] [--local|--approve|--reject|--abandon]`. Fuzzy-match target/backend/action from the request and repository. Prefer explicit arguments/flags, then safe inference, then current-review target; do not invent a remote action. Call `ask_user_question` only for material ambiguity before launch; return a precise blocker if a new decision arises later.
6
+
7
+ ## Steps
8
+
9
+ 1. Call `review_context` first with the selected target/backend/local. For a short, explicitly approved completion with no substantive inspection, call `review_complete` directly using its resolved values: `local:true` archives only the matching local review and removes its tuicr session; a remote review needs an explicit `approve`, `reject`, or `abandon` action. Verify and report the actual result or exact failure. Do not publish pending comments, merge or resolve threads.
10
+ 2. If substantive inspection or judgment is required, when native subagents are available, delegate only that analysis to medium `diffpi-orchestrator` in the background with ambient capabilities. Fill every field in this self-contained prompt with actual values (or `none`), including the exact request; never send raw placeholders:
11
+
12
+ ```text
13
+ Inspect completion readiness without changing review state.
14
+ - Repository: {absolute repo cwd}; exact request: {exact request}.
15
+ - Resolved target: {target}; backend: {backend}; local: {local}; issue URL: {issue URL or none}; approved remote action: {action or none for local}.
16
+ - Call review_context first; reuse its target/backend/local/cwd. Inspect only the matching review/session and report outstanding findings, status and material decisions. Do not switch backend.
17
+ - Return actual completed evidence and a go/no-go recommendation or precise blocker. Do not complete, publish, merge or resolve threads.
18
+ ```
19
+
20
+ 3. If no native subagents are available for step 2, follow [foreground fallback](foreground-fallback.md) before inspection; only after explicit confirmation inspect inline and report actual evidence without claiming an Orchestrator result. Otherwise require the completed result, not a queued job or claim. Resolve material decisions with the user before calling `review_complete` in the initiating thread if approval still applies.
@@ -1,7 +1,11 @@
1
1
  # edit
2
2
 
3
- 1. Parse an optional PR/MR number, URL, or branch target and `--local`. Skill-owned background dispatch has already occurred; a background child follows these steps without redispatch.
4
- 2. Call `review_context` first with the same target and `local: true` when `--local` is present, otherwise `local: false`.
5
- 3. Call `review_edit` with the same target and backend. With `--local`, it opens an existing local tuicr session. Without `--local`, it opens an existing PR/MR in tuicr, including a non-draft PR/MR for continued work on its comments.
6
- 4. If no matching local session or remote PR/MR exists, report the error and direct the user to `new`. Do not create a review, generate findings, publish, complete, or merge.
7
- 5. Report whether tuicr opened in a mux, prepared a Zed task, or returned a command.
3
+ ## Parse arguments
4
+
5
+ Accept `edit [target] [--local]`. Fuzzy-match the existing tuicr or PR/MR session from the request and repository. Prefer explicit arguments/flags, then safe inference, then the current-review target. Select local for an explicit working-tree request. Call `ask_user_question` only for material ambiguity.
6
+
7
+ ## Steps
8
+
9
+ 1. Call `review_context` first with the selected target/backend/local; reuse its target/backend/local/cwd. Reject unsupported selections without switching backend.
10
+ 2. Call `review_edit` with those values to open the existing local session or remote PR/MR in tuicr without generating findings. Keep remote-session draft comments associated with that PR/MR for later promotion at publish.
11
+ 3. Report the opened session, returned launch command or exact missing-session/launch failure. Do not create, publish, complete, merge, resolve or generate findings.
@@ -0,0 +1,7 @@
1
+ # Foreground fallback (review only)
2
+
3
+ Use this policy only when **no native subagents are available** for the required background `diffpi-worker`, `diffpi-reviewer`, or `diffpi-orchestrator` work. This is not a recovery path for a failed launch, child/tool error, unavailable result, authentication failure, failed checks, or a reviewer's BLOCKING findings. Do not substitute a shell process or claim a child launched or completed.
4
+
5
+ After `review_context` resolves the target/backend/local, but **before substantive creation, diff analysis, thread classification, source edits, or lifecycle-readiness inspection**, call `ask_user_question` in the initiating conversation. State that the named background agent is unavailable and that running the work here loses the intended model tier and agent isolation. Offer `Stop and report blocker` (no substantive work; report missing native agents) and `Run inline` (continue in this conversation without the intended model tier or isolation) as options; a custom response must clearly authorize inline work. Do not interpret a previous lifecycle approval or absence of a refusal as consent. If the user declines, the question tool is unavailable, or this is a background child unable to ask, stop and return a precise blocker to the initiating conversation. Never silently continue inline.
6
+
7
+ On explicit confirmation only, the calling agent performs the selected workflow's substantive steps inline, using the same resolved target/backend/local/cwd and the child prompt's constraints, tools, checks, and evidence requirements. For `address`, perform the needed source/test edits directly without inventing Worker results; keep `review_respond(resolve:false)` and user-owned thread resolution. For `publish`, `complete`, or `merge`, inline inspection is read-only; the lifecycle call remains in the initiating conversation only after its existing approval and readiness requirements are satisfied. Report actual inline actions and outcomes as **foreground fallback**, not as a completed child. The ordinary short, explicitly approved lifecycle calls, `status`, `open`, `edit`, and `help` do not need this fallback.
@@ -1,36 +1,24 @@
1
1
  # help
2
2
 
3
- Print the following help text:
3
+ ## Parse arguments
4
4
 
5
- ```text
6
- Workflows for PRs and local review. Use:
5
+ Accept `help` or a request with no recognizable review verb; no positional arguments or flags. Prefer an explicit verb, then safely inferred natural-language intent, then help. Ask only if a material ambiguity prevents routing to a workflow.
7
6
 
8
- Create a review and generate findings:
9
- /review auto [pr-or-branch] [--local] [--bg]
7
+ ## Steps
10
8
 
11
- Create a local review or remote draft PR/MR:
12
- /review new [title] [--intent text] [--base branch] [--local] [--bg]
9
+ 1. Show the complete subcommand list:
13
10
 
14
- Open an existing remote PR/MR in the system browser (never creates one):
15
- /review open [pr-number|pr-url|branch] [--local]
11
+ ```text
12
+ /review new [title] [--intent text] [--base branch] [--local]
13
+ /review auto [target] [--local]
14
+ /review open [target] [--local]
15
+ /review status [target] [--local]
16
+ /review edit [target] [--local]
17
+ /review address [target] [--local]
18
+ /review publish [target] [--local] [--comment|--approve|--request-changes|--close]
19
+ /review complete [target] [--local|--approve|--reject|--abandon]
20
+ /review merge [target]
21
+ /review help
22
+ ```
16
23
 
17
- Show review and worktree lifecycle status:
18
- /review status [pr-number|pr-url|branch] [--local]
19
-
20
- Open an existing review in tuicr without generating findings:
21
- /review edit [pr-number|pr-url|branch] [--local] [--bg]
22
-
23
- Address review comments:
24
- /review address [pr-number|pr-url|branch] [--local] [--bg]
25
-
26
- Publish comments and a review status:
27
- /review publish [pr-number|pr-url|branch] [--local] [--comment|--approve|--request-changes|--close] [--bg]
28
-
29
- Complete a review without merging:
30
- /review complete [pr-number|pr-url|branch] [--local|--approve|--reject|--abandon] [--bg]
31
-
32
- Merge an approved remote review:
33
- /review merge [pr-number|pr-url|branch] [--bg]
34
- ```
35
-
36
- `--local` selects the working-tree tuicr backend. Otherwise, a target is a PR/MR number, URL, or branch; no target means the current branch. `--bg` launches a tracked background Orchestrator and leaves the current chat mode unchanged. `new` creates a review. `open` opens an existing remote URL in the system browser, or directs to `new`; with `--local` it creates/opens the local working-tree review. `status` reports local and remote state without requiring a forge or tuicr binary. `edit` only opens an existing local session or remote PR/MR in tuicr. `auto` creates a review, then delegates findings to the reviewer agent. `create` and `draft` alias `new`; `launch` aliases `auto`; `close` aliases `complete`. `publish` publishes remote draft PR/MR review comments and status or promotes local comments. `complete` makes a lifecycle decision without merging, or archives the local overlay and deletes its tuicr session.
24
+ 2. Show aliases: `create`/`draft` → `new`, `launch` → `auto`, `ready` → `publish`, `close` → `complete`, `land` → `merge`.
@@ -1,6 +1,20 @@
1
1
  # merge
2
2
 
3
- 1. Parse an optional PR number, URL, or branch. This workflow is remote-only; reject `--local`. The skill has already handled `--bg`; a background child must not redispatch. Call `review_context` first with the target and `local: false`. Do not query the forge through MCP or duplicate merge-readiness checks: `review_merge` uses the GitHub CLI to confirm the PR is open, non-draft, clean, and its checks are settled before merging. Do not require approval from the current user; authors cannot approve their own PRs. GitHub branch protection remains authoritative.
4
- 2. If a conventional squash subject is required and the subject is unclear, use `ask_user_question`.
5
- 3. Call `review_merge` with the chosen subject. Treat its CLI-backed readiness result as authoritative.
6
- 4. Report the merge result.
3
+ ## Parse arguments
4
+
5
+ Accept `merge [target]` and an optional conventional squash subject in the request. Fuzzy-match GitHub PR target from the request and repository. Prefer explicit target/subject, then safe inference, then current PR. Reject `--local`; do not infer it. Call `ask_user_question` only for material target or subject ambiguity before launch; return a precise blocker if a new decision arises later.
6
+
7
+ ## Steps
8
+
9
+ 1. Call `review_context` first with `local:false` and the selected target. Reject non-GitHub or local reviews without switching backend. For a short, explicitly approved merge requiring no substantive analysis, call `review_merge` directly with its resolved target and conventional squash subject if needed. The tool rechecks open, ready, clean PR status and settled CI; branch protection is authoritative, and current-user approval is not required unless protection requires it. Report the actual merge or exact readiness/CI/subject failure. Do not publish or complete in its place.
10
+ 2. If merge-readiness requires substantive inspection or judgment beyond the tool's checks, when native subagents are available, delegate only that analysis to medium `diffpi-orchestrator` in the background with ambient capabilities. Fill every field in this self-contained prompt with actual values (or `none`), including the exact request; never send raw placeholders:
11
+
12
+ ```text
13
+ Inspect GitHub PR merge readiness without merging.
14
+ - Repository: {absolute repo cwd}; exact request: {exact request}.
15
+ - Resolved target: {target}; backend: remote GitHub; local: false; issue URL: {issue URL or none}; proposed conventional squash subject: {subject or none}.
16
+ - Call review_context first with local:false; reuse its target/backend/cwd. Inspect PR readiness, subject and settled CI using review_status and available checks. Treat branch protection as authoritative; do not demand current-user approval unless protection requires it.
17
+ - Return completed evidence and a go/no-go recommendation or precise blocker. Do not merge, publish, complete or resolve threads.
18
+ ```
19
+
20
+ 3. If no native subagents are available for step 2, follow [foreground fallback](foreground-fallback.md) before inspection; only after explicit confirmation inspect inline and report actual evidence without claiming an Orchestrator result. Otherwise require the completed result, not a queued job or claim. Resolve material decisions with the user, then call `review_merge` in the initiating thread only if approval still applies. Report the actual result.
@@ -1,19 +1,21 @@
1
1
  # new
2
2
 
3
- ## Arguments
3
+ ## Parse arguments
4
4
 
5
- ```text
6
- /review new [title] [--intent text] [--base branch] [--local] [--bg]
7
- ```
5
+ Accept `new [title] [--intent text] [--base branch] [--local]` and a target named in the request. Fuzzy-match draft intent. Prefer explicit arguments/flags, then safe natural-language or repository title/intent/target/base/backend, then available defaults. Select local for an explicit working-tree request. Call `ask_user_question` only for material ambiguity before launch; return a precise blocker if a new decision arises later.
8
6
 
9
- - `title` is the optional first positional argument; quote a title containing spaces.
10
- - `--intent` and `--base` each consume the following value. `--local` is a boolean backend flag; the skill handles `--bg` before this workflow.
11
- - Flags may appear in any order. Reject unknown or duplicate flags, missing flag values, and extra positional arguments. Stating this grammar before the procedure is intentional: an explicit argument contract is the best practice for making workflow behavior predictable and preventing ambiguous execution.
7
+ ## Steps
12
8
 
13
- ## Workflow
9
+ 1. Resolve the concrete target/backend/local and base with `review_context`. Substitute actual values for every placeholder, including the exact request and issue URL if applicable; never send raw `{placeholders}`. When native subagents are available, launch a lightweight/low `diffpi-worker` background subagent for this bounded draft-creation task. Pass the following self-contained prompt with ambient capabilities:
14
10
 
15
- 1. Parse the arguments using the grammar above after skill-owned background dispatch. A background child follows these steps directly and must not redispatch. A remote target is the current branch; `new` creates a new review rather than opening an existing one.
16
- 2. Call `review_context` first with `local: true` when `--local` is present, otherwise `local: false`.
17
- 3. Call `review_new` with the parsed title, intent, base branch, and the same explicit backend selection (`local: true` for `--local`, otherwise `local: false`). With `--local`, it creates and opens a local tuicr working-tree review. Without `--local`, it requires a clean, pushed branch, creates a draft PR/MR, and opens that PR/MR in tuicr.
18
- 4. If a local session or remote PR/MR already exists, direct the user to `edit` instead.
19
- 5. Report the PR/MR URL and whether tuicr opened in a mux, prepared a Zed task, or returned a command. Do not generate findings, publish, complete, or merge.
11
+ ```text
12
+ Create a review draft.
13
+ - Repository: {absolute repo cwd}; exact request: {exact request}.
14
+ - Resolved target: {target}; backend: {backend}; local: {local}; title: {title}; intent: {intent}; base: {base}; issue URL: {issue URL or none}; approved policy: {policy}.
15
+ - This explicitly assigned review-draft creation is the only review lifecycle mutation authorized here. Call review_context first. Reuse its target/backend/local/cwd for all subsequent calls; never switch backend silently.
16
+ - Reject unsupported forge, dirty remote branch or unavailable local base/default with exact evidence.
17
+ - Call review_new to create the local tuicr review or remote draft PR/MR. Call review_launch_ui only if needed; report a returned launch command if automatic launch fails.
18
+ - Verify and report the actual created target and draft state or exact failure. Do not stage findings, publish, complete or merge.
19
+ ```
20
+
21
+ 2. If no native subagents are available, follow [foreground fallback](foreground-fallback.md) before creation. Only after explicit confirmation, perform the draft-creation steps above inline and verify with `review_status`; do not claim a Worker result. Otherwise require the completed child result and verify the created target/draft with `review_status`. Stop on failure; report the actual result, not merely a queued ID or claim. Do not assign the Worker publication, merge, findings judgment or substantive inspection.
@@ -1,3 +1,11 @@
1
1
  # open
2
2
 
3
- Call `review_context` first. Without `--local`, call `review_open` to resolve an existing PR/MR and open its URL in the system browser. It must never create a PR/MR; if none exists, direct the user to `/review new`. If browser launch fails, show the plain URL. With `--local`, call `review_new` with `local=true` to preserve local working-tree behavior.
3
+ ## Parse arguments
4
+
5
+ Accept `open [target] [--local]`. Fuzzy-match the existing PR/MR or tuicr session from the request and repository. Prefer explicit arguments/flags, then safe inference, then the current-review target. Select local for an explicit working-tree request. Call `ask_user_question` only for material ambiguity.
6
+
7
+ ## Steps
8
+
9
+ 1. Call `review_context` first with the selected target/backend/local; reuse its target/backend/local/cwd. Reject unsupported selections without switching backend.
10
+ 2. Call `review_open` for an existing remote PR/MR in the browser. For `--local`, call `review_edit` to open only the matching existing tuicr session.
11
+ 3. Report the opened target or exact missing-session/browser/launch failure. Do not create a review, generate findings or mutate review state.
@@ -1,8 +1,20 @@
1
1
  # publish
2
2
 
3
- 1. Parse an optional PR/MR id or URL, `--local`, and one status: `--comment`, `--approve`, `--request-changes`, or `--close`. The default is comment. The skill has already handled `--bg`; a background child follows these steps without redispatch.
4
- 2. Call `review_context` first with the target and `local: true` so the exact tuicr PR session can be inspected. If no matching local session exists, continue with `local: false` only for forge-native pending review work. If that session exists and has drafts, publish through the local promotion path even when the user omitted `--local`. Use `local: false` only when no matching tuicr session exists or when the target has forge-native pending review work.
5
- 3. The local promotion path reads the exact tuicr session. A local line comment on the same file and line as an existing remote thread is treated as a response, not a new comment. A leading `[REOPEN]`, `[RESOLVE]`, or `[DELETE]` changes the thread state; the marker is removed from the response body. `[DELETE]` deletes the matched remote thread when the forge supports it. Other unpublished line comments become new review comments. The tool follows the stored local overlay path, posts unpublished replies to their remote threads, and then publishes the selected status. Question replies remain open. The tool does not post an overall review comment.
6
- 4. For a forge-native review without a matching tuicr session, call `review_publish` without `local`. Existing pending forge comments already contain provenance, so the tool only publishes them with the selected status and no overall comment.
7
- 5. Comment, approve, and request-changes mark a draft PR/MR ready before publication. Close publishes pending work as comment status and then closes the PR/MR. GitLab rejects request-changes because it has no equivalent review state.
8
- 6. Report promoted comment and reply counts, the public status, and the final PR/MR state. Publishing never merges. If a response cannot be matched by file and line, report it as a new comment rather than silently attaching it to the wrong thread.
3
+ ## Parse arguments
4
+
5
+ Accept `publish [target] [--local] [--comment|--approve|--request-changes|--close]`. Fuzzy-match target/backend/status from the request and repository. Prefer explicit arguments/flags, then safe inference, then current-review target and comment status. Call `ask_user_question` only for material ambiguity before launch; return a precise blocker if a new decision arises later.
6
+
7
+ ## Steps
8
+
9
+ 1. Call `review_context` first with the selected target/backend/local. For a short, explicitly approved publication with no substantive inspection, call `review_publish` directly using its resolved values and selected status (`COMMENT` by default, `APPROVE`, `REQUEST_CHANGES`, or `CLOSE`). Remote findings and replies stay pending until this call. Promote only drafts matching the remote PR/MR; preserve `local:true` for a working-tree session. Report unmatched promotion, GitLab request-changes rejection, and exact failures; verify the final status. Do not merge or resolve threads.
10
+ 2. If the request instead needs substantive inspection or judgment before publication, when native subagents are available, delegate only that analysis to medium `diffpi-orchestrator` in the background with ambient capabilities. Fill every field in this self-contained prompt with actual values (or `none`), including the exact request; never send raw placeholders:
11
+
12
+ ```text
13
+ Inspect publication readiness without publishing.
14
+ - Repository: {absolute repo cwd}; exact request: {exact request}.
15
+ - Resolved target: {target}; backend: {backend}; local: {local}; selected status: {status}; issue URL: {issue URL or none}; approved policy: {policy}.
16
+ - Call review_context first; reuse its target/backend/local/cwd. Inspect the matching session and pending findings/replies; identify unmatched drafts, failed checks and material decisions. Do not silently switch backends.
17
+ - Return actual completed evidence and a go/no-go recommendation or precise blocker. Do not publish, complete, merge or resolve threads.
18
+ ```
19
+
20
+ 3. If no native subagents are available for step 2, follow [foreground fallback](foreground-fallback.md) before inspection; only after explicit confirmation inspect inline and report actual evidence without claiming an Orchestrator result. Otherwise require the completed inspection result, not a queued job or claim. Resolve material decisions with the user, then call `review_publish` in the initiating thread only if approval still applies. Report the actual published or blocked outcome.
@@ -1,3 +1,10 @@
1
1
  # status
2
2
 
3
- Call `review_context` first, then `review_status` with the same target and local setting. Report branch, worktree counts, local and remote review state, URLs, and remote tuicr state. Status must remain useful when no forge or tuicr binary is installed.
3
+ ## Parse arguments
4
+
5
+ Accept `status [target] [--local]`. Fuzzy-match the status target/backend from the request and repository. Prefer explicit arguments/flags, then safe inference, then the current-review target. Select local for an explicit working-tree request. Call `ask_user_question` only for material ambiguity.
6
+
7
+ ## Steps
8
+
9
+ 1. Call `review_context` first with the selected target/backend/local; reuse its target/backend/local/cwd. Reject unsupported selections without switching backend.
10
+ 2. Call `review_status` with those same values. Report branch, worktree, local or remote review, URLs, tuicr session, pending/draft state and exact errors. Do not create a review or mutate source, comments or lifecycle state.
@@ -1,13 +1,10 @@
1
- <!-- diffpi-plan: {"schemaVersion":1,"id":"{{id}}","revision":0,"branch":"{{branch}}","issueId":"{{issue_id}}","issueUrl":"{{issue_url}}","status":"draft","createdAt":"{{created_at}}","updatedAt":"{{updated_at}}"} -->
2
-
3
1
  # {{title}}
4
2
 
5
3
  - **Plan ID:** {{id}}
6
4
  - **Branch:** {{branch}}
5
+ - **Status:** draft
7
6
  - **Issue:** {{issue_id}}
8
7
  - **Issue URL:** {{issue_url}}
9
- - **Status:** draft
10
- - **Revision:** 0
11
8
 
12
9
  ## Intent
13
10
 
@@ -15,26 +12,36 @@
15
12
 
16
13
  ## Requirements
17
14
 
18
- <!-- Add requirements. -->
15
+ <!-- Add concrete requirements. -->
19
16
 
20
17
  ## Design
21
18
 
22
19
  ### Big Ideas
23
20
 
24
- <!-- Describe the main approach. -->
21
+ <!-- Describe the outcome-oriented design. -->
25
22
 
26
23
  ### Key API Addition/Updates
27
24
 
28
- <!-- Describe public API changes. -->
25
+ <!-- Describe public or internal contract changes. -->
29
26
 
30
27
  ### Consequences
31
28
 
32
- <!-- Describe trade-offs and limitations. -->
29
+ <!-- Describe before/after behavior, risks, and trade-offs. -->
30
+
31
+ ## Phases
32
+
33
+ <!-- Use numbered phases. State prerequisites on the phase only; do not add task dependencies here. -->
34
+
35
+ ### Phase 1: <!-- phase title -->
33
36
 
34
- ## Implementation
37
+ - **Phase ID:** <!-- assign a stable phase ID -->
38
+ - **Prerequisites:** <!-- list phase IDs, or “None” -->
39
+ - **Objective:** <!-- state the outcome -->
40
+ - **Constraints:** <!-- phase guardrails or None; do not repeat them in briefs -->
35
41
 
36
- <!-- Add phases with one complete plan_apply_revision request. -->
42
+ - [ ] <!-- assign a stable task ID --> Task title
43
+ - [ ] <!-- assign a stable task ID --> Another task title
37
44
 
38
45
  ## References
39
46
 
40
- <!-- Add references. -->
47
+ <!-- Add repository or external references. Record one completed Plan Reviewer round per authoring cycle: reviewed file hashes, Git state, verdict and findings; each finding's disposition; post-fix structural verification and current snapshot. A repaired BLOCKING verdict is not a reviewer PASS. Keep DRAFT until explicit finalize/go. -->
@@ -1,30 +1,41 @@
1
- <!-- diffpi-implementation: {"schemaVersion":1,"planRevision":{{plan_revision}},"ordinal":{{phase_ordinal}},"phaseId":"{{phase_id}}"} -->
2
-
3
1
  # Phase {{phase_ordinal}}: {{phase_title}}
4
2
 
5
3
  - **Phase ID:** {{phase_id}}
6
- - **Plan Revision:** {{plan_revision}}
7
-
8
- ## Summary
9
-
10
- {{phase_summary}}
4
+ - **Prerequisites:** {{phase_prerequisites}}
11
5
 
12
6
  ## Objective
13
7
 
14
8
  {{phase_objective}}
15
9
 
16
- ## Tasks
10
+ ## Files Affected
17
11
 
18
- {{phase_tasks}}
12
+ <!-- This is the sole file scope for this phase. Use one fenced text tree; label each file leaf [ADD], [MODIFY], [REMOVE], [MOVE from: path], or [VERIFY]. Do not repeat file scopes in tasks or PLAN.md. -->
19
13
 
20
- ## API Changes
14
+ ```text
15
+ Phase {{phase_ordinal}}/
16
+ ├── [MODIFY] <!-- exact/path/to/implementation-file -->
17
+ └── [VERIFY] <!-- exact/path/to/test-or-check -->
18
+ {{phase_files_affected}}
19
+ ```
21
20
 
22
- {{phase_api}}
21
+ ## Tasks
22
+
23
+ <!-- Keep tasks flat and in phase order. Repeat this shape for each task. -->
23
24
 
24
- ## Libraries and Algorithms
25
+ ### 1. <!-- task title -->
25
26
 
26
- {{phase_libraries}}
27
+ - **Task ID:** <!-- stable task ID -->
28
+ - **Steps:**
29
+ 1. <!-- ordered implementation action -->
30
+ 2. <!-- ordered implementation action -->
31
+ - **Verify:**
32
+ - <!-- command or inspection that proves this task -->
33
+ - **Acceptance:** <!-- observable result -->
34
+
35
+ {{phase_tasks}}
27
36
 
28
37
  ## Implementation Constraints
29
38
 
30
- {{phase_constraints}}
39
+ <!-- Free-form implementation details, not a restatement of PLAN.md phase constraints. Add only useful optional headings: Required Libraries & Technology Choices, Key Algorithm Specifications, Core Invariants. Refer to the PLAN.md phase ID instead of repeating a phase guardrail. -->
40
+
41
+ {{phase_implementation_constraints}}
@@ -1,5 +0,0 @@
1
- import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
- import type { ModeController } from '../modes';
3
- /** Register the inline agent mode command. */
4
- export declare function registerModeCommand(pi: ExtensionAPI, modes: ModeController): void;
5
- //# sourceMappingURL=mode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/commands/mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/C,8CAA8C;AAC9C,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAKjF"}
package/dist/modes.d.ts DELETED
@@ -1,60 +0,0 @@
1
- import { type ExtensionAPI, type ExtensionContext } from '@earendil-works/pi-coding-agent';
2
- export type ModePromptStrategy = 'append' | 'replace';
3
- export type ModeThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
4
- export interface AgentMode {
5
- id: string;
6
- label: string;
7
- description: string;
8
- systemPrompt: string;
9
- promptStrategy: ModePromptStrategy;
10
- modelPreferences: string[];
11
- thinkingLevel?: ModeThinkingLevel;
12
- tools: string[];
13
- source: string;
14
- sourcePath: string;
15
- }
16
- export interface ModeCatalog {
17
- modes: AgentMode[];
18
- diagnostics: string[];
19
- }
20
- export interface ModeListOptions {
21
- includeSkills?: boolean;
22
- }
23
- export interface ModeController {
24
- list(ctx: ExtensionContext, options?: ModeListOptions): Promise<ModeCatalog>;
25
- set(agent: string, ctx: ExtensionContext): Promise<ModeSelectionResult>;
26
- unset(ctx: ExtensionContext): Promise<ModeSelectionResult>;
27
- restore(ctx: ExtensionContext): Promise<void>;
28
- refresh(ctx: ExtensionContext): void;
29
- apply(systemPrompt: string): string;
30
- getActive(): AgentMode | undefined;
31
- }
32
- export type ModeSelectionResult = {
33
- ok: true;
34
- active?: AgentMode;
35
- message: string;
36
- } | {
37
- ok: false;
38
- message: string;
39
- };
40
- export interface ModeDiscoveryOptions extends ModeListOptions {
41
- cwd: string;
42
- agentDir?: string;
43
- bundledAgentsDir?: string;
44
- homeDir?: string;
45
- projectTrusted: boolean;
46
- }
47
- export interface ModeControllerOptions {
48
- agentDir?: string;
49
- bundledAgentsDir?: string;
50
- homeDir?: string;
51
- }
52
- type ModeRuntime = Pick<ExtensionAPI, 'appendEntry' | 'getActiveTools' | 'getAllTools' | 'getThinkingLevel' | 'setActiveTools' | 'setModel' | 'setThinkingLevel'>;
53
- /** Discover standard agents and, when requested, qualified skill agents. */
54
- export declare function discoverAgentModes(options: ModeDiscoveryOptions): Promise<ModeCatalog>;
55
- /** Resolve an agent id without guessing an unqualified skill-agent name. */
56
- export declare function resolveAgentMode(modes: readonly AgentMode[], requested: string): ModeSelectionResult;
57
- /** Create the session-scoped controller that applies and restores complete mode profiles. */
58
- export declare function createModeController(pi: ModeRuntime, options?: ModeControllerOptions): ModeController;
59
- export {};
60
- //# sourceMappingURL=modes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../src/modes.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export type { PlanCiRetry, PlanCiUpdate, PlanStatusUpdate, PlanStatusUpdateResult } from './operations';
2
- export { createPlanStore, type InitPlanInput, type NewPlanLogEntry, type PlanResolution, type PlanStore, type PlanStoreOptions, type ResolvePlanFilters, } from './store';
3
- export type * from './types';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plan/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACxG,OAAO,EACL,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AACjB,mBAAmB,SAAS,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { PlanDocument, PlanImplementationBrief, PlanPhase, PlanRecord, PlanValidationIssue, PlanValidationOptions } from './types';
2
- export declare function countDesignWords(plan: PlanDocument): number;
3
- export declare function validatePlanDocument(plan: PlanDocument, options?: PlanValidationOptions): PlanValidationIssue[];
4
- export declare function validatePlanBriefs(plan: PlanDocument, briefs: readonly PlanImplementationBrief[]): PlanValidationIssue[];
5
- export declare function validatePlanRecord(record: PlanRecord, options?: PlanValidationOptions): Promise<PlanValidationIssue[]>;
6
- export declare function renderImplementationBrief(planRevision: number, ordinal: number, phase: PlanPhase, brief: PlanImplementationBrief): string;
7
- export declare function renderPlanDocument(plan: PlanDocument, previousSource?: string): string;
8
- export declare function parsePlanDocument(source: string, ref?: string): PlanDocument;
9
- //# sourceMappingURL=markdown.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/plan/markdown.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACvB,SAAS,EACT,UAAU,EAGV,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAgDjB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAM3D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,GAAE,qBAA0B,GAAG,mBAAmB,EAAE,CAuDnH;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,SAAS,uBAAuB,EAAE,GACzC,mBAAmB,EAAE,CAqDvB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMhC;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,uBAAuB,GAC7B,MAAM,CAsDR;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAgEtF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAY,GAAG,YAAY,CA6B/E"}
@@ -1,43 +0,0 @@
1
- import type { SubagentEscalation } from '../extensions/subagentx';
2
- import type { PlanStore } from './store';
3
- import type { PlanCiStatus, PlanCommit, PlanDocument, PlanPhaseStatus, PlanRecord, PlanStatus } from './types';
4
- export interface PlanStatusUpdate {
5
- target: {
6
- type: 'plan' | 'phase' | 'task';
7
- id?: string;
8
- };
9
- expectedStatus: PlanStatus | PlanPhaseStatus;
10
- status: PlanStatus | PlanPhaseStatus;
11
- actor: string;
12
- message: string;
13
- executionId?: string;
14
- evidence?: string[];
15
- blockedReason?: string;
16
- attempts?: string[];
17
- needsUserDecision?: boolean;
18
- commit?: PlanCommit;
19
- }
20
- export interface PlanStatusUpdateResult {
21
- record: PlanRecord;
22
- escalation?: SubagentEscalation;
23
- }
24
- export interface PlanCiUpdate {
25
- phaseId: string;
26
- sha: string;
27
- status: Exclude<PlanCiStatus, 'pending'>;
28
- actor: string;
29
- executionId: string;
30
- detail: string;
31
- }
32
- export interface PlanCiRetry {
33
- phaseId: string;
34
- sha: string;
35
- actor: string;
36
- executionId: string;
37
- reason: string;
38
- }
39
- export declare function updatePlanStatus(store: PlanStore, cwd: string, query: string, input: PlanStatusUpdate): Promise<PlanStatusUpdateResult>;
40
- export declare function updatePlanCi(store: PlanStore, cwd: string, query: string, input: PlanCiUpdate): Promise<PlanRecord>;
41
- export declare function retryPlanCi(store: PlanStore, cwd: string, query: string, input: PlanCiRetry): Promise<PlanRecord>;
42
- export declare function assertPhasePushEligible(plan: PlanDocument, phaseId: string, executionId: string): void;
43
- //# sourceMappingURL=operations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/plan/operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAEV,YAAY,EACZ,UAAU,EACV,YAAY,EAEZ,eAAe,EACf,UAAU,EACV,UAAU,EAGX,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,cAAc,EAAE,UAAU,GAAG,eAAe,CAAC;IAC7C,MAAM,EAAE,UAAU,GAAG,eAAe,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,sBAAsB,CAAC,CAkIjC;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,UAAU,CAAC,CAwCrB;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC,CAoCrB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAiBtG"}
@@ -1,28 +0,0 @@
1
- import type { PlanRecord } from './types';
2
- interface PlanReviewDump {
3
- schemaVersion: 1;
4
- planId: string;
5
- planRevision: number;
6
- source: 'tuicr';
7
- sourceId: string;
8
- planSource: string;
9
- content: string;
10
- }
11
- interface PlanReview {
12
- path: string;
13
- dump: PlanReviewDump;
14
- }
15
- interface PlanReviewRuntime {
16
- execute?: (command: string, args: string[], cwd: string, interactive: boolean) => Promise<{
17
- code: number;
18
- stdout: string;
19
- stderr: string;
20
- }>;
21
- }
22
- export declare function createPlanReview(record: PlanRecord, runtime?: PlanReviewRuntime): Promise<{
23
- code: number;
24
- review: PlanReview;
25
- }>;
26
- export declare function readPlanReview(record: PlanRecord): Promise<PlanReview | undefined>;
27
- export {};
28
- //# sourceMappingURL=reviews.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reviews.d.ts","sourceRoot":"","sources":["../../src/plan/reviews.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,UAAU,cAAc;IACtB,aAAa,EAAE,CAAC,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,KACjB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAID,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC,CA4B/C;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAiBxF"}