planr 1.5.0 → 1.5.2

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": "planr",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "Local-first planning and execution coordination for coding agents.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -23,7 +23,30 @@
23
23
  "build:native": "cargo build --release",
24
24
  "test": "cargo test",
25
25
  "pack:check": "npm pack --dry-run",
26
- "routing": "cargo run --manifest-path planr-routing/Cargo.toml --"
26
+ "docs:dev": "pnpm --filter @planr/docs dev",
27
+ "docs:alchemy:dev": "pnpm --filter @planr/docs alchemy:dev",
28
+ "docs:build": "pnpm --filter @planr/docs build",
29
+ "docs:start": "pnpm --filter @planr/docs start",
30
+ "docs:deploy": "pnpm --filter @planr/docs run deploy",
31
+ "docs:destroy": "pnpm --filter @planr/docs run destroy",
32
+ "docs:content": "pnpm --filter @planr/docs content",
33
+ "docs:typecheck": "pnpm --filter @planr/docs typecheck",
34
+ "docs:lint": "pnpm --filter @planr/docs lint",
35
+ "docs:verify-shell": "pnpm --filter @planr/docs verify:shell",
36
+ "docs:verify-onboarding": "cargo build --bin planr && pnpm --filter @planr/docs verify:onboarding && pnpm --filter @planr/docs verify:agent-recipes",
37
+ "docs:verify-agent-recipes": "cargo build --bin planr && pnpm --filter @planr/docs verify:agent-recipes",
38
+ "docs:verify-agent-markdown": "pnpm docs:build && pnpm --filter @planr/docs verify:agent-markdown",
39
+ "docs:verify-agent-journey": "pnpm --filter @planr/docs verify:agent-journey",
40
+ "docs:verify-agent-landing": "pnpm --filter @planr/docs verify:agent-landing",
41
+ "docs:verify-concepts": "cargo build --bin planr && pnpm --filter @planr/docs verify:concepts",
42
+ "docs:verify-maintenance": "pnpm --filter @planr/docs verify:maintenance",
43
+ "docs:verify-deployment": "pnpm --filter @planr/docs verify:deployment",
44
+ "docs:verify-release": "pnpm --filter @planr/docs verify:release",
45
+ "docs:verify-release-live": "pnpm --filter @planr/docs verify:release-live",
46
+ "docs:verify-clean-install": "pnpm --filter @planr/docs verify:clean-install",
47
+ "verify:switchloom-cross-product": "node scripts/verify-switchloom-cross-product.mjs",
48
+ "docs:reference:generate": "cargo build --bin planr && pnpm --filter @planr/docs reference:generate",
49
+ "docs:verify-reference": "cargo build --bin planr && pnpm --filter @planr/docs reference:check && pnpm --filter @planr/docs verify:reference"
27
50
  },
