backnotprop/plannotator
The workspace to stay in the loop and on top of agents - shape, decide, plan, annotate, review code, share with team, and send all feedback to agents with one click.
The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
Most complex files
- packages/inbox/App.tsx3833 cx
- packages/inbox/components/Thread.tsx3749 cx
- packages/shared/inbox/store.ts3285 cx
- packages/server/inbox.ts2879 cx
- packages/editor/App.tsx2433 cx
- packages/review-editor/App.tsx2030 cx
- packages/inbox/components/AttachmentPane.tsx1326 cx
- packages/server/review.ts1163 cx
- apps/pi-extension/server/serverReview.ts1159 cx
- packages/inbox/compose/ComposeDialog.tsx1069 cx
Dead code 0.66% unused · 221 findings
- packages/server/doc-any-path.scenarios.tsunused-file
- packages/ui/components/Landing.tsxunused-file
- packages/server/annotate-draft.scenarios.tsunused-file
- packages/server/state-route-guards.scenarios.tsunused-file
- packages/server/linked-document-drafts.scenarios.tsunused-file
- packages/server/annotate-bundle.scenarios.tsunused-file
- packages/system/scripts/measure.mjsunused-file
- packages/inbox/cssCascade.testing.tsunused-file
- packages/inbox/keyboard/model.tsunused-file
- packages/server/ref-card-route.scenarios.tsunused-file
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code, and 4 generated files: apps/hook/hooks/mod/inbox-default-tools.ts, packages/inbox/pulls/githubShortcodes.ts, packages/shared/shape/stamp-data.ts, packages/system/src/recipe/text.ts.
Largest clones in the code
- 1986 lines in 2 placestypescript10,121 tokens
11export const INBOX_TOOL_NAME = 'plannotator_inbox' 12 13/** 14 * The Inbox MCP tools the agent tool may carry, in the order it lists them. 15 * Only those the running Inbox offers become actions; an Inbox without one 16 * (an older binary) simply has no such action. 17 */ 18export const INBOX_TOOL_ACTIONS = [ 19 'send_message', 20 'read_thread',First 10 of 1986 lines.
- 885 lines in 2 placestypescript4,672 tokens
13export const PLANNOTATOR_TOOL_NAME = 'plannotator' 14 15export type PlannotatorToolAction = 'annotate' | 'review' | 'last' | 'list' | 'close' 16 17/** The actions that open a review page. */ 18export type PlannotatorToolOpenAction = 'annotate' | 'review' | 'last' 19 20export interface PlannotatorToolInput { 21 action: PlannotatorToolAction 22 /**First 10 of 885 lines.
- 241 lines in 2 placestypescript1,459 tokens
1664 : buildAgentReviewUserMessage(launchPatch, launchDiffType as DiffType, userMessageOptions, launchPrMeta, isCustomReview); 1665const jobLabel = workspacePrompt ? "Workspace Review" : "Code Review"; 1666 1667if (provider === "codex") { 1668 const model = typeof config?.model === "string" && config.model ? config.model : undefined; 1669 const reasoningEffort = typeof config?.reasoningEffort === "string" && config.reasoningEffort ? config.reasoningEffort : undefined; 1670 const fastMode = config?.fastMode === true; 1671 const outputPath = generateOutputPath(); 1672 const prompt = composeCodexReviewPrompt(userMessage, reviewProfile); 1673 const command = await buildCodexCommand({ cwd, outputPath, prompt, model, reasoningEffort, fastMode });First 10 of 241 lines.
7 more
- 96 lines in 2 placestypescript587 tokens
- 72 lines in 2 placestypescript506 tokens
- 81 lines in 2 placestypescript492 tokens
- 41 lines in 2 placestypescript365 tokens
- 25 lines in 3 placestsx173 tokens
- 14 lines in 3 placestypescript172 tokens
- 56 lines in 2 placestypescript329 tokens
Largest clones over all files, tests and data included
- 1986 lines in 2 placestypescript10,121 tokens
11export const INBOX_TOOL_NAME = 'plannotator_inbox' 12 13/** 14 * The Inbox MCP tools the agent tool may carry, in the order it lists them. 15 * Only those the running Inbox offers become actions; an Inbox without one 16 * (an older binary) simply has no such action. 17 */ 18export const INBOX_TOOL_ACTIONS = [ 19 'send_message', 20 'read_thread',First 10 of 1986 lines.
- 66 lines in 24 placesjsontests206 tokenspackages/shared/inbox/fixtures/thread-state/v1/gen-seed-1001.json:7–72packages/shared/inbox/fixtures/thread-state/v1/gen-seed-1002.json:7–72packages/shared/inbox/fixtures/thread-state/v1/gen-seed-1003.json:7–72packages/shared/inbox/fixtures/thread-state/v1/gen-seed-1004.json:7–72packages/shared/inbox/fixtures/thread-state/v1/gen-seed-1005.json:7–72and 19 more
7"seed": 1001, 8"clock": { 9 "start": "2026-10-12T10:00:00.000Z", 10 "step_ms": 1000 11}, 12"known_violations": [], 13"steps": [ 14 { 15 "event": { 16 "type": "agent_message",First 10 of 66 lines.
- 885 lines in 2 placestypescript4,672 tokens
13export const PLANNOTATOR_TOOL_NAME = 'plannotator' 14 15export type PlannotatorToolAction = 'annotate' | 'review' | 'last' | 'list' | 'close' 16 17/** The actions that open a review page. */ 18export type PlannotatorToolOpenAction = 'annotate' | 'review' | 'last' 19 20export interface PlannotatorToolInput { 21 action: PlannotatorToolAction 22 /**First 10 of 885 lines.
- 6 lines in 41 placestsxtests67 tokens
- 321 lines in 2 placestypescripttests2,370 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 1,742 | 431,758 | 714 | 12,576 | 2.91% |
| tsx | 647 | 211,263 | 288 | 3,346 | 1.58% |
| css | 14 | 2,911 | 15 | 139 | 4.77% |
| html | 29 | 2,748 | 10 | 87 | 3.17% |
| javascript | 25 | 3,982 | 5 | 101 | 2.54% |
| powershell | 2 | 2,971 | 2 | 15 | 0.5% |
| bash | 14 | 4,911 | 1 | 6 | 0.12% |
| astro | 29 | 6,690 | 0 | 0 | 0% |
| python | 5 | 1,277 | 0 | 0 | 0% |
| sql | 2 | 77 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 3,681 | 917,108 | 5,061 | 55,863 | 6.09% |
| tsx | 1,368 | 414,506 | 3,906 | 44,534 | 10.74% |
| json | 167 | 54,751 | 1,305 | 43,743 | 79.89% |
| css | 110 | 19,267 | 92 | 1,211 | 6.29% |
| yaml | 51 | 8,300 | 50 | 699 | 8.42% |
| markdown | 258 | 42,437 | 33 | 420 | 0.99% |
| markup | 44 | 4,076 | 31 | 227 | 5.57% |
| bash | 80 | 10,236 | 10 | 108 | 1.06% |
| html | 30 | 2,758 | 10 | 87 | 3.15% |
| javascript | 34 | 5,943 | 8 | 124 | 2.09% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Nov 14, 2026 | #5 | 10,536 (+108) | 5,941 | 1,498,079 | 10,511 | 9.82% | 2.43% | C 57.8 | 4638c7a |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.