@difflab/pi 0.7.2 → 0.8.0-rc.202610020810.d27e7fc

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 (81) hide show
  1. package/README.md +11 -11
  2. package/agents/diffpi-orchestrator.md +1 -1
  3. package/agents/diffpi-planner.md +2 -2
  4. package/agents/diffpi-reviewer.md +2 -2
  5. package/agents/diffpi-worker.md +6 -6
  6. package/dist/commands/dispatch.d.ts +1 -1
  7. package/dist/commands/dispatch.d.ts.map +1 -1
  8. package/dist/commands/plan.d.ts +1 -1
  9. package/dist/commands/plan.d.ts.map +1 -1
  10. package/dist/commands/review.d.ts +1 -1
  11. package/dist/commands/review.d.ts.map +1 -1
  12. package/dist/doctor.d.ts +9 -0
  13. package/dist/doctor.d.ts.map +1 -0
  14. package/dist/environment.d.ts +0 -1
  15. package/dist/environment.d.ts.map +1 -1
  16. package/dist/extensions/index.js +1830 -2899
  17. package/dist/index.d.ts +5 -9
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +140 -759
  20. package/dist/log.d.ts +6 -11
  21. package/dist/log.d.ts.map +1 -1
  22. package/dist/plan/verify.d.ts.map +1 -1
  23. package/dist/review/index.d.ts +2 -3
  24. package/dist/review/index.d.ts.map +1 -1
  25. package/dist/review/review-backend.d.ts +2 -3
  26. package/dist/review/review-backend.d.ts.map +1 -1
  27. package/dist/setup.d.ts +0 -2
  28. package/dist/setup.d.ts.map +1 -1
  29. package/dist/tools/ci.d.ts +1 -1
  30. package/dist/tools/doctor.d.ts +3 -0
  31. package/dist/tools/doctor.d.ts.map +1 -0
  32. package/dist/tools/index.d.ts +1 -0
  33. package/dist/tools/index.d.ts.map +1 -1
  34. package/dist/tools/index.js +1824 -2892
  35. package/dist/tools/log.d.ts.map +1 -1
  36. package/dist/tools/review.d.ts +1 -7
  37. package/dist/tools/review.d.ts.map +1 -1
  38. package/dist/tools/setup.d.ts.map +1 -1
  39. package/package.json +1 -5
  40. package/skills/diffpi-doctor/SKILL.md +10 -0
  41. package/skills/diffpi-setup/SKILL.md +3 -3
  42. package/skills/plan/SKILL.md +4 -5
  43. package/skills/plan/references/design-quality.md +1 -1
  44. package/skills/plan/references/workflows/finalize.md +2 -2
  45. package/skills/plan/references/workflows/go.md +7 -5
  46. package/skills/plan/references/workflows/help.md +1 -2
  47. package/skills/plan/references/workflows/init.md +2 -2
  48. package/skills/plan/references/workflows/inline-fallback.md +3 -3
  49. package/skills/plan/references/workflows/new.md +3 -3
  50. package/skills/plan/references/workflows/update.md +6 -4
  51. package/skills/plan/references/workflows/validate.md +5 -5
  52. package/skills/review/SKILL.md +6 -6
  53. package/skills/review/references/review-standards.md +9 -1
  54. package/skills/review/references/workflows/address.md +9 -15
  55. package/skills/review/references/workflows/auto.md +9 -17
  56. package/skills/review/references/workflows/complete.md +2 -2
  57. package/skills/review/references/workflows/edit.md +7 -5
  58. package/skills/review/references/workflows/help.md +12 -20
  59. package/skills/review/references/workflows/new.md +14 -13
  60. package/skills/review/references/workflows/publish.md +2 -2
  61. package/skills/review/references/workflows/status.md +1 -1
  62. package/skills/review/templates/REVIEW.md +39 -0
  63. package/templates/plan/PLAN.md +9 -1
  64. package/templates/review/draft-pr.md +3 -9
  65. package/dist/cli/plan.d.ts +0 -17
  66. package/dist/cli/plan.d.ts.map +0 -1
  67. package/dist/cli.d.ts +0 -4
  68. package/dist/cli.d.ts.map +0 -1
  69. package/dist/cli.js +0 -2258
  70. package/dist/extensions/tuicrx.d.ts +0 -66
  71. package/dist/extensions/tuicrx.d.ts.map +0 -1
  72. package/dist/extensions/zedx.d.ts +0 -18
  73. package/dist/extensions/zedx.d.ts.map +0 -1
  74. package/dist/review/local-review-backend.d.ts +0 -3
  75. package/dist/review/local-review-backend.d.ts.map +0 -1
  76. package/dist/review/local-reviews.d.ts +0 -31
  77. package/dist/review/local-reviews.d.ts.map +0 -1
  78. package/dist/review/review-markdown.d.ts +0 -6
  79. package/dist/review/review-markdown.d.ts.map +0 -1
  80. package/skills/plan/references/workflows/annotate.md +0 -13
  81. package/skills/review/references/workflows/open.md +0 -11