28
51
  "engines": {
29
52
  "node": ">=18"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "planr",
3
3
  "description": "Skill-driven planning and execution loop for coding agents: one planr entry point, an autonomous planr-loop, and evidence-backed task graph skills powered by the planr CLI.",
4
- "version": "1.5.0",
4
+ "version": "1.5.2",
5
5
  "author": {
6
6
  "name": "instructa"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "planr",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "Skill-driven planning and execution loop for coding agents: one $planr entry point, an autonomous $planr-loop, and evidence-backed task graph skills powered by the planr CLI.",
5
5
  "author": {
6
6
  "name": "instructa",
@@ -19,7 +19,7 @@
19
19
  "category": "Productivity",
20
20
  "defaultPrompt": [
21
21
  "Use $planr to plan a production-ready app from my idea.",
22
- "Use $planr-loop to ship one feature with verification until done."
22
+ "Use $planr to prepare my next feature and tell me the verified next step."
23
23
  ]
24
24
  }
25
25
  }
@@ -37,7 +37,7 @@ The stop condition itself is one command: `planr plan audit <plan-id> --json` ev
37
37
 
38
38
  ## Iteration Shape
39
39
 
40
- Each iteration is one dispatch through the routing skill — never a hand-written prompt:
40
+ Each iteration follows the Planr stage protocols — never a hand-written workflow prompt:
41
41
 
42
42
  ```text
43
43
  1. planr plan audit <plan-id> --json contract holds -> exit loop ($planr-status for deeper reads)
@@ -58,7 +58,7 @@ The loop never closes its own reviews when the host supports a second agent. Mak
58
58
 
59
59
  ## Skills Are The Prompts
60
60
 
61
- When the host supports subagents, the driver never implements: it dispatches, audits, and synthesizes. Driver tokens go into `plan audit`, dispatch decisions, and conflict resolution — implementation and review run in the subagent roles, which the host wiring can pin to a cheaper tier (see the role files and `docs/GOALS.md` "Cost Tiering"). When the pick packet carries a `routing` block, dispatch on it: run the worker on the named profile's client and model, and move down the `fallbacks` chain when the primary hits a rate limit or is unavailable the chain is ordered, so no mid-run registry edits. As the dispatching driver, read the packet with `planr pick --peek [--plan <id>]` — it returns the same packet without leasing, so the worker picks under its own identity and the maker/checker audit stays clean (never pick-and-release as the driver). Workers report the profile they actually ran on (`done --profile <id>` or `PLANR_PROFILE`), so a host that silently overrode the pin shows up in `planr trace item` instead of staying invisible. Delegate with skill references plus an item id, nothing more:
61
+ When the host supports subagents, the driver never implements: it dispatches, audits, and synthesizes. Driver tokens go into `plan audit`, dispatch decisions, and conflict resolution — implementation and review run in host-native subagent roles (see the role files and `docs/GOALS.md` "Cost Tiering"). Pick packets expose provider-neutral `routing.profile`; they do not expose a host-owned `routing.agent_type`. If an external repository declaration has generated a host role whose identifier exactly matches `routing.profile`, dispatch that profile identifier as the host-native role/`agent_type` through the host's subagent wiring. If no matching repository role exists, keep the host's default dispatch contract and treat the profile as advisory evidence only. Model, effort, profile, client, and fallback fields are advisory declarations and evidence labels only; Planr does not choose a model, choose effort, choose a client, choose a fallback, or infer that a host honored any requested value. The host owns whether and how those declarations can be honored. As the dispatching driver, read the packet with `planr pick --peek [--plan <id>]` — it returns the same packet without leasing, so the worker picks under its own identity and the maker/checker audit stays clean (never pick-and-release as the driver). Workers report the profile they actually ran on (`done --profile <id>` or `PLANR_PROFILE`) and attach route observations when available, so host overrides show up in `planr trace item` as evidence instead of being inferred from declarations. Delegate with skill references plus an item id in the message body, nothing more; host-native dispatch arguments still carry the selected role/profile and isolation controls:
62
62
 
63
63
  - Worker dispatch: `Use $planr-work on item <item-id>. Stop after requesting review.`
64
64
  - Checker dispatch: `Use $planr-review on item <item-id>. Close the review with a verdict.`
@@ -67,7 +67,8 @@ A worker subagent may take several items sequentially instead of being respawned
67
67
 
68
68
  Host wiring:
69
69
 
70
- - When a repository routing bundle supplies host roles, follow its generated routing skill exactly. Otherwise treat the profile in the pick packet as advisory and use the host's current dispatch contract. Never infer effective model or effort from a declaration alone.
70
+ - When external repository declarations supply host roles matching pick-packet `routing.profile` values, pass the matching profile identifier as the native host role/`agent_type` and follow the generated role instructions exactly. Otherwise treat the profile in the pick packet as advisory and use the host's current dispatch contract. Never infer effective model or effort from a declaration alone.
71
+ - Codex with native multi-agent roles (stable multi-agent or Multi-Agent v2): generated `.codex/config.toml` roles are matching repository roles. The `spawn_agent` tool call itself must include `agent_type` set exactly to the matching `routing.profile`, `fork_turns` set to `none`, a stable lowercase `task_name`, and the dispatch message above. A default-role maker/checker spawn without `agent_type` is invalid for a generated Codex role; do not wait on it or treat it as a fallback. Do not claim role binding is unavailable for generated Codex roles, and do not substitute the role name into `task_name`, prose, worker identity, or the message body as a replacement for `agent_type`; those are not native role-binding evidence.
71
72
  - Claude Code: subagents preload via the `skills:` frontmatter field. The Planr plugin registers `planr-worker` and `planr-reviewer` automatically from its `agents/` directory; standalone installs copy them to `.claude/agents/`. The reviewer subagent is read-only except for `planr review` commands.
72
73
  - Cursor: project subagents in `.cursor/agents/*.md` (Markdown templates in `agents/` next to this skill; `planr install cursor` provisions them). Dispatch explicitly: `/planr-worker implement item X`, `/planr-reviewer review item X`. Parallel dispatches are safe — the map's pick lease keeps one owner per item.
73
74
  - Single-agent hosts: run worker and checker as separate sequential dispatches with a fresh read of map state in between; never carry the worker's self-assessment into the review step. The mode is recorded automatically: `review close` derives `review_mode` (`single_agent`/`independent`) from worker identity.