文件最后提交记录最后更新时间
feat: add PilotDeck support to onboarding and authentication flows - Updated cliProviders to include 'pilotdeck'. - Added PilotDeck provider details in AgentConnectionsStep. - Extended CliProvider type to include 'pilotdeck'. - Implemented PilotDeck specific command and title in ProviderLoginModal. 6 天前
refactor: update subagent definitions to replace omitClaudeMd with omitProjectInstructions for clarity - Updated comments and documentation to reflect the change in terminology. - Adjusted subagent definitions to use omitProjectInstructions instead of omitClaudeMd. - Ensured consistency across related files in the context of system prompt handling. 6 天前
fix: disable always-on discovery memory context Co-authored-by: Cursor <cursoragent@cursor.com> 6 天前
fix: only add cwd to workspace list when started via pilotdeck server Non-interactive launchers (npm run dev, install.sh wrapper) set PILOTDECK_SKIP_DEFAULT_PROJECT=1 so the source-tree directory is no longer injected into the Web UI project list. Co-authored-by: Cursor <cursoragent@cursor.com> 6 天前
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(cron): hide tools and reject task creation when cron is disabled CronRuntime.getTools() now returns an empty array when config.enabled is false, preventing the agent from seeing cron tools. createTask() also throws an explicit error as a defensive guard for CLI/API callers. Co-authored-by: Cursor <cursoragent@cursor.com> 18 天前
chore: relicense to Apache 2.0 and align PilotDeck naming Switch project license and README badges from AGPL-3.0 to Apache 2.0, recognize ~/.pilotdeck as the general-chat cwd for skills, and use messageTypes.pilotdeck for assistant labels instead of the legacy claude key. Co-authored-by: Cursor <cursoragent@cursor.com> 6 天前
refactor(always-on): remove legacy web execution path, rewire retry through DiscoveryFire The old web-driven Always-On path (discovery trigger → auto-poll → web chat execution) raced with the DiscoveryFire pipeline, causing duplicate plan executions. This commit removes the entire legacy path: - Add alwaysOnRerunPlan gateway RPC so the UI retry button triggers DiscoveryFire phases 2-4 (workspace → execution → report) directly - Remove MainContent auto-poll, discovery trigger handler, execution lifecycle tracking, and all associated refs/callbacks/useEffects - Delete queueExecution, updateExecution, buildExecutionPrompt from DiscoveryPlanService and the PATCH execution REST endpoint - Unregister /ao slash command; delete alwaysOnSlashActions.ts - Delete discovery-trigger-client.js and its WS handler in index.js - Delete old web discovery prompt and utility files - Remove approvalMode field from WebPlanRecord, UI types, i18n, tests Co-authored-by: Cursor <cursoragent@cursor.com> 7 天前
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 天前
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 天前
Drop orphaned OpenAI tool results Co-authored-by: Cursor <cursoragent@cursor.com> 5 天前
fix(permission): close plan-mode bypass via subagent and bash ask path Four fixes to enforce plan mode's read-only contract through subagents: 1. PermissionRuntime: auto-deny tool.checkPermissions "ask" results for non-read-only tools in plan mode, preventing users from approving side-effecting commands (e.g. bash mkdir) via the permission prompt. 2. agent tool: downgrade general-purpose subagent to explore preset when the parent is in plan mode, avoiding wasted turns on denied write tools. 3. SubAgentSession: strip always_on_* and ask_user_question from subagent registries (they require RunContext/elicitation unavailable in forks), and apply isDestructive filtering when parent is in plan mode. 4. createLocalGateway: only register always_on_* tools for Always-On sessions, keeping them out of regular user session tool lists. Co-authored-by: Cursor <cursoragent@cursor.com> 13 天前
fix(config): soft-recover agent.model vs router.scenarios.default conflict Previously fatal: if a user updated agent.model through onboarding/UI without touching the router block, the gateway refused to boot and reinstalling didn't help because ~/.pilotdeck/pilotdeck.yaml survives. - loadPilotConfig: downgrade CONFIG_MODEL_CONFLICT from fatal to a warning and auto-align router.scenarios.default with agent.model (agent.model is the canonical source of truth) - ui/pilotdeckConfig: introduce syncAgentModelWithRouter() and run it inside writePilotDeckConfig so the on-disk yaml stays consistent whenever the UI or raw-yaml editor writes a new agent.model - add load-pilot-config test for the soft-recovery path Co-authored-by: Cursor <cursoragent@cursor.com> 7 天前
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(model): deep-clone nested content in cloneMessages cloneMessages used spread to shallow-copy content blocks, leaving CanonicalToolResultBlock.content and CanonicalToolCallBlock.input as shared references between original and clone. Extract a shared clone utility that deep-copies these nested structures and replace three duplicate private implementations. Co-authored-by: Cursor <cursoragent@cursor.com> 8 天前
fix: cross-platform Windows compatibility for core runtime - paths.ts: normalize Windows backslashes and strip drive letters in project IDs - createBackup/restoreBackup: guard fs.chmod on Windows (no Unix permissions) - ProjectSessionStorage: sanitize illegal Windows filename characters (:, <, >, ", |, ?, *) - JsonlTranscriptWriter: use path.join for subagent paths instead of hardcoded / - BackgroundTaskRuntime: remove platform guard, let Windows use the same runtime - commandRunner: Windows-compatible process termination (taskkill vs SIGTERM) - listProjects: platform-aware project ID resolution - createLocalGateway: sanitize session keys for browser screenshot paths - pilotPaths.js: sync createLegacyProjectId with paths.ts normalization - package.json: cross-platform build script using Node.js fs module Co-authored-by: Cursor <cursoragent@cursor.com> 9 天前
feat(plan): pass planTitle/planSummary as structured data from backend to plan card Extract plan title and summary on the backend (planMode.ts) and thread them through the gateway event, bridge, and useChatMessages into the PlanApprovedCard component, replacing the previous approach of parsing truncated resultPreview text on the frontend. Co-authored-by: Cursor <cursoragent@cursor.com> 7 天前
fix(ui): fold failed tool call details 6 天前