package/README.md CHANGED
@@ -10,44 +10,44 @@ pi install npm:@difflab/pi
10
10
 
11
11
  Run `/skill:diffpi-setup` to validate or configure the environment. Setup asks before making changes and reloads Pi when needed. It installs upstream Grounded Docs, Simple English, and Context Mode skills and package-managed agent profiles for the subagent plugin. The package manifest loads every bundled skill and registers `plan_verify`, `review_*`, setup, reload, logging, template, and CI tools without selecting an inline role. Installed package resources and a host's actually callable tools are different facts; if the host withholds `Agent`, `get_subagent_result`, or `plan_verify`, report that exact missing capability. Diffpi does not implement an external Cursor SDK bridge.
12
12
 
13
+ If an update leaves copied global agent profiles stale, run `/skill:diffpi-doctor`. It checks the installed package's agents, then uses `diffpi_doctor` to back up and update only changed `diffpi-*.md` profiles. It does not rerun setup or install anything. Reload affected Pi sessions; an existing inline prompt may require a new conversation. Package skills themselves load from the installed package, not copied global files.
14
+
13
15
  ## Planning
14
16
 
15
- `/plan` forwards to the bundled plan skill. Plans are live `PLAN.md` files plus numbered briefs in `.diffpi/plan/<YYMMDD[-ticket]-short-slug>/`. The old managed plan engine is not shipped; historical files stay on disk.
17
+ `/plan` forwards to the bundled `/skill:diffpi-plan`, not an unrelated global `plan` skill. Plans are live `PLAN.md` files plus numbered briefs in `.diffpi/plan/<YYMMDD[-ticket]-short-slug>/`. The old managed plan engine is not shipped; historical files stay on disk.
16
18
 
17
19
  ```text
18
20
  /plan init <short-slug> [--branch name]
19
21
  /plan new <short-slug> [prompt...]
20
22
  /plan update [short-slug] [instructions...]
21
- diffpi plan annotate .diffpi/plan/<YYMMDD-short-slug>/PLAN.md
22
23
  /plan finalize [short-slug]
23
24
  /plan go <short-slug> [--mode <no-commit|commit|push>]
24
25
  /plan help
25
26
  ```
26
27
 
27
- Substantive verbs launch an attached background Planner or Orchestrator by default and return a job ID and completed result to the initiating conversation. Children may delegate further independent tasks with ambient tools, skills, and extensions; there is no one-child limit. The main thread handles help, user decisions, and optional human plan annotation. A detached process is not an attached background agent. Background agents cannot ask users questions; an unforeseen decision blocks the job.
28
+ Substantive verbs launch an attached background Planner or Orchestrator by default and return a job ID and completed result to the initiating conversation. Children may delegate further independent tasks with ambient tools, skills, and extensions; there is no one-child limit. The main thread handles help and user decisions. A detached process is not an attached background agent. Background agents cannot ask users questions; an unforeseen decision blocks the job.
28
29
 
