planr 1.7.0 → 1.7.1

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 (62) hide show
  1. package/README.md +46 -22
  2. package/docs/ARCHITECTURE.md +3 -2
  3. package/docs/RELEASE.md +37 -7
  4. package/docs/SWITCHLOOM_COMPATIBILITY.md +46 -0
  5. package/docs/documentation/CONTRACT.md +7 -7
  6. package/docs/documentation/COVERAGE.md +5 -3
  7. package/docs/documentation/INFORMATION_ARCHITECTURE.md +5 -2
  8. package/npm/native/darwin-arm64/planr +0 -0
  9. package/npm/native/darwin-x86_64/planr +0 -0
  10. package/npm/native/linux-arm64/planr +0 -0
  11. package/npm/native/linux-x86_64/planr +0 -0
  12. package/package.json +2 -1
  13. package/plugins/planr/.claude-plugin/plugin.json +1 -1
  14. package/plugins/planr/.codex-plugin/plugin.json +1 -1
  15. package/plugins/planr/agents/planr-worker.md +1 -1
  16. package/plugins/planr/skills/planr-goal/SKILL.md +21 -49
  17. package/plugins/planr/skills/planr-loop/SKILL.md +28 -94
  18. package/plugins/planr/skills/planr-loop/agents/planr-worker.md +1 -1
  19. package/plugins/planr/skills/planr-loop/references/host-dispatch.md +10 -0
  20. package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +24 -0
  21. package/plugins/planr/skills/planr-task-graph/SKILL.md +21 -190
  22. package/docs/CI.md +0 -55
  23. package/docs/CLAUDE_CODE.md +0 -52
  24. package/docs/CLI_REFERENCE.md +0 -170
  25. package/docs/CODEX.md +0 -56
  26. package/docs/CURSOR.md +0 -114
  27. package/docs/EXAMPLE_WEBAPP.md +0 -103
  28. package/docs/GOALS.md +0 -175
  29. package/docs/HANDOFFS_AND_STORIES.md +0 -121
  30. package/docs/HOOKS.md +0 -34
  31. package/docs/IMPORT.md +0 -23
  32. package/docs/INSTALL.md +0 -115
  33. package/docs/MCP_CONTRACT.md +0 -78
  34. package/docs/MCP_GUIDE.md +0 -40
  35. package/docs/MODEL_ROUTING.md +0 -33
  36. package/docs/NPM.md +0 -40
  37. package/docs/OPERATING_MODEL.md +0 -250
  38. package/docs/ROUTING_BUNDLES.md +0 -15
  39. package/docs/SECURITY.md +0 -8
  40. package/docs/SKILLS.md +0 -261
  41. package/docs/TASK_GRAPH_MODEL.md +0 -272
  42. package/docs/TESTING.md +0 -87
  43. package/docs/TROUBLESHOOTING.md +0 -30
  44. package/docs/planr-spec/ADRS.md +0 -160
  45. package/docs/planr-spec/AI_SPEC.md +0 -138
  46. package/docs/planr-spec/ANALYTICS_OBSERVABILITY_SPEC.md +0 -124
  47. package/docs/planr-spec/API_AND_DATA_MODEL.md +0 -519
  48. package/docs/planr-spec/BACKEND_IMPLEMENTATION_SPEC.md +0 -178
  49. package/docs/planr-spec/CLIENT_IMPLEMENTATION_SPEC.md +0 -119
  50. package/docs/planr-spec/DESIGN_SYSTEM_SPEC.md +0 -102
  51. package/docs/planr-spec/PRODUCT_SPEC.md +0 -193
  52. package/docs/planr-spec/QA_ACCEPTANCE_TESTS.md +0 -146
  53. package/docs/planr-spec/README.md +0 -68
  54. package/docs/planr-spec/REFERENCES.md +0 -29
  55. package/docs/planr-spec/RELEASE_READINESS.md +0 -95
  56. package/docs/planr-spec/SAFETY_PRIVACY_SECURITY.md +0 -169
  57. package/docs/planr-spec/TASKS.md +0 -932
  58. package/docs/planr-spec/TECH_ARCHITECTURE.md +0 -145
  59. package/docs/planr-spec/UX_FLOWS.md +0 -235
  60. package/docs/release-candidates/planr-v1.5.2.md +0 -156
  61. /package/docs/{planr-spec → contracts}/EVAL_CONTRACT_V1.md +0 -0
  62. /package/docs/{planr-spec → contracts}/V1_1_DIFFERENTIATION_CONTRACT.md +0 -0
