| 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 天前 |
| 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(gateway): replay only pending interactive requests
Co-authored-by: Cursor <cursoragent@cursor.com>
| 14 天前 |
| 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(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 天前 |
| feat(wiring): wire deferred features into createLocalGateway end-to-end
Closes the 16 wiring gaps where features had been implemented but never
reached the production code path. Highlights:
- R0/R1: extend AgentContextRuntime / AgentRuntimeDependencies / Gateway
with applyToolResults, captureTurn, elicitation, fileHistory, and the
__testModelFactory injection point. Register structured_output (A3)
and ask_user_question (B1) in the default builtin registry.
- R2: per-project BackgroundTaskRuntime, EdgeClawMemoryProvider and
lazy McpRuntime (with parsePluginMcpServers and tool bridging) are
now constructed inside ProjectRuntimeRegistry.
- R3: per-session ToolResultBudget, FileHistoryStore, sidechain
transcript hooks, TokenBudgetManager / CompactionEngine /
AutoCompactionPolicy / CachedMicroCompactionEngine are injected via
resumeAgentSession's new extendDependencies hook.
- R4: AgentLoop now sets messageId/elicitation/fileHistory on the tool
runtime context and calls context.applyToolResults / captureTurn at
the right turn boundaries.
- R5: bidirectional Gateway elicitation — GatewayElicitationBus +
GatewayElicitationChannel, AsyncQueue-based event fan-in in
InProcessGateway.submitTurn, respondElicitation on Gateway plus a
matching WS frame.
- R6: replace the fragile grep-style wiring tests with a real
__testModelFactory-driven scenario asserting structured_output /
ask_user_question reach the model request, and that
respondElicitation cleanly reports unknown requestIds.
All 591 tests pass (4 skipped).
Co-authored-by: Cursor <cursoragent@cursor.com>
| 24 天前 |
| 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(mcp): per-session browser isolation with lifecycle cleanup
Give each agent session its own browser-use MCP process instead of
sharing a single instance. This prevents cross-session state leakage
(cookies, tabs, navigation history) and ensures clean browser state.
Key changes:
- browser-use plugin.json: mark as perSession, remove shared user-data-dir
- createLocalGateway: split MCP servers into shared vs per-session,
manage per-session McpRuntime lifecycle with evictSessionMcp()
- SessionRouter: add onSessionEvict callback for idle/close/recreate
- Gateway config: add maxPerSessionMcpInstances (default 5)
- PromptAssembler: remove redundant tool catalog from system prompt
Also fixes a potential process leak where repeated resolve() calls on
the same session could orphan Chromium processes.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 17 天前 |
| fix(gateway): replay active turns after refresh
Co-authored-by: Cursor <cursoragent@cursor.com>
| 16 天前 |