文件最后提交记录最后更新时间
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: add lifecycle hook runtime Co-authored-by: Cursor <cursoragent@cursor.com> 25 天前
feat(plugins): support standalone SKILL.md directory discovery and loading Add discoverSkillPaths() and loadSkillFromPath() to enable loading standalone skill directories (containing SKILL.md without plugin.json) as pseudo-plugins, mirroring Claude Code's ~/.claude/skills/{name}/ convention. PluginRuntime now discovers and loads skills in parallel alongside traditional plugins. Co-authored-by: Cursor <cursoragent@cursor.com> 20 天前
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 天前