| feat(tool): align edit_file/read_file with robust edit design
- Partial reads now register write snapshots, allowing edits after
ranged read_file calls instead of requiring a full read
- Layered stale check: full-read snapshots fall back to content hash
comparison; partial-read snapshots reject on mtime change directly
- Persist writeSnapshots and readFileState across session recreation
via AgentLoop.snapshotFileState → TurnRunner → AgentSession →
createLocalGateway.recreateSession seedState pipeline
- Two-level old_string matching: exact match first, then curly-quote
normalized match via new editNormalization.ts module
- Pre-process new_string: strip trailing whitespace (except markdown)
- Improved error messages: echo old_string on not-found, show match
count on ambiguous matches
- Tool descriptions now explicitly state read-before-write constraint
and character-exact old_string requirement
- Updated and added tests covering all new behavior (30 tests pass)
Co-authored-by: Cursor <cursoragent@cursor.com>
| 8 天前 |
| fix(security): Windows permission compatibility
- Add Windows dangerous command deny patterns: Remove-Item -Recurse,
del /s, rd /s, Format-Volume, iex+iwr, Start-Process RunAs,
Set-ExecutionPolicy, Stop-Process -Force
- Add Windows safe-read patterns: Get-ChildItem, Get-Content, dir, type, etc.
- Block Windows device paths: CON, NUL, COM, LPT, PhysicalDrive, \\.\, \\?\
- Platform-aware quick-block shortcuts in permissions settings UI
- SnapshotCopyProvider: use PowerShell for directory size on Windows
Co-authored-by: tp <tp@t14-windows>
Co-authored-by: Cursor <cursoragent@cursor.com>
| 9 天前 |
| feat: add tool and agent runtime foundations
Build the PolitDeck tool/permission runtime and start the agent loop on canonical model/tool contracts so future refactors can prove parity against legacy behavior.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 26 天前 |
| fix(wcb): widen workspace path boundary for bypassPermissions mode
- pathSafety.ts: skip root-check when permissionMode is bypassPermissions
- createLocalGateway: add additionalWorkingDirectories option to gateway
- run_pilotdeck.mjs: pass ["/tmp", "/workspace"] as additional roots
Co-authored-by: Cursor <cursoragent@cursor.com>
| 20 天前 |
| feat(tool): align edit_file/read_file with robust edit design
- Partial reads now register write snapshots, allowing edits after
ranged read_file calls instead of requiring a full read
- Layered stale check: full-read snapshots fall back to content hash
comparison; partial-read snapshots reject on mtime change directly
- Persist writeSnapshots and readFileState across session recreation
via AgentLoop.snapshotFileState → TurnRunner → AgentSession →
createLocalGateway.recreateSession seedState pipeline
- Two-level old_string matching: exact match first, then curly-quote
normalized match via new editNormalization.ts module
- Pre-process new_string: strip trailing whitespace (except markdown)
- Improved error messages: echo old_string on not-found, show match
count on ambiguous matches
- Tool descriptions now explicitly state read-before-write constraint
and character-exact old_string requirement
- Updated and added tests covering all new behavior (30 tests pass)
Co-authored-by: Cursor <cursoragent@cursor.com>
| 8 天前 |
| feat(tools): enrich read_file multimodal support
Add numbered text ranges, PDF/image/notebook reads, unchanged-read stubs, and multimodal tool_result handling so rich file reads reach providers without being downgraded to text.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 15 天前 |
| refactor: rename Polit/PolitDeck to Pilot/PilotDeck across entire codebase
Automated global rename covering all case variants:
- PolitDeck → PilotDeck, politdeck → pilotdeck, POLITDECK → PILOTDECK
- Polit → Pilot, polit → pilot, POLIT → PILOT, politDeck → pilotDeck
Includes:
- 648 content replacements across 200+ source files
- 24 file renames + 3 directory renames (src/polit→pilot, tests/polit→pilot, docs/polit-config→pilot-config)
- package.json name, bin, env vars updated
- package-lock.json regenerated
- "Politely" in server-manager.ts preserved via placeholder mechanism
- All 587 unit tests pass, tsc --noEmit clean
- E2E tests verified against real OpenRouter API (model, tool-use, context, lifecycle hooks)
Co-authored-by: Cursor <cursoragent@cursor.com>
| 24 天前 |
| fix(tool): embed ripgrep binary via @vscode/ripgrep to eliminate system PATH dependency
glob and grep tools previously required rg on the system PATH, causing
both to fail with unsupported_tool on servers without ripgrep installed.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 10 天前 |
| feat(tools): align grep with ripgrep behavior
Wrap grep with ripgrep, expand the tool schema, and make pagination consistent across content, file, and count modes so agent search behaves closer to Claude Code.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 15 天前 |
| feat(tools): harden write_file overwrite workflow
Require full-file reads before overwriting existing files and return structured write metadata so hosts can react to file updates safely.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 15 天前 |
| feat: add tool and agent runtime foundations
Build the PolitDeck tool/permission runtime and start the agent loop on canonical model/tool contracts so future refactors can prove parity against legacy behavior.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 26 天前 |
| feat(tool): align edit_file/read_file with robust edit design
- Partial reads now register write snapshots, allowing edits after
ranged read_file calls instead of requiring a full read
- Layered stale check: full-read snapshots fall back to content hash
comparison; partial-read snapshots reject on mtime change directly
- Persist writeSnapshots and readFileState across session recreation
via AgentLoop.snapshotFileState → TurnRunner → AgentSession →
createLocalGateway.recreateSession seedState pipeline
- Two-level old_string matching: exact match first, then curly-quote
normalized match via new editNormalization.ts module
- Pre-process new_string: strip trailing whitespace (except markdown)
- Improved error messages: echo old_string on not-found, show match
count on ambiguous matches
- Tool descriptions now explicitly state read-before-write constraint
and character-exact old_string requirement
- Updated and added tests covering all new behavior (30 tests pass)
Co-authored-by: Cursor <cursoragent@cursor.com>
| 8 天前 |
| fix(tools): align filesystem tool contracts with claude code
Rename the shared filesystem tool inputs to Claude-style parameter names and expand their tool descriptions while preserving PilotDeck-specific behavior.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 16 天前 |