文件最后提交记录最后更新时间
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 天前
feat: improve attachment and tool result handling Co-authored-by: Cursor <cursoragent@cursor.com> 15 天前
chore: scrub stale claudecodeui/claude-code-main residuals Remove legacy brand leftovers from the pre-PilotDeck era so the repo stops mentioning unrelated upstream projects and stops carrying parity fixtures that point at a third-party tree no longer present. - Drop src/context/memory/edgeclaw-memory-core/README.md (old CloudCLI install guide that referenced a claude-code-main/ sibling dir). - Delete tests + fixtures whose only purpose was to assert byte-for-byte parity against third-party/claude-code-main/** (legacy-behavior tool scenarios, dual-parity legacy context scenarios, the parity test helper, and the six parity-* tests that consumed them). - Rewrite stale code comments in apps/desktop, src/context/compaction, src/agent/sub, src/context/memory/.../app.css and PermissionsSettingsTab to drop dangling third-party/claude-code-main/... mirror references and rename claudecodeui -> PilotDeck ui/server / ui shell. - Repoint the auth-screen "PilotDeck is open source" footer link from github.com/siteboon/claudecodeui to github.com/OpenBMB/PilotDeck. - Align memory source tag written by ui/server with the one used by the in-process src/** provider (claudecodeui -> pilotdeck) so the memory_turns SQLite column is consistent across both write paths. - Update VAPID web-push contact mailto domain (claudecodeui.local -> pilotdeck.local). - Drop two stale .gitignore entries for bundle tarballs that the current build pipeline never produces. CCR (/api/ccr/* routes, CCRConfig types, <ccr-subagent-model> tag, CCR_SENTINEL) is intentionally untouched — those are kept for frontend back-compat. Comparison mentions of "Claude Code" / "Claude Sonnet 4.6" in README marketing copy are also intentional and untouched. Co-authored-by: Cursor <cursoragent@cursor.com> 8 天前
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 天前
feat(context): land Phase 1.5–6 context module + dual-parity probes Implements all six phases of the context module rewrite per docs/politdeck-context-refactor-development-guide.md: - Phase 1.5: CanonicalModelErrorCode (PTL/RTL/MOR), case-insensitive PTL classification on both Anthropic and OpenAI protocols, anthropic signature_delta → CanonicalThinkingBlock.signature, control_boundary schema with compactMetadata + microcompactMetadata, transcript recordControlBoundary + replay slicing, ProjectSessionStorage toolResultsDir. - Phase 2: ContextRuntime full protocol, 5-section PromptAssembler (default / user / system / custom / append), MessageProjector with tool-call/result pairing repair + sliding window, DefaultContextRuntime. - Phase 3: ToolResultBudget replaces oversized tool_results with the new CanonicalToolResultReferenceBlock and persists originals to disk (write-exclusive flag). - Phase 4: InputProcessor three-layer slash-command dispatch driven by ExtensionResolver, AttachmentResolver for text / base64 image / pdf size estimation (intentional difference vs poppler/sharp). - Phase 5: TokenBudgetManager (char/4 + multimedia constant), CompactionEngine with legacy buildPostCompactMessages ordering (B→S→K→A→H), AutoCompactionPolicy thresholds, MicroCompactionEngine time-based path, ContextOverflowRecovery (50% / 25% / give_up). - Phase 6: PluginRuntimeExtensionResolver bridging PolitDeckLoadedPlugin commands/skills, MemoryAttachmentBuilder feeding MemoryResolver output into the prompt. Adds a dual-parity test suite (tests/context/parity + tests/fixtures/context/dual-parity) covering rough_token estimation, findLastCompactBoundaryIndex, buildPostCompactMessages ordering, truncateHead keepRatio, and PTL classification — each scenario cites its legacy source path so updates can be retraced. New module 245/245 unit tests pass; OpenRouter Kimi K2.6 e2e for both agent tool-use and DefaultContextRuntime prompt flow are green. Also bundles the previously uncommitted TUI e2e tracing helpers (scripts/tui-e2e-record.tsx Proxy wrapWithTrace, ActivityLine spinner) that supported the context refactor debugging. Co-authored-by: Cursor <cursoragent@cursor.com> 25 天前
chore(branding): complete cleanup of legacy CloudCLI/Claude Code references - CLOUDCLI_DISABLE_LOCAL_AUTH → PILOTDECK_DISABLE_LOCAL_AUTH - CLOUDCLI_CRON_DAEMON_* → PILOTDECK_CRON_DAEMON_* - CLOUDCLI_GITHUB_STARS → PILOTDECK_GITHUB_STARS - ~/.claude-code-ui/plugins/ → ~/.pilotdeck/plugins/ - claudecodeui-server → pilotdeck-server - edgeClawConfig i18n key → pilotDeckConfig (248 refs in TSX + settings.json) - claude-code-main source provenance comments → generic descriptions - CloudCLI user-facing strings → PilotDeck - DEFAULT_PROVIDER_FALLBACK "edgeclaw" → "pilotdeck" - .claude/ config home → .pilotdeck/ in cron daemon services Co-authored-by: Cursor <cursoragent@cursor.com> 9 天前
fix: commit edgeclaw-memory-core built lib/, fix Dockerfile - Remove lib/ from .gitignore so compiled output ships with the repo - Build and commit edgeclaw-memory-core/lib/ so deployment works out of the box - Add auto-build step to root prebuild script - Fix Dockerfile: use npm instead of pnpm, add memory-core build step Co-authored-by: Cursor <cursoragent@cursor.com> 7 天前
fix(context): handle tool_result_reference in pairing, projection, and subagent filtering Treat tool_result_reference as a valid tool result in collectToolResultIds, stripUnpairedToolResults, repairToolResultPairing, isToolResultOnly, and filterIncompleteToolCalls so externalized results are not orphaned. Co-authored-by: Cursor <cursoragent@cursor.com> 20 天前
fix(plan): let agents manage plan files Allow plan mode agents to create and choose markdown plan files under .pilotdeck/plans, and require exit_plan_mode to submit an explicit plan_file_path. Co-authored-by: Cursor <cursoragent@cursor.com> 14 天前
chore(branding): complete cleanup of legacy CloudCLI/Claude Code references - CLOUDCLI_DISABLE_LOCAL_AUTH → PILOTDECK_DISABLE_LOCAL_AUTH - CLOUDCLI_CRON_DAEMON_* → PILOTDECK_CRON_DAEMON_* - CLOUDCLI_GITHUB_STARS → PILOTDECK_GITHUB_STARS - ~/.claude-code-ui/plugins/ → ~/.pilotdeck/plugins/ - claudecodeui-server → pilotdeck-server - edgeClawConfig i18n key → pilotDeckConfig (248 refs in TSX + settings.json) - claude-code-main source provenance comments → generic descriptions - CloudCLI user-facing strings → PilotDeck - DEFAULT_PROVIDER_FALLBACK "edgeclaw" → "pilotdeck" - .claude/ config home → .pilotdeck/ in cron daemon services Co-authored-by: Cursor <cursoragent@cursor.com> 9 天前
feat(image): add truncated image validation and multimodal error recovery - readFile: validate image integrity via EOI marker / sharp decode, attempt re-encode on corruption - model errors: detect 'failed to apply processor' pattern, mark recoverableViaImageStrip - context recovery: new strip_images_and_retry decision path - agent loop: handle strip_images_and_retry by replacing image blocks with text placeholders - fallback chain: exclude image-strip-recoverable errors from model fallback Co-authored-by: Cursor <cursoragent@cursor.com> 12 天前
fix(agent): post-routing compaction for smaller context-window models When tokenSaver routes from a large-window model (e.g. sonnet 200k) to a smaller one (e.g. qwen 32k), compaction still evaluated against the original model's window — never triggering for the routed model's actual limit. Split router.stream() into decide()+execute() in AgentLoop and insert a second tryAutoCompact pass using the routed model's maxContextTokens when it is smaller than the agent's default. Co-authored-by: Cursor <cursoragent@cursor.com> 8 天前
fix(agent): post-routing compaction for smaller context-window models When tokenSaver routes from a large-window model (e.g. sonnet 200k) to a smaller one (e.g. qwen 32k), compaction still evaluated against the original model's window — never triggering for the routed model's actual limit. Split router.stream() into decide()+execute() in AgentLoop and insert a second tryAutoCompact pass using the routed model's maxContextTokens when it is smaller than the agent's default. Co-authored-by: Cursor <cursoragent@cursor.com> 8 天前
fix: repair tool_call/tool_result pairing to prevent OpenAI API rejection - MessageProjector now injects placeholder tool_results for unmatched tool_calls and strips orphaned tool_results - maxMessages truncation respects tool-pair boundaries - NullContextRuntime uses tool-pair-safe slicing - 9 new tests, 22/22 green Co-authored-by: Cursor <cursoragent@cursor.com> 20 天前
fix(context): prevent multimodal content from accumulating in context Separate PDF binary data from tool_result into supplementalMessages, enforce a 10-page limit for PDFs without explicit pages parameter, remove image duplication in projectToolResults, add COMPACTABLE_TOOLS filtering to MicroCompactionEngine with proper multimodal size estimation, and strip multimedia before full compaction summarization. Co-authored-by: Cursor <cursoragent@cursor.com> 10 天前