@@ -1,124 +0,0 @@
1
- # Analytics And Observability Specification
2
-
3
- ## Observability Goals
4
-
5
- - Help users debug item state, picks, MCP setup, and agent runs.
6
- - Avoid collecting source code, prompts, responses, secrets, or private plan content.
7
- - Make local diagnostics exportable for bug reports after user review.
8
-
9
- ## Local Event Log
10
-
11
- Events stored in SQLite:
12
-
13
- - project_created
14
- - item_created
15
- - item_ready
16
- - item_picked
17
- - item_heartbeat
18
- - item_progress
19
- - item_paused
20
- - item_resumed
21
- - item_started
22
- - item_closed
23
- - item_blocked
24
- - item_failed
25
- - dependency_added
26
- - plan_parsed
27
- - plan_parse_failed
28
- - log_created
29
- - artifact_created
30
- - review_annotation_added
31
- - review_feedback_ingested
32
- - review_artifact_written
33
- - review_requested
34
- - review_closed
35
- - context_created
36
- - import_completed
37
- - import_parsed
38
- - export_written
39
- - mcp_tool_called
40
- - doctor_check_completed
41
-
42
- ## Metrics
43
-
44
- Local aggregate metrics:
45
-
46
- - items by status;
47
- - ready queue size;
48
- - running item count;
49
- - blocked item count;
50
- - average pick-to-close duration;
51
- - failed run count;
52
- - review finding count;
53
- - MCP call count by tool name;
54
- - database schema version.
55
-
56
- ## Logs
57
-
58
- Default logs:
59
-
60
- - command name;
61
- - exit status;
62
- - duration;
63
- - error code;
64
- - item id/project id;
65
- - client type.
66
-
67
- Forbidden logs:
68
-
69
- - full source code;
70
- - plan body content by default;
71
- - prompts/responses;
72
- - command output unless explicitly attached by user;
73
- - secrets or environment values.
74
-
75
- Debug bundle preview must include counts, ids, paths, event metadata, and logs, but must not inline source file content or prompt/response transcripts. Inline artifact content is only present when the user explicitly attached small content as an artifact.
76
-
77
- ## Doctor Diagnostics
78
-
79
- `planr doctor` must check:
80
-
81
- - binary version;
82
- - database open/schema-upgrade status;
83
- - `.planr` pack presence;
84
- - Git repo status;
85
- - Codex availability and MCP config hint;
86
- - Claude Code availability/config hint;
87
- - Cursor config hint;
88
- - MCP stdio server startup;
89
- - optional HTTP server startup;
90
- - permission issues.
91
-
92
- ## Alerts
93
-
94
- V1 has no remote alerts. CLI/TUI should visibly show:
95
-
96
- - stale running items without heartbeat;
97
- - database lock issues;
98
- - parse errors;
99
- - failed agent runs;
100
- - blocked critical path.
101
-
102
- ## Cost Monitoring
103
-
104
- Planr does not call providers by default. Optional runner wrappers may record provider/model metadata and token/cost estimates only when exposed by the client and only as metadata.
105
-
106
- ## Debug Bundle
107
-
108
- `planr debug bundle` should create a local archive containing:
109
-
110
- - version;
111
- - schema version;
112
- - redacted config;
113
- - event metadata;
114
- - doctor output;
115
- - selected item/log metadata.
116
-
117
- It must exclude plan bodies, source files, prompts, responses, and secrets by default.
118
-
119
- ## Acceptance Criteria
120
-
121
- - REQ-ANA-001: A user can diagnose why no items are ready.
122
- - REQ-ANA-002: A user can diagnose why an MCP client cannot see Planr tools.
123
- - REQ-ANA-003: Debug export is redacted by default.
124
- - REQ-ANA-004: No content analytics are emitted in V1.
@@ -1,519 +0,0 @@
1
- # API And Data Model
2
-
3
- Eval Contract v1, including the additive v1.1 efficiency-evidence amendment, is frozen in [EVAL_CONTRACT_V1.md](EVAL_CONTRACT_V1.md). That document owns the canonical eval manifest fields, normalized snapshot, stored objects, attempt lineage, metering basis, effective treatment identity, derived efficiency metrics, status values, reason codes, evidence identities, response examples, exit codes, database rules, and safety constraints. This file keeps the higher-level product API summary.
4
-
5
- ## Storage Locations
6
-
7
- - SQLite: authoritative map graph state, picks, contexts, logs, runs, events, search indexes.
8
- - `.planr/project/*.md`: durable project context pack.
9
- - `.planr/plans/product/<slug>/`: product specification packages.
10
- - `.planr/plans/build/*.plan.md`: Markdown implementation plans.
11
- - `.planr/reviews/*.review.md`: optional saved review artifacts.
12
- - Git: source diffs, commits, branches, and worktrees.
13
-
14
- ## Core Tables
15
-
16
- ### projects
17
-
18
- ```text
19
- id TEXT PRIMARY KEY
20
- name TEXT NOT NULL
21
- root_path TEXT NOT NULL
22
- description TEXT
23
- status TEXT NOT NULL
24
- metadata JSON
25
- created_at DATETIME
26
- updated_at DATETIME
27
- ```
28
-
29
- ### items
30
-
31
- ```text
32
- id TEXT PRIMARY KEY
33
- project_id TEXT NOT NULL
34
- parent_item_id TEXT
35
- title TEXT NOT NULL
36
- description TEXT
37
- status TEXT NOT NULL
38
- work_type TEXT NOT NULL
39
- priority INTEGER
40
- worker_id TEXT
41
- plan_path TEXT
42
- pick_token TEXT
43
- picked_at DATETIME
44
- last_heartbeat_at DATETIME
45
- progress_percent INTEGER
46
- progress_note TEXT
47
- paused_at DATETIME
48
- timeout_seconds INTEGER
49
- max_retries INTEGER
50
- retry_count INTEGER
51
- retry_backoff TEXT
52
- retry_delay_ms INTEGER
53
- pre_condition TEXT
54
- post_condition TEXT
55
- approval_status TEXT
56
- approval_requested_at DATETIME
57
- approved_by TEXT
58
- approval_comment TEXT
59
- started_at DATETIME
60
- completed_at DATETIME
61
- result JSON
62
- error TEXT
63
- metadata JSON
64
- created_at DATETIME
65
- updated_at DATETIME
66
- ```
67
-
68
- Item work types:
69
-
70
- - generic
71
- - research
72
- - plan
73
- - code
74
- - review
75
- - fix
76
- - test
77
- - shell
78
- - release
79
-
80
- Item statuses:
81
-
82
- - pending
83
- - ready
84
- - picked
85
- - running
86
- - in_review
87
- - blocked
88
- - closed
89
- - closed_partial
90
- - failed
91
- - cancelled
92
-
93
- ### links
94
-
95
- ```text
96
- id INTEGER PRIMARY KEY
97
- from_item TEXT NOT NULL
98
- to_item TEXT NOT NULL
99
- kind TEXT NOT NULL
100
- condition TEXT NOT NULL
101
- metadata JSON
102
- UNIQUE(from_item, to_item, kind)
103
- ```
104
-
105
- Link kinds:
106
-
107
- - blocks: upstream must complete before downstream is ready.
108
- - hands_to: upstream result is included in downstream handoff.
109
- - reviews: review item blocks parent/target closure.
110
- - relates_to: non-blocking context relationship.
111
-
112
- ### plans
113
-
114
- ```text
115
- id TEXT PRIMARY KEY
116
- project_id TEXT NOT NULL
117
- stage TEXT NOT NULL
118
- path TEXT NOT NULL
119
- title TEXT NOT NULL
120
- slug TEXT NOT NULL
121
- package_manifest JSON
122
- frontmatter JSON
123
- parse_status TEXT NOT NULL
124
- content_hash TEXT NOT NULL
125
- created_at DATETIME
126
- updated_at DATETIME
127
- ```
128
-
129
- Plan stages:
130
-
131
- - product
132
- - build
133
- - review
134
-
135
- ### source_links
136
-
137
- ```text
138
- id INTEGER PRIMARY KEY
139
- source_type TEXT NOT NULL
140
- source_id TEXT NOT NULL
141
- item_id TEXT NOT NULL
142
- section_id TEXT
143
- relationship TEXT NOT NULL
144
- ```
145
-
146
- Relationships:
147
-
148
- - scopes
149
- - implements
150
- - verifies
151
- - reviews
152
- - references
153
-
154
- ### contexts
155
-
156
- ```text
157
- id TEXT PRIMARY KEY
158
- project_id TEXT NOT NULL
159
- item_id TEXT
160
- worker_id TEXT
161
- kind TEXT NOT NULL
162
- content TEXT NOT NULL
163
- tags JSON
164
- created_at DATETIME
165
- ```
166
-
167
- Kinds:
168
-
169
- - discovery
170
- - decision
171
- - constraint
172
- - pattern
173
- - blocker
174
- - bug
175
- - risk
176
-
177
- ### runs
178
-
179
- ```text
180
- id TEXT PRIMARY KEY
181
- project_id TEXT NOT NULL
182
- item_id TEXT NOT NULL
183
- worker_id TEXT NOT NULL
184
- client TEXT NOT NULL
185
- profile TEXT
186
- command TEXT
187
- cwd TEXT
188
- worktree_path TEXT
189
- status TEXT NOT NULL
190
- started_at DATETIME
191
- ended_at DATETIME
192
- exit_code INTEGER
193
- metadata JSON
194
- ```
195
-
196
- Clients:
197
-
198
- - codex
199
- - claude-code
200
- - cursor
201
- - generic-mcp
202
- - human
203
- - ci
204
-
205
- ### logs
206
-
207
- ```text
208
- id TEXT PRIMARY KEY
209
- project_id TEXT NOT NULL
210
- item_id TEXT NOT NULL
211
- run_id TEXT
212
- kind TEXT NOT NULL
213
- summary TEXT NOT NULL
214
- files JSON
215
- commands JSON
216
- tests JSON
217
- review_findings JSON
218
- blocked_or_unverified JSON
219
- created_at DATETIME
220
- ```
221
-
222
- Log kinds:
223
-
224
- - completion
225
- - review
226
- - failure
227
- - handoff
228
- - verification
229
-
230
- ### artifacts
231
-
232
- ```text
233
- id TEXT PRIMARY KEY
234
- project_id TEXT NOT NULL
235
- item_id TEXT
236
- name TEXT NOT NULL
237
- kind TEXT
238
- path TEXT
239
- content TEXT
240
- mime_type TEXT
241
- size_bytes INTEGER
242
- metadata JSON
243
- created_at DATETIME
244
- ```
245
-
246
- ### events
247
-
248
- ```text
249
- id INTEGER PRIMARY KEY
250
- project_id TEXT
251
- item_id TEXT
252
- worker_id TEXT
253
- event_type TEXT NOT NULL
254
- payload JSON
255
- timestamp DATETIME
256
- ```
257
-
258
- ## Plan Package Contract
259
-
260
- Product plan packages use this structure:
261
-
262
- ```text
263
- .planr/plans/product/<slug>/
264
- README.md
265
- PRODUCT_SPEC.md
266
- UX_FLOWS.md
267
- DESIGN_SYSTEM_SPEC.md
268
- TECH_ARCHITECTURE.md
269
- ADRS.md
270
- AI_SPEC.md
271
- SAFETY_PRIVACY_SECURITY.md
272
- API_AND_DATA_MODEL.md
273
- CLIENT_IMPLEMENTATION_SPEC.md
274
- BACKEND_IMPLEMENTATION_SPEC.md
275
- ANALYTICS_OBSERVABILITY_SPEC.md
276
- QA_ACCEPTANCE_TESTS.md
277
- RELEASE_READINESS.md
278
- TASKS.md
279
- REFERENCES.md
280
- ```
281
-
282
- - REQ-API-001: Plan packages must include a manifest with generated date, source prompt, assumptions, and included documents.
283
- - REQ-API-002: Plan work lists are candidate work, not live map items until accepted.
284
-
285
- ## Build Plan Contract
286
-
287
- Plan files use this minimum shape:
288
-
289
- ```markdown
290
- ---
291
- name: short-name
292
- overview: One paragraph.
293
- todos:
294
- - id: phase-1
295
- content: Summary item.
296
- status: pending
297
- isProject: false
298
- ---
299
-
300
- # Plan Title
301
-
302
- ## Scope Decision
303
- ## Ownership Target
304
- ## Existing Leverage
305
- ## Phase 1: ...
306
- ## Out Of Scope
307
- ## Verification
308
- ## Acceptance Criteria
309
- ```
310
-
311
- - REQ-API-010: Plan parsing must preserve unknown frontmatter fields.
312
- - REQ-API-011: Plan parsing failure must not delete or rewrite the original Markdown.
313
- - REQ-API-012: Closure status must not be inferred solely from Markdown checkboxes.
314
-
315
- ## CLI API
316
-
317
- ### Project
318
-
319
- ```bash
320
- planr project init [--client codex|claude|cursor|all] [--force]
321
- planr project show [--json]
322
- planr project list [--json]
323
- planr doctor [--client codex|claude|cursor|all]
324
- planr install codex|claude|cursor [--dry-run]
325
- planr prompt cli|mcp|http [--client codex|claude|cursor|all]
326
- planr mcp
327
- planr serve --port 7526
328
- planr import <file> [--preview] [--confirm]
329
- planr export --out planr.json [--include-plans] [--include-logs] [--template-name "..."] [--tag tag]
330
- ```
331
-
332
- ### Plan
333
-
334
- ```bash
335
- planr plan new "App idea" [--platform web] [--ai] [--backend]
336
- planr plan refine <plan-id>
337
- planr plan split <plan-id> --slice "MVP backend"
338
- planr plan check <plan-id>
339
- planr plan show <plan-id>
340
- planr plan archive <plan-id>
341
- ```
342
-
343
- ### Map
344
-
345
- ```bash
346
- planr map show
347
- planr map build --from <plan-id>
348
- planr map status
349
- planr map preview --close <item-id>
350
- planr map unlocks <item-id>
351
- planr map lookahead [--from <item-id>]
352
- planr item create "title" --description "..." [--after item-id] [--timeout-seconds N] [--max-retries N] [--retry-backoff fixed|exponential] [--retry-delay-ms N] [--pre "..."] [--post "..."]
353
- planr item breakdown <item-id> --into "A, B, C"
354
- planr item insert "title" --description "..." --after <item-id> [--before <item-id>] [--preview|--confirm]
355
- planr item amend <item-id> --note "..."
356
- planr item replan <parent-id> --into "A, B, C" [--preview|--confirm]
357
- planr link add <from-item> <to-item> --type blocks
358
- planr pick
359
- planr pick release <item-id> [--force]
360
- planr pick heartbeat [item-id]
361
- planr pick progress <item-id> --percent 0..100 [--note "..."]
362
- planr pick pause <item-id> [--note "..."]
363
- planr pick resume <item-id>
364
- planr pick stale [--older-than-seconds 900] [--release]
365
- planr recover sweep [--older-than-seconds 900] [--apply]
366
- planr approval request <item-id> [--reason "..."]
367
- planr approval approve <item-id> --by "name" [--comment "..."]
368
- planr approval deny <item-id> --by "name" [--comment "..."]
369
- planr approval list [--open]
370
- planr artifact add "name" [--item <item-id>] [--kind evidence] [--path file] [--content "..."]
371
- planr artifact show <artifact-id>
372
- planr artifact list [--item <item-id>]
373
- planr event list [--item <item-id>] [--limit 50]
374
- planr debug bundle [--item <item-id>] --preview
375
- planr log add --item <item-id> --summary "..." [--files a,b] [--cmd "..."]
376
- planr review request <item-id>
377
- planr review annotate <item-id> --message "..." [--severity info|warning|blocking] [--file path] [--line N] [--author "..."]
378
- planr review ingest <item-id> (--from feedback.json|--stdin)
379
- planr review artifact <review-item-id> [--out path]
380
- planr review evidence <item-id> [--pr-url https://...]
381
- planr review close <review-item-id> --verdict complete|not-complete|unclear [--close-target]
382
- planr close [item-id] --summary "..." [--next]
383
- planr done [item-id] --summary "..." [--files a --files b] [--cmd "..."] [--tests "..."] [--review] [--next]
384
- planr map lane --critical
385
- planr map pressure
386
- ```
387
-
388
- ## MCP Tools
389
-
390
- - `planr_project_show`
391
- - `planr_map_show`
392
- - `planr_map_status`
393
- - `planr_map_preview`
394
- - `planr_map_unlocks`
395
- - `planr_map_lookahead`
396
- - `planr_plan_create`
397
- - `planr_plan_refine`
398
- - `planr_plan_split`
399
- - `planr_plan_check`
400
- - `planr_plan_link`
401
- - `planr_map_build`
402
- - `planr_item_create`
403
- - `planr_item_breakdown`
404
- - `planr_item_insert`
405
- - `planr_item_amend`
406
- - `planr_item_replan`
407
- - `planr_pick_item`
408
- - `planr_pick_heartbeat`
409
- - `planr_pick_progress`
410
- - `planr_pick_pause`
411
- - `planr_pick_resume`
412
- - `planr_pick_stale`
413
- - `planr_recover_sweep`
414
- - `planr_approval_request`
415
- - `planr_approval_approve`
416
- - `planr_approval_deny`
417
- - `planr_approval_list`
418
- - `planr_artifact_add`
419
- - `planr_artifact_list`
420
- - `planr_artifact_show`
421
- - `planr_event_list`
422
- - `planr_debug_bundle`
423
- - `planr_log_add`
424
- - `planr_review_annotate`
425
- - `planr_review_ingest`
426
- - `planr_review_artifact`
427
- - `planr_review_evidence`
428
- - `planr_review_close`
429
- - `planr_close_item`
430
- - `planr_context_create`
431
- - `planr_search`
432
- - `planr_log_read`
433
-
434
- ## MCP Resources
435
-
436
- - `planr://project/context`
437
- - `planr://project/map`
438
- - `planr://item/{id}`
439
- - `planr://plan/{id}`
440
- - `planr://log/{id}`
441
-
442
- ## MCP Prompts
443
-
444
- - `planr-plan`
445
- - `planr-work`
446
- - `planr-review`
447
- - `planr-map`
448
- - `planr-summary`
449
-
450
- ## HTTP API
451
-
452
- HTTP is optional in V1 and localhost-only by default.
453
-
454
- ```text
455
- GET /review
456
- GET /v1/review-workspace
457
- GET /v1/projects
458
- POST /v1/projects
459
- GET /v1/projects/:id/map
460
- GET /v1/projects/:id/items
461
- POST /v1/projects/:id/items
462
- POST /v1/pick
463
- POST /v1/items/:id/heartbeat
464
- POST /v1/items/:id/progress
465
- POST /v1/items/:id/pause
466
- POST /v1/items/:id/resume
467
- POST /v1/items/:id/approval/request
468
- POST /v1/items/:id/approval/approve
469
- POST /v1/items/:id/approval/deny
470
- GET /v1/approvals?open=true
471
- POST /v1/artifacts
472
- GET /v1/artifacts
473
- GET /v1/artifacts/:id
474
- GET /v1/events
475
- GET /v1/debug/bundle
476
- POST /v1/items/:id/log
477
- POST /v1/items/:id/close
478
- POST /v1/items/:id/reviews
479
- POST /v1/items/:id/review-annotations
480
- GET /v1/items/:id/review-evidence
481
- POST /v1/items/:id/review-evidence
482
- POST /v1/items/:id/review-feedback
483
- POST /v1/reviews/:id/close
484
- POST /v1/reviews/:id/artifact
485
- GET /v1/reviews/:id/artifact
486
- POST /v1/contexts
487
- GET /v1/search?q=...
488
- GET /v1/events/stream
489
- ```
490
-
491
- ## Error Model
492
-
493
- ```json
494
- {
495
- "error": {
496
- "code": "not_found",
497
- "message": "item not found",
498
- "details": {}
499
- }
500
- }
501
- ```
502
-
503
- Required codes:
504
-
505
- - bad_request
506
- - not_found
507
- - conflict
508
- - invalid_transition
509
- - locked
510
- - parse_error
511
- - unauthorized_remote
512
- - internal_error
513
-
514
- ## Retention
515
-
516
- - Local database persists until user deletes it.
517
- - Plan files persist in Git/repo unless archived or deleted.
518
- - Log persists locally by default.
519
- - Full transcript retention is off by default.