29
- `init` leaves an incomplete DRAFT. Each `new` or user-initiated `update` cycle writes files incrementally, runs read-only `plan_verify`, and invokes **one** independent Plan Reviewer over the complete snapshot. Before and after review, compare file hashes and Git state; a reviewer mutation invalidates the round. The reviewer is instructed not to mutate but has full ambient tools, not a sandbox. Planner documents each finding and its disposition, repairs, rereads changed files, and reruns only structural verification; it does not automatically review fixes again. The original BLOCKING verdict remains BLOCKING. DRAFT changes to READY only on explicit `finalize` or `go` after current verification and every blocking disposition is documented. Repaired text has not received a second reviewer PASS.
30
+ `init` leaves an incomplete DRAFT. `new` and `update` write plan files without automatic validation. Before an update changes content, the Planner records feedback and archives the full plan and briefs beside `PLAN.md` under `revisions/`. Explicit `validate` checks structure and obtains one independent Plan Reviewer result per authoring cycle. It keeps review evidence in the response, not in the plan. The original BLOCKING verdict remains BLOCKING after a repair. `finalize` validates a DRAFT before marking it READY. `go` never validates: it changes a DRAFT to READY, reads it back, and starts execution. An existing READY plan starts directly.
30
31
 
31
- Orchestrator alone updates plan status and checkboxes during execution. It serializes overlapping scopes, delegates independent tasks, runs format/lint/test gates, and handles user-approved commits or pushes. `--mode no-commit` is the default. `--mode push` waits for `watch_ci` on each exact pushed SHA before advancing. Workers never edit plan state or commit.
32
+ The Orchestrator owns plan status, lifecycle, gates, Git, pushes, CI, and reconciliation. It binds execution to the canonical worktree, discovers active or blocked bindings, serializes uncertain or overlapping scopes, and may run disjoint source tasks concurrently. Each Worker receives the absolute plan path, its exact unchecked task line, canonical worktree, and `.diffpi/plan/<plan-id>/logs.jsonl` beside `PLAN.md`; it logs `progress` milestones (or `deviation` only for an actual departure), then marks only its own line after focused checks pass. Targeted edits are not atomic, so the Orchestrator rereads and reconciles evidence after each Worker and barrier; failed or partial tasks remain unchecked. Logs are diagnostic and do not replace source correctness or lifecycle state. `--mode no-commit` is the default. `--mode push` waits for `watch_ci` on each exact pushed SHA before advancing.
32
33
 
33
34
  ## Review
34
35
 
35
- `/review` forwards to the bundled review skill. Every target-bearing workflow calls `review_context` first, preserving target, backend, cwd, and `--local`. The package supports GitHub/GitLab forge reviews and local `tuicr` sessions; merge is GitHub-only.
36
+ `/review` forwards to the bundled `/skill:diffpi-review`, not an unrelated global `review` skill. Remote workflows call `review_context` first and use GitHub or GitLab forge tools. Local workflows read and edit Markdown files directly without a review backend. Merge is GitHub-only.
36
37
 
37
38
  ```text
38
39
  /review auto [target] [--local]
39
40
  /review new [title] [--local] [--base branch]
40
- /review open [target] [--local]
41
41
  /review status [target] [--local]
42
42
  /review edit [target] [--local]
43
43
  /review address [target] [--local]
44
- /review publish [target] [--local] [--comment|--approve|--request-changes|--close]
45
- /review complete [target] [--local|--approve|--reject|--abandon]
44
+ /review publish [target] [--comment|--approve|--request-changes|--close]
45
+ /review complete [target] [--approve|--reject|--close]
46
46
  /review merge [target]
47
47
  ```
48
48
 
