Files
backnotprop__plannotator/package.json
T
Alexander Kolberg 54c206c77d Add ~ support for user-entered file paths (#572)
* refactor(path): centralize user path resolution

* fix(annotate): resolve user paths in file entrypoints

* fix(pi-extension): restore resolve import and add typecheck to CI

The refactor removed `resolve` from `node:path` imports, but `resolvePlanPath()`
and the planning-mode write/edit guards still call `resolve(...)`. That breaks
plan submission and plan-file restriction at runtime for Pi users.

Also wires pi-extension's tsconfig into the root `typecheck` script so CI
catches this class of missing-symbol regression in the future. Required
adding @mariozechner/pi-* packages as explicit devDependencies so tsc can
resolve them (they were previously only reachable transitively via the
peer dep, which Bun keeps in its `.bun/` store unhoisted).

For provenance purposes, this commit was AI assisted.

* fix(path): reject whitespace-only user paths and run vendor before typecheck

resolveUserPath() trims input, so whitespace-only customPath/vaultPath
resolved to process.cwd(). Plans silently wrote into the repo root and
Obsidian notes landed in <cwd>/plannotator/ instead of erroring.

Guard at both call sites (getPlanDir, saveToObsidian — Bun + Pi copies).

Also prepend vendor.sh to the root typecheck script so fresh-clone
`bun run typecheck` works without a separate vendoring step.

For provenance purposes, this commit was AI assisted.

* fix(path): short-circuit resolveUserPath on empty input

Trimming in normalizeUserPathInput meant whitespace-only input resolved
to cwd/baseDir. Callers like the annotate CLI and reference API endpoints
would then list the project root instead of erroring. Return "" early so
downstream existsSync/resolveMarkdownFile checks fail naturally.

For provenance purposes, this commit was AI assisted.

---------

Co-authored-by: Michael Ramos <mdramos8@gmail.com>
2026-04-19 16:54:15 -07:00

52 lines
2.1 KiB
JSON

{
"name": "plannotator",
"version": "0.17.10",
"private": true,
"description": "Interactive Plan Review for Claude Code - annotate plans visually, share with team, automatically send feedback",
"author": "backnotprop",
"license": "MIT OR Apache-2.0",
"repository": {
"type": "git",
"url": "git+https://github.com/backnotprop/plannotator.git"
},
"homepage": "https://github.com/backnotprop/plannotator",
"bugs": {
"url": "https://github.com/backnotprop/plannotator/issues"
},
"workspaces": ["apps/*", "packages/*"],
"scripts": {
"dev:hook": "bun run --cwd apps/hook dev",
"dev:portal": "bun run --cwd apps/portal dev",
"dev:marketing": "bun run --cwd apps/marketing dev",
"dev:review": "bun run --cwd apps/review dev",
"build:hook": "bun run --cwd apps/hook build",
"build:portal": "bun run --cwd apps/portal build",
"build:marketing": "bun run --cwd apps/marketing build",
"build:opencode": "bun run --cwd apps/opencode-plugin build",
"build:review": "bun run --cwd apps/review build",
"build:pi": "bun run build:review && bun run build:hook && bun run --cwd apps/pi-extension build",
"build": "bun run build:hook && bun run build:opencode",
"dev:vscode": "bun run --cwd apps/vscode-extension watch",
"build:vscode": "bun run --cwd apps/vscode-extension build",
"package:vscode": "bun run --cwd apps/vscode-extension package",
"test": "bun test",
"typecheck": "bash apps/pi-extension/vendor.sh && tsc --noEmit -p packages/shared/tsconfig.json && tsc --noEmit -p packages/ai/tsconfig.json && tsc --noEmit -p packages/server/tsconfig.json && tsc --noEmit -p apps/pi-extension/tsconfig.json"
},
"dependencies": {
"@anthropic-ai/claude-agent-sdk": "^0.2.92",
"@openai/codex-sdk": "^0.118.0",
"@opencode-ai/sdk": "^1.3.0",
"@pierre/diffs": "^1.1.12",
"diff": "^8.0.4",
"dockview-react": "^5.2.0",
"dompurify": "^3.3.3",
"marked": "^17.0.6"
},
"devDependencies": {
"@types/dompurify": "^3.2.0",
"@types/node": "^25.5.2",
"@types/turndown": "^5.0.6",
"bun-types": "^1.3.11"
}
}