| feat(always-on): add zh-CN prompt localization for all 5 phases
Add Chinese translations for discovery, workspace, execution, report,
and apply prompts. Language is driven by alwaysOn.language in
pilotdeck.yaml and auto-synced when the Web UI language changes.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 12 天前 |
| feat(always-on): map chat sessionIds to short aliases in discovery prompt
Complex sessionIds like web:s_ffdcc108 are error-prone for LLMs to
reproduce in tool calls. Replace them with chat_1, chat_2, ... in the
prompt and resolve back via aliasMap in the chat history tool.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 12 天前 |
| 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 天前 |
| refactor(always-on): introduce Work Cycle as first-class entity for Apply/Archive
Workspace ownership moves from individual plans to Work Cycles. Apply and
Archive now operate at the cycle level, aligning the product model with the
underlying single-workspace-per-project constraint.
Key changes:
- New WorkCycleRecord type and WorkCycleStore (CRUD + lazy migration)
- DiscoveryFire: ensureAlwaysOnWorkspace → ensureActiveWorkCycle
- Gateway/CLI: applyPlan → applyCycle (workCycleId replaces planId)
- Web service: per-plan apply/archive replaced by cycle-level methods
- UI: plans grouped under cycle headers with cycle-level action buttons
- Tests updated across all affected modules (141 pass, 0 fail)
Co-authored-by: Cursor <cursoragent@cursor.com>
| 12 天前 |
| 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): introduce Work Cycle as first-class entity for Apply/Archive
Workspace ownership moves from individual plans to Work Cycles. Apply and
Archive now operate at the cycle level, aligning the product model with the
underlying single-workspace-per-project constraint.
Key changes:
- New WorkCycleRecord type and WorkCycleStore (CRUD + lazy migration)
- DiscoveryFire: ensureAlwaysOnWorkspace → ensureActiveWorkCycle
- Gateway/CLI: applyPlan → applyCycle (workCycleId replaces planId)
- Web service: per-plan apply/archive replaced by cycle-level methods
- UI: plans grouped under cycle headers with cycle-level action buttons
- Tests updated across all affected modules (141 pass, 0 fail)
Co-authored-by: Cursor <cursoragent@cursor.com>
| 12 天前 |
| refactor(always-on): introduce Work Cycle as first-class entity for Apply/Archive
Workspace ownership moves from individual plans to Work Cycles. Apply and
Archive now operate at the cycle level, aligning the product model with the
underlying single-workspace-per-project constraint.
Key changes:
- New WorkCycleRecord type and WorkCycleStore (CRUD + lazy migration)
- DiscoveryFire: ensureAlwaysOnWorkspace → ensureActiveWorkCycle
- Gateway/CLI: applyPlan → applyCycle (workCycleId replaces planId)
- Web service: per-plan apply/archive replaced by cycle-level methods
- UI: plans grouped under cycle headers with cycle-level action buttons
- Tests updated across all affected modules (141 pass, 0 fail)
Co-authored-by: Cursor <cursoragent@cursor.com>
| 12 天前 |
| fix: disable always-on discovery memory context
Co-authored-by: Cursor <cursoragent@cursor.com>
| 6 天前 |
| 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 天前 |
| refactor(always-on): introduce Work Cycle as first-class entity for Apply/Archive
Workspace ownership moves from individual plans to Work Cycles. Apply and
Archive now operate at the cycle level, aligning the product model with the
underlying single-workspace-per-project constraint.
Key changes:
- New WorkCycleRecord type and WorkCycleStore (CRUD + lazy migration)
- DiscoveryFire: ensureAlwaysOnWorkspace → ensureActiveWorkCycle
- Gateway/CLI: applyPlan → applyCycle (workCycleId replaces planId)
- Web service: per-plan apply/archive replaced by cycle-level methods
- UI: plans grouped under cycle headers with cycle-level action buttons
- Tests updated across all affected modules (141 pass, 0 fail)
Co-authored-by: Cursor <cursoragent@cursor.com>
| 12 天前 |