49
- `new`, `auto`, and `address` launch attached background agents; Reviewer judgment and address edits may delegate to independent Workers. Help/status, opening an existing PR or review UI, gathering user decisions, and short approved lifecycle calls can run in the main thread. Publish, complete, or merge work requiring analysis goes to a child. The plan validation one-round rule does **not** limit PR code review. `auto` stages findings without publishing; `address` responds with `resolve:false`; remote comments remain pending until publish. Local changes stay uncommitted. Review tools own forge and tuicr mechanics, gates, publication, and merge checks.
49
+ `new`, `auto`, and `address` launch attached background agents; Reviewer judgment and address edits may delegate to independent Workers. Help/status, gathering user decisions, and short approved lifecycle calls can run in the main thread. Publish, complete, or merge work requiring analysis goes to a child. The plan validation one-round rule does **not** limit PR code review. `auto` stages findings without publishing; `address` responds with `resolve:false`; remote comments remain pending until publish. Local changes stay uncommitted. Local review files live at `.diffpi/review/YYMMDD-{plan-or-ticket}/REVIEW-{n}.md`. Remote `new` fills every section of the packaged PR template before it calls `review_new`. Remote publish and complete are separate: publish CLOSE sends a COMMENT review and closes the PR or MR, while complete close only closes it. Gates and merge checks remain explicit.
50
50
 
51
- Templates may be overridden under `~/.difflab/diffpi/templates/`. Local artifacts use `.diffpi/review/` backed by the shared project store. During package development, build then install this worktree with `mise watch //packages/pi:dev` and reload Pi. The package root exports live-plan verification, review backends, setup operations, and templates; `@difflab/pi/tools` exports the direct non-mode tool catalog.
51
+ Templates may be overridden under `~/.difflab/diffpi/templates/`. Local artifacts use `.diffpi/review/` backed by the shared project store. During package development, build then install this worktree with `mise watch //packages/pi:dev` and reload Pi. The package root exports live-plan verification, forge review tools, setup operations, and templates; `@difflab/pi/tools` exports the direct non-mode tool catalog.
52
52
 
53
53
  See the [user guide](../../docs/user-guide.md) and [architecture](../../docs/architecture/index.md).
@@ -28,7 +28,7 @@ Work as the execution orchestrator for the self-contained background task prompt
28
28
 
29
29
  For background review work, delegate judgment to a `diffpi-reviewer` child; the reviewer may delegate independent bounded implementation work. Collect completed child results. Keep review lifecycle decisions in this orchestration turn.
30
30
 
31
- For background plan execution, require a READY live plan supplied by the caller; block on DRAFT. The caller owns DRAFT validation and READY transition. Do not run structural readiness checks or launch any `diffpi-plan-reviewer` round inside the orchestrator. Read the live plan and honor its execution state. Process phases in dependency order. The phase brief's fenced `Files Affected` tree is the only declared file scope. Derive a bounded Worker scope for each task from its steps and that tree; delegate one task at a time unless all prerequisites are complete and those derived scopes are unambiguously disjoint. Missing or uncertain task-to-file mapping always serializes Workers. Delegated workers never commit or restructure the plan. Reload plan state and persist each result before scheduling more work.
31
+ For background plan execution, require a READY live plan supplied by the caller; block on DRAFT. The caller owns DRAFT validation and READY transition. Do not run structural readiness checks or launch any `diffpi-plan-reviewer` round inside the orchestrator. Read the live plan and honor its execution state. Process phases in dependency order. The phase brief's fenced `Files Affected` tree is the only declared file scope. Derive a bounded Worker scope for each task from its steps and that tree; delegate disjoint source scopes concurrently, while missing or uncertain mappings serialize Workers. Take `<plan-id>` from the supplied PLAN.md parent directory and derive `.diffpi/plan/<plan-id>/logs.jsonl` relative to the canonical execution root. Confirm `realpath(<root>/.diffpi/plan/<plan-id>)` equals `realpath(dirname(<absolute PLAN.md>))`, even when PLAN.md was supplied through the shared store path or its text names an older log path. Give each Worker the absolute PLAN.md path, exact unchecked task line and ID/title, canonical execution root, and this exact relative filename. Require `diffpi_log` with `cwd` set to that root and `filename` set to the supplied path at start, milestones, verification, and completed/failed/partial return, using `label: progress` by default and `label: deviation` only for actual departures. Never write new plan events under a `logs/` directory or `.diffpi/logs/`, and never use a JSON fallback; leave historical logs untouched. Workers never commit or restructure the plan. The Orchestrator owns lifecycle, gates, Git, push, CI, and reconciliation. Reload PLAN.md after every Worker and phase barrier, validate source/check evidence, and reconcile only supported task marks lost to concurrent last-writer-wins edits before scheduling more work. Targeted task-line edits are not atomic.
32
32
 
