| 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 天前 |
| 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(deferred-features): wave 2 — B1 elicitation, B2 web_fetch, B3 MCP instructions
Wave 2 of the deferred-feature implementation guide:
- B1 elicitation + ask_user_question:
* New PolitDeckElicitationChannel protocol with InMemoryElicitationChannel
* validateHtmlPreview port (legacy parity — fragments, no <script>/<style>)
* Rebuilt ask_user_question tool with shouldDefer:true, full schema parity
(1-4 questions, 2-4 options, uniqueness checks, header/option size limits,
HTML preview validation), and elicitation-channel-driven user consent
* Tool runtime context now exposes optional elicitation channel
* 9 dedicated tests + skeleton test updated
- B2 web_fetch full version:
* Modular layout: web/{preapprovedHosts,urlValidation,urlContentCache,
urlFetcher,secondaryPrompt}.ts
* Behaviour parity for W1-W14 from §5.2: 2000-char URL limit, validation
(no creds, multi-label hosts), HTTP→HTTPS upgrade, 10 MB content cap,
60s timeout, 10 redirect hops, ±www permitted-redirect, hand-rolled
LRU cache with 15min TTL / 50 MB ceiling, turndown HTML→Markdown,
100 KB markdown cap, 167-entry preapproved-host list, secondary model
call via context.model
* Tool now requires both url and prompt; opt-in via createBuiltinRegistry
* 16 dedicated tests covering all 13 behaviours
* Adds turndown dependency
- B3 MCP instructions read-only injection:
* truncateMcpInstructionString helper (2048-char cap, parity with legacy)
* PluginRuntime.getAllMcpInstructions aggregator: reads static instructions
from manifest.mcpServers[*].instructions, deduplicates (first plugin
wins), sorts by serverName for prompt-cache stability
* PromptAssembler renders <mcp-instructions><server name="…">…</server>
block, drops empty entries, omits the entire block when nothing to say
* 8 PluginRuntime tests + 3 PromptAssembler tests
Test status: 383 tests, 379 pass, 4 pre-existing skips, 0 fail.
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(deferred-features): wave 2 — B1 elicitation, B2 web_fetch, B3 MCP instructions
Wave 2 of the deferred-feature implementation guide:
- B1 elicitation + ask_user_question:
* New PolitDeckElicitationChannel protocol with InMemoryElicitationChannel
* validateHtmlPreview port (legacy parity — fragments, no <script>/<style>)
* Rebuilt ask_user_question tool with shouldDefer:true, full schema parity
(1-4 questions, 2-4 options, uniqueness checks, header/option size limits,
HTML preview validation), and elicitation-channel-driven user consent
* Tool runtime context now exposes optional elicitation channel
* 9 dedicated tests + skeleton test updated
- B2 web_fetch full version:
* Modular layout: web/{preapprovedHosts,urlValidation,urlContentCache,
urlFetcher,secondaryPrompt}.ts
* Behaviour parity for W1-W14 from §5.2: 2000-char URL limit, validation
(no creds, multi-label hosts), HTTP→HTTPS upgrade, 10 MB content cap,
60s timeout, 10 redirect hops, ±www permitted-redirect, hand-rolled
LRU cache with 15min TTL / 50 MB ceiling, turndown HTML→Markdown,
100 KB markdown cap, 167-entry preapproved-host list, secondary model
call via context.model
* Tool now requires both url and prompt; opt-in via createBuiltinRegistry
* 16 dedicated tests covering all 13 behaviours
* Adds turndown dependency
- B3 MCP instructions read-only injection:
* truncateMcpInstructionString helper (2048-char cap, parity with legacy)
* PluginRuntime.getAllMcpInstructions aggregator: reads static instructions
from manifest.mcpServers[*].instructions, deduplicates (first plugin
wins), sorts by serverName for prompt-cache stability
* PromptAssembler renders <mcp-instructions><server name="…">…</server>
block, drops empty entries, omits the entire block when nothing to say
* 8 PluginRuntime tests + 3 PromptAssembler tests
Test status: 383 tests, 379 pass, 4 pre-existing skips, 0 fail.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 24 天前 |