Repository navigation
Conversation
New tool to manage project dependencies across multiple package managers: - npm, pip, go, cargo, bun, brew - Actions: install, update, remove, list, audit, outdated - Auto-detects package manager from lockfiles - Input validation per manager for security - Permission prompts for destructive actions - Timeout handling (120s)
jatmn
left a comment
There was a problem hiding this comment.
Findings
-
[P1] Register the new tool with the runtime tool list
src/tools.ts:182
The PR addsPackageManagerTool, but it is never imported intosrc/tools.tsor appended togetAllBaseTools().getTools()is built from that list, and the only references I can find are inside the new tool/test/prompt files, so users will never see or be able to call this tool despite the PR's stated user-facing impact. Please wire the tool into the same registry path as the other built-ins and add a regression test thatgetToolsForDefaultPreset()orgetTools()includesPackageManager. -
[P2] Show the exact manager/path/command in permission prompts
src/tools/PackageManagerTool/PackageManagerTool.ts:140
The permission prompt only saysRun "install" on lodash?, but this tool can run different binaries, mutate different working directories viapath, and change behavior with flags such asglobal,dev, ordryRun. For dependency management, the user needs to approve the actual command context, not just the high-level action/package list. Please build and display the resolved manager, target path, and arguments in the permission message before executing. -
[P2] Recommit the new source files as UTF-8 text
src/tools/PackageManagerTool/PackageManagerTool.ts:1
The three new TypeScript files are committed as UTF-16 LE, so GitHub andgit diff --numstatclassify them as binary (Binary files /dev/null and ... differ). That prevents normal inline review, hides future diffs/blame from common text tooling, and evengit grepskips these files. Please convertPackageManagerTool.ts,PackageManagerTool.test.ts, andprompt.tsto the repo's normal UTF-8 encoding before merge.
|
Thanks for this — a unified package-manager tool across npm/pip/cargo/etc. is a useful idea, and using Reviewed independently alongside @jatmn's review, and his three points are correct: the tool isn't registered in If you can address those and re-push, I'd be happy to take another pass — the underlying approach is sound and close. |
Closing as Bulk Tool AdditionThis PR is being closed because it follows the same pattern as your previous bulk tool PRs (#1139, #1131, #1130, #1129, #1128) which were also closed. Why we're closing:
How to contribute tools properly:
If you believe these tools are valuable, please open a discussion issue first. |
|
Closed — bulk tool addition without prior maintainer discussion. |
…wigpine#1196) P1 (use-input.ts:64-68): skip setRawMode(true) on isActive false->true when a deferred reset is pending, preventing counter over-increment that leaked raw mode on final unmount. Test updated to assert balanced 1-then-1 call pattern (no redundant setRawMode(true)). P2 (package.json, externals.ts): move @testing-library/react-hooks from dependencies to devDependencies; remove from INTENTIONALLY_BUNDLED.
* fix: preserve raw mode across component re-renders (issue #843) * fix(input): only reset raw mode on explicit isActive=false, not on MCP re-render churn (issue #843) * fix: balance raw mode for isActive false transitions + add regression test Fixes the issue where cleanup closes over stale isActive=true and returns early without calling setRawMode(false), leaving rawModeEnabledCount incremented after UI no longer has active useInput. Changes: - Use a ref to track whether raw mode was actually enabled - Check the ref in cleanup instead of stale isActive closure value - Add 6 regression tests covering the true->false/unmount paths Addresses jatmn's review feedback: 'fix raw mode balance for isActive: false transitions' * fix(input): debounce raw-mode reset to survive MCP re-render churn (issue #843) * fix: add react-test-renderer dep and fix use-input test for CI - Add react-test-renderer devDependency (required by @testing-library/react-hooks) - Add @testing-library/react-hooks to INTENTIONALLY_BUNDLED in externals.ts - Fix use-input.test.ts 'MCP re-render churn' test to use isActive rerender instead of separate renderHook calls (refs don't persist across instances) * fix: address P1 raw-mode counter imbalance and P2 test-dep scope (PR #1196) P1 (use-input.ts:64-68): skip setRawMode(true) on isActive false->true when a deferred reset is pending, preventing counter over-increment that leaked raw mode on final unmount. Test updated to assert balanced 1-then-1 call pattern (no redundant setRawMode(true)). P2 (package.json, externals.ts): move @testing-library/react-hooks from dependencies to devDependencies; remove from INTENTIONALLY_BUNDLED.
… (Twigpine#1198) * fix: preserve raw mode across component re-renders (issue Twigpine#843) * fix(input): only reset raw mode on explicit isActive=false, not on MCP re-render churn (issue Twigpine#843) * fix: balance raw mode for isActive false transitions + add regression test Fixes the issue where cleanup closes over stale isActive=true and returns early without calling setRawMode(false), leaving rawModeEnabledCount incremented after UI no longer has active useInput. Changes: - Use a ref to track whether raw mode was actually enabled - Check the ref in cleanup instead of stale isActive closure value - Add 6 regression tests covering the true->false/unmount paths Addresses jatmn's review feedback: 'fix raw mode balance for isActive: false transitions' * fix(input): debounce raw-mode reset to survive MCP re-render churn (issue Twigpine#843) * fix: add react-test-renderer dep and fix use-input test for CI - Add react-test-renderer devDependency (required by @testing-library/react-hooks) - Add @testing-library/react-hooks to INTENTIONALLY_BUNDLED in externals.ts - Fix use-input.test.ts 'MCP re-render churn' test to use isActive rerender instead of separate renderHook calls (refs don't persist across instances) * fix: address P1 raw-mode counter imbalance and P2 test-dep scope (PR Twigpine#1196) P1 (use-input.ts:64-68): skip setRawMode(true) on isActive false->true when a deferred reset is pending, preventing counter over-increment that leaked raw mode on final unmount. Test updated to assert balanced 1-then-1 call pattern (no redundant setRawMode(true)). P2 (package.json, externals.ts): move @testing-library/react-hooks from dependencies to devDependencies; remove from INTENTIONALLY_BUNDLED.
Summary
Impact
Testing
Notes