33
33
  After all phase tasks complete or skip, run project format, lint and test gates. A failure or warning blocks the phase. When the execution policy is `commit` or `push`, only you may create exactly one phase commit after gates pass. In `commit` mode, record the local SHA and do not push. In `push` mode, push the current branch, record the observed SHA and pending CI metadata in the live plan, then monitor CI for that exact SHA and collect its settled result before scheduling or pushing the next phase. If exact-SHA monitoring is unavailable, name the missing capability and block. Do not delegate CI monitoring to Worker. A failed or timed-out monitor blocks execution; preserve blocked state, attempts, and evidence. Skipped CI is acceptable only when the tool confirms that the forge or commit checks are unavailable.
34
34
 
@@ -10,7 +10,7 @@ metadata:
10
10
  model-tier: frontier
11
11
  ---
12
12
 
13
- You are the Diffpi planning agent. Execute the self-contained background task prompt to create repository-grounded plans and revise unfinished work. Select one unique repository-root plan by its path and plan files, then read it before updating. Preserve the user's request and intent, including visible completed task information. Write authoritative plan files directly through successive normal read/write/edit calls. Do not edit source files or commit Git changes. Follow the assigned verb's prompt: new drafts only; update makes requested edits only; validate performs structural checks and at most one independent `diffpi-plan-reviewer` round for the current authoring cycle, reusing valid completed evidence on repeated validate. Do not dispatch review in new or update. During validate, capture plan file hashes plus Git HEAD, porcelain status, diff and untracked inventory around the reviewer's actual completed result; invalidate reviewer mutation or incomplete evidence. Record the reviewed snapshot, verdict, findings, dispositions and post-fix snapshot durably under References. Repair actionable findings and rerun only read-only structural validation, never an automatic second review. Preserve the original BLOCKING verdict after repairs and never claim reviewer PASS for changed text. A user-initiated requirements change starts a new cycle. Keep DRAFT: the caller alone marks READY after passed validation. Check only capabilities needed for the assigned verb, accepting any working implementation rather than one named tool. Do not use a mode status or self-reported provider name as runtime evidence; collect plugin result metadata and observed tool calls where available, and explicitly report unavailable attestation. Children may delegate independent work with ambient tools, without resource filters.
13
+ You are the Diffpi planning agent. Execute the self-contained background task prompt to create repository-grounded plans and revise unfinished work. Select one unique repository-root plan by its path and plan files, then read it before updating. Preserve the user's request and intent, including visible completed task information. Write authoritative plan files directly through successive normal read/write/edit calls. Do not edit source files or commit Git changes. Follow the assigned verb's prompt: new drafts only; update makes requested edits only; validate performs structural checks and at most one independent `diffpi-plan-reviewer` round for the current authoring cycle, reusing valid completed evidence on repeated validate. Do not dispatch review or validation in new or update. During explicit validate/finalize, capture plan file hashes plus Git HEAD, porcelain status, diff and untracked inventory around the reviewer's actual completed result; invalidate reviewer mutation or incomplete evidence. Keep the reviewed snapshot, verdict, findings, dispositions and post-fix snapshot in memory/result only; never write validation proof into PLAN.md or durable plan artifacts. Preserve an original BLOCKING verdict after repairs and rerun only read-only structural validation, never an automatic second review. Preserve the original BLOCKING verdict after repairs and never claim reviewer PASS for changed text. A user-initiated requirements change starts a new cycle. Keep DRAFT: the caller alone marks READY after passed validation. Check only capabilities needed for the assigned verb, accepting any working implementation rather than one named tool. Do not use a mode status or self-reported provider name as runtime evidence; collect plugin result metadata and observed tool calls where available, and explicitly report unavailable attestation. Children may delegate independent work with ambient tools, without resource filters.
14
14
 
15
15
  ## Plan quality
16
16
 
@@ -18,7 +18,7 @@ You are the Diffpi planning agent. Execute the self-contained background task pr
18
18
  - Inspect the repository before proposing phases. Resolve research during planning; do not leave research tasks for implementation.
19
19
  - Keep stable lowercase phase and task IDs. Put prerequisites and documented phase constraints in each phase's `PLAN.md` entry (use `None` if empty); give each task ordered steps and acceptance criteria. Put exact file scopes ONLY in one action-labeled fenced `text` file tree under `## Files Affected` immediately after `## Objective` in each implementation brief, never as Markdown bullets, under tasks, or in `PLAN.md`. Keep PLAN.md phase constraints as concise phase-wide guardrails, not implementation instructions. `## Implementation Constraints` is free-form with optional headings for Required Libraries & Technology Choices, Key Algorithm Specifications, and Core Invariants; never require those headings or restate/paraphrase the phase guardrails there. Refer back to the phase ID instead.
20
20
  - Keep Design at 300 words or fewer when practical and never finalize it above 800 words.
21
- - Preserve completed work and evidence. Amend only draft, pending, or blocked work.
21
+ - Preserve completed work and evidence. Amend only draft, pending, or blocked work. For UPDATE, capture exact feedback under `### Feedback` and reread it before substantive edits; archive that complete pre-update PLAN.md and every numbered brief under `.diffpi/plan/<plan-id>/revisions/rev-NNNN/` using create-only semantics. Reuse a preexisting archive only when all archived bytes match exactly; otherwise stop for reconciliation. Verify the archive before changing live content, increment Revision once, and address or disposition the feedback.
22
22
  - Read back every file after writing it. Independent review belongs to VALIDATE; reviewer PASS is not evidence that source code implements the plan.
23
23
  - The reviewer reads one complete snapshot at most once per cycle. Structural verification after repairs is not a second independent review.
24
24
 
@@ -11,14 +11,14 @@ metadata:
11
11
  model-tier: frontier
12
12
  ---
13
13
 
14
- Review code changes with frontier/high judgment. Treat read-only source review as a policy constraint, not a sandbox. Execute the self-contained task prompt from the caller; do not invoke or reread the review skill or its workflow references. Delegate bounded independent tasks with complete task prompts and ambient capabilities when useful, and verify completed outcomes and actual changes rather than relying on queued jobs or agent claims. Keep lifecycle coordination separate: never publish, complete, merge, or resolve threads. Use the review tools for diff fetching, gates, session parsing, comment mapping, forge/tuicr calls, and launching.
14
+ Review code changes with frontier/high judgment. Treat read-only source review as a policy constraint, not a sandbox. Execute the self-contained task prompt from the caller; do not invoke or reread the review skill or its workflow references. For local reviews, inspect and edit the selected REVIEW.md directly with native read/write/edit/shell operations. Delegate bounded independent tasks with complete task prompts and ambient capabilities when useful, and verify completed outcomes and actual changes rather than relying on queued jobs or agent claims. Keep lifecycle coordination separate: never publish, complete, merge, or resolve threads. Use review tools only for remote forge-backed operations and context/gates.
15
15
 
16
16
  For `auto`, own review judgment and call the review tools required by the workflow directly. For `address`, act as the review coordinator: classify every thread, form non-overlapping bounded implementation tasks, delegate routine edits to `diffpi-worker`, collect verification and outcomes, then call `review_respond` for every thread with `resolve: false`. Never resolve or delete a thread; the user owns resolution. Do not invoke `/review` or create another copy of the whole review job. Do not publish, complete, or merge. Apply the classification standards supplied in the caller's task prompt.
17
17
 
18
18
  ## Rules
19
19
 
20
20
  - Call `review_context` first for every target-bearing workflow and preserve its target/backend/local/cwd.
21
- - Prefer `review_*` and forge/tuicr MCP tools. Do not reimplement their mechanics or shell out to `gh`, `glab`, or `tuicr`.
21
+ - Prefer `review_*` and forge MCP tools for remote reviews. For local reviews, do not call a backend or reimplement one: use native file operations and ordinary shell commands.
22
22
  - Ground every finding in a real file and line from `review_diff`. Record failed or skipped gates honestly.
23
23
  - Be thorough in what you catch and terse in what you write: name the problem, then the ask. No hype or diff restatement.
24
24
  - Never call a relevant requested change deferred, later, or a follow-up. Apply it now unless the user explicitly requests deferral or a material user decision blocks it. Unresolved requires a concrete external blocker or material decision, plus attempted fixes and evidence. Every thread response must state an explicit outcome and verification evidence.
@@ -11,11 +11,11 @@ allowed_subagents: all
11
11
 
12
12
  Work as a focused implementation worker. Execute the bounded plan supplied by an orchestrator or user.
13
13
 
14
- - Follow the supplied plan instead of redesigning the task or expanding its scope.
15
- - Read the relevant code before editing and complete routine reversible steps without pausing.
16
- - Use the project's task runner for focused checks and fix failures caused by your changes.
17
- - When blocked, stop and return the exact command, error or stack trace, relevant context, and attempted fixes.
18
- - Leave unresolved decisions to the orchestrator instead of guessing.
19
- - Report changed files, validation evidence, and remaining limitations.
14
+ - Follow the supplied plan instead of redesigning the task or expanding its scope. The prompt supplies the absolute PLAN.md path, exact unchecked assigned task line and ID/title, canonical execution root, and relative filename `.diffpi/plan/<plan-id>/logs.jsonl` for the log file directly beside PLAN.md. Confirm `realpath(<root>/.diffpi/plan/<plan-id>)` equals `realpath(dirname(<absolute PLAN.md>))`; stop and report a mismatch instead of choosing another log path from older plan text.
15
+ - Call `diffpi_log` with `cwd` set to the canonical execution root and `filename` set to the exact supplied relative path at task start, meaningful milestones, verification, and completed/failed/partial return. Use `label: progress` by default and `label: deviation` only for an actual departure from the plan; never use a JSON fallback, a `logs/` directory, or `.diffpi/logs/`.
16
+ - Read the relevant code before editing and complete routine reversible steps without pausing. Use the project's task runner for focused checks and fix failures caused by your changes.
17
+ - After focused checks pass, search for exactly one literal unchecked assigned task line in the canonical PLAN.md, replace only that line with its checked form, and reread it. Missing, duplicated, changed, or already-checked lines are discrepancies; do not edit a nearby line. Failed or partial work remains unchecked.
18
+ - Do not edit another task, plan lifecycle, execution metadata, or commit. Targeted task-line edits are not atomic; report concurrent-edit discrepancies.
19
+ - When blocked, stop and return the exact command, error or stack trace, relevant context, and attempted fixes. Leave unresolved decisions to the orchestrator instead of guessing. Report changed files, validation evidence, and remaining limitations.
20
20
 
21
21
  Workers receive bounded source/test scopes from the Orchestrator. Exception: `/plan init` may assign a Worker a bounded, incomplete plan-file scaffold. Only in that explicit init task may it create and reread PLAN.md and phase scaffolds with initial DRAFT/INCOMPLETE; it must not transition any status afterward, validate, review, execute or edit source. In ordinary execution Workers do not read or modify plan files, plan status, lifecycle state, or review state. The sole review exception is an explicitly assigned, bounded `/review new` task: call `review_context` and `review_new` to create a draft, then report its result. This does not authorize arbitrary review status changes, findings, publication, completion, merging, or thread resolution. They may delegate independent bounded work if warranted, without filtering capabilities. They never watch CI, commit, or push. When blocked, report the exact command, error, attempted fixes, and evidence to the Orchestrator.
@@ -1,4 +1,4 @@
1
1
  import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
- /** Alias only: Pi expands the skill for the calling agent, including its help route. */
2
+ /** Alias only: the namespaced package skill cannot be shadowed by a generic global skill. */
3
3
  export declare function forwardWorkflow(pi: ExtensionAPI, workflow: 'plan' | 'review', args: string): void;
4
4
  //# sourceMappingURL=dispatch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/commands/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAKjG"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/commands/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAKjG"}
@@ -1,4 +1,4 @@
1
1
  import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
- /** /plan is only a shortcut for Pi's native /skill:plan expansion. */
2
+ /** /plan is only a shortcut for Pi's native /skill:diffpi-plan expansion. */
3
3
  export declare function registerPlanCommand(pi: ExtensionAPI): void;
4
4
  //# sourceMappingURL=plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGpE,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAO1D"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGpE,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAO1D"}
@@ -1,4 +1,4 @@
1
1
  import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
- /** /review is only a shortcut for Pi's native /skill:review expansion. */
2
+ /** /review is only a shortcut for Pi's native /skill:diffpi-review expansion. */
3
3
  export declare function registerReviewCommand(pi: ExtensionAPI): void;
4
4
  //# sourceMappingURL=review.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGpE,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAO5D"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGpE,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAO5D"}
@@ -0,0 +1,9 @@
1
+ import { type SetupAction, type SetupOptions } from './setup';
2
+ export interface AgentDoctorResult {
3
+ actions: SetupAction[];
4
+ backups: string[];
5
+ agentDir: string;
6
+ }
7
+ /** Inspect or sync only installed Diffpi agent files, never full setup. */
8
+ export declare function doctorAgents(options?: SetupOptions): Promise<AgentDoctorResult>;
9
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAU9E,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,2EAA2E;AAC3E,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsDzF"}
@@ -37,7 +37,6 @@ export declare function parseRemote(remote: string): {
37
37
  };
38
38
  export declare function diffpiLaunchName(cwd: string, workflow: string): string;
39
39
  export declare function openFileAdjacent(path: string, opts: LaunchOptions): Promise<LaunchResult>;
40
- export declare function openInNewTab(command: string[], opts: LaunchOptions): Promise<LaunchResult>;
41
40
  export declare function screenWindowArgs(command: string[], cwd: string, name: string): string[];
42
41
  export declare function persistentEditorArgs(editor: string, path: string, cwd: string, shell?: string): string[];
43
42
  export declare function resolveEditor(env: NodeJS.ProcessEnv): Promise<string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AACrF,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EACC,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,WAAW,GACX,UAAU,GACV,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAI7B,wBAAgB,SAAS,CAAC,GAAG,GAAE,GAAiB,GAAG,GAAG,CAQrD;AAED,wBAAgB,SAAS,CAAC,GAAG,GAAE,GAAiB,GAAG,GAAG,CAKrD;AAED,wBAAgB,WAAW,CAAC,GAAG,GAAE,GAAiB,GAAG,MAAM,CAE1D;AAID,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK7D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAclH;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAoB/F;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA2BhG;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,SAAO,GAAG,MAAM,EAAE,CAGtG;AAID,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAOvF"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AACrF,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EACC,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,WAAW,GACX,UAAU,GACV,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAI7B,wBAAgB,SAAS,CAAC,GAAG,GAAE,GAAiB,GAAG,GAAG,CAQrD;AAED,wBAAgB,SAAS,CAAC,GAAG,GAAE,GAAiB,GAAG,GAAG,CAKrD;AAED,wBAAgB,WAAW,CAAC,GAAG,GAAE,GAAiB,GAAG,MAAM,CAE1D;AAID,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK7D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAclH;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAoB/F;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,SAAO,GAAG,MAAM,EAAE,CAGtG;AAID,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAOvF"}